Cloudflare 2026 年 1 月 BGP 路由泄露事故技术分析
一、事件概述
1. 事件背景
2026 年 1 月 22 日,Cloudflare 在佛罗里达州迈阿密数据中心的一台路由器上发生了自动化路由策略配置错误,导致部分 BGP 前缀意外泄露。此次路由泄露不仅影响了 Cloudflare 的客户,还导致多个外部网络受影响,因为它们的流量被意外引导至 Cloudflare 的迈阿密数据中心。
2. 影响范围
A. 影响时长
25 分钟(20:25 UTC - 20:50 UTC)
B. 影响功能
- Cloudflare 客户流量出现丢包率上升
- 跨越迈阿密链路的流量延迟增加
- 部分流量被防火墙过滤规则丢弃
C. 受影响流量
- 仅影响 IPv6 流量
- 峰值时约 12Gbps 非下游流量被丢弃
3. 严重程度
中等严重程度(影响范围超出 Cloudflare 自身网络)
二、事件时间线
1. 故障发生(20:25 UTC)
A. 触发原因
网络自动化代码仓库中合并了一个最终触发路由策略 bug 的变更
B. 执行操作
自动化系统在迈阿密单一边缘路由器上运行,导致向 BGP 传输提供商和对等节点意外宣告路由
C. 影响开始
IMPACT START
2. 问题发现(20:40 UTC)
A. 发现途径
网络团队开始调查来自迈阿密的非预期路由宣告
3. 应急响应(20:44 UTC)
A. 响应措施
启动事故响应流程协调处理
4. 根本解决(20:50 UTC)
A. 处理措施
网络操作员手动回滚错误的配置变更,并暂停该路由器的自动化系统
B. 效果评估
IMPACT STOP
5. 后续处理
A. 21:47 UTC
从代码仓库中回滚触发泄露的变更
B. 22:07 UTC
操作员确认自动化系统可以安全地在迈阿密路由器上重新运行
C. 22:40 UTC
恢复迈阿密路由器的自动化系统
sequenceDiagram
participant Code as 代码仓库
participant Auto as 自动化系统
participant Router as 迈阿密路由器
participant BGP as BGP 对等节点
participant Team as 网络团队
Code->>Auto: 19:52 UTC 合并变更
Auto->>Router: 20:25 UTC 执行配置
Router->>BGP: 意外宣告路由
BGP->>Router: 流量涌入
Team->>Router: 20:40 UTC 开始调查
Team->>Team: 20:44 UTC 启动事故响应
Team->>Router: 20:50 UTC 手动回滚配置
Router->>BGP: 停止错误宣告
Code->>Code: 21:47 UTC 回滚代码变更
Auto->>Router: 22:40 UTC 恢复自动化三、问题分析
1. 直接原因
路由策略配置变更导致策略过于宽松,将所有内部路由类型标记为可接受,并意外地对外宣告。
2. 根本原因(5 Whys 分析)
A. 为什么出现这个问题?
删除包含 BOG04 前缀列表后,策略仅匹配 route-type internal,这会匹配任何非外部路由类型,包括内部 BGP(IBGP)路由。
B. 为什么没有及时发现?
配置变更没有充分的自动化验证机制检查空或错误的策略条款。
C. 为什么会泄露到外部?
策略接受路由并通过策略过滤器,导致本应是内部的前缀被对外宣告。
3. 技术细节分析
A. 配置变更内容
原始变更意图是从迈阿密移除波哥大数据中心的 BGP 宣告,因为基础设施升级不再需要通过迈阿密转发 IPv6 流量。
变更生成的差异配置删除了多个策略语句中的前缀列表:
- 6-COGENT-ACCEPT-EXPORT
- 6-COMCAST-ACCEPT-EXPORT
- 6-GTT-ACCEPT-EXPORT
- 6-LEVEL3-ACCEPT-EXPORT
- 6-PRIVATE-PEER-ANYCAST-OUT
- 6-PUBLIC-PEER-ANYCAST-OUT
- 6-PUBLIC-PEER-OUT
- 6-TELEFONICA-ACCEPT-EXPORT
- 6-TELIA-ACCEPT-EXPORT
B. 策略配置缺陷
删除前缀列表后的策略变得过于宽松:
graph LR
A[删除前缀列表] --> B[策略仅匹配 internal]
B --> C[匹配 IBGP 路由]
C --> D[添加社区标记]
D --> E[策略接受路由]
E --> F[对外宣告]C. 路由泄露路径
Cloudflare(AS13335)将从对等节点 Meta(AS32934)接收的前缀宣告给上游传输提供商 Lumen(AS3356),违反了山谷自由路由原则。
根据 RFC7908 的路由泄露定义,此次事件造成了 Type 3 和 Type 4 混合类型的路由泄露。
四、影响评估
1. 网络影响
A. 内部影响
- 迈阿密到亚特兰大的骨干链路出现拥塞
- 部分 Cloudflare 客户流量丢包率上升
- 跨越这些链路的流量延迟增加
B. 外部影响
- 多个外部网络的流量被意外引导至迈阿密
- 峰值时约 12Gbps 非下游流量被防火墙过滤规则丢弃
2. 流量分析
A. 被泄露的前缀示例
- 2a03:2880:f077::/48
- 2a03:2880:f091::/48
- 2a03:2880:f16f::/48
- 2a03:2880:f17c::/48
- 2a03:2880:f26f::/48
- 2a03:2880:f27c::/48
- 2a03:2880:f33f::/48
B. AS 路径示例
64112 22850 174 3356 13335 32934
这表示从 Meta(AS32934)到 Cloudflare(AS13335)再到 Lumen(AS3356)的异常路径。
graph LR
M[Meta AS32934] -->|对等互联| C[Cloudflare AS13335]
C -->|上游传输| L[Lumen AS3356]
C -.应该只向下游宣告.-> D[客户网络]
style L fill:#f9f,stroke:#333,stroke-width:2px
style L stroke:#ff0000五、解决方案与改进措施
1. 立即措施
A. 手动回滚
网络操作员手动回滚了错误的配置变更,并暂停了路由器的自动化系统
B. 代码回滚
从代码仓库中回滚了触发泄露的变更
2. 短期改进措施
A. 路由策略配置改进
- 修复导致路由泄露的路由策略自动化缺陷
- 实施基于 BGP 社区的额外保障措施,明确拒绝从提供商和对等节点接收的路由在外部导出策略中传播
- 在 CI/CD 流水线中添加自动路由策略评估,专门检查空或错误的策略条款
- 改进网络配置问题的早期检测以及自动化变更的负面影响
B. 监控增强
- 改进网络配置问题的早期检测机制
- 增强自动化变更的负面影响监控
3. 长期预防措施
A. 技术标准实施
- 验证路由设备供应商对 RFC9234(BGP 角色和 Only-to-Customer 属性)的实现,为功能推广做准备
- 这是独立于路由策略防止本地自治系统(AS)引起路由泄露的唯一方法
B. 行业协作
- 鼓励长期采用 RPKI 自治系统提供商授权(ASPA),网络可以自动拒绝包含异常 AS 路径的路由
- 积极参与 IETF 和基础设施社区(如 MANRS)加强路由安全的努力
六、经验总结
1. 教训
A. 配置管理
自动化系统虽然提高了效率,但配置变更的验证机制必须更加严格
B. 策略设计
路由策略的设计需要考虑边界情况,删除配置项时必须评估整体策略的影响
C. 监控告警
需要建立更完善的实时监控和告警机制,在路由泄露发生的第一时间发现
2. 行业意义
A. 透明度
Cloudflare 公开此次事件详情,为行业提供了宝贵的学习案例
B. 技术改进
推动 RFC9234 和 ASPA 等技术标准的实施,从架构层面预防路由泄露
3. 云英白
Cloudflare 对此次 BGP 路由泄露给用户、客户以及外部网络造成的影响表示诚挚的歉意。