您好, 访客   登录/注册

生成树协议的发展历程浅析

来源:用户上传      作者: 吴 君

  由于生成树协议本身比较小,所以并不像路由协议那样广为人知。但是它却掌管着端口的转发和开关的大权。在和别的协议一起运行的时候生成树就有可能切断其他协议报文通路,造成种种奇怪的现象。生成树协议和其他协议一样是随着网络的不断发展而不断更新换代的。总的来说可以分成以下三代生成树协议。
  
  一、第一代生成树协议STP和RSTP
  
  1.Spanning Tree Protocol
  以太网络发展初期,透明网桥是一个不得不提的重要功能。它比只会放大和广播信号的HUB功能强大很多。它能把发向它的数据帧的源MAC和端口记录下来,下次如果再遇到这个目的MAC的帧就只从记录中的端口号发送出去,可以加快处理帧的速度。除非目的MAC没有记录或者目的MAC就是多播地址才会向所有端口发送。通过透明网桥不同的局域网之间可以互相通讯,而且由于具备MAC地址学习功能,不会像HUB那样造成网络流量的碰撞,但是透明网桥也有它的不足之处,就是透明网桥并不能像路由器那样知道数据帧可以经过多少次转发,一旦网络存在环路就会造成数据帧在环路内不断循环和增生甚至造成广播风暴,导致网络不可用。另外由于在大型网络中不好定位,所以广播风暴是二层网络灾难性的故障。
  在这种环境下产生的生成树协议很好地解决了这一问题,生成树协议的基本思想十分简单。因为自然界中生长的树是不会出现环路的,所以如果网络也能够像一棵树那样生长就永远不会出现环路。因此生成树协议定义了以下一些概念。
   根桥 Root Bridge
   根端口 Root Port
   指定端口 Designated Port
   路径开销 Path Cost
  定义这些概念的目的就在于通过构造一棵自然树的方法达到裁剪冗余环路的目的同时实现链路备份和路径最优化,用于构造这棵树的算法就叫做生成树算法(Spanning Tree Algorithm,SPA),用这种算法构造网络树的协议也就被称为生成树协议。
  要实现这些功能网桥之间必须要交换一些信息,这些信息交流单元就称为网桥协议数据单元(Bridge Protocol Data Unit,BPDU),这是一种二层数据帧,它指向的目的地址是MAC多播地址01-80-C2-00-00-00,所有支持STP协议的网桥都会接收到该数据帧,其中的数据区里携带了用于生成树计算的所有有用信息。通过这些信息,加上生成树协议的算法就可以达到生成一个无环路拓扑。
  2.Rapid Spanning Tree Protocol
  由于生成树的计算时间相对来说比较长,对一些实时性要求比较高的业务,比如IP语音(Voice over IP,VOIP)的网络,这可能导致严重的性能问题。为了克服这些问题,出现了快速生成树协议(Rapid Spanning Tree Protocol,RSTP),即802.1w,它与802.1d是可以共用的,是802.1d的扩展版本。快速生成树协议中的端口只有三种状态:丢弃状态,学习状态和转发状态,相比生成树协议的五种状态提高了效率,并且可以实现更快的收敛速度。
  3.STP和RSTP的缺点
  快速生成树协议相对于生成树协议的确改进了很多,为了支持这些改进对网桥协议数据单元的格式做了一些修改,但仍然向下兼容生成树协议,可以在一个网络中同时包含快速生成树协议和生成树协议,虽然如此快速生成树协议和生成树协议一样同属于单生成树(Single Spanning Tree,SST),它自身有很多缺陷,总的来说表现在三个方面:
  (1)由于整个交换网络只有一棵生成树,在网络规模比较大的时候会导致较长的收敛时间,并且一旦拓扑改变会造成较大的影响面积。
  (2)在网络结构不对称的时候单生成树会影响网络的连通性。
  (3)当链路被阻塞后将不承载任何流量,造成了带宽的极大浪费,这在环行城域网的情况下比较明显。
  
  二、第二代生成树协议PVST和PVST+
  
  1.PVST和PVST+
  上一小节所述的那些缺陷都是单生成树无法克服的,于是支持VLAN的生成树协议出现了。
  每个VLAN都生成一棵树是一种比较直接而且最简单的解决方法,它能够保证每一个VLAN都不存在环路,但是由于种种原因以这种方式工作生成树并没有形成标准协议,而是各个厂商都出了自己的一套协议,其中尤以Cisco的每VLAN生成树(Per VLAN Spanning Tree,PVST)最为为代表。
  但是为了携带更多的信息,每VLAN生成树的网桥协议数据单元已经和生成树协议和快速生成树协议的网桥协议数据单元不一样了,所以最初的每VLAN生成树协议并不兼容生成树协议和快速生成树协议。
  所以Cisco很快推出了能兼容生成树协议和快速生成树协议的VLAN生成树协议每VLAN生成树+(Per VLAN Spanning Tree +,PVST+)。
  2.PVST和PVST+的缺点
  PVST和PVST+ 协议实现了VLAN认知能力和负载均衡能力,但是新技术也带来了新问题,PVST/PVST+ 协议也有它们一些缺点:
  (1)由于每个VLAN都需要生成一棵生成树,所以PVST的网桥协议数据单元通信量将和干道(Trunk)中的需要中继的VLAN个数成正比。
  (2)在创建VLAN个数比较多的时候维护多棵生成树的计算量和资源占用量将急剧增长。
  (3)由于协议的私有性PVST/PVST+不能像生成树协议和快速生成树协议一样得到广泛的支持。
  
  三、第三代生成树MISTP和MSTP
  
  MISTP和MSTP一般情况下网络的拓扑结构不会频繁变化,所以PVST/PVST+的上述缺点并不会很致命,但是端口需要中继大量VLAN的这种需求还是存在的。所以Cisco又推出了新的生成树协议:多实例生成树协议(Multi-Instance Spanning Tree Protocol,MISTP)。
  在这个协议中引入了“实例”这个概念,相对与PVST/PVST+而言每一个VLAN对应一个生成树,而在多实例生成树协议中是每个实例对应一个生成树。一个实例中可以包含多个VLAN,不过一个VLAN不能对应到多个实例中去。在使用的时候可以把多个相同拓扑结构的VLAN映射到一个实例里,这些VLAN在端口上转发状态将取决于对应实例在MISTP里的状态。
  多实例生成树协议带来的好处是显而易见的,它既有PVST对VLAN的认知能力和负载均衡能力,又拥有可以和单生成树协议相媲美的低CPU占用率。不过极差的兼容性阻碍了多实例生成树协议的大范围应用,而且它是一个Cisco私有协议。
  多生成树协议(Multiple Spanning Tree Protocol,MSTP)是美国电气电子工程师学会在802.1s中定义的一种新型生成树协议,这个协议目前仍然在制定过程中。多生成树协议设计巧妙的地方在于把支持多生成树协议的交换机和不支持多生成树协议的交换机划分成不同的区域,分别称作多生成树(Multiple Spanning Tree,MST)域和单生成树(Single Spanning Tree,SST)域在多生成树域内部运行多实例化的生成树在多生成树域的边缘运行快速生成树协议兼容其他协议。
  
  四、生成树协议在未来的发展
  
  任何技术的发展都不会因为某项理想技术的出现而停滞,生成树协议的发展历程本身就说明了这一点。随着应用的深入各种二层隧道技术不断涌现,在这种新形势下生成树协议该往何处走?不过可喜的是各家厂商已经开始了这方面的探索,虽然现在还没有一个统一的意见,但是可以预见,将来一段时间内生成树协议仍然会在网络中发挥重要的作用。
  注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。


转载注明来源:https://www.xzbu.com/3/view-1501961.htm