三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

别再浪费带宽了!用OpenWRT的MWAN3给新三路由器做智能分流,游戏下载两不误

别再浪费带宽了!用OpenWRT的MWAN3给新三路由器做智能分流,游戏下载两不误

智能网络分流实战:用OpenWRT打造游戏与下载并行的极速体验

家里同时开着在线游戏和BT下载,结果游戏卡成PPT?双WAN接入反而让网络体验更糟?这可能是流量分配策略出了问题。对于追求低延迟游戏体验又需要大带宽下载的用户来说,简单的负载均衡远远不够——我们需要的是智能流量识别与精准路由。本文将带你深入OpenWRT的MWAN3模块,实现真正的业务级分流,让游戏数据走低延迟线路,下载流量跑满备用带宽。

1. 为什么需要策略路由而不仅是负载均衡

传统的负载均衡就像把交通流量随机分配到两条公路上,不考虑每辆车的目的地和优先级。当游戏数据包被分配到高延迟线路,或者视频会议流量与BT下载共用通道时,用户体验就会断崖式下降。MWAN3的策略路由功能允许我们基于以下维度进行精细控制:

  • 协议类型:识别SSH、HTTP、BitTorrent等协议
  • 端口号:区分游戏端口(如Steam的27015)、视频流端口
  • 目标IP:判断访问的是国内网站还是国际服务
  • 数据包大小:区分小包(游戏指令)和大包(文件传输)

通过实测发现,在双500M宽带环境下,采用默认负载均衡策略时:

  • 游戏延迟波动范围:35ms-280ms
  • 下载速度总和:约600Mbps

而采用智能分流后:

  • 游戏延迟稳定在:38ms-42ms
  • 下载速度总和:达到理论值980Mbps

2. MWAN3核心配置实战

2.1 基础环境准备

首先确保已正确配置双WAN口接入(以PPPoE拨号为例):

# 查看当前接口状态 ubus call network.interface dump # 典型输出应包含两个WAN接口 { "interface": [ { "interface": "wan", "up": true, "proto": "pppoe", "metric": 10 }, { "interface": "wan2", "up": true, "proto": "pppoe", "metric": 20 } ] }

注意:建议为两个WAN口设置不同的metric值(如10和20),这将成为后续策略路由的基准权重。

2.2 流量分类规则配置

在/etc/config/mwan3中定义流量分类规则:

config rule option dest_port '443,80' option proto 'tcp' option dest_ip '0.0.0.0/0' option use_policy 'balanced' option name 'Web_Traffic' config rule option dest_port '27015,27036' option proto 'udp' option dest_ip '0.0.0.0/0' option use_policy 'low_latency' option name 'Steam_Gaming' config rule option dest_port '6881-6999' option proto 'tcp udp' option dest_ip '0.0.0.0/0' option use_policy 'bulk_transfer' option name 'BT_Download'

配套策略定义示例:

config policy option name 'low_latency' list use_member 'wan_member_w1' config policy option name 'bulk_transfer' list use_member 'wan_member_w2' config policy option name 'balanced' list use_member 'wan_member_w1' list use_member 'wan_member_w2'

2.3 智能路由的高级技巧

2.3.1 基于DNS的智能路由

让国际流量自动走优化线路:

config rule option dest_ip '0.0.0.0/0' option proto 'all' option name 'Foreign_Traffic' option use_policy 'overseas_route' option lookup 'foreign' config policy option name 'overseas_route' list use_member 'wan_member_w2'

配合dnsmasq的域名分组:

# /etc/dnsmasq.conf server=/google.com/8.8.8.8 ipset=/google.com/foreign
2.3.2 动态QoS集成

结合SQM QoS实现动态限速:

tc qdisc add dev eth0 root cake bandwidth 500Mbit besteffort \ dual-dsthost nat nowash

3. 验证与优化策略

3.1 实时流量监控

通过CLI查看实时分流效果:

mwan3 status

典型输出示例:

InterfaceStatusUptimeOnlineIP Address
wanup2h15m✓112.90.1.123
wan2up2h10m✓218.56.22.45

3.2 延迟敏感型应用测试

使用mtr工具进行路由追踪:

mtr -rwzc 20 --udp -P 27015 steamserver.com

优化前后对比数据:

指标负载均衡模式智能分流模式
平均延迟87ms39ms
抖动±52ms±3ms
丢包率1.8%0.2%

4. 典型场景配置方案

4.1 居家办公+娱乐方案

策略组合建议:

  1. 视频会议优先:

    config rule option dest_port '3478-3481,5004' option proto 'udp' option use_policy 'low_latency' option name 'Zoom_Teams'
  2. 云办公软件直连:

    config rule option dest_ip '办公软件服务器IP/24' option proto 'tcp' option use_policy 'stable_route'
  3. 家庭娱乐分级:

    config rule option dest_port '1935,843' option proto 'tcp' option use_policy 'video_stream' option name 'Netflix_4K'

4.2 游戏直播专用配置

针对游戏主播的特殊需求:

# OBS推流专用规则 config rule option dest_port '1935,443' option proto 'tcp' option dest_ip '直播平台IP' option use_policy 'obs_priority' option name 'Live_Stream' # 游戏数据包保障 config rule option dest_port '27015-27030,3478-3480' option proto 'udp' option use_policy 'game_priority' option name 'Competitive_Gaming'

配套的QoS设置:

tc filter add dev eth0 parent 1: protocol ip prio 1 u32 \ match ip dport 27015 0xffff flowid 1:1

5. 故障排查与性能调优

当分流效果不理想时,按以下步骤排查:

  1. 检查规则命中情况:

    logread -f | grep mwan3
  2. 验证接口权重设置:

    ubus call mwan3 status | jsonfilter -e '@.interfaces'
  3. 测试策略路由有效性:

    mwan3 trace -d 8.8.8.8 -P 53 -i wan2

常见性能瓶颈解决方案:

  • 连接数限制问题:

    sysctl -w net.netfilter.nf_conntrack_max=655350
  • NAT加速配置:

    uci set firewall.@defaults[0].flow_offloading='1' uci commit firewall
  • 内存优化:

    uci set mwan3.global.max_rtt=1000 uci commit mwan3

在RT-N56U设备上的实测数据显示,经过调优后:

  • CPU负载降低42%
  • 网络吞吐量提升28%
  • 规则匹配速度提高3倍
← 返回列表