应对网络广播风暴?你需要学习一点VLAN和Trunk

2023-10-10 16:01:02

大家好,我是IT售前工程师Bernie。

本文主要介绍计算机组网的关键技术vlan,以应对网络中的广播风暴。

在正式介绍VLAN之前,我们先举一个简单的例子:

下图是一个由5台二层交换机和9台PC构成的网络。假设某一时刻,计算机PC1需要与计算机PC2通信时(左上角)通信。

第一步:必须在数据帧中指定目标MAC地址才能正常通信,因此PC1必须先广播ARP请求(ARP Request)信息,来尝试获取计算机PC2的MAC地址。

第二步:交换机1收到广播帧(ARP请求)后,会将它转发给除接收端口外的其他所有端口,也就是Flooding(泛洪)了。

第三步:交换机3将ARP广播给交换机2和4、5;

第四步:交换机2、4、5也还会Flooding。分别将ARP转发到计算机PC3-PC9上面去。

本来只有交换机1和PC2跟本次消息传送有关系,但是由于广播消息可以在同一个网段中无差别传送,就导致了所有设备接收和处理无关的广播消息。当信息量比较大时,就会产生“广播风暴”,大量的广播信息在网段内复制,传播数据帧,会直接导致网络性能下降,甚至网络瘫痪。

那么,如何有效避免产生广播风暴呢?这里就引入了VLAN的概念。

广播域分割的必要性

通常情况下,分割广播域都必须使用路由器,可以以路由器上的网络接口(LAN Interface)为单位分割广播域。

但是路由器上不会有太多的网络接口,其数目多在1~4个左右。使用路由器分割广播域的话,所能分割的个数完全取决于路由器的网络接口个数,使得用户无法自由地根据实际需要分割广播域。

于是,就有了另外一个思路: 与路由器相比,二层交换机一般带有多个网络接口,如果能使用这么多网络接口分割广播域,那么无疑运用上的灵活性会大大提高。用于在二层交换机上分割广播域的技术,就是VLAN。

VLAN的概念

VLAN(Virtual LAN)的中文意思是“虚拟局域网”。有些人会将音译为“围栏”,没错它的作用确实跟围栏有一比。

VLAN的主要作用是分割同一网段下的广播域,这里包括同一网段下的各类设备。本来,二层交换机只能构建单一的广播域,不过使用VLAN功能后,它能够将网络分割成多个广播域。广播域一旦分割,每个虚拟局域网下的设备在进行ARP请求时,只能在自己的VLAN里面传送,大大净化了网络,提高了带块利用率。

VLAN的工作原理

接下来我们看一下VLAN的详细工作原理,是怎么分割广播域的。比如在一台未设置任何VLAN的二层交换机上,任何广播帧都会被转发给除接收端口外的所有其他端口(Flooding)。

例如,计算机A发送广播信息后,会被转发给端口2、3、4、5。交换机收到广播帧后,转发到除了接收端以外的所有端口。计算机B\C\D\E都会收到来自A的广播信息。

那么,我们接下来在交换机上生成2个VLAN,同时设置端口1、2、3属于绿色的VLAN,端口4、5属于红的VLAN。那么,我们再从计算机A发出广播帧,交换机就把它转发给同属于一个VLAN的其他端口,也就是端口2和3。端口4、5将不会接收到广播信息。这样,VLAN通过限制广播帧转发的范围分割了广播域。

这样就可以了吗?没那么简单!

VLAN生成的逻辑上交换机是互不相通的。我们在交换机上设置VLAN后,如果未做其他处理,VLAN间还是是无法通信的。通常两个广播域之间由路由器连接,广播域之间来往的数据包都是由路由器中继的。因此,VLAN间的通信也需要路由器提供中继服务,这被称作“VLAN间路由”。

VLAN间路由,可以使用普通的路由器,也可以使用三层交换机。总之,不同VLAN间互相通信时需要用到路由功能。

静态VLAN和动态VLAN

访问链接:在交换机中,只属于一个VLAN,且仅向该VLAN转发数据帧的端口。在大多数情况下,访问链接所连的是客户机。我们设置VLAN时,首先要生成VLAN,然后再设定访问链接,即定义哪一个端口属于这个VLAN。

按照VLAN与端口的映射方式,可以分为静态VLAN和动态VLAN。静态VLAN是指访问链接是事先好的,也就是说要明确规定好各个端口属于哪个VLAN。

由于需要一个个端口地指定,当计算机网络非常庞大时,设定静态就会变得烦杂无比。客户机每次变更所连端口,都必须同时更改该端口所属VLAN的设定,也不太现实。所以,静态VLAN的设置方式,只适合简单场景的组网方式。

动态VLAN则是根据交换机所连接的计算机的MAC地址或者IP地址来动态改变的。

① 基于MAC地址的VLAN,就是通过查询并记录端口所连计算机上网卡的MAC地址来决定端口的所属。假定有一个MAC地址“7C-17-43-FF-A2-90”被交换机设定为属于VLAN8,那么这台计算机无论是连在交换机哪个端口,该端口都会被划分到VLAN 8中。

② 还有一种方式是基于IP地址的动态VLAN,通过所连计算机的IP来决定端口所属VLAN的。这种设置方式,即使计算机因为交换了网卡或是其他原因导致MAC地址改变,只要计算机的IP地址不变,就仍可以加入原先设定的VLAN。

与基于MAC地址的VLAN相比,IP地址的动态VLAN可以简便地改变网络结构。因为IP地址是网络层的概念,所以可以理解为基于IP的VLAN是一种在OSI的第三层上设置的访问链接方式。

除了基于mac地址和IP的动态VLAN以外,还有一种是基于用户信息的VLAN。即:根据交换机端口所连接的计算机登录用户来决定该端口的VLAN。这种方式层级就更高了,属于OSI模型中的四层以上。层级越高,越能适用于网络结构的灵活变化。

Trunk Link

不管是上文介绍的动态VLAN还是静态VLAN,基本上都是单台交换机下的VLAN设置,小打小闹。在组网中,真正用到的还是跨多个交换机的VLAN。

比如:在一个学校里,不同教学楼里有很多的交换机、PC,他们组成了较为复杂的校园网络。

我们在交换机A和交换机B上各设一个绿色和红色VLAN专用的接口,用网线将两条网络并联起来,就可以两栋教学楼上的VLAN互通互认。其实这个方案也不是天衣无缝的,存在效率低、扩展性不好的问题。比如:在现有网络基础上新建VLAN时,为了让这个VLAN能够互通,就需要在交换机间连接新的网线,不同的教学区新增网线涉及到很多的改造和工程量。那么,为了提高效率,我们会想办法让交换机间互联的网线集中到一根上,这就是做Trunk(汇聚链接)。

Trunk 指的是能够转发多个不同VLAN的通信的端口。汇聚链路上流通的数据帧,都被附加了用于识别分属于哪个VLAN的特殊信息。

我们将交换机间互联的端口设定为汇聚链接。PC1发送的数据帧从交换机1经过汇聚链路(黄色)到达交换机2时,在数据帧上附加了表示属于红色VLAN的标记。

交换机2收到数据帧后,经过检查VLAN标识发现这个数据帧是属于红色VLAN。此时,交换机2会校验VLAN校验位标记,将的数据帧只转发给其他属于红色VLAN的端口。

总结

VLAN在计算机组网中非常重要,内容也非常多。本文只是管中窥豹,看到这里只是了解了vlan的概念和基本原理,接下来会另找机会继续讨论。我是Bernie,欢迎关注!