3、车载以太网数据链路层:MAC地址与帧结构、VLAN标签与优先级、链路聚合与冗余

各位工程师,咱们今天聊聊数据链路层。这一层在车载以太网里,说白了就是负责「怎么把数据包从一个节点,靠谱地送到另一个节点」。你想想看,车上那么多ECU,如果数据传着传着就丢了、乱了,那自动驾驶可不敢上路。

我个人习惯把数据链路层拆成三块来理解:MAC地址与帧结构是基础,VLAN标签与优先级是交通管制,链路聚合与冗余是保命手段。咱们一个一个说。

3.1 MAC地址与帧结构

先讲MAC地址。每个以太网设备出厂时,都会烧录一个全球唯一的48位MAC地址。前24位是厂商代码,后24位是设备序列号。我在项目中遇到过一个问题:某供应商的ECU,MAC地址居然全是重复的。结果一上电,网络直接瘫痪。嗯,这里要注意:车载环境下,MAC地址必须唯一,否则交换机会疯掉。

再来看帧结构。标准的以太网帧长这样:

| 前导码(7B) | 帧起始定界符(1B) | 目标MAC(6B) | 源MAC(6B) | 类型/长度(2B) | 数据(46-1500B) | FCS(4B) |

车载以太网用的是100BASE-T1或1000BASE-T1,帧结构跟标准以太网基本一致。但有个关键区别:车载帧通常不带前导码和帧起始定界符,因为物理层已经处理了。我刚开始做测试时,拿着抓包工具看半天,总觉得少了点什么,后来才明白——物理层已经把那些「包装纸」拆掉了。

核心要点:

  • MAC地址:48位,前24位OUI,后24位唯一标识
  • 最小帧长64字节(含FCS),最大帧长1518字节
  • 车载以太网帧通常不含前导码

这里有个避坑指南:我曾经在测试时发现,某个ECU发送的帧长度只有60字节。按标准,小于64字节的帧属于「残帧」,交换机会直接丢弃。查了半天,原来是驱动层把FCS计算搞错了。所以,帧长检查是数据链路层测试的第一道关

3.2 VLAN标签与优先级

接下来是VLAN。车载网络里,为什么需要VLAN?你想想看,一个域控制器里同时跑着ADAS数据、娱乐数据、诊断数据。如果混在一起,高优先级的ADAS数据可能会被低优先级的娱乐数据堵住。VLAN就是用来做逻辑隔离的。

VLAN标签(802.1Q)插在源MAC和类型/长度字段之间,共4字节:

| TPID(2B, 0x8100) | TCI(2B) |
                    |-- PCP(3bit) | DEI(1bit) | VID(12bit) |

这里重点说优先级(PCP)。3个bit,共8个优先级(0-7)。车载以太网里,我建议这样分配:

优先级用途典型数据
7最高安全关键控制数据(制动、转向)
6ADAS传感器数据(摄像头、雷达)
5中高音视频同步流
4诊断数据
3中低OTA升级数据
2-0娱乐、日志等尽力而为数据

我在项目中遇到过一个问题:某次测试,ADAS数据偶尔出现几十毫秒的延迟。抓包一看,发现娱乐数据居然也打了优先级7。嗯,优先级分配必须统一管理,否则高优先级通道会被「假高优先级」数据挤爆。

测试技巧:验证VLAN优先级时,可以用网络测试仪同时发送高优先级和低优先级数据流,观察交换机是否优先转发高优先级帧。我习惯用IxNetwork或Spirent来做这种压力测试。

3.3 链路聚合与冗余

最后说链路聚合和冗余。车载网络对可靠性要求极高,一条链路断了,车不能停。所以需要冗余设计。

链路聚合(Link Aggregation):把多条物理链路捆绑成一条逻辑链路。比如两条100Mbps的链路聚合后,理论上可以提供200Mbps的带宽。但注意:链路聚合不提供冗余,它只提供负载均衡。一条链路断了,流量会重新分配到其他链路上,但切换过程可能有丢包。

冗余协议:车载以太网常用的是PRP(并行冗余协议)HSR(高可用性无缝冗余)。这两个协议都是IEC 62439标准里的,现在被引入到车载领域。

  • PRP:两个独立的网络,节点同时向两个网络发送相同的数据帧。接收方取先到的帧,丢弃后到的。零切换时间,但需要双倍网络资源。
  • HSR:环形拓扑,数据帧沿两个方向同时传输。接收方取先到的帧。节省线束,但环中节点数量有限制。

我个人更倾向于PRP,因为它的独立性更好。我曾经在项目中测试过HSR,发现环中节点超过50个时,延迟会明显增加。嗯,这里要注意:冗余不是万能的,它只能应对链路故障,不能应对节点故障。

重要提醒:冗余测试一定要做「故障注入」。我曾经遇到过:某ECU在PRP模式下,一条链路断了后,另一条链路的MAC地址表居然没更新,导致数据一直往断链路上发。查了三天,原来是交换机的MAC地址老化时间设置太长。所以,冗余测试必须验证故障切换时间,车载要求通常小于10ms。

最后总结一下:数据链路层是车载以太网的「交通警察」。MAC地址管身份,帧结构管格式,VLAN管隔离,优先级管通行权,冗余管可靠性。做测试时,我建议按这个顺序来:先测基础连通性(MAC、帧结构),再测VLAN隔离和优先级,最后测冗余切换。每一步都踩实了,才能保证上层协议跑得稳。

下一章咱们聊网络层,IP地址和路由。到时候再细说。