4. 车载以太网协议栈
车载以太网并不是“把 IT 以太网搬进车里”这么简单。它是一套面向确定性、实时性、诊断可达性与服务化通信的协议组合。理解这一章的关键,不是背协议名,而是看清每个协议在车内解决什么问题、位于哪一层、与谁协作,以及 IDS 与流量分析时应该关注哪些字段和异常。
一、协议栈分层与车内角色
从下往上看,车载以太网通常以 100BASE-T1、1000BASE-T1 等物理层为基础,向上承载 IP。IPv4 仍常见,IPv6 在新型 EE 架构中逐步增加。传输层中,UDP 因低开销、低时延,广泛用于 SOME/IP、gPTP、AVB/TSN 流与部分 DDS 实现;TCP 则更多用于 DoIP 诊断、软件刷写、日志上传等对可靠性要求高但时延容忍度较大的场景。
应用层协议各司其职:DoIP 用于车辆诊断与刷写,SOME/IP 用于面向服务的通信,SOME/IP-SD 用于服务实例的发布与查找,AVB/TSN 用于音视频流与时间敏感控制,DDS 用于以数据为中心的实时发布订阅,gPTP 为 TSN 与时间同步提供统一时钟。
二、核心协议原理与车内应用
DoIP 是诊断 over IP 的入口。车辆通过 DoIP 实体对外提供诊断访问,典型端口为 TCP/UDP 13400。TCP 用于可靠诊断会话与刷写,UDP 用于车辆识别与公告。DoIP 报文包含协议版本、载荷类型、源地址、目标地址与载荷。IDS 应重点检测非授权诊断源地址、异常刷写请求、超大载荷与高频车辆识别扫描。
SOME/IP 是面向服务的通信中间件。它把功能封装为服务,服务由服务 ID、实例 ID、方法 ID、事件 ID 标识。方法调用是请求/响应,事件是发布/订阅,字段兼具两者特性。SOME/IP 报文头包含消息 ID、长度、请求 ID、协议版本、接口版本、消息类型与返回码。车内常见于车身控制、信息娱乐、自动驾驶域的服务调用。
SOME/IP-SD 是 SOME/IP 的服务发现协议,基于 UDP 组播。它通过 OfferService、FindService、SubscribeEventgroup、SubscribeEventgroupAck 等条目,让客户端发现服务并订阅事件组。SD 报文包含条目数组与选项数组,选项携带 IP、端口、协议与配置。IDS 需关注伪造 Offer、恶意订阅、服务实例冲突与 TTL 异常。
AVB/TSN 解决音视频与时间敏感流的确定性传输。AVB 包括 SRP 流预留、FQTSS 转发与整形、gPTP 时间同步。TSN 在此基础上扩展 Qbv 时间感知整形、Qbu 帧抢占、Qci 流过滤等。车内用于摄像头、雷达、音频与线控信号。IDS 应关注流预留异常、优先级滥用、时间窗口错乱与带宽抢占。
gPTP 是 IEEE 802.1AS 定义的时间同步协议,为 TSN 提供全局时间基准。它通过 Sync、Follow_Up、Pdelay_Req、Pdelay_Resp 等报文计算链路延迟与时钟偏差。车内所有时间敏感节点需同步到同一主时钟。IDS 需检测伪造主时钟、异常 Announce 报文与时间跳变。
DDS 是以数据为中心的发布订阅协议,强调 QoS 与域隔离。它通过 Topic、Domain、DataWriter、DataReader 组织通信,支持可靠性、持久性、截止时间等 QoS。车内用于自动驾驶数据分发与传感器融合。IDS 应关注域越权、Topic 扫描与 QoS 降级攻击。
IP 与 UDP/TCP 是承载基础。IPv4/IPv6 提供寻址与路由,UDP 提供低时延无连接传输,TCP 提供可靠有序传输。车内常用静态 IP、VLAN 隔离与组播。IDS 需关注 IP 分片、ARP 欺骗、UDP 端口扫描、TCP SYN 洪泛与畸形报文。
三、典型场景与流量分析要点
| 协议 | 车内典型用途 | 关键字段/端口 | IDS 关注异常 |
|---|---|---|---|
| DoIP | 诊断、刷写、车辆识别 | TCP/UDP 13400、源/目标地址 | 非授权诊断、异常刷写、扫描 |
| SOME/IP | 服务方法调用、事件发布 | Service ID、Method ID、Request ID | 未授权调用、畸形消息、重放 |
| SOME/IP-SD | 服务发现与订阅 | Offer/Find/Subscribe、TTL | 伪造 Offer、恶意订阅、实例冲突 |
| AVB/TSN | 音视频流、时间敏感控制 | SRP、Qbv、优先级 | 流预留异常、优先级滥用 |
| gPTP | 全局时间同步 | Sync、Follow_Up、Pdelay | 伪造主时钟、时间跳变 |
| DDS | 自动驾驶数据分发 | Domain、Topic、QoS | 域越权、Topic 扫描、QoS 降级 |
| IP + UDP/TCP | 承载与传输 | IP 地址、端口、协议号 | 分片攻击、ARP 欺骗、SYN 洪泛 |
四、实操:用 tcpdump 观察车内协议
在车载网关或测试台架上,可用 tcpdump 抓取关键协议流量。以下命令分别观察 DoIP、SOME/IP-SD、gPTP 与 DDS 常见端口。
# 观察 DoIP 诊断流量(TCP/UDP 13400)
tcpdump -i eth0 -nn -s0 -w doip.pcap 'port 13400'
# 观察 SOME/IP-SD 组播(常见 UDP 30490)
tcpdump -i eth0 -nn -s0 -w someip_sd.pcap 'udp port 30490'
# 观察 gPTP 报文(以太网类型 0x88F7)
tcpdump -i eth0 -nn -e -s0 -w gptp.pcap 'ether proto 0x88F7'
# 观察 DDS 常见 RTPS 端口范围
tcpdump -i eth0 -nn -s0 -w dds.pcap 'udp portrange 7400-7500'
# 观察 IP 分片与异常 TCP 标志
tcpdump -i eth0 -nn -s0 'ip[6:2] & 0x1fff != 0 or tcp[tcpflags] & (tcp-syn|tcp-fin) != 0'
五、常见误区与复盘
- 误区一:把 SOME/IP 当成普通 TCP 应用。SOME/IP 可基于 UDP 或 TCP,且服务发现独立于数据面。只盯端口会漏掉 SD 伪造与订阅异常。
- 误区二:认为 TSN 只关乎带宽。TSN 的核心是时间同步与调度,gPTP 被欺骗会导致所有时间窗口错乱,影响比丢包更严重。
- 误区三:忽略 DDS 的域隔离。DDS 域配置错误会导致跨域数据泄露,IDS 需检查 Domain ID 与 Topic 权限。
- 误区四:只做单包检测。车载攻击常表现为慢速扫描、低频伪造与状态漂移,需结合会话与时间窗口分析。
掌握本章协议栈后,后续进行车载流量分析时,应先判断流量属于哪一层、哪个协议、哪个车内功能域,再选择对应的字段、端口与异常模型。只有把协议语义与车内场景对应起来,IDS 规则才不是简单的端口黑名单,而是真正可解释、可运营的检测能力。