4、RoCE网络丢包排查工具:ethtool、perftest、tcpdump与Wireshark、交换机日志
说实话,RoCE网络出问题,十有八九是丢包闹的。但丢包这玩意儿,它不会自己告诉你“我丢了”。你得靠工具去挖。今天我就把这几年排查RoCE丢包最趁手的几把“刀”摆出来,咱们一个一个说。
4.1 ethtool:网卡层面的“听诊器”
ethtool是我每次排查问题的第一站。它能看到网卡最底层的状态。我个人习惯,先跑这条命令:
ethtool -S eth0 | grep -E "drop|error|crc|fcs|pause"
为什么看这些?因为RoCE对丢包极度敏感。哪怕一个CRC错误,都可能导致整个QP(Queue Pair)挂掉。我在项目中遇到过,某次业务延迟飙升,查了半天,最后发现是网线接头氧化,导致FCS错误帧暴增。ethtool一眼就揪出来了。
另外,ethtool -a eth0 可以看流控(Pause Frame)的状态。RoCEv2依赖PFC(优先级流控),如果这里没开,或者配置不对,那丢包几乎是必然的。
| 计数器 | 含义 | 排查方向 |
|---|---|---|
| rx_crc_errors | 接收端CRC校验失败 | 检查线缆、光模块、信号完整性 |
| rx_fcs_errors | 帧校验序列错误 | 同上,可能是物理层问题 |
| rx_pause_xon | 接收到的PFC暂停帧 | 对端背压,可能本端处理不过来 |
| tx_pause_xoff | 本端发送的暂停帧 | 本端拥塞,需要检查队列或缓存 |
ethtool -S,观察计数器是否在增长。如果增长很快,那问题就锁定了。
4.2 perftest:RoCE性能的“试金石”
ethtool看的是网卡硬件,perftest测的是端到端的真实性能。它基于libibverbs,直接绕过了内核协议栈,能最真实地反映RoCE链路质量。
我最常用的两个测试:
- ib_write_bw:测带宽。命令很简单:
ib_write_bw -a -d mlx5_0(服务端),ib_write_bw -a -d mlx5_0 192.168.1.2(客户端)。如果带宽远低于理论值,比如100G网卡只跑出40G,那基本可以断定中间有丢包或流控在频繁介入。 - ib_read_lat:测延迟。命令:
ib_read_lat -a -d mlx5_0。RoCE的延迟通常在1-3微秒级别。如果延迟跳到几十微秒甚至毫秒级,那说明网络在重传,丢包无疑。
4.3 tcpdump与Wireshark:抓包分析“显微镜”
当ethtool和perftest都指向丢包,但找不到具体原因时,就该抓包了。RoCEv2的报文是封装在UDP里的,所以抓包时要注意过滤条件。
我常用的抓包命令:
tcpdump -i eth0 -s 100 -w roce.pcap 'udp port 4791'
这里 port 4791 是RoCEv2的默认端口。抓到包后,用Wireshark打开,重点看几个地方:
- CNP(Congestion Notification Packet):这是RoCEv2的拥塞通知报文。如果看到大量CNP,说明网络已经拥塞到在主动丢包了。
- 重传包:在Wireshark里,可以设置显示PSN(Packet Sequence Number)不连续的报文。PSN跳号,就是丢包了。
- ICMP不可达:如果中间交换机或路由器不支持RoCE,可能会回ICMP Destination Unreachable。这也是丢包的一种。
ethtool -K eth0 lro off。
4.4 交换机日志与计数器:网络核心的“黑匣子”
很多时候,问题不在服务器端,而在交换机上。交换机的计数器是排查丢包的终极武器。
不同厂商的命令略有不同,但思路一致。以Cisco Nexus为例:
show interface counters errors
show interface counters storm-control
show hardware internal buffer info pfc
重点看这几个计数器:
- CRC Errors:物理层问题,和ethtool看到的对应。
- PFC Pause Frames:看入方向和出方向的PFC帧数量。如果入方向远大于出方向,说明上游在频繁暂停本交换机,本交换机可能成为瓶颈。
- Tail Drop / WRED Drop:队列满了丢包。这是RoCE最怕的。如果看到这个计数器在增长,那必须调整PFC的阈值或队列调度策略。
watch -n 10 'show interface counters errors',这样能捕捉到瞬时的丢包。
知识体系总览
下面这张图,是我自己总结的RoCE丢包排查工具链。从服务器网卡到交换机,层层递进。
嗯,这四类工具,基本覆盖了RoCE丢包排查的方方面面。从网卡硬件寄存器,到端到端性能,再到报文级别的细节,最后到交换机核心。你想想看,只要按这个链路走一遍,90%的丢包问题都能找到根因。
当然,工具只是工具。真正值钱的,是你看懂这些计数器背后含义的能力。这个,咱们后面章节慢慢聊。