Facebook大规模服务中断事件调查:BGP与DNS服务器离线所致

摘要:

BGP 是“边界网关协议”的缩写,作为一套允许在互联网上的自治系统(AS)之间交换路由信息的机制,其在刚刚过去的 Facebook 大规模服务中断事件中也扮演了重要的角色。Cloudflare 指出,BGP 使得互联网上工作的大型路由器能够拥有庞大的、不断更新的可能路由列表,从而将各个挽留过数据包送达最终的目的地。

1.png

(图自:Cloudflare

若缺乏 BGP,互联网路由器将不知如何正确工作。毕竟 Internet 的本意,就是在 BGP 绑定之下、一个套着另一个的网络。

以社交媒体巨头 Facebook 为例,BGP 使之能够向构成互联网的其它网络通告自身的存在。

2.png

BGP / SAN 简图

然而在周一的服务大中断事件中,Facebook 却乌龙般地没有宣告自身的存在,最终导致互联网服务提供商(ISP)和其它网络无法与之建立正确的连接。

TheVerge 编辑 Alex Castro 指出,BGP 又被称作互联网上的“邮局系统”或“空中交通管制员”,但他更喜欢将之看成一幅众人参与制作和更新的地图,以引导用户正确访问油管或脸书等网络服务。

3.png

Tom Strickx 与 Celso Martinho 在 Cloudflare 专栏文章中写道:每个单独的网络,都有一个被称作 ASN 的自治系统编号,而自治系统(AS)是具有统一内部路由策略的单个网络。

4.png

AS 能够产生前缀(比如其控制的一组 IP 地址)并传输,以让互联网知晓如何将信息送达特定的 IP 地址组,而 Cloudflare 的 ASN 编号就是 AS13335 。

5.png

然后每个 ASN 都需要借助 BGP 向互联网通告其前缀路由,否则将无人知晓该如何与之取得连接、以及在哪里找到它们。

在 UTC 协调世界时的 16:58,Cloudflare 开始留意到 Facebook 已停止公布其 DNS 前缀路由。在最不严重的情况下,这也意味着该公司的域名解析服务(DNS)已不可用。

6.png

由于 Cloudflare 的 1.1.1.1 DNS 解析器无法再响应询问 facebook.com 或 instagram.com 等网络服务的 IP 地址查询,大规模服务中断也开始变得无法避免。

7.png

与此同时,尽管仍有其它 Facebook IP 地址在被路由,但它们所能起到的效果也相当有限 —— 毕竟只要 DNS 服务躺下了,与 Facebook 相关的服务也变得实际上无法访问了。

8.png

Cloudflare 指出,其会跟踪全球网络中观察到的所有 BGP 更新与公告。然而 UTC 时间 15:40 左右,Cloudflare 留意到了 Facebook 的路由变更高峰,麻烦在这个时候开始集中爆发。

9.png

说到这,本次 Facebook 大规模服务中断的前因后果已基本疏离完成。首先是路由被撤回,接着 Facebook 的 DNS 服务器离线。

10.png

问题发生一分钟后,Cloudflare 工程师们开始思考为何 1.1.1.1 无法解析 facebook.com、甚至一度怀疑是自家公司的系统出现了问题。

0.jpg

视频截图(来自:USENIX | YouTube

最后,Santosh Janardhan 在 2021 年 10 月 4 日(本周一)更新的一篇文章中指出,该问题是由于 Facebook 在协调其数据中心之间网络流量的骨干路由器的配置变更所引发的。

NSDI 21  Running BGP in Data Centers at Scale - USENIX(via

感兴趣的朋友,可观看 NSDI '21 学术会议上的这段视频,来加强对于边界网关协议(BGP)的深度理解。

查看评论
created by ceallan