1.
需求与流量基线评估
先采集真实流量:使用iftop、vnstat、sar、nethogs或采集器(Prometheus + node_exporter)统计7×24小时峰值、95百分位和按源/目的IP的流量占比。示例命令:iftop -i eth0;sar -n DEV 1 300。然后导出top N目的地IP段,用mtr -r -c 100 对这些目标做延迟丢包分析,得到不同地域的连接质量基线。
2.
确定带宽规格与冗余
根据95百分位和峰值增长率计算带宽:推荐预留20–30%冗余以应对突发。若对国内用户敏感,建议主用CN2线路:例如95百分位是300Mbps,则配置500Mbps以上链路并做链路聚合(LACP)或按应用分流。还要规划次备线路(电信非CN2或联通CN2 GIA)用于故障切换。
3.
与运营商协商BGP策略
请求运营商在BGP上设置本地优先级(local-preference)或使用特定community将到达中国大陆的流量优先走CN2;在多家上游环境中,要求对方向做AS-PATH prepending以降低优先级。举例Cisco配置:route-map PREFER_CN2 permit 10
set local-preference 200;neighbor X route-map PREFER_CN2 in。
4.
在服务器端实施策略路由(PBR)
使用iptables/xt_mark + ip rule + ip route table将指定目标或应用走CN2或备用链路。示例:iptables -t mangle -A PREROUTING -d 1.2.3.0/24 -j MARK --set-mark 0x1
ip rule add fwmark 0x1 table cn2
ip route add default via 192.0.2.1 dev eth0 table cn2。
5.
TCP/UDP端口与应用分流实操
按应用区分流量,例如网页端与下载端分别打标:iptables -t mangle -A OUTPUT -p tcp --dport 80 -j MARK --set-mark 0x2(或用ipset管理大量IP段)。然后为每个mark配置不同路由表与策略,确保低延迟业务走CN2,高带宽但允许抖动的业务走备用链路。
6.
流量整形与队列管理(tc)
在Linux使用tc做上行/下行(出口)限速与排队策略,示例(出口eth0):tc qdisc add dev eth0 root handle 1: htb default 30
tc class add dev eth0 parent 1: classid 1:1 htb rate 500mbit ceil 500mbit
tc class add dev eth0 parent 1: classid 1:10 htb rate 200mbit ceil 300mbit(为低延迟业务配置优先队列,使用pfifo or fq_codel)。结合tc filter匹配iptables mark:tc filter add dev eth0 parent 1: protocol ip handle 0x2 fw flowid 1:10。
7.
自动化与监控
将带宽、丢包和路由事件接入Prometheus + Alertmanager:node_exporter采集接口带宽,使用blackbox_exporter对关键目标做延迟检测。配置阈值告警(延迟>200ms或丢包>1%触发切换),并用脚本调用ip rule/route调整表实现自动切换。
8.
故障切换与健康检测
在机房或服务器设置BFD/Keepalived(针对NAT/虚拟IP)或主动探测脚本:每60秒检测目标连通性(tcping/iperf3),当检测到主链路质量恶化超过阈值时,将相关mark切换到备用路由表,实现无缝切换并记录回滚窗口。
9.
测试与验证步骤清单
执行:1) 确认BGP路由前缀到达并生效(bgp summary/mrt);2) 对关键IP做mtr/traceroute,比较通过不同链路的延迟与跳数;3) 用iperf3测吞吐;4) 模拟链路故障(断开主网口)验证策略路由与tc的行为;5) 检查日志与监控波形。
10.
安全与合规注意事项
确保路由策略不违反上游运营商的策略,避免人为制造路由振荡;对关键策略变更先在测试环境验证并制定变更窗口;记录每次BGP/iptables/tc更改,便于回滚。
11.
问:为什么要使用cn2而不是普通电信链路?
12.
答:CN2通常对大陆访问做了优化,具备更短的互联路径、更稳定的带宽和较低丢包率,尤其对延迟敏感的业务(游戏、实时语音)效果明显。但需要结合成本与目标客户分布评估。
13.
问:如果我要精确给不同目的地分配带宽,应该怎么做?
14.
答:用iptables/ipset对目的IP段打mark,结合ip rule把不同mark映射到不同路由表,再在对应出接口上用tc+htb/fq_codel为这些流量设置rate/ceil和优先级。测试并逐步调优即可。
15.
问:常见的调优失败点有哪些,我该如何避免?
16.
答:常见问题有路由回环、BGP收敛慢、tc规则过多导致CPU高负载。避免方式:先在小流量环境验证配置、使用合理的rule优先级与聚合ipset、监控系统负载并按需横向扩容。
来源:如何为香港服务器cn2线路设计合理的带宽与路由策略