PFC基于优先级的流量控制原理

PFC原理

在这里插入图片描述

在这里插入图片描述

原理:
FC(IEEE 802.3X协议)缺点:一旦链路被暂停,发送方就不能再发送任何数据包,如果是因为某些优先级较低的数据流引发的暂停,结果却让该链路上其他更高优先级的数据流也一起被暂停了,其实是得不偿失的。它虽然也能达到无丢包的要求,但它会阻止一条链路上的所有流量,它会暂停整条链路。

基于优先级的流量控制(PFC)是对暂停机制的一种增强。

PFC在基础流控IEEE 802.3X基础上进行扩展,允许在一条以太网链路上创建8个虚拟通道并为每条虚拟通道指定一个 IEEE 802.1P的相应优先级允许单独暂停和重启其中任意一条虚拟通道,同时允许其它虚拟通道的流量无中断通过。这一方法使网络能够为单个虚拟链路创建无丢包类别的服务,使其能够与同一接口上的其它流量类型共存。

PFC将流控的粒度从物理(端口)细化到(8个虚拟通道),分别对应Smart NIC硬件上的8个硬件发送队列(这些队列命名为Traffic Class,分别为TC0,TC1,…,TC7),在RDMA不同的封装协议下,也有不同的映射方式。

PFC将一个端口虚拟为8个(假设)不同优先级的队列,比如T0队列,下游交换机对应的T0队列的输入端口队列长度超过预先设定的门限Xoff时,下游交换机会触发PFC,并向上游交换机发送PAUSE帧,这个暂停帧是让上游交换机的T0队列暂停放数据包,而其它的队列T1–T7都还正常发送数据包。当下

### PFC(Priority-based Flow Control)实现优先级流量控制原理和方法 PFC(Priority-based Flow Control)是一种基于优先级流量控制机制,其核心原理是通过在以太网链路上创建多个虚拟通道,每个通道对应一个优先级等级(IEEE 802.1P优先等级,cos),从而实现对不同流量的独立控制。具体而言,PFC允许在拥塞发生时,单独暂停和重启特定优先级的流量,而不会影响其他优先级的流量[^1]。 #### 1. 虚拟通道的创建 PFC允许在一条以太网链路上创建8个虚拟通道,每个通道对应一个IEEE 802.1P优先等级(cos)。这些虚拟通道可以用于区分不同类型的流量,例如存储流量、高性能计算流量和普通IP流量。通过这种方式,网络管理员可以将对丢包敏感的上层协议(如FCoE)映射到特定的优先级通道,而将常规的以太网服务映射到其他通道[^3]。 #### 2. 流量控制机制 当网络中某个节点出现拥塞时,PFC会根据流量的优先级进行响应。与传统流控机制不同,传统的流控会阻止一条链路上的所有流量,而PFC仅会暂停特定优先级的流量。具体来说,当出口设备检测到拥塞时,会向其上游设备发送XOFF信号,指示其暂停发送特定优先级的数据包。上游设备接收到XOFF信号后,会根据指示停止发送或延迟发送数据,并将数据存储在本地端口缓存中。如果本地端口缓存消耗超过阈值,则继续向上游反压,直到网络终端设备(如安装了支持PFC的CNA卡的客户端)收到XOFF信号并暂停发送数据流[^5]。 #### 3. 拥塞解除机制 当拥塞解除后,出口设备会发送XON信号,通知上游设备可以继续转发缓存中的数据包。上游设备在转发缓存数据后,也会向其上游设备发送XON信号,最终通知终端设备可以重新发送数据流。这种逐级解除拥塞的机制确保了网络中特定优先级流量的无丢包传输[^5]。 #### 4. 与ECN的协同工作 PFC还可以与显式拥塞通知(ECN)结合使用,以发挥两者的优势。ECN基于流量,但其效果可能会延迟;与此相反,PFC基于优先级(类别或类型),其及时行动可避免丢包。同时使用这两种方法,可以使操作既迅速又基于流量,从而进一步提高网络的性能和可靠性[^4]。 ### 示例代码:PFC配置示例 以下是一个简单的PFC配置示例,展示了如何在Cisco设备上启用PFC功能: ```bash # 进入全局配置模式 configure terminal # 创建一个优先级组 priority-flow-control enable # 在接口上启用PFC interface GigabitEthernet0/1 priority-flow-control mode on # 配置特定优先级流量控制 priority-flow-control cos 3 enable ``` 上述配置示例中,`priority-flow-control enable`命令用于创建一个优先级组,`priority-flow-control mode on`命令用于在接口上启用PFC功能,而`priority-flow-control cos 3 enable`命令则用于启用特定优先级(cos 3)的流量控制。 ###
PFC 是构建无损以太网的必选手段之一,能够逐跳提供基于优先级流量控制。设备在进行报文转发时,根据报文的优先级进入对应映射关系的队列中进行调度转发。当某一优先级报文发送速率超过接收速率,导致接收方可用数据缓冲空间不足时,设备通过PFC PAUSE帧反馈给上一跳设备,上一跳设备收到PAUSE帧报文后停止发送本优先级报文,直到再收到PFC XON帧或经过一定的老化时间后才能恢复流量发送。通过使用PFC功能,使得某种类型的流量拥塞不会影响其他类型流量的正常转发,从而达到同一链路上不同类型的报文互不影响。智能无损网络基于PFC机制提供了智能化拥塞控制技术,可以解决传统以太网络拥塞丢包、时延大的约束,为RoCEv2分布式应用提供“无丢包、低时延、高吞吐”的网络环境,满足分布式应用的高性能需求。PFC(Priority-based Flow Control,基于优先级流量控制)也称为 Per Priority Pause 或 CBFC(Class Based Flow Control),是对 Pause 机制的一种增强。当前以太 Pause 机制(IEEE 802.3 Annex 31B)也能达到无丢包的要求,原理如下:当下游设备发现接收能力小于上游设备的发送能力时,会主动发 Pause 帧给上游设备,要求暂停流量的发送,等待一定时间后再继续发送数据。但是以太 Pause 机制的流量暂停是针对整个接口,即在出现拥塞时会将链路上所有的流量都暂停。而 PFC 允许在一条以太网链路上创建8个虚拟通道,并为每条虚拟通道指定一个优先等级,允许单独暂停和重启其中任意一条虚拟通道,同时允许其它虚拟通道的流量无中断通过。这一方法使网络能够为单个虚拟链路创建无丢包类别的服务,使其能够与同一接口上的其它流量类型共存。
03-21
### PFC 流量控制机制及其在网络中的作用 #### 工作原理 优先级流量控制(Priority Flow Control, PFC)是一种用于无损以太网网络的技术,它允许在特定优先级上暂停帧传输而不影响其他优先级的数据流。PFC 的核心功能是通过 IEEE 802.1Qbb 标准定义的 PAUSE 帧来实现[^1]。当接收端设备检测到其缓冲区即将满载时,会向发送端发出一个 PAUSE 市场信号,指示后者暂时停止发送数据。 具体来说,PFC 支持按优先级独立启用或禁用流量控制。这意味着如果某个优先级上的队列接近溢出,则仅该优先级会被暂停;而其余未受影响的优先级可以继续正常运行。这种选择性的暂停能力极大地提高了链路利用率并减少了不必要的延迟。 #### 在无损以太网中的角色 在数据中心桥接(Data Center Bridging, DCB)环境中,特别是对于存储区域网络(SANs),如光纤通道 over Ethernet (FCoE),以及远程直接内存访问(RDMA)应用而言,保持零丢包是非常重要的。因此,在这些场景下部署支持 PFC 功能的交换机变得至关重要。 通过实施 PFC 技术,可以在共享同一物理介质的不同业务之间提供服务质量保障(QoS) 。例如,在融合增强型以太网(CEE)架构里,不同类型的流量被分配给不同的优先级类别,并利用PFC防止高带宽需求的应用程序干扰低延敏感的服务。 ```python # Python 示例展示如何模拟简单的PAUSE帧逻辑 class PauseFrameSimulator: def __init__(self): self.queue_status = {} def check_queue(self, priority_level): # 检查指定优先级下的队列状态 if self.queue_status.get(priority_level, 0) >= THRESHOLD: return True # 需要发送PAUSE帧 else: return False def send_pause_frame(sender, receiver, priority_levels_to_pause): """ 发送针对某些优先级的PAUSE帧 """ pass ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值