4、RoCE拥塞检测指标:ECN、CNP、队列深度、时延等
4.1 为什么需要拥塞检测指标
RoCE(RDMA over Converged Ethernet)网络依赖无损或有限丢包的有损传输来保证高吞吐与低时延。拥塞一旦发生,若不能及时感知并触发流控,数据包将在交换机或网卡缓冲区中排队,导致时延飙升、吞吐下降,甚至因缓冲区溢出而丢包。拥塞检测指标就是网络设备的“仪表盘”,帮助运维人员判断拥塞是否发生、拥塞发生在哪一跳、拥塞程度有多深,以及当前流控参数(如ECN阈值、PFC优先级)是否配置合理。
RoCEv2拥塞控制的核心机制是ECN(Explicit Congestion Notification,显式拥塞通知)配合CNP(Congestion Notification Packet,拥塞通知报文),辅以交换机队列深度和端到端时延作为旁证。理解这些指标的含义、采集位置和联动关系,是诊断“慢队列”“吞吐不稳”“PFC风暴”等问题的前提。
4.2 核心指标逐一拆解
4.2.1 ECN(显式拥塞通知)
ECN利用IP头中的DS字段(区分服务码点)的低两位(ECT和CE位)传递拥塞状态。RoCEv2报文在IP层启用ECN能力,发送端将报文标记为ECT(ECN-Capable Transport,可进行ECN传输)。当报文经过交换机时,若当前队列深度超过配置的ECN阈值(如ecn-threshold),交换机将报文的CE位(Congestion Experienced,经历拥塞)置1,但不丢弃报文。接收端网卡解析到CE位后,生成CNP报文反馈给发送端。
关键参数:
- ECN阈值(min-threshold / max-threshold):决定交换机何时开始标记。阈值过低会导致过早降速,浪费带宽;阈值过高则标记滞后,拥塞已造成时延恶化。
- 标记概率:部分交换机支持在min与max阈值之间按概率标记,而非一刀切。
4.2.2 CNP(拥塞通知报文)
CNP是以太网报文,目的MAC为发送端网卡的MAC地址,携带拥塞流量的队列信息。接收端每收到一个带CE标记的RoCEv2报文,就会生成一个CNP(通常每报文或每若干报文触发一次,取决于网卡实现)。发送端收到CNP后,按比例降低发送速率(如将当前速率乘以0.5),并在后续周期内尝试恢复(加性增加)。
CNP的统计指标包括:
- CNP发送速率(pps):反映拥塞反馈的频繁程度。
- CNP接收速率(pps):反映发送端感知拥塞的强度。
- CNP占比:CNP报文数 / 总RoCE报文数,若超过1%~2%则说明拥塞较严重。
4.2.3 队列深度(Queue Depth)
队列深度是交换机端口上特定优先级队列(如RoCE使用的优先级3)中缓存的报文数量或字节数。它是拥塞的直接物理表现。通过读取交换机端口的队列深度计数器(如q_depth),可以判断:
- 队列是否持续处于高水位(接近或超过ECN阈值);
- 是否存在瞬时突发导致队列溢出(丢包);
- PFC(优先级流控)是否被频繁触发(队列深度达到PFC阈值时发送暂停帧)。
4.2.4 时延(Latency)
端到端时延是拥塞的宏观结果。RoCE对时延极其敏感,通常要求微秒级。时延指标包括:
- 平均时延:所有报文从发送到接收的均值;
- 尾时延(Tail Latency):如P99时延,反映最差情况,拥塞时尾时延会急剧恶化;
- 时延抖动(Jitter):时延的方差,拥塞导致排队时间不稳定。
4.3 指标联动关系与诊断路径
四个指标并非孤立存在,而是构成一条因果链。下图展示了从拥塞发生到指标变化的完整路径:
诊断时建议按以下路径排查:
- 先看时延:若P99时延超过基线2倍以上,进入下一步;
- 再看队列深度:登录交换机查看RoCE优先级队列深度,若持续高于ECN阈值,说明拥塞点在当前端口;
- 检查ECN标记计数:若ECN标记速率高,说明交换机已触发标记,但发送端降速不足;
- 核对CNP速率:若CNP发送速率高但发送端速率未下降,可能是CNP被丢弃或网卡降速算法失效。
4.4 典型场景:ECN阈值配置不当引发的吞吐抖动
某分布式存储集群使用RoCEv2承载NVMe-oF流量,业务反馈写入吞吐周期性从10GB/s跌至3GB/s,每次持续约200ms。初步排查时延,发现P99时延从正常80μs飙升至2ms。
进一步检查交换机端口队列深度,发现RoCE优先级队列深度在吞吐下跌前持续处于高水位(约120KB),而ECN阈值配置为min=100KB, max=200KB。由于阈值设置偏高,交换机在队列深度达到100KB前不标记ECN,导致发送端未能及时降速,队列继续增长直至触发PFC暂停帧,造成全局性“PFC风暴”,所有流量被暂停,吞吐瞬间归零。
修复措施:
# 交换机配置示例(以某厂商CLI为例)
interface Ethernet1/1
qos ecn
threshold ecn min-threshold 50KB
threshold ecn max-threshold 100KB
qos pfc
threshold pfc 150KB # PFC阈值需高于ECN max-threshold
将ECN阈值下调至min=50KB, max=100KB后,交换机更早标记ECN,发送端提前降速,队列深度稳定在80KB左右,PFC暂停帧不再触发,吞吐恢复平稳。
4.5 误区与复盘
4.6 指标速查表
| 指标 | 采集位置 | 正常范围参考 | 异常信号 |
|---|---|---|---|
| ECN标记计数 | 交换机端口 | 占RoCE流量<0.1% | 持续增长或占比>1% |
| CNP速率 | 接收端/发送端NIC | <100pps/端口 | CNP发送与接收差值大,或速率突增 |
| 队列深度 | 交换机端口队列 | 低于ECN min-threshold | 持续高于ECN max-threshold |
| 平均时延 | 端到端 | 与基线偏差<20% | 超过基线2倍 |
| P99时延 | 端到端 | 与基线偏差<30% | 超过基线3倍以上 |
掌握上述四个核心指标及其联动关系,是RoCE拥塞诊断的基础。实际运维中,应结合交换机与网卡两侧的计数器,形成完整的拥塞证据链,才能精准定位问题并调整流控参数。