1 什么是VLAN
1.1 划分VLAN的背景
在典型交换网络中,当某台主机发送一个广播帧或未知单播帧时,该数据帧会被泛洪,甚至传递到整个广播域。
广播域越大,产生的网络安全问题、垃圾流量问题,就越严重。

1.2 虚拟局域网(VLAN)
虚拟局域网VLAN可以隔离广播域。
特点:不受地域限制、同一VLAN内的设备才能直接二层通信

2 VLAN的基本原理
2.1 如何实现VLAN

Switch1与Switch2同属一个企业,该企业统一规划了网络中的VLAN。其中VLAN10用于A部门,VLAN20用于B部门。A、B部门的员工在Switch1和Switch2上都有接入。
PC1发出的数据经过Switch1和Switch2之间的链路到达了Switch2。如果不加处理,后者无法判断该数据所属的VLAN,也不知道应该将这个数据输出到本地哪个VLAN中。
2.2 VLAN标签(VLAN Tag)
交换机如何识别接收到的数据帧属于哪个VLAN?

VLAN标签:
要使交换机能够分辨不同VLAN的报文,需要在报文中添加标识VLAN信息的字段。
IEEE802.1Q协议规定,在以太网数据帧中加入4个字节的VLAN标签,又称VLAN Tag,简称Tag。
VLAN数据帧:

2.3 VLAN的实现

Switch1和Switch2之间的链路要承载多个VLAN的数据,需要一种基于VLAN的数据标记手段,以便对不同VLAN的数据帧进行区分。
IEEE 802.1Q标准(也被称为Dot1Q)定义了该”标记”方法。该标准对传统的以太网数据帧进行修改,在帧头中插入802.1Q Tag,而在该Tag中,便可以写入VLAN信息。
2.4 VLAN的划分方式

基于接口的VLAN划分:
原理:
根据交换机的接口划分VLAN。
网络管理员预先给交换机的每个接口配置不同的PVID,将该接口划入PVID对应的VLAN。
当一个数据帧进入交换机时,如果没有带VLAN标签,该数据帧就会被打上接口指定PVID的Tag,然后数据帧将在指定PVID中传输。
缺省VLAN,PVID:
Port VLAN ID,是接口上的缺省VLAN。
取值:1~4094。
基于MAC地址的VLAN划分:
原理:
根据数据帧的源MAC地址来划分VLAN。
网络管理员预先配置MAC地址和VLAN ID映射关系表。
当交换机收到的是Untagged帧时,就依据该表给数据帧添加指定VLAN的Tag,然后数据帧将在指定VLAN中传输。
映射表:
记录了MAC地址和VLAN ID的关联情况。

2.5 以太网二层接口类型

2.5.1 Access接口
交换机上常用来连接用户PC、服务器等终端设备的接口。
Access接口所连接的设备的网卡只收发无标记帧。
Access接口只能加入一个VLAN。

2.5.2 Trunk接口
Trunk接口允许多个VLAN的数据帧通过,这些数据帧通过802.1Q Tag实现区分。
Trunk接口常用于交换机之间的互联,也用于连接路由器、防火墙等设备的子接口。

2.5.3 Access接口与Trunk接口示例
描述主机之间数据访问的全流程。

2.5.3 Hybrid接口
Hybrid接口与Trunk接口类似,也允许多个VLAN的数据帧通过,这些数据帧通过802.1Q Tag实现区分。
用户可以灵活指定Hybrid接口在发送某个(或某些)VLAN的数据帧时是否携带Tag。

Hybrid接口示例:
描述主机访问服务器的全流程。

2.5.5 接口类型总结
| 接口类型 | 接收数据帧 | 发送数据帧 |
|---|---|---|
| Access接口 | Untagged数据帧,打上PVID,接收。 Tagged数据帧,与PVID比较,相同则接收;不同则丢弃。 |
VID与PVID比较,相同则剥离标签发送;不同则丢弃。 |
| Trunk接口 | Untagged数据帧,打上PVID,且VID在允许列表中,则接收;VID不在允许列表,则丢弃。 Tagged数据帧,查看VID是否在允许列表中,在允许列表中,则接收;VID不在允许列表,则丢弃。 |
VID在允许列表中,且VID与PVID一致,则剥离标签发送。 VID在允许列表,但VID与PVID不一致,则直接带标签发送 不在允许列表中,则直接丢弃。 |
| Hybrid接口 | Untagged数据帧,打上PvID,且VID在允许列表中,则接收;VID不在允许列表中,则丢弃。 Tagged数据帧,查看VID是否在允许列表中,在允许列表中,则接收;VID不在允许列表,则丢弃。 |
VID不在允许列表中,直接丢弃。 VID在Untagged列表中,剥离标签发送。 VID在Tagged列表中,带标签直接发送。 不在允许列表中,则直接丢弃。 |
3 VLAN的配置
3.1 VLAN基础配置命令
1.通过此命令创建VLAN并进入VLAN视图,如果VLAN已存在,直接进入该VLAN的视图。
[Huawei] vlan vlan-id # vlan-id是整数形式,取值范围是1~4094
2.通过此命令批量创建VLAN。
[Huawei] vlan batch { vlan-id1 [ to vlan-id2 ] }
# batch:指定批量创建的VLAN ID。
# vlan-id1:第一个VLAN编号
# vlan-id2:最后一个VLAN编号
3.2 Access接口基础配置命令
1.配置接口类型
[Huawei-GigabitEthernet0/0/1] port link-type access # 接口视图下,配置接口的链路类型为Access
2.配置Access接口的缺省VLAN
[Huawei-GigabitEthernet0/0/1] port default vlan vlan-id
# 接口视图下,配置接口缺省VLAN并同时加入这个VLAN
# vlan-id:配置缺省VLAN的编号。整数形式,取值范围是1~4094
3.3 Trunk接口基础配置命令
1.配置接口类型
[Huawei-GigabitEthernet0/0/1] port link-type trunk # 接口视图下,配置接口链路类型为Trunk
2.配置Trunk接口加入指定VLAN
[Huawei-GigabitEthernet0/0/1] port trunk allow pass vlan { { vlan-id1 [ to vlan-id2 ] } | all }
# 接口视图下,配置Trunk类型接口加入的VLAN
3.(可选)配置Trunk接口的缺省VLAN
[Huawei-GigabitEthernet0/0/1] port trunk pvid vlan vlan-id
# 接口视图下,配置Trunk类型接口的缺省VLAN
3.4 Hybrid接口基础配置命令
1.配置接口类型
[Huawei-GigabitEthernet0/0/1] port link-type hybrid # 接口视图下,配置接口链路类型为Hybrid
2.配置Hybrid接口加入指定VLAN
[Huawei-GigabitEthernet0/0/1] port hybrid untagged vlan { { v/an-id1 [ to vlan-id2 ] } | all }
# 接口视图下,配置Hybrid类型接口加入的VLAN,这些VLAN的帧以Untagged方式通过接口
[Huawei-GigabitEthernet0/0/1] port hybrid tagged vlan { { v/an-id1 [ to v/an-id2 ] } | all }
# 接口视图下,配置Hybrid类型接口加入的VLAN,这些VLAN的帧以Tagged方式通过接口
3. (可选)配置Hybrid接口的缺省VLAN
[Huawei-GigabitEthernet0/0/1] port hybrid pvid vlan vlan-id # 接口视图下,配置Hybrid类型接口的缺省VLAN