2.6.2 以太网重装上阵
仅凭10GE是不足以抗衡FC的,因为长帧在FC的世界中不受欢迎。因此,除了有高速带宽的支持外,以太网还必须具备无损性。不过真的能实现以太网的无损吗?答案是“可以”,不过要借助下列内在机制:
·基于优先级的流控制(Priority-based Flow Control,PFC)
·延迟删除
·增强传输选择(Enhanced Transmission Selection,ETS)
·数据中心桥接交换(Data Center Bridging Exchange,DCBE)
·拥塞通告
基于优先级的流控制
FC是不允许出现帧丢失现象的,它使用信用的概念来实现无损控制,在FC链路初始化时,会对每个链路的缓存数进行预定义,以便每个链路的终端能够跟踪可得或未被占用的缓存,这样的链路级流控制在FC中称为缓存到缓存(Buffer-to-Buffer,B2B)流控制。B2B流控制可以控制FC帧的传输速率,能够防止传输量超过接收者的缓存范围。B2B流控制使用缓存到缓存信用数(Buffer-to-Buffer Credit,BB_Credit)作为调整帧传输速率的单元,每发送一个帧,相应可用的BB_Credit都将减1。而另一方面,每收到一个接收者就绪(Receiver-Ready,R_RDY)信号,相应的BB_Credit又将加1,使得可以继续发送其他帧。当BB_Credit的值变成0时,就意味着除非收到新的R_RDY信号,否则发送端将中断帧发送。以太网则借助PAUSE帧(基于IEEE 802.3x)来达到这一目标。当接收端口(接收者)的缓存将耗尽时,它将发出一个PAUSE帧来阻止远程peer(传输者)继续发送,图2-18上部对PAUSE帧进行了说明。但是PAUSE帧机制是对整个链路进行一个PAUSE操作,不能体现粒度差别,当发送者接收到一个PAUSE帧后,它将停止该端口所有的传输行为,这样也并不符合统一DC光纤的目标。
图 2-18 PAUSE帧及PFC比较
基于IEEE 802.1Qbb标准的PFC是对PAUSE机制的增强,它在PAUSE帧中增加了一个域来标识将对哪一个优先级别(IEEE 802.1p可以设置8个级别)进行PAUSE操作。换句话说,PFC在物理以太网链路上创建了8个单独的“虚拟链路”,任意一条虚拟链路都可以自主地被停止和重启。新增的优先级粒度允许我们为链路上不同的协议传输设置不同的服务等级(Classes of Service,CoS)。例如,像FCoE(更多有关FCoE的详细内容,请参考2.6.3节的相关内容)这样的协议,要求介质级别的可靠性,不能容忍帧丢失,因此可以被映射到无丢失(有PAUSE)等级,而诸如IP这样的协议能够接受尽力而为型的帧传送效率,就可以被映射到可丢失(无PAUSE)等级。
图2-18底部展示了一个简化的PFC样例,该样例中只设置了两个等级:IP传输为CoS 0等级,FCoE传输为CoS 3等级,只有FCoE对应的CoS(优先级为3)才启动了PAUSE帧,IP传输属于另外一个CoS等级,不会受到PAUSE的影响。如果出现拥塞,不会对属于CoS 0级别的溢出帧进行PAUSE控制,这些帧会被简单丢弃,IP传输不要求无损以太网因为TCP或更高级别协议(如果使用了UDP)将会处理IP包丢失问题。
说明:PFC帧的以太域类型值为0x8808(与PAUSE帧的以太域类型值相同),Opcode的值为0x0101(PAUSE帧的Opcode值为0x0001)。
延迟删除
由于PFC将缓存需求返回给数据源,因此它不会区分网络流量的暂时性突发与长期拥塞。延迟删除位于传统以太网与PFC控制中间,它是另外一种以太网强化机制,差别在于:对于暂时性网络流量突发,延迟删除将采取PAUSE或PFC机制来减小帧丢失;而在处理长期拥塞时,则会通过帧丢弃触发更上一层拥塞控制,使得系统中只会存在短期流量突发,而不再有长期拥塞。
延迟删除可以采用每用户优先级激活,它使用代理队列来衡量网络流量突发的时间,在常规操作中,代理队列将效仿实际队列进行帧的增加或删除,当出现网络流量突发并导致实际队列达到特定阈值时,系统将向数据源发送一个PAUSE或PFC帧,此时,容量远超过实际队列的代理队列将继续接收帧,当代理队列也被填满后,系统将告知发送者释放PAUSE或PFC帧,此时,如果拥塞仍在持续,就会造成帧丢失,发生这一现象时,系统将触发TCP流量控制以保护长久流。
在出现暂时性网络流量突发状况时,实际及代理两条队列都应该快速消耗掉缓存空间以便实际队列自己能够释放PAUSE帧;如果出现持续拥塞,代理队列将贡献出所有缓存空间,并释放PAUSE帧。此时,实际队列将开始丢弃帧,并通过上层协议解决拥塞。借助延迟删除,在特定一段时间内可以使用指定的CoS流控制机制,如果超过该时间段,拥塞还依然持续,就可以采用传统的抛弃处理方法。延迟删除能够配合PFC一起对“短期拥塞”进行调节,而不必因此增加接口的物理缓存。
增强传输选择
PFC可以在一条物理链路上创建8个不同的虚拟链路类型,基于IEEE 802.Qaz的ETS能够启动对这些虚拟链路的带宽管理,它是对PFC的一个补充。ETS提供了基于带宽分配及延时的优先级处理,即根据帧的优先级将它们分配到不同的组中,然后按照一定比例将物理链路的最大可得带宽分配给这些组,ETS的目的是实现一个带严格优先级高效的两级硬件亏损加权轮循(Deficit Weighted Round Robin,DWRR)调度算法。
图2-19展示了三类不同的应用传输:进程间通信(Inter-Processor Communication,IPC)、LAN及SAN(例如FCoE),这些应用传输类型拥有不同的优先级变量或CoS,比如,IPC的CoS为7,LAN传输包括了CoS 0、1、4~6,而SAN传输包括CoS2和CoS3。ETS不会关注有多少可得的传输等级,而是会将这些传输分成不同的优先级别组(Priority Group,PG),并为每个小组分配一个优先级组ID(Priority Group ID,PGID)。在我们给出的样例中,SAN传输等级(CoS 2和3)被映射到PGID 0,LAN传输等级(Cos 0、1、4~6)被映射到PGID 1,而IPC(CoS 7)的PGID则为15。
图 2-19 ETS样例
第一级调度在每个PG内部完成,第二级调度则基于分配给每个PG的带宽(BandWidth,BW)进行。本例中,50%的物理链路可得带宽被分配给了PGID 0,剩下的50%分配给了PGID 1,PGID 15是一个具有特殊意义的优先级组标号,它意味着该优先级组不受带宽限制,任何被映射到PGID 15的优先级都会使用严格的优先级调度(不由ETS负责),本例中IPC(CoS 7)就属于这一类。
说明:PGID的范围为0~15,PGID为15的优先级组不能够分配任何PG%,属于这一组的优先级不受带宽限制,PGID 8~14的值属于保留值,0到7之间(包括7)的PGID必须用作带宽分配(或限制)配置。
数据中心桥接交换
基于IEEE 802.1Qaz的DCBX是IEEE 802.1数据中心桥接(Data Center Bridging,DCB)的管理协议,属于链路层发现协议(IEEE 802.1AB),支持以太网参数的自动交换以及交换机与终端之间的发现功能。可以被交换的以太网扩展和特性参数包括:
·PFC
·ETS中的优先级组
·拥塞通告
·应用(例如FCoE)
·逻辑下行链路
·网络接口虚拟化
DCBX能够发现链路两端设备的能力,并检测设备配置是否匹配,如果两端设备中有一个设备未配置同时也支持端到端的配置,DCBX可以对该设备进行基本配置。两端设备可以选择希望支持的特性,以及是否接受另一端设备的配置参数。简而言之,DCBX协议有助于保持链路配置的一致性,并降低了新以太网扩展功能配置开销,DBCX可以提供以太网功能强化,但同时配置开销更低,错误也更少。
拥塞通告
无损以太网有可能产生“传染性”拥塞,蔓延到整个网络,并导致有害的线头(head-of-line,HOL)阻塞,某些形式的L2端到端拥塞通告协议能够缓和这一问题。
IEEE 802.1Qau体系使用量化的拥塞通告(Quantized Congestion Notification,QCN)来定义拥塞点(Congestion Point,CP)以及重启点(Reaction Point,CP)。在模型中,在拥塞点测量拥塞规模,在重启点进行限速或背压,以控制传输规模,降低拥塞的影响。RP应该尽可能地接近拥塞源头,当产生拥塞时,CP(发生拥塞的汇聚层交换机)将向拥塞源以及RP发出通告消息,告知其当前的拥塞状态,当接收到拥塞通告消息后,位于RP的限速器或流量控制器将开始工作,减缓网络的传输速率。拥塞通告的目的是将发生在网络核心区的拥塞转移到网络边缘,以避免拥塞蔓延到网络其他部分。在网络边缘进行拥塞控制相对容易些,因为网络边缘的流量远低于网络核心区,这意味着在网络边缘更容易确定并限制那些引起上行通道拥塞的网络流。
说明:拥塞通告消息包含了一个反馈质量,采用一个6位数对其“量化”,“量化”拥塞通告也是源自于此。
如图2-20所示的一台汇聚层交换机,类似CP的功能,向两台接入层交换机,此处为RP,发送拥塞通告消息,要求它们降低网络传输的速率,以缓和网络核心区域的拥塞,防止它蔓延到全网范围,而只会对接近拥塞源附近的区域造成影响。
说明:QCN信号与PAUSE之间的差别在于PAUSE是从一跳到下一跳,而QCN拥塞通告消息是端到端的,这些拥塞通告消息被传播到拥塞源头,MDS交换机在FC上实现了一个类似机制,称为光纤通道拥塞控制(Fibre Channel Congestion Control,FCC)。
图 2-20 QCN信号