当地时间7月8日凌晨,加拿大运营商Rogers发生重大网络故障,导致全网无线、有线互联网服务中断。直到7月9日下午,Rogers才宣布网络和系统已接近全面恢复。
路由器升级导致BGP中断?
“我们在对核心网络进行维护升级后,一些路由器在周五早上出现了故障,并且该故障引发流量过载,导致整个系统关闭和网络无法运行。”
7月9日,Rogers首席执行官Tony Staffieri在道歉信中表示:“问题发生后,我们的技术人员一直通过更换问题软件、设备以及更改网络配置来努力恢复网络。”
网络中断后到处蹭网的Rogers用户
事故发生后,Cloudflare公司的全球互联网流量监控显示,从UTC时间7月8日08:45 左右开始,来自Rogers AS的互联网流量几乎完全丢失。
数据显示,从08:15到21:45间,Rogers AS多次通过BGP Update消息公布可用路由和撤销路由,直到7月9日01:00之后,Rogers的互联网流量才开始逐渐恢复。
Rogers在17个小时内频繁BGP通告和撤销,意味着其内部核心网络故障一直未能解决。
综合以上信息推断,此次事故原因可能为:
Rogers在对骨干网路由设备进行升级时,负责执行BGP协议的路由器出现了故障,导致Rogers运营的所有网络与互联网失联。
网友调侃:Rogers正在努力修复故障
为何故障这么严重?
互联网Internet,实际上是“interconnected network”的缩写,它由不同的网络互联而成。这些组成Internet的“网络”称为AS(自治系统),准确的定义为具有统一路由策略的巨型网络或网络群组。
每一家提供互联网接入服务的ISP运营商都拥有自己的AS和ASN(AS编号),比如中国电信、中国联通等运营商都有自己的ASN。我们的手机、计算机等终端设备要连接到Internet,都需首先连接一个AS。
BGP,Border Gateway Protocol(边界网关协议),指用于不同AS之间实现互联的协议,是目前Internet骨干网上常用的核心路由协议,其最主要功能在于控制路由传播和选择最好的路由。
通过BGP协议,AS之间会不断相互“交谈”,以确定数据在全球互联网上的最佳路由。
然而,当Rogers的骨干路由器在升级时出现故障后,相当于其AS采用BGP协议告诉全球互联网:“您好,我们不存在了,请绕着我走,不要跟我说话!!!”
然后,所有互联网流量都无法进出Rogers拥有的任何网络。也就是说,所有Rogers网络下的终端设备与互联网隔离了。
同样不幸的是,BGP协议和AS互联相当复杂,BGP管理的路由信息非常庞大且来源复杂,路由更新和传播慢,如果出了大问题,恢复起来往往需要数小时甚至数天。而Rogers在Internet上只注册了一个AS。即使有两个AS,尝试转移到另一个AS也可能需要很长时间,并且可能会导致其他问题。
网友调侃:手机变砖头
一些疑问?
为提供连续、稳定的互联网连接服务,按理说,如此重要的网络节点都会采用冗余备份架构,如此重要的网络升级也一定有周全的回退方案。
但Tony Staffieri在致歉信中表示“我们断开了特定设备的连接,并重定向了流量,这使得我们网络和服务随着时间推移而逐渐恢复”。
这让人感觉此次故障并没有回退或切换到备用的可能性,以致于他们宁可断开设备,让全网终端无法接入互联网。
此次升级应该也没有类似A/B测试的先小范围测试验证、再整体升级的机制,否则,不至于造成全网范围大故障。
此次事故也引发了行业人士热烈讨论。
一位加拿大网友留言道:
AS的外围和网络内部都有路由器,当发生链路增加、减少、拥塞等情况时,它们会相互告知,并决定替代路径。如果你对你自己的AS知之甚少,可能会将BGP错误配置为发送本不该发送的更新,停止侦听本该获取的更新,或者接受本不应该接受的数据包,等等。这需要通过配置ACL(访问控制列表)、地址前缀列表等来防止错误信息在网络传播。Rogers可能没有做好配置和控制好更新。
之所以会出现这样的问题,据我所知可能是因糟糕的架构设计、维护经验不足、运维费用低、以及没有完善的流程与机制等原因造成。
也有网友评论:
可能是对来自单一供应商的设备打补丁时,导致主设备和备份设备都出现了问题。为什么Rogers不采用两家或多家供应商设备呢?这样不仅不用担心主备都挂了,而且还能通过加大竞争提升产品和服务质量。
“以后我们将增加网络和系统冗余,继续对网络进行重大投资,加强技术系统和测试,以提升网络稳定性。”对于这些疑问,或许从Tony Staffieri的致歉信中能找出些答案。