802.1Q协议定义了基于端口的VLAN模型,这是使用得最多的一种方式。下面我们重点讲述一下交换机芯片是如何实现VLAN的,如果想了解更细节的内容,可以参考802.1Q协议,由于协议文本讲的非常抽象,所以,我们以TI公司的交换芯片为例来讲述,更便于理解。例子中的TNETX4090提供了8个100MB以太网口和1个1GB以太网口。
每一个支持802.1Q协议的主机,在发送数据包时,都在原来的以太网桢头中的源地址后增加了一个4字节的802.1Q桢头,之后接原来以太网的长度或类型域,关于以太网桢头的封装格式,参见以太网方面的培训教材。
这4个字节的802.1Q标签头包含了2个字节的标签协议标识(TPID--Tag Protocol Identifier,它的值是8100),和两个字节的标签控制信息(TCI--Tag Control Information),TPID是IEEE定义的新的类型,表明这是一个加了802.1Q标签的本文,
VLAN Identified( VLAN ID ): 这是一个12位的域,指明VLAN的ID,一共4096个,每个支持802.1Q协议的主机发送出来的数据包都会包含这个域,以指明自己属于哪一个VLAN,目前TNETX 3270只支持32个VLAN。
Canonical Format Indicator( cfi ):这一位主要用于总线型的以太网与FDDI、令牌环网交换数据时的桢格式,TNETX 3270忽略此位。
Priority:这3 位指明桢的优先级。一共有8种优先级,主要用于当交换机阻塞时,优先发送哪个数据包。TNETX 3270和TNETX 4090只支持一种优先级,所以这一位也没有用,
不难看出,802.1Q标签头的4 个字节是新增加的,目前我们使用的计算机并不支持802.1Q,即我们计算机发送出去的数据包的以太网桢头还不包含这4个字节,同时也无法识别这4个字节,将来会有软件和硬件支持802.1Q协议的。对于交换机来说,如果它所连接的以太网段的所有主机都能识别和发送这种带802.1Q标签头的数据包,那么我们把这种端口称为Tag Aware 端口;相反,如果该交换机端口说连接的以太网段有只要有一台主机不支持这种以太网桢头,那么交换机的这个端口我们称为Access端口,从目前的情况可以看出,所有的交换机的端口都属于后一种。
那么,在现在的情况下,交换机是如何支持VLAN的呢?是这样的,比如交换机的 1~4端口属于同一个VLAN,那么当 1 端口进来一个数据包是,交换机看到该数据包没有802.1Q标签头,那么,它会根据1号端口所属的VLAN组,自动给该数据包添加一个该VLAN的标签头,然后再将数据包交给数据库查询模块,数据库查询模块会根据数据包的目的地址和所属的VLAN进行路由,之后交给转发模块,转发模块看到这是一个包含标签头的数据包,而实际上发送的端口所连的以太网段的计算机不能识别这种数据包,所以,它会再将数据包进来是交换机给添加的标签头再去掉。如果计算机支持这种标签头,那么就不需要交换机添加或删除标签头了,至于到底是添加还是删除要看交换机所连的以太网段的主机是否识别这种数据包,即该交换机的端口是哪种类型的端口。当然,对于两个交换机互连的端口一般都是Tag Aware端口,这样,交换机和交换机之间交换数据包时是无须去掉标签头的。
处理流程包括3个步骤:
1、接收过程:该过程负责接收数据包,数据包可以是带标签头的,也可以不带标签头,如果不带,交换机会知道根据该端口所属的VLAN添加上相应的标签头。
2、查找/路由过程:该过程根据数据包的目的MAC地址、VLAN 标识已经数据库中注册的信息决定把数据包发送到哪个端口。

