最早的以太网帧没有 VLAN 概念,一台交换机就是一个广播域。802.1Q 的出现,就是在标准以太网帧里插入一段标签,让交换机一眼看出"这帧属于哪个 VLAN",从而隔离广播、划分逻辑子网。
标签插在 MAC 源地址之后、以太网类型/Length 字段之前,所以带 Tag 的帧比普通帧长 4 字节。

| 字段 | 位数 | 取值 | 作用 |
|---|---|---|---|
| TPID | 16 bit | 固定 0x8100 | 标签协议标识,告诉接收方"我带了 VLAN 标签" |
| PRI | 3 bit | 0~7 | User Priority,被 QoS 复用(对应 802.1p 优先级) |
| CFI | 1 bit | 0 | 规范格式指示,以太网中通常置 0 |
| VID | 12 bit | 1~4094 | VLAN ID,定位广播域 |
TPID 是"身份证":接收方看到 0x8100 就知道后面跟着 VLAN 信息。VID 是"门牌号":1~4094 范围内的值决定这帧归哪个 VLAN 管。PRI 和 CFI 藏在中间,一个管优先级,一个基本是历史兼容位。
PRI(Priority)这 3 个比特给出 0~7 共 8 级优先级,直接对应 802.1p 的优先级体系。交换机做队列调度时,高 PRI 的帧优先转发;拥塞时低 PRI 的帧先被丢弃。这就是为什么语音、控制流量常被打上高 PRI——它和 VID 是同一段 Tag 里的两个独立维度。
单层 Tag 在运营商场景不够用:用户自己已经有了一层 VLAN,运营商网络还得再包一层做城域承载。QinQ(IEEE 802.1ad) 的做法是在外层再压一个 0x8100 Tag:
外层 VID(S-VLAN):运营商网络的标识;
内层 VID(C-VLAN):用户原有的 VLAN,被原样透明传递。
于是用户的 VLAN 在运营商大网里"套了壳"跑,互不冲突。抓包时看到连续两个 0x8100,就是 QinQ 在干活。
锐应的工业以太网交换机在端口上支持 802.1Q Tag 的识别与重写,可按 PRI 做 802.1p 优先级映射把关键业务(如 PLC 轮询、ERPS 控制)送上高队列,也能通过 QinQ 在跨园区/跨运营商链路上透明承载用户 VLAN。具体端口模式(Access/Trunk/Hybrid)怎么选,可看锐应工业交换机的说明。把交换机和锐应 PON 方案搭配,能覆盖从现场到局端的整段链路。公司背景见关于锐应。
标准把它们保留,可用范围是 1~4094。配置时落到保留值会被交换机拒绝或视为非法。
落在接收端口的 PVID(默认 VLAN ID) 上。Access 口通常 PVID=1,所有 untagged 帧都归到它。
PRI 是二层 802.1p 优先级,DSCP 是三层 IP 优先级,两者可以互相映射。边界设备上常做 PRI↔DSCP 的信任与重标记。
外层先被解析(S-VLAN),内层后解析(C-VLAN)。外层 TPID 多为 0x8100,严格按 802.1ad 时也可能用 0x88a8。
802.1Q 的 4 字节 Tag 把"属于哪个 VLAN、优先级多高"直接写进帧头:TPID 标身份、PRI 给 QoS、VID 定位广播域。读懂它,抓包看到 0x8100 不再懵,QinQ 套两层也不过是再压一个 Tag——原理完全一致,只是多了一层壳。