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


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

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

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


安全問(wèn)題。傳統通信系統一般沒(méi)有對內部通信,沒(méi)有對呼叫進(jìn)行加密。但是WebRTC則需要對呼叫進(jìn)行加密保護。需要通過(guò)webRTC網(wǎng)關(guān)來(lái)對加密/解密進(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)行多方面的兼容性測試。

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

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

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