双宽带上传叠加,实现异地 4K 串流
我玩异地串流已经很多年了。从读研时期起,我配了我的第一台台式机。之后每年寒暑假回家我都会不断优化我的串流体验。异地串流就像魔法一样,让我可以在家里巨大的电视屏幕上运行画面精美的大型游戏,或者连上键盘鼠标后化作一个云电脑,而这一切只需要插上一条网线。
在直线距离 322km 的异地(网络延迟在 20ms 左右),我串流玩过像素风的ARPG 游戏神之天平、玩过画面精美的 3A 大作、玩过本地多人的游戏双人成行、玩过需要考验操作的动作游戏怪物猎人,还串流过 VR 游戏半条命:艾利克斯、恐怖游戏森林。我的所有串流经历里挑战最高的是串流 VR 游戏,VR 画面需要非常高的带宽,并且对延迟非常敏感,高延迟很容易造成眩晕感。串流 VR 大致需要 80Mbps 带宽,并且总延迟需要低于 45/60ms。
然而我以往的串流体验依赖于学校提供的完美网络条件——有着千兆对等的宽带,还能选择三网出口来降低延迟。在我毕业后,我办理的移动千兆宽带只有 40Mbps 的上传带宽。这使得我回家后再也无法串流 VR 游戏,并且也只能 1080p 串流 PC 游戏,这显然是一个巨大的打击。
学校的网络通服务每个月20元,提供了千兆对等的带宽、CERNET 的 v4 公网 IP 和 /60 的 v6 公网 IP。并且除教育网外,还支持切换到三大运营商的出口(NAT)。利用这完美的资源,我把我的台式机打造成了一台高性能的云游戏服务器,利用 wireguard 组网,实现了在家里访问学校的台式机。
我询问了线下三大运营商的门店,但貌似都不太懂,都说没有更高上传的普通宽带。联通提供的便宜专线 300/100Mbps 需要 120 元/月,仍然太贵。之前听朋友说福建移动有 50 元上传提速到 300Mbps 的服务,但是我问了给我装宽带的移动师傅,并不知道这种事情。
我之前给朋友办了一条千兆宽带(二宽优惠,10 元千兆)。在 25 年 12 月份,朋友说宽带 1 月底就不用了。那时我便萌生了之后将其移机,聚合两条宽带的想法。
最终,这个想法在 1 月 24 号被正式实施。利用 ipv6 没有 uRPF 的特性,通过 wireguard 组网,并使用 nft 实现 UDP 包 per-packet 的负载均衡,最后成功把两条移动宽带的上行叠加在一起。
这次过年回家,我实际测试了 4K 串流的游戏体验,并使用 SQM 优化了带宽叠加的稳定性。最终实现了低于20ms延迟、4K@60fps HDR、70 Mbps 码率的稳定串流的效果。遂写此文记录折腾心得,希望能帮助同样喜欢异地串流的同好。
图1:串流跑到 68 Mbps 码率,不丢包(SQM 优化前)

大纲
- 宽带移机风波
- 与宽带师傅的掰扯
- 一波三折的安装
- 软路由双 wan 设置
- wireguard 带宽叠加配置
- ipv6 uRPF 测试
- 基于 nft 的 UDP Per-Packet 负载均衡
- iperf3 测试
- 过年回家串流测试
- 失效的排查
- SQM 优化
- 结语