2. 启用PFC(优先级流控制)
任务目标
在RoCEv2部署中,PFC(Priority Flow Control,优先级流控制)用于防止无损网络中的缓冲区溢出导致丢包。本案例在交换机上为RoCE流量所使用的802.1p优先级队列启用PFC,并验证配置生效。
环境与依赖
- 支持PFC的以太网交换机(本案例以Cisco Nexus 9000系列为例,命令语法适用于NX-OS)
- RoCE流量使用802.1p优先级3(典型值,需与服务器端RoCE网卡设置一致)
- 已配置RoCEv2所需的其他基础项(如DCBX、ETS),本案例仅聚焦PFC部分
配置实现
以下配置在交换机接口上启用PFC,并将优先级3设置为无丢弃(no-drop)队列:
! 进入系统级PFC配置
switch(config)# priority-flow-control mode on
! 进入接口配置(以上行/下行连接RoCE服务器的端口为例)
switch(config)# interface ethernet 1/1
! 在该接口上启用PFC
switch(config-if)# priority-flow-control mode on
! 将802.1p优先级3映射为无丢弃类
switch(config-if)# priority-flow-control no-drop cos 3
! 确认该接口的优先级3流量使用无丢弃队列
switch(config-if)# show priority-flow-control interface ethernet 1/1
若交换机连接多个RoCE服务器,需在每个相关接口上重复执行上述接口级配置。系统级priority-flow-control mode on只需全局开启一次。
验证方法
配置完成后,执行以下命令确认PFC生效:
switch# show priority-flow-control interface ethernet 1/1
预期输出中应包含:
PFC Mode: On(接口PFC已启用)No-drop COS: 3(优先级3已配置为无丢弃)- 该接口的优先级3队列统计中
Tx Pause Frames与Rx Pause Frames计数存在(当实际流量触发流控时计数增长)
进一步验证:在服务器端向RoCE流量打流(如使用perftest中的ib_write_bw),同时观察交换机接口计数器。若PFC正常工作,当网络拥塞时交换机应发出pause帧,且Rx Pause Frames计数增加,而RoCE流量不应出现丢包(通过ib_write_bw输出的丢包率为0确认)。
常见问题
- 服务器与交换机优先级不一致:服务器RoCE网卡设置的优先级(如3)必须与交换机
no-drop cos配置一致,否则PFC不会作用于RoCE流量。 - PFC未生效:检查是否在物理接口(而非port-channel子接口)上配置;确认交换机全局PFC模式已开启。
- pause帧风暴:若对端设备不支持PFC,交换机持续发送pause帧可能导致对端缓冲区溢出。需确保链路两端均启用PFC且优先级映射一致。