第2章:OSI模型与车载以太网

说实话,每次带新人做车载以太网测试,我都会先问一个问题:「你清楚OSI七层模型吗?」 很多人觉得这是基础理论,跟实际测试关系不大。但我个人习惯是,先把这层窗户纸捅破了,后面遇到问题才能快速定位。

车载以太网虽然叫「以太网」,但它跟咱们办公室用的以太网,其实有不少差异。嗯,咱们先从OSI模型聊起,再一步步看车载以太网怎么落地。

2.1 OSI七层模型回顾

OSI模型,说白了就是一套通信协议的分层框架。从上到下分别是:

  • 应用层:用户直接打交道的层,比如HTTP、SOME/IP
  • 表示层:数据格式转换、加密解密
  • 会话层:建立、管理、终止会话
  • 传输层:端到端可靠传输,TCP/UDP就在这层
  • 网络层:路由选择、IP地址
  • 数据链路层:帧封装、MAC地址、差错检测
  • 物理层:比特流传输、电气特性

你可能会问:「车载以太网用到了全部七层吗?」 答案是——不一定。实际车载应用中,表示层和会话层经常被简化甚至合并。我见过不少测试工程师,一上来就抓包分析应用层,结果发现问题是物理层线束没接好。这就是典型的「跳层」思维。

核心观点: 车载以太网测试,必须从物理层开始,逐层往上排查。跳过任何一层,都可能让你白费功夫。

2.2 车载以太网物理层

物理层,是车载以太网最特殊的地方。为什么?因为车里的电磁环境太恶劣了。你想想看,发动机点火、电机驱动、各种传感器,全是干扰源。

车载以太网物理层有几个关键点:

  • 单对非屏蔽双绞线:传统以太网至少两对线,车载以太网只用一对。省成本、减重量,但抗干扰要求更高。
  • 100BASE-T1 / 1000BASE-T1:这是IEEE专门为车载制定的标准。100Mbps和1Gbps两种速率,目前主流是100M。
  • PAM3编码:不是传统的NRZ编码,而是三电平脉冲幅度调制。说白了,就是每个符号能传更多比特。
  • 链路唤醒功能:车在休眠时,以太网链路可以进入低功耗模式,需要时再唤醒。这个在传统以太网里很少见。

我记得有一次做EMC测试,一辆样车的以太网通信老是断断续续。查了半天,发现是线束跟电源线走得太近,耦合了共模噪声。后来加了共模扼流圈,问题就解决了。所以,物理层的问题,往往是最隐蔽的

测试小技巧: 做物理层测试时,建议先用示波器看眼图。眼图张得开,说明信号质量好;眼图闭合,赶紧查线束和接地。

2.3 数据链路层

数据链路层,负责把物理层的比特流组装成帧。车载以太网在这一层,跟传统以太网最大的区别是——AVB/TSN

AVB(Audio Video Bridging)和TSN(Time-Sensitive Networking),说白了就是让以太网能传实时数据。车里需要传音频、视频、控制指令,这些对延迟和抖动要求极高。普通以太网做不到,但AVB/TSN可以。

数据链路层的关键要素:

  • MAC地址:每个节点唯一,48位。车载网络里,MAC地址通常由OEM统一分配。
  • VLAN标签:802.1Q标准,用于隔离不同业务流量。比如,ADAS数据走VLAN 10,信息娱乐走VLAN 20。
  • 帧格式:车载以太网帧跟传统以太网基本一致,但多了Preamble和SFD的细节要求。
  • 流预留协议:AVB里的SRP,用于为实时流预留带宽。我建议你重点掌握这个,因为很多测试用例都跟它相关。

避坑指南: 我曾经遇到过一个案例,某ECU的MAC地址跟其他节点冲突,导致整个VLAN通信瘫痪。排查了整整两天才发现。所以,MAC地址管理一定要规范,最好用工具自动分配,别手动配。

2.4 网络层

网络层,核心就是IP协议。车载以太网用的是IPv4还是IPv6?目前主流是IPv4,但IPv6也在慢慢渗透。为什么?因为车里设备越来越多,IPv4地址不够用了。

网络层测试的几个重点:

  • IP地址分配:传统网络用DHCP,但车里更常用AutoIP(自动私有IP地址)。为什么?因为车在出厂前可能没连上服务器,AutoIP能保证节点间通信。
  • ARP协议:IP地址到MAC地址的映射。车载网络里,ARP广播可能会造成网络风暴,所以很多OEM会限制ARP速率。
  • ICMP协议:ping命令用的就是这个。测试时,我习惯先ping一下,看看网络通不通。但要注意,有些ECU为了安全,会禁用ICMP。
  • 路由协议:车里一般用静态路由,很少用动态路由。因为拓扑相对固定,没必要搞复杂。

你想想看,如果一辆车的ADAS摄像头跟域控制器之间IP不通,那自动驾驶功能直接废了。所以,网络层测试是必选项,不是可选项

2.5 传输层

传输层,主要就是TCP和UDP。车载以太网里,两者都用,但场景不同。

协议 特点 车载应用场景
TCP 可靠、有序、有重传 固件升级、诊断、日志上传
UDP 不可靠、低延迟、无连接 音视频流、传感器数据、控制指令

我个人习惯,做传输层测试时,重点关注以下几点:

  • 端口号管理:SOME/IP通常用UDP 30490端口,DoIP用TCP 13400端口。端口冲突会导致服务不可用。
  • 窗口大小:TCP窗口太小,吞吐量上不去。我见过一个案例,某ECU的TCP窗口设成了默认值,结果高速数据传输时性能惨不忍睹。
  • 超时重传:车载网络延迟比办公室网络高,所以TCP超时参数要调大。否则,频繁重传会浪费带宽。

测试要点: 用Wireshark抓包时,重点关注TCP重传和零窗口事件。这两个指标能直接反映传输层健康状态。

2.6 应用层

应用层,是用户直接感知的层。车载以太网的应用层协议,跟传统互联网差别很大。

常见的车载应用层协议:

  • SOME/IP:Scalable service-Oriented MiddlewarE over IP。这是车载以太网的核心中间件,用于服务发现和远程过程调用。
  • DoIP:Diagnostic over IP。基于TCP/IP的诊断协议,用于ECU刷写和故障诊断。
  • AVTP:Audio Video Transport Protocol。用于音视频流的实时传输,依赖底层的AVB/TSN。
  • HTTP/HTTPS:主要用于OTA升级和云端通信。

应用层测试,我建议你从SOME/IP入手。为什么?因为它是车载以太网的「灵魂」。没有SOME/IP,ECU之间没法互相发现服务,也没法调用功能。

我记得有一次做SOME/IP一致性测试,发现某个ECU的服务发现报文格式不对。查了规范才发现,它把Service ID和Method ID的顺序搞反了。这种问题,光靠功能测试根本发现不了,必须做协议一致性测试。

学习建议: 刚开始接触车载以太网时,别急着看代码。先把OSI模型每层的协议规范通读一遍,尤其是物理层和数据链路层。这两层是车载以太网的「地基」,地基不稳,上层再漂亮也没用。

2.7 小结

OSI模型是理解车载以太网的「地图」。从物理层的线束到应用层的SOME/IP,每一层都有它的职责和坑。我个人经验是,测试时一定要有分层思维。遇到问题,先定位到层,再深入分析。这样效率最高,也最不容易漏掉关键点。

下一章,咱们聊聊车载以太网的物理层测试,包括眼图、抖动、回波损耗这些实战内容。到时候我会分享一些具体的测试步骤和工具配置,敬请期待。