本文引用图片均来自 高军: 计算机网络
虚拟局域网
先看例子,学校内有一个大的局域网
,校内所有设备通过网络互联互通。校局域网
由一个个小的院系局域网
组成,院系内的主机接入同一个交换机
,院系间的交换机联通
就组成了校局域网。
这样组成的校局域网有一个大的缺点
——网络中所有主机处于同一个广播域
,广播域过大会造成管理困难
同时会遭遇广播风暴
广播风暴的一个例子就是 计算机网络 (5) 数据链路层-MAC地址、IP地址及ARP协议 中提到的ARP
,主机想要知道另一个院系局域网中主机的MAC地址
,它的广播帧
会通过交换机
传播到校局域网
的所有主机
中。很明显,广播风暴会极大的浪费网络资源和主机的CPU资源
另外,在网络结构上,可能某些院系想要一起组成一个局域网但又不想增加设备
。
基于以上现实需求,虚拟局域网
的概念应运而生
虚拟局域网是VLAN(Virtual Local Area Network)是一种将局域网内的设备划分成与物理位置无关的的逻辑组的技术,这些逻辑组具有某些共同的需求
如图,原先按照楼层
划分成三个
局域网且三个局域网共同组成
一个大的局域网,现在采用虚拟局域网技术在大局域网中新划分出两个虚拟局域网VLAN1
和VLAN2
。显然,VLAN1
和VLAN2
中都包含了原本不属于
同一个局域网的主机,此时VLAN1
发送的广播帧
只会传播到VLAN1
的其他主机中,VLAN2
同理
虚拟局域网的实现
以太网中,虚拟局域网是在交换机上实现的,其中由两个关键因素:
- IEEE 802.1Q帧
- 交换机端口类型
IEEE 802.1Q帧
该帧是对以太网MAC帧
的扩展
,加入了4字节
的VLAN标记
,VLAN标记
中最后12比特
称为VLAN标识符VID
,标志该帧属于哪一个VLAN
。VID
取值范围是 (0到4095)
,其中0和4095
都不用来标识VLAN
,所以VID有效范围是1到4094
IEEE 802.1Q帧
由交换机
处理,交换机收到普通MAC帧
时会在其中插入VLAN标记
,在转发时则可能
删除其中的标记
。用户
主机收到IEEE 802.1Q帧
会直接丢弃
交换机端口类型
交换机有以下三种端口:
- Access
- Trunk
- Hybrid
每个端口有一个VID
标志端口所属VLAN
,称为PVID
。本节将帧从外部通过端口进入
交换机的过程称为帧的接收
,将帧从内部通过端口离开
交换机的过程称为帧的发送
Access端口:
Access端口具有以下特点:
- 一般用于连接用户主机
- 只能属于
一个VLAN
- 端口的
PVID
与所属VLAN的ID
相同
Access端口对于帧的处理:
- 接收:一般只接受
普通
以太网帧(用户主机发送的帧),端口根据自身PVID
给帧插入VLAN标记
,标记中的VID
取值与PVID
相同 - 发送:若帧中
VLAN标记
的VID与端口PVID相同
则去掉
标记后转发(转发给用户主机),否则丢弃
下例中,位于VLAN2
的主机A
发送广播帧
,广播帧经过1号Access端口
后被插入VLAN标记(VID=2)
,2、3、4号Access端口
检查帧的VID
,2号Access端口
发现VID
与自身PVID
相同便将帧的标记去掉后转发该帧,3、4号Access端口
发现VID
与自身PVID
不同(不在同一个虚拟局域网)便丢弃该帧
Trunk端口:
Trunk端口具有以下特定:
- 端口一般用于交换机之间或交换机与路由器之间的互连
- 端口可以属于
多个VLAN
- 端口
PVID
值可手动
设置(默认为1)
Trunk端口对于帧的处理:
接收:
没有VLAN标记
的帧:端口根据自身PVID
给帧插入VLAN标记
,标记中的VID
取值与PVID
相同有VLAN标记
的帧:直接接收
发送:
- 帧的
VID
与PVID
相同:去掉
帧的标记再转发 - 帧的
VID
与PVID
不同:直接转发
下例中,位于VLA1
的主机A
发送广播帧
,广播帧经过1号Access端口
后被加入VLAN标记(VID=1)
,交换机1
的5号Trunk端口
检查帧的VID
,发现与自身PVID
相同便将帧的标记去除
然后转发给交换机2
的5号Trunk端口
。交换机2
的5号Trunk端口
发现帧中没有VLAN标记
便根据自身PVID
给帧加入
标记,此时广播帧的VID为1
下例中,位于VLA2
的主机C
发送广播帧
,广播帧经过3号Access端口
后被加入VLAN标记(VID=2)
,交换机1
的5号Trunk端口
检查帧的VID
,发现与自身PVID
不同便将帧直接
转发给交换机2
的5号Trunk
端口。交换机2
的5号Trunk端口
发现帧中有VLAN标记
且VID
与自身PVID
不同于是对帧不做任何处理直接
接收
注意,互连的Trunk端口PVID值
不同可能
导致转发错误。如下图中左边主机A
的帧会被错误
的转发给主机G、H
,右边主机A
发送的帧会被正确
转发
Hybrid端口:
Hybrid端口具有以下特点:
- 端口即可用于交换机与用户主机之间的互连
(同Access端口)
,也可用于交换机之间或交换机与路由器之间的互连(同Trunk端口)
- 端口可以属于多个VLAN
(同Trunk端口)
- 端口
PVID
值可手动设置,默认为1(同Trunk端口)
Hybrid端口对于帧的处理:
接收(同Trunk端口)
:
没有VLAN标记
的帧:端口根据自身PVID
给帧插入VLAN
标记,标记中的VID
取值与PVID
相同有VLAN标记
的帧:直接接收
发送:
- 查看帧的
VID
是否在端口的去标记列表
中,存在
则去掉标记再转发,否则
直接转发
下例中,主机A、B
都能与主机C
通信,但是主机A与B不能相互通信
。主机A
发送的帧通过1号Hybrid端口
后被加入VLAN标记(VID=10)
,3号Hybrid端口
检查帧的VID
发现其位于去标记列表
中便将帧的标记去除
后转发给主机C
。同理,主机B
也可与主机C
通信。但是,主机A
发送给主机B
的帧不在2号Hybrid端口
的去标记列表
中,于是2号Hybrid端口
直接转发带有VLAN标记
的IEEE 802.1Q
帧到主机B
,主机B无法识别该帧
参考文献
- 【1】高军: 计算机网络