1.1 目标:通过可重复的测试与配置步骤,判断在你业务场景下香港BGP链路还是中国电信CN2链路更具优势,并给出流量调度与路由优化的实施方法。
1.2 前提:需要至少两条出口链路(HK-BGP 与 CN2),一台做路由器/边界设备(支持FRR或BIRD)与一台测试主机。建议使用Linux(Debian/Ubuntu)作为边界路由器。
2.1 必装工具:sudo apt install frr iproute2 iptables tc mtr iperf3 traceroute tcpdump speedtest-cli -y。
2.2 网络信息采集:记录两条链路的远端网关、各自的AS号、MTU、公网IP。命令示例:ip addr; ip route show; curl -s ifconfig.me。
3.1 安装FRR并启用BGP。示例配置文件 /etc/frr/frr.conf:
router bgp YOUR_AS bgp router-id x.x.x.x neighbor PEER1_IP remote-as PEER1_AS neighbor PEER1_IP ebgp-multihop 1 neighbor PEER2_IP remote-as PEER2_AS ! address-family ipv4 unicast network YOUR_NET/24 neighbor PEER1_IP activate neighbor PEER2_IP activate exit-address-family
3.2 重启FRR:sudo systemctl restart frr。检查邻居:vtysh -c "show ip bgp summary"。
4.1 给到不同链路标记:使用iptables或nftables标记出站流量(按源IP/端口/服务)。示例:iptables -t mangle -A PREROUTING -s 10.0.1.0/24 -j MARK --set-mark 1。
4.2 根据mark建立策略路由:ip rule add fwmark 1 table 100; ip route add default via HK_GW dev eth1 table 100。类似为CN2建表200。
4.3 验证:ip rule show; ip route show table 100。用 curl --interface 或者 ip netns run 测试流量出接口。
5.1 本地偏好(local-preference)用于控制进入链路(对本AS内有效)。在FRR中用route-map:
route-map PREFER_CN2 permit 10 set local-preference 200 ! router bgp YOUR_AS neighbor PEER2_IP route-map PREFER_CN2 in
5.2 AS-path prepending 在对方看到你的路由时影响出站倾向:neighbor PEER1_IP route-map PREPEND out,其中 route-map 通过 set as-path prepend 进行设置。
5.3 社区(community)与MED也可配合运营商策略用以精细化流量。
6.1 路由连通性:traceroute -n -T -p 80 目的IP;mtr -rwzbc100 目的IP(记录丢包、延迟分布)。
6.2 带宽与丢包:iperf3 -c 目标iperf服务器 -t 60 -P 4。记录吞吐、丢包、重传。
6.3 实际业务测试:使用curl/wget并测量单连接延迟、TLS握手时间;使用浏览器或自动化脚本跑真实业务场景。
7.1 建议采集:RTT(平均/95分位)、抖动、丢包率、HTTP TTFB、带宽稳定性、路径跳数和故障恢复时间。
7.2 多时段采样:工作时段/非工作时段/夜间,各取若干分钟样本,计算均值与分位数。用脚本自动化:
for i in {1..60}; do mtr -r -c 10 TARGET | tail -n1 >> results.txt; sleep 60; done
8.1 若业务以大陆用户为主且对延迟、丢包敏感(金融、实时语音/视频),CN2通常更佳(直连骨干、时延低、丢包少)。
8.2 若业务为国际出口、对大陆出口不敏感或需国际路由灵活性,香港BGP可提供更好国际路径和成本优势。最终以实测数据(95% RTT、丢包)优先。
9.1 ECMP 与会话保持:对于无状态业务使用ECMP分流;有状态业务使用PBR+NAT或连接追踪维持会话。
9.2 快速故障切换:使用BFD与BGP快速收敛,或在路由器上配置监控脚本(ping或HTTP探测)结合 ip rule 动态修改路由表。
9.3 流量整形:tc qdisc 用来限制/保障不同链路上关键业务带宽,例如 tc qdisc add dev eth1 root handle 1: htb ...。
10.1 在变更前备份路由器配置:cp /etc/frr/frr.conf /etc/frr/frr.conf.bak。变更后立即监控CPU、BGP邻居、业务指标。
10.2 回滚:若发现指标恶化,立即恢复配置并重启FRR:cp ...bak ...; systemctl restart frr。
11.1 若发现丢包高:先用tcpdump抓包确认出界面是否有重传或RST,再检查MTU与链路质量,最后和运营商排查链路丢包。
11.2 若BGP不收敛:检查AS号、EBGP多跳、TTL、邻居对等状态与BFD日志。
问:我的业务主要是大陆用户,是否一定要选CN2?
答:不一定。优先用实测数据判断:如果CN2在你的目标时段显示明显更低的RTT和丢包(例如95分位延迟低20ms以上或丢包低0.5%以上),则优先CN2;若差距小且成本或可用性更优可考虑混合或香港BGP作为备份。
问:如何自动化实时根据链路质量切换流量?
答:用探测脚本(ping/mtr/http)周期性测量两链路质量,若阈值超限则通过预置的ip rule+ip route表或动态修改BGP local-pref/社区来切换;关键是设定冷却时间与回切策略避免抖动,并用BFD/BGP加速收敛。
问:没有BGP经验,想快速实施最简单方案,怎么做?
答:最简单的是使用PBR(基于源IP或子网的策略路由)把重要子网的出站固定到CN2,其他流量走香港;同时用带宽/延迟探测脚本人工观察一周数据再优化。之后逐步学习BGP策略(local-pref、AS-path prepending)以实现更精细的入站控制。