网络通信 频道

STP生成树连载:制服网络广播风暴

  【IT168 专稿】要保证企业的网络中的关键应用可持续性,就需要对交换网络进行冗余设计,然而这将产生广播风暴、“网络环路”等问题,严重时,将导致整个网络瘫痪?于是,STP生成树解决办法出现了……
  
  网络冗余设计与广播风暴的矛盾
  广播风暴的克星:设计STP网络生成树
  技术剖析:STP生成树初始化与收敛
  案例分析:观察生成树收敛过程
  实战剖析:STP生成树如何配置?
  技术进化:RSTP快速生成树配置

  
  网络冗余设计与广播风暴的矛盾
  
  在一个包含有交换机与网桥的网络中,消除环路对于获得可靠通信与防止流量在网络中不停循环必不可少。生成树协议(Spanning-tree Protocol,STP),工作在ISO七层模型中第二层,其应用能够使交换机或者网桥通过构成“生成树”,在网络拓扑中动态执行“环路遍历”,通过逻辑判断网络的链路,达到网络无环路和链路冗余的目的。
  
  网络冗余拓扑设计与环路

  访问文件服务器、数据库、因特网、企业内部网和企业外部网,这些对于商业成功有着关键作用。如果网络瘫痪了,生产就会蒙受损失,顾客就会不满。因此,在如今的网络工程设计中,冗余设计是考验一个网络稳定的关键环节,链路冗余使网络具有了容错功能,但如何在冗余设计中避免“网络环路”的危害呢?
  
  1.网络的高可用性
  所有的网络设计者和管理者都在追寻1天24小时,1周7天都能正常运行的计算机网络。但达到100%正常运行是几乎不可能的,所以99.999%(即“5个9”)的可靠性则是一些公司设定的目标。这意味着平均每30年才有1天的故障时间,平均每4000天才有1小时的故障时间,平均每年只有5.25min的故障时间。此外,对许多企业(如金融机构、医院、ISP等)而言,如果发生这些故障,则会带来巨大的商业损失。
  
  达到99.999%的可靠性的目标需要极其可靠的网络。就本章而言,网络的可靠性来源于可靠的设备和可以容忍故障和错误的网络设计,为了屏蔽故障,网络应当设计成能够快速收敛。
  
  部分局域网在早期的建设中,由于成本的原因并未在设计中考虑冗余问题,而在后期优化工作中则需从网络链路和网络设备两方面着手。条件允许的话最好能够提供不同物理方向的双归属、双路由保护。设备的冗余是指采用冗余配置的单机或多台设备互为热备份,但是一般情况下多台设备互为热备份的方式比较昂贵。因此,生成树技术存在着很大应用需求市场。
  
  2.冗余拓扑
  
  冗余拓扑(Redundant Topologies)的目标是消除由于单点故障引起的网络中断。这就和我们每天上班途经的公路一样,如果正在进行道路维修的话,我们同样可以通过绕行来到达目的地。如图8-1中所示,网段2中的所有客户端在交换机出现故障时,网络应用不会受到影响。交换机A如果出现故障,网络流量依然可以通过交换机B到达服务器和路由器。
  
  
图8-1  冗余拓扑网络
  
  
  容错性通过冗余来实现。冗余指的是多于和大于一般情况和正常情况下所应该有的冗余设计可以贯穿整个三层结构(核心、汇聚、接入),每个冗余设计都有针对性,可以选择其中一部分或几部分应用到网络中以针对重要的应用系统。万一网络中某条路径失效时,冗余链路可以提供另一条物理路径。可采用链路聚合(IEEE 802.3ad)实现“端口级”冗余,以克服某个端口或线路引起的故障;也可采用生成树协议(IEEE 802.1d)提供“设备级”的冗余连接。

  冗余设计带来环路冲突、广播风暴
  
  交换机学习连接到其端口设备的MAC地址,以便于工作数据能够正确转发到目的地。在交换机获得设备的MAC地址之前,它会把未知的目的地的帧泛洪出去,广播和多播也会被泛洪出去。所以,冗余交换拓扑也会导致广播风暴、帧的反复重传和MAC地址表不稳定的问题。
  
  从生成树的发展历程来看,透明网桥转发数据帧时,如果有环路,数据帧将会在环路中来回传递,大量增生数据帧,形成广播风暴。如图8-2所示,显示了一个核心的数据区域的多环形网络。
  
  多环形网络可以实现任何一条链路出现问题都不影响应用,但在环形交换网络中很容易出现“广播风暴”。出现“广播风暴”主要有两种原因:广播和电缆中断引发环路。
  
  1)广播环路
  图8-3中说明广播环路的形成。网络两台交换和两台主机,两台交换机之间环形连接,如果没有启用生成树,主机A向主机B发送广播帧。
  
  
 图8-2  高可靠多冗余网络示意图 
  
  
  图8-3  广播环路产生示意图
  
  假设两台交换机均没有运行生成树,主机A发送MAC为FF-FF-FF-FF-FF-FF 的广播帧①,由于以太网络是星形或总线形,广播同时发送到SW-1和SW-2上②,当广播帧达到SW-1 1/1端口时,SW-1通过端口1/2将该广播帧发送给SW-2 的1/2口③④,SW-2通过1/1端口又将该广播帧发给SW的1/1 端口⑤⑥,SW-1将该数据帧继续通过1/2端口继续发给SW-2 的1/2口⑦,这样一个环路形成;另外我们注意到,第一个广播帧也发给SW-2的1/1,SW-2也一样将该广播帧发给SW-1,这样双向广播形成。
  
  在路由网络中不存在这个问题,路由协议为了避免环路的性,有一个参数叫路由老化时间(TTL)。而在以太交换网络中情况却不是这样,可以从以太网帧格式分析出来,如图8-4所示。
  
  
图8-4  以太网 DIX 版本2 帧格式
  
  在以太网DIX版本2中,数据帧格式中没有类似TTL这样的老化计数器,所以数据帧将在环路的以太网中不停的循环。可以想象,一个简单的默认广播帧在环路中以2的N次方增生,眨眼间就足以将100M的以太网给堵死。
  

  提示:在第三层中才有TTL,随着TTL值的不断减小,直到0的进修,数据包就会被丢弃。目前有部分厂家的交换机出厂时,默认的STP是关闭的,这样就需要提供现场工作人员一定要注意规划网络,或者项目实施的时候打开生成树功能。
  

  2)网络链路中断引发环路
  
  常见的环路主要是广播环路引起,然而,单播也能引发环路,图8-5显示了该环路引发的流程。
  
  
图8-5  单播引发的环路
  
  
  假设主机A发送一个Ping单一包给主机B①,数据包将同时发送到SW-1和SW-2的1/1端口上②,这时主机B临时关机,这是在SW-2上,主机B 的MAC地址从MAC地址表中被释放,这是SW-1的MAC表内没有主机B的MAC地址,直接将该数据包发送给SW-2 的1/2端口③、④,SW-2收到SW-1来的数据包,这时就有可能出现两种情况:
  
* SW-2将广播该数据帧,应该主机B的MAC地址是新学到的,又重新从1/1口发送到回去⑤,这样环路产生。
* SW-2从端口 1/2收到源地址为AA.AA.AA.AA.AA.AA的数据包,这是SW-2错误的更新他的MAC地址表,误认为主机A从1/2端口学到⑥,造成网络无法正常通信。

  

0
相关文章