第三讲:物理层与链路层——车载以太网物理层标准与MAC/VLAN

各位同学,今天我们聊聊车载以太网最底层的两件事:物理层链路层

说实话,很多做应用层开发的工程师,一听到物理层就头疼。觉得那是硬件工程师的事。但我个人的经验是——你不懂物理层,出了问题你连故障定位的方向都没有。

好,我们直接进入正题。

一、车载以太网物理层标准:100BASE-T1 与 1000BASE-T1

先问大家一个问题:为什么车载以太网不用我们家里那种RJ45接口?

答案很简单:线束太重,接口太大,EMC太差

你想想看,一辆车上有几十个ECU,如果每个都用四对差分线,那整车线束重量得增加多少?而且RJ45的屏蔽要求高,在车内这种强电磁干扰环境下,稳定性堪忧。

所以,汽车行业搞出了自己的物理层标准——BroadR-Reach,后来标准化为IEEE 802.3bw,也就是我们常说的100BASE-T1

1. 100BASE-T1

100BASE-T1,说白了就是一对双绞线跑100Mbps

关键参数我列一下:

参数
速率 100 Mbps
传输介质 1对非屏蔽双绞线(UTP)
最大距离 15米(车内足够)
编码方式 PAM3(3级脉冲幅度调制)
标准 IEEE 802.3bw

这里有个有意思的点——PAM3编码。为什么不用传统的NRZ或者曼彻斯特编码?

嗯,原因在于EMC和共模抑制。PAM3通过三电平信号传输,在同样带宽下能承载更多信息,而且对共模噪声的抑制能力更强。我在做某主机厂的ADAS项目时,就遇到过因为物理层编码选择不当导致摄像头信号被电机干扰的问题。换成100BASE-T1后,问题迎刃而解。

核心要点:100BASE-T1用一对线替代了传统以太网的四对线,减重、降本、抗干扰。这是车载以太网最根本的物理层优势。

2. 1000BASE-T1

随着自动驾驶和域控架构的发展,100Mbps不够用了。于是有了1000BASE-T1(IEEE 802.3bp)。

它同样是一对双绞线,但速率提升到了1 Gbps

参数
速率 1 Gbps
传输介质 1对非屏蔽双绞线(UTP)
最大距离 15米
编码方式 PAM4(4级脉冲幅度调制)
标准 IEEE 802.3bp

1000BASE-T1用了PAM4编码,每个符号携带2比特信息,所以才能在同样的带宽下实现10倍速率的提升。

但这里有个坑——PAM4对信号质量要求更高。我曾经在一个项目中,1000BASE-T1链路在实验室测试一切正常,装车后却频繁丢包。查了半天,发现是线束的绞距不合格,导致串扰过大。所以,物理层的线束质量,直接决定了上层协议能不能正常工作

避坑指南:1000BASE-T1对线束的阻抗匹配要求非常严格(100Ω±5%)。我曾经见过因为使用了非标线束,导致整个域控网络通信不稳定的案例。线束成本别省,省了后面调试成本更高。

二、MAC地址:网络设备的身份证

聊完物理层,我们上到链路层。

链路层最核心的东西就是MAC地址。每个以太网设备出厂时都会有一个全球唯一的48位MAC地址。前24位是OUI(组织唯一标识符),后24位是厂商分配的序列号。

在车载网络中,MAC地址的作用是什么?

  • 唯一标识:每个ECU在网络上有一个独一无二的MAC地址
  • 帧过滤:交换机根据MAC地址决定把数据帧转发到哪个端口
  • 地址解析:ARP协议通过MAC地址找到对应的IP地址

但这里有个问题——车载网络中的MAC地址管理,比IT网络要复杂得多

为什么?因为汽车零部件来自不同的供应商。你想想看,一个Tier 1供应的网关,一个Tier 2供应的摄像头,它们的MAC地址可能来自不同的OUI段。如果整车厂没有统一的MAC地址管理策略,很容易出现地址冲突。

我个人习惯的做法是:在整车网络设计阶段,就建立MAC地址分配表。每个ECU的MAC地址由整车厂统一分配,而不是让供应商随意使用出厂默认地址。

小技巧:在DoIP通信中,诊断仪通过MAC地址发现车辆。如果MAC地址冲突,诊断仪可能连车都发现不了。所以,MAC地址的唯一性,是DoIP通信的第一道门槛

三、VLAN:把物理网络切成逻辑子网

好,接下来是VLAN。VLAN的全称是Virtual Local Area Network,虚拟局域网。

为什么要用VLAN?

你想想看,一辆车上有几十个ECU。ADAS系统的摄像头数据流、娱乐系统的音视频流、动力系统的控制信号……这些数据如果都在同一个广播域里,会怎么样?

答案很简单:广播风暴,带宽浪费,安全隐患

VLAN的作用,就是把一个物理网络,划分成多个逻辑上隔离的子网。每个VLAN是一个独立的广播域,VLAN之间的通信必须通过路由器或三层交换机。

在车载网络中,VLAN的典型划分方式是这样的:

VLAN ID 用途 示例设备
1 管理VLAN(默认) 网关、诊断接口
10 ADAS/自动驾驶 摄像头、雷达、域控
20 信息娱乐 车机、音响、导航
30 动力/底盘 ECU、ABS、EPS
100 诊断(DoIP) 诊断仪、OBD接口

这里我要特别强调一下VLAN在DoIP中的应用

DoIP通信中,诊断仪和车辆之间的诊断流量,应该放在一个独立的VLAN中。这样做的好处是:

  • 安全隔离:诊断流量不会干扰其他业务
  • 带宽保障:诊断数据不会因为娱乐系统的视频流而丢包
  • 故障隔离:某个VLAN出问题,不影响其他VLAN

我曾经在一个项目中,没有做VLAN隔离。结果诊断仪在刷写ECU固件时,车机正在播放高清视频,导致诊断数据包被大量丢弃,刷写失败。后来把诊断流量单独划到一个VLAN,问题就解决了。

核心要点:VLAN是车载以太网中实现流量隔离、安全分区、QoS保障的关键技术。在DoIP设计中,建议将诊断流量单独划分VLAN。

四、VLAN标签与802.1Q

VLAN是怎么实现的?靠的是802.1Q标签

标准的以太网帧有14字节的头部(目标MAC 6字节 + 源MAC 6字节 + 类型/长度 2字节)。802.1Q在源MAC地址之后,插入了一个4字节的VLAN标签。

这个4字节标签的结构是这样的:

  • TPID(Tag Protocol Identifier):2字节,固定值0x8100,表示这是一个带VLAN标签的帧
  • TCI(Tag Control Information):2字节,包含:
    • PCP(Priority Code Point):3位,优先级(0-7)
    • DEI(Drop Eligible Indicator):1位,丢弃指示
    • VID(VLAN Identifier):12位,VLAN ID(0-4095)

所以,一个带VLAN标签的以太网帧,头部变成了18字节。交换机根据VID来决定把帧转发到哪个端口。

这里有个细节——VLAN ID 0和4095是保留的,不能用于用户定义。实际可用的VLAN ID范围是1-4094。

经验之谈:在车载网络中,我建议使用VLAN ID 100以上作为诊断专用VLAN。因为很多交换机默认的VLAN 1是管理VLAN,容易和诊断流量混淆。用100以上的ID,一目了然。

五、物理层与链路层的协同工作

最后,我们把这些串起来,看看物理层和链路层是怎么协同工作的。

假设诊断仪要发送一个DoIP诊断请求给网关:

  1. 物理层:诊断仪的PHY芯片将数字信号编码为PAM3(100BASE-T1)或PAM4(1000BASE-T1)信号,通过一对双绞线发送出去
  2. 链路层:网关的MAC控制器接收到信号,解码为以太网帧。检查目标MAC地址是否匹配,匹配则接收
  3. VLAN处理:如果帧带有VLAN标签,交换机会根据VID判断是否属于诊断VLAN,是则转发到网关的CPU
  4. 上层处理:网关的IP/TCP/DoIP协议栈处理这个诊断请求

你看,从物理层的电信号,到链路层的帧处理,再到VLAN的隔离转发,每一层都在做自己的事。任何一个环节出问题,诊断通信都会失败。

所以,我经常跟团队说:做DoIP开发,不要只盯着应用层。物理层和链路层的基础打不牢,上层再好的协议也是空中楼阁

本讲总结:

  • 100BASE-T1和1000BASE-T1是车载以太网的物理层标准,一对线搞定100M/1G通信
  • MAC地址是网络设备的唯一标识,整车厂应统一管理
  • VLAN实现网络逻辑隔离,DoIP诊断流量建议单独划分VLAN
  • 802.1Q标签是VLAN的实现机制,VID范围1-4094

下一讲,我们会进入网络层,聊聊IP地址分配和路由。到时候你会发现,物理层和链路层的基础知识,会反复用到。所以,这一讲的内容,建议你好好消化。

好,今天就到这里。有问题随时交流。