3. 车载以太网协议栈与故障注入映射

在 NVIDIA DRIVE 平台上做车载以太网故障注入,第一步不是选工具,而是把“协议栈分层”与“可注入故障点”对应起来。DRIVE 的以太网链路通常从物理层 100/1000BASE-T1 或 RTPGE 开始,向上依次是 MAC/PHY 驱动、VLAN 与 IP 层、UDP/TCP 传输层,再到 DoIP、SOME/IP、gPTP、AVTP 等应用与时间敏感协议。每一层都有独立的帧结构、校验机制和超时行为,因此同一类“丢包”在物理层、交换层和应用层造成的现象完全不同。故障注入的价值,正在于把故障精确落到某一层,并观察该层及其上层协议栈的连锁反应。

先看物理层。100BASE-T1 使用单对双绞线、PAM3 编码,速率 100 Mbps;1000BASE-T1 使用 PAM3 与更复杂的均衡,速率 1 Gbps。RTPGE(Reduced Twisted Pair Gigabit Ethernet)是面向车载的千兆单对以太网物理层方案,与 1000BASE-T1 在链路训练、回波抵消和 EMC 行为上存在差异。物理层可注入的故障包括:链路中断(断开差分对)、信号衰减与回波损耗增大、共模噪声注入、时钟抖动、误码率抬升。观测指标主要是链路状态寄存器、PHY 的 SNR/均衡收敛值、CRC 错误计数、以及上层是否出现突发性丢帧。物理层故障的典型特征是“整条链路一起坏”,而不是某个 IP 或某个服务单独异常。

数据链路层与交换层关注 MAC 帧、VLAN 标签和优先级。DRIVE 内部常用 VLAN 隔离不同域(如感知、控制、诊断),并用 PCP 字段承载优先级。可注入的故障有:VLAN ID 篡改、PCP 优先级翻转、MAC 地址伪造、帧长度异常、FCS 错误。观测指标包括交换机端口统计、VLAN 丢弃计数、优先级队列的排队时延。若把诊断流量的 PCP 从 6 改为 0,会看到 DoIP 响应时延明显抖动,而普通视频流却可能不受影响——这正是分层定位的意义。

网络层与传输层是 DoIP、SOME/IP 的承载基础。IP 层可注入 TTL 异常、分片丢失、校验和错误、路由不可达;UDP/TCP 层可注入端口封锁、序列号跳变、ACK 丢失、窗口收缩。DoIP 依赖 TCP 做诊断会话,其关键状态包括车辆识别请求/响应、路由激活、诊断报文收发。若在 TCP 层注入 ACK 延迟,DoIP 会表现为路由激活超时;若在 IP 层注入分片丢失,则大尺寸诊断响应会反复重传。观测指标应同时看 TCP 重传率、DoIP 会话状态机和诊断响应时间。

SOME/IP 是面向服务的中间件协议,支持方法调用、事件通知和字段访问。其故障注入点包括:Service ID/Instance ID/Method ID 错配、消息类型(REQUEST/RESPONSE/NOTIFICATION)篡改、返回码异常、序列号回绕、事件订阅丢失。观测指标是服务可用性、方法调用成功率、事件到达间隔和序列号连续性。gPTP 负责全车时间同步,可注入的故障有:Sync/Follow_Up 报文丢失、时间戳偏差、主时钟切换、Announce 超时。观测指标是偏移量(offset)、路径延迟和时钟等级变化。AVTP 承载音视频流,可注入帧序号跳变、呈现时间戳偏移、流中断,观测指标是媒体播放的卡顿、唇音同步偏差和 AVTP 流恢复时间。

把上述内容整理成一张“协议栈—故障—观测”映射图,比逐条背诵更有效。下图按 DRIVE 实际分层组织,左侧是协议层,中间是该层典型可注入故障,右侧是对应观测指标,箭头表示故障向上层传播的主要路径。

DRIVE 车载以太网协议栈故障注入映射 协议层 可注入故障 观测指标 物理层 100/1000BASE-T1 · RTPGE 链路中断 · 衰减/回波增大 · 共模噪声 时钟抖动 · 误码率抬升 PHY 链路状态 · SNR/均衡收敛 CRC 错误计数 · 突发丢帧 链路/交换层 MAC · VLAN · PCP VLAN ID 篡改 · PCP 翻转 · MAC 伪造 帧长异常 · FCS 错误 端口统计 · VLAN 丢弃计数 优先级队列排队时延 网络/传输层 IP · UDP · TCP TTL 异常 · 分片丢失 · 校验和错误 端口封锁 · ACK 丢失 · 窗口收缩 TCP 重传率 · 路由可达性 会话状态机 · 响应时间 应用/时间敏感层 DoIP · SOME/IP gPTP · AVTP DoIP:路由激活超时 · 诊断报文丢失 SOME/IP:ID 错配 · 返回码异常 · 订阅丢失 gPTP:Sync/Follow_Up 丢失 · 主时钟切换 AVTP:序号跳变 · 时间戳偏移 · 流中断 服务可用性 · 调用成功率 事件到达间隔 · 序列号连续性 gPTP 偏移/路径延迟 · 时钟等级 媒体卡顿 · 唇音同步偏差 定位原则:先看物理层链路状态,再看交换层 VLAN/PCP 统计,最后核对应用层会话与时间同步指标。 同一“丢包”现象在不同层表现不同:物理层为突发 CRC 错误,传输层为 TCP 重传,应用层为服务超时或媒体卡顿。

实际注入时,建议按“自下而上定位、自上而下验证”的顺序操作。例如怀疑 SOME/IP 事件丢失,先在交换层确认 VLAN 与 PCP 是否被篡改,再在传输层确认 UDP 端口与校验和,最后才检查 SOME/IP 的 Service ID 与订阅关系。反过来,若在物理层注入共模噪声,应先在 PHY 侧看到 SNR 下降和 CRC 错误上升,再观察上层是否出现 TCP 重传或 gPTP 偏移增大。这样既能避免误判,也能把故障现象与协议层一一对应。

教学示例参数:假设在 1000BASE-T1 链路上注入 200 mV 共模噪声,PHY 的 SNR 从约 28 dB 降至约 18 dB,CRC 错误计数在 10 秒内从 0 升至约 1200,此时上层 TCP 重传率可能从 0.1% 升至 3%~5%。这些数值仅用于说明分层观测思路,并非实测结果。

最后要强调,故障注入不是“制造混乱”,而是建立可复现的“故障—层—指标”三元组。每次注入前记录基线(如 gPTP 偏移 < 1 μs、SOME/IP 调用成功率 100%),注入后记录变化量,并明确该变化属于哪一层。只有把协议栈映射关系固化下来,后续的自动化注入脚本、测试用例和判定阈值才有可靠依据。