[译]了解Facebook是如何从互联网上消失的

原文 Understanding How Facebook Disappeared from the Internet | Cloudflare

"Facebook不可能瘫痪,对吗?",我们想了一秒钟。

今天 1651 (UTC),我们开了一个内部事件,题为 "Facebook 的 DNS 查询返回 SERVFAIL",因为我们担心我们的DNS解析器 1.1.1.1 出了问题。 但当我们准备在我们的公共状态页面上发布时,我们意识到发生了其他更严重的事情。

社交媒体迅速爆发,报道了我们的工程师也迅速确认的情况。事实上,Facebook及其附属的服务 WhatsApp 和 Instagram 都已瘫痪。他们的 DNS 名称已经停止解析,他们的基础设施IP也无法访问。这就像有人一下子从他们的数据中心 "拔掉了电缆",并将他们与互联网断开连接。

这怎么可能呢?

认识BGP

BGP是边界网关协议的缩写。它是一种在互联网上的自治系统(AS)之间交换路由信息的机制。使互联网运行的大型路由器拥有庞大的、不断更新的可用路由列表,这些路由可用于将每个网络数据包传送到其最终目的地。没有BGP,互联网上的路由就不知道该怎么做,互联网也就无法运行。

互联网实际上是一个“网络组成的网络”,它是由BGP捆绑在一起的。BGP允许一个网络(例如Facebook)向构成互联网的其他网络宣告它的存在。当Facebook没有宣告它的存在时,ISP和其他网络就找不到Facebook的网络,因此它就不可用。

各个网络都有一个ASN:一个自治系统号码。自治系统(AS)是具有统一内部路由策略的单个网络。AS可以产生前缀(比如说它们控制一组IP地址)以及传输前缀(比如说它们知道如何到达特定的IP地址组)。

Cloudflare的ASN是AS13335。每个ASN都需要使用BGP向互联网公布其前缀路由;否则,没有人会知道如何连接以及在哪里找到我们。

我们(Cloudflare)的学习中心对什么是BGPASN以及它们如何工作有一个很好的概述。

在这个简化图中,你可以看到互联网上的六个自治系统,以及一个数据包从起点到终点可能使用的两条路线。AS1→AS2→AS3是最快的,AS1→AS6→AS5→AS4→AS3是最慢的,但如果第一条线路失败失败,数据包也可以传输。

在16时58分,我们注意到,Facebook已经停止公布其DNS前缀的路由。这意味着,至少Facebook的DNS服务器是不可用的。正因为如此,Cloudflare的1.1.1.1 DNS无法再响应查询facebook.com或instagram.com的IP地址。

route-views>show ip bgp 185.89.218.0/23
% Network not in table
route-views>

route-views>show ip bgp 129.134.30.0/23
% Network not in table
route-views>

同时,其他的Facebook IP地址仍在路由中,但并没有什么用,因为在没有DNS的情况下,Facebook和相关服务实际上是不可用的。

route-views>show ip bgp 129.134.30.0   
BGP routing table entry for 129.134.0.0/17, version 1025798334
Paths: (24 available, best #14, table default)
  Not advertised to any peer
  Refresh Epoch 2
  3303 6453 32934
    217.192.89.50 from 217.192.89.50 (138.187.128.158)
      Origin IGP, localpref 100, valid, external
      Community: 3303:1004 3303:1006 3303:3075 6453:3000 6453:3400 6453:3402
      path 7FE1408ED9C8 RPKI State not found
      rx pathid: 0, tx pathid: 0
  Refresh Epoch 1
route-views>

我们跟踪我们在全球网络中看到的所有BGP更新和公告。在我们的scale上,我们收集的数据让我们看到了互联网是如何连接的,以及流量要从哪里流向地球上的各个地方。

BGP UPDATE 消息通知路由器你对前缀广告所做的任何改变,或者完全撤销前缀。在检查我们的时间序列BGP数据库时,我们可以清楚地看到从Facebook收到的更新数量。通常情况下,这个图表是相当安静的:Facebook不会每分钟对其网络进行大量的更改。

但在UTC时间15:40左右,我们看到Facebook的路由变化达到了一个高峰。这就是麻烦开始的时候。

如果我们把这个视图按照路由的公布和撤销来划分,我们就能更好地了解发生了什么。

路由被撤销,Facebook的DNS服务器下线,问题发生一分钟后,Cloudflare的工程师在一个房间里想,为什么1.1.1.1不能解析facebook.com,并担心这是我们系统的某种故障。

随着这些撤销,Facebook及其网站实际上已经与互联网断开了联系。

DNS受到影响

作为这一事件的直接后果,世界各地的DNS解析器停止了对其(FB)域名的解析。

➜  ~ dig @1.1.1.1 facebook.com
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 31322
;facebook.com.			IN	A
➜  ~ dig @1.1.1.1 whatsapp.com
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 31322
;whatsapp.com.			IN	A
➜  ~ dig @8.8.8.8 facebook.com
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 31322
;facebook.com.			IN	A
➜  ~ dig @8.8.8.8 whatsapp.com
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 31322
;whatsapp.com.			IN	A

发生这种情况是因为DNS,像互联网上的许多其他系统一样,也有其路由机制。当有人在浏览器中键入https://facebook.com URL时,负责将域名翻译成实际IP地址进行连接的DNS解析器,首先检查它的缓存中是否有东西并使用它。如果没有,它就试图从域名服务器中获取答案,通常由拥有该域名的独立(解析)托管。

如果域名服务器无法到达,或者由于其他原因而无法响应,那么就会返回一个SERVFAIL,浏览器就会向用户发出一个错误。

同样,我们的学习中心对DNS的工作原理提供了一个很好的解释

由于Facebook停止通过BGP宣布他们的DNS前缀路由,我们和其他人的DNS解析器没有办法连接到他们的名字服务器。因此,1.1.1.1、8.8.8.8和其他主要的公共DNS解析器开始发出(和缓存)SERVFAIL响应。

但这还不是全部。现在,人类行为和应用逻辑开始发挥作用,导致另一个指数效应。一场额外的DNS流量的海啸随之而来。

发生这种情况的部分原因是,应用程序不接受一个错误的答案,并开始重试,有时是积极的,部分原因是最终用户也不接受一个错误的答案,并开始重新加载页面,或杀死并重新启动他们的应用程序,有时也是积极的。

这就是我们在1.1.1.1上看到的流量增加(请求数):

因此,现在,由于Facebook和他们的网站是如此之大,我们的DNS解析器在全球范围内处理比平时多30倍的查询,并可能对其他平台造成延迟和超时问题。

幸运的是,1.1.1.1是建立在免费、私有、快速和可扩展的基础上的,我们能够继续为我们的用户提供服务,而且影响很小。

我们绝大部分的DNS请求都能在10毫秒内得到解决。同时,p95和p99百分位数的最小部分的响应时间增加了,可能是由于过期的TTL不得不求助于Facebook的名字服务器和超时。10秒的DNS超时限制在工程师中是众所周知的。

影响到其它服务

人们寻找替代方案,希望了解更多信息或讨论发生的事情。当Facebook变得无法联系时,我们开始看到人们对Twitter、Signal和其他信息及社交媒体平台的DNS查询增加。

我们还可以从Facebook受影响的 ASN 32934 的 WARP 流量中看到这种不可达性的另一个副作用。

这张图显示了每个国家从15:45 UTC到16:45 UTC的流量与三小时前相比的变化。在世界各地,进出Facebook网络的WARP流量完全消失了。

互联网

今天的事件温和地提醒我们,互联网是一个非常复杂和相互依赖的系统,它由数百万个系统和协议共同工作。

信任、标准化和实体间的合作是使其为全球近50亿活跃用户服务的核心。

升级

在21:00 UTC左右,我们看到Facebook的网络再次出现BGP活动,并在21:17 UTC达到顶峰。

该图表显示了DNS名称 "facebook.com "在Cloudflare的DNS解析器1.1.1.1上的可用性。

它在15:50 UTC左右停止解析,并在21:20 UTC返回。

毫无疑问,Facebook、WhatsApp和Instagram的服务将需要进一步的时间才能上线,但截至UTC时间21:28,Facebook似乎已经重新连接到全球互联网,DNS也重新工作。

评论

  1. Parksi
    Windows Chrome 78.0.3904.108
    2月前
    2021-10-06 10:04:06

    “升级”译为“更新更好”

    • Zikin 博主
      iPhone Safari 15.0
      2月前
      2021-10-06 16:55:45

      个人理解:
      “Update”是对应“down”(也就是服务可用性降级)的

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇