多宽带联网(五) OpenWrt中MWAN3高级策略分流实战(游戏加速、视频优化场景)
1. MWAN3策略分流的核心价值家里拉了两条宽带却发现刷视频卡、打游戏延迟高这种情况我遇到过太多次了。去年给朋友家调试网络时他同时接了电信和联通两条200M宽带但看4K视频还是缓冲玩外服游戏延迟总在200ms以上。后来用OpenWrt的MWAN3插件做了策略分流视频秒开、游戏延迟直接降到80ms左右。这背后的原理很简单不同运营商对各类网络服务的优化程度不同。电信宽带访问国内资源速度稳但国际出口容易拥堵联通宽带恰好相反国际线路质量好但国内跨网访问可能丢包。MWAN3的智能之处在于能识别流量类型自动选择最优线路。比如检测到你在访问Steam服务器就自动走联通线路刷B站视频则优先电信线路。实测这种分流方式比单纯负载均衡效果更好因为负载均衡只是简单分配流量而策略分流是真正意义上的智能选路。要实现这种效果关键要解决三个问题如何识别流量类型、如何获取最优线路规则、如何设置策略优先级。接下来我会用实际案例带大家一步步配置过程中会分享我调试时踩过的坑和优化技巧。2. 游戏加速专项配置2.1 获取游戏服务器IP库去年帮一个电竞战队做网络优化时发现很多游戏加速器本质上就是做了精准的IP分流。以《英雄联盟》美服为例通过抓包发现其服务器集群主要使用以下IP段104.16.0.0/12 104.32.0.0/13获取游戏IP段有三种可靠方法官方文档像暴雪、Riot等大厂会公布服务器IP范围抓包工具用Wireshark捕获游戏连接时的真实IP社区维护的IP库比如GitHub上的game-ip-addresses项目建议新建专属ipset存放游戏IPipset create game_ips hash:net family inet hashsize 1024 maxelem 65536 ipset add game_ips 104.16.0.0/12 ipset add game_ips 104.32.0.0/132.2 QoS标记与策略联动单纯分流还不够还需要配合QoS保证游戏流量优先传输。在OpenWrt中需要先安装qos-scriptsopkg update opkg install qos-scripts然后在/etc/config/mwan3中添加规则config rule option dest_port 5222,5223 option proto udp option use_policy game_policy option family ipv4这里有个细节要注意很多游戏使用UDP协议如MOBA类游戏但有些游戏登录验证用TCP如Steam平台。建议把常见游戏端口都加进去英雄联盟5000-5500,8393-8400绝地求生27015-27030Steam27036-270373. 视频流量优化方案3.1 识别主流视频平台流量实测发现不同视频平台的流量特征差异很大。比如B站视频流域名包含bilivideo.com而YouTube的IP段经常变动。推荐用域名分流更稳定config rule option dest_domain bilivideo.com,youku.com,iqiyi.com option use_policy video_policy对于国际流媒体建议结合DNSMASQ的IPset功能server/netflix.com/8.8.8.8 ipset/netflix.com/stream_ips3.2 缓冲优化参数调整视频卡顿很多时候是TCP窗口设置不合理导致的。通过SSH登录路由器临时调整内核参数echo 4096 /proc/sys/net/ipv4/tcp_window_scaling echo 2097152 /proc/sys/net/core/rmem_max echo 2097152 /proc/sys/net/core/wmem_max要永久生效需修改/etc/sysctl.conf文件。这里有个坑部分老款路由器内存小于256MB时值设太大会导致系统不稳定。建议先逐步测试找到最优值。4. 运营商特性深度优化4.1 骨干网路由分析通过traceroute可以发现电信访问美国走的是CN2线路时延最低而联通走的是AS4837线路更稳定。建议用besttrace工具测试opkg install besttrace besttrace -q1 8.8.8.8根据测试结果可以针对不同目标IP段指定策略。比如检测到是Google的IP段172.217.0.0/16就强制走联通线路。4.2 动态策略调整脚本网络状况会随时间变化我写了个自动切换策略的脚本#!/bin/sh ping_loss$(ping -c 5 8.8.8.8 | grep loss | awk {print $6} | tr -d %) if [ $ping_loss -gt 20 ]; then uci set mwan3.policy.game_policy.last_resortunreachable uci commit mwan3 /etc/init.d/mwan3 restart fi这个脚本每5分钟检测一次到Google DNS的丢包率超过20%就自动切换备用策略。建议放在计划任务中*/5 * * * * /root/check_network.sh5. 实战调试技巧5.1 日志分析要点MWAN3的详细日志存放在/var/log/mwan3.log。重点关注以下几类信息策略切换记录接口健康检查失败规则匹配统计用这个命令可以实时监控logread -f | grep mwan35.2 性能优化参数在高负载环境下如50设备同时在线需要调整这些参数config globals option rtcheck_interval 5 option icmp_interval 5 option failure_interval 5 option recovery_interval 5对于多核路由器建议启用多线程处理option nftables_set_threads 46. 常见问题解决方案上周帮一个网吧调试时遇到个典型问题游戏更新时视频会卡。原因是默认策略把大流量下载也识别为游戏流量。解决方法是在规则里添加包大小条件config rule option dest_port 27015-27030 option proto udp option packet_size -1024 option use_policy game_policy这样只有小于1024字节的UDP包通常是游戏实时数据才会走游戏专用策略大流量更新包会走默认线路。