著(zhù)名的開(kāi)源視頻會(huì )議服務(wù)器開(kāi)發(fā)商Jitsi的核心開(kāi)發(fā)人員Boris Grozev和他的團隊利用了更加智能的方式Cascading SFUs的方式處理語(yǔ)音時(shí)時(shí)延問(wèn)題,通過(guò)對比測試,測試結果取得了比較好的效果。Cascadiing(串聯(lián)?) SFU的實(shí)現來(lái)自于基本的網(wǎng)絡(luò )資源查詢(xún)的原理,就是通過(guò)算法路由到距離客戶(hù)最近的媒體服務(wù)器。以下內容是官方開(kāi)發(fā)人員的具體介紹,更多完整文檔參考文章鏈接。

現在的很多語(yǔ)音業(yè)務(wù)和會(huì )議服務(wù)器都部署在云端,用戶(hù)則可能部署在世界各地,網(wǎng)絡(luò )的穩定性會(huì )嚴重影響語(yǔ)音質(zhì)量,時(shí)延,抖動(dòng),丟包,或者視頻影像不清晰等問(wèn)題。因此,在用戶(hù)用戶(hù)之間選擇一個(gè)最佳的媒體路徑是非常至關(guān)重要的。在WebRTC的環(huán)境中,有時(shí)是用戶(hù)之間通過(guò)ICE 或者TRUN 來(lái)實(shí)現,這種場(chǎng)景事實(shí)上是非常簡(jiǎn)單的場(chǎng)景,可以支持少量用戶(hù)的視頻會(huì )議。但是,如果視頻會(huì )議人數很多的時(shí)候,一個(gè)單點(diǎn)服務(wù)器很難處理大量用戶(hù)的會(huì )議場(chǎng)景。因此,使用一種智能的方法,例如SFU是非常有必要的。下面介紹兩種方式的處理機制和其策略,以及測試結果的優(yōu)化。
首先,讓我們看看使用Star的 處理方式,如果三個(gè)用戶(hù)在不同的地方,他們需要實(shí)現視頻會(huì )議的話(huà),可能需要經(jīng)過(guò)兩個(gè)服務(wù)器的處理流程,同時(shí)每個(gè)呼叫方都需要和另外兩個(gè)互相連接,而且會(huì )議中的成員加入的順序不同,可能導致連接錯誤或者無(wú)效的連接,這樣就會(huì )浪費很多服務(wù)器和網(wǎng)絡(luò )資源,如下圖例所示,可能用戶(hù)A和用戶(hù)B都連接了服務(wù)器 2 而不是服務(wù)器1。

串聯(lián)SFU的橋接方式
讓我們看看如何使用串聯(lián)的方式來(lái)解決智能選擇路由和服務(wù)器的方式。通過(guò)串聯(lián)的方式來(lái)處理的話(huà),用戶(hù)A 就會(huì )通過(guò)服務(wù)器1,然后對接服務(wù)器2,呼叫服務(wù)器2的用戶(hù)C。這樣的話(huà),兩臺服務(wù)器就會(huì )被充分利用,減少了資源浪費。

往返時(shí)延的影響
連接SFU的橋接有其優(yōu)勢也有其劣勢。其劣勢是增加了多個(gè)跳轉,但是如果進(jìn)行了優(yōu)化以后,大大減少了語(yǔ)音數據的往返時(shí)延。關(guān)于此策略的實(shí)現,參考鏈接論文有詳細介紹。對于WebRTC來(lái)說(shuō),通常情況下使用RTP來(lái)傳輸數據,其本身具有不可靠性。如何實(shí)現視頻的重新傳輸也是一個(gè)很大的挑戰。使用單機服務(wù)器的往返時(shí)延如下,需要多次不同對象的處理。

使用SFU橋接的往返時(shí)間的話(huà),重新傳輸僅限于本地服務(wù)器傳輸。例如,如果丟包發(fā)生在用戶(hù)A和服務(wù)器1之間,服務(wù)器1要求用戶(hù)A重傳。如果丟包發(fā)生在用戶(hù)C和服務(wù)器2之間,服務(wù)器2則要求用戶(hù)C之間重傳;如果兩個(gè)服務(wù)器之間發(fā)生丟包,則要求兩個(gè)服務(wù)器之間重傳數據包。用戶(hù)終端可以通過(guò)設置jitter buffer來(lái)緩存視頻播放。根據作者結論,理論上來(lái)說(shuō),雖然,端對端的整個(gè)往返時(shí)間長(cháng)于外部服務(wù)器部署方案的時(shí)間,但是端對端的時(shí)延降低。

如何部署一個(gè)串聯(lián)的SFU
剛才我們討論了串聯(lián)SFU的好處和對說(shuō)延的正面影響。現在討論一下如何部署基于Jitsi的視頻會(huì )議解決方案。具體解決方案查閱Jitsi 官方網(wǎng)站。

其他協(xié)議使用以及優(yōu)化設置
在部署串聯(lián)SFU的環(huán)境中,除了技術(shù)架構的調整以外,Jitisi還使用了其他的協(xié)議和優(yōu)化手段來(lái)進(jìn)一步實(shí)現SFU的性能優(yōu)化。具體的方法包括:
- 使用了Octo protocol
- 使用了Simulcast
- 設置了Active Speaker Selection
- 設置了Bridge Selection
為了能夠網(wǎng)站客觀(guān)地測試SFU的橋接方式,用戶(hù)使用亞馬遜云平臺,對接機構地區的云服務(wù)器進(jìn)行傳輸測試,測試結果比較滿(mǎn)意。
總結,通過(guò)SFU 橋接方式可以提高SFU 視頻會(huì )議服務(wù)器的媒體質(zhì)量,同時(shí)可以增加SFU 視頻會(huì )議服務(wù)器的拓展性。克服人員準備在最近的版本發(fā)布中做進(jìn)一步的測試。
注:以上文檔是筆者翻閱以便作為技術(shù)學(xué)校的資料,用戶(hù)可以參考官方原文做進(jìn)一步研究。
參考資料:
https://webrtchacks.com/sfu-cascading/
https://jitsi.org/wp-content/uploads/2018/11/ccwc2018-geo.pdf



關(guān)注微信公眾號:asterisk-cn,獲得有價(jià)值的Asterisk行業(yè)分享
Asterisk freepbx 中文官方論壇:http://bbs.freepbx.cn/forum.php
Asterisk freepbx技術(shù)文檔: www.freepbx.org.cn
融合通信商業(yè)解決方案,協(xié)同解決方案首選產(chǎn)品:www.hiastar.com
Asterisk/FreePBX中國合作伙伴,官方qq技術(shù)分享群(3000千人):589995817