IEEE 802.1Q封装的VLAN数据帧格式

本文介绍了VLAN(虚拟局域网),其常用于交换机和路由器。阐述了VLAN数据帧格式,与普通以太网二层包相比,它在目的和源MAC后添加4 Byte的VLAN标签字段,并解析了标签各字段含义。还给出了用C语言结构体表示VLAN数据帧的示例。

一. 前言

        VLAN(Virtual Locl Area Network),中文称为虚拟局域网,VLAN是将不同的局域网划出来的方式。一般的应用在交换机和路由器上。在路由器的主控芯片上,通常会集成交换芯片,例如通信行业常用MT76xx系列。通过配置交换芯片,可以将交换芯片不同的端口配置为不同VLAN ID,并且配合vconfig命令,可以将交换芯片的端口划分到不同的局域网。

二. VLAN数据帧格式

非VLAN数据帧格式 (untagged)

VLAN数据帧 (tagged)

        我们知道,普通的以太网二层包是由6 Byte的目的MAC,6 Byte的源MAC以及2 Byte的三层的协议类型号。但是VLAN数据帧是在6 Byte的目的MAC和6 Byte的源MAC后添加4 Byte的VLAN标签字段,标识这是一个带VLAN标签的包。下面解析VLAN标签四个字段的含义:

TPID :2 Byte,成为Tag Protocol Identifier(标签协议标识符),表示数据帧的类型。取值为 0x8100表示该帧是IEEE 802.1Q的VLAN数据帧。

PRI :Priority,表示数据帧的802.1p优先级。取值范围为0-7,值越大优先级越高,当交换机拥塞时,优先发送优先级高的数据帧。

CFI :Canonical Format Indicator(标准格式指示位),表示MAC地址在不同的传输介质中是否以标准格式封装,用于兼容以太网和令牌环网。1 - 以非标准格式封装,在以太网中,CFI为0。

VID :VLAN ID,数据帧所属的VLAN的编号,VLAN ID取值范围为0 - 4095。因为0和4095为协议保留值,所以VLAN ID的有效范围是1 - 4094。

        PRI,CFI和VID统称为标签控制信息(Tag Control Infomation)。

三. C语言数据结构表示

struct vlan_ethhdr 结构体

struct vlan_ethhdr {
	unsigned char	h_dest[ETH_ALEN];
	unsigned char	h_source[ETH_ALEN];
	__be16		h_vlan_proto;
	__be16		h_vlan_TCI;
	__be16		h_vlan_encapsulated_proto;
};

        本结构体来自Linux内核的include/linux/if_vlan.h,ETH_ALEN宏的值为6。

h_dest :目的MAC地址。

h_source :源MAC地址。

h_vlan_proto :TPID,802.1Q取值为0x8100。

h_vlan_TCI :PRI,CFI,VID三个值的组合。

h_vlan_encapsulated_proto :三层的协议号。

四. 总结

        本文主要介绍了VLAN数据包和普通数据包的区别,以及介绍了VLAN数据包的VLAN tag字段的作用。

<think>好的,我现在需要帮助用户了解IEEE 802.1Q以太网标记字段的具体组成。首先,用户之前询问了华为交换机支持哪些VLAN划分方式,现在转向了更底层的协议细节,特别是802.1Q的标记结构。这说明用户可能在进行网络配置或故障排除时遇到了需要深入理解数据帧结构的情况。 首先,回顾用户提供的引用内容,尤其是引用[2]、[3]、[4]都涉及802.1Q的标签头结构。我需要将这些信息整合起来,确保回答准确且符合标准。用户的问题集中在4字节标记的具体字段,所以需要详细解析每个部分:TPID、TCI(包括Priority、CFI、VLAN ID)。 用户可能希望知道每个字段的位数、作用以及实际应用中的配置意义。比如,TPID的固定值0x8100,TCI中的优先级、CFI在不同网络介质中的意义,以及VLAN ID的范围限制。此外,用户可能还想了解这些字段如何在实际数据帧中排列,以及不同网络设备如何处理这些标记。 需要确保回答结构清晰,分点说明每个字段,并适当举例或配置示例,如引用中的VLAN ID范围是0-4095,但实际可用是1-4094。同时,结合之前的回答中提到的VLAN划分方式,如基于端口或MAC地址,可能需要指出这些配置如何影响VLAN ID的标记。 另外,用户可能对tagged和untagged的区别感兴趣,引用中提到过,这里可以简要提及,以帮助用户全面理解。还要注意引用中的CFI在以太网中通常为0,而在其他网络类型中可能不同,这一点需要明确说明,避免混淆。 最后,用户可能需要验证命令或实际应用中的查看方式,如使用抓包工具查看结构,可以建议使用Wireshark等工具,并说明如何识别各个字段。同时,生成的相关问题需要考虑用户可能进一步的问题,如QinQ如何扩展VLAN,或优先级如何影响流量处理,这些都能帮助用户深入探索。</think>基于IEEE 802.1Q标准的以太网标记字段组成分析如下: --- ### 一、IEEE 802.1Q标记的4字节字段结构 IEEE 802.1Q标记是插入到以太网中的**4字节(32位)**扩展字段,位于**源MAC地址**和**类型/长度字段**之间,具体包含以下两部分: $$ \begin{array}{|c|c|} \hline \text{TPID(2字节)} & \text{TCI(2字节)} \\ \hline \end{array} $$ --- #### 1. **TPID(Tag Protocol Identifier,标签协议标识符)** - **长度**:16位(2字节) - **固定值**:`0x8100`(十六进制) - **作用**:标识该为带802.1Q标签的[^2]。若交换机收到TPID非0x8100的,可能按未标记处理。 --- #### 2. **TCI(Tag Control Information,标签控制信息)** - **长度**:16位(2字节) - **子字段划分**: $$ \begin{array}{|c|c|c|} \hline \text{Priority(3位)} & \text{CFI(1位)} & \text{VLAN ID(12位)} \\ \hline \end{array} $$ ##### (1) **Priority(优先级)** - **长度**:3位 - **取值范围**:0(最低)~7(最高) - **用途**:实现**802.1p QoS优先级标记**,用于流量分类(如语音流量优先级设为6)[^2]。 ##### (2) **CFI(Canonical Format Indicator,规范格式指示位)** - **长度**:1位 - **取值含义**: - `0`:以太网等标准网络中使用**规范格式**(MAC地址按标准字节序封装)[^3][^4]。 - `1`:令牌环网等旧式网络使用**非规范格式**。 - **实际应用**:现代以太网中CFI固定为0[^4]。 ##### (3) **VLAN ID(虚拟局域网标识符)** - **长度**:12位 - **取值范围**:0~4095(实际可用为1~4094,0和4095保留)[^2]。 - **核心功能**:标识数据帧所属的VLAN,交换机根据此字段进行流量隔离与转发。 --- ### 二、标记与未标记对比 | 特征 | 标记(Tagged Frame) | 未标记(Untagged Frame) | |--------------------|-----------------------------------|-----------------------------------| | **TPID存在性** | 包含0x8100 | 无 | | **VLAN处理** | 直接读取VLAN ID进行转发 | 根据接口PVID打标签后处理[^3] | | **典型场景** | Trunk端口跨交换机传输 | Access端口接入终端设备 | --- ### 三、实际数据帧示例 原始以太网(未标记): ``` | 目标MAC | 源MAC | 类型/长度 | 数据 | FCS | ``` 802.1Q标记: ``` | 目标MAC | 源MAC | 0x8100 | Priority | CFI | VLAN ID | 类型/长度 | 数据 | FCS | ``` --- ### 四、技术验证方法 1. **抓包工具分析** 使用Wireshark捕获流量,可观察到: - TPID字段显示为`0x8100` - VLAN ID以十进制显示(如`VLAN 100`) 2. **交换机配置验证** ```shell display interface GigabitEthernet0/0/1 # 查看端口的PVID和标记状态 ``` --- ### 相关问题 1. QinQ协议如何通过双层802.1Q标签扩展VLAN容量? 2. 802.1p优先级如何在交换机队列调度中实现流量分级? 3. 如何通过VLAN ID 4095实现交换机管理流量隔离?
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值