本文引用图片均来自 高军: 计算机网络
虚拟局域网
先看例子,学校内有一个大的局域网,校内所有设备通过网络互联互通。校局域网由一个个小的院系局域网组成,院系内的主机接入同一个交换机,院系间的交换机联通就组成了校局域网。
这样组成的校局域网有一个大的缺点——网络中所有主机处于同一个广播域,广播域过大会造成管理困难同时会遭遇广播风暴
广播风暴的一个例子就是 计算机网络 (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】高军: 计算机网络