2007 年 8 月 16 日星期四,Skype——這家總部位於盧森堡、當時由 eBay 擁有、用戶數達 2.2 億的網路電話服務——在一天中的大部分時間停止運作,中斷更延續成將近兩天的長時間故障。觸發原因很平常:微軟每月例行的 Patch Tuesday 推送了需要重新開機的安全更新,數百萬台 Windows 電腦在短短數小時內先後重啟,並試圖重新登入 Skype 的點對點網路。Skype 稱之為「全球用戶電腦在極短時間內大規模重啟」。

Skype 的點對點架構,用該公司的話說,具有「內建的自我修復能力」——用戶端加入與離開所造成的流動,通常會被自動吸收。這場重啟風暴卻暴露出網路資源分配演算法中一個先前未曾發現的軟體錯誤,使自我修復無法迅速運作。復原機制本身在一種它從未見過的故障規模下失靈了。正如 Skype 所言,服務「對大多數用戶而言約有兩天無法使用」。

隨著故障持續,安全研究人員猜測,同一週披露的一個阻斷服務漏洞是罪魁禍首;Skype 否認了這一點——網路並未遭到攻擊,只是無法及時復原。這起事件成為一個早期的典型案例,說明分散式並不等於不會故障:點對點系統仍會面臨全球相關聯的事件,而自我修復能力必須針對這類事件來規劃規模並加以測試。

Skype 的 2.2 億用戶中,大多數約有兩天無法使用服務;已停用固網電話的小型企業失去了電話服務

Patch Tuesday 造成了一個全球相關聯的事件:數百萬台 Windows 電腦在幾小時內重啟並重新登入,遠超出網路平時所能吸收的流動量。

網路資源分配演算法中一個先前未曾發現的錯誤,意味著內建的自我修復功能在風暴來襲時「無法迅速運作」——復原路徑本身在負載下失靈。

這種故障規模從未被演練過:自我修復能力在設計上隱含地只針對一般的加入/離開模式,而非整個用戶端基礎的同步重啟。

同一週披露的一個阻斷服務漏洞混淆了診斷,迫使 Skype 在偵錯自家軟體的同時,公開否認遭到攻擊的理論。

點對點並不代表免維護。要針對相關聯的事件來規劃復原路徑的規模——一次修補週期就可能同時衝擊每一個用戶端——並在整個網路依賴它之前先加以演練。

服務恢復後,Skype 在其 Heartbeat 部落格上發表了一份詳細的事後檢討,承擔責任:觸發因素是微軟的修補週期,但過錯在於 Skype 自家的資源分配程式碼,該公司並強調此事與安全無關。這起故障至今仍被引為點對點網路中相關聯故障的教科書案例——也說明了「分散式因而具韌性」與真正經過測試的韌性之間的落差。

追溯依據

參考來源

  1. Patch Tuesday update triggered Skype outage The Register · theregister.co.uk ·
  2. Windows Users Caused Skype Outage TechCrunch · techcrunch.com ·
  3. Error in Skype's Software Shuts Down Phone Service The New York Times · nytimes.com ·