华为VLAN原理精讲与配置
[TOC]
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帧
VLAN的划分方式

VLAN的划分包括如下5种方法:
- 基于接口划分:根据交换机的接口来划分VLAN
- 网络管理员预先给交换机的每个接口配置不同的PVID,当一个数据帧进入交换机时,如果没有带VLAN标签,该数据帧就会被打上接口指定PVID的标签,然后数据帧将在指定VLAN中传输。
- 基于MAC地址划分:根据数据帧的源MAC地址来划分VLAN
- 网络管理员预先配置MAC地址和VLAN ID映射关系表,当交换机收到的是Untagged帧时,就依据该表给数据帧添加指定VLAN的标签,然后数据帧将在指定VLAN中传输。
- 基于IP子网划分:根据数据帧中的源IP地址和子网掩码来划分VLAN
- 网络管理员预先配置IP地址和VLAN ID映射关系表,当交换机收到的是Untagged帧,就依据该表给数据帧添加指定VLAN的标签,然后数据帧将在指定VLAN中传输
- 基于协议划分:根据数据帧所属的协议(族)类型及封装格式来划分VLAN
- 网络管理员预先配置以太网帧中的协议域和VLAN ID的映射关系表,如果收到的是Untagged帧,就依据该表给数据帧添加指定VLAN的标签,然后数据帧将在指定VLAN中传输
- 基于策略划分:根据配置的策略划分VLAN,能实现多种组合的划分方式,包括接口、MAC地址、IP地址等
- 网络管理员预先配置策略,如果收到的是Untagged帧,且匹配配置的策略时,给数据帧添加指定VLAN的标签,然后数据帧将在指定VLAN中传输
基于接口的VLAN划分
划分原则:
将VLAN ID配置到交换机的物理接口上,从某一个物理接口进入交换机的、由终端计算机发送的Untagged数据帧都被划分到该接口的VLAN ID所表明的那个VLAN
特点:
这种划分原则简单而直观,实现容易,是目前实际的网络应用中最为广泛的划分VLAN的方式
当计算机接入交换机的端口发生了变化时,该计算机发送的帧的VLAN归属可能会发生变化
缺省VLAN,PVID (Port VLAN ID)
- 每个交换机的接口都应该配置一个PVID,到达这个端口的Untagged帧将一律被交换机划分到PVID所指代的VLAN
- 取值范围:1~4094,默认情况下,PVID的值为1
基于MAC地址的VLAN划分
划分原则:
- 交换机内部建立并维护了一个MAC地址与VLAN ID的对应表
- 当交换机接收到计算机发送的Untagged帧时,交换机将分析帧中的源MAC地址,然后查询MAC地址与VLAN ID的对应表,并根据对应关系把这个帧划分到相应的VLAN中
特点:
- 这种划分实现稍微复杂,但灵活性得到了提高
- 当计算机接入交换机的端口发生了变化时,该计算机发送的帧的VLAN归属不会发生变化
- 但这种类型的VLAN划分安全性不是很高,因为恶意计算机很容易伪造MAC地址
以太网二层接口类型

Access接口

**Access接口:**Access接口一般用于和不能识别Tag的用户终端 [如用户主机、服务器等] 相连,或者不需要区分不同VLAN成员时使用
- 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帧
- 当一个Tagged帧从本交换机的其他接口到达一个Access接口后,交换机会检查这个帧的Tag中的VID是否与PVID相同:
Trunk接口

Trunk接口一般用于连接交换机、路由器、AP以及可同时收发Tagged帧和Untagged帧的语音终端
Trunk接口特点:
- Trunk接口仅允许VLAN ID在允许通过列表中的数据帧通过
- Trunk接口可以允许多个VLAN的帧带Tag通过,但只允许一个VLAN的帧从该类接口上发出时不带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进行剥离,而是直接将它从链路上发送出去
Hybrid接口接口发送与接收

华为设备默认的接口类型是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进行剥离,而是直接将它从链路上发送出去

二、三层接口对比
二层接口(Layer2 Interface) | 三层接口(Layer3 Interface) |
---|---|
二层接口不能配置IP地址 | 三层接口可以配置IP地址 |
二层接口不具备MAC地址 | 三层接口具备MAC地址 |
当二层接口收到数据帧时,设备在其MAC地址表中查询该帧的目的MAC地址,找到匹配的MAC地址表项后按照该表项的指示转发帧;如果没有找到匹配的MAC地址表项,则将帧进行泛洪 | 三层接口收到数据帧后,如果数据帧的目的MAC地址与设备的本地MAC地址相同,则将数据帧解除封装,然后在路由表中查询数据包的目的IP地址,找到匹配的路由表项后按照该表项的指示转发包;如果没有找到匹配的表项,则将包丢弃 |
典型的二层接口如二层交换机的物理接口;大部分三层交换机的物理接口缺省为二层接口。 | 典型的三层接口如路由器的三层接口。某些三层交换机的物理接口可以切换成三层模式。此外除了物理三层接口,还存在逻辑三层接口或者网络设备上的逻辑子接口 |
二层接口并不隔离广播域,当二层接口收到广播帧时,会将数据帧进行泛洪 | 三层接口隔离广播域,当三层接口收到广播帧时,缺省不会进行泛洪,而是直接终结 |
基于端口划分VLAN的基础配置命令:
1. 创建VLAN:
[Huawei] vlan vlan-id
[Huawei] vlan batch { vlan-id1 [ to vlan-id2 ] } &<1-10>
# vlan-id:指定VLAN ID。整数形式,取值范围是1~4094。
# 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
Access接口的基础配置命令:
1. 配置接口类型:
[Huawei-GigabitEthernet0/0/1] port link-type { access | dot1q-tunnel | hybrid | trunk }
- 在接口视图下,配置接口的链路类型
2. 配置Access接口的缺省VLAN:
[Huawei-GigabitEthernet0/0/1] port default vlan vlan-id
# 命令用来配置接口的缺省VLAN并同时加入这个VLAN
Trunk接口的基础配置命令:
1.配置接口类型:
[Huawei-GigabitEthernet0/0/1] port link-type trunk
2.配置Trunk接口加入指定VLAN:
[Huawei-GigabitEthernet0/0/1] port trunk allow-pass vlan { { vlan-id1 [ to vlan-id2 ] } | all }
# 在接口视图下,配置Trunk类型接口加入的VLAN
参数 | 参数说明 | 取值范围 |
---|---|---|
vlan-id1 | 表示第一个VLAN的编号 | 取值范围是1~4094 |
to vlan-id2 | 最后一个VLAN的编号 | 在1~40954的基础上取值必须大于等于vlan-id1的取值 |
3.配置Trunk接口的缺省VLAN
[Huawei-GigabitEthernet0/0/1] port trunk pvid vlan vlan-id
# 在接口视图下,配置Trunk类型接口的缺省VLAN。
Hybrid接口的基础配置命令:
1.配置接口类型:
[Huawei-GigabitEthernet0/0/1] port link-type hybrid #在接口视图下,配置接口的链路类型为Hybrid
2. 配置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方式通过接口
参数 | 参数说明 | 取值范围 |
---|---|---|
vlan-id1 | vlan-id1表示第一个VLAN的编号 | 取值范围是1~4094 |
vlan-id2 | to vlan-id2表示最后一个VLAN的编号 | vlan-id2的取值必须大于等于vlan-id1的取值 |
all | 指定Hybrid接口所属的所有VLAN |
3.配置Hybrid接口的缺省VLAN:
[Huawei-GigabitEthernet0/0/1] port hybrid pvid vlan vlan-id
# 在接口视图下,配置Hybrid类型接口的缺省VLAN
基于MAC地址划分VLAN的配置命令:
1. 关联MAC地址与VLAN:
[Huawei-vlan10] mac-vlan mac-address mac-address [ mac-address-mask | mac-address-mask-length ] [ priority priority ]
参数 | 参数说明 |
---|---|
mac-address | 指定与VLAN关联的MAC地址 |
priority priority | 指定MAC地址对应VLAN的802.1p优先级 |
mac-address-mask | 指定MAC地址掩码 |
mac-address-mask-length | 指定MAC地址掩码长度 |
all | 指定与VLAN关联的所有MAC地址 |
2. 使能MAC地址与VLAN:
[Huawei-GigabitEthernet0/0/1] mac-vlan enable #通过此命令使能接口的MAC VLAN功能
Vlan间通信方法:
使用路由器物理接口实现Vlan间通信
路由器三层接口作为网关,转发本网段前往其它网段的流量
- 路由器三层接口无法处理携带VLAN Tag的数据帧,因此交换机上联路由器的接口需配置为Access
- 路由器的一个物理接口作为一个VLAN的网关,因此存在一个VLAN就需要占用一个路由器物理接口
- 路由器作为三层转发设备其接口数量较少,方案的可扩展性太差
通过路由器子接口实现Vlan间通信
子接口 [Sub-Interface] 是基于路由器以太网接口所创建的逻辑接口,以物理接口ID+子接口ID进行标识,子接口同物理接口一样可进行三层转发
-
子接口不同于物理接口,可以终结携带VLAN Tag的数据帧
-
基于一个物理接口创建多个子接口,将该物理接口对接到交换机的Trunk接口,即可实现使用一个物理接口为多个VLAN提供三层转发服务
1. 创建子接口:
interface interface-type interface-number.sub-interface number #命令用来创建子接口
- sub-interface number代表物理接口内的逻辑接口通道
- 一般情况下,为了方便记忆,子接口ID与所要终结的VLAN ID相同
[R1] interface GigabitEthernet0/0/1.10
2. 配置子接口Dot1q终结的单层VLAN ID:
[R1-GigabitEthernet0/0/1.10] dot1q termination vid vid
# dot1q termination vid命令用来配置子接口Dot1q终结的单层VLAN ID
参数 | 参数说明 | 取值 |
---|---|---|
vid | 用户报文中的Tag的取值 | 整数形式,取值范围是1~4063 |
- 缺省情况,子接口没有配置dot1q终结的单层VLAN ID。
3. 使能终结子接口的ARP广播功能:
[R1-GigabitEthernet0/0/1.10] arp broadcast enable #命令用来使能终结子接口的ARP广播功能
-
缺省情况下,终结子接口没有使能ARP广播功能。终结子接口不能转发广播报文,在收到广播报文后它们直接把该报文丢弃
-
为了允许终结子接口能转发广播报文,可以通过在子接口上执行此命令。
三层交换机使用VLANIF技术实现VLAN间通信
VLANIF接口是三层逻辑接口,支持VLAN Tag的剥离和添加,因此可以通过VLANIF接口实现VLAN之间的通信
- VLANIF接口编号与所对应的VLAN ID相同
[SW1] interface vlanif vlan-id #用来创建VLANIF接口并进入到VLANIF接口视图
- vlan-id表示与VLANIF接口相关联的VLAN编号
- VLANIF接口的IP地址作为主机的网关IP地址,和主机的IP地址必须位于同一网段