Facebook大規模服務中斷事件調查:BGP與DNS伺服器離線所致
BGP 是「邊界閘道協定」的縮寫,作為一套允許在互聯網上的自治系統(AS)之間交換路由信息的機制,其在剛剛過去的 Facebook 大規模服務中斷事件中也扮演了重要的角色。 Cloudflare 指出,BGP 使得互聯網上工作的大型路由器能夠擁有龐大的、不斷更新的可能路由清單,從而將各個挽留過數據包送達最終的目的地。
(圖自:Cloudflare)
若缺乏 BGP,互聯網路由器將不知如何正確工作。 畢竟 Internet 的本意,就是在 BGP 綁定之下、一個套著另一個的網路。
以社交媒體巨頭 Facebook 為例,BGP 使之能夠向構成互聯網的其它網路通告自身的存在。
BGP / SAN 簡圖
然而在週一的服務大中斷事件中,Facebook 卻烏龍般地沒有宣告自身的存在,最終導致互聯網服務提供者(ISP)和其它網路無法與之建立正確的連接。
TheVerge編輯 Alex Castro 指出,BGP 又被稱作互聯網上的”郵局系統”或”空中交通管制員”,但他更喜歡將之看成一幅眾人參與製作和更新的地圖,以引導使用者正確訪問油管或臉書等網路服務。
Tom Strickx 與 Celso Martinho 在 Cloudflare 專欄文章中寫道:每個單獨的網路,都有一個被稱作 ASN 的自治系統編號,而自治系統(AS)是具有統一內部路由策略的單個網路。
AS 能夠產生前綴(比如其控制的一組 IP 位址)並傳輸,以讓互聯網知曉如何將資訊送達特定的 IP 位址組,而 Cloudflare 的 ASN 編號就是 AS13335 。
然後每個 ASN 都需要借助 BGP 向互聯網通告其前綴路由,否則將無人知曉該如何與之取得連接、以及在哪裡找到它們。
在UTC協調世界時的16:58,Cloudflare開始留意到Facebook已停止公佈其 DNS 前置碼路由。 在最不嚴重的情況下,這也意味著該公司的功能變數名稱解析服務(DNS)已不可用。
由於 Cloudflare 的 1.1.1.1 DNS 解析器無法再回應詢問 facebook.com 或 instagram.com 等網路服務的 IP 位址查詢,大規模服務中斷也開始變得無法避免。
與此同時,儘管仍有其它 Facebook IP 位址在被路由,但它們所能起到的效果也相當有限 —— 畢竟只要 DNS 服務躺下了,與 Facebook 相關的服務也變得實際上無法訪問了。
Cloudflare 指出,其會跟蹤全球網路中觀察到的所有 BGP 更新與公告。 然而UTC時間15:40左右,Cloudflare留意到了Facebook的路由變更高峰,麻煩在這個時候開始集中爆發。
說到這,本次 Facebook 大規模服務中斷的前因後果已基本疏離完成。 首先是路由被撤回,接著Facebook的 DNS 伺服器離線。
問題發生一分鐘后,Cloudflare 工程師們開始思考為何 1.1.1.1 無法解析 facebook.com、甚至一度懷疑是自家公司的系統出現了問題。
視頻截圖(來自:USENIX | YouTube)
最後,Santosh Janardhan 在 2021 年 10 月 4 日(本週一)更新的一篇文章中指出,該問題是由於 Facebook 在協調其數據中心之間網路流量的骨幹路由器的配置變更所引發的。
NSDI 21 Running BGP in Data Centers at Scale – USENIX(via)
感興趣的朋友,可觀看 NSDI ’21 學術會議上的這段視頻,來加強對於邊界網關協定(BGP)的深度理解。