4. 座舱以太网协议栈

网络层,说白了就是给车上的每个节点发一个“门牌号”,然后告诉它们怎么找到对方。在车载以太网里,这个“门牌号”系统目前有两个版本在打架:IPv4 和 IPv6。我做了这么多年车载网络,可以负责任地告诉你——现阶段,IPv4 还是绝对主力,但 IPv6 已经在敲门了。

4.1 IPv4 vs IPv6:车内到底选哪个?

先看一张对比表,把两个协议的核心差异摆出来:

对比项 IPv4 IPv6
地址长度 32 位(4 字节) 128 位(16 字节)
地址数量 约 43 亿 2^128,几乎无限
地址配置 DHCP 或静态 SLAAC(无状态自动配置)或 DHCPv6
广播机制 广播(ARP) 多播(NDP)
头部长度 20-60 字节(可变) 40 字节(固定)
安全性 依赖 IPSec 可选 IPSec 原生支持
车内现状 90% 以上项目在用 少数高端平台预研

你可能会问:既然 IPv6 地址多、配置还自动,为什么不用它?

原因很简单——生态成本。我参与过一个预研项目,想把 IPv6 直接引入域控制器通信。结果发现,底层交换芯片对 IPv6 的硬件加速支持参差不齐,很多 SoC 的 MAC 层对 IPv6 多播过滤做得不好,导致 CPU 中断飙升。说白了,IPv4 的硬件生态太成熟了,换 IPv6 意味着整个链路都要重新验证。

我的建议:

  • 当前量产项目,继续用 IPv4。别折腾。
  • 如果做 OTA 升级、V2X 或远程诊断,考虑双栈(IPv4 + IPv6)过渡。
  • 纯车内通信(域控之间、传感器到域控),IPv4 完全够用。

4.2 IP 地址分配策略:DHCP 还是静态?

地址怎么分?这是个老生常谈的问题。但在车里,它比 IT 机房复杂得多。

4.2.1 静态分配

每个 ECU 烧写时就固定一个 IP。好处是简单、可预测、没有依赖。坏处是——你想想看,一辆车几十个 ECU,如果每个都要手动配,产线得疯掉。

适用场景:

  • 网关、域控制器等核心节点
  • 诊断接口(DoIP 通常用固定 IP)
  • 测试设备(如 CANoe、PC)

4.2.2 DHCP 分配

由 DHCP 服务器(通常是网关或中央域控)动态分配。好处是灵活、可管理、适合产线自动化。坏处是——万一 DHCP 服务器挂了,所有节点都拿不到 IP。

适用场景:

  • 传感器节点(摄像头、雷达)
  • 娱乐系统节点
  • OTA 升级时的临时节点

避坑指南:我曾经在一个项目中,把 DHCP 租期设成了默认的 24 小时。结果车辆休眠再唤醒后,IP 还没过期,但 ARP 表已经乱了,导致通信超时。后来我把租期改成了 10 分钟,配合 DHCP 续租机制,问题解决。

4.2.3 混合策略

实际项目中,我习惯用混合策略:

  1. 网关、域控用静态 IP,保证核心链路不依赖 DHCP。
  2. 普通节点用DHCP,但保留静态预留(基于 MAC 地址绑定)。
  3. 诊断接口用链路本地地址(169.254.x.x),不依赖任何服务器。

4.3 路由与子网划分

车内的网络拓扑,已经不是一根总线走天下了。现在的架构里,可能有多个子网:

  • 动力域子网(10.0.1.0/24)
  • 底盘域子网(10.0.2.0/24)
  • 智驾域子网(10.0.3.0/24)
  • 座舱域子网(10.0.4.0/24)
  • 诊断/OTA 子网(10.0.254.0/24)

为什么要划分子网?两个原因:

  1. 隔离广播域——ARP 广播不会跨子网,减少不必要的网络负载。
  2. 安全隔离——动力域和座舱域之间不应该直接通信,必须经过网关路由。

注意:子网划分后,跨域通信必须通过网关路由。网关上的路由表要精心设计,否则会出现“能 ping 通但业务不通”的诡异问题。我遇到过一台车,OTA 下载总是超时,查了三天发现是路由表里少了一条回程路由。

4.4 车内 IP 地址规划示例

下面是我在一个量产项目中用过的地址规划方案,供你参考:

子网 网段 网关 分配方式 典型节点
动力域 10.0.1.0/24 10.0.1.1 静态 VCU、BMS、MCU
底盘域 10.0.2.0/24 10.0.2.1 静态 ESP、EPS、EPB
智驾域 10.0.3.0/24 10.0.3.1 DHCP 摄像头、雷达、域控
座舱域 10.0.4.0/24 10.0.4.1 DHCP IVI、T-Box、HUD
诊断/OTA 10.0.254.0/24 10.0.254.1 链路本地 DoIP、OTA Client

4.5 知识结构图:车载网络层核心逻辑

下面这张图,把网络层的核心逻辑串起来了:

车载以太网网络层核心逻辑 车载以太网网络层核心逻辑 协议选择:IPv4(主力) / IPv6(预研) 地址分配:静态分配 / DHCP / 链路本地 子网划分:动力域 / 底盘域 / 智驾域 / 座舱域 / 诊断OTA 路由与隔离:网关路由 / 广播隔离 / 安全策略 应用:SOME/IP / DoIP / OTA 关键原则 1. 核心节点静态 2. 普通节点 DHCP 避坑要点 租期不宜过长 路由表要双向

4.6 实战建议

最后,给你几个我在项目中沉淀下来的建议:

  • 地址规划要留余量——别把 /24 塞满,留 10-20 个地址给调试和扩展。
  • 网关 IP 固定——每个子网的 .1 或 .254 留给网关,别挪作他用。
  • DHCP 服务器要冗余——如果网关挂了,至少有个备份能发地址。
  • 测试时用链路本地地址——169.254.x.x 不需要任何配置,插上就能用,调试利器。

一个小技巧:我在做 OTA 升级测试时,会单独划一个 /28 子网给升级流量。这样即使升级过程把网络搞乱了,也不会影响其他域的正常通信。