Native VLAN

4 Jul

以太帧通过TRUNK时 会被打上标记。但一些二层协议如CDP,DTP,BPDU,VTP如果打上标记会导致一些不支持VLAN的交换机上不能协商。或者交换机通过HUB连接一 些终端时,交换机通过Trunk转发的以太帧被打上了标记,但HUB只是单纯地转发,并不解开标记,导致终端无法解析以太帧。因此出现了Native VLAN(默认是VLAN1)的概念,即配置成Native VLAN的Trunk端口,收到该VLAN的帧后,不打标记直接从Trunk链路转发出去。接收端的交换机收到Trunk端口的以太帧后发现没有标记,就 会泛洪到本地的Native VLAN端口。

20160101214859232

上图中间为HUB,左右两台交换机各连3台PC,HUB自己也连2台PC。

问题1:左下角红圈的PC发出的帧,连HUB的红圈的PC能收到吗?能,但对方看不懂。因为左下角PC在VLAN1里,通过Trunk会打上 VLAN1的标记,而HUB不解标记直接转发,接收方PC看不懂标记。左边交换机上的Trunk端口配置成Native VLAN1,这样VLAN1的帧通过Trunk链路时就不会打标记,对方就能收到并看懂了。

问题2:(接问题1)左边交换机Trunk端口配置成Native VLAN1后,左下角PC发出的帧,右边3台PC哪台能收到?Trunk上如果收到的以太帧没有标记,就会泛洪给相应的Native VLAN。因此如果右边交换机Trunk口没配置Native VLAN,那默认VLAN1就是Native VLAN,这样右下角VLAN1的PC能收到。如果右边交换机的Trunk口配置了Native VLAN(如指定VLAN2为Native VLAN),那右边中间VLAN2的PC能收到。当然除非你有特殊的原因,否则Trunk链路两端的端口应该配置一致的Native Vlan,以避免不同VLAN间通信。

再换一张网络拓扑图:

20160101230032136

在未配置Native VLAN前,R1的帧R2能收到,因为交换机的f1/0口都是VLAN2。现在将Trunk上SW1的f1/1配置成Native VLAN2:

SW1(config-if)#switchport trunk native vlan 2     //Native VLAN的配置命令很简单

R1的帧R2就收不到了。因为R1发出普通以太帧。SW1的f1/0属于VLAN2,SW1的Trunk口是native VLAN2。因此不打标记转发至SW2。SW2的Trunk端口收到未打标记的帧,向VLAN1(未配置Native VLAN的话默认是VLAN1)的端口转发。而SW2的f1/0口是属于VLAN2的,因此不会往R2转发。

有3种方法可以让R2收到R1的帧:

1.SW2的Trunk口也像SW1一样配置成Native VLAN2。这样SW2的Trunk口收到未打标记的帧,向VLAN2泛洪,就能转发给R2了

2.将SW2的f1/0口划到VLAN1里。这样SW2的Trunk口收到未打标记的帧,向VLAN1(未配置Native VLAN的话默认是VLAN1)泛洪时,就能转发给R2了

3.取消Native VLAN的概念:

SW1(config)#valn dot1q tag native   //这样Native VLAN也会打上标记VLAN10,即等于没有Native VLAN的概念了。

最后,注意Native VLAN是802.1Q Trunk端口上的概念,Access端口没有Native VLAN的概念。举例PC1->SW1->SW2->PC2,交换机间链路上,SW1的端口是Trunk,SW2的端口是Access,其他端口都是相同VLAN2。PC1发出的帧PC2无法收到。因为Trunk端口发出的帧会打上标记,但Access端口不接收任何打上标记的帧。解决方式是SW1的Trunk端口上配置成Native VLAN 2,这样PC1发出的帧PC2就能收到了。

Leave a Reply

Your email address will not be published. Required fields are marked *