随着网络中计算机的数量越来越多,传统的以太网络开始面临冲突严重、广播泛滥以及安全性无法保障等各种问题。
VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的局域网在逻辑上划分成多个广播域的技术。通过在交换机上配置VLAN,可以实现在同一个VLAN内的用户可以进行二层互访,而不同VLAN间的用户被二层隔离。这样既能够隔离广播域,又能够提升网络的安全性。
早期的局域网LAN技术是基于总线型结构的,它存在以下主要问题
1. 若某时刻有多个节点同时试图发送消息,那么它们将产生冲突。
2. 从任意节点发出的消息都会被发送到其他节点,形成广播。
3. 所有主机共享一条传输通道,无法控制网络中的信息安全。这种网络构成了一个冲突域,网络中计算机数量越多,冲突越严重,网络效率越低。
同时,该网络也是一个广播域,当网络中发送信息的计算机数量变多时,广播流量将会耗费大量带宽。
因此,传统局域网不仅面临冲突域太大和广播域太大两大难题,而且无法保障传输信息的安全。
4. 为了扩展传统LAN,以接入更多计算机,同时避免冲突的恶化,出现了网桥和二层交换机,它们能有效隔离冲突域。
5. 为限制广播域的范围,减少广播流量,需要在没有二层互访需求的主机之间进行隔离。因此,人们设想在物理局域网上构建多个逻辑局域网,即VLAN。
VLAN能够隔离广播域。
VLAN技术可以将一个物理局域网在逻辑上划分成多个广播域,也就是多个VLAN。VLAN技术部署在数据链路层,用于隔离二层流量。同一个VLAN内的主机共享同一个广播域,它们之间可以直接进行二层通信。而VLAN间的主机属于不同的广播域,不能直接实现二层互通。这样,广播报文就被限制在各个相应的VLAN内,同时也提高了网络安全性。
本例中,原本属于同一广播域的主机被划分到了两个VLAN中,即,VLAN1和VLAN2。VLAN内部的主机可以直接在二层互相通信,VLAN1和VLAN2之间的主机无法直接实现二层通信。
通过Tag区分不同VLAN
VLAN标签长4个字节,直接添加在以太网帧头中,IEEE802.1Q文档对VLAN标签作出了说明。
在现有的交换网络环境中,以太网的帧有两种格式:
没有加上VLAN标记的标准以太网帧(untagged frame);有VLAN标记的以太网帧(tagged frame)。
用户主机和交换机之间的链路为接入链路,交换机与交换机之间的链路为干道链路
VLAN链路分为两种类型:Access链路和Trunk链路。
接入链路(Access Link):连接用户主机和交换机的链路称为接入链路。如本例所示,图中主机和交换机之间的链路都是接入链路。
干道链路(Trunk Link):连接交换机和交换机的链路称为干道链路。如本例所示,图中交换机之间的链路都是干道链路。干道链路上通过的帧一般为带Tag的VLAN帧。
PVID表示端口在缺省情况下所属的VLAN。
缺省情况下,X7系列交换机每个端口的PVID都是1。
PVID即Port VLAN ID,代表端口的缺省VLAN。
交换机从对端设备收到的帧有可能是Untagged的数据帧,但所有以太网帧在交换机中都是以Tagged的形式来被处理和转发的,因此交换机必须给端口收到的Untagged数据帧添加上Tag。为了实现此目的,必须为交换机配置端口的缺省VLAN。当该端口收到Untagged数据帧时,交换机将给它加上该缺省VLAN的VLAN Tag。
Access端口在收到数据后会添加VLAN Tag,VLAN ID和端口的PVID相同。
Access端口在转发数据前会移除VLAN Tag。
Access端口是交换机上用来连接用户主机的端口,它只能连接接入链路,并且只能允许唯一的VLAN ID通过本端口。
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端口收到帧时,如果该帧不包含Tag,将添加上端口的PVID;如果该帧包含Tag,则不改变。
当Trunk端口发送帧时,该帧的VLAN ID在Trunk的允许发送列表中:
1. 若与端口的PVID相同时,则剥离Tag发送;
2. 若与端口的PVID不同时,则直接发送。
Trunk端口是交换机上用来和其他交换机连接的端口,它只能连接干道链路。Trunk端口允许多个VLAN的帧(带Tag标记)通过。
Trunk端口收发数据帧的规则如下:
在本示例中,SWA和SWB连接主机的端口为Access端口,PVID如图所示。SWA和SWB互连的端口为Trunk端口,PVID都为1,此Trunk链路允许所有VLAN的流量通过。当SWA转发VLAN1的数据帧时会剥离VLAN标签,然后发送到Trunk链路上。而在转发VLAN20的数据帧时,不剥离VLAN标签直接转发到Trunk链路上。
Hybrid端口既可以连接主机,又可以连接交换机。
Hybrid端口可以以Tagged 或Untagged方式加入VLAN 。
Access端口发往其他设备的报文,都是Untagged数据帧,而Trunk端口仅在一种特定情况下才能发出untagged数据帧(当VLAN ID与端口的PVID相同,且是该端口允许通过的VLAN ID时),其它情况发出的都是Tagged数据帧。
Hybrid端口是交换机上既可以连接用户主机,又可以连接其他交换机的端口。Hybrid端口既可以连接接入链路又可以连接干道链路。Hybrid端口允许多个VLAN的帧通过,并可以在出端口方向将某些VLAN帧的Tag剥掉。华为设备默认的端口类型是Hybrid。
在本示例中,要求主机A和主机B都能访问服务器,但是它们之间不能互相访问。此时交换机连接主机和服务器的端口,以及交换机互连的端口都配置为Hybrid类型。交换机连接主机A的端口的PVID是2,连接主机B的端口的PVID是3,连接服务器的端口的PVID是100。
本例介绍了主机A和主机B发送数据给服务器的情况。在SWA和SWB互连的端口上配置了port hybrid tagged vlan 2 3 100命令后,SWA和SWB之间的链路上传输的都是带Tag标签的数据帧。在SWB连接服务器的端口上配置了port hybrid untagged vlan 2 3,主机A和主机B发送的数据会被剥离VLAN标签后转发到服务器。
基于端口的VLAN划分方法在实际中最为常见。
VLAN的划分包括如下5种方法:
基于端口划分:根据交换机的端口编号来划分VLAN。通过为交换机的每个端口配置不同的PVID,来将不同端口划分到VLAN中。初始情况下,X7系列交换机的端口处于VLAN1中。此方法配置简单,但是当主机移动位置时,需要重新配置VLAN。
基于MAC地址划分:根据主机网卡的MAC地址划分VLAN。此划分方法需要网络管理员提前配置网络中的主机MAC地址和VLAN ID的映射关系。如果交换机收到不带标签的数据帧,会查找之前配置的MAC地址和VLAN映射表,根据数据帧中携带的MAC地址来添加相应的VLAN标签。在使用此方法配置VLAN时,即使主机移动位置也不需要重新配置VLAN。
基于IP子网划分:交换机在收到不带标签的数据帧时,根据报文携带的IP地址给数据帧添加VLAN标签。
基于协议划分:根据数据帧的协议类型(或协议族类型)、封装格式来分配VLAN ID。网络管理员需要首先配置协议类型和VLAN ID之间的映射关系。
基于策略划分:使用几个条件的组合来分配VLAN标签。这些条件包括IP子网、端口和IP地址等。只有当所有条件都匹配时,交换机才为数据帧添加VLAN标签。另外,针对每一条策略都是需要手工配置的。
[SWA]vlan 10
[SWA-vlan10]quit
[SWA]vlan batch 2 to 3
Info: This operation may take a few seconds. Please wait for a moment...done.
在交换机上划分VLAN时,需要首先创建VLAN。在交换机上执行vlan 命令,创建VLAN。
如本例所示,执行vlan 10命令后,就创建了VLAN 10,并进入了VLAN 10视图。VLAN ID的取值范围是1到4094。如需创建多个VLAN,可以在交换机上执行vlan batch { vlan-id1 [ to vlan-id2 ] }命令,以创建多个连续的VLAN。也可以执行vlan batch { vlan-id1 vlan-id2 }命令,创建多个不连续的VLAN,VLAN号之间需要有空格。
[SWA]interface GigabitEthernet 0/0/5
[SWA-GigabitEthernet0/0/5]port link-type access
[SWA-GigabitEthernet0/0/5]interface GigabitEthernet 0/0/7
[SWA-GigabitEthernet0/0/7]port link-type access
#添加端口到VLAN
[SWA]vlan 2
[SWA-vlan2]port GigabitEthernet 0/0/7
[SWA-vlan2]quit
[SWA]interface GigabitEthernet0/0/5
[SWA-GigabitEthernet0/0/5]port default vlan 3
[SWA-GigabitEthernet0/0/1]port link-type trunk
[SWA-GigabitEthernet0/0/1]port trunk allow-pass vlan 2 3
[SWA-GigabitEthernet0/0/1]port link-type hybrid
[SWA-GigabitEthernet0/0/1]port hybrid tagged vlan 2 3 100
[SWA-GigabitEthernet0/0/2]port hybrid pvid vlan 2
[SWA-GigabitEthernet0/0/2]port hybrid untagged vlan 2 100
[SWA-GigabitEthernet0/0/3]port hybrid pvid vlan 3
[SWA-GigabitEthernet0/0/3]port hybrid untagged vlan 3 100
[SWB-GigabitEthernet0/0/1]port link-type hybrid
[SWB-GigabitEthernet0/0/1]port hybrid tagged vlan 2 3 100
[SWB-GigabitEthernet0/0/2]port hybrid pvid vlan 100
[SWB-GigabitEthernet0/0/2]port hybrid untagged vlan 2 3 100
在本示例中,要求主机A和主机B都能访问服务器,但是它们之间不能互相访问。
此时通过命令port link-type hybrid配置交换机连接主机和服务器的端口,以及交换机互连的端口都为Hybrid类型。通过命令port hybrid pvid vlan 2配置交换机连接主机A的端口的PVID是2。类似地,连接主机B的端口的PVID是3,连接服务器的端口的PVID是100。
通过在G0/0/1端口下使用命令port hybrid tagged vlan 2 3 100,配置VLAN2,VLAN3和VLAN100的数据帧在通过该端口时都携带标签。在G0/0/2端口下使用命令port hybrid untagged vlan 2 100,配置VLAN2和VLAN100的数据帧在通过该端口时都不携带标签。在G0/0/3端口下使用命令port hybrid untagged vlan 3 100,配置VLAN3和VLAN100的数据帧在通过该端口时都不携带标签。
在SWB上继续进行配置,在G0/0/1端口下使用命令port link-type hybrid配置端口类型为Hybrid。
在G0/0/1端口下使用命令port hybrid tagged vlan 2 3 100,配置VLAN2,VLAN3和VLAN100的数据帧在通过该端口时都携带标签。
在G0/0/2端口下使用命令port hybrid untagged vlan 2 3 100,配置VLAN2,VLAN3和VLAN100的数据帧在通过该端口时都不携带标签。