4. 车载以太网帧结构与VLAN工程配置
车载以太网承载的是摄像头、雷达、诊断、OTA、控制指令等混合流量。如果所有帧都在同一个广播域里转发,不仅浪费带宽,还会让安全关键流量与娱乐流量争抢出口。解决这一问题的核心手段,就是理解以太网帧结构,并在 ST Stellar 这类车载网关/交换机芯片上正确配置 VLAN 过滤与插入。本节从帧格式讲到实际配置,最后给出一个可参考的车载 VLAN 划分案例。
一、以太网 II 帧格式与 802.1Q 标签
车载以太网最常用的是 Ethernet II 帧。它的基本结构为:目的 MAC(6 字节)、源 MAC(6 字节)、类型/长度字段(2 字节)、数据载荷(46~1500 字节)、帧校验序列 FCS(4 字节)。类型字段常见取值如 0x0800 表示 IPv4、0x0806 表示 ARP、0x86DD 表示 IPv6。当需要携带 VLAN 信息时,在源 MAC 之后插入 4 字节的 802.1Q 标签,此时类型字段变为 0x8100,表示“后面跟着 VLAN 标签”,真正的上层类型字段被后移。
802.1Q 标签的 4 个字节由三部分组成:16 位 TPID(固定 0x8100)、3 位 PCP(Priority Code Point,优先级)、1 位 DEI(Drop Eligible Indicator,可丢弃指示)、12 位 VID(VLAN Identifier,VLAN 标识)。PCP 取值 0~7,数值越大优先级越高,车载中通常把安全关键控制流量放在 5~7,音视频放在 3~4,普通诊断和 OTA 放在 0~2。VID 取值 1~4094,其中 0 表示优先级标签但无 VLAN 归属,4095 保留。DEI 置 1 表示该帧在网络拥塞时可以被优先丢弃,常用于标记“可牺牲”的流量。
二、ST Stellar 上的 VLAN 过滤与插入
ST Stellar 作为车载网络处理器,其以太网交换/路由模块支持基于端口的 VLAN 处理。工程上要区分两个动作:VLAN 过滤(Filtering)决定一个入帧是否被允许进入某个端口或某个 VLAN;VLAN 插入(Insertion)决定出帧是否被加上标签、加哪个 VID 和 PCP。典型配置围绕“端口默认 VLAN(PVID)”“成员集合(Member Set)”“标签/非标签出口(Tagged/Untagged Egress)”三个概念展开。
以 ST Stellar 的交换配置为例,一个端口通常需要设置:端口模式(Access/Trunk/Hybrid)、PVID、可接收的 VLAN 列表、以及每个 VLAN 的出口标签策略。Access 口只属于一个 VLAN,入帧无标签时按 PVID 归类,出帧去标签;Trunk 口可承载多个 VLAN,入帧必须带标签,出帧保留标签。下面是一段示意性配置片段,用于说明字段含义,具体寄存器名和 API 以所用 Stellar 型号的参考手册为准:
/* 示意:ST Stellar 交换端口 VLAN 配置(伪代码,非实测) */
port0.mode = ACCESS; /* 接摄像头,仅属于 VLAN 10 */
port0.pvid = 10;
port0.egress = UNTAGGED; /* 出帧去掉标签 */
port1.mode = TRUNK; /* 上联骨干,承载 VLAN 10/20/30 */
port1.accept_vlan = {10, 20, 30};
port1.egress = TAGGED; /* 出帧保留 802.1Q 标签 */
/* 入帧过滤:无标签帧按 PVID 归类,VID 不在 accept_vlan 内则丢弃 */
/* 出帧插入:按 VLAN 表查 PCP,写入 802.1Q 标签 */
配置完成后,判断是否生效可以从三个观察点入手:一是用抓包工具看指定端口出帧是否带 0x8100 标签、VID 与 PCP 是否符合预期;二是查看芯片 VLAN 成员表和端口统计寄存器,确认被过滤帧计数在增加;三是构造一个 VID 不在允许列表内的帧,确认它被丢弃而不是被泛洪。若发现该丢的没丢,优先检查端口模式是否误设为 Hybrid 且未限制 accept_vlan;若发现该带标签的帧没带,检查出口 egress 是否被设成了 Untagged。
三、典型车载 VLAN 划分案例
下面给出一个教学用示例划分,假设一辆车有前视摄像头、毫米波雷达、中央网关、座舱主机和 OTA 模块。划分原则是:安全关键控制流量独立成 VLAN 并给高 PCP,音视频流量单独成 VLAN 给中等 PCP,诊断与 OTA 放在低优先级 VLAN,避免与实时流量争抢。
| VLAN ID | 用途 | 典型成员 | PCP 建议 | 出口标签 |
|---|---|---|---|---|
| 10 | ADAS 感知 | 前视摄像头、雷达、域控制器 | 6 | Trunk 带标签 |
| 20 | 车身控制 | 网关、BCM、执行器 | 5 | Trunk 带标签 |
| 30 | 座舱音视频 | 座舱主机、显示屏、功放 | 3 | Trunk 带标签 |
| 40 | 诊断与 OTA | OBD 口、OTA 模块、网关 | 1 | Trunk 带标签 |
在这个案例中,摄像头接在 Access 口、PVID=10,出帧去标签直接送给域控制器;域控制器上联口设为 Trunk,承载 VLAN 10/20/30/40,出帧保留标签。这样,当音视频流量突发时,PCP=6 的感知帧仍能被优先调度,而 PCP=1 的 OTA 帧在拥塞时可以被丢弃。需要注意,PCP 只是优先级标记,真正能否获得优先转发还取决于交换机队列调度和 TSN 配置,二者要配合使用。
掌握帧结构与 VLAN 配置后,下一步才能在此基础上讨论 TSN 的时间感知调度、帧抢占和流量整形。本节的重点是:先看清帧里有什么,再决定端口怎么过滤、怎么插入标签,最后用实际抓包和计数验证配置是否达到预期。