首頁(yè) >> 新聞

對(duì)SIP協(xié)議第三方呼叫控制的研究

林美玉 王立言 2004/07/13

一、引言

  IETF提出的會(huì)話初始協(xié)議(SIP),是在IP網(wǎng)上進(jìn)行多媒體通信的應(yīng)用層控制協(xié)議,可以用來(lái)發(fā)起、建立以及釋放會(huì)話。SIP協(xié)議靈活簡(jiǎn)單的特性以及其靈活強(qiáng)大的呼叫控制的功能吸引了越來(lái)越多的廠商和運(yùn)營(yíng)商。SIP協(xié)議還可以與SDP協(xié)議配合使用,用來(lái)協(xié)商會(huì)話的媒體屬性,因此更易于實(shí)現(xiàn)第三方呼叫控制。

  第三方呼叫控制(3pcc)指的是由第三方控制者在另外兩者之間建立一個(gè)會(huì)話,由控制者負(fù)責(zé)會(huì)話雙方的媒體協(xié)商。3pcc是一種非常靈活的控制方式,在PSTN網(wǎng)中,第三方呼叫控制通常用于會(huì)議、接線業(yè)務(wù)(接線員創(chuàng)建一個(gè)連接另外雙方的呼叫)。同樣,使用SIP協(xié)議也可以借助3pcc來(lái)完成許多業(yè)務(wù),例如點(diǎn)擊撥號(hào)、通話過(guò)程中放音等等,而且實(shí)現(xiàn)起來(lái)非常方便。RFC3264中定義了一種提供/應(yīng)答模式,使兩個(gè)實(shí)體之間可以使用SDP的提供/應(yīng)答(offer/answer)模式進(jìn)行會(huì)話協(xié)商。

二、第三方呼叫控制方法

  SIP消息可以攜帶SDP消息體。SDP(會(huì)話描述協(xié)議)是用來(lái)描述與媒體流相關(guān)的參數(shù)以及與會(huì)話相關(guān)的信息,其中包括對(duì)會(huì)話的描述以及媒體類型、數(shù)據(jù)發(fā)送到的端口、傳輸協(xié)議(例如RTP)以及媒體格式(例如RTP載荷格式)的描述。3pcc的實(shí)現(xiàn)關(guān)鍵就在于控制者如何在會(huì)話雙方之間使用SDP消息協(xié)商即將建立的會(huì)話。根據(jù)SIP協(xié)議的機(jī)制,可以有下面四種方法實(shí)現(xiàn)3pcc。

  1.流程Ⅰ

  該流程圖中的offer和answer都是SDP消息。下面解釋消息流程。

  控制者首先向用戶A發(fā)送一個(gè)沒(méi)有SDP的INVITE,A的電話振鈴,A應(yīng)答之后,產(chǎn)生的200 OK響應(yīng)中將包含一個(gè)ofrerl,攜帶用戶A所希望建立會(huì)話的媒體類型、媒體格式、傳輸協(xié)議以及接收媒體流的端口和IP地址?刂普邔(lái)自A的offerl包含在發(fā)給B的INVITE中,B振鈴應(yīng)答之后產(chǎn)生對(duì)rfferl的應(yīng)答answerl。最后控制者向用戶A發(fā)出的ACK中包含answer1作為應(yīng)答。


圖1 3pcc流程Ⅰ

  該流程優(yōu)點(diǎn)是非常簡(jiǎn)單,不需要控制者產(chǎn)生SDP,不必考慮控制者自身對(duì)媒體類型的要求。

  缺點(diǎn)是該流程存在著一個(gè)非常嚴(yán)重的超時(shí)問(wèn)題。如果B不能立即響應(yīng),控制者就無(wú)法馬上給A發(fā)送ACK,有可能導(dǎo)致A定時(shí)重發(fā)200 OK。因?yàn)楦鶕?jù)RFC3261,如果走時(shí)之后還沒(méi)有收到ACK,這次呼叫就失敗了。所以該流程只能用于用戶B可以立即對(duì)INVITE進(jìn)行響應(yīng)的情況下。

  2.流程Ⅱ


圖2 3pcc流程Ⅱ

  流程圖中的“黑洞”SDP指的是包含的連接地址是一個(gè)無(wú)效的連接地址,例如rtp.invalid或者0.0.0.0,也就是想建立一個(gè)空的媒體流,因?yàn)檫@個(gè)媒體流實(shí)際上并沒(méi)有媒體或者RTCP包從A流出。

  該流程中,控制者首先向用戶A發(fā)送INVITE,包含SDP1,用來(lái)創(chuàng)建一個(gè)初始的“黑洞”媒體流,A振鈴并產(chǎn)生應(yīng)答記為SDP2,其中包含的是一個(gè)有效的連接地址,但此時(shí)仍沒(méi)有媒體流向控制者?刂普呦駻發(fā)出ACK。   控制者向B發(fā)送INVITE,攜帶SDP2作為對(duì)B的offer。B振鈴,應(yīng)答之后產(chǎn)生的200 OK響應(yīng)中包含一個(gè)SDP3,也就是對(duì)SDP2的應(yīng)答?刂普呦駼發(fā)送ACK。

  控制者向A發(fā)送re-INVITE,包含SDP3作為offer。假設(shè)用戶A不想改變?cè)瓉?lái)的會(huì)話屬性,在200 OK響應(yīng)中包含的應(yīng)答應(yīng)該仍是SDP2?刂普甙l(fā)送ACK之后,就可以有媒體從A流向B。

  本流程所有的最終響應(yīng)都可以被立即確認(rèn),不會(huì)有因超時(shí)而導(dǎo)致呼叫失敗的問(wèn)題。

  缺點(diǎn)是控制者必須預(yù)先知道本次呼叫所要使用的媒體類型,來(lái)創(chuàng)建初始的“黑洞”SDP;第二,“黑洞”SDP是一種擴(kuò)展的機(jī)制,并不能確定所有的UA能否支持這種機(jī)制以及如果收到這樣的地址能做何反應(yīng);第三,流程完成的前提是假設(shè)用戶A對(duì)re-INVITE的響應(yīng)中仍然包含的是SDP2。如果不是SDP2的話,控制者還需要向A再發(fā)送re-INVITE,然后有可能從B得到另一個(gè)不同的SDP,然后還需要向A再發(fā)送re-INVITE,如此等等,可能形成一個(gè)無(wú)限循環(huán)的會(huì)話協(xié)商。當(dāng)然,可以采用一個(gè)智能UA,要求其固定的返回SDP2,或者采用一個(gè)智能的控制者能夠分析收到的SDP確定有無(wú)必要發(fā)送re-INVITE,但是為簡(jiǎn)單起見,應(yīng)盡量避免控制者了解SDP的具體內(nèi)容。所以實(shí)際上本流程根本就不可用。

  3.流程Ⅲ

  本流程中,控制者向A發(fā)送一個(gè)沒(méi)有SDP的INVITE。A應(yīng)答的200 OK響應(yīng)中包含一個(gè)offerl,控制者立即在ACK消息中產(chǎn)生一個(gè)“黑洞”SDP應(yīng)答。

  控制者再向B發(fā)送一個(gè)沒(méi)有SDP的INVITE。B應(yīng)答的200 0K響應(yīng)中包含一個(gè)提供offer2,控制者應(yīng)該基于offer2向A發(fā)送一個(gè)re-INVITE,注意。offer2可能需要稍作修改來(lái)滿足媒體要求。例如如果offer1包含一個(gè)音頻和一個(gè)視頻行,而offer2只有一個(gè)音頻行,控制者就需要在offer2中增加一個(gè)視頻行(端口設(shè)為O)來(lái)構(gòu)成offer2’。由于這是一個(gè)re-INVITE,所以通常應(yīng)該能立即收到響應(yīng)。A的200 0K響應(yīng)中包含的answer2’,可能也需要稍作修改作為offer2的應(yīng)答answer2?刂普呦駻發(fā)送ACK之后,媒體就可以流通。


圖2 3pcc流程Ⅱ

  流程圖中的“黑洞”SDP指的是包含的連接地址是一個(gè)無(wú)效的連接地址,例如rtp.invalid或者0.0.0.0,也就是想建立一個(gè)空的媒體流,因?yàn)檫@個(gè)媒體流實(shí)際上并沒(méi)有媒體或者RTCP包從A流出。

  該流程中,控制者首先向用戶A發(fā)送INVITE,包含SDP1,用來(lái)創(chuàng)建一個(gè)初始的“黑洞”媒體流,A振鈴并產(chǎn)生應(yīng)答記為SDP2,其中包含的是一個(gè)有效的連接地址,但此時(shí)仍沒(méi)有媒體流向控制者?刂普呦駻發(fā)出ACK。   控制者向B發(fā)送INVITE,攜帶SDP2作為對(duì)B的offer。B振鈴,應(yīng)答之后產(chǎn)生的200 OK響應(yīng)中包含一個(gè)SDP3,也就是對(duì)SDP2的應(yīng)答。控制者向B發(fā)送ACK。

  控制者向A發(fā)送re-INVITE,包含SDP3作為offer。假設(shè)用戶A不想改變?cè)瓉?lái)的會(huì)話屬性,在200 OK響應(yīng)中包含的應(yīng)答應(yīng)該仍是SDP2?刂普甙l(fā)送ACK之后,就可以有媒體從A流向B。

  本流程所有的最終響應(yīng)都可以被立即確認(rèn),不會(huì)有因超時(shí)而導(dǎo)致呼叫失敗的問(wèn)題。

  缺點(diǎn)是控制者必須預(yù)先知道本次呼叫所要使用的媒體類型,來(lái)創(chuàng)建初始的“黑洞”SDP;第二,“黑洞”SDP是一種擴(kuò)展的機(jī)制,并不能確定所有的UA能否支持這種機(jī)制以及如果收到這樣的地址能做何反應(yīng);第三,流程完成的前提是假設(shè)用戶A對(duì)re-INVITE的響應(yīng)中仍然包含的是SDP2。如果不是SDP2的話,控制者還需要向A再發(fā)送re-INVITE,然后有可能從B得到另一個(gè)不同的SDP,然后還需要向A再發(fā)送re-INVITE,如此等等,可能形成一個(gè)無(wú)限循環(huán)的會(huì)話協(xié)商。當(dāng)然,可以采用一個(gè)智能UA,要求其固定的返回SDP2,或者采用一個(gè)智能的控制者能夠分析收到的SDP確定有無(wú)必要發(fā)送re-INVITE,但是為簡(jiǎn)單起見,應(yīng)盡量避免控制者了解SDP的具體內(nèi)容。所以實(shí)際上本流程根本就不可用。

  3.流程Ⅲ

  本流程中,控制者向A發(fā)送一個(gè)沒(méi)有SDP的INVITE。A應(yīng)答的200 OK響應(yīng)中包含一個(gè)offerl,控制者立即在ACK消息中產(chǎn)生一個(gè)“黑洞”SDP應(yīng)答。

  控制者再向B發(fā)送一個(gè)沒(méi)有SDP的INVITE。B應(yīng)答的200 0K響應(yīng)中包含一個(gè)提供offer2,控制者應(yīng)該基于offer2向A發(fā)送一個(gè)re-INVITE,注意。offer2可能需要稍作修改來(lái)滿足媒體要求。例如如果offer1包含一個(gè)音頻和一個(gè)視頻行,而offer2只有一個(gè)音頻行,控制者就需要在offer2中增加一個(gè)視頻行(端口設(shè)為O)來(lái)構(gòu)成offer2’。由于這是一個(gè)re-INVITE,所以通常應(yīng)該能立即收到響應(yīng)。A的200 0K響應(yīng)中包含的answer2’,可能也需要稍作修改作為offer2的應(yīng)答answer2?刂普呦駻發(fā)送ACK之后,媒體就可以流通。


圖4 3pcc流程Ⅳ

  綜上所述,流程I是最簡(jiǎn)單且有效的流程。如果控制者預(yù)先知道B是自動(dòng)應(yīng)答的能夠立即響應(yīng),例如B是媒體服務(wù)器、會(huì)議服務(wù)器等等情況下,使用本流程是最好不過(guò)了。

  如果控制者無(wú)法預(yù)知被叫的類型,就可以使用流程Ⅳ或者流Ⅲ來(lái)實(shí)現(xiàn)3pcc,但是一般不會(huì)使用流程Ⅱ。使用IV、Ⅲ時(shí)對(duì)控制者的智能性要求比較高。

三、3pcc應(yīng)用

  SIP協(xié)議的突出優(yōu)點(diǎn)就在于靈活的多媒體會(huì)話的控制功能,配合使用3pcc就可以比傳統(tǒng)電話網(wǎng)更加靈活方便的實(shí)現(xiàn)各種補(bǔ)充業(yè)務(wù)和新業(yè)務(wù)。

  3pcc的應(yīng)用非常廣泛,例如可以方便對(duì)信令的控制,易于實(shí)現(xiàn)點(diǎn)擊撥號(hào)、早期媒體放音(early media)、通話過(guò)程中播放語(yǔ)音通知的業(yè)務(wù)等等。

  點(diǎn)擊撥號(hào)業(yè)務(wù)是最典型的3pcc的應(yīng)用實(shí)例。用戶瀏覽網(wǎng)站時(shí),可以直接點(diǎn)擊網(wǎng)頁(yè)上的鏈接地址,使用HTTP啟動(dòng)控制者對(duì)客服代表和SIP用戶之間的第三方呼叫控制。然后控制者就可以使用上述四種方法在兩者之間建立起媒體會(huì)話。

  通話過(guò)程中播放語(yǔ)音通知,可以使用控制者將媒體服務(wù)器跟正在通話的用戶之間連接起來(lái),播放通知。

  下面以播放早期放音媒體為例,選用最簡(jiǎn)單的流程I來(lái)介紹3pcc的應(yīng)用。實(shí)際應(yīng)用中,應(yīng)該根據(jù)具體的情況考慮使用其它流程對(duì)下圖進(jìn)行修改。

  Early media指的是呼叫建立之前已經(jīng)建立的會(huì)話,通常用來(lái)傳遞關(guān)于呼叫進(jìn)程的語(yǔ)音通知。圖5便是用戶B在應(yīng)答呼叫之前已經(jīng)建立了Early media媒體通道進(jìn)行放音(圖中(1)處)。用戶B對(duì)呼叫進(jìn)行應(yīng)答之前用戶A和控制者之間,B和控制者之間都分別已經(jīng)進(jìn)行過(guò)一輪媒體的交互了。當(dāng)B接受呼叫之后,由于會(huì)話狀態(tài)并沒(méi)有改變,因此并不需要重新與用戶A進(jìn)行SDP信令交互。


圖5 用戶B播放早期放音媒體

四、總結(jié)語(yǔ)

  3pcc在多方通信中(例如會(huì)議)的應(yīng)用也很廣泛,SIP協(xié)議的3pcc功能應(yīng)用靈活,使用一個(gè)控制者可以將多個(gè)用戶聯(lián)系起來(lái)進(jìn)行通信,方便管理。但是目前3pcc實(shí)現(xiàn)上還有一些標(biāo)準(zhǔn)無(wú)法統(tǒng)一的問(wèn)題,例如如何創(chuàng)建一個(gè)無(wú)效連接地址的SDP,亟待解決。目前我國(guó)正在積極的開展關(guān)于SIP協(xié)議對(duì)呼叫控制方面標(biāo)準(zhǔn)的制定,第三方呼叫控制作為呼叫控制的一個(gè)重要方面,也將成為一個(gè)不可或缺的研究重點(diǎn)。

中國(guó)通信網(wǎng)(www.c114.net)—摘自 泰爾網(wǎng)
分類信息:     文摘