vlan详解之二层三层转发原理( 三 )


vlan转发技术原理我们现在来看一下VLAN的转发技术原理,在以太网交换机中是根据目的MAC地址来查MAC地址表进行数据帧的转发,MAC地址表中包含了MAC地址与端口的一个对应的关系,当交换机收到一个数据帧的时候,交换机会查看该数据帧中的目的MAC地址,如果是一个单播帧,交换机会查表从对应的端口转发出去,如果是广播地址,那么交换机会从除收到该广播帧的以外的所有端口发送出去;但是在VLAN 技术中,交换机在数据帧中加上一个标签,然后交换机在查表的过程之外还要检查端口上的标签是否匹配,交换机只会在属于这个标签的端口上进行转发,如果不是就不进行转发操作

vlan详解之二层三层转发原理

文章插图
 
上图就是一个带IEEE802.1Q标记的以太网帧格式,我们现在重点来看中间的tag字段,tag字段总共占四个字节,其中TPID(标签协议标识)和TCI(标签控制信息)各占两个字节;TPID是什么?TPID是IEEE定义的新的类型,标识这是一个封装了802.1Q标签的帧,其中就包含了一个固定的值0x8100 。后面的TCI又包含了三个字段 。分别是priority(优先级)、CFI、VLAN ID;priority占3位,指定帧的优先级,一共有8种优先级,从0-7;CFI占1为,当这个值为0时说明这是一个规范格式,为1时是非规范格式,它在令牌环网、FDDI网络中来指示封装帧中所带的地址的比特次序;VLAN ID字段占12位,指明该数据帧所在的vlan编号,VLAN的编号共4096个,但是0和4096两个值保留,所以可用的也就4094个,其中的vlan 1是交换机的默认vlan
我们看完了802.1Q的帧格式,现在再来看看vlan的标签是怎么打上去的 。
vlan详解之二层三层转发原理

文章插图
 
当PCA发送一个数据帧到交换机时,这个时候是不带标签的,当这个数据帧到达交换机的端口时,交换机给这个数据帧打上一个默认的标签(默认vid),等这个数据帧要离开这台交换机的时候,交换机又会把这个标签去掉,这就是一个单标签的操作过程,在整个数据转发的过程中对终端主机来说是透明的,交换机如何进行vlan划分主机是不知道的,也不需要主机去了解,所有的打标签和去标签都交由交换机处理,这就是单标签的一个操作过程
看完标签操作过程后我们来了解下三种链路类型,分别是access、trunk、hybrid
Access一般是用在连接用户设备的那一端,只允许缺省vlan通过,仅接收和发送一个vlan的数据帧,这也就是我们前面所说的单标签交换过程;看上图,PCA发送一个数据帧个PCC,交换机收到该数据的时候把这个数据帧打上vlan 10的标签,然后进行查表操作,把数据帧发送到与PCC连接的端口的时候就会把这个VLAN 10的标签去掉 。
访问链接(Access Link,或者Access类型端口),指的是“只属于一个VLAN,且仅向该VLAN转发数据帧”的端口 。在大多数情况下,访问链接所连的是客户机 。
在access链路类型中是不是一次只能允许一个vlan通过?那我如果一次要允许多个vlan通过,那么这个access链路类型是不是就行不通了?这也就有了我们第二个链路类型,trunk链路类型
vlan详解之二层三层转发原理

文章插图
 
Trunk,汇聚链接(Trunk Link),指的是能够转发多个不同VLAN的通信的端口;汇聚链路上流通的数据帧,都被附加了用于识别分属于哪个VLAN的标签 。
看上图,两台交换机中间只有一条链路,但是两个交换机之间要同时传递vlan10和vlan20两个标签,我们现在用前面的access肯定不行了吧,这个时候我们用trunk来看是怎么操作的,PCA发送一个数据帧给SWA,SWA收到后打上10的标签,然后查表通过E1/0/24端口发送SWB,在发送给SWB的时候不做任何操作,原封不动的传给SWB,SWB收到后再进行查表,然后发送到vlan10对应的端口E1/0/1进行去标签的操作,最后把去掉标签的数据帧发送给PCC,PCB和PCD进行通信也进行相同的操作,不过默认帧是个例外,发送默认帧时,trunk会去掉默认vlan的标签;同样,交换机从trunk收到不带标签的帧时会打上默认vlan标签;我们除了学完access链路类型和trunk类型以外,还有第三种链路类型hybrid,
Hybrid,混合链路(Hybrid Link)这是华三的一个私有的链路类型,hybrid端口可以接收和发送多个VLAN的数据帧,同时还能对任何vlan帧进行去标签的操作
vlan详解之二层三层转发原理

文章插图
 
看上图,PCA发送一个数据帧给PCC,当交换机收到PCA发来的数据帧时会打上10的标签,然后交换机进行查表操作,发送到PCC的端口,交换机进行去标签的操作的时候会检查untag,在untag表项中可以去掉带标签10、20、30的数据帧,所以很方便的就去掉了数据帧;这时PCA又发送一个数据帧给PCB;当交换机收到PCA发来的数据帧时会打上10的标签,然后交换机进行查表操作,然后发送到PCB的端口,交换机进行去标签的操作的时候会检查untag,但是此时untag表项中只有20和30,也就意味着该端口只能去掉带标签20和30的数据帧,这是交换机无法去掉标签,所以只能把该数据帧丢弃


推荐阅读