APNIC文摘— 個人意見:從Facebook的錯誤中學習

本APNIC文摘原標題為Opinion: Learning from Facebook’s mistakes,由Geoff Huston撰文。

今年6月內容傳遞網路(content delivery network,CDN)服務供應業者Akamai因為系統設定上的失誤,引發大規模斷網事件,受害者包括數家澳洲和紐西蘭大型銀行、澳洲郵政、香港股市和全球多家航空。根據事後統計,約500家企業的網站都遭波及,網站因此斷線長達4小時。

本文作者,APNIC首席科學家Geoff Huston,在事件後特地發表部落格文章,稱讚Akamia事後發表的聲明不同於過去網路斷線事件的企業聲明,清楚且詳盡,並期許未來類似事件發生時,能看到更多和Akamai相似的聲明。

今年10月4日,Facebook也發生了斷網事件。考慮到全球的Facebook使用者人口,這很可能被視為網路史上影響範圍最大的斷網事件。

那麼,關於這次斷線事件我們知道什麼呢?根因是什麼?Facebook做了什麼緊急補救措施?為什麼修復時間竟長達6小時之久?Facebook是否有採取任何後續措施,以防未來發生類似事件?簡而言之,從全世界最受歡迎、影響力無遠弗屆的平臺竟然把自己下架6小時的事件中,業界可以學到什麼教訓?

然而,Facebook在事件後第一時間發表的聲明中,除了道歉並確認事件並非外部攻擊所導致外,沒有就上述問題提供任何解答。作者認為,這份聲明可謂完美示範了怎麼寫出整整四段文字但什麼都沒說。

另一方面,非當事人的Cloudflare,光從外部角度,就能把事件的來龍去脈說明得更清楚。根據Cloudflare的部落格文章,事件的根因是Facebook從權威域名伺服器中移除了facebook.com的邊界閘道協定(Border Gateway Protocol,BGP)路由。

其實,在DNS中,移除BGP路由的時間若不是太長,通常不會造成什麼問題。這是因為DNS的運作重度仰賴遞迴解析器中儲存的DNS快取資訊,只要快取的存活時間(time to live,TTL)夠長(超過一天),那即使路由被移除,大部分的遞迴解析器仍能仰賴快取資訊順利運作。也就是說,如果使用者的網路有設置多個不同遞迴解析器,那使用者可能完全不會發現任何異樣。更何況,以Facebook的熱門程度而言,大部分的解析器中,應該都留有該網站的域名快取資訊。

然而,Facebook設定的TTL時間非常短。也因此,一旦BGP路由被移除,快取隨之過期,解析器就再也無法透過域名找到權威伺服器了。作者解釋,這種「找不到」是DNS最討厭的「找不到」;因為這種情況下,用戶端送出的查詢雖然找不到權威主機,但並不會得到「NXDOMAIN」(此域名不存在於DNS)的回應,只會等到超時還是沒有回應。

等不到回應的遞迴解析器,會就伺服器儲存的所有IP位址,再次一筆一筆送出查詢,同時回傳「SERVFAIL」代碼給用戶端。這個代碼的意思是「雖然我無法解析這筆域名,但很可能是我的問題,不妨試試其他解析器」。如此一來,用戶端的解析器又會向網路中其他遞迴解析器再次送出查詢,重複上述徒勞無功的工程。Cloudflare的部落格文章解釋,全世界想連到Facebook的人實在太多了,全球的DNS解析器於是突然同時必須處理比平常多30幾倍的查詢,其他平臺網站的連線也可能因此受到影響。

雪上加霜的是,就在Facebook域名從網路上全面消失的時候,公司內部的指令控制工具似乎也不見了。連Facebook設於全球各地的資料中心都無法交換訊務,整個情況因此變得更嚴重。

作者總結,我們可以從這次事件學到的教訓包括:

  • 每次需要改變網路設定時都務必先行演練,並規劃好備用方案。
  • TTL在DNS中很重要。如果要使用時限短的TTL,所有相關設定都必須加倍謹慎,因為一旦問題發生,將無法仰賴快取應急。
  • 不要把所有雞蛋放在同一個籃子裡。以DNS設定而言,就是不要把所有權威DNS域名伺服器都放在同一個自治系統(Autonomous System,AS)的同一個BGP裡。
  • 最好分開管理公司內部的指令控制工具操作系統和產品開發服務;兩者的基礎建設、路由和DNS域名都要分開設定。如此一來,即使指令操作出了問題,至少還能照常提供服務。
  • 「行動迅捷,勇於破壞」(move fast, break things)的行事作風,結果只會讓東西壞掉而已。 每一次壞掉都只會讓使用者越來越不耐煩,最終選擇放棄使用你的服務。
  • 「速度」和「韌性」之間只能擇一時,企業必須審慎思考願意承擔的風險,以及服務失效的後果。對某些公司而言,樂於擁抱高風險可能是經營理念,但公司的顧客、廣告商和股東是否抱持相同理念?

本文發表日期後,Facebook於自家網站發布更詳細的事件報告。作者也將此報告的連結補充在部落格文章留言處。新的事件報告中,Facebook表示每次事件後,他們都會展開詳盡的事後調查,進一步加強系統的韌性。Geoff進一步指出,這個「加強系統韌性」的使命應擴及整個網際網路,向航空和核能取經,了解如何以產業為單位從事件學習教訓,每一次的改善都應是整個產業的共同進步。

 

*台灣網路資訊中心(TWNIC)與亞太網路資訊中心(APNIC)合作,定期精選APNIC Blog文章翻譯摘要,提供中心部落格讀者了解目前亞太地區網路發展之最新趨勢。原文標題為Opinion: Learning from Facebook’s mistakes

圖片來源:freepik

Scroll to Top