-
您的位置:
- 網(wǎng)站首頁(yè)
- > 新聞中心
- > 行業(yè)資訊
您的位置:
srs直播聚合路由器那個(gè)多線路配置如何配置有一些看不太明白。 |
看了你的架構(gòu)圖 大概達(dá)到的效果是SRS服務(wù)器分流推送然后接收端選擇鏈路最好的一路進(jìn)行轉(zhuǎn)推?這樣的話起到的是冗余的作用 而MPTCP起到的作用是疊加多鏈路的網(wǎng)速 比如有三條10M寬帶 疊加成30M提高可用帶寬 看了最新的openmptcprouter的文檔 貌似已經(jīng)添加了熱備冗余的功能 具體實(shí)現(xiàn)方式還沒(méi)研究過(guò) 總之和你說(shuō)的方案應(yīng)該是兩個(gè)不同的方向 不過(guò)把srs集成聚合應(yīng)該可以有效減少故障點(diǎn)同時(shí)降低延遲? |
@MattUan 對(duì)的,和MPTCP是不同的,如果相同就沒(méi)有必要做了,直接用MPTCP就挺好的。 我想做的,主要解決的是帶寬滿足要求時(shí)的冗余問(wèn)題,當(dāng)然也可以用多個(gè)機(jī)位實(shí)現(xiàn)冗余。 另外,MPQUIC可能比MPTCP更合適,只是還不成熟。 |
先說(shuō)最重要的:目前SRS還沒(méi)有支持聚合路由器,還在搗騰中,敬請(qǐng)期待。。。
現(xiàn)在每周會(huì)做一場(chǎng)直播,主要是SRS的答疑,推RTMP流到視頻號(hào),發(fā)現(xiàn)有時(shí)候網(wǎng)絡(luò)抖動(dòng)會(huì)卡頓。
上行推流如果網(wǎng)絡(luò)不好,會(huì)導(dǎo)致所有人都卡,因此基本上直播都需要保障上行推流,除非是一個(gè)網(wǎng)絡(luò)攝像頭24小時(shí)推流直播沒(méi)人看的那種場(chǎng)景。
Solution
目前市面上的方案是聚合路由器,一般是在路由器上插多張網(wǎng)卡,部署一個(gè)專用的服務(wù)器來(lái)聚合這些網(wǎng)卡的流,然后推到直播源站。這里有幾個(gè)問(wèn)題:
這是路由器廠商的方案,完全物理層的多路徑傳輸,其實(shí)如果做直播專用的多路徑,做應(yīng)用層的多路徑推流,會(huì)更簡(jiǎn)單也可以有更多的業(yè)務(wù)處理。參考MPTCP
多路徑并沒(méi)有冗余,如果遇到某個(gè)鏈路質(zhì)量不好或抖動(dòng),需要比較復(fù)雜的算法來(lái)處理。比如一條鏈路的RTT從10ms變成100ms,這個(gè)鏈路質(zhì)量怎么計(jì)算,比較復(fù)雜,因?yàn)閺哪承┌床坏阶罱K的結(jié)果,如果采用冗余推流,就可以只看最終這些流的FPS是否正常,選擇FPS比較穩(wěn)定的一路流轉(zhuǎn)推就行。
一般服務(wù)器是路由器廠商部署,自己部署比較麻煩,而且是鏈路層的服務(wù)器。不如部署專用的視頻服務(wù)器比較直觀,比如會(huì)有很多視頻的指標(biāo)。
所以我覺(jué)得應(yīng)用層的聚合路由器方案,會(huì)更好一些,具體方案參考:架構(gòu)圖
Goal
這是一個(gè)開源的聚合路由器方案,主要的目標(biāo)是:
提供一種開源的聚合路由器方案,實(shí)現(xiàn)高可靠的直播推流。
在OpenWRT上使用SRS的一個(gè)范例,可以拓展到其他場(chǎng)景,比如企業(yè)SRS網(wǎng)關(guān)。
SRS支持OpenWRT(MIPS)平臺(tái),適配ST支持MIPS。
這不是一個(gè)商業(yè)產(chǎn)品,目標(biāo)也不是為了產(chǎn)出能直接商業(yè)化可售賣的產(chǎn)品,因?yàn)檎嬲龀缮虡I(yè)產(chǎn)品,有很多東西要,要考慮很多因素,這也不是開源項(xiàng)目要做的事情。
開源要做的,就是跑通鏈路,展現(xiàn)出各種可能性。主要任務(wù):
SRS支持OpenWRT,修改ST適配MIPS系統(tǒng),參考 #2637
SRS支持MPTCP多路徑傳輸。
SRS支持MP- QUIC多路徑傳輸。
HiWifi Y1 + EC20
HiWifi配置不高但到處都是,有一個(gè)USB口可以插一個(gè)EC20的4G網(wǎng)卡,實(shí)現(xiàn)WiFi+4G雙通道傳輸。
首先,將HiWifi Y1刷成OpenWRT系統(tǒng),參考下面的OpenWRT Install。
然后,需要安裝USB的4G網(wǎng)卡驅(qū)動(dòng),Windows是RNDIS,Linux是CDC-ECM,區(qū)別參考這里。在OpenWRT中,安裝這個(gè)就可以:
opkg update
opkg install kmod-usb-net-rndis
接著,重啟路由器。將EC20插到USB口,就可以看到識(shí)別出來(lái)了,有了一個(gè)新的網(wǎng)卡叫
usb0
:root@OpenWrt:~# dmesg[ 99.149068] usb 1-1: new high-speed USB device number 2 using ehci-platform
[ 99.229163] rndis_host 1-1:1.0 usb0: register 'rndis_host' at usb-101c0000.ehci-1, RNDIS device, fa:50:57:e0:1e:d6
root@OpenWrt:~# ifconfig usb0usb0 Link encap:Ethernet HWaddr 86:41:4A:15:66:2A
BROADCAST MULTICAST MTU:1500 Metric:1
最后,新增一個(gè)網(wǎng)絡(luò)接口就可以了。
OpenWRT Install
如果官方下載比較慢,可以從國(guó)內(nèi)騰訊或清華鏡像站點(diǎn),下載刷機(jī)鏡像和kmod。
刷機(jī)鏡像,從下載頁(yè)面選擇版本和自己路由器的型號(hào),可以從Targets找到,比如HiWifi Y1是
ramips/mt7620
,然后在下載頁(yè)面找到對(duì)應(yīng)品牌比如hiwifi_hc5661
的鏡像:https://downloads.openwrt.org/releases/21.02.0/targets/ramips/mt7620
http://mirrors.cloud.tencent.com/openwrt/releases/21.02.0/targets/ramips/mt7620
可以刷完路由器后,先連上其他WiFi訪問(wèn)網(wǎng)絡(luò),就可以用opkg安裝了。
首先,備份下官方opkg源,設(shè)置為騰訊云鏡像:
cp /etc/opkg/distfeeds.conf /etc/opkg/distfeeds.conf.bk-`date +%s`sed -i 's|downloads.openwrt.org|mirrors.cloud.tencent.com/openwrt|g' /etc/opkg/distfeeds.conf
最后,更新和安裝就可以:
opkg update
opkg install kmod-usb-net-rndis
說(shuō)明下其他可能用到的包:
kmod-usb-net-cdc-ether
:就是USB網(wǎng)卡驅(qū)動(dòng),CDC ECM模式。安裝kmod-usb-net-rndis
時(shí)默認(rèn)會(huì)安裝這個(gè)包,具體請(qǐng)查看CDC-ECM 和 RNDIS。kmod-usb-serial-option
:若需要操作EC20模塊,比如AT串口命令操作/dev/ttyUSB2
,設(shè)置EC20的模式,需要安裝這個(gè)模塊。一般都不需要這個(gè)模塊的。libstdcpp
:這是C++的動(dòng)態(tài)庫(kù),如果程序用到了C++就需要安裝這個(gè)庫(kù)。libopenssl
:這是openssl動(dòng)態(tài)庫(kù),加解密需要用到這個(gè)庫(kù)。gdb
:可以在OpenWRT上調(diào)試程序。OpenWRT Build
路由器肯定是基于OpenWRT做的,基本上目前路由器都會(huì)基于這個(gè)開源項(xiàng)目開發(fā)。
由于OpenWRT比較龐大,國(guó)內(nèi)下載不是慢就是會(huì)失敗,我找了一些鏡像源加速下載,請(qǐng)參考openwrt-docker。
這個(gè)Docker是Ubuntu 20的環(huán)境,Dockerfile會(huì)把OpenWRT的代碼以及依賴的feeds的代碼下載下來(lái),打出來(lái)鏡像后,就可以直接配置和編譯。后續(xù)就可以直接
git pull
來(lái)更新代碼,就快很多了。OpenWRT: srs-server
SRS可以在OpenWRT中運(yùn)行,參考Build package srs-server。
啟動(dòng)SRS服務(wù)器:
/usr/bin/srs-server -c /etc/srs/conf/openwrt.conf
推流到SRS:
ffmpeg -re -i doc/source.flv -c copy -f flv rtmp://192.168.1.1/live/livestream
觀看HTTP-FLV:http://192.168.1.1:8080/live/livestream.flv
MPTCP
目前直播聚合路由器,使用的是傳輸層多路徑傳輸?shù)姆桨?,相關(guān)項(xiàng)目如下:
Open MPTCP Router,整合了MPTCP協(xié)議棧、OpenWRT等項(xiàng)目的一個(gè)直播聚合路由器。官網(wǎng):openmptcprouter.com
RFC8684: MPTCP,MPTCP的RFC標(biāo)準(zhǔn)文檔。官網(wǎng):multipath-tcp.org
Kernel: Multi-Path TCP,內(nèi)核MPTCP模塊。
Multipath UDP tunnel,多路徑UDP隧道。
MPTCP是基于TCP的協(xié)議,參考下圖:
下面是架構(gòu)圖:
多路徑傳輸主要是提升了傳輸帶寬,順便提升了抗抖動(dòng)能力。
這里有個(gè)測(cè)試方案無(wú)線4G的視頻傳輸方案,用3張限速800Kbps的4G網(wǎng)卡,傳輸2Mbps直播流。注意插拔網(wǎng)卡時(shí),會(huì)有秒級(jí)別的卡頓和花屏(可能商業(yè)產(chǎn)品是能解的)。
MP-QUIC
志宏提到QUIC也有多路徑的版本,參考 multipath-quic.org,官方說(shuō) quic-go 這個(gè)QUIC庫(kù)就已經(jīng)支持了。
MP-QUIC比MPTCP,關(guān)鍵的優(yōu)勢(shì)我認(rèn)為有幾點(diǎn):
應(yīng)用層協(xié)議,不用走非常長(zhǎng)的升級(jí)鏈路,App自己寫代碼就可以用,這樣普及速度快了太多太多了。不用動(dòng)內(nèi)核,不用動(dòng)路由器,不用動(dòng)底層庫(kù),在應(yīng)用層就可以搞定。
UDP協(xié)議,天然就容易支持,QUIC本身也考慮過(guò)連接遷移,只是沒(méi)有考慮同時(shí)傳。從RFC可以看出MP-QUIC才28頁(yè),MPTCP有58頁(yè)。
QUIC是未來(lái)互聯(lián)網(wǎng)的基礎(chǔ),多路徑可以應(yīng)用得遠(yuǎn)不止TCP這樣,所有應(yīng)用都可以用到。
這個(gè)能帶來(lái)的影響是非常不一樣的。又快,又簡(jiǎn)單,還很廣泛。
Commercial Products
目前市場(chǎng)上有不少聚合路由器的產(chǎn)品,主要解決的也是提升傳輸帶寬,當(dāng)然傳輸容錯(cuò)也有支持。
LiveU Solo, Simultaneously bond up to 4 network links including support for 2x 4G LTE cellular or WiMAX modems, Wifi and Ethernet,支持4個(gè)網(wǎng)絡(luò)并行傳輸(2個(gè)4G、Wi-Fi、有線)。與目睹直播平臺(tái)、搜狐視頻、騰訊視頻、微博、微信、Bilibili、優(yōu)酷土豆等國(guó)內(nèi)主流在線媒體和其它海外主流內(nèi)容分發(fā)網(wǎng)絡(luò)和在線視頻平臺(tái)兼容。
TVU One,Reliably transmits high picture quality video even in congested or challenging environments,Uses patented IS+ transmission algorithm,Support for HDR and 1080P60 encoding at as little as 800kbps,Long internal battery life,HEVC/H.265 video compression,CNCed from high-density aluminum。可動(dòng)態(tài)聚合來(lái)自不同網(wǎng)路連接的頻寬,包括蜂巢式網(wǎng)路、光纖、衛(wèi)星、WiFi和以太網(wǎng)。
Teradek BondFamily,The Bond Backpack is an all in one professional HEVC/H.264 streaming solution for broadcasters seeking the best in signal reception and video quality. High Gain Antennas,Node Modems,Gold or V Mount Battery Plate,Integrated Locking Cables。