数据中心网络的技术发展的四大趋势
数据中心网络的技术发展趋势是向着高性能、可编程、虚拟化、智能化等四个方向发展的。
1. 高性能数据中心网络
由于数据中心网络中端到端的带宽极高、延迟极低,因此在网络拓扑、路由协议和传送协议等设计上都要满足高性能需求。
(1)数据中心网络拓扑设计
由于数据中心服务器之间的通信容量要求高,传统的基于“树型”的网络拓扑难以满足服务器之间的高带宽通信需求。因此当前的数据中心网络普遍采用CLOS网络来连接服务器,为服务器之间提供“无阻塞”的网络交换能力。数据中心采用的CLOS网络主要是由大量商用交换机组成的fat-tree网络,这些交换机之间仍然运行分布式路由协议。
除了fat-tree网络之外,工业界和学术界还提出了许多其他的数据中心网络拓扑,比如与fat-tree非常相似的VL2网络,还有能够让服务器参与网络互联的BCube网络等。这些网络拓扑有一个共同点:即使服务器之间进行“all-to-all”通信,也可以得到几乎无阻塞的网络带宽。因此,数据中心的通信瓶颈只在于服务器网卡以及服务器产生数据的速度,而不在于网络。
如果要为数据中心网络的最大通信容量提供无阻塞网络带宽,在实际情况下,会显得过于浪费硬件资源,因为在大部分情况下,网络带宽是远小于最大峰值的。因此也有许多数据中心网络拓扑对fat-tree网络进行各种方式的裁剪或补充,比如减少顶层交换机的数量、采用电路交换的光交换机来取代部分电交换机,等等。
(2)数据中心路由协议设计
与传统的局域网或广域网路由相比,数据中心网络路由最大的特点是以负载均衡为主。因为数据中心网络的拓扑规整,所以在选路方面相对简单。但由于数据中心网络的服务器之间往往都存在多条等价并行路径(比如在fat-tree网络中可能存在多达几十条),因此如何在多条并行路径之间进行负载均衡路由,是数据中心网络路由设计的关键。不同的负载均衡路由策略会对端到端的吞吐率造成很大的影响。数据中心网络负载均衡路由主要有三种方法:基于流(low)的、基于分组(packet)的以及基于流片(flowlet)的负载均衡路由。
基于流的负载均衡路由是以流为单位,把不同的流路由到不同的等价路径上。传统的方法是等价多路径(Equal Cost Multiple Path,ECMP)路由,主要通过哈希的方法进行路径选择。但由于该方法将大流和小流等同对待,造成不同路径的带宽利用率相差较大,并且哈希算法的冲突问题难以实现精确的负载均衡。因此,业界提出了许多对ECMP进行改进的方法,比如通过集中控制器对大流进行优化的路径选择等(谷歌公司的Hedera方案)。
基于分组的负载均衡路由是以分组为单位进行多路径路由选择。这一方法的优势是通过细粒度的负载均衡,可以在多条并行路径之间实现较为均衡的路由选择,尽可能提升端到端的网络吞吐率;缺点在于可能会造成同一个流的包乱序问题。由于数据中心网络的拓扑规整,不同路径之间的时延相差不大,若通过在接收端增加缓存的方式,该问题就能在一定程度上得到缓解。
基于流片的负载均衡路由介于上述两种方法之间。把一个流分成多个“流片”,流片之间的时间间隔较长,往往大于不同的并行路径之间的延迟差异,因此可以让不同的流片采用不同的路径路由,减少流的乱序问题。
(3)数据中心传送协议设计
互联网传送协议的设计是为了把应用程序所需要的共性功能在端系统上提取出来,供应用程序使用。不同的应用程序需要不同的传送协议功能,因此互联网有多个不同的传送层协议,比如TCP、UDP、SCTP等。由于数据中心网络与应用程序的耦合比较紧密,因此在传送协议方面还需要更多的创新设计。
围绕对TCP协议的改进,数据中心网络提出了系列新型传送协议。比如数据中心里普遍存在“多对一”的数据传送,因此很容易产生TCP Incast问题(一种灾难性的TCP吞吐量崩溃),于是诞生了能够解决这问题的DCTCP协议,并且该协议已经进入了Linux内核;另外还有ICTCP协议等。针对数据中心的许多任务都具有对“截止完成时间”的要求,提出了一系列能感知任务“截止完成时间”的协议,比如D2TCP协议。针对多路径传输,出现了MPTCP协议。
除了对TCP协议的改进之外,数据中心网络也采用了其他传送协议(如RoCE协议),尽可能地充分利用数据中心网络的高带宽网络资源。尤其在分布式机器学习训练、分布式数据库等应用中,RoCE协议被广泛使用。
2. 可编程数据中心网络
由于数据中心网络往往为某个公司或机构独有,数据中心管理者会根据应用的独特需求,对网络设备的功能进行定制,比如自定义路由转发规则、自定义安全策略、自定义隧道封装格式等。在这种情况下,传统的路由器/交换机中确定性的转发规则无法满足数据中心网络的需求,而需要可编程的数据中心网络设备。软件定义网络(Software Defined Network,SDN)就是可编程数据中心网络的代表性技术。
SDN技术早期以OpenFlow协议为代表,近期以P4技术为代表,通过灵活定义交换机的转发字段,将数据中心网络的所有网络设备统一起来,并且可以根据用户需求对网络设备的功能进行灵活定义。此外,SDN技术还为数据中心网络的精细化测量提供了使能技术,使得数据中心网络维护者可以精确感知网络的实时状态信息,从而及时地调整流量路径、感知并恢复故障。
网络的可编程性一直是互联网技术发展的主线之一。在SDN诞生之前,还出现过主动网络、控制/数据分离等相关技术。近年提出的SRv6(Segment Routing based on IPv6)技术,通过分段路由(segment routing)技术,使用户能够自定义报文转发路径。与基于多协议标签交换的分段路由(SR MPLS)相比,SRv6可以把数据中心网络与广域网打通,形成全路径一体化的分段路由技术。
3. 虚拟化数据中心网络
与计算虚拟化和存储虚拟化相比,网络虚拟化技术的发展一直较为缓慢。但在多用户的数据中心,尤其是支持多租户的云数据中心,网络虚拟化是非常必要的。传统的网络虚拟化技术主要是VLan等流量隔离技术,但VLan的虚拟网络标识只有12比特,因此最多只能支持4096个虚拟网络,在大规模数据中心并不够用。为了在数据中心支持数量庞大的虚拟网络,业界制定了 VxLan标准,将虚拟网络标识扩展为24比特,可用于超大规模的云计算环境。
除了流量隔离,数据中心网络还将网络虚拟化技术往前推进了一步,即为虚拟网络提供带宽保障。它将虚拟网络的带宽请求抽象为软管模型(hose model)—或流量矩阵模型(pipe model),然后在物理网络上为虚拟网络分配带宽。得到带宽保障的虚拟网络和自建一个物理网络的使用体验是一样的。数据中心网络管理者还可以通过灵活的带宽分配算法,在给定物理网络拓扑的前提下,支持尽可能多的虚拟网络数量。
4. 智能化数据中心网络
数据中心网络还在向智能化方向发展。从整个网络技术的发展趋势来看,数据平面在向“极简化”的方向发展,包括“尽力而为”的IP转发、SDN统一数据平面等。控制平面是提高网络端到端性能、保障网络健壮性的重要方面,传统的网络控制平面技术主要是通过“确定性建模”的方式生成数据平面的转发规则。由于数据中心网络规模巨大、流量突发性强、节点/链路容易产生故障的特点,所以确定性建模的方法往往难以在端到端吞吐率和延迟方面带来理想的效果。
根据历史统计数据,基于机器学习的人工智能技术采用了“不确定”的方法对网络进行建模,不仅对网络进行了更有效的控制,也为用户带来了更好的网络使用体验。智能技术对数据中心网络的路由选择算法(比如,如何把流量分割到不同的路径上)、拥塞控制算法(比如,如何调整TCP的拥塞控制窗口)、故障预测和恢复(AIOPs)等都能带来较大的帮助,从而实现“自动驾驶网络”(self-driven network)。