HCIA-Datacom笔记之VLAN原理与配置
以太网是一种基于CSMA/CD的数据网络通信技术,其特征是共享通信介质。当主机数目较多时会导致安全隐患、广播泛滥、性能显著下降甚至造成网络不可用。
在这种情况下出现了VLAN (Virtual Local Area Network)技术解决以上问题。
8.1 什么是VLAN
8.1.1 传统以太网的问题

广播域:
如图是一个典型的交换网络,网络中只有终端计算机和交换机。在这样的网络中,如果某一台计算机发送了一个广播帧,由于交换机对广播帧执行泛洪操作,结果所有其他的计算机都会收到这个广播帧。
把广播帧所能到达的整个访问范围称为二层广播域,简称广播域 (Broadcast Domain)。显然,一个交换网络其实就是一个广播域。
网络安全问题和垃圾流量问题:
如图:如果PC1向PC2发送了一个单播帧。此时SW1、SW3、SW7的MAC地址表中存在关于PC2的MAC地址表项,但SW2和SW5不存在关于PC2的MAC地址表项。那么,SW1和SW3将对该单播帧执行点对点的转发操作,SW7将对该单播帧执行丢弃操作,SW2和SW5将对该单播帧执行泛洪操作。
最后的结果是,PC2虽然收到了该单播帧,但网络中的很多其他非目的主机,同样收到了不该接收的数据帧。
显然,广播域越大,网络安全问题和垃圾流量问题就越严重。
8.1.2 虚拟局域网 (VLAN, Virtual LAN)

为了解决广播域带来的问题,人们引入了VLAN (Virtual Local Area Network),即虚拟局域网技术:
通过在交换机上部署VLAN,可以将一个规模较大的广播域在逻辑上划分成若干个不同的、规模较小的广播域,由此可以有效地提升网络的安全性,同时减少垃圾流量,节约网络资源。
VLAN的特点:
- 一个VLAN就是一个广播域,所以在同一个VLAN内部,计算机可以直接进行二层通信;
- 而不同VLAN内的计算机,无法直接进行二层通信,只能进行三层通信来传递信息,即广播报文被限制在一个VLAN内。
- VLAN的划分不受地域的限制。
VLAN的好处:
- 灵活构建虚拟工作组:用VLAN可以划分不同的用户到不同的工作组,同一工作组的用户也不必局限于某一固定的物理范围,网络构建和维护更方便灵活。
- 限制广播域:广播域被限制在一个VLAN内,节省了带宽,提高了网络处理能力。
- 增强局域网的安全性:不同VLAN内的报文在传输时是相互隔离的,即一个VLAN内的用户不能和其它VLAN内的用户直接通信。
- 提高了网络的健壮性:故障被限制在一个VLAN内,本VLAN内的故障不会影响其他VLAN的正常工作。
8.2 VLAN的基本概念
8.2.1 如何实现VLAN?
8.2.1.1 VLAN标签 (VLAN Tag)
要使交换机能够分辨不同VLAN的报文,需要在报文中添加标识VLAN信息的字段。
IEEE 802.1Q协议规定,在以太网数据帧中加入4个字节的VLAN标签,又称VLAN Tag,简称Tag。

如图所示,SW1识别出某个帧是属于哪个VLAN后,会在这个帧的特定位置上添加一个标签。这个标签明确地标明了这个帧是属于哪个VLAN的。其他交换机(如SW2)收到这个带标签的数据帧后,就能轻而易举地直接根据标签信息识别出这个帧属于哪个VLAN。
IEEE 802.1Q定义了这种带标签的数据帧的格式。满足这种格式的数据帧称为IEEE 802.1Q数据帧,也称VLAN数据帧。
8.2.1.2 VLAN数据帧
在一个VLAN交换网络中,以太网帧主要有以下两种形式:
- 有标记帧(Tagged帧):IEEE 802.1Q协议规定,在以太网数据帧的目的MAC地址和源MAC地址字段之后、协议类型字段之前加入4个字节的VLAN标签(又称VLAN Tag,简称Tag)的数据帧。
- 无标记帧(Untagged帧):原始的、未加入4字节VLAN标签的数据帧。

VLAN数据帧中的主要字段:
- TPID:2字节,Tag Protocol Identifier(标签协议标识符),表示数据帧类型。
- 取值为0x8100时表示IEEE 802.1Q的VLAN数据帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃。
- 各设备厂商可以自定义该字段的值。当邻居设备将TPID值配置为非0x8100时,为了能够识别这样的报文,实现互通,必须在本设备上修改TPID值,确保和邻居设备的TPID值配置一致。
- PRI:3 bit,Priority,表示数据帧的优先级,用于QoS。
- 取值范围为0~7,值越大优先级越高。当网络阻塞时,交换机优先发送优先级高的数据帧。
- CFI:1 bit,Canonical Format Indicator(标准格式指示位),表示MAC地址在不同的传输介质中是否以标准格式进行封装,用于兼容以太网和令牌环网。
- CFI取值为0表示MAC地址以标准格式进行封装,为1表示以非标准格式封装。
- 在以太网中,CFI的值为0。
- VID:12 bit,VLAN ID,表示该数据帧所属VLAN的编号。
- VLAN ID取值范围是0~4095。由于0和4095为协议保留取值,所以VLAN ID的有效取值范围是1~4094。
- 交换机利用VLAN标签中的VID来识别数据帧所属的VLAN,广播帧只在同一VLAN内转发,这就将广播域限制在一个VLAN内。
如何识别带VLAN标签的数据帧:数据帧的Length/Type = 0x8100。
注意:
计算机无法识别Tagged数据帧,因此计算机处理和发出的都是Untagged数据帧;为了提高处理效率,交换机内部处理的数据帧一律都是Tagged帧。
8.2.2 VLAN的划分方式
计算机发出的数据帧不带任何标签。对已支持VLAN特性的交换机来说,当计算机发出的Untagged帧一旦进入交换机后,交换机必须通过某种划分原则把这个帧划分到某个特定的VLAN中去。
VLAN的划分包括如下5种方法:
1、基于接口划分:根据交换机的接口来划分VLAN。
网络管理员预先给交换机的每个接口配置不同的PVID,当一个数据帧进入交换机时,如果没有带VLAN标签,该数据帧就会被打上接口指定PVID的标签,然后数据帧将在指定VLAN中传输。
2、基于MAC地址划分:根据数据帧的源MAC地址来划分VLAN。
网络管理员预先配置MAC地址和VLAN ID映射关系表,当交换机收到的是Untagged帧时,就依据该表给数据帧添加指定VLAN的标签,然后数据帧将在指定VLAN中传输。
3、基于IP子网划分:根据数据帧中的源IP地址和子网掩码来划分VLAN。
网络管理员预先配置IP地址和VLAN ID映射关系表,当交换机收到的是Untagged帧,就依据该表给数据帧添加指定VLAN的标签,然后数据帧将在指定VLAN中传输。
4、基于协议划分:根据数据帧所属的协议(族)类型及封装格式来划分VLAN。
网络管理员预先配置以太网帧中的协议域和VLAN ID的映射关系表,如果收到的是Untagged帧,就依据该表给数据帧添加指定VLAN的标签,然后数据帧将在指定VLAN中传输。
5、基于策略划分:根据配置的策略划分VLAN,能实现多种组合的划分方式,包括接口、MAC地址、IP地址等。
网络管理员预先配置策略,如果收到的是Untagged帧,且匹配配置的策略时,给数据帧添加指定VLAN的标签,然后数据帧将在指定VLAN中传输。
8.2.2.1 基于接口的VLAN划分

划分原则:
将VLAN ID配置到交换机的物理接口上,从某一个物理接口进入交换机的、由终端计算机发送的Untagged数据帧都被划分到该接口的VLAN ID所表明的那个VLAN。
特点:
- 这种划分原则简单而直观,实现容易,是目前实际的网络应用中最为广泛的划分VLAN的方式。
- 当计算机接入交换机的端口发生了变化时,该计算机发送的帧的VLAN归属可能会发生变化。
缺省VLAN,PVID (Port VLAN ID)
- 每个交换机的接口都应该配置一个PVID,到达这个端口的Untagged帧将一律被交换机划分到PVID所指代的VLAN。
- 默认情况下,PVID的值为1。
8.2.2.2 基于MAC地址的VLAN划分

划分原则:
交换机内部建立并维护了一个MAC地址与VLAN ID的对应表。当交换机接收到计算机发送的Untagged帧时,交换机将分析帧中的源MAC地址,然后查询MAC地址与VLAN ID的对应表,并根据对应关系把这个帧划分到相应的VLAN中。
特点:
- 这种划分实现稍微复杂,但灵活性得到了提高。
- 当计算机接入交换机的端口发生了变化时,该计算机发送的帧的VLAN归属不会发生变化(因为计算机的MAC地址没有变)。
- 但这种类型的VLAN划分安全性不是很高,因为恶意计算机很容易伪造MAC地址。
8.2.3 以太网二层接口类型
基于接口的VLAN划分依赖于交换机的接口类型。
1、Access接口
Access接口一般用于和不能识别Tag的用户终端(如用户主机、服务器等)相连,或者不需要区分不同VLAN成员时使用。
2、Trunk接口
Trunk接口一般用于连接交换机、路由器、AP以及可同时收发Tagged帧和Untagged帧的语音终端。
3、Hybrid接口
Hybrid接口既可以用于连接不能识别Tag的用户终端(如用户主机、服务器等),也可以用于连接交换机、路由器以及可同时收发Tagged帧和Untagged帧的语音终端、AP。
华为设备默认的接口类型是Hybrid。
8.2.3.1 Access接口
上文已经介绍了交换机如何识别数据帧属于哪个VLAN以及VLAN的划分方式,那交换机对于Untagged帧和Tagged帧又是如何处理的呢?


Access接口特点:
仅允许VLAN ID与接口PVID相同的数据帧通过。
Access接口接收数据帧:
- 当Access接口从链路上收到一个Untagged帧,交换机会在这个帧中添加上VID为PVID的Tag,然后对得到的Tagged帧进行转发操作(泛洪、转发、丢弃)。
- 当Access接口从链路上收到一个Tagged帧,交换机会检查这个帧的Tag中的VID是否与PVID相同。如果相同,则对这个Tagged帧进行转发操作;如果不同,则直接丢弃这个Tagged帧。
Access接口发送数据帧:
当一个Tagged帧从本交换机的其他接口到达一个Access接口后,交换机会检查这个帧的Tag中的VID是否与PVID相同:
- 如果相同,则将这个Tagged帧的Tag进行剥离,然后将得到的Untagged帧从链路上发送出去;
- 如果不同,则直接丢弃这个Tagged帧。
8.2.3.2 Trunk接口

对于Trunk接口,除了要配置PVID外,还必须配置允许通过的VLAN ID列表,其中VLAN 1是默认存在的。
Trunk接口特点:
- Trunk接口仅允许VLAN ID在允许通过列表中的数据帧通过。
- Trunk接口可以允许多个VLAN的帧带Tag通过,但只允许一个VLAN的帧从该类接口上发出时不带Tag(即剥除Tag)。
Trunk接口接收数据帧:
- 当Trunk接口从链路上收到一个Untagged帧,交换机会在这个帧中添加上VID为PVID的Tag,然后查看PVID是否在允许通过的VLAN ID列表中。如果在,则对得到的Tagged帧进行转发操作;如果不在,则直接丢弃得到的Tagged帧。
- 当Trunk接口从链路上收到一个Tagged帧,交换机会检查这个帧的Tag中的VID是否在允许通过的VLAN ID列表中。如果在,则对这个Tagged帧进行转发操作;如果不在,则直接丢弃这个Tagged帧。
Trunk接口发送数据帧:
- 当一个Tagged帧从本交换机的其他接口到达一个Trunk接口后,如果这个帧的Tag中的VID不在允许通过的VLAN ID列表中,则该Tagged帧会被直接丢弃。
- 当一个Tagged帧从本交换机的其他接口到达一个Trunk接口后,如果这个帧的Tag中的VID在允许通过的VLAN ID列表中,则会比较该Tag中的VID是否与接口的PVID相同:
- 如果相同,则交换机会对这个Tagged帧的Tag进行剥离,然后将得到的Untagged帧从链路上发送出去;
- 如果不同,则交换机不会对这个Tagged帧的Tag进行剥离,而是直接将它从链路上发送出去。
8.2.3.3 Hybrid接口

对于Hybrid接口,除了要配置PVID外,还存在两个允许通过的VLAN ID列表,一个是Untagged VLAN ID列表,另一个是Tagged VLAN ID列表,其中VLAN 1默认在Untagged VLAN列表中。这两个允许通过列表中的所有VLAN的帧都是允许通过这个Hybrid接口的。
Hybrid接口特点:
- Hybrid接口仅允许VLAN ID在允许通过列表中的数据帧通过。
- Hybrid接口可以允许多个VLAN的帧带Tag通过,且允许从该类接口发出的帧根据需要配置某些VLAN的帧带Tag、某些VLAN的帧不带Tag。
- 与Trunk最主要的区别就是,能够支持多个VLAN的数据帧,不带标签通过。
Hybrid接口接收数据帧:
- 当Hybrid接口从链路上收到一个Untagged帧,交换机会在这个帧中添加上VID为PVID的Tag,然后查看PVID是否在Untagged或Tagged VLAN ID列表中。如果在,则对得到的Tagged帧进行转发操作;如果不在,则直接丢弃得到的Tagged帧。
- 当Hybrid接口从链路上收到一个Tagged帧,交换机会检查这个帧的Tag中的VID是否在Untagged或Tagged VLAN ID列表中。如果在,则对这个Tagged帧进行转发操作;如果不在,则直接丢弃这个Tagged帧。
Hybrid接口发送数据帧:
- 当一个Tagged帧从本交换机的其他接口到达一个Hybrid接口后,如果这个帧的Tag中的VID既不在Untagged VLAN ID列表中,也不在Tagged VLAN ID列表中,则该Tagged帧会被直接丢弃。
- 当一个Tagged帧从本交换机的其他接口到达一个Hybrid接口后,如果这个帧的Tag中的VID在Untagged VLAN ID列表中,则交换机会对这个Tagged帧的Tag进行剥离,然后将得到的Untagged帧从链路上发送出去。
- 当一个Tagged帧从本交换机的其他接口到达一个Hybrid接口后,如果这个帧的Tag中的VID在Tagged VLAN ID列表中,则交换机不会对这个Tagged帧的Tag进行剥离,而是直接将它从链路上发送出去。
总结:

8.3 VLAN的应用
8.3.1 VLAN的规划
VLAN编号建议连续分配,以保证VLAN资源合理利用。最常用的划分方式是基于接口的方式。
8.3.1.1 VLAN分配原则
按业务规划:可分为语音、视频和数据。
按部门规划:可分为工程部、市场部、财经部等。
按应用规划:可分为服务器、办公、教室等。
8.3.1.2 VLAN分配技巧
VLAN ID的分配在有效范围内,可以随意分配和选取,但是为了提高VLAN ID的连续性,可以采用VLAN ID和子网关联的方式进行分配。
8.3.1.3 VLAN规划示例
假设某园区有三栋楼,分别为行政楼、教学楼、办公楼;
每栋楼各有1台接入交换机,核心交换机在行政楼;行政楼内有办公室、财务部和教室;办公楼内有办公室和财务部;教学楼内有办公室和教室。
VLAN规划如下:

8.4 VLAN的配置示例
8.4.1 VLAN的基础配置命令
8.4.2 创建VLAN
vlan命令用来创建VLAN并进入VLAN视图,如果VLAN已存在,直接进入该VLAN的视图。
undo vlan用来删除指定VLAN。
缺省情况下,将所有接口都加入到一个缺省的VLAN中,该VLAN标识为1。
命令:vlan vlan-id
- vlan-id:指定VLAN ID。整数形式,取值范围是1~4094。
vlan batch { vlan-id1 [ to vlan-id2 ] }
- batch:指定批量创建VLAN。
- vlan-id1 to vlan-id2:指定批量创建的VLAN ID,其中: vlan-id1表示第一个VLAN的编号。vlan-id2表示最后一个VLAN的编号。vlan-id2的取值必须大于等于vlan-id1,它与vlan-id1共同确定一个VLAN范围。
- 如果不指定to vlan-id2参数,则只创建vlan-id1所指定的VLAN。
- vlan-id1和vlan-id2是整数形式,取值范围是1~4094。
8.4.3 Access接口的基础配置命令
配置接口类型
[Huawei-GigabitEthernet0/0/1] port link-type access
在接口视图下,配置接口的链路类型为Access。
配置Access接口的缺省VLAN
[Huawei-GigabitEthernet0/0/1] port default vlan vlan-id
在接口视图下,配置接口的缺省VLAN并同时加入这个VLAN。
vlan-id:配置缺省VLAN的编号。整数形式,取值范围是1~4094。
8.4.4 Trunk接口的基础配置命令
配置接口类型
[Huawei-GigabitEthernet0/0/1] port link-type trunk
在接口视图下,配置接口的链路类型为Trunk。
配置Trunk接口加入指定VLAN
[Huawei-GigabitEthernet0/0/1] port trunk allow-pass vlan { { vlan-id1 [ to vlan-id2 ] } | all }
在接口视图下,配置Trunk类型接口加入的VLAN。
(可选) 配置Trunk接口的缺省VLAN
[Huawei-GigabitEthernet0/0/1] port trunk pvid vlan vlan-id
在接口视图下,配置Trunk类型接口的缺省VLAN。
8.4.5 Hybrid接口的基础配置命令
配置接口类型
[Huawei-GigabitEthernet0/0/1] port link-type hybrid
在接口视图下,配置接口的链路类型为Hybrid。
配置Hybrid接口加入指定VLAN
[Huawei-GigabitEthernet0/0/1] port hybrid untagged vlan { { vlan-id1 [ to vlan-id2 ] } | all }
在接口视图下,配置Hybrid类型接口加入的VLAN,这些VLAN的帧以Untagged方式通过接口。
[Huawei-GigabitEthernet0/0/1] port hybrid tagged vlan { { vlan-id1 [ to vlan-id2 ] } | all }
在接口视图下,配置Hybrid类型接口加入的VLAN,这些VLAN的帧以Tagged方式通过接口。
(可选) 配置Hybrid接口的缺省VLAN
[Huawei-GigabitEthernet0/0/1] port hybrid pvid vlan vlan-id
在接口视图下,配置Hybrid类型接口的缺省VLAN。

浙公网安备 33010602011771号