再理解VLAN

来源:互联网 发布:苏州青旅 知乎 编辑:程序博客网 时间:2024/06/08 04:48

今天被培训了一下,感觉之前写的Trunk和native VLAN笔记简直狗屁不通,不知所云。这次再理一下思路。

什么是VLAN?百度知道,http://baike.baidu.com/view/16125.htm,我就不抄了。

交换机的端口,分为2种,Access和Trunk。可以把Access理解为Trunk的一种特殊情况。下面就以Trunk口来理解VLAN Tag。

交换机内部有一个FDB(Forwarding Datebase),是一个表,包括MAC和VLAN等信息。

每一个端口,都会有一个Native VLAN和一个VLAN的Allow List,也就是说允许哪些VLAN的报文通过。

在交换机内部的报文,都会有VLAN Tag。

  1. 当一个不带VLAN Tag的报文进入端口时,交换机就会把这个报文加一个包含Native VLAN的VLAN Tag。当一个带VLAN Tag的报文进入时,什么都不做。这样就保证了报文一进入交换机就有VLAN Tag。
  2. 当一个报文有了VLAN Tag后,交换机就会检查这个报文是否允许通过。这个要通过检查VLAN的Allow List。如果报文的VLAN不在Allow List里,那么这个报文会被丢弃。如果在Allow List里,那么就转发。所以,通常情况下,Native VLAN都会在Allow List里。也有特殊情况,如果不希望不带VLAN Tag的报文通过,那么可以让Native VLAN不在Allow List里。
  3. 经过了上一步,报文应该往哪里发?这就需要查找FDB。通过在FDB里查找DMAC(目的MAC)所在的端口,把报文转发出去。
  4. 当这个报文走到出端口时,出端口会先检查Allow List,如果不在,则丢弃。然后看报文的VLAN是不是跟自己的Native VLAN相等。如果相等,则把VLAN Tag剥掉,送出一个不带VLAN的报文。如果不相等,不做任何改动,带着VLAN Tag直接送出。
为什么说Access是Trunk的一种特殊情况?其实,Access就相当于VLAN的Allow List里只有一个成员,就是Native VLAN,通常也叫PVID。所以,从Access口出去的报文绝对不会带Tag,因为有2种情况,a)Tag被剥掉了(报文的VLAN==Native VLAN),b)报文被丢弃了(报文的VLAN不在Allow List里)。

原创粉丝点击