4. VLAN 基础配置:VLAN 概念、Access 与 Trunk 端口、PVID 设置、VLAN 划分实战

各位工程师,今天我们聊 VLAN。说实话,VLAN 这个概念在车载以太网里太基础了,但也是很多人翻车的地方。我见过不少项目,VLAN 配错了,结果摄像头数据跑到娱乐屏上去了,那画面……嗯,你懂的。

4.1 VLAN 到底是什么?

VLAN,全称 Virtual Local Area Network,虚拟局域网。说白了,就是把一个物理交换机,切成几个逻辑上独立的交换机。

为什么要这么做?

  • 隔离:ADAS 域的数据和车载娱乐系统的数据不能混在一起。安全第一。
  • 减少广播:没有 VLAN,一个 ARP 广播全网都能收到,带宽浪费严重。
  • 灵活组网:物理位置不重要,逻辑分组才重要。摄像头在车头,网关在车尾,但可以属于同一个 VLAN。

核心概念:VLAN ID 是 12 位的,范围 1-4094。0 和 4095 保留。车载场景常用 VLAN 1(默认)、VLAN 100(ADAS)、VLAN 200(信息娱乐)。

4.2 Access 端口 vs Trunk 端口

这两个端口类型,是 VLAN 配置的基石。我刚开始做车载项目时,就搞混过 Access 和 Trunk,结果摄像头死活不通。后来才明白,它们干的活完全不一样。

特性 Access 端口 Trunk 端口
用途 连接终端设备(ECU、摄像头、显示器) 连接交换机之间,或交换机与路由器
VLAN 数量 只属于 1 个 VLAN 可以承载多个 VLAN
帧格式 发送不带 Tag 的帧 发送带 802.1Q Tag 的帧
PVID 作用 接收帧时打上 PVID 的 Tag 接收 Untagged 帧时打上 PVID 的 Tag
典型场景 摄像头接 Access 口,VLAN 100 交换机级联,Trunk 口放行 VLAN 100, 200

简单记忆法:Access 口是「单 VLAN 专用通道」,Trunk 口是「多 VLAN 高速公路」。

4.3 PVID 设置——最容易踩的坑

PVID,Port VLAN ID。每个端口都有一个 PVID,默认是 1。

它的作用是什么?

  • 当端口收到一个不带 Tag 的帧时,交换机会给这个帧打上 PVID 对应的 VLAN Tag。
  • 当端口收到一个带 Tag 的帧时,PVID 不生效,直接按 Tag 处理。

我曾经踩过的坑:有一次,我把摄像头的 Access 口 PVID 设成了 100,但 Trunk 口忘了放行 VLAN 100。结果摄像头的数据到了 Trunk 口就被丢弃了。排查了整整两个小时……后来我养成了一个习惯:配完 VLAN 后,一定检查 Trunk 口的 allowed VLAN 列表。

PVID 配置要点:

  1. Access 口的 PVID 必须等于它所属的 VLAN ID。
  2. Trunk 口的 PVID 通常保持默认 1,除非有特殊需求。
  3. Trunk 口收到 Untagged 帧时,会打上 PVID 的 Tag。所以如果 Trunk 口 PVID 是 1,那么 Untagged 帧就属于 VLAN 1。

4.4 VLAN 划分实战——车载场景

我们来看一个实际的车载网络拓扑。假设一辆智能汽车,有 4 个摄像头(前视、后视、左视、右视),1 个 ADAS 域控制器,1 个信息娱乐主机,1 个网关。

需求:

  • 摄像头数据只给 ADAS 域控制器,不给娱乐主机。
  • 娱乐主机可以访问互联网,但不能访问 ADAS 数据。
  • 网关连接 T-Box,可以访问所有 VLAN。

VLAN 规划:

VLAN ID 名称 成员设备
10 Camera_VLAN 4 个摄像头、ADAS 域控制器
20 Infotainment_VLAN 信息娱乐主机、T-Box
1 Management_VLAN 网关、所有交换机管理口

交换机端口配置:

! 配置摄像头端口(Access 口,VLAN 10)
interface GigabitEthernet0/1
 switchport mode access
 switchport access vlan 10
 spanning-tree portfast

! 配置 ADAS 域控制器端口(Access 口,VLAN 10)
interface GigabitEthernet0/5
 switchport mode access
 switchport access vlan 10

! 配置娱乐主机端口(Access 口,VLAN 20)
interface GigabitEthernet0/6
 switchport mode access
 switchport access vlan 20

! 配置网关端口(Trunk 口,放行所有 VLAN)
interface GigabitEthernet0/24
 switchport mode trunk
 switchport trunk allowed vlan 1,10,20
 switchport trunk native vlan 1

个人习惯:我一般把 Trunk 口的 native VLAN 设成 1,这样管理流量不用打 Tag,方便调试。但注意,native VLAN 必须在两端一致,否则会出现 VLAN 泄漏。

4.5 VLAN 划分知识体系

下面这张图,是我自己总结的 VLAN 配置决策流程。每次做新项目,我都会过一遍这个流程,确保不遗漏。

VLAN 配置决策流程 VLAN 配置决策流程 确定设备角色 终端设备? 是 配置 Access 口 否 配置 Trunk 口 设置 PVID = VLAN ID 配置 allowed VLAN 验证连通性 别忘了检查 Trunk 口放行列表 和 PVID 一致性

4.6 验证与排障

配置完了,怎么验证?我一般用三步法:

  1. show vlan brief:查看 VLAN 和端口对应关系。
  2. show interfaces trunk:查看 Trunk 口状态和 allowed VLAN。
  3. ping 测试:同 VLAN 内设备互 ping,不同 VLAN 设备不应互通。

避坑指南:我曾经遇到过一个问题,两个交换机 Trunk 口都配好了,但 VLAN 10 的设备就是不通。后来发现,一台交换机的 Trunk 口 native VLAN 是 1,另一台是 10。native VLAN 不一致,导致 Untagged 帧被错误地划分到了不同 VLAN。从那以后,我每次配 Trunk 口都会检查 native VLAN 是否一致。

好了,VLAN 基础配置就讲到这里。记住:Access 口连设备,Trunk 口连交换机,PVID 别搞错,allowed VLAN 别漏掉。做到这四点,VLAN 配置基本不会出大问题。