社会热点

网络广播风暴是怎么产生的?发生在哪一层呢?解决办法是什么?

电脑版   2020-11-29 20:18  

网络广播风暴是怎么产生的?发生在哪一层呢?解决办法是什么?VLAN是怎么具体解决的?:网络风暴事实上有多种,但是我们通常所示的网络广播风暴是指的OSI七层模型

1

网络风暴事实上有多种,但是我们通常所示的网络广播风暴是指的OSI七层模型中的数据链路层(Layer2)所产生的报文,其目的MAC为全FF。

要理解广播风暴,我们先要知道什么叫做广播域。广播域如何定义呢,看下面的解释就知道了:假设在一个网络中,有一系列的设备,如果其中一个设备发送广播frame,其它能收到这个广播frame的所有设备, 称为处于一个广播域中!

广播风暴的报文肯定也是广播报文,因为广播报文只能在一个广播域内进行传输,所以分割广播域可以起到隔离广播报文的功能。哪些方法可以隔离广播域内,最简单的方法就是划分VLAN!

VLAN的基本功能就是划分广播域,将一个大的广播域划分为多个广播域以后,广播风暴的影响就变小了,因为一个广播域内的报文,不会传播到别的广播域内。最极端的情况,一个PC一个VLAN(一个广播域),PC之间的通信都使用三层来进行,就没有广播的困扰了!

至于网络中为什么会出现广播风暴,基本上都是网络环路引起的。例如下图,组网上有环路,广播报文会在这个环路上快速的复制,然后迅速的把链路带宽占满,这几台交换机就会一直在处理广播报文,通常的结果就是交换机出现假死,管理端口没有办法操作,伴随着业务端口的灯会狂闪。

解决网络环路的方法就要使用生成树协议了,生成树协议发到到现在有STP、RSTP、MSTP这3种,其本质都是断掉环路,同时在网络有故障时,能够自动的切换。如下图所示,3台交换机之间仍然都能通信,但是却没有环路了。

其它解决广播风暴的方法是设置带宽限制,比如对于某个端口,其广播报文所占的最大带宽不能超过10M,这样就会大大的降低广播报文的危害。华为和思科的交换机都有类似的配置,下面是思科交换机C3750的配置:

这就是关于广播风暴的相关内容,如果觉得有点用处,欢迎关注我的头条号,一起讨论网络问题!

2

我们先来看一下什么是广播,广播通常是指局域网上数据帧发送的一种方式,表示帧从单一的源设备发送给同一网段上的所有主机。广播帧的目的MAC地址为十六进制的FFFFFFFFFFFF,所有收到该广播帧的主机都要接收并处理这个帧。广播方式会产生大量流量,导致带宽利用率降低,进而影响整个网络的性能。当需要网络中的所有主机都能接收到相同的信息并进行处理的情况下,通常会使用广播方式。

如下图,局域网中当PC1(192.168.1.1)第一次要与PC2(192.168.1.2)通信时,因为还不知道PC2的身份(MAC地址),首先是需要发送一个广播包使所有主机都接收到,从而可以去获取到PC2的MAC地址。

这里其实是一个ARP协议的工作原理,更多内容可参考此文章https://www.toutiao.com/i6799791762660393483/


广播风暴产生原因

网络环路是产生广播风暴的一个主要原因之一,大部分是因为交换机的连接方式出现了问题引发的,比如同一台交换机用一根网线连接了起来,两台交换机两根网线连接起来形成数据包地来回传递,广播包在链路上无法找到目标引发广播风暴。一旦发生了网络环路,局域网网络传输就会很不通畅断断续续,严重地甚至瘫痪造成断网。

我们来看以下拓扑,两台交换机直接通过两条网线进线级联,为了模拟交换机的环路问题,我们先通过“stp disabled”命令关闭生成树协议,华为交换机STP是默认启用的。当PC1和PC2第一次进行通信时会发生啥情况呢?

  1. PC1第一次与PC2通信,首先会发出一个广播帧,因为还不知道目的地址PC2的MAC,所以先以目的MAC地址为 “FF-FF-FF-FF-FF-FF” 以广播的形式发送出去。
  2. SW1收到这个广播帧后,会从E0/0/2、G0/0/1、G0/0/2端口转发这个广播帧。
  3. SW2从G0/0/1端口收到SW1从G0/0/1端口发来的广播帧,然后SW2从G0/0/2、E0/0/1、E0/0/2端口把广播帧转发出去,SW2又会从G0/0/2端口收到SW1从G0/0/2端口发来的广播帧,然后SW2从G0/0/1、E0/0/1、E0/0/2端口把广播帧转发出去。
  4. 同理,SW1也会从G0/0/1和G0/0/2端口接收到SW2转发过来的广播帧,然后从除接收端口之外的所有端口转发出去。
  5. PC1、PC2、PC3、PC4会不停地接收到广播帧,然后根据广播帧的内容丢弃或处理。
  6. 一个广播帧就在SW1和SW2之间不停地转发。

二层的数据帧不像三层数据包有TTL(Time To Live,生命周期)可避免数据包在网络中的无限循环和收发,二层的数据帧是不能被终止的,它们将在交换机之间永无止境地传递下去,最终将造成网络拥塞甚至网络瘫痪。我们可以通过Wireshark抓包会发现产生大量的广播包。

打开Wireshark“统计”->“捕获文件属性”可以看到在短短不到1分钟不到的时间内,共捕获到了30多万个数据包,这显然是很不正常的表现。

从“数据包长度”和“协议分级”也可以看到将近100%都为ARP类型广播数据包。

我们通过Wireshark工具分析出是环路原因造成的问题后,我们随便断开交换机其中一条互联的网线后瞬间就恢复正常了。在我们实际工作中遇到这种网络环路问题时,首先去观察交换机的接口灯有没有狂闪现象。同时也是可以采用有规律的去拔插网线,观察网络通畅情况去进行排查。当然目前企业级的交换机大多支持生成树协议STP(Spanning Tree Protocol),会自动堵塞某些端口,使之不能形成交换环路。

如果有同学需要学习更多的Wireshark数据包分析技术可以查看我的专栏~

https://learning.snssdk.com/feoffline/toutiao_wallet_bundles/toutiao_learning_wap/online/album_detail.html?content_id=6803503449116770567

STP工作原理

STP生成树协议通过阻塞冗余路径上的一些端口,确保到达任何目标地址只有一条逻辑链路。处于阻塞状态的端口不会有网络流量,虽然逻辑上没有环路,但物理路径仍然存在,如果正在使用的链路出现故障,STP会重新进行计算,被阻塞状态的端口可能会被激活用来提供冗余。STP使用STA(Spanning Tree Algorithm,生成树算法)决定交换机上哪些端口被阻塞来阻止环路的发生,而要实现这些功能,交换机之间必须要进行一些信息的交互,这些信息交互单元被称为BPDU(Bridge Protocol Data Unit,桥协议数据单元)

STP算法比较复杂,其工作过程可以归纳为以下几个步骤:

1. 选举根桥(Root Bridge)

2. 选举根端口(Root Port)

3. 选举指定端口(Designated Port)

4. 选举阻塞端口(Blocked Port)

如下拓扑就是一个STP树的选举生成,逻辑上已没有环路, 也就不会产生广播风暴了。

总结

通过上述讲解,我想大家已经可以得出这个问题的答案了。

网络广播风暴是怎么产生的?主要原因是交换机环路。

发生在哪一层呢?第二层数据链路层。

解决办法是什么?生成树协议解决

VLAN是怎么具体解决的?划分VLAN只是能够缩小广播域的范围,并不能实际解决广播风暴。

关于更多网络知识,欢迎大家关注咯~

3

网络是很多可以独立工作的计算机终端主机通过光纤网线无线等各种介质连接起来,使用统一的标准协议实现资源共享的集合!

网络广播风暴可能在每个网络中产生!一般指的广播风暴指的是局域网中二层的广播风暴!二层用Mac地址寻址,当不知道目的主机的Mac地址时,交换机就会给每一个所以设备的端口发送一个帧来询问每一个主机,这就是广播!而广播风暴是指很多这样的广播大量的占用带宽,导致网络缓慢!甚至不可用!

我们一般使用vlan来从逻辑上把大的局域网华为小块的局域网,是广播限制在一个小的范围内!vlan和vlan之间通讯需要借助路由器或三层交换机实现!

本文版权归原作者所有,如需商业用途或转载请与原作者联系。

分享

相关信息