樂(lè)利鋒,彭 晉,段曉東
(中國(guó)移動(dòng)通信研究院 北京 100053)
Web應(yīng)用已成為互聯(lián)網(wǎng)應(yīng)用最成功的模式之一,其應(yīng)用范疇已經(jīng)滲透人類(lèi)社會(huì)生活的各個(gè)領(lǐng)域。人們只要通過(guò)一款瀏覽器,就可以享受到無(wú)窮無(wú)盡的Web服務(wù),如各種電子商務(wù)、網(wǎng)絡(luò)游戲、社區(qū)服務(wù)及各種網(wǎng)絡(luò)交友等。與此同時(shí),Web技術(shù)所帶來(lái)的優(yōu)勢(shì)(如統(tǒng)一的客戶端和較好的可維護(hù)性),使一些傳統(tǒng)應(yīng)用紛紛轉(zhuǎn)型到Web模式。Web應(yīng)用開(kāi)發(fā)的簡(jiǎn)單快速也受到開(kāi)發(fā)者青睞,開(kāi)發(fā)者只需要一次開(kāi)發(fā)就可以在任何地方部署,代碼片段很容易在開(kāi)發(fā)者之間被復(fù)制和粘貼,越來(lái)越容易掌握的JavaScript庫(kù)使開(kāi)發(fā)更加快捷。
Web瀏覽器一直隨著Web應(yīng)用的需要持續(xù)加入新的Web 特性,W3C(world wide web consortium,萬(wàn)維網(wǎng)聯(lián)盟)標(biāo)準(zhǔn)化組織追求的Open Web Platform[1]是所有Web技術(shù)的集合,不僅包括基礎(chǔ) Web技術(shù),如 HTML(hypertext markup language,超文本標(biāo)記語(yǔ)言)、CSS(cascading style sheet,級(jí)聯(lián)樣式表)和 JavaScript及 HTTP(hypertext transfer protocol,超文本傳輸協(xié)議)等;還包括新的Web技術(shù),如HTML5[2],允許開(kāi)發(fā)者免費(fèi)使用它所發(fā)布的技術(shù)??梢灶A(yù)見(jiàn),未來(lái)Web將逐漸成為一種準(zhǔn)入門(mén)檻較低、推廣成本可控的統(tǒng)一應(yīng)用平臺(tái)。
基于Web的實(shí)時(shí)通信應(yīng)用可以吸引越來(lái)越多的用戶。Facebook[3]推出了整合Skype的視頻聊天服務(wù),首次使用該功能的用戶需要安裝插件;GoogleTalk[4]網(wǎng)頁(yè)版的正常使用需要安裝Google話音和視頻聊天插件,在瀏覽器中成功安裝插件后,可以直接在Gmail[5]或iGoogle[6]中進(jìn)行視頻和話音通話。但這些插件對(duì)于不同瀏覽器需要不同的開(kāi)發(fā)實(shí)現(xiàn),且需要用戶安裝,具有一定的安全隱患。為了避免引入新插件,一些 Web 網(wǎng)絡(luò)電話(如 Alicall[7]、FlashVoIP[8])采用普及程度比較高的flash player插件實(shí)現(xiàn)實(shí)時(shí)通信功能,可重用flash插件自有RTMP(real time messaging protocol,實(shí)時(shí)消息傳送協(xié)議)[9]信令和媒體傳輸協(xié)議。但flash插件方式需要依托第三軟件提供商的支持,大規(guī)模商用更需要支付相當(dāng)可觀的費(fèi)用。
如果徹底不引入插件,Web實(shí)時(shí)通信客戶端在執(zhí)行效率方面想接近傳統(tǒng)客戶端或插件客戶端的效果,需要瀏覽器提供更多新特性的支持。為了實(shí)現(xiàn)實(shí)時(shí)通信功能,瀏覽器至少需要具備會(huì)話管理、音視頻編解碼引擎和媒體傳輸?shù)裙δ?。?huì)話管理功能允許開(kāi)發(fā)者為上層應(yīng)用實(shí)現(xiàn)呼叫建立和管理;音視頻編解碼引擎功能允許外設(shè)(如麥克風(fēng)及攝像頭)將采集的數(shù)據(jù)進(jìn)行編碼并發(fā)送給網(wǎng)絡(luò),或者將接收的媒體進(jìn)行解碼供外設(shè)(如音箱或者顯示器)呈現(xiàn);媒體傳輸功能實(shí)現(xiàn)對(duì)不同網(wǎng)絡(luò)的NAT(network address translation,網(wǎng)絡(luò)地址轉(zhuǎn)換)或防火墻穿越,并實(shí)現(xiàn)對(duì)媒體內(nèi)容的封裝傳輸。
對(duì)于無(wú)插件Web實(shí)時(shí)通信應(yīng)用開(kāi)發(fā),開(kāi)發(fā)者需要調(diào)用瀏覽器API(application programming interface,應(yīng)用程序編程接口)才能使用其實(shí)時(shí)通信模塊功能。如果缺少對(duì)實(shí)時(shí)通信模塊API的統(tǒng)一使用規(guī)范,不同瀏覽器廠商對(duì)API的定義和使用可能出現(xiàn)很大的差異,開(kāi)發(fā)者需要了解不同版本的API使用方法,從而可能會(huì)影響開(kāi)發(fā)周期。所以,業(yè)界希望Web瀏覽器的實(shí)時(shí)通信能力被標(biāo)準(zhǔn)化的呼聲越來(lái)越高。IETF(internet engineering task force,工程任務(wù)組)和W3C這兩大標(biāo)準(zhǔn)化組織從2011年開(kāi)始積極推進(jìn)基于Web瀏覽器的實(shí)時(shí)通信 (real-time communication in web-browsers,RTCWeb)標(biāo)準(zhǔn)化工作[10,11],力圖提出一個(gè)能夠在Web瀏覽器上實(shí)現(xiàn)用戶之間話音和視頻等實(shí)時(shí)通信的標(biāo)準(zhǔn)化框架。IETF的主要工作在于標(biāo)準(zhǔn)化基于瀏覽器的實(shí)時(shí)通信的架構(gòu)和協(xié)議;W3C的主要工作在于標(biāo)準(zhǔn)化瀏覽器與Web應(yīng)用之間的API,即上層Web應(yīng)用通過(guò)JavaScrip編程調(diào)用這些被標(biāo)準(zhǔn)化的API,實(shí)現(xiàn)對(duì)瀏覽器RTCWeb功能的使用,如捕獲本地設(shè)備的媒體內(nèi)容、呈現(xiàn)媒體內(nèi)容、建立點(diǎn)對(duì)點(diǎn)媒體通信等。隨著RTCWeb標(biāo)準(zhǔn)化的逐漸深入和影響力的逐步增強(qiáng),各大瀏覽器廠商如 Chrome、Mozilla Firefox、Safari和Opera紛紛宣布支持或部分支持RTCWeb功能,RTCWeb瀏覽器逐漸步入舞臺(tái)并占據(jù)相當(dāng)?shù)氖袌?chǎng)份額。
IETF RTCWeb工作組建議的典型架構(gòu)[12]如圖1所示。Web客戶端是基于瀏覽器的融合JavaScript、HTML及CSS的技術(shù)客戶端實(shí)現(xiàn),對(duì)瀏覽器和Web服務(wù)器的會(huì)話信令面操作是通過(guò)JSEP控制實(shí)現(xiàn)的;通過(guò)JavaScript調(diào)用RTCWeb API,實(shí)現(xiàn)對(duì)瀏覽器能力的使用;Web客戶端通過(guò)JavaScript與Web服務(wù)器傳遞基于Web Socket承載的RTCWeb信令消息。RTCWeb信令協(xié)議由Web應(yīng)用定義,可以是標(biāo)準(zhǔn)的協(xié)議,如 SIP(session initiation protocol,會(huì)話初 始 協(xié) 議 )、XMPP (extensible messaging and presence protocol,可擴(kuò)展消息處理現(xiàn)場(chǎng)協(xié)議)或私有協(xié)議,但媒體協(xié)商可參考基于Offer/Answer模型的ROAP(RTCWeb offer/answer protocol);Web服務(wù)器之間采用雙方認(rèn)同的協(xié)議,如 SIP或者 XMPP;瀏覽器之間采用RTP(real-time transport protocol,實(shí)時(shí)傳輸協(xié)議)或 SRTP(secure RTP,安全實(shí)時(shí)傳輸協(xié)議)用于媒體傳輸,同時(shí)采用ICE(interactive connectivity establishment,交互式連接建立)協(xié)議用于防火墻穿越。
圖1 RTCWeb通信模型
W3C WebRTC工作組的關(guān)注重點(diǎn)在于瀏覽器端API的標(biāo)準(zhǔn)化[13],通過(guò)調(diào)用標(biāo)準(zhǔn)化API實(shí)現(xiàn)從本地設(shè)備(如攝像頭、麥克風(fēng)或網(wǎng)絡(luò)攝像機(jī))捕獲并呈現(xiàn)本地音視頻媒體內(nèi)容、通過(guò)NAT穿越技術(shù)建立點(diǎn)對(duì)點(diǎn)連接、基于點(diǎn)對(duì)點(diǎn)連接交換媒體內(nèi)容。這些功能的實(shí)現(xiàn)主要由Stream API和Peer Connection兩大類(lèi)API實(shí)現(xiàn)。
Stream抽象了對(duì)實(shí)際媒體流表示及操作的方法和屬性,目前定義了若干重要的接口,主要是Media Stream。Media Stream對(duì)象可以表示從遠(yuǎn)端節(jié)點(diǎn)或者發(fā)送給遠(yuǎn)端節(jié)點(diǎn)的媒體流;從網(wǎng)絡(luò)傳輸Media Stream角度看,每個(gè)Media Stream對(duì)象都有一個(gè)輸入和輸出,來(lái)自遠(yuǎn)端節(jié)點(diǎn)的Media Stream(由Peer Connection實(shí)例化產(chǎn)生)可以看作輸入;本地設(shè)備產(chǎn)生的Media Stream(調(diào)用getUserMedia函數(shù)產(chǎn)生)傳給遠(yuǎn)端節(jié)點(diǎn)便有一個(gè)輸出;對(duì)于媒體流的呈現(xiàn),需要專用URL來(lái)表示一個(gè)媒體流并在網(wǎng)頁(yè)中表現(xiàn)出來(lái) (調(diào)用createObjectURL函數(shù)生成)。
Peer Connection抽象了瀏覽器之間信令交互及媒體通道建立的方法和屬性,通過(guò)開(kāi)通媒體通道,Media Stream對(duì)象表示的媒體流可被送到對(duì)端。一個(gè)Peer Connection對(duì)象實(shí)現(xiàn)3類(lèi)功能,即ICE代理 (利用ICE方式實(shí)現(xiàn)NAT穿越,如依賴STUN或者TURN服務(wù)器)、Peer Connection狀態(tài)(標(biāo)識(shí)當(dāng)前連接狀態(tài),如“new”、“opening”、“active”等)和ICE 狀態(tài)(標(biāo)識(shí)穿越狀態(tài),如“new”“waiting”“connected”等)。此外,Peer Connection提供創(chuàng)建媒體協(xié)商的方法和屬性,如Offer/Answer消息構(gòu)建方法(createOffer/createAnswer)及SDP屬性設(shè)置(setLocal Description/setRemote Description)等。
W3C WebRTC工作組對(duì)于媒體流的訪問(wèn)和呈現(xiàn)使用HTML5 video和audio標(biāo)簽[2],這兩個(gè)新標(biāo)簽提供了在瀏覽器中不使用插件播放視頻和音頻的特性,這正是HTML5區(qū)別于先前版本的顯著特征。非HTML5的瀏覽器一般安裝flash插件播放媒體,正確播放媒體需要使用
RTCWeb通信在HTML5瀏覽器中呈現(xiàn)音視頻的播放需要通過(guò)JavaScript實(shí)現(xiàn)。如圖2所示,Alice和Bob進(jìn)行視頻通話,Alice的視頻通過(guò)RTP流到達(dá)Bob的瀏覽器,瀏覽器通知上層Web應(yīng)用;上層Web應(yīng)用向?yàn)g覽器獲取Alice視頻流的Bob URL;上層Web應(yīng)用獲取video標(biāo)簽,并將URL賦值給這個(gè)video標(biāo)簽,更新video標(biāo)簽代碼,實(shí)現(xiàn)媒體播放。
圖2 RTCWeb基于HTML5標(biāo)簽呈現(xiàn)
IETF RTCWeb工作組建議RTCWeb終端間實(shí)現(xiàn)媒體建立所需信息協(xié)商的協(xié)議ROAP[14]。ROAP遵循Offer/Answer模型實(shí)現(xiàn)瀏覽器終端之間對(duì)SDP(session description protocol)消息的交換。ROAP消息內(nèi)容只是實(shí)際傳輸?shù)腞TCWeb信令包含的子內(nèi)容,并不定義實(shí)際線上傳輸?shù)腞TCWeb信令消息。如圖 3 所示,ROAP 目前主要定義了“offer”、“answer”及 “OK”等消息,這些消息的產(chǎn)生由上層應(yīng)用通過(guò)JavaScript調(diào)用Peer Connection的若干API實(shí)現(xiàn)。
圖3 ROAP消息展示
RTCWeb通信系統(tǒng)需要專門(mén)的信令狀態(tài)機(jī)實(shí)現(xiàn)對(duì)多媒體會(huì)話信令面的控制,IETF RTCWeb工作組建議采用一種基于JavaScript實(shí)現(xiàn)會(huì)話建立的協(xié)議 (JavaScript session establishment protocol,JSEP)[15]。JSEP 使得信令狀態(tài)機(jī)從瀏覽器中解放出來(lái),通過(guò)JavaScript使控制狀態(tài)、狀態(tài)機(jī)升級(jí)、會(huì)話描述修改等操作變得更加靈活和容易。JSEP能夠靈活、簡(jiǎn)單地處理Offer/Answer模型的交互,如圖4所示。
JSEP可以和任何會(huì)話控制協(xié)議相結(jié)合,如JSEP控制ROAP呼叫、JSEP控制XMPP呼叫、JSEP控制SIP呼叫。目前已經(jīng)出現(xiàn)了JSEP控制SIP呼叫的雛形 (如sipML5)[16],sipML5信令面采用SIP over Web Socket,外接專用RTCWeb服務(wù)器將SIP消息從Web Socket中解放出來(lái),并發(fā)送給SIP或IMS核心網(wǎng)。
圖4 JSEP實(shí)現(xiàn)流程
傳統(tǒng)上,Web雙向通信是通過(guò)Web客戶端采用 HTTP輪詢方式從Web服務(wù)器獲取消息,這是一種對(duì)HTTP的畸形使用。基于HTTP作為RTCWeb信令的傳輸協(xié)議并不合適,主要體現(xiàn)在3個(gè)方面:第一,Web服務(wù)器采用HTTP輪詢方式會(huì)造成Web服務(wù)器資源的浪費(fèi);第二,HTTP輪詢方式實(shí)現(xiàn)實(shí)時(shí)通信依賴于輪詢周期,周期太長(zhǎng)會(huì)影響實(shí)時(shí)性,周期太短會(huì)耗費(fèi)資源;第三,Web客戶端和Web服務(wù)器之間的數(shù)據(jù)傳輸需要使用HTTP頭,這對(duì)于實(shí)時(shí)通信來(lái)說(shuō)是一個(gè)比較大的開(kāi)銷(xiāo)。希望Web實(shí)時(shí)通信能夠通過(guò)一個(gè)TCP連接實(shí)現(xiàn)雙向通信?;谶@個(gè)想法,IETF提出了Web Socket[17]協(xié)議用于實(shí)現(xiàn)雙向通信。Web Socket是一個(gè)基于TCP及80/443端口傳輸?shù)膮f(xié)議,包含握手和數(shù)據(jù)傳輸兩部分,握手協(xié)議通過(guò)帶有Upgrade字段的HTTP請(qǐng)求和101的響應(yīng)交互完成,握手成功后就進(jìn)入雙向長(zhǎng)連接的數(shù)據(jù)傳輸階段。如圖 5所示,采用 Web Socket協(xié)議承載 RTCWeb信令可以提高消息的交互效率,相對(duì)HTTP輪詢而言,實(shí)現(xiàn)了真正的雙工通信,一個(gè)TCP長(zhǎng)連接相比若干HTTP短連接占用資源少,同時(shí)數(shù)據(jù)傳輸效率更高(Web Socket數(shù)據(jù)幀頭只有幾個(gè)字節(jié),而HTTP頭需要幾十個(gè)字節(jié))。
圖5 Web Socket與HTTP實(shí)現(xiàn)實(shí)時(shí)通信流程對(duì)比
IMS是一種全新的多媒體業(yè)務(wù)形式,能夠滿足用戶對(duì)更新穎、更多樣化多媒體業(yè)務(wù)的需求。隨著IMS應(yīng)用的增加和豐富,IMS客戶端的功能和特性需要不停地變化與演進(jìn),客戶端軟件變得越來(lái)越復(fù)雜,對(duì)IMS終端的要求也會(huì)更高。目前IMS客戶端主要包含硬終端和軟終端。如果采用RTCWeb技術(shù)實(shí)現(xiàn)IMS的免插件的RTCWeb客戶端,可以進(jìn)一步豐富IMS的終端形態(tài)。RTCWeb客戶端和傳統(tǒng)的客戶端在實(shí)現(xiàn)上存在本質(zhì)區(qū)別,如圖6所示。在傳統(tǒng)客戶端中,應(yīng)用與終端平臺(tái)相關(guān),信令面和媒體面功能是通過(guò)調(diào)用操作系統(tǒng)API實(shí)現(xiàn)的,信令面與媒體面在邏輯上分離并通過(guò)內(nèi)部接口通信;在RTCWeb客戶端中,應(yīng)用與終端平臺(tái)無(wú)關(guān),信令面和媒體面在邏輯和物理上均分離,信令面由上層應(yīng)用實(shí)現(xiàn),媒體面由瀏覽器實(shí)現(xiàn),信令面調(diào)用瀏覽器API實(shí)現(xiàn)實(shí)時(shí)通信。
圖6 傳統(tǒng)客戶端和RTCWeb客戶端的比較
相比傳統(tǒng)IMS客戶端或插件客戶端,RTCWeb客戶端具備更多優(yōu)勢(shì):操作便捷性,基于瀏覽器環(huán)境,實(shí)現(xiàn)客戶端的免安裝(輸入網(wǎng)址即可下載Web客戶端)和免用戶干預(yù)的升級(jí);開(kāi)發(fā)靈活性,瀏覽器為上層Web應(yīng)用提供了開(kāi)發(fā)實(shí)時(shí)通信應(yīng)用的API,基于腳本開(kāi)發(fā)客戶端應(yīng)用,周期較短,成本較低;平臺(tái)無(wú)關(guān)性,在瀏覽器中運(yùn)行,實(shí)現(xiàn)了業(yè)務(wù)與終端平臺(tái)或操作系統(tǒng)的無(wú)關(guān)性,有利于跨平臺(tái)移植,適應(yīng)于不同終端。
IMS增加Web客戶端形態(tài),使其應(yīng)用最終能脫離終端平臺(tái)或操作系統(tǒng)的限制。由于受瀏覽器支持能力和普及程度的影響,IMS客戶端Web化是一個(gè)逐步落實(shí)的過(guò)程。如圖7所示,第一步,通過(guò)對(duì)傳統(tǒng)客戶端軟件進(jìn)行二次開(kāi)發(fā)并向?yàn)g覽器平臺(tái)移植,實(shí)現(xiàn)基于瀏覽器的插件客戶端,這種客戶端借用了瀏覽器的呈現(xiàn)方式,但邏輯上自成體系,可和IMS直接對(duì)接;普通插件對(duì)于不同瀏覽器需要不同的開(kāi)發(fā)實(shí)現(xiàn),且需要用戶安裝,具有一定的安全隱患。第二步,為了避免引入新插件,可以考慮使用普及程度比較高的flash插件做客戶端,但需要一個(gè)接入網(wǎng)關(guān)實(shí)現(xiàn)RTMP協(xié)議流的解析和與IMS協(xié)議的適配。第三步,采用RTCWeb技術(shù)引入無(wú)插件的Web客戶端,開(kāi)發(fā)者通過(guò)JavaScrip編程實(shí)現(xiàn)Web應(yīng)用信令面功能,RTCWeb信令可以由Web應(yīng)用定義,所以需要一個(gè)接入網(wǎng)關(guān)實(shí)現(xiàn)RTCWeb信令和IMS協(xié)議的適配。
隨著終端Web化的逐漸深入,承擔(dān)RTCWeb客戶端接入功能的網(wǎng)關(guān)(RTC-GW)的作用越來(lái)越重要。RTC-GW除了可以接入RTCWeb客戶端,也可以提供對(duì)其他Web客戶端 (如flash客戶端)的接入,實(shí)現(xiàn)客戶端通信協(xié)議 (如RTCWeb或者RTMP)到電信核心網(wǎng)IMS協(xié)議的適配和轉(zhuǎn)換及媒體轉(zhuǎn)碼等操作(為了簡(jiǎn)化,后文將主要考慮RTC-GW提供RTC客戶端接入功能)。隨著RTCWeb客戶端數(shù)量的增長(zhǎng),單個(gè)RTC-GW無(wú)法應(yīng)對(duì)高并發(fā)呼叫和媒體處理問(wèn)題,可以通過(guò)多個(gè)RTC-GW組成協(xié)同群組(RTC-GW cluster),實(shí)現(xiàn)資源共享。
圖7 RTCWeb客戶端接入IMS構(gòu)想
RTCWeb技術(shù)有力推動(dòng)了IMS終端形態(tài)向無(wú)插件Web客戶端的轉(zhuǎn)型,將來(lái)IMS用戶手持任何終端下載RTC客戶端即可使用IMS業(yè)務(wù)。本節(jié)將重點(diǎn)介紹RTCWeb客戶端接入IMS解決方案及典型業(yè)務(wù)的實(shí)現(xiàn)流程。
如圖8所示,RTCWeb系統(tǒng)由RTC-GW及RTCWeb客戶端組成,其中RTCWeb客戶端由支持RTCWeb API的瀏覽器及相應(yīng)的Web App組成。RTCWeb客戶端可以通過(guò)DNS獲取RTC-GW群組的入口地址,入口點(diǎn)一般具有負(fù)載均衡器(load balancer)的功能;RTCWeb客戶端向負(fù)載均衡器請(qǐng)求可服務(wù)的RTC-GW,負(fù)載均衡器采用輪詢或者IP散列的方式確定一個(gè)RTC-GW,并向RTCWeb客戶端返回IP地址或者域名信息。如果RTCWeb客戶端位于NAT之后,無(wú)法與其他客戶端建立直連,RTC-GW可以向RTCWeb客戶端提供ICE,幫助客戶端實(shí)現(xiàn)不同類(lèi)型的NAT穿越。RTCWeb客戶端通過(guò)RTC-GW實(shí)現(xiàn)與IMS核心網(wǎng)的通信,其中,RTCWeb客戶端和RTC-GW之間形成客戶端/服務(wù)器方式的通信,包括RTCWeb信令和RTP媒體交互;RTC-GW實(shí)現(xiàn)了背對(duì)背的用戶代理(B2BUA),轉(zhuǎn)化RTCWeb信令及媒體編解碼適配IMS信令及媒體編解碼,最終接入為IMS業(yè)務(wù)邊界控制器(service border controller,SBC)設(shè)備,完成RTCWeb客戶端和IMS的互通。
圖8 基于IMS的RTCWeb系統(tǒng)結(jié)構(gòu)
RTCWeb信令處理/適配及媒體面交換主要涉及了RTC-GW以下基本功能。
·主處理單元 (master processing unit,MPU)主要完成RTCWeb信令及業(yè)務(wù)流程控制,如對(duì)于Chrome瀏覽器,MPU處理基于Web Socket承載的RTCWeb信令。
·協(xié)議適配(protocol adapter,PA)單元主要完成RTCWeb信令與SIP的協(xié)議轉(zhuǎn)換及SIP用戶代理的信令面相關(guān)工作。
·編解碼轉(zhuǎn)換(codec transcoding,CT)單元主要完成媒體格式的編解碼轉(zhuǎn)換工作。比如,Chrome瀏覽器支持音頻編解碼iSAC/iLBC/G.711和視頻編解碼VP8,而IMS要求支持音頻編解碼G.711/G.723/G.729和視頻編解碼H.263/H.264,一般情況下需要實(shí)現(xiàn)瀏覽器到網(wǎng)絡(luò)編解碼的轉(zhuǎn)換。
·媒體轉(zhuǎn)發(fā)(media forward,MF)模塊主要完成 IMS及RTCWeb客戶端之間的RTP/SRTP媒體接收、發(fā)送及解析,如果需要編解碼轉(zhuǎn)化需要先將RTP分組發(fā)送給CT處理。
圖9 RTCWeb用戶與傳統(tǒng)手機(jī)用戶之間的呼叫流程
4.2.1 RTCWeb用戶與傳統(tǒng)手機(jī)用戶之間的呼叫流程
RTCWeb客戶端通過(guò)RTC-GW群組系統(tǒng)接入IMS,所以RTCWeb客戶端與RTC-GW群組系統(tǒng)之間的交互基于Web Socket承載的RTCWeb信令,而RTC-GW群組系統(tǒng)與IMS之間采用SIP信令。如圖9所示,在RTCWeb用戶呼叫傳統(tǒng)手機(jī)用戶的信令流程中,RTC-GW群組系統(tǒng)負(fù)責(zé)在RTCWeb客戶端和IMS網(wǎng)絡(luò)之間傳遞呼叫、振鈴及摘機(jī)等操作。
圖10 RTCWeb用戶之間呼叫流程
4.2.2 RTCWeb用戶之間的呼叫流程
SBC作為IMS的信令和媒體的入口點(diǎn),將造成兩個(gè)RTCWeb客戶端之間通信媒體的迂回。希望在無(wú)需合法監(jiān)聽(tīng)的情況下,RTCWeb客戶端之間的媒體交互能夠以P2P的方式進(jìn)行。這個(gè)問(wèn)題可以通過(guò)RTC-GW群組系統(tǒng)來(lái)實(shí)現(xiàn)。如圖10所示,RTC-GW群組系統(tǒng)在媒體協(xié)商O(píng)ffer/Answer交互中,將SBC的媒體面IP地址和端口隱藏,取而代之的是RTCWeb客戶端A和B的媒體面IP地址和端口,實(shí)現(xiàn)RTCWeb客戶端之間的媒體直傳。
RTC-GW群組系統(tǒng)如何將SBC的媒體面IP地址和端口替換成RTCWeb客戶端的媒體面IP地址和端口,實(shí)現(xiàn)方法有很多,圖11列舉兩種方式僅作參考:第一種方式,RTC-GW A和B分別為RTCWeb客戶端 A和B提供服務(wù),RTC-GW A和B直接交換媒體面信息,將SBC的媒體面信息換成對(duì)端RTCWeb客戶端的媒體面信息;第二種方式,RTC-GW A和B分別為RTCWeb客戶端A和B提供接入,并將信令轉(zhuǎn)發(fā)給同一個(gè)RTC-GW提供服務(wù),這樣同一個(gè)RTC-GW便直接將SBC的媒體面信息替換成不同的RTCWeb客戶端的媒體面信息。
圖11 RTC-GW群組系統(tǒng)實(shí)現(xiàn)媒體地址替換
RTCWeb技術(shù)成為推進(jìn)Web實(shí)時(shí)通信的優(yōu)選方式之一,它具有傳統(tǒng)客戶端無(wú)法比擬的優(yōu)勢(shì),如操作便捷性、開(kāi)發(fā)靈活性及平臺(tái)無(wú)關(guān)性等。本文首先對(duì)RTCWeb通信模型及關(guān)鍵技術(shù)進(jìn)行介紹及分析;在此基礎(chǔ)上,提出了采用RTCWeb技術(shù)實(shí)現(xiàn)IMS免插件Web客戶端的想法,并提出相應(yīng)的RTCWeb與IMS的融合方案;方案細(xì)化了IMS RTCWeb客戶端和RTC-GW接入網(wǎng)關(guān)的實(shí)現(xiàn)方式;通過(guò)本文建議的RTCWeb和IMS融合方案,可進(jìn)一步豐富IMS的終端形態(tài),簡(jiǎn)化IMS客戶端部署方式,提升用戶體驗(yàn)。
此外,關(guān)于RTC-GW群組實(shí)現(xiàn)方式,可以結(jié)合云計(jì)算技術(shù)形成一個(gè)RTC-GW云。通過(guò)云計(jì)算技術(shù)使RTC-GW群組具有低成本、易擴(kuò)展、易管理等優(yōu)點(diǎn)。RTC-GW云系統(tǒng)保證RTC-GW功能實(shí)體之間相互協(xié)作,實(shí)現(xiàn)負(fù)荷分擔(dān),對(duì)外實(shí)現(xiàn)拓?fù)潆[藏,使用了數(shù)據(jù)多副本容錯(cuò)、同構(gòu)可互換等措施來(lái)提升可靠性。RTC-GW云還可以對(duì)外提供云服務(wù),如 SaaS(software as a service,軟件即服務(wù)),可能包括RTC-GW的功能或者其子功能,如會(huì)話控制、協(xié)議適配或編解碼轉(zhuǎn)化甚至NAT穿越等;PaaS(platform as a service,平臺(tái)即服務(wù)),可能提供RTCWeb開(kāi)發(fā)平臺(tái),即系統(tǒng)可以對(duì)外提供JavaScript開(kāi)發(fā)包供第三方網(wǎng)站或者軟件進(jìn)行調(diào)用。
1 Open web platform.http://www.w3.org/wiki/Open_Web_Platform
2 HTML5.http://www.w3.org/TR/html5/
3 Facebook.http://www.facebook.com/
4 GoogleTalk.http://www.gtalk.com.cn/
5 Gmail.http://mail.google.com/
6 iGoogle.http://www.google.com/
7 Alicall.http://www.alicall.com/
8 FlashVoIP.http://www.alicall.com/
9 RTMP specification.http://www.adobe.com/devnet/rtmp.html
10 W3C WebRTC working group.http://www.w3.org/standards/techs/webrtc#w3c_all
11 IETF RTCWeb working group.http://datatracker.ietf.org/wg/rtcweb/
12 Alvestrand H.Overview:Real Time Protocols for Brower-based Applications.W3C,June 20,2012
13 WebRTC 1.0:real-time communication between browsers.http://www.w3.org/TR/webrtc/
14 Jennings C,Rosenberg J.RTCWeb Offer/AnswerProtocol(ROAP).IETF,October 30,2011
15 Uberti J,Jennings C.Javascript Session Establishment Protocol.IETF,June 4,2012
16 sipML5.http://www.sipml5.org/
17 RFC6455.http://tools.ietf.org/id/draft-ietf-hybi-thewebsocketprotocol