构建RoCE网络的智能无损以太网关键技术
2.1 流量控制技术
PFC(Priority-based Flow Control,基于优先级的流量控制)是构建无损以太网的必选手段之一,能够逐跳提供基于优先级的流量控制。
5
2.1.1 PFC工作原理
PFC允许网络设备根据不同的数据流的802.1p优先级进行流量控制。PFC允许在一条以太网链路上创建8个虚拟通道,并为每条虚拟通道指定一个802.1p优先等级。当特定优先级的流量拥塞时,网络设备可以向对端设备发送反压信号(PFC PAUSE帧),要求对端设备停止发送特定优先级的流量,以防止缓冲区溢出和数据丢失。这种个别流量控制方式允许网络在某些流量拥塞时保持流畅,同时防止对其他流量造成干扰。
如图2-1所示,Device A和Device B之间存在多个802.1p优先级的流量,每个优先级的流量采用单独的虚拟通道转发。当Device B设备指定优先级的报文发生拥塞时,设备会根据本端收到报文的802.1p优先级进行判别,从而确定对报文的处理方式:
- 如果Device B收到报文的802.1p优先级开启了PFC功能,则接收该报文,并向对端Device A发送PFC PAUSE帧,通知对端设备暂时停止发送该类报文。
- 对端Device A设备在接收到PFC PAUSE帧后,将暂时停止向本端发送该类报文。当拥塞仍然存在时,此过程将重复进行,直至拥塞解除。
- 如果Device B收到报文的802.1p优先级未开启PFC功能,则直接将报文丢弃。
- Device B收到的其他802.1p优先级的报文不受影响,可以正常处理。
如果Device A发生拥塞,也会采用上述过程通知Device B之停止发送该优先级的流量。
图2-1 PFC工作原理示意图
如图2-2所示,当Device B的出接口上某个队列产生拥塞时,导致本设备对应流量的入接口缓存超过门限,Device B向所有上游设备(数据报文的来源)发送PFC PAUSE帧。Device A接收到PFC PAUSE,会根据PFC PAUSE的指示,停止发送对应优先级的报文,并将数据存储到本地接口的缓存空间。如果Device A本地接口的缓存消耗超过缓存门限,则也向上游设备发送PFC PAUSE。如此,一级一级的发送PFC PAUSE,直到抵达网络终端设备,从而消除网络节点因拥塞造成的丢包。Device E接收到PFC PAUSE后,对该队列报文进行缓存,未达到Device E的缓存门限时,不向上游设备发送PFC PAUSE。
Device ADevice BPriority 3Priority 4Priority 2Priority 1
6
图2-2 多级设备之间的PFC PAUSE帧处理示意图
2.1.2 PFC死锁检测
- PFC死锁的产生
PFC死锁是指多个设备之间,因为环路等原因,同时出现了拥塞(各自端口缓存消耗超过了阈值),又都在等待对方释放资源,从而导致的“僵持状态”(所有交换机的数据流永久堵塞)。
如图2-3所示,多个设备发生拥塞后互相发送PFC PAUSE帧,使PFC PAUSE帧在网络内泛洪,导致网络内设备无法转发报文,使整网业务瘫痪。
图2-3 PFC死锁产生示意图
收到PFC PAUSE帧,对该队列报文进行缓存。达到缓存门限,向上游设备发送PFC PAUSE帧本地队列Buffer达到缓存门限,向上游设备发送PFC PAUSE帧收到PFC PAUSE帧,对该队列报文进行缓存。未达到缓存门限,不向上游设备发送PFC PAUSE帧数据流量PFC PAUSE帧ABCDEFABCDPFC PAUSE帧
7 - 触发PFC死锁检测
如图2-4所示,Device B的端口Interface收到来自Device A的PFC PAUSE帧后,停止发送对应优先级队列的报文。Device B启动PFC死锁检测定时器,在检测周期内检测该优先级队列收到的PFC PAUSE帧。
图2-4 触发PFC死锁检测示意图 - PFC死锁判定
如图2-5所示,如果在PFC死锁检测周期内,Device B上端口Interface的指定优先级队列一直处于PFC XOFF(PFC反压帧触发门限)状态,即在检测周期内该优先级队列持续不断地收到PFC PAUSE帧,则Device B判定Device A发生死锁,进入死锁状态。
图2-5 PFC死锁判定示意图
PFC反压帧触发门限是缓冲区中某802.1p优先级报文在该存储空间使用的资源上限。该802.1p优先级报文占用的资源达到上限后,会触发设备发送PFC PAUSE帧。 - PFC死锁恢复
设备检测到某个接口发生死锁后,将启动自动恢复定时器。在自动恢复周期内,设备将关闭该接口的PFC功能和PFC死锁检测功能,以忽略接口收到的PFC PAUSE帧。同时,设备对数据报文执行转发或丢弃动作(由管理员手工配置),以规避PFC死锁问题。
在自动恢复定时器超时后,设备将开启PFC功能和PFC死锁检测功能。如果经过死锁恢复后,仍不断出现PFC死锁现象,管理员可以设置PFC死锁的触发上限,当PFC死锁发生次数到达上限后,设备将强制关闭PFC功能和PFC死锁检测功能。待排除故障后,需要管理员手工恢复PFC功能和PFC死锁检测功能。
2.1.3 PFC死锁预防
PFC死锁预防是指设备通过识别易造成PFC死锁的业务流,修改队列优先级,从而预防PFC死锁的发生。
Device ADevice BInterfacePFC PAUSE停止发送对应优先级队列的报文12启动PFC死锁检测定时器Device ADevice BInterfacePFC PAUSE在PFC死锁检测周期内,收到多个PFC PAUSE帧12指定优先级队列一直处于PFC XOFF状态3设备进入PFC死锁状态
8 - PFC死锁预防的产生背景
如图2-6所示,正常情况下,业务流量转发路径为A-B-C-D。当网络的防环机制出现问题时,将会导致业务流量从D向A转发。故障流量在A-B-C-D间转发,形成环路。如果网络设备A~D接口的缓存空间中使用的资源达到PFC XOFF门限,则网络设备向故障流量的上游发送PFC PAUSE帧。PFC PAUSE帧在环网中持续发送,最终导致所有设备进入PFC死锁状态,整网断流。
图2-6 环网PFC死锁示意图 - PFC高风险业务流
PFC死锁预防功能中定义了端口组概念,如图2-7所示,设备D上interface 1与interface 2属于同一端口组。当设备D检测到同一条业务流从属于该端口组的接口上进出,即说明该业务流是一条高风险业务流,易形成PFC PAUSE帧环路,引起PFC死锁。
具有相同PFC死锁预防功能配置的接口属于同一端口组。有关PFC死锁预防功能配置,请参见相关配置手册。
图2-7 PFC高风险业务流
BCDA正常流量故障流量PFC PAUSEBCDAInterface 1Interface 2
9 - PFC死锁预防工作原理
目前,PFC死锁预防仅针对携带DSCP值的业务流量。
设备收到报文后,会根据报文的DSCP值以及设备上dscp-lp的映射关系,将该报文加入指定lp优先级的队列转发。PFC死锁预防功能工作原理为:
(1) 部署端口组:管理员提前规划,将可能产生PFC PAUSE帧的接口划分到同一端口组。例如,一台Leaf交换机,将其上行口划分到同一端口组中。
(2) 识别高风险业务流。
(3) 修改映射关系:设备收到报文后,修改报文的DSCP值和对应的lp优先级,使报文在新的lp优先级队列中使用新的DSCP值转发。
如图2-8所示,Device A发送指定DSCP值的业务流量。Device B收到业务流量后,根据报文的DSCP值以及设备上dscp-lp的映射关系,让业务流量在队列1中转发。如果Device B检测到该业务流量为高风险业务流,易引起PFC死锁,则Device B会修改业务流量队列优先级,使业务流量切换到队列2转发,这样就可以规避队列1可能产生的PFC PAUSE帧,预防PFC死锁的产生。
图2-8 PFC死锁预防工作原理示意图
2.2 拥塞控制技术
拥塞控制是指对进入网络的数据总量进行控制,使网络流量保持在可接受水平的一种方法。拥塞控制与流量控制的区别在于:
- 流量控制是由接收端来控制数据传输速率,防止发送端过快的发送速率引起接收方拥塞丢包;
- 拥塞控制是一个全网设备协同的过程,所有主机和网络中的转发设备均参与控制网络中的数据流量,以达到网络无丢包、低时延、高吞吐的目的。
在现网中,流量控制和拥塞控制需要配合应用才能真正解决网络拥塞。
在当前的数据中心网络中,ECN功能是应用最广泛的一种拥塞控制方法,本章节介绍ECN、ECNOverlay、大小流区分调度、AI ECN和IPCC等功能的基本原理。
Device ADevice B高风险业务流队列1队列2
发表回复