已更新系列文章包括104、61850、modbus 、储能系统、网络基础知识等,欢迎关注+星标。
VLAN(Virtual Local Area Network,虚拟局域网)是一种将物理局域网(LAN)划分为多个逻辑子网的技术,使不同VLAN之间的设备通信需要经过路由器或三层交换机,从而增强网络安全性、隔离广播域并优化流量管理。
下文将介绍如下要点:
1 VLAN 作用
2 VLAN的类型
3 VLAN的通信方式
4 VLAN的标识(VLAN Tagging)和交换机端口类型(Access、Trunk)
5 VLAN数据转发实例
1. VLAN的核心概念
1.1 VLAN的作用
-
广播域隔离:每个VLAN是一个独立的广播域,减少不必要的广播流量(如ARP、DHCP)。
-
安全性增强:不同VLAN间的通信需经过路由,可实施访问控制(ACL)。
-
灵活组网:不受物理位置限制,逻辑上划分网络(如财务部、研发部可跨交换机划分VLAN)。
-
流量优化:可针对不同VLAN设置优先级(QoS)。
1.2 VLAN vs 传统LAN
特性 | 传统LAN | VLAN |
---|---|---|
广播域 |
所有设备在同一广播域 |
每个VLAN独立广播域 |
安全性 |
较低(直接互通) |
较高(需路由) |
灵活性 |
依赖物理连接 |
逻辑划分,跨设备生效 |
管理成本 |
高(需物理调整) |
低(配置更改即可) |
2. VLAN的类型
2.1 基于端口的VLAN(Port-based VLAN)
-
最常见的类型,交换机端口被静态分配到某个VLAN。
-
示例:端口1-10属于VLAN 10(财务部),端口11-20属于VLAN 20(研发部)。
2.2 基于MAC地址的VLAN(MAC-based VLAN)
-
根据设备的MAC地址动态分配VLAN,适用于移动设备(如笔记本电脑)。
2.3 基于协议的VLAN(Protocol-based VLAN)
-
根据网络层协议(如IPv4、IPv6、IPX)划分VLAN(现已较少使用)。
2.4 基于子网的VLAN(Subnet-based VLAN)
-
根据IP地址范围划分VLAN(需三层交换机支持)。
3. VLAN的通信方式
3.1 同一VLAN内的通信
-
直接通过二层交换机(MAC地址表)转发,无需路由。
3.2 不同VLAN间的通信
-
必须经过路由器或三层交换机(通过虚拟接口SVI,如
VLAN 10
对应192.168.1.1
)。
4. VLAN的标识(VLAN Tagging)
4.1 802.1Q标准
-
在以太网帧的源MAC和类型字段之间插入 4字节VLAN Tag:
-
TPID(Tag Protocol ID):固定
0x8100
,表示802.1Q帧。 -
PCP(Priority Code Point):3位,用于QoS优先级(0-7)。
-
DEI(Drop Eligible Indicator):1位,标记是否可丢弃(用于拥塞控制)。
-
VID(VLAN ID):12位,标识VLAN(范围1-4094,其中0和4095保留)。
-
4.2 交换机端口的VLAN模式
端口类型 | 作用 | 是否添加/移除VLAN Tag |
---|---|---|
Access |
连接终端设备(PC、打印机) |
接收时剥离Tag,发送时不加Tag |
Trunk |
连接交换机/路由器,允许多个VLAN通过 |
始终保留Tag |
Hybrid |
混合模式(部分厂商如华为支持) |
可配置是否带Tag |
Acess端口收报文:收到一个报文,判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有则直接丢弃(缺省)
Acess端口发报文:将报文的VLAN信息剥离,直接发送出去
trunk端口收报文: 收到一个报文,判断是否有VLAN信息,如果没有则打上端口的PVID,并进行交换转发;如果有判断该trunk端口是否允许该 2的数据进入:如果允许则报文携带原有VLAN标记进行转发,否则丢弃该报文。
trunk端口发报文: 比较端口的PVID和将要发送报文的VLAN信息,如果两者相等则剥离VLAN信息,再发送,否则报文将携带原有的VLAN标记进行转发。
5. VLAN数据转发实例
5.1 access转发实例
上图中,pc1不能ping通pc2,因为同一交换机内从pc1进入交换机A的access口的数据包被打上了VLAN10的标记,而和pc2相连的access的是VLAN20,从上面总结的2)条不满足,无法ping通。同理,pc1和pc3也不能ping通。
上图中,pc2和pc3能互ping通。因为数据包从pc2进入交换机A的access口时,被打上了VLAN20的标记;交换机A与B相连的access口是VLAN20,所以数据包可以从该口发出。发出的时候去掉了VLAN20的标记,到B时,由于没有标记,可以被B的左边的access口接收并打上VLAN10的标记。由于B的右边的access口也属于VLAN10,所以数据包可以从该口出(出的时候去除掉VLAN10的标记,并到达pc3)
5.2 Trunk转发实例
1)上图中pc1和pc3可以相通,因为数据包从pc1进入A的access口是打上了VLAN10的标记,A的右边trunk口可以接受数据包,并转发到B的trunk口(无论vid是否等于pvid)。而B的acces属于VLAN10所以pc3能收到数据包。
2)同理,pc2和pc6相通