当主机数目较多时会导致冲突严重、广播泛滥、性能显著下降甚至造成网络不可用等问题。通过交换机实现LAN互连虽然可以解决冲突严重的问题,但仍然不能隔离广播报文和提升网络质量
在这种情况下出现了 VLAN 技术,这种技术可以把一个 LAN 划分成多个逻辑的 VLAN,每个 VLAN 是一个广播域,VLAN 内的主机间通信就和在一个 LAN 内一样,而 VLAN 间则不能直接互通,这样,广播报文就被限制在一个 VLAN 内
1、使用VLAN的优点
- 限制广播域: 广播域被限制在一个VLAN内,节省了带宽,提高了网络处理能力
- 增强局域网的安全性: 不同 VLAN 内的报文在传输时是相互隔离的,即一个 VLAN 内的用户不能和其它 VLAN 内的用户直接通信
- 提高了网络的健壮性: 故障被限制在一个 VLAN 内,本 VLAN 内的故障不会影响其他 VLAN 的正常工作
- 灵活构建虚拟工作组: 用 VLAN 可以划分不同的用户到不同的工作组,同一工作组的用户也不必局限于某一固定的物理范围,网络构建和维护更方便灵活
2、VLAN分类
-
静态VLAN
由管理员将交换机端口分配给 VLAN,将交换机端口分配到特定 VLAN 后,除非手工修改,否则它将一直属于该VLAN。静态 VLAN 易于配置和管理,非常适合用于需要控制所有用户移动的网络环境
-
动态VLAN
动态 VLAN 可根据 MAC 地址、协议甚至创建动态 VLAN 的应用程序来确定节点所属的 VLAN,动态接入端口只能属于一个 VLAN,这是由 VMPS(VLAN 管理策略服务器) 动态分配的,在同一台交换机中,可以同时有动态接入端口和中继端口,但动态接入端口只能连接到终端,而不能连接到其他交换机
3、标识VLAN
交换机端口为接入端口(access)时,只能属于一个 VLAN ,而为中继端口(trunk)时,可属于所有 VLAN。可手工将端口配置为接入端口或中继端口,也可在每个端门上运行动态中继协议 (DTP ),并让它来设置交换端口模式(DTP通过与链路另一端的端口协商来设置端口模式)。交换机的接口只能是接入端口或者中继端口中的一种,不能同时是接入端口和中继端口
-
接入端口
接入端口只属于一个 VLAN ,且只为该 VLAN 传输数据流,这种端口以本机格式发送和接收数据流,而不进行 VLAN 标记,接入端口收到数据流后,都假定它属于该端口所属的 VLAN。除非使用路由,否则各 VLAN 之间不能相互通信
-
中继端口
中继端口可以同时传输多个 VLAN 的数据流,使用中继可让一个端口同时属于众多不同的 VLAN
3.1、对帧进行标记
帧到达的每台交换机都首先从帧标记中获取 VLAN ID ,然后查看过滤表中的信息,以确定如何对帧进行处理。如果帧到达的交换机还有另一条中继链路,那么该帧将被从该中继链路端口转发出去;当帧到达出口后,如果有一条接入链路和帧中的 VLAN ID 匹配后,交换机将把 VLAN ID 删除,让目标设备即使不明白 VLAN ID 也能够接收帧
对于中继端口,可同时支持标记过和未标记的数据流,中继端口有一个默认端口 VLAN ID (PVID ) ,这是用于传输未标记数据流的 VLAN ID
不管数据流是否被标记过,如果其包含的 VLAN ID 为 NULL,则认为它属于 PVID 对应的 VLAN(默认为 VLAN 1);如果分组包含的 VLAN ID 与出站端口的本机 VLAN 相同,则在发送时不对其进行标记,因此只能传输到同一 VLAN 中的主机或设备;对于其他所有数据流,发送时都必须添加 VLAN ID,以便能够在该 VLAN 中传输
3.2、链路类型和接口类型
交换机内部处理的数据帧一律都带有 VLAN 标签,而现网中交换机连接的设备有些只会收发无标记帧,要与这些设备交互,就需要接口能够识别无标记帧并在收发时给帧添加、剥除 VLAN 标签。同时,现网中属于同一个 VLAN 的用户可能会被连接在不同的交换机上,且跨越交换机的 VLAN 可能不止一个,如果需要用户间的互通,就需要交换机间的接口能够同时识别和发送多个 VLAN 的数据帧
为了适应不同的连接和组网,华为定义了 Access 接口、Trunk 接口、Hybrid 接口和 QinQ 接口4种接口类型,以及接入链路(Access Link)和干道链路(Trunk Link)两种链路类型
3.2.1、链路类型
-
接入链路
接入链路只可以承载1个 VLAN 的数据帧,用于连接交换机和用户终端。通常情况下,用户终端并不需要知道自己属于哪个 VLAN,也不能识别带有 Tag 的帧,所以在接入链路上传输的帧都是无标记帧。
-
干道链路
干道链路可以承载多个不同 VLAN 的数据帧,用于交换机间互连或连接交换机与路由器,为了保证其它网络设备能够正确识别数据帧中的 VLAN 信息,在干道链路上传输的数据帧必须都打上 Tag。
3.2.2、接口类型
-
Access 接口
Access 接口一般用于和不能识别 Tag 的用户终端(如用户主机、服务器等)相连,或者不需要区分不同 VLAN 成员时使用,Access 接口大部分情况只能收发无标记帧,且只能为无标记帧添加唯一 VLAN 的 Tag。但当 Access 接口收到带有 Tag 的帧,并且帧中 VID 与 PVID 相同时,Access 接口也能接收并处理该帧。
-
Trunk 接口
Trunk 接口一般用于连接交换机、路由器、AP 以及可同时收发标记帧和无标记帧的语音终端,它可以允许多个 VLAN 的帧带 Tag 通过,但只允许一个 VLAN 的帧从该类接口上发出时不带 Tag(即剥除Tag)。
-
Hybrid 接口
Hybrid 接口既可以用于连接不能识别 Tag 的用户终端(如用户主机、服务器等)和网络设备(如Hub、傻瓜交换机),也可以用于连接交换机、路由器以及可同时收发标记帧和无标记帧的语音终端、AP。它可以允许多个 VLAN 的帧带 Tag 通过,且允许从该类接口发出的帧根据需要配置某些 VLAN 的帧带 Tag(即不剥除Tag)、某些 VLAN 的帧不带 Tag(即剥除Tag)。
Hybrid 接口和 Trunk 接口在很多应用场景下可以通用,但在某些应用场景下,必须使用Hybrid接口,比如在灵活 QinQ 中,服务提供商网络的多个 VLAN 的报文在进入用户网络前,需要剥离外层 VLAN Tag,此时Trunk 接口不能实现该功能,因为 Trunk 接口只能使该接口缺省 VLAN 的报文不带 VLAN Tag 通过。
-
QinQ 接口
QinQ(802.1Q-in-802.1Q)接口是使用 QinQ 协议的接口,一般用于私网与公网之间的连接,它可以给帧加上双层 Tag,即在原来 Tag 的基础上,给帧加上一个新的 Tag,从而可以支持多达4094×4094个 VLAN,满足网络对 VLAN 数量的需求。外层的 Tag 通常被称作公网 Tag,用来标识公网的 VLAN;内层 Tag 通常被称作私网 Tag,用来标识私网的 VLAN。
3.3、链路类型协商协议(LNP)基本原理
3.3.1、LNP定义
链路类型协商协议 LNP 用来动态协商以太网接口的链路类型为 Access 或者 Trunk
- 以太网接口的链路类型协商为 Access,缺省情况下加入 VLAN1
- 以太网接口的链路类型协商为 Trunk,缺省情况下加入 VLAN1~4094
3.3.2、LNP产生背景
当前,交换机支持的以太网接口的接口类型有:Access、Hybrid、Trunk 和 QinQ,这四种接口类型分别用于不同的网络位置,均由手工配置指定。如果网络拓扑变更,以太网接口的接口类型也需要重新配置,配置较为繁琐。为了简化用户配置,可通过 LNP 配置以太网接口的链路类型自协商功能,自动协商出接口的接口类型为 access 或者 trunk,并加入相应 VLAN
4、VLAN划分
4.1、基于接口划分(常用)
网络管理员预先给交换机的每个接口配置不同的 PVID,当一个数据帧进入交换机时,如果没有带 VLAN 标签,该数据帧就会被打上接口指定 PVID 的 Tag。然后数据帧将在指定 PVID 中传输。
-
优点
定义成员简单
-
缺点
成员移动需重新配置 VLAN
-
适用场景
适用于任何大小但位置比较固定的网络
-
配置示例
# 在SwitchA和SwitchB上创建VLAN2和VLAN3,并将连接用户的接口分别加入VLAN。 # SwitchB的配置与SwitchA类似,不再赘述。 <HUAWEI> system-view [HUAWEI] sysname SwitchA [SwitchA] vlan batch 2 3 [SwitchA] interface gigabitethernet 0/0/1 [SwitchA-GigabitEthernet0/0/1] port link-type access [SwitchA-GigabitEthernet0/0/1] port default vlan 2 [SwitchA-GigabitEthernet0/0/1] quit [SwitchA] interface gigabitethernet 0/0/2 [SwitchA-GigabitEthernet0/0/2] port link-type access [SwitchA-GigabitEthernet0/0/2] port default vlan 3 [SwitchA-GigabitEthernet0/0/2] quit # 配置SwitchA上与SwitchB连接的接口类型及通过的VLAN。 # SwitchB的配置与SwitchA类似,不再赘述。 [SwitchA] interface gigabitethernet 0/0/3 [SwitchA-GigabitEthernet0/0/3] port link-type trunk [SwitchA-GigabitEthernet0/0/3] port trunk allow-pass vlan 2 3
4.2、基于MAC地址
根据数据帧的源 MAC 地址来划分 VLAN。 网络管理员预先配置 MAC 地址和 VLAN ID 映射关系表,当交换机收到的是无标识帧时,就依据该表给数据帧添加指定 VLAN 的 Tag,然后数据帧将在指定 VLAN 中传输
-
优点
当用户的物理位置发生改变,不需要重新配置 VLAN,提高了用户的安全性和接入的灵活性
-
缺点
需要预先定义网络中所有成员
-
适用场景
适用于位置经常移动但网卡不经常更换的小型网络
-
配置示例
-
交换机下挂终端
# 创建VLAN <HUAWEI> system-view [HUAWEI] sysname Switch [Switch] vlan batch 10vlan # 配置接口加入VLAN。GE0/0/3、GE0/0/4的配置与GE0/0/2类似,不再赘述。 [Switch] interface gigabitethernet 0/0/1 [Switch-GigabitEthernet0/0/1] port link-type hybrid [Switch-GigabitEthernet0/0/1] port hybrid tagged vlan 10 [Switch-GigabitEthernet0/0/1] quit [Switch] interface gigabitethernet 0/0/2 [Switch-GigabitEthernet0/0/2] port link-type hybrid [Switch-GigabitEthernet0/0/2] port hybrid untagged vlan 10 [Switch-GigabitEthernet0/0/2] quit # PC的MAC地址与VLAN10关联 [Switch] vlan 10 [Switch-vlan10] mac-vlan mac-address 22-22-22 [Switch-vlan10] mac-vlan mac-address 33-33-33 [Switch-vlan10] mac-vlan mac-address 44-44-44 [Switch-vlan10] quit # 使能接口的基于MAC地址划分VLAN功能,GE0/0/3、GE0/0/4的配置与GE0/0/2类似,不再赘述。 [Switch] interface gigabitethernet 0/0/2 [Switch-GigabitEthernet0/0/2] mac-vlan enable [Switch-GigabitEthernet0/0/2] quit
-
交换机下挂二层交换设备
# 创建VLAN <HUAWEI> system-view [HUAWEI] sysname Switch1 [Switch1] vlan batch 10 20 # 配置PC1和PC2的MAC地址与VLAN 10关联,PC3和PC4的MAC地址与VLAN 20关联 [Switch1] vlan 10 [Switch1-vlan10] mac-vlan mac-address 11-11-11 [Switch1-vlan10] mac-vlan mac-address 22-22-22 [Switch1-vlan10] quit [Switch1] vlan 20 [Switch1-vlan20] mac-vlan mac-address 33-33-33 [Switch1-vlan20] mac-vlan mac-address 44-44-44 [Switch1-vlan20] quit # 使能接口基于MAC地址划分VLAN功能 [Switch1] interface gigabitethernet 0/0/1 [Switch1-GigabitEthernet0/0/1] mac-vlan enable [Switch1-GigabitEthernet0/0/1] quit # 配置连接二层交换机的接口GE0/0/1,以Untagged方式MAC地址关联的VLAN [Switch1] interface gigabitethernet 0/0/1 [Switch1-GigabitEthernet0/0/1] port link-type hybrid [Switch1-GigabitEthernet0/0/1] port hybrid untagged vlan 10 20 [Switch1-GigabitEthernet0/0/1] quit # 配置连接网络的接口GE0/0/2,透传MAC地址关联的VLAN。 [Switch1] interface gigabitethernet 0/0/2 [Switch1-GigabitEthernet0/0/2] port link-type trunk [Switch1-GigabitEthernet0/0/2] port trunk allow-pass vlan 10 20 [Switch1-GigabitEthernet0/0/2] quit
-
4.3、基于子网划分
根据数据帧中的源 IP 地址和子网掩码来划分 VLAN。 网络管理员预先配置 IP 地址和 VLAN ID 映射关系表,当交换机收到的是 Untagged 帧,就依据该表给数据帧添加指定 VLAN 的 Tag,然后数据帧将在指定 VLAN 中传输
-
优点
-
当用户的物理位置发生改变,不需要重新配置 VLAN
-
可以减少网络通信量,可使广播域跨越多个交换机
-
-
缺点
网络中的用户分布需要有规律,且多个用户在同一个网段
-
适用场景
适用于对安全需求不高、对移动性和简易管理需求较高的场景中
比如,一台 PC 配置多个 IP 地址分别访问不同网段的服务器,以及 PC 切换 IP 地址后要求 VLAN 自动切换等场景
4.4、基于协议划分
根据数据帧所属的协议(族)类型及封装格式来划分 VLAN。 网络管理员预先配置以太网帧中的协议域和 VLAN ID 的映射关系表,如果收到的是 Untagged 帧,就依据该表给数据帧添加指定 VLAN 的 Tag,然后数据帧将在指定 VLAN 中传输
-
优点
将网络中提供的服务类型与 VLAN 相绑定,方便管理和维护
-
缺点
- 需要对网络中所有的协议类型和 VLAN ID 的映射关系表进行初始配置
- 需要分析各种协议的格式并进行相应的转换,消耗交换机较多的资源,速度上稍具劣势
-
适用场景
适用于需要同时运行多协议的网络
4.5、基于策略划分
根据配置的策略划分 VLAN,能实现多种组合的划分方式,包括接口、MAC地址、IP 地址等。 网络管理员预先配置策略,如果收到的是 Untagged 帧,且匹配配置的策略时,给数据帧添加指定 VLAN的Tag,然后数据帧将在指定 VLAN 中传输
-
优点
-
安全性高,VLAN 划分后,用户不能改变 IP 地址或 MAC 地址
-
网络管理人员可根据自己的管理模式或需求选择划分方式
-
-
缺点
针对每一条策略都需要手工配置
-
适用场景
适用于需求比较复杂的环境
5、VLAN间互访
划分 VLAN 后,由于广播报文只在同 VLAN 内转发,所以不同 VLAN 的用户间不能二层互访,这样能起到隔离广播的作用。但实际应用中,不同 VLAN 的用户又常有互访的需求,此时就需要实现不同 VLAN 的用户互访,简称 VLAN 间互访。不同 VLAN 内的用户则不能直接二层互访,需要借助三层路由技术或 VLAN 转换技术才能实现互访
5.1、VLAN间互访技术
-
VLANIF 接口
VLANIF 接口是一种三层的逻辑接口,可以实现 VLAN 间的三层互通
VLANIF 配置简单,是实现 VLAN 间互访最常用的一种技术,但每个 VLAN 需要配置一个 VLANIF,并在接口上指定一个 IP 子网网段,比较浪费 IP 地址
-
Dot1q 终结子接口(单臂路由)
子接口也是一种三层的逻辑接口,可以实现 VLAN 间的三层互通
Dot1q 终结子接口适用于通过一个三层以太网接口下接多个 VLAN 网络的环境。由于不同 VLAN 的数据流会争用同一个以太网主接口的带宽,网络繁忙时,会导致通信瓶颈
5.2、同设备VLAN间互相通信
实现同一 VLAN 但是不同网段设备之间的访问
-
配置思路
-
创建 VLAN,确定用户所属的 VLAN
-
配置接口加入 VLAN,允许用户所属的 VLAN 通过当前接口
-
创建 VLANIF 接口并配置 IP 地址,实现三层互通
-
-
配置示例
# 创建VLAN <HUAWEI> system-view [HUAWEI] sysname Switch [Switch] vlan batch 10 20 # 配置接口加入VLAN [Switch] interface gigabitethernet 0/0/1 [Switch-GigabitEthernet0/0/1] port link-type access [Switch-GigabitEthernet0/0/1] port default vlan 10 [Switch-GigabitEthernet0/0/1] quit [Switch] interface gigabitethernet 0/0/2 [Switch-GigabitEthernet0/0/2] port link-type access [Switch-GigabitEthernet0/0/2] port default vlan 20 [Switch-GigabitEthernet0/0/2] quit # 配置VLANIF接口的IP地址 [Switch] interface vlanif 10 [Switch-Vlanif10] ip address 10.10.10.2 24 [Switch-Vlanif10] quit [Switch] interface vlanif 20 [Switch-Vlanif20] ip address 10.10.20.2 24 [Switch-Vlanif20] quit
5.3、跨设备VLAN间互相通信
Switch_1和 Switch_2 分别下挂 VLAN10 的二层网络,Switch_1 和Switch_2 之间通过三层网络互通,三层网络采用静态路由协议。要求两个二层网络的 PC 实现二层隔离三层互通
-
配置思路
- 配置接口所属的 VLAN,允许 VLAN 通过当前接口
- 配置 VLANIF 接口的 IP 地址,实现三层互通
- 配置静态路由,实现路由互通
-
配置示例
# SW1 ## 创建 VLAN 并将端口添加到对应 VLAN 中 [SW1]vlan batch 10 20 [SW1]int g0/0/24 [SW1-GigabitEthernet0/0/24]port link-type trunk [SW1-GigabitEthernet0/0/24]port trunk allow-pass vlan 20 [SW1]int g0/0/1 [SW1-GigabitEthernet0/0/1]port link-type trunk [SW1-GigabitEthernet0/0/1]port trunk allow-pass vlan 10 ## 配置三层接口 IP地址 [SW1]int vlanif 10 [SW1-Vlanif10]ip add 192.168.1.1 24 [SW1]int vlanif 20 [SW1-Vlanif20]ip add 10.10.10.1 24 ## 配置静态路由 [SW1]ip route-static 192.168.2.1 24 10.10.10.2 # SW2 [SW2]vlan batch 10 20 [SW2]int g0/0/24 [SW2-GigabitEthernet0/0/24]port link-type trunk [SW2-GigabitEthernet0/0/24]port trunk allow-pass vlan 20 [SW2]int g0/0/1 [SW2-GigabitEthernet0/0/1]port link-type trunk [SW2-GigabitEthernet0/0/1]port trunk allow-pass vlan 10 [SW2]int vlanif 10 [SW2-Vlanif10]ip add 192.168.2.1 24 [SW2]int vlanif 20 [SW2-Vlanif30]ip add 10.10.10.1 24 [SW2]ip route-static 192.168.1.1 24 10.10.10.1 # SW3 [SW3]vlan batch 10 [SW3]int g0/0/24 [SW3-GigabitEthernet0/0/24]port link-type trunk [SW3-GigabitEthernet0/0/24]port trunk allow-pass vlan 10 [SW3]int g0/0/1 [SW3-GigabitEthernet0/0/1]port link-type access [SW3-GigabitEthernet0/0/1]port default vlan 10 # SW4 [SW4]vlan batch 10 [SW4]int g0/0/24 [SW4-GigabitEthernet0/0/24]port link-type trunk [SW4-GigabitEthernet0/0/24]port trunk allow-pass vlan 10 [SW4]int g0/0/1 [SW4-GigabitEthernet0/0/1]port link-type access [SW4-GigabitEthernet0/0/1]port default vlan 10
5.4、配置Dot1q终结子接口
使用一台路由器,在各 VLAN 间实现三层互通
# R1
## 配置子接口
[R1]int g0/0/1.1
[R1-GigabitEthernet0/0/1.1]ip add 192.168.1.1 24
[R1-GigabitEthernet0/0/1.1]dot1q termination vid 10
[R1-GigabitEthernet0/0/1.1]arp broadcast enable
[R1-GigabitEthernet0/0/1.1]quit
[R1]int g0/0/1.2
[R1-GigabitEthernet0/0/1.2]ip add 192.168.2.1 24
[R1-GigabitEthernet0/0/1.2]dot1q termination vid 20
[R1-GigabitEthernet0/0/1.2]arp broadcast enable
[R1-GigabitEthernet0/0/1.2]quit
[R1]int g0/0/1.3
[R1-GigabitEthernet0/0/1.3]ip add 192.168.3.1 24
[R1-GigabitEthernet0/0/1.3]dot1q termination vid 30
[R1-GigabitEthernet0/0/1.3]arp broadcast enable
[R1-GigabitEthernet0/0/1.3]quit
# SW1
## 创建 VLAN 并将端口加入到对应的 VLAN 中
[SW1]vlan batch 10 20 30
[SW1]int g0/0/1
[SW1-GigabitEthernet0/0/1]port link-type access
[SW1-GigabitEthernet0/0/1]port default vlan 10
[SW1]int g0/0/2
[SW1-GigabitEthernet0/0/2]port link-type access
[SW1-GigabitEthernet0/0/2]port default vlan 20
[SW1]int g0/0/3
[SW1-GigabitEthernet0/0/3]port link-type access
[SW1-GigabitEthernet0/0/3]port default vlan 30
[SW1]int g0/0/24
[SW1-GigabitEthernet0/0/24]port link-type trunk
[SW1-GigabitEthernet0/0/24]port trunk allow-pass vlan 10 20 30