计网-VLAN
一、 VLAN 是什么?为什么需要它?
首先,我们要理解传统局域网(LAN)的问题。
-
传统共享式 LAN(基于集线器 Hub): 所有设备都在同一个广播域中。一台设备发送的广播帧(如 ARP 请求),会被 Hub 复制给所有其他设备。网络规模大了之后,大量的广播流量会严重消耗带宽和设备性能,这就是“广播风暴”的风险。而且,所有设备在逻辑上是平等的,缺乏安全隔离。
-
早期交换式 LAN(基于普通二层交换机): 虽然交换机根据 MAC 地址表进行单播帧的转发,减少了冲突,但广播帧和未知目的地址的帧依然会被泛洪到所有端口。所以,整个交换机仍然是一个大的广播域。
VLAN(Virtual Local Area Network,虚拟局域网) 技术的诞生,就是为了解决上述问题。它的核心思想是:
在单一的物理交换机上,创建多个逻辑上独立的、互不干扰的交换机。
https://i.imgur.com/1J3v3Ld.png
VLAN 的好处:
-
广播控制: 将一个大广播域划分为多个小广播域。广播帧只会在属于同一个 VLAN 的端口之间传播,极大地减少了网络中的广播流量,提升了性能。
-
安全性提升: 不同 VLAN 之间的设备在二层(数据链路层)是隔离的。即使物理连接在同一台交换机上,VLAN 10 的设备也无法直接与 VLAN 20 的设备通信。必须通过三层设备(如路由器或三层交换机)才能互通,这为实施访问控制策略提供了天然边界。
-
简化管理和灵活性: 可以根据部门、功能(如财务、研发、行政)而不是物理位置来划分网络。当一个员工从办公室 A 搬到办公室 B,只需将其新工位连接的交换机端口重新划分到原来的 VLAN 即可,无需更改物理布线。
二、 交换机如何实现 VLAN 划分:关键机制
交换机主要通过以下两个机制来实现 VLAN 的功能:
-
VLAN 的划分(端口分配)
-
VLAN 间数据的识别和转发(VLAN 标签)
1. VLAN 的划分:基于端口的 VLAN
这是最简单、最常用的方法。网络管理员手动配置交换机的每个端口,指定它们属于哪个 VLAN。
-
Access 端口(接入端口):
-
用途: 通常用于连接终端设备,如电脑、打印机、服务器等。
-
行为:
-
接收数据时: 当 Access 端口从一个连接的设备收到一个普通的、没有VLAN标签的以太网帧时,交换机会根据这个端口配置的 PVID,给这个帧“打上”该 VLAN 的标签。
-
发送数据时: 当交换机需要将一个帧从这个 Access 端口发出去给终端设备时,它会先检查帧的 VLAN 标签是否与端口的 PVID 一致。如果一致,交换机就会“剥离”VLAN 标签,将原始的以太网帧发送出去。因为普通网卡根本看不懂带 VLAN 标签的帧。
-
-
-
Trunk 端口(干道端口):
-
用途: 专门用于交换机之间或交换机与支持 VLAN 的路由器/服务器之间的互联。
-
行为:
-
接收数据时: Trunk 端口期望收到带 VLAN 标签的帧。它根据标签来决定这个帧属于哪个 VLAN。
-
发送数据时: 当交换机需要将一个帧通过 Trunk 端口发送给另一台交换机时,它会保留帧的 VLAN 标签。这样,对端交换机就能识别出这个帧属于哪个 VLAN。
-
-
简单比喻:
-
交换机: 一栋大楼。
-
VLAN: 大楼里不同的公司(A公司、B公司)。
-
Access 端口: 每个公司的员工工位。员工(电脑)只知道自己属于A公司(VLAN 10),进出工位的东西都是“普通物品”(无标签帧)。
-
Trunk 端口: 连接大楼各楼层的电梯。电梯运输的每个箱子都贴有公司标签(VLAN 标签),确保箱子被送到正确的楼层和正确的公司区域。
-
PVID: 每个工位默认所属的公司。
2. VLAN 数据的识别:IEEE 802.1Q 协议(VLAN 标签)
那么,交换机内部是如何区分不同 VLAN 的帧的呢?答案是通过 802.1Q 标签。
当一个以太网帧进入交换机的 Access 端口后,交换机会在帧的头部插入一个 4 字节的 VLAN Tag,然后再在交换机内部进行处理和转发。
标准以太网帧 vs 带 802.1Q 标签的以太网帧:
标准以太网帧 (无标签) | 带 802.1Q 标签的以太网帧 | |
---|---|---|
结构 | | 目标MAC | 源MAC | 类型/长度 | 数据 | FCS | | | 目标MAC | 源MAC | 0x8100 | PRI | CFI | VID | 类型/长度 | 数据 | 新的FCS | |
说明 | 普通帧格式 | 在源MAC和类型字段之间插入了4字节的Tag |
VLAN Tag 的详细说明:
-
TPID(标签协议标识符,2字节): 固定值
0x8100
,用于标识这是一个带有 802.1Q 标签的帧。 -
TCI(标签控制信息,2字节): 包含以下信息:
-
PRI(优先级,3比特): 用于 QoS(服务质量),表示帧的优先级(0-7)。
-
CFI(规范格式指示器,1比特): 通常为0,用于兼容以太网和令牌环网。
-
VID(VLAN ID,12比特): 这是最关键的部分! 它标识了帧所属的 VLAN,取值范围是 1-4094(0 和 4095 保留)。所以我们最多可以创建 4094 个 VLAN。
-
这个标签是交换机内部的“通行证”,交换机根据 VID 来查询 MAC 地址表,决定将帧从哪些属于同一 VLAN 的端口转发出去。
三、 VLAN 的工作流程举例
假设一个场景:
-
一台交换机,创建了 VLAN 10(财务)和 VLAN 20(研发)。
-
端口1 为 Access 模式,PVID=10,连接 PC1(财务部电脑)。
-
端口2 为 Access 模式,PVID=20,连接 PC2(研发部电脑)。
-
端口24 为 Trunk 模式,连接另一台交换机。
过程1:PC1 发送数据给同交换机的 PC3(假设PC3也在VLAN 10)
-
入站(Ingress): PC1 发送一个普通的以太网帧到端口1。交换机收到后,给这个帧打上 VLAN 10 的标签。
-
交换(Switching): 交换机查看帧的目标MAC地址,查询MAC地址表(该表是 per-VLAN 的,即每个VLAN有独立的MAC表),发现目标地址对应端口3(属于VLAN 10)。
-
出站(Egress): 端口3是 Access 模式,且 PVID=10。交换机检查帧的标签(VLAN 10)与端口的 PVID(10)匹配,于是剥离 VLAN 标签,将原始帧发送给 PC3。
-
结果: PC1 和 PC3 通信成功。PC2(VLAN 20)完全看不到这个通信。
过程2:PC1 发送广播帧(如ARP请求)
-
入站: 同过程1,帧被打上 VLAN 10 标签。
-
交换: 因为是广播帧,交换机会将它泛洪到所有属于 VLAN 10 的端口(除了接收端口1),包括 Access 端口3 和 Trunk 端口24。
-
出站:
-
到端口3(Access):剥离标签,发送原始帧。
-
到端口24(Trunk):保留 VLAN 10 标签,将带标签的帧发送给另一台交换机。
-
-
结果: 只有 VLAN 10 内的设备(包括另一台交换机上VLAN 10的设备)会收到这个广播。VLAN 20 的设备完全不受影响。
过程3:PC1(VLAN 10)试图直接 ping PC2(VLAN 20)
-
入站: PC1的ICMP请求帧进入端口1,被打上 VLAN 10 标签。
-
交换: 交换机查询 VLAN 10 的 MAC 地址表,找不到 PC2 的 MAC 地址(因为PC2属于VLAN 20,其MAC地址记录在VLAN 20的表中)。即使找到了,交换机也不会将 VLAN 10 的帧转发到属于 VLAN 20 的端口2。通信在二层被直接阻断。
-
结果: Ping 请求失败。要实现互通,必须将数据包发送给路由器(或三层交换机),由它在 VLAN 10 和 VLAN 20 之间进行路由(三层转发)。
四、 其他VLAN划分类型(补充)
除了最常用的基于端口的VLAN,还有:
-
基于MAC地址的VLAN: 根据设备的MAC地址动态划分VLAN。设备连接到任意端口,都会被划分到指定的VLAN。更灵活但管理复杂。
-
基于协议的VLAN: 根据网络层协议(如IPv4、IPv6、IPX)来划分,现在较少使用。
-
基于子网的VLAN: 根据设备的IP地址范围进行划分,这通常在三层交换机上实现。
总结
核心概念 | 说明 |
---|---|
VLAN 本质 | 在物理网络之上创建的虚拟逻辑网络,用于隔离广播域。 |
核心组件 | VLAN ID (1-4094):VLAN的唯一标识。802.1Q Tag:用于在帧中携带VLAN ID信息。 |
端口类型 | Access 端口:连接终端,处理无标签帧。Trunk 端口:交换机互联,处理带标签帧。 |
工作流程 | 入站打标签(Access口)-> 基于VLAN标签和MAC表交换 -> 出站剥标签(Access口)或 保标签(Trunk口)。 |
核心价值 | 安全性、性能(广播控制)、管理灵活性。 |