網路直播流暢與否最基本的就是資料傳輸的穩定性,如果有穩定的有線頻寬在直播過程中一般不會出現什麼問題,但在沒有可靠有線網路情況下,單條線路是很難保證穩定性的,以前一直使用單個聯通或者移動4G資料進行推流,經常會出現卡頓、網路不穩定的情況,特別是在一些大型會場、歌劇廳、密閉的室內出現訊號不穩定非常常見,保證網路穩定就無比重要了,記得曾經有一次帶著一個只有一路4G的路由器去給客戶直播,結果是一進屋就卡,一出來就正常了,搞得無比的尷尬。
後來皮蛋去買了一套4路4G聚合的聚合路由器,基本直播就再沒有出現過明顯的卡頓情況,但問題是除了購買裝置的高昂費用,直播還要按流量收取伺服器費用(後來核實該廠家使用的是阿里雲的伺服器,但收費是阿里雲的5倍,真黑),更主要的是有一次聚合路由器莫名其妙壞了,由於商業產品只提供簡單的設定介面,無法直接登入系統查詢原因,出了問題只能找廠家解決,最終把裝置寄給廠家,廠家修好後再寄回來,來回10天,非常耽誤事情,而且出了這一次事件後,對該裝置的可靠性就產生了質疑,每次都得準備備用方案,就怕關鍵時候掉鏈子。
DIY的多路聚合路由器
這張圖已經很清晰的揭示了多鏈路聚合的原理,其中OpenMPTCProuter就是路由器裝置,Modem1,Modem2就是網路鏈路,可以是有線寬頻、4G上網絡卡或者其它上網方式,透過mptcp協議將多路頻寬聚合到VPS伺服器,VPS就是一臺普通伺服器,需要安裝OpenMPTcpRouter的伺服器端軟體,最終VPS將資料轉轉發(推流)或者接收(上網),根據這個原理,可以明確瞭解我們需要準備的裝置包括:
1、一臺可以安裝OpenMPTcpRouter的裝置,作為路由器連線電腦或者推流裝置,此裝置可以是一臺普通的電腦、樹莓派等等,基本上能安裝linux的機器就能安裝OpenMPTcpRouter。
2、上網裝置:可以是4G、5G上網絡卡、有線寬頻、WiFi等等,戶外直播首選4G上網絡卡,訊號覆蓋廣,價格便宜,在有5G覆蓋的地方可以加入一個5G便攜路由器或者5G CPE以保證頻寬,在有有線頻寬的地方,可以透過網線接入一條有線頻寬。
3、VPS:一臺遠端伺服器,需安裝OpenMPTcpRouter伺服器端軟體,國內基本上都是選用阿里雲和騰訊雲這些雲伺服器提供商,服務穩定、頻寬充足。
OpenMPTcpRouter的安裝分為路由器刷機和VPS兩部分,首先我們需要給路由器刷機。
官方提供的針對不同硬體的各種韌體的連結下載:https://www.openmptcprouter.com/
開啟etcher後,首先選擇已經下載好的映象,將映象直接寫入硬碟,官方的韌體一般都在80兆左右,寫入過程很快,大概10幾秒就完成了,寫入完成後使用快閃記憶體盤啟動,不出意外的話,直接就可以進入路由器的控制檯了介面了。
找一臺電腦透過網線連結路由器的網口,將電腦ip地址獲取方式設定為自動獲取,如果電腦能獲取到一個192.168.100.xxx的ip地址,說明路由器工作正常,接下來透過瀏覽器開啟192.168.100.1就可以進入路由器的web管理介面了。
伺服器的對硬碟空間沒有什麼需求,直接選擇最低的20G雲盤即可,最主要的就是頻寬選擇,在阿里雲選擇100M頻寬的按量付費即可,費用是0.8元/G,如果你是土豪也可以選擇固定100M頻寬,付費的時候一定非常酸爽。
伺服器的作業系統建議選擇烏班圖(ubuntu),這也是官網推薦的系統之一。
伺服器購買好以後,就是使用官方已經寫好的指令碼進行軟體的安裝即可,首先透過ssh遠端登入伺服器,或者直接使用阿里雲的控制檯在web端登入,然後在伺服器上執行:
wget -O - https://www.openmptcprouter.com/server/ubuntu20.04-x86_64.sh | sh
理論上講,執行完這個指令碼後,不出意外伺服器端就算安裝完成了,但非常遺憾,伺服器端需要的很多軟體需要訪問國外的一些伺服器,往往無法直接安裝成功,至於原因你懂的。一個辦法是自己根據官方的指令碼找到相應的軟體自己安裝,或者將腳本里的軟體地址指定到國內的源,另外一個比較簡單的辦法就是先在阿里雲先配置一臺一模一樣的香港ECS,按照以上步驟安裝完成後,使用阿里雲香港ECS的映象再建立一個國內的ECS伺服器,這樣變相完成伺服器端的安裝。
伺服器安裝好後,還需要在阿里雲的安全策略裡開啟一些必須的埠,詳細如下:
SSH port is changed to 65222 (TCP)Shadowsocks port is 65101 (TCP & UDP)Glorytun port is 65001 (TCP & UDP)OMR JSON admin is 65500 (TCP)OpenVPN port is 65301 (TCP)MLVPN ports are 65201-65208 (UDP)Iperf3 on port 65400 (TCP & UDP)DSVPN port is 65401 (TCP)V2Ray port is 65228 (TCP)注意:官方的指令碼將伺服器的SSH埠修改為:65222了,遠端SSH登入需要將22修改為65222
至此伺服器端就安裝完成了,伺服器於路由器通訊需要的金鑰和其它配置檔案儲存在:/root/openmptcprouter_config.txt檔案裡,可以自己檢視後複製下來,以備路由器端設定使用。
檢視命令:cat /root/openmptcprouter_config.txt
後面需要做的就是配置路由器了。
使用網線連線路由器的網口,將電腦的IP地址設定為自動獲取,透過瀏覽器訪問192.168.100.1即可進入路由器的web管理介面。
其中Server key為金鑰,該金鑰可在vps伺服器的配置檔案獲取,Server IP為伺服器的公網IP地址。
配置好VPS後,下面就該配置網路介面了,測試環境中我們使用了4個華為的4G卡託進行測試,所以需要新增4個網路介面。
我們設定四個網口名稱分別為:wan1-wan4,其中Protocol協議一欄選擇DHCP即可,使用DHCP方式卡託會自動分配IP地址,Physical interface 物理介面分別選擇eth1-eth4,只要插上免驅的卡託,系統會自動生成這四個物理介面,至於上網絡卡託插在哪個USB介面沒有關係,第一個插上的會識別為eth1,第四個插上的會被識別為eth4,Multipath TCP第一個介面設定為Master,Master介面只能有一個,其它的介面設定為Enabled即可,如果不設定為Enabled則這個介面不可用於聚合。
設定完成後,檢視“Status”介面既可以看到VPS、各介面是否工作正常。
多路聚合路由網路圖
至此設定完畢,透過電腦上網檢視上網的IP地址會顯示為阿里雲的伺服器IP地址,最後進行速度測試:
網路測速
測試結果非常好,速度穩定在100mbps,主要是阿里雲的伺服器限制了100M的頻寬,否則直接達到200mbps應該是沒有問題的,實質上直播時用不了這麼大的頻寬,多網聚合主要考慮的是網路的穩定性和低延遲,一般直播50M的頻寬就綽綽有餘了,如果需要更大的頻寬可以再接入一個5G裝置,這套聚合路由的方案還是非常可靠的。