cat case/PM-2022-0018.md

Cloudflare 2022-06-21 MCP 骨干网 BGP 前缀撤销错误致 19 个数据中心下线

P0 · MCP 架构 BGP 前缀撤销错误使 19 个最繁忙数据中心下线,全球约 50% HTTP 请求受影响,Discord/Steam 等受影响

summary

2022-06-21 06:27 UTC,Cloudflare 在将其最繁忙的 19 个数据中心迁移到更具弹性的 Multi-Colo PoP(MCP)架构时,一次前缀广播策略变更中配置语句的顺序调整,导致撤销了一个关键前缀子集,使这些数据中心从互联网上不可达。虽仅影响约 4% 的位置,但它们处理了 Cloudflare 全球约 50% 的 HTTP 请求,造成大面积中断。

timeline

03:56 UTC 在旧架构位置部署变更(未受影响)。06:17 UTC 在繁忙但非 MCP 位置部署。06:27 UTC MCP 位置配置变更生效,19 个数据中心开始下线。06:32 UTC 内部宣布事件。06:51 UTC 在路由器测试验证。06:58 UTC 定位根因并开始回退,第一个数据中心恢复。07:42 UTC 全部数据中心恢复运行(部分恢复因工程师彼此覆盖回退而延迟,08:00 UTC 事件结束)。

root_cause

在部署前缀广播策略变更时,一个配置语句的顺序重排导致 Cloudflare 撤销了一个关键的前缀子集。这些前缀对应的 IP 因此从互联网撤销,受影响数据中心不可达;同时该错误还切断了工程师连接受影响数据中心以恢复问题的通道,被迫使用备份程序接管。

amplifiers

① 集中度风险:19 个最繁忙站点虽只占 4% 位置,却承载 ~50% 流量。② 运维通道自断:错误配置同时阻断了工程师用于恢复的常规连接。③ 回退竞争:工程师互相覆盖彼此的回退操作,使问题间歇性复现,拖长恢复。

mitigation

通过备份程序接管受影响数据中心,逐位置回退错误的前缀广播策略;06:58 起第一个恢复,07:42 全部恢复。后续强化 MCP 架构部署的校验与回退流程。

lessons

BGP 前缀变更必须先在非核心位置验证;关键前缀撤销应有保护(dry-run/审批);运维恢复通道不能依赖被变更影响的同一网络平面。

checklist

① BGP 策略变更分级发布+前缀影响预检。② 保留独立带外运维通道。③ 回退操作加锁避免并发覆盖。④ 对承载高比例流量的核心位置单独灰度。