1.
概述与目标
本指南针对台湾地区部署双ISP(多线)服务器,为跨境业务实现最小延迟与稳定路由给出可落地的步骤。目标包括:(1)实现按源/目的/服务分流;(2)快速故障切换;(3)基于测量的路由选择;(4)延迟与抖动控制策略。
2.
准备工作与网络拓扑
1) 硬件:两张或以上公网网卡(eth0/eth1);2) 获得ISP网关与各自的监控IP;3) 建议申请自己的前缀与ASN并与ISP协商BGP(可选)。绘制拓扑:服务器—ISP-A、ISP-B;若有边界路由器,把策略放在边界。
3.
BGP多线(推荐用于有ASN/前缀)
步骤:1) 与ISP建立BGP会话(示例Cisco):router bgp 65000 neighbor x.x.x.x remote-as 12345;2) 在BGP中设置local-preference和AS-path prepend:route-map SETPREF permit 10 set local-preference 200;3) 使用BGP community与ISP协商出口路径;4) 配置prefix-limit与max-prefix保护;5) 验证:show ip bgp summary / bgp table。注:通过调整local-pref优先选择本地想用的出口。
4.
策略路由(PBR)与Linux多线实操
适合没有BGP的场景。步骤:1) 在Linux上给每个ISP建立路由表:编辑 /etc/iproute2/rt_tables 添加 100 ispA, 200 ispB;2) 添加路由:ip route add default via A_GATEWAY dev eth0 table ispA;ip route add default via B_GATEWAY dev eth1 table ispB;3) 添加策略规则:ip rule add from A_IP/32 table ispA;ip rule add from B_IP/32 table ispB;4) 刷新缓存:ip route flush cache;5) 测试:ip route get 8.8.8.8 from A_IP。
5.
链路质量检测与自动故障切换脚本
实现自动切换的步骤示例:1) 写脚本 check_link.sh,每隔5s ping ISP的监控IP,统计连续失败次数;2) 当失败阈值超过3次,使用 ip route replace default via OTHER_GATEWAY 切换主路由;3) 推荐使用 systemd timer 或 cron + nohup 常驻;4) 更高级:使用 keepalived + VRRP 或 BFD 与边界路由器结合以减小故障切换时间。
6.
流量工程与QoS 控制
步骤:1) 在边界或服务器上用 tc 做队列管理与带宽保证,示例:tc qdisc add dev eth0 root handle 1: htb default 30;tc class add ...;2) 用 iptables -t mangle 标记流量(根据端口/DSCP):iptables -t mangle -A PREROUTING -p tcp --dport 443 -j MARK --set-mark 10;3) tc filter 根据mark绑定到class;4) 在跨境链路上优先保证TCP握手与小包实时流量。
7.
TCP与系统内核调优
步骤:1) 调整 /etc/sysctl.conf:net.ipv4.tcp_window_scaling=1、tcp_rmem/tcp_wmem 增大缓冲区;2) 调整 net.core.rmem_max、wmem_max;3) 调整MTU以避免分片(检查ISP路径MTU:tracepath);4) 开启TCP Fast Open、启用SACK与Timestamps;执行 sysctl -p 应用。
8.
测量工具与验证流程
步骤:1) 使用 mtr/traceroute/ping 对比两条链路RTT与丢包:mtr -r -c 100 目标IP;2) 用 iperf3 做吞吐测试:iperf3 -c peer -P 4 -R;3) 监控:部署Prometheus + blackbox exporter 采集延迟、丢包并设置告警;4) 定期保存路由表与BGP状态以便回溯。
9.
跨境优化建议与CDN/Anycast结合
步骤:1) 将静态资源放在CDN并启用Anycast DNS,减少跨境流量;2) 与本地台湾IX或海外骨干建立对等或经由较短路径的中转(与ISP协商);3) 对敏感业务使用SD-WAN或MPLS备份链路做链路品质路由。
10.
检查清单与运维流程
每日/每周检查项:1) BGP会话与路由表无异常;2) PBR路由规则与表完整;3) 监控无连通性/高丢包告警;4) 故障切换脚本日志清晰并定期演练;5) 定期与ISP沟通链路质量并调整策略。
11.
问:在台湾双ISP环境下,如何快速判断哪条链路延迟更低?
答:用 mtr 对目标(如客户或对端)分别从两张网口发起测试(mtr -i eth0 target),比较平均RTT与丢包率;若频繁波动,以丢包和抖动为优先指标。
12.
问:没有ASN时怎样实现可靠的故障切换?
答:在服务器端使用策略路由+监控脚本或keepalived实现本地故障切换;结合DNS短TTL与健康检查实现对外服务的自动切换。
13.
问:如何在不影响业务的情况下调优延迟与MTU?
答:先在测试环境用 tracepath 找出最小PMTU,逐步调整MTU并在流量低峰回滚;同时先在非关键端点开启内核TCP参数,监测业务指标无异常后推广到生产。
来源:台湾双isp服务器在跨境业务中的路由优化与延迟控制