最佳答案
测试 RoCE 网络的 PFC(优先级流控) 和 ECN(显式拥塞通知),核心是验证:PFC 能在拥塞时暂停指定优先级、不丢包;ECN 能标记拥塞、触发 DCQCN 降速、同样零丢包。下面给出完整测试方案(含测试仪 / 服务器两种环境、命令、判断标准)。
一、测试前提(必须一致)
全网(交换机 + 网卡)PFC 优先级统一(常用 3/4/6)
DSCP ↔ TC ↔ Priority 映射全网一致(常用:DSCP 26 → TC3 → PFC 3)
队列缓存、WRED/ECN 阈值、PFC Xon/Xoff 配置正确
网卡(NVIDIA/Mellanox CX-5/CX-6)开启 PFC + ECN + DCQCN
通用检查命令
bash
运行
# 交换机(H3C/华为/Cisco)
display qos queue # 查看队列映射、WRED、ECN
display dcb pfc # 查看PFC使能优先级、Xon/Xoff
display qos wred # 查看ECN/WRED阈值
# 主机(NVIDIA网卡)
mlnx_qos -i ethx # 查看PFC使能(0/1矩阵)
cat /sys/class/net/ethx/ecn/roce/enable # 查看ECN使能(1=开启)
ibv_devinfo | grep -E "vendor_part_id|fw_ver" # 确认网卡支持RoCEv2
二、PFC 功能测试(无损防丢)
测试目的
验证:拥塞时交换机发送 PFC 暂停帧
验证:仅暂停对应优先级队列,其他队列不受影响
验证:RoCE 流量全程零丢包
1)测试拓扑(最简)
plaintext
测试仪Port1(Sender)→ DUT交换机 → 测试仪Port2(Receiver,拥塞点)
↳ 测试仪Port3(Background低优先级流量)
2)测试步骤(测试仪版,Spirent / 信而泰 / Peak9000)
配置基础
端口:100G/25G,MTU 9214
流 1(RoCE):Priority 3 / DSCP 26,线速发送
流 2(背景):Priority 0,线速发送
接收端口(Port2)限速 70%(制造拥塞)
触发 PFC
同时启动流 1 + 流 2
观察:Port2 队列 3 缓存上涨 → 触发 PFC Xoff → Port1 暂停发送
关键观测点(判断生效)
交换机:
bash
运行
display dcb pfc statistics interface 1/0/1
# 看:PFC Rx/Tx 计数持续增长
display qos queue interface 1/0/1
# 队列3 占满、但 **drop count = 0**
测试仪:
RoCE 流速率骤降(被暂停)
低优先级流(Pri0)不受影响、正常转发
RoCE 丢包率 = 0%
3)服务器实测版(ib_write_bw)
节点 A:ib_write_bw -d rocep0 -F -R -s 8388608 --tos=26
节点 B:ib_write_bw -d rocep0 -F 1.1.1.1
同时在同链路跑背景流量(iperf3)制造拥塞
检查:
bash
运行
# 交换机PFC帧计数上涨
display dcb pfc statistics
# RDMA 性能稳定、无重传、无丢包
4)PFC 失效常见原因
优先级映射错误(DSCP→TC→Priority 不匹配)
PFC 只开了发送 / 只开了接收
Xoff 阈值太大、队列溢出前不触发
网卡 mlnx_qos 对应 priority 未使能(0,0,0,1,...)
三、ECN 功能测试(拥塞标记 + DCQCN 降速)
测试目的
验证:队列拥塞时交换机正确标记 ECN(CE=11)
验证:接收端回送 CNP(拥塞通知报文)
验证:发送端收到 CNP 后降速、全程零丢包
1)测试拓扑
plaintext
测试仪Port1(Sender)→ DUT交换机 → 测试仪Port2(Receiver,拥塞)
2)测试步骤(测试仪版)
配置 ECN
交换机:队列 3 开启 ECN + WRED
bash
运行
# H3C 示例
drop-profile ECN_PROFILE
color green low-limit 40 high-limit 60 discard-percentage 0 ecn
# discard-percentage 0:只标记不丢弃
interface 100G1/0/1
qos queue 3 wred ECN_PROFILE
qos queue 3 ecn
测试仪:
流:RoCEv2,DSCP 26,ECN=10(ECT)
开启 DCQCN 自动速率调整
接收端口限速 70%(制造拥塞)
观测指标(ECN 生效标准)
交换机:
bash
运行
display qos queue statistics interface 1/0/1
# 队列3:WRED/ECN marked 计数增长
# drop count = 0
测试仪:
报文IP 头 ECN 字段被置为 11(CE)
CNP 报文回传数量增长
发送速率自动下降、稳定在限速附近
丢包率 = 0%
3)服务器实测版(DCQCN)
主机开启 ECN/DCQCN:
bash
运行
# 启用ECN
echo 1 > /sys/class/net/ethx/ecn/roce/enable
# 设置RoCE拥塞优先级(与PFC一致)
echo 50 > /sys/class/infiniband/mlx5_0/device/parameters/cc_priority
压测(多流并发制造拥塞):
多机同时:ib_write_bw -x 3 --tos=26
检查:
bash
运行
# 交换机ECN标记计数
display qos wred statistics
# 主机CNP收/发
ethtool -S ethx | grep -i cnp
# 速率自动下降、无丢包
4)ECN 失效常见原因
交换机队列未 ecn 使能
WRED 阈值太高 / 太低,不触发标记
主机 ECN/DCQCN 未开
DSCP / 队列映射错误,ECN 作用在错误队列
CNP 优先级太低、被阻塞(建议 CNP 使用 DSCP 63 / Highest Pri)
四、PFC + ECN 联合测试(真实无损场景)
测试逻辑
轻度拥塞:ECN 标记 → DCQCN 降速 → 无 PFC
重度拥塞:ECN 不足 → 队列上涨 → PFC 暂停 → 零丢包
联合判断标准
低拥塞:只有 ECN 标记、无 PFC 帧
高拥塞:先 ECN → 再 PFC
全程:RoCE 丢包 = 0、无 PFC 风暴、无死锁
五、常用工具汇总
测试仪:Spirent TestCenter、信而泰、Peak9000(支持 RoCEv2/CNP/ECN/PFC)
服务器:
perftest:ib_write_bw/ib_read_bw(RDMA 压测)
mst/mlnx_qos:网卡 QoS/PFC 配置
ethtool -S、cat /sys/class/net/ethx/ecn/...:ECN/CNP 统计
交换机:
display dcb pfc statistics
display qos queue/wred statistics
display qos ecn
六、快速验收清单(Pass/Fail)
✅ PFC
拥塞时 PFC 帧 Tx/Rx 增长
目标优先级 零丢包
非目标优先级 不受影响
✅ ECN
拥塞时 ECN marked 计数增长
CNP 报文正常收发
速率 自动降速、无丢包
✅ 联合
轻度:ECN 为主、无 PFC
重度:PFC 兜底、零丢包
无 PFC 死锁 / 风暴
(0)
(0)
暂无评论
display dcb pfc命令输出)(0)
暂无评论
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
暂无评论