摘要
- CenturyLink 流传的事件原因记录称,运营商在 2020 年 8 月 30 日 10:04 UTC 发现了一个多市场事件。它将中断归因于一个违规的 FlowSpec 通告,该通告阻止了 BGP 在多个网络元素上正确建立。大约在 14:14 进行的全局配置更改阻止了该通告,运营商在 15:10 报告服务稳定并清除了警报。[1][3][6][8]
- 详细的运营商说明称,初始操作本应封锁客户的一个 IP 地址。用户界面与网络设备之间的故障导致接收到了通配符而非预期的特定地址,而二级过滤未能拒绝由此产生的宽泛规则。这些细节来自客户托管的 CenturyLink 中断说明副本,必须注明出处,而非作为独立审核的配置记录。[1][3]
- Cloudflare 从 10:03 UTC 开始观察到源站可达性错误,在 48 个连接城市中禁用了 CenturyLink 并将流量转移到其他提供商。它还测量到 BGP 更新量急剧增加,并提出了一个合理的循环假设:路由器反复建立会话,收到违规规则,然后再次失去 BGP。测量是直接的,循环是技术假说,因为运营商的私有路由器日志不公开。[2][11]
- ThousandEyes 观察到广泛的数据包丢失和与控制面受损一致的路由行为。其示例表明,备用连接本身不足:陈旧通告、路径偏好、对等密度和备用容量都会影响流量是否真正脱离故障传输。[3][4][5]
- FlowSpec 不仅仅是防火墙接口。它通过 BGP 分发流量匹配规则和操作。这使得验证、授权、分发范围、灰度测试、回滚、控制面保护以及带外恢复与接受该策略的网络范围成正比。[13][14][15][16][17]
- 问责是分散的,但并非模糊不清。CenturyLink 控制策略平台、接口、二级验证、网络分发、路由控制保护、回滚和事件证据。客户和同行控制其部分的多宿主、路径策略、撤回和备用容量,但他们无法修复运营商内部的故障。
- 持久的修复测试是有据可查的。禁用平台和修改过滤是已宣布的纠正措施。强有力的保证还需要在实验室中精确复现故障,有独立控制拒绝它,有边界分发,有受保护的管理访问,在控制面受损下恢复,以及后续针对同类故障的测试。[1][13][17][20]
一次客户封锁变成了骨干网范围的控制问题
理解这一事件最有益的方式是始于预期范围与有效权力之间的差异。
根据流传的 CenturyLink 事件原因记录,一个运营团队正在使用 FlowSpec 作为常规服务,为客户阻止来自一个 IP 地址的流量。这是一项常见的 DDoS 缓解任务。预期对象很窄:一个源、一个客户需求和一次有限的流量操作。实际对象要大得多。由此产生的通告传播到许多边缘设备,干扰了网络依赖的 BGP 会话。[1]
这种不匹配是问责的核心。用户界面可以显示一个地址,而下游策略编译器或路由器接收到通配符。二级过滤看似独立,却通过同样的有缺陷假设来解释畸形对象。分发系统可以将产生的规则视为普通规则,因为每个组件都看到有效的语法,尽管合并后的含义是灾难性的。因此,公开问题不仅仅是谁键入了什么。而是,一个具有全球影响力的系统如何表示、验证和约束一个看似本地请求背后的权力。
FlowSpec 尖锐地提出这个问题,因为它将流量策略与路由控制面结合起来。传统的访问列表通常与设备或接口相关联。FlowSpec 可以通过 BGP 携带匹配组件和操作,使网络能够在许多路由器上快速应用缓解措施。这种速度在容量攻击期间很有用。它也使得语义错误成为分发问题。同样的机制缩短了响应时间,也可能缩短了检测不安全规则的时间,防止其到达网络的很大一部分。[13][14][15]
协议不应被视为肇事者。RFC 5575 定义了事件发生时期的机制,RFC 8955 随后取代了 IPv4,RFC 8956 涵盖 IPv6。这些文档描述了编码、排序、验证和流量操作。它们不揭示 CenturyLink 的私有软件路径,也不证明每个实现的行为方式相同。一篇合理的文章必须区分协议能力和运营商治理。该事件涉及一个运营商如何实施和操作一条高权威的策略路径,而非发现每个 FlowSpec 部署都不安全。[13][14][15]
同样的区分避免了容易但薄弱的标题:“一次键入导致互联网瘫痪。”公开记录并未披露确切的命令字节,详细的运营商说明描述了接口与网络设备之间的故障,而非简单的输入通配符。该事件并未使所有网络无法访问。不同的观察者测量到不同的影响,一些网络绕过了问题。合理的发现更窄、更重要:一个客户范围的缓解请求获得了足够的权力,足以损害高度连接的全球骨干网的 BGP 建立。
这是一个通过网络基础设施表达的治理失败。相关控制包括模式验证、授权、范围显示、策略编译、二级检查、分发边界、路由反射器保护、控制面豁免、灰度测试、回滚和带外访问。仅靠计算路由器数量或声明存在冗余并不能评估其中任何一个。
时间线区分了检测、诊断和恢复
运营商时间线将事件识别置于 10:04 UTC。Cloudflare 的监测从 10:03 UTC 开始记录到源站可达性错误增加。一分钟的差异并非冲突;一个时间戳是外部测量触发,另一个是运营商的事件记录。两者都将开始置于同一狭窄窗口内。[1][2]
Cloudflare 看到通过 CenturyLink 的流量急剧下降。其自动化系统开始将流量转移到其他提供商,包括 Cogent、NTT、GTT、Telia 和 Tata。在 10:03 到 10:11 UTC 之间,它在双方网络连接的 48 个城市中禁用了 CenturyLink。转移并非在所有地方都瞬间完成,因为必须考虑备用容量。过快转移过多流量可能会使备用提供商过载,将一个运营商的故障变成级联问题。[2]
流传的 RFO 称,CenturyLink IP 网络运营中心在警报积累的同时投入了额外的技术和服务保障资源。早期行动并未隔离原因。大约在 14:00 UTC,运营工程发现了一个变得有问题的 FlowSpec 通告,它阻止了 BGP 正确建立。在 14:14,NOC 部署了一个全局配置更改来阻止该通告。随着更改的传播,BGP 会话恢复,警报清除。运营商在 15:10 报告了稳定性。[1]
SANS 互联网风暴中心捕获了同时期的 CenturyLink 语言,称路由问题阻止了 BGP 会话的建立,而一个高级配置调整使会话得以恢复。它还警告说,一些客户可能在运营商侧修复后需要重置本地设备或 BGP 会话。Outages 邮件列表存档保留了运营商观察到的 BGP 邻接或路由通告状态,而可用流量仍然受损。这些观察很重要,因为控制面状态可能看似部分活跃,而端到端可达性并非如此。[6][8]
ThousandEyes 通常将事件描述为持续近五个小时。后来的研究使用拓扑和服务分析,将事件置于大约 10:04 到 15:30 UTC 之间,取决于测量和恢复阈值。正确的方法不是强迫每个来源进入一个确切的持续时间。外部用户、同行、控制面收集器和运营商自身的警报测量了不同的层面。一个网络可能在每个客户路径重新收敛之前内部稳定,而一些端点可能在运营商宣布事件关闭之前恢复。[3][9][10]
这个时间线暴露了三个保证缺口。
第一个是从检测到诊断的时间。网络产生了足够的警报来要求额外资源,但原因在第一个外部错误后大约四小时才被识别。相关问题是运营商是否有所有活跃 FlowSpec 规则、其来源、有效匹配、分发范围和依赖控制流量的安全、可搜索表示。
第二个是在控制面受损下进行诊断。如果规则中断了 BGP 会话或管理可达性,正常工具可能在响应者需要时变得不可靠。一个能够全局分发策略的架构需要一个不依赖受损路径的移除路径。
第三个是恢复证据。阻止违规通告使 BGP 能够建立,但服务恢复也取决于路由重新收敛、同行行为和客户设备。运营商应区分“禁止规则被阻止”、“BGP 会话稳定”、“路由已收敛”、“流量正在流动”和“客户服务正常”。每个状态需要不同的测量。
FlowSpec 如何改变爆炸半径
BGP 是自治系统用来交换可达性信息的协议。BGP 发言者学习路由、应用策略并向同行通告选定的路径。FlowSpec 将该分发模型扩展到流量过滤。FlowSpec 路由可以使用源或目标前缀、协议、端口、数据包长度或 TCP 标志等字段描述流量,并可以关联丢弃或限速匹配数据包等操作。[13][14][15][16]
操作优势显而易见。在 DDoS 事件期间,提供商可以快速分发缓解措施,而无需在每台边缘路由器上编辑常规过滤。操作风险同样具有结构性。一条过于宽泛的规则可以在一个人登录每台设备之前被许多设备应用。如果它匹配 BGP 或网络管理所需的流量,该策略可能损害分发或移除它的手段。
Cloudflare 的公开分析为持续的 BGP 更新量提供了一个可能的解释。路由器可以建立 BGP,接收策略列表,到达违规的 FlowSpec 规则,然后失去 BGP 连接。一旦会话消失,动态规则可能不再持久;路由器可以重新连接并重复循环。每个循环可能产生更多通告并增加负载。Cloudflare 明确将其陈述为一种可能场景,同时等待更完整的 CenturyLink 证据。它应保持为假说,而非运营商确认的数据包追踪。[2]
ThousandEyes 在收到扩展的运营商信息后,在其分析中描述了类似的循环情况。它报告了跨地理分布的 CenturyLink 基础设施的总数据包丢失,以及与重复 BGP 中断一致的通告增加。由于 ThousandEyes 结合了直接测量、运营商材料和解读,文章应保持证据层面可见:数据包丢失和路由行为是观察到的;确切的内部序列取决于 CenturyLink 未完全发布的记录。[3]
RFC 4271 解释了会话稳定性的重要性。BGP 依赖持久的对等关系和 UPDATE 处理来维护路由状态。RFC 7606 后来改进了对格式错误的 UPDATE 消息的错误处理,RFC 4724 定义了优雅重启机制,旨在在某些控制面重启期间保持转发。这些文档提供了有用的背景,但两者都不是针对阻止会话本身的流量策略的通用防护。网络必须决定哪些流量是豁免的,哪些策略可以触及控制基础设施,以及如何移除失败的规则。[16][18][19]
因此,该事件将“爆炸半径”从隐喻转化为工程属性。策略的爆炸半径是在检测和回滚之前它能影响的设备、流量类别、同行和管理路径的集合。操作员可以通过设备组、前缀授权、协议排除、客户特定边界、分阶段部署、时限和速率控制来减小该半径。他们还可以保留一个不能被同一客户策略过滤的独立管理面。
全球骨干网应使这一属性明确。变更请求不仅应显示预期的地址,还应显示编译后的标准化匹配、将接受它的设备的数量和类别、它可能触及的协议、范围内的客户和同行、自动过期以及回滚路径。有效范围越大,所需的批准和测试证据就越强。
两次失败的检查仍然可能是同一个失败的假设
流传的 RFO 称,用户界面设计为拒绝通配符输入、空白输入和非地址输入。它还称,一个二级过滤旨在防止以这种方式阻止多个地址。然而,通配符命令通过了两者。二级过滤查找目标前缀,而通配符表示使其将命令解释为单个地址而非多个。[1]
这是假设名义独立而语义非独立的例子。两个控制可以在不同组件中实现,但仍然依赖关于对象如何表示的相同假设。第一个检查可能在翻译前验证用户输入。第二个可能验证翻译后的形式,但使用共享相同盲点的解析器。如果两者都将通配符视为单个有效对象,计数两个检查就高估了保护。
更强大的设计会比较独立的表示。
一个控制可以对照客户的授权前缀验证原始请求的地址。另一个可以编译规则并计算它匹配的数据包集合。第三个可以拒绝任何包含 BGP TCP 端口 179、路由反射器地址、管理前缀或客户分配之外基础设施的结果。第四个可以将有效匹配与原始人类可读请求进行比较,如果范围扩大则要求批准。第五个可以在灰度设备上安装规则并在更广泛分发前观察控制面健康。
因此,“二级过滤”一词应邀请一个问题:位置上的次要,还是逻辑上的独立?有效的防御不仅仅是另一个条件语句。它应该以不同方式失败,使用不同的真相来源,或验证不同的属性。前缀授权、集合基数、协议排除和模拟有效范围是独立的属性。结合它们使得共享的解析器错误不太可能击败每个保障。
故障关闭行为也很重要。如果规则无法明确规范化,安全的响应是拒绝,而非宽泛的解释。如果预期范围和有效范围不同,分发应停止。如果策略会触及控制面流量,应要求高权限异常流程。如果验证服务不可用,系统不应假设紧迫性允许绕过。
在 DDoS 缓解中,紧迫性是可预测的条件。这使其成为设计的一部分,而非暂停设计的理由。操作员需要一条快速的路径,因为它经过预验证和约束,而不是因为它跳过独立审查。客户请求可以映射到预先授权的前缀和操作模板。规则可以自动过期。紧急覆盖可以记录并局限在小的灰度集内,然后再广泛发布。
公开记录称,CenturyLink 完全禁用了 FlowSpec 平台进行测试,并修改了过滤以禁止通配符。这些措施针对报告的原因。它们本身并不显示两个控制是否变得语义独立,是否在编译后计算范围,或者控制面流量是否受到保护。这些是区分纠正措施与已证明不重复的证据问题。[1][20]
高度互联的运营商产生系统性依赖
CenturyLink 收购了 Level 3,AS3356 仍然是互联网路由系统中连接最多的传输网络之一。确切商业和技术关系各不相同,但实际结果是,许多网络通过包含 AS3356 的路径到达目的地,即使两端都不认为自己是 CenturyLink 零售客户。RIPEstat 和公共路由档案为该网络角色提供了背景。[11][12]
这很重要,因为骨干网的问责不限于直接发票。另一家提供商的客户仍然可能依赖于若干跳之外的传输关系。云服务可以转移其入站路径,但可能仍然无法到达单宿主在故障运营商后面的源站。同行可以降低 CenturyLink 的优先级,而远程网络继续选择通过它的陈旧或更有吸引力的路径。运营商的有效责任遵循其网络创建的依赖关系,而不仅仅是能打开支持票的用户集合。
Cloudflare 的缓解措施既展示了多样性的力量,也展示了其局限性。它连接到多个大型网络,并能够在 48 个城市快速禁用 CenturyLink。该措施大幅降低了错误峰值。然而,一些 Cloudflare 客户仍然无法访问,因为他们的源站服务器没有可用的路径避开 CenturyLink,或者因为运营商继续通告将流量引入故障路径的路由。[2]
ThousandEyes 比较了结果不同的客户。OpenTable 在事件大部分时间遭受高数据包丢失。GoToMeeting 激活了 GTT 作为备用提供商,并改善了可达性,即使 Level 3 继续通告其前缀。路由不一定更具体;偏好取决于远程网络的视角和替代对等的密度。该示例并非通用规则,即两个提供商保证连续性。它表明物理链路、BGP 策略、通告状态和容量必须一致。[3]
因此,“多宿主”一词可能隐藏几种常见模式。
两条电路可以通过同一管道进入同一建筑。两个提供商可以从同一骨干网购买上游传输。两条通告路径可能可见,而一条陈旧路径仍然优先。备用提供商可能缺乏能力应对突然的全球转移。两个链路可能依赖同一 DNS、路由服务器、管理门户或客户边缘路由器。组织也可能缺乏能在事件期间更改策略的授权人员。
正确的保证证据是端到端的。客户应了解正常和故障条件下的自治系统路径、相关物理路由、本地偏好和 MED 行为、每个提供商通告的前缀、可用的撤回或社区控制、测试过的容量以及故障切换的触发条件。监控应来自两个提供商外部,以便检测可见但不携带数据包的路由。
客户和同行对这些控制负有责任,但他们的责任并不消除运营商的责任。客户可以设计更好的多样性;它不能阻止 CenturyLink 的内部 FlowSpec 平台损害多个元素间的 BGP。共享依赖创造了分层问责,而非相等问责。
控制面保护必须在其分发的策略中幸存
任何网络范围的自动化系统都需要一个受保护的路径用于观察和逆转。在这个事件中,策略分发机制和 BGP 会话行为变得纠缠。这应促使操作员询问,当策略错误时,网络是否仍能保持可治理性。
第一个保护是范围。客户触发的 FlowSpec 规则应仅针对客户的前缀、预期的流量类别和批准的操作进行授权。它们不应匹配基础设施地址或控制协议,除非有单独的明确工作流允许。验证应使用编译后的规则,而不仅仅是请求的输入。
第二个保护是分阶段。规则可以先发送到实验室表示,然后到灰度边缘,再到有限区域,最后到更广泛的设备组。系统应在每一步监控 BGP 会话数、路由反射器负载、管理可达性、数据包丢失和客户结果。为秒级设计的缓解措施不能在每个阶段等待数小时,但它可以使用自动阈值和即时回滚。
第三个保护是带外控制路径。操作员需要不依赖同一传输、路由会话或过滤域的管理访问,适用于普通客户流量。配置归档和回滚工具必须保持可达。全局紧急阻止应通过一个其自身数据包不会被不安全规则捕获的渠道进行。
第四个保护是有限的生存期。缓解措施可以在证据审核后过期,除非续订。自动过期限制了被遗弃或误解规则的持久性。它不能替代回滚,因为五分钟的灾难性规则仍然不可接受,但它减少了长期暴露,并强制所有权保持明确。
第五个保护是状态可见性。响应者应能列出每个活跃的 FlowSpec 规则、其来源、请求者、授权、标准化匹配、操作、分发集、安装状态、年龄和回滚状态。他们还应看到哪些设备拒绝了它以及原因。没有这个清单,诊断将变成在已经产生异常数量警报和更新的网络中搜索。
第六个保护是受保护的基础设施策略。路由反射器、BGP 发言者、DNS、时间同步、认证、日志记录和管理系统不是普通的客户目的地。网络应定义客户规则是否以及通过何种异常控制能够影响它们。保护必须涵盖数据包转发以及用于计算和分发策略的系统。
RFC 7454 为 BGP 提供了操作安全指南,RFC 7606 和 RFC 4724 涵盖了错误处理和重启的方面。来源集中的 NANOG 运营商演示讨论了 FlowSpec 故障模式和实施经验。这些来源有助于定义问题和控制。它们不能证明 CenturyLink 当前的架构。认证需要当前的、运营商特定的证据。[17][18][19][20]
变更控制应衡量有效的网络权力
传统的变更表格通常按设备数、维护窗口或服务所有者对工作进行分类。FlowSpec 提示了另一个维度:有效权力。一个可以在数百个边缘路由器上匹配任何数据包的请求,比局限于一个测试系统的更大文本更改拥有更多权力。
基于权力的变更记录将至少包含五个视图。
意图视图用普通语言说明客户请求和业务目的。在此案例中,声明的意图是阻止来自一个地址对一名客户的流量。[1]
编译视图显示设备将收到的确切标准化 FlowSpec 组件和操作。这是通配符展开、缺失字段和解析器差异变得可见的地方。
影响视图识别可能受影响的设备、区域、同行、前缀和流量类别。它应计算最坏情况范围,而非假设规则按预期工作。
安全视图列出受保护的控制流量、授权边界、灰度步骤、回滚条件、过期和独立验证器。
证据视图记录谁批准了有效范围、运行了哪些测试、哪个设备首先接受了策略、哪些遥测发生了变化以及规则何时被移除。
这种方法将审查从“语法有效吗?”转变为“如果每个组件都完全按编码行为,网络将行使什么权力?”它还使自动化可审计。如果有效范围保持在预先授权的边界内,机器可以批准常规规则。当编译范围超出时,需要人工参与。两条路径都不应接受歧义。
同行审查应聚焦于差异。审查者需要看到提议的有效规则与已知安全模板有何不同,而不是在时间压力下解析整个配置。系统可以突出显示扩展的前缀集、添加的协议、更宽的分发组和缺失的过期。审查者应拥有不受事件紧迫性或客户重要性削弱的停止权限。
回滚必须在失去普通控制面的情况下进行测试。如果网络无法接收移除命令,存储之前的规则是不够的。安全设计可以预先定位一个终止开关,维护一个单独的管理通道,或将初始规则限制在响应者可以物理或逻辑隔离的域。
该事件也说明了为什么维护窗口是一个不完整的保护。中断发生在北美周日上午,这个时段看似风险较低。一级主干网拥有跨时区的客户,并承载没有安静时段的服务。更重要的是,控制面故障可能会损害响应所需的人员和门户。爆炸半径和可逆性比时钟更重要。
可观测性必须将 BGP 状态与服务可达性相结合
在路由事件期间,操作员可能会淹没在技术上准确但操作上不完整的信号中。BGP 会话可以在数据包被丢弃时建立。前缀可以在路径不可用时保持通告。路由器可以通过管理访问可达,而客户流量失败。全局路由收集器可以显示更新而不揭示每个转发结果。
Cloudflare 结合了源站错误、按提供商的流量和 BGP 更新数据。ThousandEyes 结合了路径可视化、数据包丢失和通告行为。NetForecast 使用基准网络测量用户体验。Outages 列表增加了来自运营商在其边缘看到症状的报告。每个来源观察了不同的层面。它们一起产生比任何一个仪表板更强的事件图像。[2][3][7][8][11]
骨干网运营商应整合至少四个证据层。
配置层记录预期和有效的策略、分发状态和设备接受情况。
控制面层记录 BGP 会话、路由反射器健康、UPDATE 量、路由搅动和收敛。
转发层记录数据包丢失、延迟、下一跳以及流量是否到达预期的对等或客户边缘。
服务层记录客户是否能完成实际交易、联系支持和使用关键应用。
告警关联应按时间和依赖关系连接这些层。如果新的 FlowSpec 策略之后出现 BGP 会话丢失和跨同一设备集的数据包丢失峰值,系统应立即将该因果候选情况表面化。如果客户门户通过同一骨干网变得不可达,事件指挥应切换到独立支持渠道,而非等待普通工具。
外部测量对于可能继续通告陈旧或不可用路径的网络尤其重要。内部遥测可以说电路已启动或路由存在。外部探测揭示远程网络是否选择该路径以及数据包是否返回。运营商可以运营自己的外部观察点,并保留第三方证据。
目标不是收集所有可能的指标。而是快速回答有界问题:什么改变了?哪些设备收到了它?哪些会话失败了?哪些前缀保持通告?数据包在哪里被丢弃?哪些替代路径有容量?响应者还能访问控制面吗?什么证据表明修复到达了每个受影响的域?
支持和通信是恢复能力的一部分
流传的 RFO 称,许多受影响的客户无法打开故障工单,因为呼叫量极大,并且 CenturyLink 客户门户也受到影响。这个细节在操作上意义重大。提供商可以有工程师修复核心,而客户缺乏可用的路径来报告症状、接收指示或将运营商故障与自身本地问题区分开来。[1]
因此,支持能力是网络弹性控制。门户不应与其支持的服务共享所有相同的路由依赖。状态页面和通知渠道应通过独立基础设施可达。大客户和同行需要预先建立的联系人和机器可读的更新,不依赖于过载的通用队列。
通信也影响技术恢复。客户可能需要重置 BGP 会话、撤回路由、更改本地偏好或激活备用容量。这些行动有风险。建议应指明谁应行动、哪些证据应触发行动、预计有什么副作用以及如何逆转。宽泛的指令如“重启设备”如果没有范围界定,可能会破坏有用的状态或造成更多搅动。
CenturyLink 在事件期间的公开声明识别了 IP 中断,后来是路由问题。外部分析师随着测量积累提供了更多细节。事件后记录提供了更深入的原因和纠正措施。这种进展是正常的,但每次更新应标注信心和来源。事件沟通可以说 FlowSpec 通告是主要原因,而不声称完整的故障链已知。
客户还需要一个将运营商稳定性与完整路径正常化分开的结束声明。运营商可以报告违规规则何时被阻止、会话稳定。它还应报告路由收敛是否继续进行、某些同行是否需要本地操作、门户是否恢复以及正式事件原因分析何时可用。
修复声明需要可复现的测试
流传的 RFO 称,CenturyLink 完全禁用了 FlowSpec 平台,等待广泛测试,并将在此期间使用其他缓解工具。它还称,二级过滤正在更改以禁止通配符输入,修改后的平台将在测试后在计划内的、不影响服务维护期间返回。[1]
这些步骤是合理的。禁用路径消除了直接暴露。在实验室复现问题确立了团队可以触发并观察故障。修改过滤解决了报告中的绕过。剩下的问责问题是修复后的系统是否作为集成控制进行了测试,而不仅仅是一个解析器拒绝了一个通配符。
一个强大的验证场景应从客户范围的请求开始,并故意执行多种畸形表示:显式通配符、空白字段、宽泛前缀、替代编码、解析器边界值和匹配控制流量的规则。接口应拒绝不安全输入。编译策略验证器应独立计算有效范围。前缀授权应拒绝客户分配之外的资源。保护协议检查应阻止 BGP 和管理匹配。灰度应只接收通过每个门的规则。
测试随后应引入故障。验证器应变为不可用。灰度应丢失 BGP 会话。路由反射器应显示异常搅动。用于回滚的管理路径应保持可达。自动化应停止传播并移除规则,而不依赖受损的客户面。操作员应能从一条证据记录中识别请求、编译对象、安装设备和回滚状态。
最后阶段应测试规模。规则应分发到控制但代表性的设备集,同时独立探针监控控制面和转发结果。团队应证明回滚到达所有设备,且陈旧策略不会隐藏。测试应记录时间、阈值、失败和重新测试结果。
独立验证不需要发布可利用的配置。评估者可以确认测试覆盖了报告的通配符路径、独立范围计算、受保护流量、灰度、受损 BGP 下的回滚和带外访问。公开声明可以披露场景、通过标准、日期和残余风险,同时保持地址和拓扑机密。
区分完成和有效性至关重要。“过滤已修改”是一个完成声明。“修改后的控制拒绝了故障的每种表示,并在目击测试下限制了爆炸半径”是一个有效性声明。问责要求在高度权威的平台返回常规使用之前提供后者。
问责矩阵
| 阶段 | 主要控制所有者 | 所需控制 | 应存在的证据 | 公开界限 |
|---|---|---|---|---|
| 客户请求 | CenturyLink 产品运营 | 将缓解措施绑定到授权客户资源和预期流量 | 请求记录、前缀授权、标准化意图 | 具体客户和请求地址不公开 |
| 输入 | CenturyLink 工具所有者 | 拒绝通配符、空白、歧义和超出范围的值 | 模式测试、负面案例、解析器版本记录 | 确切的接口和解析器不公开 |
| 编译 | CenturyLink 策略平台 | 计算有效数据包匹配并与意图比较 | 编译规则、语义差异、基数和协议检查 | 确切的畸形命令不公开 |
| 独立验证 | CenturyLink 架构/安全 | 通过独立逻辑路径检测广泛范围 | 独立验证器设计、故障注入结果 | 公开证据不证明语义独立性 |
| 授权 | CenturyLink 变更所有者 | 升级高权威或影响控制面的规则 | 批准记录、范围显示、停止权力 | 个人决策所有权不公开 |
| 分阶段 | CenturyLink 网络运营 | 灰度发布和有限分发,然后全球推广 | 设备组计划、健康阈值、自动停止 | 2020 年的分发拓扑不公开 |
| 控制面保护 | CenturyLink 路由架构 | 豁免或单独治理 BGP、路由反射器和管理 | 受保护前缀/协议策略、隔离测试 | 私有地址和拓扑应保密 |
| 检测 | CenturyLink NOC | 关联策略部署、BGP 搅动、数据包丢失和服务影响 | 时间线、活跃规则清单、告警关联 | 完整告警流不公开 |
| 回滚 | CenturyLink NOC 和工程 | 通过独立路径移除不安全策略 | 终止开关、带外访问测试、设备确认 | 详细恢复访问具有安全敏感性 |
| 对等互联 | CenturyLink 和同行 | 协调解除对等、撤回和收敛证据 | 同行时间线、路由状态、流量恢复 | 完整双边记录是私人的 |
| 客户连续性 | 客户和托管提供商 | 维护策略和容量独立的备用路径 | AS 路径测试、物理多样性、故障切换演练 | 客户设计和损失各不相同 |
| 通信 | CenturyLink 服务保障 | 保持状态、工单和关键联系人可达 | 独立状态路径、更新日志、联系人测试 | 公开数据包仅有部分支持证据 |
| 验证 | CenturyLink 和独立评估者 | 复现故障并证明有界的不重复 | 测试计划、目击结果、残余风险声明 | 长期独立测试证据不公开于此 |
矩阵防止责任坍缩为“互联网中断”一词。CenturyLink 控制策略系统和内部骨干网。同行控制其互连。客户控制其自身边缘策略和多样性。测量组织控制证据收集。这些责任相互影响,但只有运营商能重新设计将狭窄请求转变为广泛故障的内部路径。
它也防止了另一个错误:假设大型提供商对每个客户后果负责。单宿主客户接受与经过测试的多宿主客户不同的连续性姿态。保持陈旧偏好的同行可能延长路径。缺乏备用源站连接的云服务可能在其它路径恢复后仍不可达。问责应遵循对每个层面的实际控制,而非无限制扩展。
公开记录无法证明的内容
来源集足够强,足以建立事件、其网络机制(高层)、广泛影响和主要控制问题。它不是完整的法医记录。
原始的 CenturyLink RFO 在此作为客户托管的供应商说明副本,而非稳定的运营商发布。多个同时期和后来的来源重复其主要发现,这提高了信心,但仍需要注明出处。未来的运营商托管或监管机构提交的记录可能取代此数据包中的措辞。
Cloudflare 的 BGP 循环解释在技术上合理且与观察到的更新一致,但它不是披露的 CenturyLink 数据包捕获。文章不得声称每个路由器都精确重复了该循环。ThousandEyes 提供了额外的观察和解读,但它也缺少运营商完整的私有遥测。
RouteViews 记录对收集器可见的更新,而非每个内部路由反射器状态或转发决策。RIPEstat 提供 AS 和路由背景,而非根因判决。APNIC 和 CNSM 研究在事件后应用测量方法;它不分配私有决策所有权。RFC 定义协议行为和良好实践;它们不证明命名运营商的合规性。
此数据包中没有来源证明个人的疏忽、意图或纪律处分结果。没有来源证明每个客户的确切财务损失。没有来源确立敌对行为者入侵了 CenturyLink。没有来源独立验证了随后几年的每项补救措施。
这些空白应保持可见,因为它们识别谁持有缺失的证据。CenturyLink 可以提供配置谱系、验证设计、实验室复现、推广政策和测试结果。同行可以提供双边路由和对等解除记录。客户可以提供中断和故障切换证据。独立评估者可以在不披露敏感拓扑的情况下验证补救措施。
可重用的骨干网策略问责测试
CenturyLink 事件为任何能够大规模分发流量策略的运营商提供了一个实际测试。
意图:人类请求是否限于授权资源并在表述上明确?
编译:系统能否在每个解析器、通配符和默认值之后显示确切的有效匹配?
权力:批准是否随着规则能影响的设备数、流量类别和控制系统而增加?
独立性:次要控制是否验证了不同的属性或使用了不同的真相来源?
受保护的路径:客户策略能否触及 BGP、路由反射器、管理、认证、DNS、日志或时间系统?
分阶段:规则是否可以被灰度发布并在控制面或服务健康变化时自动停止?
回滚:响应者能否不依赖受损面而移除它?
可见性:事件指挥能否看到每个已安装的规则、设备状态、会话影响和客户结果?
依赖:同行和客户是否已测试备用路径在策略上独立且规模适当?
证明:实际报告的故障是否已被复现,并且修复后的控制在现实条件下被目击?
一个无法回答这些问题的运营商不应将全局策略分发能力视为常规自动化。近期没有事件并非语义边界安全的证据。
结论
CenturyLink 的 2020 年中断之所以重要,并非因为 FlowSpec 是外来的。它之所以重要,是因为一个狭窄的操作意图获得了骨干网级别的权力。
公开证据显示了一个违规的 FlowSpec 通告、BGP 建立故障、广泛的可达性丧失以及一个恢复稳定的全局配置行动。它还显示,外部网络根据对等互联、路径偏好、陈旧通告和备用容量经历了不同的故障。证据未显示的同样重要:确切的命令、完整的内部拓扑、个体决策链和独立的长期修复证明。
问责遵循这些界限。CenturyLink 控制着翻译、验证和分发策略的平台。它控制着路由控制面和恢复路径是否受到该策略的保护。客户和同行控制着部分自身的连续性,但他们无法修复 AS3356 的内部机制。标准和测量组织提供了协议和观察,而非操作权。
因此,修复标准是具体的。一个高爆炸半径的策略系统应证明有效范围匹配意图、独立控制拒绝语义扩展、控制流量保持受保护、推广有界、回滚在控制面受损下幸存以及外部可达性确认恢复。没有这些证据,“冗余骨干网”描述了拓扑,同时将权力集中在一条脆弱的路径上。
持久的教训不是减缓每项缓解措施。而是在紧迫性到来之前通过约束权力使速度安全。客户封锁应保持为客户封锁。当它可能变成全局路由事件时,网络不仅遭受了配置错误。它暴露了一个需要重建和证明的问责设计。
来源
- https://qsgit.com/wp-content/uploads/2020/08/QSG_RfO.pdf
- https://blog.cloudflare.com/analysis-of-todays-centurylink-level-3-outage/
- https://www.thousandeyes.com/blog/centurylink-level-3-outage-analysis
- https://www.thousandeyes.com/blog/ep-21-under-the-hood-on-the-centurylink-level-3-outage
- https://www.thousandeyes.com/blog/2020-accelerated-internet-dependency-europe
- https://isc.sans.edu/diary/CenturyLink%2BOutage%2BCausing%2BInternet%2BWide%2BProblems/26518
- https://www.netforecast.com/news/centurylinks-nationwide-outage-as-measured-by-netforecasts-benchmark-reporting-network/
- https://lists.outages.org/archives/list/outages%40outages.org/2020/8/?count=50
- https://conference.apnic.net/53/assets/files/APNT374/detecting-internet-routing-outages-with-topology-and-service-analysis_v2.pdf
- https://web-backend.simula.no/sites/default/files/2023-10/BGP_incidents_CNSM.pdf
- https://archive.routeviews.org/bgpdata/2020.08/UPDATES/
- https://stat.ripe.net/resource/AS3356
- https://www.rfc-editor.org/rfc/rfc8955.html
- https://www.rfc-editor.org/rfc/rfc8956.html
- https://www.rfc-editor.org/rfc/rfc5575.html
- https://www.rfc-editor.org/rfc/rfc4271.html
- https://www.rfc-editor.org/rfc/rfc7454.html
- https://www.rfc-editor.org/rfc/rfc7606.html
- https://www.rfc-editor.org/rfc/rfc4724.html
- https://storage.googleapis.com/site-media-prod/meetings/NANOG92/5213/20241022_Ryburn_Bgp_Flowspec_Doesn_T_v1.pdf
会员简报
深度档案背景
使用对应会员级别登录后,可解锁完整简报和来源说明。

