IEEE 802.1Q 与 TSN:VLAN、优先级、时间同步、整形的血缘关系
说实话,刚接触 TSN 那会儿,我也琢磨过这事儿。IEEE 802.1Q 这不是做 VLAN 的标准吗?跟 TSN 那套时间敏感的东西有啥关系?后来做项目踩了不少坑才明白——802.1Q 就是 TSN 的地基。没有它,整形成、时间同步都飘在空中。
这章我就把四个核心概念串起来讲。VLAN、优先级、时间同步、整形。它们不是孤立的,是一个完整的流水线。
VLAN:不只是隔离,更是逻辑通道
很多人觉得 VLAN 就是个隔离工具。没错,但别小看它。在 TSN 里,VLAN 其实在帮你建立“专用车道”。
我记得有个汽车项目,客户要把摄像头数据、控制指令和诊断报文跑在同一个物理链路上。如果不做 VLAN 隔离,优先级再高也乱套。广播风暴一来,整形成直接失效。
# 典型的 IEEE 802.1Q 帧格式
+-----------------+----------------+----------------+----------------+
| 目的 MAC (6B) | 源 MAC (6B) | TPID (2B) | TCI (2B) |
| | | (0x8100) | (PCP+DEI+VID) |
+-----------------+----------------+----------------+----------------+
| 长度/类型 (2B) | 数据 (42-1500B)| FCS (4B) |
+-----------------+----------------+----------------+----------------+
这里的关键是 TCI 里的三个字段:
- PCP(3 bit):优先级
- DEI(1 bit):丢包指示
- VID(12 bit):VLAN ID
说白了,VLAN 标签不只告诉交换机“这是哪个网”,还告诉它“这帧有多重要”。你想想看,没有这个标签,交换机怎么决定先转发谁?
优先级:谁先走,谁等着
前面提到 PCP,就是优先级标记。802.1Q 定义了 8 个优先级(0-7)。在 TSN 一致性验证里,优先级映射到 Qav 的队列,直接决定了数据流的调度顺序。
我个人习惯把优先级分成三类:
| 优先级范围 | 典型应用 | TSN 行为 |
|---|---|---|
| 0-1 | 背景流量、诊断 | 尽力转发,不做时间保证 |
| 2-4 | 视频、状态数据 | 允许抖动,但有带宽保障 |
| 5-7 | 控制指令、时钟同步 | 严格优先级 + 整形 |
优先级的作用很清楚——告诉交换机“这帧不能等太久”。但光有优先级不够,因为优先级高的流多了,一样会堵。
时间同步:大家用同一个钟
嗯,这里要注意。时间同步(IEEE 802.1AS,也叫 )是整形的“节拍器”。没有同步,整形就失去了基准。
为什么?因为 TSN 的整形机制(比如 Qbv 的时间门控、Qbu 的帧抢占)都依赖一个精确的全局时钟。每个交换机在同一个时间点执行同一个动作。如果时钟偏差超过 1μs,门控窗口就错位了。
我曾经在一个产线项目中,好几台交换机对时都通过了,但最后整形效果很差。排查后发现,有两台交换机的晶振老化,频率漂移导致同步精度下降。一致性验证时只测了稳态精度,没测长期漂移,结果埋了雷。
# 同步流程简写
1. 主时钟发送 Sync 报文(带传出时间 T1)
2. 从时钟记录接收时间 T2
3. 从时钟发送 Delay_Req(记录时间 T3)
4. 主时钟回复 Delay_Resp(带回 T4)
5. 从时钟计算:
单向延迟 = ((T2 - T1) + (T4 - T3)) / 2
时钟偏差 = T2 - T1 - 单向延迟
你想想看,如果同步误差 1μs,对 100Mbps 链路的门控误差就是 12 字节以上。这足够让一个控制帧的传输窗口重叠或错过。
整形:该来的来,不该来的等等
整形(Shaping)是 TSN 最体现水平的地方。它决定了“什么时候发、发多少”。常见的整形机制有三种:
- CBS(Credit-Based Shaper,Qav):适合 AVB 流的带宽分配,用“信贷”控制发送速率
- TAS(Time-Aware Shaper,Qbv):精确的时间门控,把时间切成片,每个切片只发一类流
- ATS(Asynchronous Traffic Shaping):不需要全局同步,用帧内间隔控制
整形离不开优先级,也离不开时间同步。没有优先级,整形不知道哪个队列该多分带宽;没有时间同步,TAS 的门控就是空谈。
一张图看懂四者的关系
下面这张 SVG 把 VLAN、优先级、时间同步和整形的协作关系画出来了。我在项目中经常拿这张图给团队讲流程。
你看,数据帧从入口开始,先被 VLAN 分类隔离,然后根据 PCP 划入不同的优先级队列。之后每个队列可能有不同的整形参数(CBS 或门控)。最后发送出去。而时间同步就像整形的“心跳”,保证所有交换机步调一致。
一致性验证的检查点
基于上面的关系,在一致性验证时,我建议重点检查这几项:
- VLAN 标签处理:交换机是否完整保留/插入 802.1Q 标签?优先级信息会不会被覆盖?
- 优先级映射表:PCP 0-7 是否映射到正确的队列?所有队列都能独立整形吗?
- 时间同步精度:稳态精度是多少?长时间运行时漂移是否可控?
- 整形与同步联动:门控窗口是否与同步时钟对齐?窗口偏移在±1μs 内的占比如何?
- 边界情况:多 VLAN 标签(QinQ)时,优先级继承是否正常?
到这你应该明白了,VLAN、优先级、时间同步和整形不是四个独立的功能。它们是一条链上的不同环节。VLAN 给数据打了标签,优先级决定了它在队伍里的位置,时间同步统一了整队的节奏,整形控制了队伍的前进速度。少了任何一环,TSN 的确定性都无从谈起。