4、车载以太网网络层:IPv4与IPv6在车载环境的应用、ARP协议、ICMP协议

网络层,说白了就是负责把数据包从源头发到目的地。在车载以太网里,这个活儿主要由IP协议来干。你想想看,车上那么多ECU,每个都得有个地址才能互相找到对方,对吧?

我个人习惯把网络层比作快递系统。IP地址就是门牌号,ARP协议是问路的过程,ICMP协议则是快递员告诉你「地址不存在」或者「包裹已送达」。嗯,咱们一个一个说。

4.1 IPv4在车载环境的应用

IPv4,32位地址,写成四个十进制数。车载环境里,它还是绝对的主流。我在项目中遇到过,大部分OEM的测试规范里,IPv4的配置都是必测项。

车载IPv4有几个特点:

  • 地址分配:通常用DHCP或者AutoIP。我个人建议,诊断和刷写场景用静态IP更靠谱,避免地址冲突。
  • 子网划分:车上网络一般不会太大,/24的子网就够用。但要注意,不同域(比如智驾域和座舱域)最好分开子网。
  • 网关配置:跨域通信必须经过网关。我记得有一次测试,智驾域和座舱域直连不通,查了半天发现是网关没配路由表。

重要:车载IPv4测试中,重点关注TTL值、分片标志位、以及Checksum的正确性。很多ECU对分片包的处理有问题,容易丢包。

4.2 IPv6在车载环境的应用

IPv6,128位地址,写成八组十六进制数。车载环境里,它正在慢慢普及。为什么?因为地址够多,而且支持SLAAC(无状态地址自动配置)。

我建议你关注这几个点:

  • 链路本地地址:FE80::开头的地址,每个ECU自动生成。测试时经常用它做邻居发现。
  • 全局单播地址:需要路由器通告。车载环境里,网关就是路由器。
  • 多播地址:FF02::1是所有节点,FF02::2是所有路由器。这个在SOME/IP服务发现里很常用。

说实话,IPv6在车载上的坑不少。我曾经遇到过一个ECU,IPv6的DAD(重复地址检测)一直失败,导致地址分配不了。查了半天,原来是它的MAC地址在生成接口ID时出了问题。

小技巧:测试IPv6时,用Wireshark抓包看RS/RA(路由器请求/路由器通告)报文。如果看不到RA,说明网关没配好或者ECU没发RS。

4.3 ARP协议

ARP,地址解析协议。它的作用很简单:已知IP地址,求MAC地址。在车载环境里,ARP是IPv4通信的基础。

ARP的工作流程:

  1. ECU A要发数据给ECU B,但只知道B的IP,不知道MAC。
  2. ECU A发一个ARP请求广播:谁的IP是192.168.1.2?请告诉我你的MAC。
  3. ECU B收到后,回复一个ARP应答:我是192.168.1.2,我的MAC是AA:BB:CC:DD:EE:FF。
  4. ECU A把B的MAC缓存起来,下次直接发。

嗯,这里要注意。ARP缓存是有时效的。我记得有一次测试,ECU的ARP缓存超时时间设得太短,导致频繁发ARP请求,把网络带宽占满了。你想想看,车上那么多ECU,每个都这么搞,网络不崩才怪。

避坑指南:我曾经遇到过ARP泛洪攻击的测试场景。一个ECU故意伪造大量ARP请求,导致其他ECU的ARP缓存被占满,正常通信中断。所以,车载ECU一定要做ARP速率限制。

ARP协议在车载测试中的关注点:

测试项 说明 常见问题
ARP请求/应答 验证ECU能否正确发送和接收ARP报文 ECU不回复ARP请求
ARP缓存管理 验证缓存超时时间和更新机制 缓存不更新,导致通信中断
ARP防攻击 验证ECU能否抵御ARP泛洪 CPU占用率飙升

4.4 ICMP协议

ICMP,互联网控制报文协议。它的作用就是传递控制信息和错误报告。说白了,就是网络层的「对讲机」。

车载环境里,ICMP最常用的就是Ping和Traceroute。但说实话,Ping在车上用得不多,因为大部分ECU不响应Ping(出于安全考虑)。

ICMP报文类型:

  • 类型0/8:Echo Reply/Echo Request。就是Ping用的。
  • 类型3:目的地不可达。比如你发数据给一个不存在的IP,对方会回这个。
  • 类型11:超时。TTL减到0了,路由器会回这个。

我个人习惯用ICMP来测试网络连通性。但要注意,有些ECU会过滤ICMP报文。我曾经遇到一个ECU,它只响应特定类型的ICMP,其他类型直接丢弃。测试时得先搞清楚它的ICMP过滤策略。

重要:ICMPv6在车载环境里更重要。因为IPv6的邻居发现(NDP)就是基于ICMPv6的。RS/RA、NS/NA这些报文,本质上都是ICMPv6。

ICMP协议在车载测试中的关注点:

测试项 说明 常见问题
Ping响应 验证ECU能否正确响应Ping ECU不响应或响应延迟大
ICMP错误报告 验证ECU能否正确发送错误报告 错误报告格式错误
ICMP过滤 验证ECU的ICMP过滤策略 过滤策略过于严格

好了,网络层的内容就这些。IPv4和IPv6各有千秋,ARP和ICMP是它们的左膀右臂。测试时,多抓包、多分析,慢慢就能摸清门道。下一章咱们聊聊传输层,TCP和UDP在车载环境里的那些事儿。