谷歌运行着一个庞大的网络,在2010年Arbor Networks公司在其研究中总结道:“如果谷歌是一个互联网服务供应商,它将是发展最快的全球第三大网络运营商。只有两家公司比谷歌贡献更多的跨域流量,这两家供应商都承载着谷歌庞大的流量。”
在开放网络峰会上,谷歌杰出工程师Amin Vahdat介绍了谷歌如何结合Quagga开源软件以及OpenFlow来优化其数据中心互连,他还介绍了谷歌在其内部数据中心使用OpenFlow的细节信息,谷歌称其SDN网络为“B4”。
谷歌为何选择SDN?
Vahdat指出,谷歌后端(东西)网络的增长迅速超越了其前端面向用户的网络。这种增长非常昂贵,因为网络并不能像存储和计算一样以符合成本效益的方式来扩展。计算和存储的运营成本会随着规模的扩展而更加便宜,但网络并不是如此。
Vahdat介绍了谷歌选择软件定义网络的理由。首先,通过从软件分离硬件,该公司可以基于所需的功能选择硬件,同时能够对软件时间线进行创新和部署。其次,它提供逻辑上的集中控制,这将会更具确定性、更高效以及更容错。第三,自动化允许谷歌分离、监控、管理和操作。所有这些元素能够提供灵活性以及创新性。
在这个项目开始时,谷歌使用商用芯片建立了自己的交换机(见图片)。谷歌构建自己的硬件,因为当时市场上并没有硬件能够满足其需求。
▲B4网络硬件
Vahdat并没有提到现在市场上是否存在满足于谷歌部署SDN硬件需求的交换机,这通常涉及供应商固件升级到纳入OpenFlow代理。
然而,Vahdat指出,虽然OpenFlow并不是且仍然部署***的协议,但谷歌将继续使用OpenFlow用于流量实例,因为它受到各种厂商的支持。笔者认为,这意味着谷歌并不打算推出其自己的硬件,并且,OpenFlow支持将会是未来硬件购买的采购要求。
谷歌B4网络的混合迁移分三个阶段
Vahdat接着讨论了谷歌的SDN迁移路径,从完全分布式的单片控制和数据平面硬件架构转移到物理分散的(尽管逻辑上集中)控制平面架构。
谷歌B4网络的混合迁移分三个阶段进行:
▲传统混合SDN部署
▲混合综合SDN部署
▲最终:混合SDN部署
在下面的图中,你可以看到,谷歌已经在交换机旁边部署了网络控制器服务器(NCS),这个NCS包含针对一定数量网络元素的提取的控制平面。这些交换机运行具有低水平控制的OpenFlow代理,所有真正重要的元件运行在外部服务器(但仍位于同一位置)的一套控制器上,NCS是32核服务器。
▲B4架构
在NCS上面是OpenFlow控制器,用于高可用性故障切换。Vahdat谈到的主要应用程序是流量工程应用程序—将政策实例化到控制协议,包括BGP、ISIS和OpenFlow。
作者总结
笔者对谷歌的混合部署战略很感兴趣。这笔者看来,在对网络状态的丢失和机械地继续转发数据包方面,谷歌相当受限。网络可能会回落到低优先级,实例化流量规则。流量表中,不符合流量规则的数据包将会流入到正常的转发管道或者预先安装的捕捉全部的流量规则,来到达出口网关。虽然自定义转发将会回落到最短路径或者静态路径,但它会保持流量转发,直到控制元件恢复。
这些图表明控制元件是按照多层层次来部署。分层和模块化是我们现在扩展大型网络的方法。通过将NIB(网络信息库)分成模块,谷歌的方法类似于现在的网络架构从每个数据平面减去专用控制平面的方法。这些模块然后可在所有模块中再分发哈希表和NIB,并提供整体视图。