為了提升網絡傳輸的可靠性或增加網絡可用帶寬, 通常使用雙鏈路冗余備份或者雙鏈路聚合的方式。 本文介紹幾種雙鏈路網絡通信的案例。
5G+WiFi冗余傳輸
- 雙Socket綁定不同網絡接口:通過Android的
ConnectivityManager
綁定5G蜂窩網絡和WiFi的Socket連接,實現雙鏈路并行傳輸。 - 動態切換策略:根據信號強度(RSSI)和帶寬實時切換主鏈路(如5G用于大流量傳輸,WiFi用于低延遲控制)
- 使用場景 : 常用于手機: 可以提升帶寬并增加用戶上網體驗 。
C/C++雙Socket冗余傳輸庫
- 主備Socket熱切換:客戶端同時維護TCP和UDP Socket,TCP用于可靠傳輸,UDP用于快速重傳。若TCP丟包率超過閾值,則通過UDP補發數據。
- 心跳檢測與自動重連:周期性發送心跳包,若主鏈路超時,自動切換到備用鏈路。
高可靠工業通信網關(C++)
- 雙鏈路心跳同步:通過雙Socket綁定,周期性同步狀態信息。
- 數據分片與校驗:將數據分片后通過雙鏈路發送,接收端根據校驗碼重組數據。
開源項目推薦
OpenMPTCP(多路徑TCP協議棧)
OpenMPTCProuter - Internet connection bonding - Home
- 功能:支持多鏈路(如5G+WiFi)聚合傳輸,提升吞吐量和可靠性。
- 適用場景:移動設備、車聯網。
----- LTE -----/ \
PC ---- apu3c4 ----- cable ----- apu3c4 ---- PC
QUIC協議實現(如Chromium QUIC)
- 功能:基于UDP的高可靠傳輸協議,支持快速握手和多路復用。
- 源碼參考:結合網頁2的UDP代碼實現QUIC邏輯。
Linux kernel 原生方案bond
Linux bond 是將多個網絡接口綁定成一個邏輯接口的技術。其基本功能包括提升網絡帶寬,通過聚合多個網卡增加傳輸速率;實現鏈路冗余,當某一鏈路故障時自動切換到其他鏈路,保障網絡連接穩定;還能實現負載均衡,將數據流量合理分配到不同物理鏈路上。
換到其他鏈路,保障網絡連接穩定;還能實現負載均衡,將數據流量合理分配到不同物理鏈路上。