13 如何为 ag_driver 录制一个 PCAP 文件
13.1 使用 WireShark 抓包
13.1.1 选择网卡
打开 WireShark 的第一步,是选择在哪个网卡抓包。这里选择的网卡是 enp0s3。
不要选择
any,这样录制的 PCAP 文件,协议为linux cooked capture。这不是Ethernet格式,ag_driver不能识别。如果雷达支持
VLAN,可以选择在物理网卡上还是在虚拟网卡上抓包。在前者抓包带VLAN层,在后者抓包则不带。

使用如下的网络工具,可以确定网卡的名字。
ipconfig- Windows平台ifconfig- Linux平台
13.1.2 抓包
指定了网卡,就可以抓包了。

13.1.3 导出 PCAP 文件
13.1.3.1 过滤掉不要的包
导出 PCAP 文件时,你可能希望只保留 MSOP/DIFOP Packet。指定过滤条件就可以了。
例如,下面过滤条件指定了端口 51180 和 7788 进行过滤。
udp.dstport == 51180 or udp.dstport == 7788
13.1.3.2 导出所有包
选择菜单 File -> Export Specified Packets ... ,可以选择导出所有包。在上面的图中,Packet Range 选项,选择 All Packets,导出所有包。

保存文件时,选择 pcap 格式,而不是 pcapng 格式,后者 ag_driver 还不支持。
Packet Range 下有两列数字:Captured 和 Displayed。这里保持 Displayed 就好了。
Captured是抓到的所有包,Displayed是根据前面的过滤条件过滤后的包。比如All packets这一栏,总共抓到 2874525 个包,过滤后还有 2874007 个包。如果选择
Captured,则导出的 PCAP 文件是从所有包中提取;如果选择Displayed,则只从过滤后的包中提取。
13.1.3.3 导出指定范围内的包
如果包数太多,只想导出部分包,则可以指定导出的范围。
下面的例子指定的范围是 1 到 300000,这两个序号是在抓到的所有包中的序号,而实际导出的包数是 299904 个。

13.1.3.4 标记并导出特定包
有时候需要精确指定导出哪几个包。这时可以先通过右键菜单 Mark/Unmark Packet 标记这几个包。

导出时,选择 Marked packets only。

13.1.3.5 标记并导出特定范围内的包
也可以先标记两个包,再导出它们两个之间的所有包。在导出时,选择 First to last marked 就可以。

13.2 使用 tcpdump 抓包
tcpdump 是 Unix/Linux 下的抓包工具。
如下的命令在网卡 eno1 上抓包,保存到文件 a.pcap,过滤条件是 UDP 协议,且目标端口为 51180 或 7788。这里抓包 30000 个,对于一般问题的分析,这个包数够用了。
sudo tcpdump -i eno1 -w a.pcap -c 30000 'udp dst port 7788 or 51180'
使用网络工具 ifconfig,可以确定网卡的名字。
不要使用选项 -i any 抓包。这个选项针对任意网卡抓包,协议为 linux cooked capture。这不是 Ethernet 格式,ag_driver 不能识别。
sudo tcpdump -i any