VLAN 总结
目录VLAN基础知识
VLAN ( Virtual Local Area Network )又称虚拟局域网,是将一个物理的局域网在逻辑上划分成多个广播域的技术。通过在交换机上配置VLAN,可以实现在VLAN内的用户进行二层访问,而不同VLAN间的用户被二层隔离。这样既能够隔离广播域,又能提升网络的安全性。
为什么划分VLAN
广播域,指的是广播帧(目标MAC地址全部为1)所能传递到的范围,亦即能够直接通信的范围。严格地说,并不仅仅是广播帧,多播帧(Multicast Frame)和目标不明的单播帧(Unknown Unicast Frame)也能在同一个广播域中畅行无阻。
如果整个网络只有一个广播域,那么一旦发出广播信息,就会传遍整个网络,并且对网络中的主机带来额外的负担。当网络中的计算机数量变多的时候,会消耗大量的带宽,因此,在设计LAN时,需要注意如何才能有效地分割广播域。
为限制广播域的范围,减少广播流量,需要在没有二层互访需求的主机之间进行隔离。路由器是基于三层IP地址信息来选择路由和转发数据的,其连接两个网段时可以有效抑制广播报文的转发,但一般路由器的LAN口较少,成本较高。与路由器相比,二层交换机一般带有多个网络接口。因此如果能使用它分割广播域,那么无疑运用上的灵活性会大大提高。因此,人们设想在物理局域网(二层网络)上构建多个逻辑局域网,即VLAN。
链路类型和端口类型
VLAN链路分为两种类型:Access链路和Trunk链路。
接入链路(Access Link):连接用户主机和交换机的链路称为接入链路。如本例所示,图中主机和交换机之间的链路都是接入链路
干道链路(Trunk Link):连接交换机和交换机的链路称为干道链路。如本例所示,图中交换机之间的链路都是干道链路。干道链路上通过的帧一般为带Tag的VLAN帧。
端口分为三种类型:Access端口、Trunk端口和Hybrid端口。
注意:
链路和端口的区别是链路是两个端口的连线。
下面介绍的收发规则都是在两个设备之间的规则,不适用于交换机内部的转发
Access端口
Access端口是交换机上用来连接用户主机的端口,它只能连接接入链路,并且只能允许唯一的VLAN ID通过本端口。
Access端口收发数据帧的规则如下:
- 如果该端口收到对端设备发送的帧是untagged(不带VLAN标签),交换机将强制加上该端口的PVID。如果该端口收到对端设备发送的帧是tagged(带VLAN标签),交换机会检查该标签内的VLAN ID。当VLAN ID与该端口的PVID相同时,接收该报文。当VLAN ID与该端口的PVID不同时,丢弃该报文。
- Access端口发送数据帧时,总是先剥离帧的Tag,然后再发送。Access端口发往对端设备的以太网帧永远是不带标签的帧。
Access端口发送在本示例中,交换机的G0/0/1,G0/0/2,G0/0/3端口分别连接三台主机,都配置为Access端口。主机A把数据帧(未加标签)发送到交换机的G0/0/1端口,再由交换机发往其他目的地。收到数据帧之后,交换机根据端口的PVID给数据帧打上VLAN标签10,然后决定从G0/0/3端口转发数据帧。G0/0/3端口的PVID也是10,与VLAN标签中的VLAN ID相同,交换机移除标签,把数据帧发送到主机C。连接主机B的端口的PVID是2,与VLAN10不属于同一个VLAN,因此此端口不会接收到VLAN10的数据帧。
Trunk端口
Trunk端口是交换机上用来和其他交换机连接的端口,它只能连接干道链路。Trunk端口允许多个VLAN的帧(带Tag标记)通过。
Trunk端口收发数据帧的规则如下:
- 当接收到对端设备发送的不带Tag的数据帧时,会添加该端口的PVID,如果PVID在允许通过的VLAN ID列表中,则接收该报文,否则丢弃该报文。当接收到对端设备发送的带Tag的数据帧时,检查VLAN ID是否在允许通过的VLAN ID列表中,如果VLAN ID在接口允许通过的VLAN ID列表中,则接收该报文。否则丢弃该报文。
- 端口发送数据帧时,当VLAN ID与端口的PVID相同,且是该端口允许通过的VLAN ID时,去掉Tag,发送该报文。当VLAN ID与端口的PVID不同,且是该端口允许通过的VLAN ID时,保持原有Tag,发送该报文。
在本示例中,SWA和SWB连接主机的端口为Access端口,PVID如图所示。SWA和SWB互连的端口为Trunk端口,PVID都为1,此Trunk链路允许所有VLAN的流量通过。当SWA转发VLAN1的数据帧时会剥离VLAN标签,然后发送到Trunk链路上。而在转发VLAN20的数据帧时,不剥离VLAN标签直接转发到Trunk链路上。
Hybrid 端口
Hybrid端口收发数据帧的规则如下:
当接收到对端设备发送的不带Tag的数据帧时,会添加该端口的PVID,如果PVID在允许通过的VLAN ID列表中,则接收该报文,否则丢弃该报文。当接收到对端设备发送的带Tag的数据帧时,检查VLAN ID是否在允许通过的VLAN ID列表中(tag列表或untag列表)。如果VLAN ID在接口允许通过的VLAN ID列表中,则接收该报文,否则丢弃该报文。
Hybrid端口发送数据帧时,将检查该接口是否允许该VLAN数据帧通过(tag列表或untag列表)。
总结和自己的理解
交换机内部端口间的转发
交换机的第1端口是ACCESS类型,default vlan10;第24端口trunk类型,允许通过的vlan为10 20, pvid 1;很明显1端口收到的数据是能到达24端口的。一个无vlan标记或标记为vlan10的数据进入1端口后,其数据就肯定是带vlan10标记的数据了。然后1端口将数据发往24端口,24端口收到的由1端口发送来的数据是带标记的还是不带标记的?如果端口1和端口24是收发关系,那么,根据ACCESS端口只发送不带tag的数据,那么端口1会去掉tag发送给24端口,24端口收到不带tag的数据,会添加PVID 1,而VLAN 1不在端口24的允许通过列表中,数据是无法发送出去的。如果端口1和端口24之间不遵循以上方法,那么,24端口收到的是带tag(vlan 10)的数据,那么数据是可以通过24端口的。
所以我们可以读出下面的结论:
交换机所有内部端口间的相互的数据传递是不遵循端口类型收发过程中的tag和untag的。这些规则只适用于和交换机相连的设备。
交换机内部默认基于vlan和接口以及mac地址的对应关系处理报文,即802.1q(带vlan标签的数据帧)参考mac地址映射表处理数据转发。交换机内部相同vlan相互通信,不同vlan相互隔离。
通俗的说,端口X收到数据并处理后(tag)把数据转发到其他vlan相同的端口,然后每个端口再根据自己的端口类型执行不同的操作。 在用上面的列子来说,端口1接收到数据后加上vlan10的tag,然后转发到端口24,然后端口24根据trunk端口的发送规则,保留原有tag 10发送数据,如果这个交换机还有ACCESS端口2 default VLAN10,ACCESS端口3 default vlan20,那么端口1的数据发送到端口2,端口是ACCESS,会去掉tag发送给连接的PC,但是数据不会转发到端口3。