一、什么是VLAN
VLAN(Virtual LAN),“虚拟局域网”。LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成的企业网络。VLAN所指的LAN特指使用路由器分割的网络——也就是广播域,一个交换网络就是一个广播域。
广播域,指的是广播帧(目标MAC地址全部为1)所能传递到的范围,亦即能够直接通信的范围。二层交换机只能构建单一的广播域,不过使用VLAN功能后,它能够将网络分割成多个广播域。
二、为什么用VLAN
二层交换机只能构建单一的广播域,不过使用VLAN功能后,它能够将网络分割成多个广播域。如果整个网络只有一个广播域,那么一旦发出广播信息,就会传遍整个网络,并且对网络中的主机带来额外的负担,安全问题和垃圾流量问题会非常严重。
与路由器相比,二层交换机一般带有多个网络接口。因此如果能使用它分割广播域,那么无疑运用上的灵活性会大大提高。用于在二层交换机上分割广播域的技术,就是VLAN。通过利用VLAN,我们可以自由设计广播域的构成,提高网络设计的自由度。
三、实现VLAN的机制
首先,在一台未设置任何VLAN的二层交换机上,任何广播帧都会被转发给除接收端口外的所有其他端口(Flooding)。例如,计算机A发送广播信息后,会被转发给端口2、3、4。
这时,如果在交换机上生成红、蓝两个VLAN;同时设置端口1、2属于红色VLAN、端口3、4属于蓝色VLAN。再从A发出广播帧的话,交换机就只会把它转发给同属于一个VLAN的其他端口——也就是同属于红色VLAN的端口2,不会再转发给属于蓝色VLAN的端口。
同样,C发送广播信息时,只会被转发给其他属于蓝色VLAN的端口,不会被转发给属于红色VLAN的端口。
VLAN通过限制广播帧转发的范围分割了广播域。上图中为了便于说明,以红、蓝两色识别不同的VLAN,在实际使用中则是用“VLAN ID”来区分的。
四、直观描述VLAN
如果要更为直观地描述VLAN的话,可以理解为将一台交换机在逻辑上分割成了数台交换机。在一台交换机上生成红、蓝两个VLAN,也可以看作是将一台交换机换做一红一蓝两台虚拟的交换机。
在红、蓝两个VLAN之外生成新的VLAN时,可以想象成又添加了新的交换机。
但是,VLAN生成的逻辑上的交换机是互不相通的。因此,在交换机上设置VLAN后,如果未做其他处理,VLAN间是无法通信的。
五、VLAN间如何通信
VLAN是广播域。而通常两个广播域之间由路由器连接,广播域之间来往的数据包都是由路由器中继的。因此,VLAN间的通信也需要路由器提供中继服务,这被称作“VLAN间路由”。VLAN间路由,可以使用普通的路由器,也可以使用三层交换机。
六、交换机的端口
交换机的端口,可以分为两种:
■ 访问链接(Access Link)
■ 汇聚链接(Trunk Link)
1.访问链接(Access Link)
访问链接,指的是“只属于一个VLAN,且仅向该VLAN转发数据帧”的端口。在大多数情况下,访问链接所连的是客户机。
通常设置VLAN的顺序是:生成VLAN;设定访问链接(决定各端口属于哪一个VLAN):静态VLAN,动态VLAN
2.汇聚链接(Trunk Link)
汇聚链接,指的是能够转发多个不同VLAN的通信的端口。汇聚链路上流通的数据帧,都被附加了用于识别分属于哪个VLAN的特殊信息。让交换机间互联的网线集中到一根上。
汇聚链接如何实现跨越交换机间的VLAN:
(1)A发送的数据帧从交换机1经过汇聚链路到达交换机2时,在数据帧上附加了表示属于红色VLAN的标记。
(2)交换机2收到数据帧后,经过检查VLAN标识发现这个数据帧是属于红色VLAN的。
(3)因此去除标记后根据需要将复原的数据帧只转发给其他属于红色VLAN的端口。
这时的转送,是指经过确认目标MAC地址并与MAC地址列表比对后只转发给目标MAC地址所连的端口。只有当数据帧是一个广播帧、多播帧或是目标不明的帧时,它才会被转发到所有属于红色VLAN的端口。同理,蓝色VLAN发送数据帧时的情形也与此相同。
汇聚链路上流通着多个VLAN的数据,自然负载较重。因此,在设定汇聚链接时,有一个前提就是必须支持100Mbps以上的传输速度。
七、散碎知识点
(1)在一个支持VLAN特性的交换网络中,我们把交换机与终端计算机直接相连的链路称为 Access 链路( Access Link),把 Access链路上交换机一侧的端口称为 Access 端口( Access Port)。同时,我们把交换机之间直接相连的链路称为 Trunk链路( Trunk Link),把 Trunk链路上两侧的端口称为 Trunk端口( Trunk Port)。在一条 Access 链路上运动的帧只能是(或者说应该是) Untagged帧,并且这些帧只能属于某个特定的VLAN;在一条 Trunk链路上运动的帧只能是(或者说应该是) Tagged帧,并且这些帧可以属于不同的VLAN。一个 Access 端口只能属于某个特定的VLAN,并且只能让属于这个特定VLAN的帧通过;一个 Trunk端口可以同时属于多个VLAN,并且可以让属于不同VLAN的帧通过。
b.当Trunk端口从链路(线路)上收到一个Tagged帧后,交换机会查看这个的Tag中的ID是否在允许通过的VLAN ID列表中。如果在,则对该 Tagged帧进行转发操作;如果不在,则直接丢弃该 Tagged帧。
c.当一个Tagged帧从本交换机的其他端口到达一个Trunk端口后,如果这个帧的Tag中的VID不在允连通过的VLAN ID列表,则该 Tagged帧会被直接丢弃。
d.当一个 Tagged帧从本交换机的其他端口到达一个 Trunk端口后,如果这个帧的Tag中的VID在允许通过的 VLAN ID列表中,且VID与PVID相同,则交换机会对这个 Tagged帧的Tag进行剥离,然后将得到的 Untagged帧从链路(线路)上发送出去。
e.当一个 Tagged帧从本交换机的其他端口到达一个Trunk端口后,如果这个帧的Tag中的VID在允许通过的 VLAN ID列表中,但VID与PVID不相同,则交换机不会对这个 Tagged帧的Tag进行剥离,而是直接将它从链路(线路)上发送出去。