3.11 虚拟局域网VLAN
# 3.11 虚拟局域网VLAN
本节课我们介绍虚拟局域网VLAN的基本概念,在之前课程中我们已经介绍过了以太网交换机自学习和转发帧的流程,以及为避免网络环路而产生的生成树协议。
# 3.11.1 虚拟局域网VLAN概述
以太网交换机工作在数据链路层,也包括物理层,使用一个或多个以太网交换机互联起来的交换式以太网,其所有站点都属于同一个广播域。
随着交换式以太网规模的扩大,广播域相应扩大,如图所示,这是一个由多个以太网交换机互联而成的交换式以太网。每个以太网交换机上都连接了多个主机,形成了一个巨大的广播域。
然而巨大的广播域会带来很多弊端,例如广播风暴、难以管理和维护潜在的安全问题等。
我们来举例说明广播风暴的问题,假设网络中的某个主机要给另一个主机发送一个数据帧,但是在自己的ARP高速缓存表中,无法查到目的主机的MAC地址,于是首先要发送ARP广播请求来获取目的主机的MAC地址。该ARP广播请求会传遍整个网络,网络中的其他所有主机都可以收到该广播。这种情况就是所谓的广播风暴,广播风暴会浪费网络资源和网络中各主机的CPU资源,因此除非应用需求必须要使用广播,否则网络中的主机应尽量不使用广播。
也许有的同学会有这样的想法,如果网络中只是偶尔出现广播,那还是可以接受的,但事实上网络中会频繁出现广播信息。目前使用最广泛的tcpip协议当中的很多协议都会使用广播,例如地址解析协议ARP,路由信息协议rap,动态主机配置协议dhcp等。除此之外,其他一些协议站也会频繁使用广播,
那么如何才能将较大的广播域分割成更小的广播域,使要路由器就要可以隔离广播域,如图所示,这是由两台以太网交换机互联而成的交换式以太网。网络中的各主机同属于一个广播域,使用路由器可以将该广播域分割成两个较小的广播域。路由器工作在网络体系结构的第三层,也就是网络层。
由于路由器默认情况下,不对广播数据包进行转发,因此路由器很自然的就可以隔离广播域。然而路由器的成本较高,局域网内部全部使用路由器来隔离广播域是不现实的。
在这种情况下,虚拟局域网技术应运而生,虚拟局域网的英文缩写词为VLAN,它是一种将局域网内的设备划分成与物理位置无关的逻辑组的技术。这些逻辑组具有某些共同的需求。如图所示一楼、二楼、三楼分别有一个局域网,可将他们通过另外一个交换机互联成一个更大的局域网,那么原来每一个局域网成为现在局域网的一个网段,网络中的各主机属于同一个广播域,某个主机发送到广播数据包,其他所有主机都可以收到。
根据应用需求,我们将该局域网划分成两个VLAN,VLAN1和VLAN1。此后VLAN1中的广播数据包不会传送到VLAN2,VLAN2中的广播数据包也不会传送到VLAN1,也就是说同一个VLAN内部可以广播通信,不同VLAN之间不能广播通信,
小结:
# 3.11.2 虚拟局域网VLAN的实现机制
本节课我们介绍虚拟局域网VLAN的实现机制,虚拟局域网VLAN是在交换机上实现的,需要交换机能够实现以下两大功能,
- 一个是能够处理带有VLAN标记的帧,也就是IEEE 802.1Q帧,
- 另一个是交换机的各端口,可以支持不同的端口类型,不同端口类型的端口,对帧的处理方式有所不同。
我们首先来看 IEEE802.1q帧,也称为dot one q帧。他对以太网的MAC帧格式进行了扩展,插入了四字节的VLAN标记,如图所示,这是以太网版本2的MAC格式,这是插入VLAN标记后的802.1q帧的格式,
VLAN标记的最后12个比特称为VLAN标识符vid,它唯一的标识了以太网帧属于哪一个VLAN , Vid的取值范围是0~4095,其中0和4095都不用来表示VLAN,因此用于表示VLAN的vid的有效取值范围是1~4094,
需要注意的是802.1q帧是由交换机来处理的,而不是用户主机来处理的。当交换机收到普通的以太网帧时会将其插入四字节的VLAN标记,将其转变为802.1q帧,简称为打标签。
当交换机转发802.1q帧时,可能会删除其4字节VLAN标记,将其转变为普通以太网帧,简称为去标签,VLAN标记字段的其他内容,对我们理解VLAN划分机制来说,并没有什么帮助,因此就要不再赘述了。
接下来我们介绍交换机的端口类型,交换机的端口类型一般有以下三种,它们分别是 Access,Trunk,Hybrid。
总结:
Access接受没标签的,只转发同ID的**,转发前去标签**
Trunk****总结:
- 如果收到的帧ID值不相等,直接转发;
- 如果收到的帧ID相等,发送前去标签
- 如果没有id,则打标签
需要说明的是思科交换机没有Hybrid端口。在介绍这三种交换机端口类型之前,我们首先需要了解一下端口的缺省VLAN ID这个概念,在思科交换机上将其称为本征VLAN。例如思科交换机在用户未配置VLAN时,所有端口都默认属于VLAN1,即所有端口的本帧VLAN都是VLAN1,而在华为交换机上将其称为端口VLAN ID剪辑为PVID。 在我们接下来的介绍中,为了描述方便,我们采用PVID而不是本征VLAN。需要注意的是交换机的每个端口,有且仅有一个PVID
接下来我们首先介绍Access端口,Access端口一般用于连接用户计算机,只能属于一个VLAN,因此Access端口的PVID值与端口所属VLAN的ID相同,如图所示主机ABCD分别连接在交换机的一个端口上,交换机首次上电时,默认配置各端口属于VLAN1,也就是各端口的PVID值等于1,默认配置各端口的类型为Access。我们用大写字母A来表示,
Access端口的接收处理方法是一般只接受未打标签的普通以太网MAC帧,根据接收帧的端口的PVID给帧打标签,即插入四字节VLAN标记字段,字段中的VID取值与端口的PVID取值相等。
我们来举例说明,假设主机A发送了一个广播帧,该帧从交换机的端口一进入交换机,由于端口一的类型是Access,它会对接收到的未打标签的普通以太网MAC帧,打标签,也就是插入四字节的VLAN标记字段,如图所示,由于端口一的PVID值等于一,因此所插入的四字节VLAN记字段中的VID的值也等于1。Access端口的发送处理方法是若帧中的VID与端口的PVID相等**,则去标签后转发该帧,否则不转发**。对于本例广播帧中的VID的取值与端口234的PVID取值都等于1,因此交换机会从这三个端口对帧进行去标签转发。
总结:接受没标签的,转发同ID的
再来看这个例子,我们的应用需求是将主机A和B划归到VLAN2,将C和D划归到VLAN3,这样VLAN2中的广播帧不会传送到VLAN3,VLAN3中的广播帧也不会传送到VLAN2,为了实现这种应用,可以在交换机上创建VLAN2和VLAN3,然后将交换机的端口一和二划归到VLAN2,因此端口1和2的PVID值等于2,将交换机的端口3和4划归到VLAN3,因此端口3和4的PVID值等于3。我们来看主机A发送广播帧的情况,该帧从交换机的端口1进入交换机,由于端口1的类型是Access,它会对接收到的未打标签的普通以太网MAC帧打标签,也就是插入四字节的VLAN标记字段,如图所示,由于端口1的PVI D值等于2,
因此所插入的四字节VLAN标记字段中的VID的值也等于2,广播帧中的VID的取值与端口二的PVID取值都等于2,因此交换机会从端口二对帧进行去标签转发。
我们再来看主机C发送广播帧的情况,该帧从交换机的端口三进入交换机,由于端口三的类型是Access,它会对接收到的未打标签的普通以太网MAC帧打标签,也就是插入四字节的VLAN标记字段,如图所示由于端口三的PVID值等于3,因此所插入的四字节VLAN标记字段中的VID的值也等于3,广播帧中的VID的取值与端口4的PVID取值都等于3,因此交换机会从端口4对帧进行去标签转发。
接下来我们介绍Trunk端口,Trunk端口一般用于交换机之间 或交换机与路由器之间的互联,使不同交换机的主机可以属于同个VLAN。
Trunk端口可以属于多个VLAN,也就是说Trunk端口可以接收和发送多个VLAN的帧,用户可以设置Trunk端口的PVID值,默认情况下Trunk端口的PVID值为1,
我们来举例说明Trunk端口的功能,如图所示,两台交换机互联而成了一个交换式以太网,我们的应用需求是将主机ABEF划归到VLAN1,将主机CDGH划归到VLAN2,由于交换机首次上电时默认配置各端口属于VLAN1,其相应的PVID值等于1,并且端口的类型为Access,因此我们需要对交换机进行相应的配置,才能满足应用需求,分别在两个交换机上创建VLAN2,并将他们的端口3和4都划归到VLAN二,其相应的PVID值=2,而两个交换机的端口一和二保持默认配置即可,也就是属于VLAN1,其相应的PVID值等于1。
特别需要注意的是两个交换机互联的端口5,需要将他们的类型更改为Trunk类型,而他们的PVID值保持默认的1即可。Trunk端口的发送处理方法是对VID等于PVID的帧去标签再转发。假设主机A发送了一个广播帧,该帧从交换机一的端口1进入交换机,由于端口一的类型是Access,它会对接收到的未打标签的普通以太网MAC帧打标签,也就是插入四字节的VLAN标记字段,如图所示。由于端口1的PVID值等于1,因此所插入的四字节VLAN标记字段中的VID的值也等于1。该广播帧中的VID的取值与端口二的PVID值都等于1,端口二的类型是Access,因此交换机一会从端口2对帧进行去标签转发
该广播帧中的VID的取值与端口5的PVID值都等于1,端口5的类型是Trunk,因此交换机一会从端口5对帧进行去标签转发,很显然该广播帧会从交换机2的端口5进入交换机二,**Trunk端口的接收处理方法是接收未打标签的帧,**根据接收帧的端口的PVID给帧打标签,即插入四字节VLAN标记字段,字段中的VID取值与端口的PVID取值相等。对于本例交换机2会对接收到的未打标签的普通以太网MAC帧打标签,也就是插入4字节的VLAN标记字段。如图所示,由于端口5的PVID值等于1,因此所插入的4自字节VLAN标记字段中的VIP的值也等于1
该广播帧中的VID的取决与端口1和2的PVID值都等于1,端口1和2的类型都是Access,因此交换机1会从端口1和2对帧进行去标签转发。
总结:
- 如果收到的帧ID值不相等,直接转发;
- 如果收到的帧ID相等,发送前去标签
- 如果没有id,则打标签
再来看主机C发送广播帧的情况,该帧从交换机1的端口3进入交换机,由于端口三的类型是Access,它会对接收到的未打标签的普通以太网MAC帧打标签,也就是插入四字节的VLAN标记字段。如图所示,由于端口3的PVID值=2,因此所插入的4自字节VLAN标标记字段中的VID的值也等于2,该广播站中的VID的取值与端口4的PVI D值都等于2,端口4的类型是Access,因此交换机1会从端口4对帧进行去标签转发,
该广播帧中的VID的取值与端口5的PVID值不相等,由于Trunk端口对VID不等于PVID的,帧是直接转发的,因此交换机1会从端口5对帧直接转发,也就是不去掉标签,而带着标签直接转发。很显然该802.1Q广播帧会从交换机2的端口5进入交换机2 Trunk端口,接收已打标签的802.1Q帧,该广播帧中的VID的取值与端口3和4的PVID值都等于2,端口3和4的类型都是Access类型,因此交换机二会从端口3和4对帧进行去标签转发。通过本例可以看出,再由多个交换机互联而成的交换式以太网装,划分VLAN时,连接主机的交换机端口,应设置为Access类型,交换机之间互联的端口应设置为Trunk类型。
接下来请同学们做一个练习题,以加深对Access端口和Trunk、端口功能的理解。本题的答案如下所示,希望大家都能解答正确。
最后我们简单介绍一下华为交换机私有的Hybrid端口类型,Hybrid的端口即可用于交换机之间或交换机与路由器之间的互联,这一点与Trunk端口相同,也可用于交换机与用户计算机之间的互联,这一点又与Access端口相同。
除此之外,Hybrid端口的绝大部分功能与Trunk端口相同,不同点在于Hybrid端口的发送处理方法,Hybrid的端口会查看帧的VID是否在端口的区域标签列表中,若存在则去标签后再转发,若不存在则直接转发。
接下来我们通过一个简单的应用实例来说明Hybrid端口的功能。主机ABC连接在同一个交换机的不同接口上,请利用Hybrid端口的功能实现以下应用需求,A和B都能与C相互通信,但A与B不能相互通信,如图所示,
我们可以将这三台主机所连接的交换机的三个端口划分到不同的VLAN,并且端口类型设置为Hybrid。假设这三个VLAN分别是VLAN10、VLAN20、VLAN30,相应的PVID分别为10,,20 30。
在端口一的区域标签列表中,配置VLAN10和VLAN30。在端口二的去标签列表中配置VLAN20和VLAN30,在端口三的去标签列表中配置VLAN10,VLAN20,VLAN30,主机A给C发送数据帧,该帧从交换机的端口1进入交换机,由于端口1的类型是Hybrid的,他会对接收到的未打标签的普通以太网MAC帧打标签,也就是插入四字节的VLAN标记字段,如图所示,由于端口一的PVID值等于10,因此所插入的四字节VLAN标记字段中的VID的值也等于10,该帧将从端口三转发,由于帧中的VID的取值在端口3的区标签列表中,因此该帧会被去标签转发,这样主机C就可以收到主机A发送的数据帧。同理,主机C给A发送数据帧,主机A同样可以收到,我们就要不再演示了。
那么主机B给C发送数据帧的具体过程又如何呢?如图所示,
同理,主机C给B发送数据帧,主机B同样可以收到,我们就要不再演示了。
再来看看主机A给B发送数据帧的情况,该帧从交换机的端口一进入交换机,给该帧打标签,其中VIP取值为10,该帧将从端口2转发,由于帧中的VID的取值,不在端口2的去标签列表中,因此该帧被直接转发,这样主机B就会收到一个带有VLAN标记的802.1Q帧,但是主机B可以识别普通以太网MAC帧,而不能识别802.1Q帧,只能丢弃该帧。同理,主机B给A发送的普通以太网MAC帧,主机A收到的却是802.1Q帧,无法识别而丢弃。
本节课的内容小结如下