1.
概述与目标
- 目标:在港区使用 GIA 与 CN2 两条或多条链路,保证业务在单链路或节点故障时自动切换且最小化丢包与时延抖动。
- 前提:需有两条独立物理/逻辑链路(例如一条走香港 GIA、另一条走 CN2),并能设置 BGP 多宿主或通过第三方交换。
- 输出:实现有监控告警、秒级故障检测、正确的流量回退与切换策略。
2.
链路接入与物理/逻辑准备
- 步骤1:确认两条链路的对端 ASN、对端 ip、MTU、支持的 BGP community 和是否支持 BFD。
- 步骤2:在机房交换/路由器上配置物理接口并验通(ping、traceroute、mtu check)。例如 Cisco:interface Gig0/0 ip address X.X.X.X/30 no shutdown。
- 步骤3:对两条链路分别测延迟、丢包(例如使用 mtr)并记录基线。
3.
BGP 多宿主基础配置(示例)
- Cisco eBGP 简单示例:router bgp 65000 neighbor 1.1.1.1 remote-as 65100 neighbor 1.1.1.1 description HK_GIA neighbor 2.2.2.2 remote-as 65200 neighbor 2.2.2.2 description CN2。
- 设置本地优先级与 AS_PATH 预置以偏好 CN2 或 GIA:route-map PREFER_CN2 permit 10 set local-preference 200;neighbor 2.2.2.2 route-map PREFER_CN2 in。
- 使用 prefix-lists 限制互相宣布的路由以防污染。
4.
快速故障检测:BFD 与 BGP 调优
- 启用 BFD:在支持的路由器启用 bfd 会话并绑定到 BGP,以实现 50-100ms 级别的路由收敛(示例:bfd interval 50 min_rx 50 multiplier 3)。
- 调整 BGP timers:reduce keepalive/hold 为较短值(例如 keepalive 3 hold 9)仅在设备与对端支持下进行。
- 验证:人工断链观察 BGP 收敛时间,记录并调整 BFD/keepalive 参数。
5.
流量分发与回退策略(ECMP / 本地优先)
- ECMP:若链路能力相近,可在本端启用 equal-cost multi-path,命令示例(Cisco):maximum-paths 2。
- 本地优先/AS_PREPEND:使用 local-preference 在入站流量上偏好 CN2;在不优先时对次选链路进行 AS_PATH 预置(在通知对端时添加 prepend)。
- 动态切换:使用 route-map + community 去通知上游改变权重,如 need-preference 社区。
6.
主动健康检查与自动化切换
- keepalived/VRRP:可用于网关级别的 L2/L3 冗余;配置 health_script 回调触发状态变更。
- 健康检查脚本(示例):用 curl 或 tcping 定时检查应用端口,失败 N 次后调用 ip route replace 或调用 FRRouting/ExaBGP 注入黑洞/优先路由。
- 自动化示例(Linux):使用 systemd timer + bash:if ! curl -sSf http://10.0.0.1/health ; then ip route replace default via 2.2.2.1 dev eth1; fi。
7.
监控、告警与回归测试
- 监控项:BGP 会话状态、BFD 状态、链路延迟/丢包、应用层成功率、SNMP ifOperStatus。
- 告警策略:BGP down 和 丢包超过阈值触发一级告警,延迟上升但链路可用触发二级。
- 回归测试:制定 S.O.P. 做故障演练(切断物理口、模拟对端 BGP down)并记录 RTO/RPO。
8.
安全与 MTU/分片注意事项
- MTU:CN2/跨境链路常要求 1500 或更高,务必 end-to-end 验证,不匹配会造成 PMTUD 失败。
- ACL/防火墙:在边界设备允许 BGP、BFD 和 health probe 的端口(TCP 179、UDP BFD 3784/3785、probe 80/443)。
- 日志与追踪:开启 syslog 对 BGP 事件打点,保留最近 7-30 天以便故障排查。
9.
问:在实际切换时如何保证会话不中断?
- 答:通过三方面保证会话平滑:一是应用层设计幂等与重连机制(短超时重试);二是使用 ECMP + 会话保持功能(LVS、FW session同步或使用宕机前迁移);三是在边界实现流量平滑迁移(双向同步 NAT 会话或使用全局负载均衡器做流量切换)。
10.
问:如果对端不支持 BFD,我该如何做快速故障检测?
- 答:可采用本地端口链路检测(interface tracking)、缩短 BGP keepalive/hold(风险较高需验证)、在应用层加健康探针并结合路由注入脚本(如 ExaBGP)来实现秒级响应。同时将监控告警与自动化脚本结合,确保故障时能快速调整路由。
11.
问:运维在部署前后应做哪些验收与长期运维建议?
- 答:部署前应做链路对比测试(延迟、丢包、抖动、MTU)、BGP 路由策略模拟、灾备演练;部署后定期做故障演练、流量比对、版本与参数变更记录。长期建议保持与上游运营商沟通,使用 SLA/告警条款并定期回顾路由策略。
来源:运维视角解读香港gia和cn2如何提升链路容错能力