事件经过
2007年8月16日星期四,Skype——这家总部位于卢森堡、当时由eBay拥有、拥有2.2亿用户的互联网电话服务——在当天大部分时间里停止工作,中断持续了近两天之久。触发原因很普通:微软每月例行的补丁星期二推送了需要重启的安全更新,数百万台Windows机器在几小时内先后重启并尝试重新登录Skype的点对点网络。Skype称之为“全球用户电脑在极短时间内的大规模重启”。
用Skype的话说,其点对点架构具有“内置的自愈能力”——客户端加入和离开带来的波动通常会被自动吸收。重启风暴暴露了网络资源分配算法中一个此前未被发现的软件缺陷,导致自愈无法快速生效。恢复机制本身在一个它从未见过的故障规模下失效了。正如Skype所说,该服务“约两天内对大多数用户不可用”。
随着中断持续,安全研究人员推测归咎于同一周披露的一个拒绝服务漏洞;Skype予以否认——网络并未遭到攻击,只是无法足够快地自愈。这一事件成为早期的一个经典教训:分布式并不意味着不会故障:点对点系统仍然面临全球性相关事件,自愈能力必须针对此类事件进行容量规划和测试。
代价
服务对Skype 2.2亿用户中的大多数不可用约两天;已弃用固定电话的小型企业失去了电话服务
原因
补丁星期二制造了一个全球性相关事件:数百万台Windows机器在几小时内重启并重新登录,远远超出了网络通常能吸收的波动。
网络资源分配算法中一个此前未被发现的缺陷意味着,风暴来袭时内置的自愈功能“未能快速生效”——恢复路径本身在负载下失效了。
故障规模从未被演练过:自愈能力实际上是按普通的加入/离开模式来设定容量的,而非针对整个客户端群的同步重启。
同一周披露的一个拒绝服务漏洞混淆了诊断,迫使Skype在调试自身软件的同时公开否认攻击理论。
教训
点对点并不意味着免维护。要针对相关事件为恢复路径设定容量——一个补丁周期就可能同时冲击所有客户端——并在整个网络依赖它之前对其进行演练。
后续
服务恢复后,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 ·