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


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

編碼轉(zhuǎn)換問(wèn)題。語(yǔ)音編碼轉(zhuǎn)換是一直需要面對(duì)的問(wèn)題。簡(jiǎn)單來(lái)說(shuō)就是無(wú)解。最終的解決辦法就是通過(guò)硬件DSP
處理,但是增加成本;通過(guò)軟件DSP處理,增加CPU負(fù)載,降低了系統(tǒng)的穩(wěn)定性。webRTC 現(xiàn)在使用VP8和VP9來(lái)處理視頻編碼,傳統(tǒng)的設(shè)備可能使用H264 編碼,所以需要一個(gè)服務(wù)器進(jìn)行編碼處理。另外,語(yǔ)音編碼也是類似的問(wèn)題,Opus 是webRTC的主要編碼格式,一般傳統(tǒng)的PBX 或者軟交換目前仍然沒(méi)有支持Opus,開源的Asterisk和freeSWITCH已經(jīng)支持了這樣的編碼。終端話機(jī)廠家也有少部分支持了Opus編碼,這樣就會(huì)導(dǎo)致很多兼容性的問(wèn)題。當(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ù)考量。
處理,但是增加成本;通過(guò)軟件DSP處理,增加CPU負(fù)載,降低了系統(tǒng)的穩(wěn)定性。webRTC 現(xiàn)在使用VP8和VP9來(lái)處理視頻編碼,傳統(tǒng)的設(shè)備可能使用H264 編碼,所以需要一個(gè)服務(wù)器進(jìn)行編碼處理。另外,語(yǔ)音編碼也是類似的問(wèn)題,Opus 是webRTC的主要編碼格式,一般傳統(tǒng)的PBX 或者軟交換目前仍然沒(méi)有支持Opus,開源的Asterisk和freeSWITCH已經(jīng)支持了這樣的編碼。終端話機(jī)廠家也有少部分支持了Opus編碼,這樣就會(huì)導(dǎo)致很多兼容性的問(wèn)題。當(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èn)題。網(wǎng)絡(luò)上沒(méi)有人知道你是是誰(shuí)。你是一個(gè)動(dòng)物還是一個(gè)someone 沒(méi)有人知道。如果用戶通過(guò)瀏覽器注冊(cè)登錄到企業(yè)內(nèi)部通信的系統(tǒng),或者作為一個(gè)內(nèi)部分機(jī)電話來(lái)使用的話,需要身份驗(yàn)證包括用戶名稱,密碼等等安全限制。如果沒(méi)有非常安全的認(rèn)證方式,可能出現(xiàn)企業(yè)通信系統(tǒng)的電話盜打或者接聽(tīng)通話等等安全事件發(fā)生。


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

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

使用的檢測(cè)工具:
- Kamailio/OpenSIP:大并發(fā)的軟交換來(lái)測(cè)試。
- JSSIP :支持完整的javascript 終端開發(fā)包,可嵌入到網(wǎng)頁(yè)中。
- Asterisk/FreeSWITCH:目前比較流行的媒體軟交換系統(tǒng)。
- reSIProcate:支持完整的SIP協(xié)議棧,包括了多個(gè)模塊。
- webrtc2sip:一個(gè)開源的webrtc gateway,通過(guò)界面瀏覽器可以實(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ù)引入。目前仍然還有更多的語(yǔ)音編碼VP9和視頻編碼H265快速地引入到了webrtc的技術(shù)當(dāng)中。另外還有對(duì)SIP進(jìn)行安全支持,并且具有SIP防火墻的E-SBC,SBC功能的測(cè)試。這些技術(shù)都是在不斷演進(jìn)當(dāng)中,需要用戶在實(shí)際使用過(guò)程中發(fā)現(xiàn)坑在那里。

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