一、传统以太网面临的挑战
在传统的以太网架构中,所有设备通常处于同一个广播域内。当某台主机发送广播帧或目标地址未知的单播帧时,该数据帧会被泛洪至整个网络中的所有节点。这种机制不仅造成大量无效流量在网络中传播,还可能引发安全隐患和带宽浪费,严重影响网络性能与稳定性。
二、VLAN技术的引入背景与定义
为解决上述广播域过大带来的问题,VLAN(Virtual Local Area Network,虚拟局域网)技术应运而生。通过将一个物理局域网逻辑划分为多个独立的广播域,VLAN有效缩小了广播范围,从而提升了网络安全性、减少了无用流量,并优化了资源利用效率。
三、VLAN的核心特性
- VLAN划分不受物理位置限制,同一VLAN内的设备即使连接在不同交换机上也能实现二层互通;
- 只有属于相同VLAN的设备之间才能进行二层通信,跨VLAN通信需借助三层设备如路由器或三层交换机。
四、VLAN的工作原理详解
4.1 VLAN标签机制(VLAN Tag)
为了使交换机能够识别不同VLAN的数据帧,IEEE 802.1Q标准规定在原始以太网帧中插入4字节的VLAN标签(即VLAN Tag),用于标识该帧所属的VLAN编号。
例如:当PC1(属于VLAN10)向同属VLAN10的PC3发送ping请求时,初始数据帧不带标签(untagged帧)。SW1接收到该帧后,会根据入接口配置识别其归属VLAN10,并在帧中添加对应的VLAN标签,形成tagged帧。
随后,SW2收到此带标签的数据帧,依据标签中的VID信息判断其所属VLAN,并将帧转发给目标PC3。整个过程本质上是数据帧在传输过程中被打上标签、传递、识别并最终剥离标签的过程。
4.2 VLAN的五种划分方式
VLAN可通过多种策略进行划分,主要包括以下五类:
- 基于接口划分 —— 按交换机端口分配VLAN,最为常见;
- 基于MAC地址划分 —— 根据源MAC地址确定VLAN归属;
- 基于IP子网划分 —— 依据IP地址段划分VLAN;
- 基于协议类型划分 —— 根据帧所使用的网络层协议分类;
- 基于策略划分 —— 综合多种条件(如MAC+IP等)设定规则进行动态划分。
本文重点介绍基于接口和MAC地址的两种方式,其余了解即可。
(一)基于MAC地址的VLAN划分
该方式通过建立MAC地址与VLAN之间的映射表来实现VLAN划分。当交换机接收到未标记的帧时,查询该表并为其打上相应VLAN标签。
主要特点包括:
- 具有较高的灵活性,因为VLAN绑定的是设备的MAC地址而非固定端口。例如:若PC1从SW1的端口迁移至已配置相同映射关系的SW2端口,仍可保持原有VLAN属性,确保二层通信正常;
- 但存在安全风险,由于MAC地址可被伪造,攻击者可能冒充合法设备接入特定VLAN。
(二)基于接口的VLAN划分
这是目前应用最广泛的VLAN划分方式,其实现简单直观——每个交换机接口被配置为某一特定VLAN成员,未标记的数据帧进入接口时自动被打上该接口的PVID(Port VLAN ID)标签。
典型特征如下:
- 部署便捷,适用于大多数企业网络环境;
- 终端设备移动后VLAN归属可能发生改变。例如:原位于SW1 e0/0/1(划入VLAN10)的PC1,若迁移到SW2 e0/0/1(划入VLAN20),则其发出的数据帧将归属于VLAN20。
4.2.1 以太网二层接口类型及其处理机制
在基于接口划分VLAN时,交换机端口可配置为以下三种类型:
Access接口:
通常连接无法识别VLAN标签的终端设备(如PC、服务器)。此类接口仅允许一个VLAN通过,且所有进出数据帧均不携带Tag(出方向自动剥离标签)。
Trunk接口:
主要用于交换机之间或交换机与路由器/AP之间的互联。支持多个VLAN的数据帧传输,各帧通过802.1Q Tag进行区分。接收无标签帧时一般不予处理,仅允许指定VLAN通过。
Hybrid接口:
兼具Access与Trunk接口的功能,既可用于连接终端设备,也可用于设备间互联。允许多个VLAN通过,并可灵活控制某些VLAN帧在发送时是否携带Tag,提供更高的配置自由度。
各类接口对VLAN标签的处理行为总结:
接收数据帧时:
- 当收到不带VLAN标签的帧时,Access、Trunk、Hybrid接口均会为其打上PVID对应的VLAN标签;
- 对于Trunk和Hybrid接口,还需检查该PVID是否在其允许通过的VLAN列表中,否则丢弃该帧。
在发送数据帧时,不同接口的处理方式如下:
- Access 接口会直接移除数据帧中的 VLAN 标签。
- Trunk 接口仅当数据帧中的 VID 与接口的 PVID 相同时,才会剥离 VLAN 标签。
- Hybrid 接口则依据其配置决定是否移除数据帧中的 VLAN 标签。
在接收数据帧时,判断规则如下:
- 对于不带 VLAN 标签的数据帧,Trunk 和 Hybrid 接口会根据是否允许该缺省 VLAN 通过来决定是否接收;而 Access 接口则无条件接收此类数据帧。
- 对于带有 VLAN 标签的数据帧,Access、Trunk 和 Hybrid 接口均会检查该数据帧的 VID 是否属于接口允许通过的 VLAN 范围。其中,Access 接口允许通过的 VLAN 即为其默认 VLAN(缺省 VLAN)。
4.3 相关命令
[Huawei] vlan vlan-id 创建VLAN
如:[Huawei] vlan 10 创建VLAN 10
[Huawei] vlan batch { vlan-id1 [ to vlan-id2 ] } 批量创建VLAN
如:[Huawei] vlan batch 10 20 30 创建VLAN 10 20 30
[Huawei] vlan batch 11 to 15 创建VLAN 11 12 13 14 15
Access接口相关命令:
[Huawei-GigabitEthernet0/0/1] port link-type access 配置接口的链路类型为Access
[Huawei-GigabitEthernet0/0/1] port default vlan vlan-id 配置接口的缺省VLAN并同时加入这个VLAN
如:与PC1与交换机g0/0/1相连,给g0/0/1划分到VLAN 10
[Huawei]vlan 10
[Huawei]int g0/0/1
[Huawei-GigabitEthernet0/0/1]port link-type access
[Huawei-GigabitEthernet0/0/1]port default vlan 10
Trunk接口相关命令:
[Huawei-GigabitEthernet0/0/1] port link-type trunk 配置接口的链路类型为Trunk
[Huawei-GigabitEthernet0/0/1] port trunk allow-pass vlan { { vlan-id1 [ to vlan-id2 ] } | all } 允许放行的VLAN
如:[Huawei-GigabitEthernet0/0/1] port trunk allow-pass vlan 10 20 30 允许放行vlan 10 20 30
[Huawei-GigabitEthernet0/0/1] port trunk pvid vlan vlan-id 设置Trunk类型接口的缺省VLAN
[Huawei-GigabitEthernet0/0/1] port link-type hybrid 配置接口的链路类型为Hybird
[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方式通过接口
[Huawei-GigabitEthernet0/0/1] port hybrid pvid vlan vlan-id配置Hybrid类型接口的缺省VLAN