Google数据中心B4网络具体实现
① 背景介绍
Google的网络有两种,一种是数据中心内部网络,另外一种是WAN网,其中WAN网又分为两种:一是数据中心之间的互联网络,属于内部网络(G-Scale Network),另外一种是面向Internet用户访问的网络(Internet-facing WAN 即 I-Scale Network),Google选择使用基于SDN来改造数据中心之间互联的G-Scale网络,因为这个网络相对简单,设备类型以及功能都比较单一,而且该网络的链路成本太高(都是长距离传输光缆,甚至包括海底光缆),改造价值大。
Google的数据中心之间传输的数据可以分为三大类:
- 用户数据备份 到远程数据中心,以保证数据可用性和持久性。这个数据量最小,对延迟最敏感,优先级最高。
- 扩数据中心存储访问 比如据算资源和存储资源分布在不同的数据中心,进行 MapReduce 之类的分布式计算。
- 大规模数据同步 以同步多个数据中心之间的状态。这个流量最大,对延迟不敏感,优先级最低。
促使Google使用SDN改造WAN网络的最大原因是当前连接WAN网络的链路带宽利用率很低,因为现在用的是基于静态Hash的负载均衡方式,这种方式并不是绝对均衡,会出现有的路径负载高,有的路径负载低的情况,为了避免很大的流量都被分发到同一个链路上导致对包,Google不得不使用过量链路,提供比实际需要多得多的带宽,导致实际链路带宽利用率只有30%左右,且仍不可避免有些链路会发生拥塞,而且设备必须支持很大的包缓存,成本太高。除此之外,增加网络可见性、稳定性,简化管理,都是动机之一。以上原因也决定了Google这个基于SDN的网络,最主要的应用时流量工程(TE,Traffic Engineering)。
Google对B4网络的改造方法,充分考虑了他们网络的一些特性以及想用达到的主要目标,一切都是围绕这几个事实或者期望:
- B4网络绝大多数流量都是来自于数据中心之间的数据同步应用,这些应用希望给它们的带宽越大越好,但是可以容忍偶尔的拥塞丢包、链路不通以及高延时。
- Google数据中心的数量是有限的,这个特点意味着Controller的可扩展性的压力相对小很多。
- Google能够控制应用数据以及每个数据中心的边界网络,希望通过控制应用数据的优先级和网络边缘的突发流量(Burst)来优化路径,缓解带宽压力,而不是靠无限制地增大出口带宽。
② 具体实现
控制该网络的系统分为三个层次:物理设备层(Switch Hardware)、局部网络控制层(Site Controller)和全局控制层(global)。一个Site就是一各数据中心。第一层的硬件交换机和第二层的Controller在每个数据中心的内部出口的地方都有部署,而第三层的SDN网关和TE服务器则是在一个全局统一的控制地。

● 第一层的硬件交换机是Google自己设计的。交换机里面运行了OpenFlow协议,但是它并非仅仅使用了一般的OpenFlow交换机最常使用的ACL表,而是用了TTP(Table Typing Patterns)方式,包括ACL表、路由表、Tunnel表等。但是向上提供的是OpenFlow接口。这些交换机会把BGP/IS-IS协议报文发送到Controller供Controller处理。
● 第二层最为复杂,该层在每个数据中心出口并不是只有一台服务器,而是有一个服务器集群,每个服务器上都运行一个Controller,Google用的Controller是基于分布式的Onix Controller来改造的。一台交换机可以连接到多个Controller,但是只有其中一个处于工作状态(Master),一个控制器控制多台交换机,一个名叫Paxos的程序用来进行leader选举(即选举Master)。
在Controller之上运行着两个应用:RAP,TE Agent。
RAP即Routing Application Proxy的意思,负责OFA和OFC之间的互联,作为SDN应用跟Quagga通信。Quagga是一个开源的三层路由协议栈,支持很多路由协议,Google使用了BGP和IS-IS。数据中心内部的路由器间运行eBGP,跟其它数据中心WAN中的设备间运行iBGP。Onix Controller收到下面交换机送上来的路由协议报文以及链路状态变化通知的时候,自己并不处理,而是通过RAP把它送给Quagga协议栈。Controller会把它所管理的所有交换机的端口信息都通过RAP告诉Quagga,Quagga协议栈惯例了所有这些端口。Quagga协议计算出来的路由会在Controller里面保留一份(放在一个叫NIB的数据库里面,即Network Information Base,类似于传统路由中的RIB),同时会下发给交换机,路由的下一跳可以是ECMP,即有多个等价下一跳,通过Hash选择一个出口。这是最标准的路由传统路由转发
。
Quagga 路由协议栈中的 RIB 保存着路由规则,如发往某个子网的包要从某两个端口选一个出去。数据中心网络中一个 packet 一般会有多条路线可走,一方面提高冗余度,一方面充分利用带宽,常用的协议是 Equal Cost Multiple Path (ECMP),即如果有多条最短路,就从其中随机选一条走。在OFC中,RIB被分解为 Flows和 Groups。要理解这个拆分的必要性,先要理解网络交换设备是怎样工作的。现代网络交换设备的核心是 match-action table。Match 部分就是 Content Addressable Memory (CAM),所有条目可以并行地匹配,匹配结果经过 Mux 选出优先级最高的一条;Action 则是对数据包进行的动作,比如修改包头、减少 TTL、送到哪个端口、丢弃数据包。在 OFC 中,Flows 对应着 Match 部分,匹配得出 Action 规则编号;Groups 对应着 Action 部分,采用交换机中现有的 ECMP Hash 支持,随机选择一个出口。
TE Agent,负责跟全局的Gateway通信,每个OpenFlow交换机的链路状态(包括带宽信息)会通过TE Agent发送给全局的Gateway,Gateway汇总后送给TE Server进行路径计算。
● 第三层中,全局的TE服务器通过SDN Gateway从各个数据中心的控制器收集链路信息,从而掌握路径信息,这些路径被以IP-In-IP Tunnel的方式创建而不是TE最经常使用的MPLS Tunnel,通过Gateway到Onix Controller,最终下发到交换机中。当一个新业务数据要开始传输的时候,应用程序会评估该应用所需要耗用的带宽,为它选择一条最优路径(比如负载最轻的但非最短路径即不丢包但时延大),然后把这个应用对应的流通过Controller下发到交换机,从而整体上使链路带宽利用率到达最优。
Google数据中心B4网络具体实现的更多相关文章
- [转载] Google数据中心网络技术漫谈
原文: http://www.sdnlab.com/12700.html?from=timeline&isappinstalled=0#10006-weixin-1-52626-6b3bffd ...
- [转]漫谈数据中心CLOS网络架构
http://djt.qq.com/article/view/238 1.数据中心网络架构挑战 随着技术的发展,数据中心的规模越来越大,一个数据中心的服务器容量从几年前的几千台服务器发展到今天的几万甚 ...
- SDN理解:云数据中心底层网络架构
目录 - 目录 - 云数据中心流量类型 - NSX整体网络结构 - 管理网络(API网络) - 租户网络 - 外联网络 - 存储网络 - openstack整体网络结构 - 管理网络:(上图中蓝线) ...
- 英特尔® 至强® 平台集成 AI 加速构建数据中心智慧网络
英特尔 至强 平台集成 AI 加速构建数据中心智慧网络 SNA 通过 AI 方法来实时感知网络状态,基于网络数据分析来实现自动化部署和风险预测,从而让企业网络能更智能.更高效地为最终用户业务提供支撑. ...
- Openstack neutron:云数据中心底层网络架构
目录 - 目录 - 云数据中心流量类型 - NSX整体网络结构 - 管理网络(API网络) - 租户网络 - 外联网络 - 存储网络 - openstack整体网络结构 - 管理网络:(上图中蓝线) ...
- 数据中心网络架构的问题与演进 — SDN
目录 文章目录 目录 前文列表 OpenFlow 源起 从 OpenFlow 衍生 SDN 前文列表 <数据中心网络架构的问题与演进 - 传统路由交换技术与三层网络架构> <数据中心 ...
- 数据中心网络架构的问题与演进 — Overlay 网络
目录 文章目录 目录 前文列表 数据中心网络架构演进回顾 Overlay 网络 Overlay 网络的优势 基于 VxLAN Overlay 的 Spine-Leaf 网络架构 参考文章 前文列表 & ...
- 透过微软研究院在“数据中心网络”的重大进展看SIGCOMM 2013
2013" title="透过微软研究院在"数据中心网络"的重大进展看SIGCOMM 2013"> 编者按:于8月12日至16日在香港举行的SI ...
- 网络协议学习笔记(九)CDN和数据中心
概述 上一篇给大家介绍了DNS协议和HttpDns协议,现在给大家介绍一下CDN和数据中心相关的知识. CDN:你去小卖部取过快递么? 如果你去电商网站下单买个东西,这个东西一定要从电商总部的中心仓库 ...
随机推荐
- Kafka设计解析(一)- Kafka背景及架构介绍
本文转发自Jason’s Blog,原文链接 http://www.jasongj.com/2015/01/02/Kafka深度解析 背景介绍 Kafka简介 Kafka是一种分布式的,基于发布/订阅 ...
- offsetTop、clientTop、scrollTop、offsetTop属性
HTML精确定位:scrollLeft,scrollWidth,clientWidth,offsetWidth scrollHeight: 获取对象的滚动高度. scrollLeft:设置或获取位于对 ...
- Android课程---关于数据存储的学习之总结
- Android_SQLite数据库增删改查操作
一:什么是SQLite? 在Android平台上,集成了一个嵌入式关系型轻量级的数据库. 二:什么时候用的数据库? 有大量相似机构的数据需要存储时. 三:如何创建一个数据库? 1.创建一个Sqlite ...
- JAVA第五次作业
import javax.media.; import java.awt.; import java.awt.event.; class MediaPlayer extends Frame imple ...
- PHP是怎么运行的
这篇文章,研究一下PHP代码是如何解释和执行以及PHP脚本运行的生命周期. 概述 PHP服务的启动.严格来说,PHP的相关进程是不需要手动启动的,它是随着Apache的启动而运行的.当然,如果有需要重 ...
- Microsoft Azure Web Sites应用与实践【3】—— 通过Visual Studio Online在线编辑Microsoft Azure 网站
Microsoft Azure Web Sites应用与实践 系列: [1]—— 打造你的第一个Microsoft Azure Website [2]—— 通过本地IIS 远程管理Microsoft ...
- imagepool前端图片加载管理器(JavaScript图片连接池)
前言 imagepool是一款管理图片加载的JS工具,通过imagepool可以控制图片并发加载个数. 对于图片加载,最原始的方式就是直接写个img标签,比如:<img src="图片 ...
- C# Azure 存储-分布式缓存Redis在session中的配置
1. 开始 对于分布式的缓存,平常的session的处理是一个用户对应一台分布式的机器,如果这台机器中途挂机或者不能处理这个用户session的情况发生,则此用户的session会丢失,会发生不可预知 ...
- Hadoop学习路线图
Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,新增加的项目包括, ...