第十二篇技术笔记:VLAN:给数据贴个“部门标签”,互不干扰

张开发
2026/4/21 13:42:32 15 分钟阅读

分享文章

第十二篇技术笔记:VLAN:给数据贴个“部门标签”,互不干扰
写在开篇世界破破烂烂东大缝缝补补。自己淋过雨更懂得为别人撑把伞。愿世界没有硝烟没有战火。41岁的CPU就像磨合好的发动机每天还是有无穷动力比如我又开始研究起这三个疑惑啦1. VLAN这名字听着就玄乎到底是个啥缩写2. 为啥要这玩意没有它不行吗3. 加了它帧变长了吗如果你也有这些疑惑恭喜你那这篇就是又totally for you一、VLAN是啥名字咋来的我查了半天才搞明白VLAN全称Virtual Local Area Network中文叫“虚拟局域网”。掰开揉碎了看LAN局域网就是你家里、车上那个小范围的网络Virtual虚拟的不是物理上分开是逻辑上分开一句话VLAN就是用软件把一个物理网络在逻辑上切成多个“虚拟小网络”。快递类比我自己瞎琢磨的你有一家大快递公司一个仓库里堆着来自全国各地的包裹。如果不分类送北京的、送上海的、送广州的全混在一起找都找不到。VLAN就是给每个包裹贴一个“目的地标签”——北京、上海、广州。虽然都在同一个仓库里但一看标签就知道该往哪个方向送。二、不带VLAN交换机不也知道往哪转发吗这个问题我纠结了好久我当时的疑惑不带VLAN网络不是还一样都会知道往哪里转发吗后来搞明白了知道但只知道“发给谁”不知道“要不要隔离”。不带VLAN时交换机根据目标MAC地址转发。它知道“这个帧要发给网关”没问题。但它不知道“这个帧是摄像头的还是娱乐的”。这就导致了两个问题问题1广播泛滥不带VLAN时广播帧跟以前农村老家的大喇叭一样吧会发给所有人。车上有100个ECU某个ECU发一个广播所有ECU都要收浪费带宽和CPU。我当年第一次听说这个的时候心想“这不就是群里发消息所有人都在看吗烦不烦”问题2安全隔离不带VLAN时任何设备都能和任何设备通信。你不想让娱乐系统访问摄像头数据没办法因为没有隔离机制。所以不带VLAN交换机知道“往哪发”但不知道“该不该发”。VLAN加的是“隔离规则”不是“转发规则”。三、车载以太网上到底带不带VLAN根据什么定这个问题我也纠结过答案带也行不带也行。看心情不对看需求。场景是否需要VLAN我的理解单功能ECU如一个摄像头直连网关通常不需要就一路数据没啥可隔离的我懒多功能域控制器如智驾域控同时处理摄像头、雷达、诊断通常需要多路数据混在一起不隔离会打架整车网络设计需要广播隔离、安全隔离、优先级控制都是为了不翻车什么时候必须带功能隔离摄像头、诊断、娱乐必须分开不然摄像头被娱乐数据挤卡了我可赔不起安全隔离诊断口不能随便访问ADAS系统万一被黑了我这车就成了“黑客的玩具”广播隔离减少广播帧节省带宽省下来的带宽给老婆刷剧家庭和谐什么时候可以不带简单的点对点连接一个摄像头连一个网关只有一种数据类型不需要安全隔离一句话没有VLAN数据能跑有了VLAN数据跑得更稳、更安全、更有序。就像骑车能上班开车也能上班但开车舒服点。四、VLAN到底隔离的是啥这个问题我问了AI三遍才搞懂我当时的疑惑隔离是说摄像头数据就不会和娱乐数据在一帧里出现各自一帧后来搞明白了不是“分开装”是“分开跑”。数据还是那些数据帧还是那些帧。摄像头的数据是一帧一帧的娱乐数据也是一帧一帧的。它们不是被装进同一个帧里混着走而是各自独立的帧在同一根线上交替着跑。我用车道来类比想了好久没有VLAN的时候就像一条没有分车道的公路摄像头数据帧 [帧1] [帧2] [帧3] [帧4] ... 娱乐数据帧 [帧A] [帧B] [帧C] [帧D] ... 线上实际跑的 帧1 → 帧A → 帧2 → 帧B → 帧3 → 帧C → 帧4 → 帧D ...摄像头的数据和娱乐数据交叉混在一起。如果娱乐数据突然变多比如老婆开始看高清剧就会把摄像头数据的帧“挤开”导致摄像头数据延迟、卡顿然后我的自动驾驶就可能“眼瞎”。有了VLAN就像给每条数据流分配了专属车道摄像头数据帧 [帧1] [帧2] [帧3] [帧4] ... → 走VLAN 100车道 娱乐数据帧 [帧A] [帧B] [帧C] [帧D] ... → 走VLAN 200车道 线上实际跑的 还是同一根线但交换机看到标签就知道“这是VLAN100的送那边这是VLAN200的送这边”关键点VLAN不是把数据“装在一起”或“分开装”而是给每一帧贴个标签。交换机看到标签就知道这帧该送到哪里去不会把娱乐数据错送到域控制器也不会把摄像头数据错送到后排屏幕。五、VLAN的优先级数字越小优先级越高吗PCP一样怎么办这个坑我踩过我当时的疑惑VLAN 100和VLAN 200哪个优先级高后来搞明白了VLAN ID本身不决定优先级优先级是另一个独立的字段。VLAN标签4字节的结构如下字段长度含义取值TPID2字节标签协议标识符固定为0x81000x8100PCP3位优先级代码点0最低7最高0-7CFI1位规范格式指示通常为00VID12位VLAN ID取值范围1-40941-4094优先级字段PCP0是最低优先级7是最高优先级数字越大优先级越高越优先被处理我给自己举的例子摄像头数据PCP 6高优先级要实时不然我撞墙诊断数据PCP 4中优先级重要但不紧急娱乐数据PCP 0低优先级老婆刷剧卡一点没事别打我如果PCP一样怎么处理答案按“先来先服务”或者“轮询”。如果两个帧的PCP相同比如都是6交换机会要么先到先处理谁先来谁先走排队要么轮询轮流处理防止某个饿死你可能会问那VLAN 100和VLAN 200哪个优先级高答案没有直接关系。VLAN 100可以配高优先级也可以配低优先级。优先级是独立配置的和VLAN ID的数字大小无关。就像门牌号100的房子不一定比200的“高级”只是位置不同。车载里的典型配置数据类型VLAN IDPCP优先级说明ADAS摄像头1006高要实时不能卡诊断DoIP2004中重要但不紧急娱乐数据3000低可以等所以VLAN ID只是“门牌号”优先级是“加急标签”。门牌号大不代表加急加急级别一样就排队。六、为啥要有VLAN说白了就是怕“堵车”核心目的隔离。车上不隔离会怎样摄像头数据要实时不能卡顿——卡了我就撞墙诊断数据4S店升级要可靠——卡了我车就变砖娱乐数据听歌看电影带宽大但不紧急——卡了老婆骂我如果这三种数据混在一起摄像头数据可能会被娱乐数据“挤占”导致图像卡顿、延迟那我的小命可能就交代了。VLAN的三个好处好处说明车载例子功能隔离不同VLAN的数据互不干扰摄像头数据走VLAN 100娱乐数据走VLAN 300互不影响安全隔离不同VLAN不能直接通信诊断数据VLAN 200不能随便访问摄像头VLAN 100灵活管理改配置就行不用改线想把某ECU从VLAN 100换到VLAN 200改软件设置即可七、加了VLAN帧变长了吗答案是肯定的答案变长了加了4个字节。回顾一下上一讲的以太网帧结构不带VLAN的帧标准Ethernet II目标MAC源MAC类型数据校验6字节6字节2字节46-1500字节4字节带VLAN的帧在源MAC和类型之间插入4字节目标MAC源MACVLAN标签类型数据校验6字节6字节4字节2字节46-1500字节4字节注意加了VLAN标签后帧的最大长度从1518字节变成了1522字节多了4字节标签。但网卡和交换机通常都支持不用担心。这点长度增加换来的是“不撞车”值了。八、一个完整的车载例子三股数据流各走各的道假设我车上同时跑着三股数据数据类型VLAN IDPCP优先级走哪摄像头数据1006高域控制器DoIP诊断2004中诊断口娱乐数据3000低后排屏幕三股数据在同一根网线上跑但互相不干扰摄像头VLAN 100PCP6────┐ 诊断仪VLAN 200PCP4────┼──── 交换机 ────→ 各自的目的地 娱乐系统VLAN 300PCP0──┘交换机看到VLAN标签就知道VID100的帧只转发给域控制器VID200的帧只转发给诊断口VID300的帧只转发给后排屏幕如果网络拥堵交换机会先处理PCP6的帧摄像头数据再处理PCP4的诊断最后处理PCP0的娱乐。老婆看剧卡了忍忍吧别撞车要紧。九、踩的坑我踩过的你就别踩了最大的坑以前我以为“VLAN是物理上把线分开”。后来才知道VLAN是逻辑上划分物理上还是同一根线只是贴了标签。白高兴一场以为能省布线钱。第二个坑以前我以为“VLAN ID越小优先级越高”。后来才知道优先级是PCP字段独立控制的0-77最高和VLAN ID数字大小无关。被自己蠢哭。第三个坑以前我以为“隔离是把不同数据装进不同帧”。后来才知道数据本来就是各自独立的帧VLAN只是给它们贴标签。这个误会持续了好几天。第四个坑以前我以为“不带VLAN交换机就不知道怎么转发”。后来才知道不带VLAN交换机根据MAC地址转发但不知道“要不要隔离”。VLAN加的是隔离规则不是转发规则。想通的那一瞬间是当我理解了“虚拟”二字的含义——虚拟就是逻辑上分物理上不分。就像公司里的部门大家都在同一个办公室但工位标签告诉你“你是技术部的他是销售部的”。我终于不那么蠢了。十、下步目标VLAN搞清楚了。下步准备搞搞交换机——这货是咋根据VLAN标签和MAC地址转发的感觉又是一个坑但我不怕踩多了就习惯了。下期预告交换机就你别跑。十一、写在最后这次最大的收获是终于搞清楚了VLAN隔离到底隔离啥、优先级到底怎么算、不带VLAN会怎样。感觉自己又进化了一点点。VLAN就是给数据贴个“部门标签”让摄像头、诊断、娱乐数据在同一根线上各走各的道互不干扰。优先级就是“加急标签”让关键数据优先通过。自己淋过雨懂得为别人撑把伞。我踩过的坑写出来你就别踩了。慢慢来比较快。继续干就对了。写好啦886。

更多文章