我们将sw2手工指定为802.1q,并且手工指定接口模式为trunk,此时接口不再进行协商,可以看到mode从desirable变成了on
最后我们在主机上使用ping命令验证一下,利用trunk链路成功的实现了使用一条链路承载多个vlan的流量,有的同学可能注意到了show出来的信息中有个native vlan,这又是什么呢?
Native vlan 可以翻译为本征vlan,默认本征vlan是vlan1,802.1q的本征vlan默认在通过trunk链路的时候是不打标签的,这样做是因为当对一个数据帧插入802.1q标签时,由于帧校验发生改变,尾部的FCS校验和就需要重新进行计算,减少了打标签的动作可以节省硬件资源
那不打标签交换机如何识别出它是哪个vlan的数据呢?
事实上,因为只有本征vlan这一个vlan不打标签,所以“不打标签”也是一种“打标签”。
那么默认本征vlan是vlan1,如果我有某个vlan中接口的数量吵过了vlan1中接口的数量,在合理的规划下,本征vlan可以通过以上命令被修改,但一条trunk链路两端的本征vlan必须一致,不然就不能正确的识别这一个不打标签的帧到底应该属于哪个vlan,从而出现错误(本征vlan不匹配时stp首先就会认为端口状态不一致将端口block)
另外如果想让本征vlan打标通过trunk链路可以使用vlan dot1q tag native命令让本征vlan打标,这样做的好处有两点:1是可以防止vlan跳跃攻击;2是tag中有3个bit的实验位可以用于做qos标记。