交换机对带 802.1q 标签的以太网帧转发过程说明(802.1q:基于端口的 VLAN)
一、带 802.1q 标签的以太网帧说明:
IEEE 于 1999 年正式签发了 802.1q 标准,即 Virtual Bridged Local Area Networks 协议,规定了
VLAN 的国际标准实现,从而使得不同厂商之间的 VLAN 互通成为可能。
在 802.1q 以太网帧中,在原有的标准的以太网帧头中的源地址后增加了一个 4 字节的 802.1q
帧头来实现该技术的。在这 4 字节的 802.1q 标签头包含了 2 个字节的标签协议标识(TPID:Tag
Protocol Identifier,它的值是 8100),和 2 个字节的标签控制信息(TCI:Tag Control Information)。
TPID 是 IEEE 定义的新的类型,表明这是一个加了 802.1q 标签的文本。
TCI(标签控制信息):包括了三个方面的内容:Priority、CFI、VLAN ID。现对这三个内容进
行详细的解释:
Priority:这 3 位指明帧的优先级。一共有 8 种优先级,主要用于当交换机阻塞时,优先发送哪
个数据包;
CFI(Canonical Format Indicator):这一位主要用于总线型的以太网与 FDDI、令牌环网交换数
据时的帧格式;
VLAN ID(VLAN Identified):这是一个 12 位的域,指明 VLAN 的 ID,一共有 4096 个,每个
支持 802.1q 协议的设备发送出来的数据包都会包含这个域,以指明自己属于哪个 VLAN;
二、交换机对带 802.1q 标签的以太网数据帧转发说明:
从第一点可以看出,802.1q 标签头的 4 个字节是新增加的,目前一般的网卡和原来老式的交换
机和 HUB 并不支持 802.1q,因此这些设备发送出来的数据包的以太网帧头不包含这 4 个字节,同时
也无法识别这 4 个字节。因此,对于支持 802.1q 交换机来说,如果某个端口上所连接的设备也都能
够识别和发送这种带 802.1q 标签头的数据包文,那么我们将这种端口称为 Tag 端口;相反,如果该
端口所连接的设备不能够识别和发送这种带 802.1q 标签头的数据包文,那么我们将这种端口称为
Access 端口;就目前的应用来看,如果是下连用户或老式的交换机和 HUB 的,这些端口都属于 Access
端口。
下面我就结合一个例子来跟大家讲解交换机对 802.1q 数据帧的转发过程的说明。
现在 PC1 需要与 PC3 进行通讯,现我们就来分析它们之间的数据包转发过程。
1、 PC2 发送一个数据包给 PC3;
2、 数据包到达交换机 L2_1 的端口 F0/2 后,由于 PC2 的网卡是不支持 802.1q 协议的,因此这
个数据包是一个无标签头的包,所以 L2_1 会给该数据包添加一个 VLAN ID;
3、 根据目的 MAC 地址和 VLAN ID,交换机会查询数据库,从而判断该数据包需要发送到 gi0/1
端口,同时还会将数据包发送给端口 F0/1(因为端口 F0/1 和 F0/2 在同一个广播域),当然,
在数据包发送到端口 F0/1 时,交换机会先将标签头去掉,PC1 在收到该数据包后,会丢弃
这个数据包,因为目的地址不是它。而由于端口 gi0/1 是 Tag 端口,因此,发送到 gi0/1 端
口的数据包的标签头不会去掉;
4、 L3 在收到此数据包后,根据 VLAN ID 和目的 MAC 地址,在它的数据库中查找路由,知道
该数据包需要发送到端口 gi1/2。于是将该数据包发送出去;该数据包保留标签头;
5、 L2_2 在收到此数据包后,根据 VLAN ID 和目的 MAC 地址,在它的数据库中查询数据库,
知道要将数据包发送给端口 F0/1,于是就将数据包发送出去。注意,发送出去的数据包需
要去掉标签头。
以上我们结合实例讨论了 VLAN 收发数据包的过程,它的具体实现是由以太网交换机的交换芯
片实现的。