Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

Vinllen Chen


但行好事,莫问前程

VL2数据中心架构

  VL2数据中心架构由微软在2009年提出,它是一种新型的架构方式,使得数据中心在节约成本的同时,保证资源的灵活动态分配。它支持数据数据中心内服务器之间均匀的高容量(uniform high capacity)、不同服务带宽互相隔离(performance isolation between services)、二层环境(Ethernet layer-2 semantics)。它采用了:

  1. 扁平化地址管理,使得不同的服务可以位于数据中心内部不同的位置。
  2. Valiant Load Balancing(VLB)的负载均衡方式。
  3. 方便扩容。

  通过在小型数据中心的实验,证明了VL2的可用性。本文部分用语可能翻译不是特别恰当,我根据自己的理解进行表述。

1.传统数据中心架构的缺点

  传统数据中心架构具有以下几个缺点:

  1. 数据中心内部服务器之间的容量小。传统树形架构中由于费用问题(交换机端口上行与下行带宽不一致),交换机的收敛比大于1(即下行总带宽与上行总带宽之比),越高层次的交换机收敛比越高,这导致在满载的情况下,服务器间的容量过小。
  2. 不同服务相互影响。由于共享带宽,导致某些服务占用了过多的带宽会影响别的服务的正常使用。
  3. 服务器迁移不方便。由于某些服务的限制,通常要求服务器迁移而不变动原IP,这在传统架构中实现比较麻烦,同时使得地址的管理需要过大的人工介入。
  4. 为了保证灵活性需要预留带宽。这导致在正常情况下,这部分预留带宽被浪费了。

  下图为传统数据中心架构:
clos

2.VL2架构

  VL2涉及到多项技术:

  1. 采用随机化对抗网络抖动。采用VLB的方式,使得流量负载更为均衡,降低网络抖动带来的影响。
  2. 采用链路状态路由协议、ECMP、IP组播等路由技术。
  3. 采用标签-位置分离技术(LISP),方便主机进行迁移和扩容。在传统状态下,一个主机拥有一个IP,标识主机的位置以及主机的身份。如果在主机迁移后改变IP地址,必然导致上层业务对主机的身份重新识别;如果不改变IP,则主机在新的地址空间可能无法通信。传统IP地址规则身份与位置的统一,使其在云计算环境中显得格格不入。LISP技术是将原来一个IP表示的方式改为了两个IP进行表示:一个标识身份,一个标识位置。在文中,我们采用AA表示位置,LA表示身份。
  4. VL2层级管理系统。该系统去掉了网络中的ARP报文,提供位置和标签之间的映射。

2.1拓扑结构

  下图为VL2的拓扑架构。图中下面浅蓝绿色表示区域为AA地址区域(假设地址为20.0.0.0/8),上面绿色部分区域为LA地址区域(假设地址为10.0.0.0/8),TOR作为中间件进行隔离。汇聚层交换机与核心层交换机两两建立全互联模式(这是VLB思想,而在传统模式中下一层交换机连接2台上一层交换机),TOR连接两台汇聚层交换机(此处为何不是全互联?没有搞懂)。DA和DI分别表示汇聚层的交换机端口和核心层交换机端口。一个TOR下面挂20台服务器。所有服务器位于同一个网段(20.0.0.0/8)。
topology

2.2地址分配与路由

  下图展示了主机20.0.0.55的主机访问20.0.0.56的过程。初始源/目的不变,外面套了两层地址,内层为10.0.0.6,外层为10.1.1.1。通过TOR、汇聚层送到核心层之后,剥离外层,然后再送至对应TOR,再剥离内层,送至真实目的地。
topology

  所有服务器位于同一个二层环境,所以在第一次发送时正常需要发送ARP广播报文,而VL2代理会拦截ARP报文,然后代理查询VL2层级系统获得AA和LA之间的映射,然后进行封装转发。VL2代理会缓存AA和LA之间的映射关系,类似ARP cache。所以,此处VL2代理的另外一个功能就是做控制策略:对不同主机进行控制;对不同服务进行隔离;VLAN间通信而不需要VLAN网关。

2.3随机多路径

  注意在上图中,所有核心交换机的地址都被赋予了同一个LA地址,所以VL2层级系统返回任意播地址给VL2代理。TOR和汇聚层的上行都为ECMP。在实际中,存在以下两个问题,(1)ECMP只能支持最多16条,所以,在多余16条的情况下,VL2定义了多个任意播地址,每个地址容纳16条链路。(2)有些老交换机不支持5元祖哈希策略,那么做法就是VL2代理事先计算好哈希地址然后存入源IP地址段,这样交换机收包后可以直接提取该地址段,做哈希策略。
  由于ECMP处理的基本单位是流而不是包,所以对于『大象流』,如果随意哈希分配可能导致链路拥塞。VL2做法是,VL2代理可以设置简单的检测机制,一旦遇到『大象流』,则重哈希,让大象流前往容量较高的链路,避免拥塞。

2.4后向兼容性

  在VL2中,采用了3层网络结构实现了虚拟2层网络,所以外部报文(数据中心外)在进入后不需要在网关重写包头,可以直达目的地。而对于希望提供外网可达的服务器,则需要被赋予两层地址:外层LA,内层AA,LA地址通过BGP进行发布到外网。
  另外,上面说过了ARP报文。对于DHCP报文,TOR交换机设置DHCP relay进行处理。对于其余希望2层广播的报文,则在同一个服务中,被赋予多播地址,以便于在同一个服务内进行广播(即服务隔离)。

3.VL2层级系统

  VL2层级系统主要有三个主要的作用:(1)提供AA-LA之间的查找;(2)提供AA-LA之间的更新;(3)被动缓存机制。本文假设数据中心内部查找频繁,更新相对较少,数据中心存在小范围波动,大范围宕机则情况较少。下图展示了VL2层级系统的架构。
directory

  VL2层级系统包括两个主要方面:(1)大量经过读优化(read-optimized)的服务器缓存AA-LA映射关系,处理来自VL2代理的查询。(2)少量经过写优化(write-optimized)的服务器,处理来自VL2代理的更新,为了保证一致性,采用异步RSM进行数据同步。每一台VL2层级系统服务器都存储所有的AA-LA映射关系,答复来自代理的查询。如果没有强烈的一致性要求,则服务器可以30秒一次同步RSM信息。为了保证高可用和低延时,VL2代理一次不仅仅查询一台VL2层级系统服务器,而是一次查询k个,然后选择最快的应答作为答复并缓存AA-LA映射。
  被动缓存机制的设置是为了不浪费系统资源。一些VL2层级系统服务器缓存旧的映射,只有当某条映射被采纳之后才会对映射系统进行更新。举个例子,比如某条旧的映射被VL2代理采纳了,然后报文转发到相应TOR,这时候TOR发现目的主机不存在,则TOR发送更新消息到原VL2层级系统服务器,触发更新。

4.实验

  作者采用3台核心,3台汇聚,4台TOR,75台服务器进行实验。核心和汇聚交换机拥有24个10Gbps端口,汇聚交换机使用了其中6个端口,核心用了3个;每个TOR拥有2个10G端口和24个1G端口,上联用10G端口,下联1G端口。每台TOR下挂20台服务器(有些没挂满)。每台服务器往另外74台服务器打500G的TCP流量,一共500*74*75G=2.7TB流量。VLB的负载公平因子为0.995,结果显示有效负载是传统情况下的10倍。其余测试数据参考论文。

参考

http://research.microsoft.com/apps/pubs/default.aspx?id=80693

说明

转载请注明出处:http://vinllen.com/vl2shu-ju-zhong-xin-jia-gou/


About the author

vinllen chen

Beijing, China

格物致知


Discussions

comments powered by Disqus