1. 概述:为什么在香港部署 CN2 与 BGP 双链路
- 面向大陆用户时,CN2 提供更低延时与更稳定的丢包率;面对国际/港澳用户,BGP 多线有更好出口多样性。
- 双链路可以在业务高峰和链路故障时实现平滑切换与容灾,提升可用性与体验。
- 本文以香港机房为例,给出路由策略、切换机制与真实配置示例,便于工程落地。
- 适用场景:跨境游戏、API 服务、B2B SaaS、媒体分发等对延时和可靠性有严格要求的业务。
- 关注点:延迟、丢包、带宽、路由收敛时间、DDoS 与运维复杂度平衡。
2. CN2 与普通 BGP 的差异与选择原则
- CN2(中国电信优化路由)特点:较低时延、较少中转、对大陆到港链路友好;缺点是覆盖与出口单一性可能较弱。
- BGP 多线特点:通过多个国际/本地 ISP(如 PCCW、HGC、HKT)实现出口冗余与路径多样性;缺点为到大陆的质量不如 CN2。
- 选择原则:主业务面向大陆优先走 CN2;国际用户或需要多出口冗余则保留 BGP 作为备份或分流通道。
- 指标衡量:以 RTT、丢包率和带宽稳定性为主要评估指标(例如 RTT < 15ms、丢包 < 0.5% 为优)。
- 测试方法:使用 ping、mtr、iperf3 在不同时段采样并生成 7x24 报表。
3. 总体架构建议(Active/Passive 与 Active/Active)
- Active/Passive:生产主链路为 CN2,BGP 做备份,适合对大陆依赖强的应用。
- Active/Active:两套机房或两条链路都承载业务,采用流量分流(Geo-DNS/Anycast/Load Balancer)提高容量与容灾。
- 推荐部署:至少两台香港 VPS(不同机房),一台通过 CN2 直连,一台通过本地 BGP 多线。
- 辅助组件:使用 BFD 加速邻居探测,Keepalived/VRRP 做 L3 虚拟 IP 切换,DNS 结合健康检查做高层次切换。
- 安全与可观测:结合 CDN、DDoS 防护与流量镜像(sFlow)以便故障定位与溯源。
4. BGP 路由策略与自动切换技术
- 本地优先级(Local Preference):在本地路由器上对 CN2 链路设置更高 local-pref(例如 200),使 CN2 成为首选路由。
- AS-Prepended:当需要降级流量到备份 BGP 时,在备份出口做 AS prepending(例如 在出网时添加 2~3 次本 AS),降低其优先级。
- Community 与 MED:与上游 ISP 协商使用路由社区(community)和 MED 值,实现更加可控的回程路径。
- BFD + BGP:启用 BFD(检测 50ms 间隔)可以在链路故障时把 BGP 路由收敛从秒级缩短到 <1s~3s。
- DNS/HTTP 健康检查:配合 DNS TTL(建议 60s)和云 DNS 健康检查,作为业务层切换的补偿手段。
5. 容灾设计:从链路到应用的多层防护
- 网络层:BGP 多宿主 + BFD + route-map 实现快速回退,Keepalived 提供 L3 主备 VIP。
- 传输层:启用 TCP Fast Open、调整内核 tcp_retries2 与 tcp_fin_timeout 提升短连接恢复。
- 应用层:使用健康检查的 NGINX upstream 或 LVS 做会话保持与流量分配。
- 防 DDoS:前置 CDN(Anycast)并结合云防护(峰值清洗能力例如 200Gbps+ 的策略),并在本地启用 iptables/nftables 限速。
- 日志与告警:链路/路由事件通过 Prometheus+Alertmanager + PagerDuty 告警,确保运维响应时间 < 5 分钟。
6. 真实案例:某手游在香港的 CN2+BGP 容灾部署
- 背景:目标用户以中国大陆、东南亚为主,需保证登录与匹配服务 RTT 小于 50ms。
- 部署:两台香港 VPS(机房 A:CN2 专线,机房 B:多线 BGP)。VPS 规格如下示例:
- VPS-A (CN2):4 vCPU / 8GB RAM / 100GB SSD / 带宽 500Mbps,公网 IP 203.0.113.10;主路由优先。
- VPS-B (BGP):4 vCPU / 8GB RAM / 100GB SSD / 带宽 500Mbps,公网 IP 198.51.100.20;备用或分流用途。
- 切换策略:使用 BFD+BGP,主链路断开时 2s 内撤销 route,DNS 回退 TTL=60s 做最终容错。
7. 配置示例与性能数据演示
- Keepalived 简单示例(简化):priority 100 放在主节点,备份为 90,virtual_ipaddress 为 203.0.113.100。
- BGP 策略示例(FRRouting 伪配置):neighbor X.X.X.X route-map SET_LOCALPREF out / route-map PREPEND out set as-path prepend 65001 65001。
- iptables 防护示例:对 SYN 流量限速 --limit 50/s,配合 conntrack 限制每秒新连接数。
- 性能对比表(真实采样示例,单位:ms / %):
| 来源 | 链路类型 | 平均 RTT | 丢包率 | 备注 |
| 广州 | CN2 | 8 ms | 0.2% | 稳定 |
| 广州 | BGP | 18 ms | 1.5% | 受国际出口波动影响 |
| 上海 | CN2 | 12 ms | 0.3% | 优良 |
| 新加坡 | BGP | 35 ms | 0.8% | 国际路径 |
8. 验证与运维建议
- 灰度演练:先在低流量窗口把 10%-30% 流量下发到备用通道,观察 RTT/丢包/业务错误率。
- 自动化:把 BGP 事件、链路质量指标接入自动化脚本(例如 Prometheus Alert -> Ansible 执行切换脚本)。
- 例行测试:每周执行链路断连测试、DDoS 模拟(小流量)与 DNS 切换演练。
- SLA 与合同:与 ISP 签订链路 SLA,明确故障恢复时限与通知流程。
- 成本权衡:衡量 CN2 专线费用、BGP 多线费用与业务因故障损失,做 ROI 分析。
9. 总结与行动清单
- 结论:在香港部署 CN2+ BGP 的混合架构,能兼顾大陆低延时与国际出口冗余,是多数跨境业务的优选。
- 优先级实施步骤:1) 双机房部署;2) 启用 BFD + BGP 策略;3) 部署 Keepalived 与 DNS 健康检查;4) 引入 CDN 与云防护。
- 监控目标:确保链路 MTTR < 5 分钟,P95 RTT 达标率 > 95%。
- 运维建议:保持路由文档、定期演练并与 ISP 保持沟通渠道畅通。
- 如果需要,我可以基于你的实际带宽、机房和 ISP 列出详细配置和命令清单,便于快速实施。
来源:如何在香港cn2和bgp 之间做流量切换与容灾设计