B4:全球部署 SDN-WAN 的经验


摘要

介绍了 B4,Google 连接全球数据中心的 WAN 的设计,实施和评估。

B4 独特的特征:

  1. 大量的带宽部署到少量的节点
  2. 弹性通信需求,力求最高平均带宽
  3. 对边缘服务器和网络进行流量限制和需求测量

由于这些特性,选择了基于 OpenFlow 协议的 SDN 架构。B4 的中心化流量工程使其带宽达到了接近 100% 的利用率,同时在多条路径之间划分了应用流量流,以平衡应用程序的优先级和需求。


一、介绍

现代局域网对因特网的性能和可靠性十分关注,采用高昂的设备,并且对网络中所有的流量平等对待。现在的 WAN 仅有 30~40% 的带宽利用率,以高昂的代价支撑着其高性能和可靠性。

平等不代表公平,价格歧视才可以填补需求曲线和边际效益曲线之间的空缺,才可以消除无谓损失(经济学概念)。

Google 数据中心广域网有一些独特的性质:

  1. 控制所有的应用,服务器,局域网,直到网络边缘。
  2. 最耗费带宽的应用是数据中心间的大规模数据复制,其可以根据带宽容量动态调节传输速率,并且在网络故障时,让位于优先级更高的交互式应用程序。
  3. 预计不超过几十个数据中心部署,从而使集中控制成为可能。

由于这些特性,选择了 SDN 架构,设计理念为:

  1. 允许网络错误,其后果应该暴露给终端应用程序。
  2. 交换机支持简单的接口,可以在集中控制下编程控制其转发表。

我们的希望,部署新颖的路由,调度,监视以及管理功能和协议将变得更加简单,从而使网络更加高效。

实践中的 Google 广域网 B4,采用 SDN 架构,并使用 OpenFlow 协议。并同时支持标准路由协议,和中心化流量工程。

流量工程特征:

  1. 资源限制期间,网络边缘的杠杆控制在竞争的需求中做出判断。
  2. 根据应用的优先级,使用多路径转发或隧道来充分利用可用的网络容量。
  3. 链路或交换机故障时,或应用程序(带宽)需求变化时,动态地重新规划带宽。

这些流量工程特征实现了接近 100% 的带宽利用率。

  1. 什么是流量工程:自己规划哪些流量走哪条链路,就是流量工程。

  2. 哪些情况下需要使用流量工程:

  • 网络中某些情况下,最优路径并不是唯一路径;
  • 网络中某些情况下,最优路径并不是最好路径。
  1. 传统 IP 是如何做流量工程的:
  • 调整链路 cost
  • 非等价负载均衡
  • 策略路由

它是第一个也是最大的SDN / OpenFlow部署之一:

  • 更有效地满足应用程序带宽需求;
  • 支持快速部署和迭代;
  • 支持诸如 TE 之类的新型控制功能;
  • 并能够与最终应用程序紧密集成,以响应故障或更改通信模式而做出自适应行为。

论文贡献点:我们总结了 B4 的经验,指出了 SDN 和大规模网络管理方面的挑战。虽然我们的方法不能推广到所有 WAN 或 SDN ,但我们希望我们的经验将对未来两个领域的设计有所帮助。


二、背景

Google 在架构上运行两个不同的 WAN:

  • 面向用户的网络与其他 Internet 域进行对等交换。最终用户的请求和响应通过该网络传递到我们的数据中心和边缘缓存。
  • B4 网络提供数据中心之间的连通性。

我们维护两个独立的网络,因为它们有不同的要求。例如,面向用户的网络与一系列设备和提供商连接,因此必须支持广泛的协议。此外,它的物理拓扑必然比连接少量数据中心的网络更密集。最后,在向最终用户交付内容时,它必须支持最高级别的可用性。

在 B4 上运行的应用程序可以分为三类,且有着不同的优先级:

  1. 用户数据拷贝:用户到远程数据中心,以保证数据可用性和持久性。这个数据量最小,对延迟最敏感,优先级最高。
  2. 远程存储访问:进行 MapReduce 之类的分布式计算。
  3. 大规模数据同步:以同步多个数据中心之间的状态。这个流量最大,对延迟不敏感,优先级最低。

B4 的许多特征导致了我们的设计决定,其特征为:

  • 弹性带宽需求:跨数据中心的大型同步任务需要尽可能多的带宽,但是也可以通过暂时减少带宽来承受周期性的故障。
  • 站点数量适中:针对 Google 的数据中心部署,WAN 站点仅为几十个。
  • 最终应用程序控制:可以控制网络边缘强制执行相对的应用程序优先级并控制突发,而不是通过 B4 中的过度配置或复杂功能来实现。
  • 成本敏感性:B4 的容量目标和增长率导致了不可持续的成本预测。

最终 B4 的设计决定为:

  1. 使用商用交换机芯片构建 B4 路由器。
  2. 驱动连接达到 100% 利用率。
  3. 中心化流量工程。
  4. 分离硬件和软件。

三、设计

3.1 总览

  1. 第一层,交换机硬件:使用定制的交换机硬件,只负责转发流量,不运行复杂的功能。
  2. 第二层,站点控制器:其上运行着 OpenFlow Controller (OFC) 集群,使用 Paxos 协议选出一个 master,其他都是热备。
  3. 第三层,中心控制器:Central TE Server 是整个网络逻辑上的中心控制器。

故障恢复机制:优先级交换机转发表条目在基础路由协议的基础上,进行了流量工程分层,当流量工程出现问题时,可以禁用服务并回退到最短路径转发。

软件迭代思想:当软件版本稳定时(功能基本稳定,线上充分测试),具备版本一键回滚能力很重要。灰度上线和 AB 测试也很重要,同样的思想也可以应用到网络中。

3.2 交换机设计

传统观点认为,广域路由设备必须具有:(以及 B4 交换机的改进)

  1. 较深的缓冲区:调整传输速率,从而避免使用深度缓冲区,同时避免了昂贵的数据包丢弃。
  2. 非常大的转发表:交换机在数量相对较小的数据中心集合中运行,因此不需要大型转发表。
  3. 对高可用性的硬件支持:交换机故障通常是由软件而不是硬件问题引起的,将大多数软件功能从交换机硬件上移开。

交换机包含运行 Linux 的嵌入式处理器。

  • 最初,直接在交换机上运行所有路由协议,这使可以将交换机放入一系列现有部署中。(兼容基础网络)
  • 接下来,我们开发了 OpenFlow 代理(OFA),接受 OpenFlow(OF)命令并转发适当的数据包,并将链接/交换事件转发到 OFC,OFA 将 OF 消息转换成驱动程序命令以设置芯片转发表条目。

3.3 网络控制功能设计

大多数 B4 功能都在与交换机硬件共置的站点控制器层中的 NCS 上运行。使用修改后的 Onix 来进行 OpenFlow 的控制。

3.4 路由

B4 的主要挑战之一是将基于 OpenFlow 的交换机控制与现有路由协议相集成,以支持混合网络部署。

Quagga 路由协议栈中的 RIB 保存着路由规则,如发往某个子网的包要从某两个端口选一个出去。数据中心网络中一个 packet 一般会有多条路线可走,一方面提高冗余度,一方面充分利用带宽,常用的协议是 Equal Cost Multiple Path (ECMP),即如果有多条最短路,就从其中随机选一条走。

软件工程思想:提高冗余度永远是提高可用性的选择之一,拒绝单点故障。


四、流量工程

TE 的目标是在可能使用多条路径的竞争应用程序之间共享带宽,并尽可能地提高带宽利用率。

4.1 中心化 TE 架构

  • Network Topology:聚合主干以简化拓扑结构
  • Flow Group (FG):aggregate applications to a Flow Group defined as {source site,dest site,QoS} tuple(聚合了多个应用程序的流量)
  • Tunnel (T):site-level path in IP encapsulation(站点级别的路径,IP 封装), a sequence of sites (A → B → C)
  • Tunnel Group (TG):a set of tunnels and cor-responding weights(隧道和其权重的集合,权重指定了流在每个隧道的分数比例)

4.2 带宽功能

  • 分配权重指定了相对的应用程序优先级。
  • 每个 Flow Group 将一个站点到另一个站点的多个应用程序的带宽需求进行多路复用。
  • 带宽强制实施器:计算要在边缘实施的带宽限制。

4.3 TE 优化算法

LP 最佳解决方案既昂贵又无法很好地扩展。因此,设计了一种算法,该算法可实现类似的公平性:保证了 99% 的带宽利用率,并有 25 倍的加速。

不能一昧得追求最优解,性能效率可接受的解就可以了。

流量工程优化算法有两个主要组成部分:(1)隧道组生成为使用带宽功能的流组分配带宽以优化处理瓶颈;(2)隧道组量化改变每个TG中的分流比以匹配交换机硬件表支持的粒度。

  1. Tunnel Selection(隧道选择): 选择每个 FG 可能走的几条路线(tunnel)
  2. Tunnel Group Generation(隧道组生成): 给 FG 分配带宽
  3. Tunnel Group Quantization(隧道组量化): 将带宽离散化到硬件可以实现的粒度

五、TE 协议和 OpenFlow

5.1 TE 状态和 OpenFlow

B4 交换机的角色:

  1. 启动隧道,封装数据包,并在隧道间拆分流量。
  2. 根据外部报头转发数据包。
  3. 隧道尽头解封装数据包,并使用传统路由转发。

5.2 例子

  • Encap Switch 是连接终端机器的边界路由器,将 IP packet 封装起来,包上路由专用的 source ip 和 destination ip。
  • Transit Switch 是中间传输路由器,只接受经过 Encap Switch 封装的 IP packet,并在数据中心之间进行路由。
  • Decap Switch 是连接终端机器的边界路由器(其实跟 Encap Switch 是同一批机器),将被封装的 IP packet 去除包头,再送给终端机器。

5.3 组合路由和 TE

B4 同时支持最短路径路由和 TE,因此即使禁用了 TE,也可以继续运行。

路由和 BGP 使用 LPM 表,TE 使用 ACL 表,ACL 优先级高于 LPM。

5.4 跨站点协调 TE 状态

TE 服务器协调跨多个 OFC 的T / TG / FG 规则安装。

5.5 依赖和失败

一次 TE 变更可能涉及多个交换机的插入/删除规则操作,而这些操作不能以任意的顺序进行,否则就有可能出现丢包。为了在有网络延迟和数据包乱序 (reordering) 的情况下保证依赖关系,中心 TE 服务器为每个事务(session)中的有序操作分配递增的序列号。OpenFlow Controller 维护当前最大的 session 序列号,拒绝任何比它小的 session 序列号。TE 服务器如果被 OFC 拒绝,将在超时后重试这个操作。

疑问:通过拒绝顺序不对的请求而等待超时重发,这个效率未免有点低吧。可以先缓存顺序不对的请求吧。


六、评估

在数据中心,设备、线路损坏是常有的事,因此错误的影响范围和恢复速度很重要。

  1. 单个链路故障:受影响的两台交换机会立即更新 ECMP 表。
  2. 封装路由器故障:周边的交换机都更新 ECMP 表。
  3. 传输路由器故障:邻近的 Encap Switch 要汇报给 OFC,OFC 汇报给全球中心的 TE Server,TE Server 再按照操作依赖的顺序,逐个通知受影响的 Encap Switch 修改路径。
  4. OFC 故障:没有影响,首先因为它们使用了 Paxos 分布式一致性协议,其次即使全都挂掉了,也只是不能修改网络拓扑结构,不会影响已有的网络通信。
  5. TE 服务器故障:没有影响,首先因为它们使用了 Paxos 分布式一致性协议,其次即使全都挂掉了,也只是不能修改网络拓扑结构,不会影响已有的网络通信。
  6. 禁用/启用 TE:关闭 TE 时,整个网络会回滚到基于最短路径的传统路由协议,因此也不会造成网络中断。

优化效果:

  1. 带宽使用率平均可达 95%。
  2. 高优先级 packet 几乎没有丢包,而低优先级 packet 有较多的丢包。如果低优先级应用使用通常的 TCP 协议,在这么高的丢包率下很难高效工作。因此传输层协议也是要特殊设计的,不过论文并未透露。

七、一次中断的经历

应该加入更多系统监控措施,以发现故障前期的警告。

日志,监控和报警系统,记录实时的运行状况,并在出现异常时及时通知到运维人员,十分重要。


八、相关工作


九、结论

未来研究方向:

  • 硬件编程的开销:OpenFlow 的规则顺序是很重要的,插入一条规则可能导致后面的规则都要移动,因此操作起来很慢。这是可靠性的主要瓶颈。
  • OFC 与 OFA 间的通信瓶颈:OFC 和 OFA 间通信的可扩展性和可靠性不足。OpenFlow 最好能提供两个通信端口,分别支持高优先级操作和需要大带宽的数据传输。

论文阅读: B4: Experience with a Globally-Deployed Software Defined WAN相关推荐

  1. 论文阅读笔记——A deep tree-based model for software defect prediction

    本论文相关内容 论文下载地址--Web Of Science 论文中文翻译--A deep tree-based model for software defect prediction 论文阅读笔记 ...

  2. 【论文阅读】Lie-Algebraic Averaging For Globally Consistent Motion Estimation

    作者:Venu Madhav Govindu 出处:CVPR 2004 1. N个相机/N幅图像只需要(N-1)个独立的运动就可以进行描述. 2. N个相机/N幅图像可以提供多达N(N-1)/2个运动 ...

  3. 论文中文翻译——A deep tree-based model for software defect prediction

    本论文相关内容 论文下载地址--Web Of Science 论文中文翻译--A deep tree-based model for software defect prediction 论文阅读笔记 ...

  4. 论文阅读2018-10-13

    论文阅读2018-10-13 Addressing the minimum fleet problem in on-demand urban mobility 原文及翻译 METHODS Addres ...

  5. 目标检测——Faster R-CNN论文阅读

    论文阅读--Faster R-CNN:Towards Real-Time Object Detection with Region Proposal Networks 文章目录 论文阅读--Faste ...

  6. 深度学习论文阅读目标检测篇(四)中英文对照版:YOLOv1《 You Only Look Once: Unified, Real-Time Object Detection》

    深度学习论文阅读目标检测篇(四)中英文对照版:YOLOv1< You Only Look Once: Unified, Real-Time Object Detection> Abstra ...

  7. 深度学习论文阅读目标检测篇(一):R-CNN《Rich feature hierarchies for accurate object detection and semantic...》

    深度学习论文阅读目标检测篇(一):R-CNN<Rich feature hierarchies for accurate object detection and semantic segmen ...

  8. 【LeGO-LOAM论文阅读(二)--特征提取(二)】

    简介 上篇博客介绍了特征提取的原理以及坐标转化和插值的源码理解,这篇将介绍特征提取的后续算法模块. 源码 1.新数据进来进行坐标转换和插补等工作 见[LeGO-LOAM论文阅读(二)–特征提取(一)] ...

  9. [论文阅读] (12)英文论文引言introduction如何撰写及精句摘抄——以入侵检测系统(IDS)为例

    <娜璋带你读论文>系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢.由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学 ...

最新文章

  1. 2022-2028年中国防臭袜行业投资分析及前景预测报告
  2. Windows Server 2008 WDS实现跨网段实现远程部署
  3. 数据库视频(一)——整体认识
  4. sin查找表 matlab,利用Xilinx中的ROM构造查找表来计算sin和cos的方法探讨
  5. Android(组件大全)
  6. 利用https实现站点的访问
  7. Axure高保真智慧校园管理系统/校园管理/人事管理/学籍管理/教学管理/流程审批/备课管理/考务管理/成绩管理/排课管理/选课管理/选课系统/调课申请/教师考评管理/web端管理系统
  8. Atitit 衡量项目的规模
  9. 075 json和pickle模块
  10. simulink和psim仿真结果不同_Abaqus软件掌握大部件焊接仿真的解决思路
  11. SAP物料批次管理配置及操作手册
  12. Map转换List一些方法
  13. 附加支付和统筹支付_医保附加支付是什么意思?
  14. 美女照相怎么摆pose
  15. 大地测量常用的四种坐标系
  16. socket c语言 AF_TIPC,socket编程 send() recv() sendto() recvfrom()
  17. Simulink仿真示波器波形出现小圆圈
  18. libigl第五章-参数化
  19. CALL和jmp近远调用的区别
  20. 君子之交+续篇+番外 txt全集

热门文章

  1. 控制教程 —— 介绍篇:8.基于Simulink为火车系统建模
  2. Apache Pulsar基本理论
  3. 13980个性桌面导航
  4. Resharper使用详解
  5. CURE算法和Matlab实现
  6. 启明云端分享:高性价比ESP32-S3驱屏应用于洗衣机的方案
  7. 服务器Windows系统基本安全策略配置
  8. python中的goto语句_python开发中goto语句的使用
  9. 国产绘画AI杀疯了!画的小姐姐比真人还好看
  10. 实战OD调热血江湖写屏