作者:james.zhu(james.zhu@hiastar.com) www.hiastar.com 微信公眾號:asterisk-cn
WebRTC 越來越多的進入到了實際的語音視頻應用場景中。根據(jù)Gartner 的預測,到2019年,webrtc將占據(jù)語音和視頻15%的市場份額。去年,也就是2015年,大約有850 個廠家或者項目在使用webrtc技術,過去兩年則取得了100%的增長。則說明了webrtc 技術正在爆發(fā)。我們現(xiàn)在已經(jīng)看到了webrtc技應用在了網(wǎng)頁,app,呼叫中心,客服中心,和其他的商業(yè)用途。
WebRTC 越來越多的進入到了實際的語音視頻應用場景中。根據(jù)Gartner 的預測,到2019年,webrtc將占據(jù)語音和視頻15%的市場份額。去年,也就是2015年,大約有850 個廠家或者項目在使用webrtc技術,過去兩年則取得了100%的增長。則說明了webrtc 技術正在爆發(fā)。我們現(xiàn)在已經(jīng)看到了webrtc技應用在了網(wǎng)頁,app,呼叫中心,客服中心,和其他的商業(yè)用途。
但是因為此技術相對比較新,存在一些兼容性的問題和和傳統(tǒng)語音網(wǎng)絡的兼容性問題。通過市場調(diào)研和和語音通信方面的廠家實施發(fā)現(xiàn),目前最核心的,也是用戶最擔心的問題或者兼容性的問題包括以下5個方面:
信令兼容性問題:關于信令問題,這也是老生常談。到現(xiàn)在為止仍然存在信令不互通,不能兼容的問題,完全對牛彈琴。
信令包括了多個方面的內(nèi)容例如:會話控制,錯誤消息處理,編碼設置,安全設置,和端口地址等等相關信息。目前webrtc在語音方面則使用了SIP協(xié)議,通過Websockt(WS)來進行傳輸。如果出現(xiàn)不兼容的問題,最后會導致傳輸失敗。
呼叫控制問題。 呼叫控制更多是體現(xiàn)在企業(yè)通信中的一些業(yè)務流程,包括語音等待,電話轉(zhuǎn)接,電話駐留等等功能。如果在webrtc 端進行設置發(fā)起呼叫以后,PBX熱鍵是否支持,帶寬占用增加等等因素都需要考慮。
編碼轉(zhuǎn)換問題。語音編碼轉(zhuǎn)換是一直需要面對的問題。簡單來說就是無解。最終的解決辦法就是通過硬件DSP
處理,但是增加成本;通過軟件DSP處理,增加CPU負載,降低了系統(tǒng)的穩(wěn)定性。webRTC 現(xiàn)在使用VP8和VP9來處理視頻編碼,傳統(tǒng)的設備可能使用H264 編碼,所以需要一個服務器進行編碼處理。另外,語音編碼也是類似的問題,Opus 是webRTC的主要編碼格式,一般傳統(tǒng)的PBX 或者軟交換目前仍然沒有支持Opus,開源的Asterisk和freeSWITCH已經(jīng)支持了這樣的編碼。終端話機廠家也有少部分支持了Opus編碼,這樣就會導致很多兼容性的問題。當然還有很多app等等手機終端的編碼也需要進行兼容性的測試。以下例子就是一個簡單的編碼轉(zhuǎn)換的適用場景(Sangoma SBC),如果雙方編碼不一致,不能聊。需要轉(zhuǎn)碼。如果是會議視頻的場景,可能需要服務器進行混屏等等各種,需要更多方面的技術考量。
處理,但是增加成本;通過軟件DSP處理,增加CPU負載,降低了系統(tǒng)的穩(wěn)定性。webRTC 現(xiàn)在使用VP8和VP9來處理視頻編碼,傳統(tǒng)的設備可能使用H264 編碼,所以需要一個服務器進行編碼處理。另外,語音編碼也是類似的問題,Opus 是webRTC的主要編碼格式,一般傳統(tǒng)的PBX 或者軟交換目前仍然沒有支持Opus,開源的Asterisk和freeSWITCH已經(jīng)支持了這樣的編碼。終端話機廠家也有少部分支持了Opus編碼,這樣就會導致很多兼容性的問題。當然還有很多app等等手機終端的編碼也需要進行兼容性的測試。以下例子就是一個簡單的編碼轉(zhuǎn)換的適用場景(Sangoma SBC),如果雙方編碼不一致,不能聊。需要轉(zhuǎn)碼。如果是會議視頻的場景,可能需要服務器進行混屏等等各種,需要更多方面的技術考量。
身份驗證問題。網(wǎng)絡上沒有人知道你是是誰。你是一個動物還是一個someone 沒有人知道。如果用戶通過瀏覽器注冊登錄到企業(yè)內(nèi)部通信的系統(tǒng),或者作為一個內(nèi)部分機電話來使用的話,需要身份驗證包括用戶名稱,密碼等等安全限制。如果沒有非常安全的認證方式,可能出現(xiàn)企業(yè)通信系統(tǒng)的電話盜打或者接聽通話等等安全事件發(fā)生。
安全問題。傳統(tǒng)通信系統(tǒng)一般沒有對內(nèi)部通信,沒有對呼叫進行加密。但是WebRTC則需要對呼叫進行加密保護。需要通過webRTC網(wǎng)關來對加密/解密進行處理。例如,webrtc 網(wǎng)關則需要把rtp 媒體流進行加密,在網(wǎng)絡上使用SRTP或者TDLS-SRTP進行處理。這些處理過程也需要終端配合webRTC網(wǎng)關來進行多方面的兼容性測試。
其他的P2P面對的問題。因為傳統(tǒng)的語音系統(tǒng)在防火墻內(nèi)部,還有其他的安全根據(jù)來保證網(wǎng)絡的安全,支持點對點的通信則沒有考慮太多的安全問題。但是如果有WebRTC介入的話,用戶則需要考慮如何來保證webrtc通信和內(nèi)部系統(tǒng)的安全。webRTC 目前使用了STUN和TURN來應對這個問題。具體實現(xiàn)方式,首先ICE來探測雙方點通信,嘗試獲得雙方點對點通信。如果失敗,則ICE則通過STUN獲得一個外部地址。如果以上流程失敗,則轉(zhuǎn)發(fā)到TURN 中轉(zhuǎn)服務器來進行通信。這樣的解決方式提供了呼叫的接通率,但是增加了網(wǎng)絡帶寬的消耗,同時較低了用戶體驗。尤其在云服務平臺,幾個服務器在不同的網(wǎng)域環(huán)境中。這些場景是非常可能發(fā)生的。ICE之間的協(xié)商過程和耗時是兼容性的一個重點關注的地方。
使用的檢測工具:
- Kamailio/OpenSIP:大并發(fā)的軟交換來測試。
- JSSIP :支持完整的javascript 終端開發(fā)包,可嵌入到網(wǎng)頁中。
- Asterisk/FreeSWITCH:目前比較流行的媒體軟交換系統(tǒng)。
- reSIProcate:支持完整的SIP協(xié)議棧,包括了多個模塊。
- webrtc2sip:一個開源的webrtc gateway,通過界面瀏覽器可以實現(xiàn)對內(nèi)部系統(tǒng)或者通信系統(tǒng)的PSTN呼出。目前測試效果非常一般。
- libnice:ICE 和STUN協(xié)商工具
- PJSIP:非常著名的SIP開源協(xié)議棧,不僅僅支持了標準的SIP協(xié)議,對SDP, RTP, STUN, TURN, 和 ICE 也有非常好的支持。
其他技術引入。目前仍然還有更多的語音編碼VP9和視頻編碼H265快速地引入到了webrtc的技術當中。另外還有對SIP進行安全支持,并且具有SIP防火墻的E-SBC,SBC功能的測試。這些技術都是在不斷演進當中,需要用戶在實際使用過程中發(fā)現(xiàn)坑在那里。
最后,我們經(jīng)過以上討論,給大家提出來幾個在實施webRTC過程中需要注意的幾個點,包括了從信令,呼叫控制,編碼,安全,雙方驗證等等問題。當然根據(jù)網(wǎng)絡環(huán)境的不同,業(yè)務大小的不同,和部署方式的不同用戶需要針對性地做一些特別的關注。