网络环路

现在我们的生活已经离不开网络,如果我家断网,我会抱怨这什么破网络,影响我刷抖音、打游戏;如果公司断网,那老板估计会骂娘,因为会影响到公司正常运转,直接造成经济损失。网络通信中,通常是以一条链路能够正常工作为前提,如果链路断开或节点故障,那么互联的设备就无法正常通信了,这类网络问题叫做单点故障。没有备份的链路或节点,出现故障会直接断网。

如果要提供 7×24 小时不间断的服务,那就需要在网络中提前部署冗余。避免出现单点故障,合理的做法是在网络中的关键设备和关键链路添加冗余。在冗余的网络环境中,任意一条链路发生故障断开,都不会影响网络,直接使用其它链路继续转发数据,解决单点故障的隐患。

但同时也带来了另外的网络问题。这种组网会构成二层环路,会引发广播风暴、重复帧、MAC 地址漂移等问题,严重时会占满链路带宽,或打爆设备 CPU,导致设备无法正常工作,最终造成网络瘫痪。当然,在实际的网络中,不少二层环路是由于人为的错误操作导致的,比如接错了网线。

举个栗子:

大刘的主机想要与小美的主机进行通信,现在只知道小美主机的 IP 地址,不知道 MAC 地址。有 IP 地址,就可以通过 ARP 协议来获取小美主机的 MAC 地址。我们来看看有冗余的网络中数据交换的过程:

  1. 大刘主机向交换机 A 发送 ARP 广播帧,来解析小美主机的 MAC 地址;
  2. 交换机 A 收到广播帧后,查看自己的 MAC 地址表,没找到相应的表项,就向所有端口(除接收端口之外)泛洪这个广播帧。也就是向 G0/1 和 G0/2 两个端口泛洪广播帧;
  3. 交换机 B 和交换机 C 收到广播帧后,没有对应 MAC 地址表项,也将广播帧所有端口(除接收端口之外)泛洪出去;
  4. 小美主机终于收到了大刘发送的 ARP 广播帧,发现是查询自己的 MAC 地址后,小美主机将会通过单播帧返回自己的 MAC 地址;
  5. 这个过程看似正常,大刘主机发送的 ARP 广播帧顺利到达小美主机,小美主机也进行了响应,但是网络中广播帧的传输还没有结束。在第 3 步中,交换机 C 也把 ARP 广播帧泛洪到交换机 B 。这时交换机 B 就收到了两个相同的 ARP 广播帧,分别来自交换机 A 和交换机 C ,收到的广播帧都会泛洪出去。那么,小美主机也会收到两个相同的 ARP 广播帧,也就是重复帧。出现这种现象说明网络中存在不合理的冗余链路;
  6. 接下来我们看下交换机 C ,交换机 C 收到从交换机 A 发过来的广播帧,同时交换机 C 的 MAC 地址表添加一条表项,记录大刘主机 MAC 地址和端口 G0/0 的映射关系。交换机 C 又从交换机 B 收到相同的广播帧,大刘主机 MAC 地址的映射端口从 G0/0 变成 G0/1 。从不同的端口收到相同的数据帧,导致 MAC 地址表项发生变化的现象,就叫做 MAC 地址漂移,这种现象说明网络中可能存在环路。这样一来,交换机 C 就无法确定大刘主机到底位于自己的哪个端口;
  7. 主机收到广播帧,会进行解封装,查看上层的 IP 地址是否是发送给自己的,再进行下一步处理。交换机(只指二层交换机)收到广播帧,会直接进行泛洪。大刘主机发出的广播帧,经过交换机 A 后,从交换机 A 的 G0/1 口泛洪的广播帧,交换机 B 收到后再从 G0/2 口进行泛洪,交换机 C 收到广播帧后,又从 G0/0 口泛洪出去,结果广播帧回到了交换机 A ,交换机 A 再从 G0/1 进行泛洪,最终这个广播帧会一直逆时针、永无止境的进行泛洪;同理,交换机 A 从 G0/2 口进行泛洪的广播帧,也会按顺时针、无休止的在三台交换机上进行泛洪。这种广播帧不停泛洪的现象,叫做广播风暴。广播风暴不仅会大量消耗网络设备的带宽和 CPU 使用率,也会影响到主机。主机收到一个广播帧后,会解封装上送网络层去处理,大量的广播帧泛洪,很可能导致主机瘫痪。

通过这个简单的演示,我们看到了冗余链路带来的风险。重复帧、MAC 地址漂移和广播风暴,都是由一个广播帧引起的,可是网络中不可避免出现广播帧,也不能因为二层环路问题而忽略冗余链路增加网络可靠性的好处。

那么如何在保证网络冗余的情况下,消除二层环路呢?实际上交换机的二层环路是一个典型问题,解决方案也有不少。其中的一个解决方案就是 STP(生成树协议),能够阻断冗余链路来消除可能存在的环路,并且在网络故障时激活被阻断的冗余备份链路,恢复网络的连通性,保障业务的不间断服务。

打赏

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2017-2023 WSQ
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信