2021年10月5日0時40分頃(日本時間)にFacebookのシステムに障害が発生し、すべてのシステムがダウンしました。これにより、Facebookのみならず、Facebookが所有するInstagram、WhatsApp、Messenger、Oculusなどにもシステム障害が発生し、同日7時頃までアクセスできない状態となっていました。インターネットインフラ企業のCloudflareが、Facebookが世界的にダウンしてしまった原因について解説しています。

Understanding How Facebook Disappeared from the Internet

https://blog.cloudflare.com/october-2021-facebook-outage/

Facebook is scrambling to fix massive outage - The Verge

https://www.theverge.com/2021/10/4/22709575/facebook-outage-instagram-whatsapp

BGP Explained: the protocol that may be behind Facebook’s disappearance - The Verge

https://www.theverge.com/2021/10/4/22709260/what-is-bgp-border-gateway-protocol-explainer-internet-facebook-outage

システム障害の影響で、Facebookとその関連サービスであるWhatsAppやInstagramなどにアクセスできなくなりました。DNSでこれらのサービスの名前解決が失敗するようになり、サービスを支えるインフラのIPアドレスの一部も到達できなくなっていました。Cloudflareは「あたかも誰かがデータセンターのケーブルを一斉に引き抜いて、インターネットから切り離したかのようでした」と述べています。

CloudflareはFacebookのシステム障害を受けて、CloudflareのDNSリゾルバである1.1.1.1に問題がある可能性を考え、10月5日1時51分(日本時間)に「Facebook DNS lookup returning SERVFAIL」と題した内部インシデントを立ち上げました。

調査の結果、問題の原因となったのはBGP(Border Gateway Protocol)だったことがわかりました。BGPはインターネット上のAS(自律システム)、すなわちネットワーク間で経路情報を交換するための仕組みで、簡単にいえば「目的地を入力すると経路を示してくれるカーナビのような役割」をインターネット上で果たしています。



個々のASはそれぞれAS番号を持っています。すべてのAS番号は、BGPを使ってインターネットに接続ルートをアナウンスする必要があります。そうしなければ、そのASは誰にも発見されず、接続されることもありません。なお、Facebook・Instagram・WhatsAppのAS番号はAS32934で、以下のページから参照できます。Facebookは自社でAS番号を取得し、インターネットサービスプロバイダを通さずに直接インターネットに接続しています。

PeeringDB

https://www.peeringdb.com/net/979

そこで、Cloudflareはグローバルネットワークで確認したすべてのBGPアップデートとアナウンスを追跡。すると、ちょうどシステム障害が確認されるようになった5日0時40分頃に、Facebookからルーティング変更のピークが見られました。



このピーク部分をもっと細かく見たグラフが以下。Facebookからルートのアナウンスと撤回が繰り返され、1時50分にDNSサーバーがオフラインになり、その直後にCloudflareのエンジニアが、1.1.1.1がfacebook.comを解決できないことに気づいてシステム障害を疑ったというわけです。結果的に、Facebookと関連サービスは事実上、インターネットから切り離されてしまったというわけです。



そして、CloudflareはFacebookがDNSプリフィックスへのルートのアナウンスを停止していることに気づいたとのこと。つまり、この時点で少なくともFacebookのDNSサーバーは利用できなかったというわけです。そのため、CloudflareのDNSリゾルバである1.1.1.1はfacebook.comあるいはinstagram.comのIPアドレスを要求するクエリに応答できなくなっていました。



Cloudflareによれば、Facebookや関連サービスは非常に規模が大きいため、エラーが起こるといつもの何十倍ものリクエスト数を引き起こし、遅延やタイムアウトの原因になってしまうとのこと。実際に1.1.1.1で見られたFacebook・WhatsApp・Messenger・Instagramのリクエスト数が以下のグラフで、15時40分頃からいつもの30倍近くにまで急増しています。Facebook関連のDNSリクエスト増加を防ぐため、世界中のDNSリゾルバがfacebook関連ドメインの解決を停止しました。



さらにFacebookがダウンした余波で、TwitterやSignal,Telegram,TikTokなど他のソーシャルメディアプラットフォームへのDNSクエリも増加。



5日4時52分には、Facebookの最高技術責任者(CTO)であるマイク・シュロープファー氏が「Facebookを利用したサービスの停止により影響を受けたすべての人に"誠に"お詫び申し上げます。ネットワークの問題が発生しており、チームは可能な限り迅速にデバッグと復旧に取り組んでいます」とツイートしました。また、IT系ニュースサイトのThe Vergeによれば、シュロープファー氏は従業員へのメールで「今回のシステム障害にはすべてのデータセンターを相互に接続するネットワークバックボーンが影響している」と記していたそうです。



そして、5日6時頃にFacebookネットワークからのBGPアクティビティが更新され、6時20分頃に1.1.1.1で「facebook.com」の名前が解決できることが確認されたとのこと。すべてのサービスがオンラインに戻るまでにはもう少し時間がかかるとのことですが、6時28分の時点でFacebook自体の復旧は確認されたそうです。



今回のシステム障害について、Facebookのマーク・ザッカーバーグCEOは「Facebook、Instagram、WhatsApp、Messengerは現在オンラインに戻っています。本日は大変ご迷惑をおかけしました。お客様が大切な人たちとのつながりを保つために、私たちのサービスをどれほどご利用いただいているかは存じております」とコメントしました。

Facebookのシステム復旧に時間がかかってしまったことについて、セキュリティ研究家のブライアン・クレブス氏は「アップデートによってリモートユーザーが修正できなくなり、物理的なアクセス権限を持つ人はネットワーク/論理的なアクセス権限を持っていなかったため、復旧が遅れた」と解説しています。ただし、今回の障害の原因となったBGPアップデートの失敗がなぜ起こったのかについて詳細は明らかになっていません。



なお、Facebookのシステムがダウンしてしまったことで、社内のシステムもダウンしてしまい、建物に入るためのセキュリティシステムが機能せず、従業員が締め出されてしまったという報告もあります。



・追記

Facebookエンジニアチームは、データセンター間のネットワークトラフィックを調整するバックボーンルーターの構成変更が原因となって障害が発生したという声明を発表しました。

Update about the October 4th outage - Facebook Engineering

https://engineering.fb.com/2021/10/04/networking-traffic/outage/