参考:
一文读懂胖树
数据中心网络架构VL2详解
数据中心网络拓扑设计目标
总体目标
- 业务可以部署在任意的服务器上
- 可以根据需要动态扩展或者缩小服务器规模
网络角度
- 均衡负载且高性能:服务器之间的性能仅受限于服务器网卡,而不是链路
- 性能隔离:一个业务的流量不影响其它业务的流量
- 易于管理:服务器配置简单
传统树形网络拓扑
- 上层交换机必须要有足够大的带宽来满足下层服务器之间的通信。从叶节点到根节点所需的交换机的性能依次增加。
- 根节点交换机会成为瓶颈。
Fat-Tree
- 使用大量低性能的交换机,构建出大规模的无阻塞网络,对于任意的通信模式,总有路径让他们的通信带宽达到服务器网卡带宽。
- 具体来说,Fat-Tree结构共分为三层:核心层、汇聚层、接入层。
一个k元的Fat-Tree可以归纳为5个特征
- 每台交换机都有k个端口;
- 核心层为顶层,一共有(k/2)^2个交换机;
- 一共有k个pod,每个pod有k台交换机组成。其中汇聚层和接入层各占k/2台交换机;
- 接入层每个交换机可以容纳k/2台服务器,因此,k元Fat-Tree一共有k个pod,每个pod容纳kk/4个服务器,所有pod共能容纳kk*k/4台服务器;
- 任意两个pod之间存在k条路径。
- 连在同一个接入交换机下的服务器处于同一个子网,他们之间的通信走二层报文交换。不同接入交换机下的服务器通信,需要走路由。
Fat-Tree的优点 - 每一层的累积带宽相同,所有交换机都一样,核心也不需要高带宽端口的交换机。
- 扩展性高
- 接入层交换机端口的带宽和服务器网卡的带宽相同
Fat-Tree的缺陷
- 不支持服务的动态迁移
- 需要定制化的路由
- Fat-Tree 的扩展规模在理论上受限于核心层交换机的端口数目,不利于数据中心的长期发展要求
- Fat-Tree 拓扑结构的特点决定了网络不能很好的支持 One-to-All及 All-to-All 网络通信模式,不利于部署 MapReduce、Dryad 等高性能分布式应用;
- Fat-Tree 网络中交换机与服务器的比值较大,在一定程度上使得网络设备成本依然很高
VL2
- 将服务器身份(IP)和位置(拓扑相关)分离
- VL2架构中分为服务器、机架交换机ToR(top of rack)、汇聚交换机和中继交换机。每个服务器与一个ToR连接,多个ToR可以连接到一个汇聚交换机,每个汇聚交换机可以通过中继交换机与其他汇聚交换机相连。
- n个中继交换机任何一个失效,只会减小1/n的双向带宽,这种设计增加了路径数量和网络的健壮性。
- VL2在数据中心内部使用两种地址,其中底层服务器使用AAs(Application Addresses), 上层交换机使用LAs(Locator Addresses)。在这种地址分配方式中,服务器会认为与其他服务器都在同一个子网中,因为他们使用相同的AAs地址前缀。VL2通过在服务器的协议栈中增加shim子层、ToR交换机隧道、目录系统实现寻址。
- 服务器S与另一服务器D进行通信,在初次通信时,S会发送ARP数据包请求D的MAC地址,此时协议栈中的shim层将会拦截此ARP数据包,即不会发生ARP广播,而是向目录系统发送数据,请求D的LAs地址。目录系统记录AAs-LAs的映射关系(其中AAs为服务器的地址,而LAs为服务器连接的ToR交换机地址)。因此目录服务器收到S的请求后,返回的是D的ToR服务器地址。shim层在收到目录系统的应答后,将数据包封装,其目的地址为D的ToR地址,即LAs地址。然后将数据包发给自己的ToR服务器。该ToR通过汇聚交换机、中继交换机将数据包发送到D的ToR交换机。D的ToR交换机受到数据后,进行解封装,获取数据包的真实目的地址,并将其转发给服务器。
- VL2使用VLB实现负载均衡,ECMP实现多路径传输。中继交换机全部使用相同的LAs地址,对于任意交换机与中继交换机都是3跳的距离,不存在远近之分。每个汇聚交换机都可以与服务器通信。数据到达汇聚交换机后,汇聚交换机会随机选择路径进行传输数据,因为中继交换机的地址是相同的,因此只要选择链路状态好的路径传输就可以,以此实现多路径传输。
VL2的优点
- 实现了可扩展,敏捷的数据中心网络
- 扁平寻址,服务实例可以被放置到数据中心网络的任何地方
- 负载均衡将流量统一的分配到网络的多条路径
- ToR交换机端口的带宽和服务器网卡的带宽相同
VL2的缺点
- VL2架构需要更改服务器的主机协议栈
- 需要一个高性能,低时延的目录系统提供映射查找服务,为数据中心带来额外的开销。该目录系统可能会成为瓶颈。
- 为了实现VLB,所有交换机要一直在线,增加了能耗