翻译经典之《Cisco Lan Switching》第六章(二): What Is Spanning Tree and Why Use Spanning Tree?

【版权声明:原创翻译文章,翻译水平有限,错误在所难免,翻译作者对文章中存在的错误或遗漏所造成后果不承担任何责任,请谨慎转载。转载请保留本声明及出处:blog.csdn.net/shallnet ,下载该书英文版


        在最基本的情景中,生成树协议(STP)是一个环路保护协议,它允许网桥之间通过相互通信去发现网络中的物理环,然后网桥通过指定的算法是网络形成一个逻辑上无环的拓扑,也就是说,STP创建一个由叶子和树干构成的无环树形结构网络。在后面的章节将讲述各个网桥之间如何通信以及STP算法如何工作。
        在网络中存在环有很多原因,你经常发现有人为地让网络连接成环,以试图对网络提供一个冗余备份,一旦某一条链路或交换机出问题了,另外一条链路或交换机还可以继续使得网络工作。不过环也有可能是因为使用错误而产生的(当然,这绝不会发生在你的身上)。图6-1 展示了一个典型的提供冗余备份的交换机网络。
图6-1. 使网络存在环可以提供一个备份网络
技术分享
技术分享
在一个桥网络中有环可能会导致广播环路和mac地址表异常,这对桥网络来说潜在的致命问题。

广播环路
        广播数据和2层环路结合在一起是相当危险的,如下图6-2。
图6-2 未使用STP,广播数据包循环转发形成环路
技术分享
技术分享
        假定所有交换机都没有运行STP。
        第一步:主机A向广播MAC地址发送一个帧;
        第二步:帧通过以太网链路媒体传送到Cat-1和Cat-2;
        第三步:当帧在Cat-1的端口port-1/1上收到,Cat-1执行“第三章 网桥技术”所讨论的转发表学习算法并将洪泛该帧,此时帧从端口Port1/2转发出去;
        第四步:该帧继续传输以太网下面所有节点,Cat-2的端口Port1/2也将接收到该帧;
        第五步:Cat-2也将把该广播帧从端口Port1/1洪泛出去,;
        第六步:进而,该帧又继续传送到Cat-1 端口Port1/1上;
        第七步:Cat-1作为一个交换机,按照交换机正常转发将会把该帧从端口Port1/2再一次地发送出去;
        现在可以看到一个环路已经形成了。
        并且,上面描述图6-2还忽略了第二步广播包还到达Cat-2,在Cat-2也会洪泛该帧并在下面的节点中传输,也会导致和上面广播包传输相反的一个环路,总之,要记住这种环回回路会在两个方向都会产生。
        从图6-2可以得出一个重要的结论:网桥的回路比路由回路要危险得多。为了搞明白这点,我们回到第一章“Desktop Technologies.”讨论的以太网帧格式。比如,图6-3给出了DIX V2以太网帧的格式。
 图6-3.DIX版本2以太网格式
技术分享
技术分享
        要注意DIX版本2以太网给格式仅仅包含两个MAC地址、一个类型域和一个CRC(作为下层数据添加在后面)。不一样的是,IP头部包含一个生存时间(TTL)域,该值被发送IP包的主机设置并在每经过一个路由之后减一,当该值为0时,该包会被丢弃,这样路由器就防止了“来回打转”的数据报文。以太网帧不像IP数据包那样有一个TTL域,所以一旦有一个帧在网络上形成环路,该帧将永远在网络中持续转发,直到出现以下情况:
  • 某一个桥被关闭了或断掉一条链路。
  • 世界毁灭了<译者注原文:The sun novas>。

        这似乎没有那么令人害怕,但是比图6-2示例复杂的网络在实际上会引起一个按指数倍数增长的环路,每一个帧从交换机每个端口发送出去,总的帧的数量增长相当快。我曾亲眼见证过一个ARP在两个OC-12 ATM 链路中跑了45分钟(for non-ATM wizards, each OC-12 sends 622 Mbps in each direction; this is a total of 2.4 Gbps of traffic)<译者注:上一句为原文,目前还不能理解,未翻译>,对那些还没有认识到这个问题严重性的人来说,那是相当糟糕的事。
        最后,想象一下广播风暴给像图6-2那样的简单用户带来的影响,他们不仅是不能玩Doom(一个校园网络上流行的小游戏),他们几乎不能做任何事(go home除外)!回想一下第二章“Segmenting LANs”,广播包是必须被CPU处理的,这样的话,所有PC也因为处理广播风暴而被卡死,就连连在该网络上的PC的鼠标指针都无法移动,直到你让PC不再连接到该局域网中,才可以PC恢复到正常的操作,一旦你再次连接上该局域网,广播包会再次占满CPU 。如果你还从来没亲身经历过此事,那么当你某天晚上遇到只有你最讨厌的那个人在使用网络,你可以随便把某个VLAN(比如VLAN 2)搞成物理环路,然后执行set spantree 2 disable, 试试看会不会出现这种情况。当然,如果最讨厌的那个人是你老板的话就别这么干啦!

网桥MAC地址表异常
        许多 交换机/网桥 管理员对了解上面讨论的广播风暴基本问题,但是很少有人知道即使单播帧也会在包含环的网络中无限循环转发。图6-4举例说明这点。
图6-4.未使用STP情况下,即使单播包也会循环转发并使MAC地址表异常
技术分享
技术分享
        比如,假设Host-A的ARP表拥有一个Host-B对应信息,打算发送一个单播ping包给Host-B,但此时Host-B临时从网络中移除了,并且交换机中相应的MAC地址表也更新了。如果此时交换机都没有运行STP,正如先前的示例,帧会传输到两个交换机的Port 1/1(第二步);现在只从Cat-1角度考虑问题,由于Host-C关闭了,Cat-1的Mac转发表中没有Host-C的地址CC-CC-CC-CC-CC-CC,因此该帧被交换机洪泛(第三步);第四步,Cat-2在Port 1/2接收到该帧,在该节点上发生两件事(都很糟糕):
  1. Cat-2洪泛该帧,因为该交换机并未学习到Mac 地址CC-CC-CC-CC-CC-CC(第五步),这使得环路形成并且使得网络挂掉。
  2. Cat-2注意到其仅仅在端口Port1/2上接收到源地址为AA-AA-AA-AA-AA-AA的帧,然后改变其上面MAC转发地址表条目到错误端口!
        随着帧在相反的方向打转(回忆一下循环转发存在于两个方向上),你会看到Host-A的MAC地址会在Port 1/1和Port 1/2之间不停来回切换。
        简而言之,不仅仅单播ping包会持续地占满整个网络,并且网桥MAC地址转发表也会异常,要记住不仅仅只有广播包才能干掉你的网络。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。