3. 车载以太网数据链路层与VLAN规划

车载以太网的数据链路层决定了“谁在总线上说话、帧长什么样、交换机如何转发”。在 Continental 中央网关这类多端口、多网段设备上,仅靠 MAC 地址转发往往不够:诊断、OTA、音视频、底盘控制可能共享同一物理链路,必须用 VLAN 把逻辑网络切分出来,再用 PCP 优先级保证关键帧的时延。本节围绕以太网帧格式、MAC 地址、802.1Q 标签、优先级,以及网关端口 VLAN 划分的实际做法展开。

一、以太网帧格式:从目的 MAC 到 FCS

标准以太网 II 帧从前往后依次是:7 字节前导码(Preamble)、1 字节帧起始定界符(SFD)、6 字节目的 MAC、6 字节源 MAC、2 字节类型/长度(EtherType)、46~1500 字节数据与填充、4 字节帧校验序列(FCS)。前导码与 SFD 用于接收端时钟同步,通常不计入抓包工具显示的“帧长”。EtherType 标识上层协议,车载常见值包括 0x0800(IPv4)、0x0806(ARP)、0x86DD(IPv6)、0x88E5(MACsec)、0x8100(VLAN 标签)。

最小帧为 64 字节(不含前导码与 SFD),最大为标准 1500 字节有效载荷,加上 14 字节头与 4 字节 FCS 后为 1518 字节;带单层 VLAN 标签时为 1522 字节。若数据不足 46 字节,需填充到 46 字节,否则接收端会因帧过短丢弃。抓包时若看到长度小于 60 字节的“runt frame”,通常意味着冲突、链路异常或发送端配置错误。

二、MAC 地址:单播、组播与广播

MAC 地址为 48 位,写作 6 组十六进制,如 00:1A:2B:3C:4D:5E。第一个字节的最低位(I/G 位)为 0 表示单播,为 1 表示组播;最高位(U/L 位)为 0 表示全球唯一(OUI 由 IEEE 分配),为 1 表示本地管理。广播地址 FF:FF:FF:FF:FF:FF 是组播的特例,会被同一广播域内所有端口接收。

车载网络中,交换机依据目的 MAC 建立 MAC 地址表并转发:已知单播只从对应端口发出,未知单播、组播和广播则在所属 VLAN 内泛洪。因此,VLAN 划分直接决定了广播域边界——同一 VLAN 内的广播会到达该 VLAN 的所有成员端口,不同 VLAN 之间默认隔离。Continental 网关通常还会配置静态 MAC 或 MAC 过滤,防止未授权节点接入。

三、802.1Q VLAN 标签与 PCP 优先级

802.1Q 标签长 4 字节,插入在源 MAC 与 EtherType 之间,结构为:2 字节 TPID(固定 0x8100)、2 字节 TCI。TCI 中 3 位 PCP(Priority Code Point,优先级 0~7)、1 位 DEI(Drop Eligible Indicator)、12 位 VID(VLAN Identifier,0~4095,其中 0 和 4095 保留)。VID=1 常作为默认 VLAN,实际工程中应避免把关键业务放在默认 VLAN。

PCP 决定帧进入交换机后映射到哪个优先级队列。典型车载映射可参考:PCP 7 用于时间同步(gPTP),PCP 6 用于安全/底盘控制,PCP 5 用于音视频,PCP 4 用于 OTA/诊断,PCP 0~3 用于普通信息娱乐与尽力而为流量。交换机端口出方向按严格优先级或加权轮询调度,PCP 越高越先发送。需要注意:PCP 只在带标签的帧中有效,若端口配置为 untagged,则按端口默认优先级(Port Default Priority,PDP)处理。

Continental 中央网关端口 VLAN 划分与帧转发示意 ADAS 域控 VID 10 / PCP 6 IVI 主机 VID 20 / PCP 3 OTA 客户端 VID 30 / PCP 4 诊断仪 DoIP VID 40 / PCP 5 中央网关(802.1Q 交换机) P1 Access VID 10 untagged 入 / tagged 出 P2 Access VID 20 untagged 入 / tagged 出 P3 Access VID 30 untagged 入 / tagged 出 P4 Access VID 40 untagged 入 / tagged 出 P5 Trunk 10,20,30,40 tagged 双向 P6 Uplink Trunk(至骨干) 车载骨干 100BASE-T1 Trunk 汇聚 PCP 队列调度 7→6→5→4→0 Access 端口 Trunk 端口 PCP 优先级 虚线:备用/管理路径

四、Continental 网关端口 VLAN 划分实战

下面以一个典型中央网关配置为例,说明端口划分与验证方法。假设网关有 6 个端口:P1 接 ADAS 域控,P2 接 IVI,P3 接 OTA 客户端,P4 接诊断仪,P5 为内部 Trunk,P6 上联骨干。规划如下:

端口连接对象模式VIDPCP说明
P1ADAS 域控Access106安全相关,高优先级
P2IVI 主机Access203信息娱乐,尽力而为
P3OTA 客户端Access304大流量但可容忍抖动
P4诊断仪Access405DoIP 诊断,需及时响应
P5内部 TrunkTrunk10,20,30,40—带标签转发
P6骨干上联Trunk10,20,30,40—汇聚至骨干交换机

配置要点:Access 端口入方向将 untagged 帧打上本端口 PVID(Port VLAN ID),出方向剥离标签;Trunk 端口双向保留标签。若 P1 的 PVID 设为 10,则 ADAS 发出的无标签帧进入网关后被标记为 VID 10,只能转发到 P5、P6 等允许 VID 10 的端口,不会到达 IVI 所在的 VID 20。这样即使 IVI 产生大量广播,也不会干扰 ADAS 的通信。

在 Continental 网关的配置界面或 CLI 中,通常按如下逻辑设置(示例命令,具体语法以实际工具为准):

# 创建 VLAN
vlan 10 name ADAS
vlan 20 name IVI
vlan 30 name OTA
vlan 40 name DIAG

# 配置 Access 端口
interface P1
 switchport mode access
 switchport access vlan 10
 switchport priority 6

interface P2
 switchport mode access
 switchport access vlan 20
 switchport priority 3

# 配置 Trunk 端口
interface P5
 switchport mode trunk
 switchport trunk allowed vlan 10,20,30,40

interface P6
 switchport mode trunk
 switchport trunk allowed vlan 10,20,30,40

五、验证与常见问题

配置完成后,需要从三个层面验证。第一,用抓包工具在 P1 与 P5 之间观察:P1 入方向应看到无标签帧,P5 出方向应看到带 0x8100 标签、VID=10 的帧;若 P5 仍为无标签,说明 Trunk 未生效。第二,检查 MAC 地址表:show mac address-table vlan 10 应只列出 VID 10 的成员端口,若出现跨 VLAN 的 MAC,说明端口模式配错。第三,验证优先级:在 P5 同时注入 PCP 6 与 PCP 3 的流量,观察高优先级队列是否先出,可用 show queue statistics 查看各队列计数。

常见错误:把 Access 端口误配为 Trunk,导致终端发出的无标签帧被丢弃;或 Trunk 允许列表遗漏某个 VID,造成该 VLAN 业务不通。另一个高频问题是 PCP 设置后未在出端口启用优先级信任(trust),交换机仍按端口默认优先级转发,高优先级帧被降级。

工程建议:VLAN ID 规划应预留余量,建议按功能域分段:10~19 安全/底盘,20~29 信息娱乐,30~39 OTA/升级,40~49 诊断,50~59 时间同步。PCP 映射一旦确定,应在整车网络设计文档中固化,避免不同 ECU 各自为政。对于 gPTP 时间同步帧,建议固定使用 PCP 7 并单独划分 VLAN,减少排队抖动。

掌握帧格式、MAC 转发、802.1Q 标签与 PCP 之后,就能理解网关端口 VLAN 划分的本质:用 VID 隔离广播域,用 PCP 区分时延敏感度,用 Access/Trunk 模式控制标签的进出。实际调试时,先确认链路与标签,再核对 MAC 表与队列统计,绝大多数 VLAN 相关问题都能定位到端口模式、允许列表或优先级信任这三处。