① 背景介绍
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 方法来实时感知网络状态,基于网络数据分析来实现自动化部署和风险预测,从而让企业网络能更智能.更高效地为最终用户业务提供支撑. ...
-
数据中心网络架构的问题与演进 — SDN
目录 文章目录 目录 前文列表 OpenFlow 源起 从 OpenFlow 衍生 SDN 前文列表 <数据中心网络架构的问题与演进 - 传统路由交换技术与三层网络架构> <数据中心 ...
-
数据中心网络架构的问题与演进 — Overlay 网络
目录 文章目录 目录 前文列表 数据中心网络架构演进回顾 Overlay 网络 Overlay 网络的优势 基于 VxLAN Overlay 的 Spine-Leaf 网络架构 参考文章 前文列表 & ...
-
透过微软研究院在“数据中心网络”的重大进展看SIGCOMM 2013
2013" title="透过微软研究院在"数据中心网络"的重大进展看SIGCOMM 2013"> 编者按:于8月12日至16日在香港举行的SI ...
-
SDN与NFV技术在云数据中心的规模应用探讨
Neo 2016-1-29 | 发表评论 编者按:以云数据中心为切入点,首先对SDN领域中的叠加网络.SDN控制器.VxLAN 3种重要技术特点进行了研究,接下来对NFV领域中的通用服务器性能.服务链 ...
-
VXLAN技术在数据中心的应用
1.VXLAN技术可以通过物理交换机实现,也可以通过服务器实现,这两种实现的后台反应的是CT技术,还是IT技术来主导数据中心虚拟网络的发展. 2.物理交换机实现的VXLAN受限于芯片支持的规则,一般情 ...
随机推荐
-
iOS-硬件声音 ,振动,提示警告
为了引起用户注意发出警告的时候,常常伴随有提示音震动等.系统声音服务提供了一个接口,用于播放不超过30秒的声音文件,他支持的格式有CAF,AIF,WAV. iOS使用该API支持3种不同的通知: 声音 ...
-
(转)maven 配置在eclipse中
maven3 下载配置 下载地址 http://maven.apache.org/download.cgi 在线文档 http://maven.apache.org/ref/3.0.5/ 安装 一.安 ...
-
Delphi中多标签页面的实现
unit uMain; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...
-
Ionic3 一些命令
ionic start --help E:\Projects\ionic>ionic start --help ionic start - Create a new project This c ...
-
Express使用art-template模板引擎
第一步:安装 npm install --save art-template npm install --save express-art-template 第二步:指定.html使用的解析引擎(官方 ...
-
1945 : 卡贩子Carol
题目描述 来自F星球的Carol是一个不折不扣的“正版游戏受害者”,在黑色星期五的疯狂购买后,钱包渐空的Carol突然发现TA所使用的游戏交易平台上有个值得留意的地方————集换式卡牌. 集换式卡牌是 ...
-
《Java开发学习大纲文档》V6.0(已经不公布了,请查看第七版)
<Java开发大纲学习文档第六版>简介: 有需要的私聊作者QQ:253173641.
-
Ingeter与int的比较
,Ingeter是int的包装类,int的初值为0,Ingeter的初值为null.但是如果面试官再问一下Integer i = 1;int ii = 1; i==ii为true还是为false? 首 ...
-
mysql中if()函数使用
博主原创,转载请注明出处: 在mysql中if()函数的用法类似于java中的三目表达式,其用处也比较多,具体语法如下: IF(expr1,expr2,expr3),如果expr1的值为true,则返 ...
-
python 爬虫煎蛋网
import urllib.request import os from urllib import error import re import base64 def url_open(url): ...