抓包工具dumpcap
说明
- 请用户先参见安装抓包工具后再参考本章节进行使用。
- K-NET使用的DPDK版本必须与抓包依赖的DPDK版本保持一致。当前仅支持21.11.7版本,该程序会随版本变更,需确保在正确版本下使用抓包工具。
- SP670网卡用户抓包时需要使用LD_PRELOAD=/usr/lib64/librte_net_hinic3.so。
抓包工具保留说明
保留原因
K-NET保留抓包工具dumpcap的主要原因是为了支持网络故障诊断和性能分析:
- 网络故障定位:当业务出现网络连接问题、数据包丢失、建链失败等异常情况时,抓包工具可以帮助运维人员捕获并分析网络流量,快速定位问题根因。
- 性能分析:通过分析捕获的数据包,可以评估网络延迟、吞吐量、协议效率等性能指标,为性能优化提供数据支撑。
使用场景
抓包工具仅限以下授权场景使用:
- 问题排查阶段:在明确的网络故障或性能问题发生时,由运维人员使用。
- 测试验证阶段:在测试环境中进行功能验证、性能测试或兼容性测试。
安全风险
抓包工具仅抓取报文头,不涉及敏感信息获取。
命令格式
LD_PRELOAD=/usr/lib64/librte_net_hinic3.so ./dumpcap [-D] [-h] [-i <pci_bdf_port>] [-c <packet_num_>] [-f "<filter expression>"] [-w <file_name>] [-a <stop_condition>_][-g] [-n] [-q] [-v] [-d] [-s] [-p] [-P]
参数说明
高频参数说明
| 选项 | 是否必选 | 说明 |
|---|---|---|
| -D | 否 | 显示可用PCI网口。 |
| -h | 否 | 使用帮助信息。 |
| -i <pci_bdf_port> | 否 | 抓取精确指定网口的数据包。例如:-i 0000:06:00.0。不加-i则查找默认的一个DPDK接管网口。 |
| -c <packet_num> | 否 | -c 6000:统计6000包后结束。例如:-c 6000。 |
| -w <file_name> | 否 | -w ./tx.pcap:将文件写入到当前目录的tx.pcap文件中。例如:-w ./tx.pcap。若未指定文件路径,默认写入/tmp目录,例如 |
| -f <filter_expression> | 否 | -f "host 192.168.1.1 || port 6390":抓取数据包中有192.168.1.1或者端口为6390的数据包。 |
其他参数说明
| 选项 | 是否必选 | 说明 |
|---|---|---|
| -a <stop_condition> | 否 | -a 100,例如抓取100kB的包停止,-a filesize:100。 |
| -g | 否 | 支持linux群组用户访问抓包文件。 |
| -q | 否 | 不报告抓包数量。 |
| -v | 否 | 版本信息。 |
| -d | 否 | 打印过滤条件码。 |
| -s | 否 | 抓包大小,该参数对K-NET应用不可用,因此出于安全起见,K-NET仅会抓取数据包头。 |
| -p | 否 | 默认配置参数,关闭混杂。 |
| -P | 否 | 默认配置参数,抓包文件格式pcap。 |
| -n | 否 | 未使用,是预留参数。 |
使用示例
说明
使用抓包前请先启动K-NET。抓包工具启动前已经运行的业务进程才能被抓包,如果新增业务进程,请重启抓包工具。业务启动命令参见特性指南中各功能示例。
-
进入“dpdk-stable-21.11.7/app/dumpcap”目录再使用抓包定位K-NET劫持的业务。
LD_PRELOAD=/usr/lib64/librte_net_hinic3.so ./dumpcap -w /home/KNET_USER/tx.pcap # 使用默认DPDK接管网口,抓取K-NET业务数据包,写入/home/KNET_USER用户目录下,文件名为tx.pcap LD_PRELOAD=/usr/lib64/librte_net_hinic3.so ./dumpcap -w /home/KNET_USER/tx.pcap -f "host 192.168.1.11 && port 6380" # 使用默认DPDK接管网口,在以上条件基础上新增host和port过滤条件, 192.168.1.11为抓包想要过滤的主机IP地址,6380为想要过滤主机的端口 -
如果dumpcap被意外终止,例如被执行pkill -9 dumpcap或pkill dumpcap命令。为了恢复使用,请启动-关闭-重启dumpcap,以恢复抓包定位能力。
以下是意外终止并恢复模拟:
pkill -9 dumpcap LD_PRELOAD=/usr/lib64/librte_net_hinic3.so ./dumpcap -w /home/KNET_USER/tx.pcap # 第一次启动“Ctrl+C”正常退出:
LD_PRELOAD=/usr/lib64/librte_net_hinic3.so ./dumpcap -w /home/KNET_USER/tx.pcap # 重启后恢复
获取网络包
-
确保已完成配置大页内存,并在“dpdk-stable-21.11.7/app/dumpcap”目录执行下列操作可开启K-NET抓包。
chmod a+s /usr/lib64/librte_net_hinic3.so setcap cap_sys_rawio,cap_dac_read_search,cap_sys_admin+ep dumpcap LD_PRELOAD=/usr/lib64/librte_net_hinic3.so ./dumpcap -w /home/<username>/tx.pcap -
抓包完成后,“Ctrl + C”结束,在/home/<username>/下生成tx.pcap。
-
可使用
tcpdump -r /home/<username>/tx.pcap -v查看抓包文件或使用Wireshark打开查看。 -
使用
tcpdump -r /home/<username>/tx.pcap读取数据包,查看数据包详情,操作示例如下:
- 正常情况应该有ARP建链包,如上图存在ARP请求和回应。
- 若存在无法建链、丢包、无法接收数据包等异常情况,请先在ping场景下抓包测试,确保网络链路正常,进一步再通过数据包细节排查。