其实就是不打tag的VLAN,因为你想,一个VLAN在经过交换设备老是打tag,然后再脱掉tag。。。这个很浪费计算资源,尤其是在转发的报文量相当大的时候。
如何解决:
可以定义一种vlan,也就是在众多的vlan中指定一种vlan,当然一般是指定那个报文量大的vlan,作为 native vlan。
![](https://images2015.cnblogs.com/blog/751746/201610/751746-20161010103204946-1391253791.png)
如上图所以,将两个交换机的一个端口都指定为native vlan 10 ,也就是当没有tag的报文,从该端口出去时,他不会打tag ,会被默认指定为vlan 10。当接收到一个没有打tag的报文时,会认为它是vlan 10的报文
![](https://images2015.cnblogs.com/blog/751746/201610/751746-20161010103205852-25170765.png)
PC1和PC2能通信么,(这里PC1与PC2在同一网段内哈)?
首先答案是肯定的。
来分析下这个过程,当PC1发报文到 左边的转发设备,由于入端口是Trunk Native 10,本征VLAN,当该转发设备收到该报文时,以为是VLAN 10的报文(因为该报文开始没有打tag),转发的时候还是不打tag,但当被配置为Trunk Native 20接收到报文时,因为该报文是被属于vlan 10的,于是会被打上vlan 10的标签再发送(毕竟 本征vlan 端口首先得是Trunk口,且该报文不属于vlan 20)。
然后右边的转发设备收到该打有vlan 10报文时,由于端口是Trunk native 30,因此不处理该报文,然后从access vlan 10转发出该打有vlan 10的报文时,会打掉该打有vlan 10的标签,再发出去,于是PC2就能收到该报文了。
当报文从PC2发往PC1时,就更加方便了,进入access vlan 10的时候被打上vlan 10的标签.然后做下一步处理。这个标签会一直跟着到左边的交换机转发该报文时,也就是从Trunk Native 10 发出,会去掉该标签。
这样,PC1与PC2是互通的。