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 软件可以区分 EthernetIPUDP 这些层。

要区分 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_addresshost_address

  • MSOP/DIFOP Packet 的目的端口

    可以通过设置过滤条件来显示某种类型的 Packet。 ../../_images/12_01_select_by_port.png 也可以排除某种类型的 Packet。 ../../_images/12_02_select_by_non_port.png 需要分别设置 msop_portdifop_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标注),所以这里没有用户自定义层

../../_images/12_03_A0_msop_packet.png

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 id69

../../_images/12_05_with_vlan.png

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),这个就是尾部层

../../_images/12_07_with_tail_layer.png

12.4.6 不支持的情况

下图是不支持的格式。Linux cooked capture 一般是在抓包时指定了任意网卡,例如:

tcpdump -i any

这样抓的包不是 Ethernet 格式,不符合 ag_driver 的要求。

../../_images/12_08_not_supported.png