對SIP協(xié)議第三方呼叫控制的研究
林美玉 王立言 2004/07/13
一、引言圖1 3pcc流程Ⅰ
該流程優(yōu)點(diǎn)是非常簡(jiǎn)單,不需要控制者產(chǎn)生SDP,不必考慮控制者自身對媒體類(lèi)型的要求。
缺點(diǎn)是該流程存在著(zhù)一個(gè)非常嚴重的超時(shí)問(wèn)題。如果B不能立即響應,控制者就無(wú)法馬上給A發(fā)送ACK,有可能導致A定時(shí)重發(fā)200 OK。因為根據RFC3261,如果走時(shí)之后還沒(méi)有收到ACK,這次呼叫就失敗了。所以該流程只能用于用戶(hù)B可以立即對INVITE進(jìn)行響應的情況下。
2.流程Ⅱ
圖2 3pcc流程Ⅱ
流程圖中的“黑洞”SDP指的是包含的連接地址是一個(gè)無(wú)效的連接地址,例如rtp.invalid或者0.0.0.0,也就是想建立一個(gè)空的媒體流,因為這個(gè)媒體流實(shí)際上并沒(méi)有媒體或者RTCP包從A流出。
該流程中,控制者首先向用戶(hù)A發(fā)送INVITE,包含SDP1,用來(lái)創(chuàng )建一個(gè)初始的“黑洞”媒體流,A振鈴并產(chǎn)生應答記為SDP2,其中包含的是一個(gè)有效的連接地址,但此時(shí)仍沒(méi)有媒體流向控制者。控制者向A發(fā)出ACK。
控制者向B發(fā)送INVITE,攜帶SDP2作為對B的offer。B振鈴,應答之后產(chǎn)生的200 OK響應中包含一個(gè)SDP3,也就是對SDP2的應答。控制者向B發(fā)送ACK。
控制者向A發(fā)送re-INVITE,包含SDP3作為offer。假設用戶(hù)A不想改變原來(lái)的會(huì )話(huà)屬性,在200 OK響應中包含的應答應該仍是SDP2。控制者發(fā)送ACK之后,就可以有媒體從A流向B。
本流程所有的最終響應都可以被立即確認,不會(huì )有因超時(shí)而導致呼叫失敗的問(wèn)題。
缺點(diǎn)是控制者必須預先知道本次呼叫所要使用的媒體類(lèi)型,來(lái)創(chuàng )建初始的“黑洞”SDP;第二,“黑洞”SDP是一種擴展的機制,并不能確定所有的UA能否支持這種機制以及如果收到這樣的地址能做何反應;第三,流程完成的前提是假設用戶(hù)A對re-INVITE的響應中仍然包含的是SDP2。如果不是SDP2的話(huà),控制者還需要向A再發(fā)送re-INVITE,然后有可能從B得到另一個(gè)不同的SDP,然后還需要向A再發(fā)送re-INVITE,如此等等,可能形成一個(gè)無(wú)限循環(huán)的會(huì )話(huà)協(xié)商。當然,可以采用一個(gè)智能UA,要求其固定的返回SDP2,或者采用一個(gè)智能的控制者能夠分析收到的SDP確定有無(wú)必要發(fā)送re-INVITE,但是為簡(jiǎn)單起見(jiàn),應盡量避免控制者了解SDP的具體內容。所以實(shí)際上本流程根本就不可用。
3.流程Ⅲ
本流程中,控制者向A發(fā)送一個(gè)沒(méi)有SDP的INVITE。A應答的200 OK響應中包含一個(gè)offerl,控制者立即在A(yíng)CK消息中產(chǎn)生一個(gè)“黑洞”SDP應答。
控制者再向B發(fā)送一個(gè)沒(méi)有SDP的INVITE。B應答的200 0K響應中包含一個(gè)提供offer2,控制者應該基于offer2向A發(fā)送一個(gè)re-INVITE,注意。offer2可能需要稍作修改來(lái)滿(mǎn)足媒體要求。例如如果offer1包含一個(gè)音頻和一個(gè)視頻行,而offer2只有一個(gè)音頻行,控制者就需要在offer2中增加一個(gè)視頻行(端口設為O)來(lái)構成offer2’。由于這是一個(gè)re-INVITE,所以通常應該能立即收到響應。A的200
0K響應中包含的answer2’,可能也需要稍作修改作為offer2的應答answer2。控制者向A發(fā)送ACK之后,媒體就可以流通。
圖2 3pcc流程Ⅱ
流程圖中的“黑洞”SDP指的是包含的連接地址是一個(gè)無(wú)效的連接地址,例如rtp.invalid或者0.0.0.0,也就是想建立一個(gè)空的媒體流,因為這個(gè)媒體流實(shí)際上并沒(méi)有媒體或者RTCP包從A流出。
該流程中,控制者首先向用戶(hù)A發(fā)送INVITE,包含SDP1,用來(lái)創(chuàng )建一個(gè)初始的“黑洞”媒體流,A振鈴并產(chǎn)生應答記為SDP2,其中包含的是一個(gè)有效的連接地址,但此時(shí)仍沒(méi)有媒體流向控制者。控制者向A發(fā)出ACK。
控制者向B發(fā)送INVITE,攜帶SDP2作為對B的offer。B振鈴,應答之后產(chǎn)生的200 OK響應中包含一個(gè)SDP3,也就是對SDP2的應答。控制者向B發(fā)送ACK。
控制者向A發(fā)送re-INVITE,包含SDP3作為offer。假設用戶(hù)A不想改變原來(lái)的會(huì )話(huà)屬性,在200 OK響應中包含的應答應該仍是SDP2。控制者發(fā)送ACK之后,就可以有媒體從A流向B。
本流程所有的最終響應都可以被立即確認,不會(huì )有因超時(shí)而導致呼叫失敗的問(wèn)題。
缺點(diǎn)是控制者必須預先知道本次呼叫所要使用的媒體類(lèi)型,來(lái)創(chuàng )建初始的“黑洞”SDP;第二,“黑洞”SDP是一種擴展的機制,并不能確定所有的UA能否支持這種機制以及如果收到這樣的地址能做何反應;第三,流程完成的前提是假設用戶(hù)A對re-INVITE的響應中仍然包含的是SDP2。如果不是SDP2的話(huà),控制者還需要向A再發(fā)送re-INVITE,然后有可能從B得到另一個(gè)不同的SDP,然后還需要向A再發(fā)送re-INVITE,如此等等,可能形成一個(gè)無(wú)限循環(huán)的會(huì )話(huà)協(xié)商。當然,可以采用一個(gè)智能UA,要求其固定的返回SDP2,或者采用一個(gè)智能的控制者能夠分析收到的SDP確定有無(wú)必要發(fā)送re-INVITE,但是為簡(jiǎn)單起見(jiàn),應盡量避免控制者了解SDP的具體內容。所以實(shí)際上本流程根本就不可用。
3.流程Ⅲ
本流程中,控制者向A發(fā)送一個(gè)沒(méi)有SDP的INVITE。A應答的200 OK響應中包含一個(gè)offerl,控制者立即在A(yíng)CK消息中產(chǎn)生一個(gè)“黑洞”SDP應答。
控制者再向B發(fā)送一個(gè)沒(méi)有SDP的INVITE。B應答的200 0K響應中包含一個(gè)提供offer2,控制者應該基于offer2向A發(fā)送一個(gè)re-INVITE,注意。offer2可能需要稍作修改來(lái)滿(mǎn)足媒體要求。例如如果offer1包含一個(gè)音頻和一個(gè)視頻行,而offer2只有一個(gè)音頻行,控制者就需要在offer2中增加一個(gè)視頻行(端口設為O)來(lái)構成offer2’。由于這是一個(gè)re-INVITE,所以通常應該能立即收到響應。A的200
0K響應中包含的answer2’,可能也需要稍作修改作為offer2的應答answer2。控制者向A發(fā)送ACK之后,媒體就可以流通。
圖4 3pcc流程Ⅳ
綜上所述,流程I是最簡(jiǎn)單且有效的流程。如果控制者預先知道B是自動(dòng)應答的能夠立即響應,例如B是媒體服務(wù)器、會(huì )議服務(wù)器等等情況下,使用本流程是最好不過(guò)了。
如果控制者無(wú)法預知被叫的類(lèi)型,就可以使用流程Ⅳ或者流Ⅲ來(lái)實(shí)現3pcc,但是一般不會(huì )使用流程Ⅱ。使用IV、Ⅲ時(shí)對控制者的智能性要求比較高。
三、3pcc應用
SIP協(xié)議的突出優(yōu)點(diǎn)就在于靈活的多媒體會(huì )話(huà)的控制功能,配合使用3pcc就可以比傳統電話(huà)網(wǎng)更加靈活方便的實(shí)現各種補充業(yè)務(wù)和新業(yè)務(wù)。
3pcc的應用非常廣泛,例如可以方便對信令的控制,易于實(shí)現點(diǎn)擊撥號、早期媒體放音(early media)、通話(huà)過(guò)程中播放語(yǔ)音通知的業(yè)務(wù)等等。
點(diǎn)擊撥號業(yè)務(wù)是最典型的3pcc的應用實(shí)例。用戶(hù)瀏覽網(wǎng)站時(shí),可以直接點(diǎn)擊網(wǎng)頁(yè)上的鏈接地址,使用HTTP啟動(dòng)控制者對客服代表和SIP用戶(hù)之間的第三方呼叫控制。然后控制者就可以使用上述四種方法在兩者之間建立起媒體會(huì )話(huà)。
通話(huà)過(guò)程中播放語(yǔ)音通知,可以使用控制者將媒體服務(wù)器跟正在通話(huà)的用戶(hù)之間連接起來(lái),播放通知。
下面以播放早期放音媒體為例,選用最簡(jiǎn)單的流程I來(lái)介紹3pcc的應用。實(shí)際應用中,應該根據具體的情況考慮使用其它流程對下圖進(jìn)行修改。
Early media指的是呼叫建立之前已經(jīng)建立的會(huì )話(huà),通常用來(lái)傳遞關(guān)于呼叫進(jìn)程的語(yǔ)音通知。圖5便是用戶(hù)B在應答呼叫之前已經(jīng)建立了Early
media媒體通道進(jìn)行放音(圖中(1)處)。用戶(hù)B對呼叫進(jìn)行應答之前用戶(hù)A和控制者之間,B和控制者之間都分別已經(jīng)進(jìn)行過(guò)一輪媒體的交互了。當B接受呼叫之后,由于會(huì )話(huà)狀態(tài)并沒(méi)有改變,因此并不需要重新與用戶(hù)A進(jìn)行SDP信令交互。
圖5 用戶(hù)B播放早期放音媒體
四、總結語(yǔ)
3pcc在多方通信中(例如會(huì )議)的應用也很廣泛,SIP協(xié)議的3pcc功能應用靈活,使用一個(gè)控制者可以將多個(gè)用戶(hù)聯(lián)系起來(lái)進(jìn)行通信,方便管理。但是目前3pcc實(shí)現上還有一些標準無(wú)法統一的問(wèn)題,例如如何創(chuàng )建一個(gè)無(wú)效連接地址的SDP,亟待解決。目前我國正在積極的開(kāi)展關(guān)于SIP協(xié)議對呼叫控制方面標準的制定,第三方呼叫控制作為呼叫控制的一個(gè)重要方面,也將成為一個(gè)不可或缺的研究重點(diǎn)。
中國通信網(wǎng)(www.c114.net)—摘自 泰爾網(wǎng) 亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 息烽县| 琼海市| 林西县| 逊克县| 芷江| 汶上县| 台东市| 邹平县| 阿克苏市| 长沙县| 宝坻区| 玉环县| 左贡县| 繁峙县| 平阳县| 龙门县| 石渠县| 炉霍县| 西畴县| 西乡县| 札达县| 醴陵市| 辽阳县| 广宗县| 区。| 武宣县| 原阳县| 苏尼特左旗| 西平县| 黑龙江省| 新竹市| 潮州市| 博客| 荣成市| 贵州省| 尖扎县| 慈溪市| 松溪县| 澄迈县| 田东县| 曲松县| http://444 http://444 http://444 http://444 http://444 http://444