什么是PFC?基于优先级的流量控制技术详解
什么是PFC?基于优先级的流量控制技术详解
PFC(Priority-based Flow Control)是一种基于优先级的流量控制技术,是智能无损网络的基础。它通过为不同优先级的流量提供独立的控制机制,解决了传统以太网Pause机制的局限性。本文将详细介绍PFC的工作原理及其在现代网络中的应用。
什么是PFC
PFC(Priority-based Flow Control)的含义是基于优先级的流量控制,它是目前应用最广泛的能够有效避免丢包的流量控制技术,是智能无损网络的基础。使能了PFC功能的队列,我们称之为无损队列。当下游设备的无损队列发生拥塞时,下游设备会通知上游设备会停止发送该队列的流量,从而实现零丢包传输。
为什么需要PFC
传统流量控制技术的弊端
最基本的流量控制技术是IEEE 802.3定义的以太Pause机制:当网络中的下游设备发现其流量接收能力小于上游设备的发送能力时,会主动发Pause帧给上游设备,要求上游设备暂停流量发送,等待一段时间后再继续发送。
以太Pause机制的实现是将链路上所有的流量都暂停,即流量暂停是针对整个接口。而对实际业务而言链路共享至关重要,链路共享要求:
- 一种类型的突发流量不能影响其他类型流量的转发。
- 一种类型的流量即使大量积压在队列中,也不能抢占其他类型流量的队列资源。
以太Pause机制的弊端在于它无法满足上述链路共享的要求,因为它会暂停所有流量,导致不同类型的流量相互影响。
PFC是如何工作的
PFC是对现有以太Pause机制的增强。如下图所示,DeviceA发送接口被分成了8个优先级队列,DeviceB接收接口则存在8个接收缓存,二者一一对应。DeviceB接收接口上某个接收缓存发生拥塞时,会发送一个反压信号“STOP”到DeviceA,DeviceA则停止发送对应优先级队列的流量。
PFC解决了现有以太Pause机制和链路共享之间的冲突,流量控制只针对某一个或几个优先级队列,而不是整个接口的流量全部中断。每个队列都能单独暂停或重启流量发送,而不影响其他队列,真正实现多种流量共享链路。
rPFC
rPFC(remote PFC)是一种通过将PFC控制在网络边缘,防止PFC反压帧扩散,以避免局部的拥塞节点导致网络性能整体下降的技术。
PFC是一种有效避免丢包的流量控制技术,但当网络边缘的服务器或者目的交换机发生拥塞向网络发送PFC反压帧时,PFC反压帧会在网络内扩散,造成网络性能整体下降。rPFC在目的交换机检测到拥塞流后,会精准定位到拥塞流的源交换机,并远程通知源交换机进行精确流控,从而避免PFC反压帧在网络内扩散,以保证网络性能稳定。
在网络的Leaf节点上开启rPFC功能后,如上图所示,当目的交换机检测到拥塞流时,会向拥塞流的源交换机发送rPFC通告报文进行拥塞通告,源交换机接收到rPFC通告报文后会对源服务器进行PFC反压,源服务器停止对该优先级队列发送流量。整个过程将PFC控制在网络边缘,避免PFC反压帧扩散,保证网络性能稳定。rPFC的工作流程如下。
目的交换机:
- 检测拥塞流:通过Packet Event超长时延可视功能,获取拥塞流信息。
- 拥塞通告:向拥塞流的源交换机发送rPFC通告报文。但如果目的交换机即是源交换机,则rPFC不做处理。
源交换机:
- 接收通告:接收来自目的交换机的rPFC通告报文。
- 流量控制:解封装rPFC通告报文,获取PFC反压帧并发送给源服务器进行PFC反压。