作者:james.zhu(james.zhu@hiastar.com) www.hiastar.com 微信公眾號(hào):asterisk-cn
WebRTC 越來越多的進(jìn)入到了實(shí)際的語音視頻應(yīng)用場(chǎng)景中。根據(jù)Gartner 的預(yù)測(cè),到2019年,webrtc將占據(jù)語音和視頻15%的市場(chǎng)份額。去年,也就是2015年,大約有850 個(gè)廠家或者項(xiàng)目在使用webrtc技術(shù),過去兩年則取得了100%的增長。則說明了webrtc 技術(shù)正在爆發(fā)。我們現(xiàn)在已經(jīng)看到了webrtc技應(yīng)用在了網(wǎng)頁,app,呼叫中心,客服中心,和其他的商業(yè)用途。
WebRTC 越來越多的進(jìn)入到了實(shí)際的語音視頻應(yīng)用場(chǎng)景中。根據(jù)Gartner 的預(yù)測(cè),到2019年,webrtc將占據(jù)語音和視頻15%的市場(chǎng)份額。去年,也就是2015年,大約有850 個(gè)廠家或者項(xiàng)目在使用webrtc技術(shù),過去兩年則取得了100%的增長。則說明了webrtc 技術(shù)正在爆發(fā)。我們現(xiàn)在已經(jīng)看到了webrtc技應(yīng)用在了網(wǎng)頁,app,呼叫中心,客服中心,和其他的商業(yè)用途。
但是因?yàn)榇思夹g(shù)相對(duì)比較新,存在一些兼容性的問題和和傳統(tǒng)語音網(wǎng)絡(luò)的兼容性問題。通過市場(chǎng)調(diào)研和和語音通信方面的廠家實(shí)施發(fā)現(xiàn),目前最核心的,也是用戶最擔(dān)心的問題或者兼容性的問題包括以下5個(gè)方面:
信令兼容性問題:關(guān)于信令問題,這也是老生常談。到現(xiàn)在為止仍然存在信令不互通,不能兼容的問題,完全對(duì)牛彈琴。


信令包括了多個(gè)方面的內(nèi)容例如:會(huì)話控制,錯(cuò)誤消息處理,編碼設(shè)置,安全設(shè)置,和端口地址等等相關(guān)信息。目前webrtc在語音方面則使用了SIP協(xié)議,通過Websockt(WS)來進(jìn)行傳輸。如果出現(xiàn)不兼容的問題,最后會(huì)導(dǎo)致傳輸失敗。
呼叫控制問題。 呼叫控制更多是體現(xiàn)在企業(yè)通信中的一些業(yè)務(wù)流程,包括語音等待,電話轉(zhuǎn)接,電話駐留等等功能。如果在webrtc 端進(jìn)行設(shè)置發(fā)起呼叫以后,PBX熱鍵是否支持,帶寬占用增加等等因素都需要考慮。

編碼轉(zhuǎn)換問題。語音編碼轉(zhuǎn)換是一直需要面對(duì)的問題。簡(jiǎn)單來說就是無解。最終的解決辦法就是通過硬件DSP
處理,但是增加成本;通過軟件DSP處理,增加CPU負(fù)載,降低了系統(tǒng)的穩(wěn)定性。webRTC 現(xiàn)在使用VP8和VP9來處理視頻編碼,傳統(tǒng)的設(shè)備可能使用H264 編碼,所以需要一個(gè)服務(wù)器進(jìn)行編碼處理。另外,語音編碼也是類似的問題,Opus 是webRTC的主要編碼格式,一般傳統(tǒng)的PBX 或者軟交換目前仍然沒有支持Opus,開源的Asterisk和freeSWITCH已經(jīng)支持了這樣的編碼。終端話機(jī)廠家也有少部分支持了Opus編碼,這樣就會(huì)導(dǎo)致很多兼容性的問題。當(dāng)然還有很多app等等手機(jī)終端的編碼也需要進(jìn)行兼容性的測(cè)試。以下例子就是一個(gè)簡(jiǎn)單的編碼轉(zhuǎn)換的適用場(chǎng)景(Sangoma SBC),如果雙方編碼不一致,不能聊。需要轉(zhuǎn)碼。如果是會(huì)議視頻的場(chǎng)景,可能需要服務(wù)器進(jìn)行混屏等等各種,需要更多方面的技術(shù)考量。
處理,但是增加成本;通過軟件DSP處理,增加CPU負(fù)載,降低了系統(tǒng)的穩(wěn)定性。webRTC 現(xiàn)在使用VP8和VP9來處理視頻編碼,傳統(tǒng)的設(shè)備可能使用H264 編碼,所以需要一個(gè)服務(wù)器進(jìn)行編碼處理。另外,語音編碼也是類似的問題,Opus 是webRTC的主要編碼格式,一般傳統(tǒng)的PBX 或者軟交換目前仍然沒有支持Opus,開源的Asterisk和freeSWITCH已經(jīng)支持了這樣的編碼。終端話機(jī)廠家也有少部分支持了Opus編碼,這樣就會(huì)導(dǎo)致很多兼容性的問題。當(dāng)然還有很多app等等手機(jī)終端的編碼也需要進(jìn)行兼容性的測(cè)試。以下例子就是一個(gè)簡(jiǎn)單的編碼轉(zhuǎn)換的適用場(chǎng)景(Sangoma SBC),如果雙方編碼不一致,不能聊。需要轉(zhuǎn)碼。如果是會(huì)議視頻的場(chǎng)景,可能需要服務(wù)器進(jìn)行混屏等等各種,需要更多方面的技術(shù)考量。

身份驗(yàn)證問題。網(wǎng)絡(luò)上沒有人知道你是是誰。你是一個(gè)動(dòng)物還是一個(gè)someone 沒有人知道。如果用戶通過瀏覽器注冊(cè)登錄到企業(yè)內(nèi)部通信的系統(tǒng),或者作為一個(gè)內(nèi)部分機(jī)電話來使用的話,需要身份驗(yàn)證包括用戶名稱,密碼等等安全限制。如果沒有非常安全的認(rèn)證方式,可能出現(xiàn)企業(yè)通信系統(tǒng)的電話盜打或者接聽通話等等安全事件發(fā)生。


安全問題。傳統(tǒng)通信系統(tǒng)一般沒有對(duì)內(nèi)部通信,沒有對(duì)呼叫進(jìn)行加密。但是WebRTC則需要對(duì)呼叫進(jìn)行加密保護(hù)。需要通過webRTC網(wǎng)關(guān)來對(duì)加密/解密進(jìn)行處理。例如,webrtc 網(wǎng)關(guān)則需要把rtp 媒體流進(jìn)行加密,在網(wǎng)絡(luò)上使用SRTP或者TDLS-SRTP進(jìn)行處理。這些處理過程也需要終端配合webRTC網(wǎng)關(guān)來進(jìn)行多方面的兼容性測(cè)試。

其他的P2P面對(duì)的問題。因?yàn)閭鹘y(tǒng)的語音系統(tǒng)在防火墻內(nèi)部,還有其他的安全根據(jù)來保證網(wǎng)絡(luò)的安全,支持點(diǎn)對(duì)點(diǎn)的通信則沒有考慮太多的安全問題。但是如果有WebRTC介入的話,用戶則需要考慮如何來保證webrtc通信和內(nèi)部系統(tǒng)的安全。webRTC 目前使用了STUN和TURN來應(yīng)對(duì)這個(gè)問題。具體實(shí)現(xiàn)方式,首先ICE來探測(cè)雙方點(diǎn)通信,嘗試獲得雙方點(diǎn)對(duì)點(diǎn)通信。如果失敗,則ICE則通過STUN獲得一個(gè)外部地址。如果以上流程失敗,則轉(zhuǎn)發(fā)到TURN 中轉(zhuǎn)服務(wù)器來進(jìn)行通信。這樣的解決方式提供了呼叫的接通率,但是增加了網(wǎng)絡(luò)帶寬的消耗,同時(shí)較低了用戶體驗(yàn)。尤其在云服務(wù)平臺(tái),幾個(gè)服務(wù)器在不同的網(wǎng)域環(huán)境中。這些場(chǎng)景是非常可能發(fā)生的。ICE之間的協(xié)商過程和耗時(shí)是兼容性的一個(gè)重點(diǎn)關(guān)注的地方。

使用的檢測(cè)工具:
- Kamailio/OpenSIP:大并發(fā)的軟交換來測(cè)試。
- JSSIP :支持完整的javascript 終端開發(fā)包,可嵌入到網(wǎng)頁中。
- Asterisk/FreeSWITCH:目前比較流行的媒體軟交換系統(tǒng)。
- reSIProcate:支持完整的SIP協(xié)議棧,包括了多個(gè)模塊。
- webrtc2sip:一個(gè)開源的webrtc gateway,通過界面瀏覽器可以實(shí)現(xiàn)對(duì)內(nèi)部系統(tǒng)或者通信系統(tǒng)的PSTN呼出。目前測(cè)試效果非常一般。
- libnice:ICE 和STUN協(xié)商工具
- PJSIP:非常著名的SIP開源協(xié)議棧,不僅僅支持了標(biāo)準(zhǔn)的SIP協(xié)議,對(duì)SDP, RTP, STUN, TURN, 和 ICE 也有非常好的支持。
其他技術(shù)引入。目前仍然還有更多的語音編碼VP9和視頻編碼H265快速地引入到了webrtc的技術(shù)當(dāng)中。另外還有對(duì)SIP進(jìn)行安全支持,并且具有SIP防火墻的E-SBC,SBC功能的測(cè)試。這些技術(shù)都是在不斷演進(jìn)當(dāng)中,需要用戶在實(shí)際使用過程中發(fā)現(xiàn)坑在那里。

最后,我們經(jīng)過以上討論,給大家提出來幾個(gè)在實(shí)施webRTC過程中需要注意的幾個(gè)點(diǎn),包括了從信令,呼叫控制,編碼,安全,雙方驗(yàn)證等等問題。當(dāng)然根據(jù)網(wǎng)絡(luò)環(huán)境的不同,業(yè)務(wù)大小的不同,和部署方式的不同用戶需要針對(duì)性地做一些特別的關(guān)注。