何が起きたか
2007年8月16日木曜日、eBay傘下で当時2億2000万人のユーザーを抱えていたルクセンブルク拠点のインターネット電話サービスSkypeは、ほぼ一日中ほとんどのユーザーに対して機能しなくなり、障害は約2日間に及ぶ長期の停止へと拡大した。引き金はありふれたものだった。マイクロソフトの毎月のPatch Tuesdayが再起動を必要とするセキュリティ更新を配信し、数百万台のWindowsマシンが数時間のうちに再起動してSkypeのピアツーピアネットワークへ再ログインしようとしたのだ。Skypeはこれを「非常に短い時間枠の中で世界中のユーザーのコンピューターが大規模に再起動したこと」と呼んだ。
Skypeのピアツーピアアーキテクチャには、同社の言葉を借りれば「自己修復する内蔵能力」があり、クライアントの参加と離脱による変動は通常は自動的に吸収されていた。この再起動の嵐は、ネットワークのリソース割り当てアルゴリズムにこれまで見えなかったソフトウェアのバグを露呈させ、自己修復が迅速に機能するのを妨げた。復旧の仕組みそのものが、かつて経験したことのない規模の障害の下で機能しなくなった。Skypeは「サービスは約2日間、大多数のユーザーに対して利用不能だった」と述べた。
障害が長引く中、セキュリティ研究者たちは同じ週に公表されたサービス拒否(DoS)の脆弱性が原因ではないかと推測した。Skypeはこれを否定した。ネットワークは攻撃を受けたのではなく、単に十分な速さで修復できなかったのだ。この出来事は、分散型は故障しないことを意味しないという初期の典型的な教訓となった。ピアツーピアシステムは依然として世界的に相関する事象に直面し、自己修復能力はそれらに対して規模を定め、試験されなければならない。
何を犠牲にしたか
Skypeの2億2000万人のユーザーの大多数に対して約2日間サービスが利用不能となり、固定電話を廃止していた小規模事業者は電話サービスを失った
なぜ起きたか
Patch Tuesdayは世界的に相関する事象を生み出した。数百万台のWindowsマシンが数時間のうちに再起動して再ログインし、ネットワークが通常吸収する変動をはるかに超えた。
ネットワークのリソース割り当てアルゴリズムにこれまで見えなかったバグがあったため、嵐が襲うと内蔵の自己修復機能は「迅速に機能しなかった」。復旧経路そのものが負荷の下で機能しなくなった。
障害の規模はこれまで試されたことがなかった。自己修復能力は暗黙のうちに通常の参加・離脱パターンに合わせて規模が定められており、クライアント基盤全体の同期した再起動には対応していなかった。
同じ週に公表されたサービス拒否の脆弱性が診断を混乱させ、Skypeは自社ソフトウェアをデバッグする一方で、攻撃説を公に否定せざるを得なかった。
教訓
ピアツーピアはメンテナンス不要を意味しない。相関する事象に対して復旧経路の規模を定め、1回のパッチサイクルがすべてのクライアントを一度に襲い得ることを想定し、ネットワーク全体がそれに依存する前に試験しておくべきだ。
その後
サービスは復旧し、SkypeはHeartbeatブログに詳細なポストモーテムを公開して責任を認めた。引き金はマイクロソフトのパッチサイクルだったが、障害はSkype自身のリソース割り当てコードにあり、同社はセキュリティに関わるものではなかったと強調した。この障害は今なお、ピアツーピアネットワークにおける相関障害の教科書的な事例として、また「分散型ゆえに回復力がある」ということと、実際に試験された回復力との間の隔たりの事例として引用されている。
出典をたどる
出典
- Patch Tuesday update triggered Skype outage The Register · theregister.co.uk ·
- Windows Users Caused Skype Outage TechCrunch · techcrunch.com ·
- Error in Skype's Software Shuts Down Phone Service The New York Times · nytimes.com ·