一、PFC 概述
优先级流控制(PFC,Priority Flow Control)是一种在以太网网络中用于流量控制的重要机制,它基于 IEEE 802.1Qbb 标准。PFC 允许在一条以太网链路上创建 8 个虚拟通道,为每个通道分配不同的优先级,并且能够单独暂停和恢复各个通道的流量,而不会影响其他通道的数据传输。这一特性使得 PFC 在处理不同优先级的业务流量时有优势,能够有效防止高优先级流量因低优先级流量的拥塞而受到影响,从而显著提高网络的服务质量(QoS)和可靠性。
PFC 的工作原理是:当接收方检测到某个优先级的流量队列即将拥塞时,会向发送方发送 PFC 暂停帧(Pause Frame),发送方收到该帧后会暂停发送对应优先级的流量。当接收方的队列拥塞情况缓解后,会发送恢复帧通知发送方继续发送流量。此外,PFC 还支持自动重传机制,当设置的保持时间(Hold Off Time)到达且 PFC 标志仍为高时,会自动再次重发 PFC 帧,以确保流量控制的有效性。
二、基于 IP Core 的 PFC 寄存器配置
(一)光口 mac0 的寄存器配置
以下是针对光口 mac0 进行 PFC 功能配置的详细寄存器信息及操作:
- 使能 TX Pause Ports 寄存器
- 地址:bar4 base address + 0x10000 + 0x1814
- 配置值:0xff
- 作用:用于使能 PFC 各端口,开启端口的发送暂停功能。
- 使能自动 TX Pause 重传寄存器
- 地址:bar4 base address + 0x10000 + 0x181C
- 配置值:0xff
- 作用:使能各 pfc_port 的 hold off 模式。在该模式下,PFC 的 hold off 计数器开始工作,当计数器达到设定的时间后,会重新发送 PFC 帧,以保证流量控制的持续有效性。
- 用流控到低 4 字节目的地址寄存器
- 地址:bar4 base address + 0x10000 + 0x1834
- 作用:配置流控帧的低 4 字节目的地址。
- 用流控到高 2 字节目的地址寄存器
- 地址:bar4 base address + 0x10000 + 0x1838
- 作用:配置流控帧的高 2 字节目的地址。
- 用流控到低 4 字节源地址寄存器
- 地址:bar4 base address + 0x10000 + 0x183C
- 作用:配置该光口的源 MAC 地址的低 4 字节,读取 TX MAC 寄存器时,要确保其与流控寄存器的 MAC 地址一致。
- 用流控到高 2 字节源地址寄存器
- 地址:bar4 base address + 0x10000 + 0x1840
- 作用:配置该光口的源 MAC 地址的高 2 字节,同样要保证与流控寄存器的 MAC 地址一致。
- TX 流控 feature 配置寄存器
- 地址:bar4 base address + 0x10000 + 0x1844
- 配置:将 Bit1 设置为 1
- 作用:使能发送侧 TX MAC 发送 PFC 帧,允许发送端根据流量情况发送 PFC 暂停帧。
- 设置 8 个 channel 的 XOFF 等待时间寄存器
- 地址范围:bar4 base address + 0x10000 + 0x1880 ~ 0x189C
- 说明:每个 channel 对应一个 offset 地址,如 PFC pause quanta 0 的 offset 地址为 0x1880,PFC pause quanta 1 的 offset 地址为 0x1884 等。对于 25G 网络,1 对应 8 个时钟周期,时钟频率 clk = 402MHz。该寄存器用于设置每个 channel 的 XOFF 等待时间,当时间到达后会自动解除 XOFF 状态。
- 设置 8 个 channel 的 PFC HOLD OFF 保持时间寄存器
- 地址范围:bar4 base address + 0x10000 + 0x18A0 ~ 0x18BC
- 说明:每个 channel 对应一个 offset 地址,如 PFC holdoff quanta 0 的 offset 地址为 0x18A0,PFC holdoff quanta 1 的 offset 地址为 0x18A4 等。该寄存器用于设置每个 channel 的 PFC HOLD OFF 保持时间,当时间到达且 PFC 标志仍为高时,会自动再次重发 PFC 帧。
- 使能 RX Pause 通道使能寄存器
- 地址:bar4 base address + 0x10000 + 0x1C14
- 配置值:0xff
- 作用:使能接收方的 PFC 暂停通道,允许接收端接收并处理 PFC 暂停帧。
- RX 侧低 4 字节匹配 MAC 地址寄存器
- 地址:bar4 base address + 0x10000 + 0x1C1C
- 作用:配置接收端的低 4 字节匹配 MAC 地址,该地址可以是本侧 MAC、对端 MAC 或者固定值 01 - 80 - c2 - 00 - 00 - 01。
- RX 侧高 2 字节匹配 MAC 地址寄存器
- 地址:bar4 base address + 0x10000 + 0x1C20
- 作用:配置接收端的高 2 字节匹配 MAC 地址,与低 4 字节匹配 MAC 地址共同构成完整的目的地址。
- RX 侧流控配置寄存器
- 地址:bar4 base address + 0x10000 + 0x1C24
- 配置:将 Bit1 设置为 1
- 作用:对接收侧的流控功能进行配置,开启相关的流控处理机制。
(二)光口 mac1 的寄存器配置
光口 mac1 的寄存器配置与 mac0 基本相同,只是基地址有所不同。按照相同的配置方法对各个寄存器进行设置,即可实现光口 mac1 的 PFC 功能。
三、测试结果
经过上述寄存器配置后,系统可以正常进行 PFC 帧的收发。这表明通过合理配置 IP Core 中的寄存器,成功实现了 PFC 功能,能够有效地对不同优先级的流量进行控制,提高了网络的可靠性和服务质量,满足了实际应用场景对网络性能的要求。
总结,PFC 机制在网络流量控制方面具有重要作用,通过对 IP Core 寄存器的精细配置,可以充分发挥 PFC 的优势,为网络的稳定运行提供有力保障。