一、研究背景
Google为了向广大的用户提供服务,拥有很多的数据中心和三种不同类型的网络,包括数据中心网络(具有逻辑上集中的控制平面)、软件定义的广域网B4(支持多种流量类别并使用集中式流量工程)以及全球广域网B2(用于面向用户的流量,采用了分散式流量工程)。
二、文章要解决的主要问题
面对规模、网络演变和复杂性,保持高可用性是一项挑战。例如,对于面向用户的流量,Google的内部可用性目标是每月停机时间不超过几分钟。
维持这种高可用性尤其困难,是由于以下三个原因。首先是规模和异构性:Google的网络遍布全球,在这种规模下,网络中某些组件的故障很普遍。第二个是演进的速度:网络不断变化以响应不断增长的流量需求以及新服务的推出。第三是管理复杂性:尽管控制平面已经在发展以应对网络的复杂性,但是管理平面却没有跟上步伐。
三、文章提出的主要技术方法
对于每一次重大的故障,以反思报告的形式详细地记录故障事件、原因、解决方法。本文主要是对反思报告进行分析,从中汲取分布式系统高可用性设计原则。
本文将故障事件分为六类不同的影响类别:黑洞,其中到目标集或来自一组来源的访问量完全被黑洞;高优先级流量的高/低丢包;较低优先级流量的流量高/低丢包;以及,没有影响。为了区分高/低丢包,我们基于可用性目标设计了丢失阈值。
所有网络故障的根本原因可以直接分为硬件故障,软件错误和配置错误,但是,从这种粗略的分类来看,除了增加硬件冗余,加固软件,避免配置错误的一般建议之外,很难得出有关如何应对这些根本原因的具体见解。因此,本文对根本原因进行了更细致的分类,从而为提高网络可用性提供了有用的见解。
首先将根本原因分为数据平面、控制平面、管理平面三大类。当然,故障可以是多个根本原因导致的。



