12 根据 PCAP 文件确定 ag_driver 的网络配置选项
12.1 概述
通过分析 PCAP 文件中的 MSOP/DIFOP Packet 格式,可以确定 ag_driver 的网络选项,并显示点云。
这里使用第三方工具 WireShark 分析 PCAP 文件。
关于如何使用第三方工具录制 PCAP 文件,请阅读《如何录制PCAP文件》。
12.2 MSOP/DIFOP 格式
12.2.1 协议分层
MSOP/DIFOP Packet 基于 UDP 协议,包括如下层。
Ethernet
VLAN(可选)
IP
UDP
用户自定义层(前缀部分,可选)
MSOP/DIFOP Packet(真正的数据部分)
尾部层(后缀部分,可选)
VLAN 层是可选的。有没有 VLAN 层取决于两点:
雷达是不是运行在 VLAN 环境下
是在物理网卡还是在虚拟网卡上抓的包
用户自定义层是客户为了适配自己的运行环境加的层,长度客户自己确定。
尾部层也是客户环境带来的。其中一个常见的例子是:智能汽车的域控制器可能会在 MSOP/DIFOP Packet 后面加上自己的 4 个字节。
12.2.2 Packet ID
WireShark 软件可以区分 Ethernet、IP、UDP 这些层。
要区分 MSOP/DIFOP Packet 与用户自定义层,需要先定位 MSOP/DIFOP Packet 的 ID,也就是它们的标志字节。
要区分 MSOP/DIFOP Packet 与尾部层,还需要知道 MSOP/DIFOP Packet 的长度(这个长度不包括用户自定义层和尾部层)。
各雷达的 MSOP/DIFOP Packet 的 ID 和长度都是确定的,如下面的表。
| 雷达类型 | Packet类型 | 标志字节 | Packet长度 |
|---|---|---|---|
| A0 | MSOP | AA, 55, A5, 5A | 1172 |
| DIFOP | A5, FF, 00, 5A | 108 |
这里还可以看到,MSOP Packet 的标志字节与 DIFOP Packet 的不同,所以在 PCAP 文件中,可以通过它确定哪个 Packet 是 MSOP,哪个是 DIFOP。
12.3 一般步骤
如下是查看 PCAP 文件的一般步骤。
确定 MSOP/DIFOP Packet 的
目的地址。在 Asensing 雷达的设计中,MSOP 和 DIFOP 的目的地址总是相同的。需要明确的是,这是个什么地址?
广播地址/组播地址/单播地址?如果是组播地址,则需要同时指定group_address和host_address。MSOP/DIFOP Packet 的
目的端口。可以通过设置过滤条件来显示某种类型的 Packet。
也可以排除某种类型的 Packet。
需要分别设置 msop_port和difop_port。是否有 VLAN 层? 如果有 VLAN 层,则:
连接在线雷达时,需手工创建虚拟网卡
解析 PCAP 文件时,需指定
use_vlan选项
通过 MSOP/DIFOP Packet 的
标志字节,确定是否有用户自定义层。如果有,是多长? 如果有用户自定义层,需指定user_layer_bytes。通过 MSOP/DIFOP Packet 的长度, 确定是否有
尾部层。如果有,是多长? 如果有尾部层,需指定tail_layer_bytes。
12.4 举例
12.4.1 A0雷达 - MSOP Packet
如下图,是 A0 雷达 MSOP Packet 的例子。
目的地址为
192.168.101.255(广播)(红色1标注)。目的端口为
51180(红色2标注)MSOP Packet 的包长为
1172(红色3标注)A0雷达的 MSOP Packet 的标志字节是
AA, 55, A5, 5A,它就在 UDP 数据的一开始(红色4标注),所以这里没有用户自定义层。

12.4.2 A0雷达 - DIFOP Packet
与 A0 雷达 MSOP Packet 的例子同理。但 DIFOP Packet 的 ID 是 A5, FF, 00, 5A 。
12.4.3 有 VLAN 的情况
下图是有 VLAN 层的情况,这是一个 A0 雷达的 MSOP 包。
VLAN 层在 Ethernet 层与 IP 层之间。这个 VLAN 层的 vlan id 为 69。

12.4.4 有用户自定义层的情况
MSOP Packet 的标志字节是 AA, 55, A5, 5A。可以看到在标志字节之前还有多个字节数据,这就是用户自定义层。
12.4.5 有尾部层的情况
下图是有用户尾部层的情况。这是一个 A0 雷达的 MSOP Packet。
MSOP Packet 的长度是 1172 字节,加上前面各个层的头 14 + 20 + 8 = 42 个字节,应该是 1214 个字节,但实际上 WireShark 抓到了 1218 个字节。多的 4 个字节附加在 MSOP Packet 尾部(图中的 c9 77 8e c3),这个就是尾部层。

12.4.6 不支持的情况
下图是不支持的格式。Linux cooked capture 一般是在抓包时指定了任意网卡,例如:
tcpdump -i any
这样抓的包不是 Ethernet 格式,不符合 ag_driver 的要求。
