目錄

簡介

背景

一般呼叫流方案

SIP規範化指令碼

驗證SIP信令消息

來自MotoPBX的入站SIP邀請

刪除「report」引數後，向CUCM傳送的規範化INVITE

標準化之前對MotoPBX的200 OK響應出站

標準化出站200正常響應

簡介

本檔案介紹與思科整合通訊管理員(CUCM)和Motorola PBX(MotoPBX)系統的作業階段啟始通訊協定(SIP)整合相關的互通性問題。MotoPBX系統符合SIP RFC 3581，而CUCM符合SIP RFC 3261。由於此RFC合規性問題，兩個呼叫處理伺服器（即CUCM和Motorola PBX）之間的SIP呼叫設定存在問題。

背景

Motorola PBX在SIP INVITE的「Via」報頭欄位中有一個「report」引數，允許客戶端請求伺服器將響應傳送回源IP地址和發出請求的埠，該請求包含在RFC 3581中。「rport」引數與「received」引數類似，但「rport」包含一個埠號，而不是IP地址。此報告引數不是RFC 3261的一部分，因此CUCM不包含SIP信令「Via」報頭欄位中的引數。

一般呼叫流方案

在上述場景中，CUCM和帶有對講機聽筒端點的MotoPBX系統之間的傳入SIP呼叫設定出現問題。當CUCM收到來自MotoPBX的SIP INVITE時，它傳送一個200 OK響應，而沒有「Via」報頭欄位中的「report」引數。此外，還在MotoPBX未確認的會話描述協定(Session Description Protocol [SDP])消息正文中新增了一些其他欄位，例如「Remote-Party-ID」、「P-Asserted-Identity」標頭欄位和Bandwidth資訊。由於RFC合規性問題，呼叫設定失敗。因此，為了緩解呼叫建立問題，設計了一個SIP規範化指令碼，該指令碼從傳入的SIP Invite中刪除「rport」引數，並將傳出200 OK響應中的「rport」引數附加到MotoPBX傳送的同一SIP Invite。指令碼還將刪除前面提到的其他報頭欄位。

SIP規範化指令碼

M={}

function M.inbound_INVITE(msg)                     /*Incoming SIP Invite*/

local invite = msg:getHeader("Via")

local rport=string.gsub(invite,"rport","")         /*Remove rport parameter*/

msg:modifyHeader("Via", rport)

end

function M.outbound_200_INVITE(msg)                 /*Outgoing 200 OK response*/

msg:addHeaderValueParameter("Via","rport","5060")   /*Populating rport with 5060*/

msg:removeHeader("P-Asserted-Identity")             /*Removing headers

and bandwidth information*/

msg:removeHeader("Remote-Party-ID")

local sdp = msg:getSdp()

local sdpremove=string.gsub(sdp,"b=TIAS:%d%d%d%d%d","")

local sdp=string.gsub(sdpremove,"b=AS:%d%d","")

msg.setSdp(sdp)

end

return M

驗證SIP信令消息

來自MotoPBX的入站SIP邀請

INVITE sip:8888@10.10.21.14;user=phone SIP/2.0

Via:SIP/2.0/UDP192.168.5.10:5060;

branch=z9hG4bK3ad3379d104e957767cf471e77bf2738;rport

刪除「report」引數後，向CUCM傳送的規範化INVITE

INVITE sip:8888@10.10.21.14;user=phone SIP/2.0

Via: SIP/2.0/UDP 192.168.5.10:5060;

branch=z9hG4bK3ad3379d104e957767cf471e77bf2738;

標準化之前對MotoPBX的200 OK響應出站

Via: SIP/2.0/UDP 192.168.5.10:5060;

branch=z9hG4bK3ad3379d104e957767cf471e77bf2738;

From: <sip:2202@192.168.5.10;user=phone>;

tag=60817f1777729d1062239475498676f4

To: <sip:8888@10.10.21.14;user=phone>;

tag=107~f59e0381-0cdb-4ad3-b769-99c8c3c177c4-20600964

Date: Thu, 27 Feb 2014 03:22:02 GMT

Call-ID: 3f42d82e786bf9f332567ca566f3c1dd

CSeq: 1 INVITE

Allow: INVITE, OPTIONS, INFO, BYE, CANCEL, ACK, PRACK, UPDATE, REFER, SUBSCRIBE, NOTIFY

Allow-Events: presence, kpml

Supported: replaces

Supported: X-cisco-srtp-fallback

Supported: Geolocation

Session-Expires: 5000;refresher=uas

Require: timer

P-Asserted-Identity: "Kosal-LT"

Remote-Party-ID: "Kosal-LT"

;party=called;screen=yes;privacy=off

Contact: <sip:8888@10.10.21.14:5060>

Content-Type: application/sdp

Content-Length: 232

v=0

o=CiscoSystemsCCM-SIP 107 1 IN IP4 10.10.21.14

s=SIP Call

c=IN IP4 10.10.21.14

b=TIAS:64000

b=AS:64

標準化出站200正常響應

SIP/2.0 200 OK

Via: SIP/2.0/UDP 192.168.5.10:5060;

branch=z9hG4bK3ad3379d104e957767cf471e77bf2738;;rport=5060

From: <sip:2202@192.168.5.10;user=phone>;tag=60817f1777729d1062239475498676f4

To: <sip:8888@10.10.21.14;user=phone>;

tag=107~f59e0381-0cdb-4ad3-b769-99c8c3c177c4-20600964

Date: Thu, 27 Feb 2014 03:22:02 GMT

Call-ID: 3f42d82e786bf9f332567ca566f3c1dd

CSeq: 1 INVITE

Allow: INVITE, OPTIONS, INFO, BYE, CANCEL, ACK, PRACK, UPDATE, REFER, SUBSCRIBE, NOTIFY

Allow-Events: presence, kpml

Supported: replaces

Supported: X-cisco-srtp-fallback

Supported: Geolocation

Session-Expires: 5000;refresher=uas

Require: timer

Contact: <sip:8888@10.10.21.14:5060>

Content-Length: 213

Content-Type: application/sdp

v=0

o=CiscoSystemsCCM-SIP 107 1 IN IP4 10.10.21.14

s=SIP Call

c=IN IP4 10.10.21.14

t=0 0

上一個示例說明了SIP規範化，當在SIP中繼上的SIP配置檔案下應用時，可解決互操作性問題，並且進行SIP呼叫設定時不會出現任何問題。