3. 车载以太网基础

数据链路层,说白了就是以太网通信的「交通规则」。

它负责把物理层的比特流组装成帧,再通过MAC地址找到目标设备。在车里,这条「路」上跑的不只是娱乐数据,还有制动、转向、雷达点云——优先级完全不同。所以,VLAN和QoS就成了车载以太网的两大核心工具。

3.1 MAC地址与以太网帧结构

每个以太网设备都有一个唯一的MAC地址,48位,通常写成六组十六进制数。比如 00:1E:C0:XX:YY:ZZ。前24位是厂商OUI,后24位是设备序列号。

车载环境里,MAC地址的作用更特殊。我见过不少测试项目,ECU的MAC地址烧录错了,导致交换机无法正确转发报文。嗯,这里要注意:车载ECU的MAC地址通常由OEM统一分配,不能随便用默认值。

标准以太网帧结构(IEEE 802.3)长这样:

字段 长度(字节) 说明
前导码 7 同步时钟,接收端用它锁定比特流
SFD 1 帧起始定界符,标志帧正式开始
目标MAC 6 接收方MAC地址
源MAC 6 发送方MAC地址
EtherType / 长度 2 标识上层协议(如IPv4=0x0800)或帧长度
Payload 46~1500 实际数据内容
FCS 4 帧校验序列,CRC32算法

车载以太网常用的是带VLAN Tag的帧,也就是802.1Q帧。它在源MAC和EtherType之间插入了4字节的VLAN标签。这个标签,就是后面VLAN和QoS的基础。

关键点:车载测试中,抓包时如果看到EtherType是0x8100,说明这是一个带VLAN Tag的帧。别把它当成普通IPv4帧解析,否则Payload会错位。

3.2 VLAN(802.1Q)在车内的应用

VLAN的全称是虚拟局域网。它的核心作用就一个:逻辑隔离。

你想想看,一辆智能汽车里,ADAS域控、座舱域控、网关、T-Box都连在同一个交换机上。如果不做隔离,摄像头的数据流可能会冲掉诊断报文,或者娱乐系统的广播帧干扰了制动信号。这谁受得了?

VLAN通过给帧打上12位的VLAN ID(范围1~4094),让交换机只把帧转发到相同VLAN的端口。物理上是一根线,逻辑上却是多条独立的「虚拟通道」。

我在项目中遇到过这样一个案例:某OEM的ADAS系统在高速测试时频繁丢帧。排查了三天,最后发现是VLAN配置错了——摄像头和域控的VLAN ID不一致,交换机直接把帧丢了。从那以后,我每次做VLAN测试都会先检查三件事:

  • VLAN ID是否匹配——发送端和接收端必须在同一个VLAN
  • 端口PVID是否正确——交换机端口的默认VLAN ID
  • Tagged/Untagged模式——有些ECU不支持VLAN Tag,需要交换机做Tag/Untag转换

车内常见的VLAN划分方式:

VLAN ID 用途 典型设备
10 ADAS传感器数据 摄像头、雷达、激光雷达
20 座舱娱乐 中控屏、后排娱乐、音响
30 诊断与OTA 网关、T-Box、诊断仪
40 车辆控制信号 制动、转向、动力域控

测试技巧:用网络分析仪(比如Vector VN5610)抓取带VLAN Tag的帧时,记得在软件里配置VLAN解析规则。否则你看到的Payload会多出4个字节的Tag数据,解析结果全是错的。

3.3 QoS优先级(802.1p)与流量整形

VLAN解决了隔离问题,但没解决优先级问题。如果ADAS数据和娱乐数据同时涌向同一个端口,谁先走?

802.1p标准定义了3位优先级字段(PCP,Priority Code Point),取值范围0~7。数值越高,优先级越高。这3位就嵌在VLAN Tag里,和VLAN ID共用同一个4字节标签。

车内典型的优先级映射:

PCP值 优先级 典型应用
7 最高 制动、转向等安全关键信号
6 高 ADAS传感器数据流
5 中高 诊断、OTA升级
4 中 音视频流
3 中低 常规控制信号
0~2 低 背景数据、日志上传

光有优先级还不够。如果高优先级流量太多,低优先级流量可能永远发不出去——这叫「饿死」现象。所以需要流量整形。

流量整形的核心算法是令牌桶。简单说:系统以固定速率往桶里放令牌,每个帧需要消耗一定数量的令牌才能发送。桶满了令牌就丢弃。这样就能限制某个流的平均速率,同时允许短时间突发。

我曾经在测试中遇到过一个问题:ADAS摄像头以100Mbps的速率发送视频流,但交换机的出口带宽只有100Mbps。高优先级帧占满了带宽,导致诊断报文一直发不出去。后来在交换机上配置了流量整形,给ADAS流设置了80Mbps的CIR(承诺信息速率),给诊断流留了20Mbps的带宽,问题就解决了。

避坑指南:我曾经在测试中把PCP值全部设成7,以为这样所有帧都能优先通过。结果交换机内部的优先级队列溢出,反而导致所有帧都丢了。优先级不是越高越好,要按实际需求分层配置。

3.4 本章知识体系

下面这张图把数据链路层的核心概念串起来了。你可以看到MAC地址、VLAN、QoS三者之间的关系,以及它们在车载网络中的位置。

车载以太网数据链路层知识体系 车载以太网数据链路层核心概念 数据链路层 MAC地址与帧结构 VLAN (802.1Q) QoS (802.1p) 48位地址 OUI + 序列号 逻辑隔离 VLAN ID 1~4094 PCP 0~7 流量整形 VLAN Tag 同时承载 VLAN ID(12位)和 PCP(3位),两者共用4字节标签 车载测试中,抓包时看到 EtherType=0x8100 即为带 Tag 的帧

3.5 测试实战要点

做车载以太网数据链路层测试,我建议你重点关注这几个方向:

  1. MAC地址过滤测试——验证交换机是否按MAC地址表正确转发帧。我曾经用Spirent TestCenter构造了1000个不同MAC地址的帧,看交换机是否出现泛洪或丢帧。
  2. VLAN成员测试——确认每个端口只接收所属VLAN的帧。非成员端口的帧应该被丢弃。
  3. 优先级映射测试——发送不同PCP值的帧,用抓包工具确认交换机是否按优先级排队转发。
  4. 流量整形测试——用恒定速率发送超过CIR的流量,观察交换机是否对超出部分进行整形或丢弃。

工具推荐:我个人习惯用Vector VN5610 + CANoe做车载以太网测试。它支持VLAN Tag的自动解析,还能配置流量整形参数。如果你预算有限,Wireshark + 普通USB网卡也能做基础测试,但记得网卡要支持802.1Q。

数据链路层是车载以太网测试的「地基」。地基不稳,上层协议栈跑得再快也没用。下一层一层往上走,你会发现每个细节都可能成为测试中的坑。嗯,先把这层吃透,后面就顺了。