深度分析数据中心之ETS(Enhanced Transmission Selection)技术
一、ETS产生的背景:
随着数据中心日新月异的发展,数据中心网络为了获得高性能的计算环境,许多 IT 组织在多个网络上运作,例如,一个用于IP 联网(LAN),一个用于存储(SAN),一个用于进程间通信 (IPC,比如图中的InfinBand技术)。这些网络会在很多方面增加组织的成本:附加资本设备、缆线带来的成本增加和复杂性、管理成本以及多个组件带来的附加电能和散热消耗。
I/O 整合与统一的设想是使适配器、交换机和/或存储系统使用相同的以太网物理基础实施来传送特性差异较大的不同类型流量和处理要求。数据中心管理人员可以采购更少的主机总线和服务器适配器、线缆、交换机和存储系统,削减电力、设备和管理成本。对于 IT 网络管理人员,这等同于安装并操作一个网络而不是一个结构树,但是仍然具有区分不同流量类型的能力。
IO整合后,多个网络流量共享同一条物理链路,带来了一个新的需求:在网络繁忙的情况下,如何保证各个网络能够运行正常的最小带宽。为此IEEE引入ETS(Enhanced Transmission Selection,增强传输选择)协议,来对不同网络流量进行带宽分配,保证各个网络正常运行所需的最小带宽。
在数据中心当中,主要以下三种流量:
1.存储数据流:要求无丢包;
2.高性能计算流:要求低延迟;
3.以太网流:允许一定的丢包和时延。
由于对数据流的要求不同,如上图所示,传统的数据中心使用三种不同类型的网络承载不同的流。
这种方法在小型的数据中心当中还是可接受的。然而,随着数据中心规模的扩大,运行三种不同类型的网络,并不是经济的解决方案。一种可选的方法是:统一采用以太网承载三种不同类型的流,并定义附加机制,以使以太网能够满足三种不同类型网络的要求。为此,IEEE定义了以下规范:
(1)增强传输选择(ETS):用于避免一种流量类型的大规模流量猝发影响其它流量类型,为不同的流量类型提供最小带宽保证。一种流量类型只有在其它流量类型带宽不占用的情况下,才能使用分配带宽之外的额外带宽。这使多种流量类型可在同一网络中和谐共存。
(2)基于优先级的流量控制(PFC):用于满足三种流量在以太网中共存时,存储流量无丢包,且对其它的两种流量无影响的要求。
(3)拥塞通告(CN):用于降低引起拥塞的端点站的报文发送速率,从根源上避免拥塞,以保持网络的畅通,解决因拥塞引发报文重传或流量控制,导致报文时延增加的问题。
(4)数据中心交互协议(DCBX):它是基于LLDP(Link Layer Discovery Protocol)的扩展协议,用于在设备间自动协商并配置PFC、ETS及CN等。
以上四个功能是DCB协议族中定义的解决越来越庞大的数据中心网络所遇到的传统网络无法解决的问题。其他几个协议在后续的文章中陆续分享,今天中要讲述ETS(Enhanced Transmission Selection,增强传输选择)协议,是在IEEE 802.1qaz文档定义了ETS功能如下:支持对802.1p类别中的流量进行分类,分成多个传输类(Traffic Class),对各个传输类进行带宽分配。当其中一个传输类没有使用完分配给它的带宽时,其他传输类可以使用剩下的带宽。
二、技术原理:
ETS属于IEEE数据中心的一个基础协议,是802.1Q(8.6 The Forwarding Process)转发规则部分的传输选择(8.6.8)部分。
在IEEE 802.1qaz文档定义了ETS调度方式有如下三种:
(1)WRR算法(Weighted Round Robin)
WRR(Weighted Round Robin)是目前一个比较常见的轮循(Round Robin)调度算法,它给每个队列分配一定的权重(weight)。WRR算法在队列之间进行轮流调度,队列权重决定在从该队列取报文出来发送的次数。WRR算法可以保证每个队列都能够得到调度,不会出现低优先级队列被饿死的情况。如果出现某一个队列为空,那马上换到下一个队列调度,这样可以使带宽资源可以得到充分的利用。
WRR可以保证每个队列能够至少得到相应权重比例的带宽;当某一个队列没有使用完所分配给他的带宽时,其他队列可以使用这部分带宽,一般用于保证队列的最小带宽。
(2)严格优先级算法(SP,Strict priority algorithm)
严格优先级算法总是先从高优先级的队列中取报文出来发送;当高优先级队列中的队列为空时,才从低优先级的队列取报文出来发送。
一般情况下,严格优先级算法用于通过将关键业务报文放到高优先级队列,来保证一些关键业务的正常运行 。
(3)令牌整形调度算法 (CBS,Credit-based shaper algorithm)
整形算法基于现有令牌桶整形算法模型。当队列中有报文时,往桶放入令牌(速率为idleslope);发包时,从桶中取相应的令牌出来;队列中没有任何报文时,令牌个数设置成0。当令牌个数为非负数时,从队列取报文出来发送;当令牌个数为负数时,不从队列取报文出来发送。
下面分析一下CISCO ETS的实现:
思科没有单独把ETS功能的命令分享出来,而是结合原有的QOS配置,QOS功能中实现了ETS标准描述的功能,在数据中心交换机nexus 5000支持入队列和出队列方向的带宽分配,支持6个队列。支持全局和接口上配置ETS功能。
ETS功能默认开启,默认ETS配置如下:
(1)送CPU报文被配置成严格优先级队列,用于保证控制报文的传输,对用户不可见。
(2)FCoE 流量(优先级为3的流量)被配置到一个非丢弃的队列中,带宽分配50%。
(3)正常流量被配置到另外一个队列,带宽分配50%。
思科支持匹配ACL,IP TOS字段,COS字段,ip rtp端口号等属性进行流量区分,将不同的流量放到不同的队列中,基于队列进行带宽分配或者设置优先级队列。
注:有些产商把这个功能叫做CEE,其实描述的是一个功能。