linux策略路由通过源ip、业务类型等多维条件实现跨地域最优路径选择,需配置独立路由表、分层规则链及链路适配参数。

Linux 策略路由是优化跨地域链路流量调度的核心手段,关键在于打破“只看目的地址”的限制,让系统能根据源位置、业务类型、链路质量等条件主动选择最优出口路径。对香港、新加坡、东京、法兰克福等多地域部署的服务器而言,单纯依赖默认路由或BGP自动选路极易导致绕行(如港→美→欧),延迟增加20%以上。
明确分流依据:源IP与地理标签绑定
跨地域调度的前提是识别流量“从哪里来”。例如,将亚洲用户(如 183.60.0.0/16、202.175.0.0/16)的请求固定导向低延迟的CN2线路,欧洲用户(如 80.82.0.0/16、91.189.0.0/16)走本地IXP直连出口。这需在 /etc/iproute2/rt_tables 中为不同区域预设路由表:
- 添加
100 asia表处理亚洲入向流量 - 添加
200 eu表专用于欧洲出口路径 - 避免使用默认表(main,ID 254)混杂多地域规则
构建分层策略规则链
用 ip rule 建立优先级明确的匹配链,确保高确定性规则先执行。例如:
-
ip rule add from 183.60.0.0/16 table asia priority 100—— 亚洲源IP强制查asia表 -
ip rule add to 80.82.0.0/16 table eu priority 110—— 发往欧洲目标时启用eu表 -
ip rule add fwmark 0x1 table cn2 priority 90—— 配合iptables标记关键业务流走CN2专用路径
注意:priority 数值越小越先匹配;避免规则重叠或漏匹配,可用 ip rule list 实时验证顺序。
路由表内容需匹配物理链路特性
每个自定义路由表里的默认路由不能照搬通用网关。例如:
- asia 表中:
ip route add default via 10.10.20.1 dev eth1 src 203.123.45.67,其中src指定出口IP,确保回程路径一致,防止TCP握手失败 - eu 表中:
ip route add default via 192.0.2.100 dev eth2 mtu 1400,显式设置MTU适配欧洲部分运营商的链路限制 - 对高丢包链路,可添加
onlink参数绕过ARP检查,加快故障收敛
配合内核参数提升跨境传输效率
策略路由生效后,还需调优网络栈以适配长距离、高延迟链路:
- 启用TCP BBR:
echo 'net.core.default_qdisc=fq' >> /etc/sysctl.conf && echo 'net.ipv4.tcp_congestion_control=bbr' >> /etc/sysctl.conf - 增大接收窗口:
net.ipv4.tcp_window_scaling=1与net.core.rmem_max=4194304(4MB),适应香港↔纽约约150ms RTT - 禁用GRO:
ethtool -K eth1 gro off,减少虚拟化环境下CPU软中断压力,尤其在突发小包场景下效果明显











