Chinaunix首页 | 论坛 | 博客
  • 博客访问: 244364
  • 博文数量: 91
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 1100
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-15 14:35
文章分类

全部博文(91)

文章存档

2008年(91)

我的朋友

分类: 系统运维

2008-03-28 16:30:10

生成树协议的演进(STP RSTP MSTP的发展方向)

1STP介绍

生成树协议是一种二层管理协议,它通过有选择性地阻塞网络冗余链路来达到消除网络二层环路的目的,同时具备链路的备份功能。

 

在网络发展初期,透明网桥是一个不得不提的重要角色。它比只会放大和广播信号的集线器聪明得多。它会悄悄把发向它的数据帧的源MAC地址和端口号记录下来,下次碰到这个目的MAC地址的报文就只从记录中的端口号发送出去,除非目的MAC地址没有记录在案或者目的MAC地址本身就是多播地址才会向所有端口发送。通过透明网桥,不同的局域网之间可以实现互通,网络可 *作的范围得以扩大,而且由于透明网桥具备MAC地址学习功能而不会像Hub那样造成网络报文冲撞泛滥。

但是透明网桥并不能像路由器那样知道报文可以经过多少次转发,一旦网络存在环路就会造成报文在环路内不断循环和增生,甚至造成恐怖的广播风暴

 在这种大环境下,扮演着救世主角色的STPSpanning Tree Protocol)协议来到人间,其中以IEEE802.1D版本最为流行。

 

生成树经过一段时间(默认值是30秒左右)稳定之后,所有端口要么进入转发状态,要么进入阻塞状态。STP BPDU仍然会定时从各个网桥的指定端口发出,以维护链路的状态。如果网络拓扑发生变化,生成树就会重新计算,端口状态也会随之改变。

STP协议给透明网桥带来了新生。但是,随着应用的深入和网络技术的发展,它的缺点在应用中也被暴露了出来。STP协议的缺陷主要表现在收敛速度上。

 

  

当拓扑发生变化,新的配置消息要经过一定的时延才能传播到整个网络,这个时延称为Forward Delay协议默认值是15秒。

 

在所有网桥收到这个变化的消息之前,若旧拓扑结构中处于转发的端口还没有发现自己应该在新的拓扑中停止转发,则可能存在临时环路。也就是网络复杂化后,网络拓扑的变化也很多,所以对收敛的速度要求很高,如果向老式的STP这样,在新的信息中要求转发端口停止转发,换成另外一个端口,但是因为延迟自己不知道,所以就存在2个转发端口,而造成临时的环路。

 

为了解决临时环路的问题,生成树使用了一种定时器策略,即在端口从阻塞状态到转发状态中间加上一个只学习MAC地址但不参与转发的中间状态,两次状态切换的时间长度都是Forward Delay,这样就可以保证在拓扑变化的时候,新增的那个端口不会马上成为转发端口,也就不会产生临时环路。但是,这个看似良好的解决方案实际上带来的却是至少两倍Forward Delay的收敛时间!

 

2RSTP介绍

 

了解决STP协议的这个缺陷,在世纪之初IEEE推出了802.1w标准,作为对802.1D标准的补充。在IEEE 802.1w标准里定义了快速生成树协议RSTPRapid Spanning Tree Protocol)。RSTP协议在STP协议基础上做了三点重要改进,使得收敛速度快得多(最快1秒以内)。

2.1第一点改进:端口类型方面

为根端口和指定端口设置了快速切换用的替换端口(Alternate Port)和备份端口(Backup Port)两种角色。这两个端口前提都是Blocking port端口类型。另外的端口类型还有root port;designed port

当根端口/指定端口失效的情况下,替换端口/备份端口就会无时延地进入转发状态。图2中所有网桥都运行RSTP协议,SW1是根桥,假设SW2的端口1是根端口,端口2将能够识别这种拓扑结构,成为根端口的替换端口,进入阻塞状态。当端口1所在链路失效的情况下,端口2就能够立即进入转发状态,无需等待两倍Forward Delay时间。

 

注意:替换端口:是到root的备份路径。也就是root port失效的时候,才替换。

     备份端口:是网络的冗余端口。

2.2第二点改进:端口状态减少。

  只有3中类型:丢弃,学习和转发。

 

2.3第三点改进:从收敛方面(convergence

   不同的端口类型有不同收敛。按照端口类型分类:

1>edge port:

        直接与终端相连而不是把其他网桥相连的端口定义为边缘端口(Edge Port)。边缘端口可以直接进入转发状态,不需要任何延时。如:portfast

可以立即进入转发状态。

2> root port:

       用法alternative port备份立即进入转发状态。

3>point-to-point port:    

在只连接了两个交换端口的点对点链路中,指定端口只需与下游网桥进行一次握手就可以无时延地进入转发状态。他采用与邻居握手决定Port状态,来回交换proposalagreement.

 

包括不再需要去等待50秒的时间完成主备切换,直接利用proposalagreement协商即可,这样大大缩短了收敛时间。

 

如果是连接了三个以上网桥的共享链路,下游网桥是不会响应上游指定端口发出的握手请求的,只能等待两倍Forward Delay时间进入转发状态。

 

 

2.4RSTP缺陷

主要表现在三个方面。

第一点缺陷:由于整个交换网络只有一棵生成树,在网络规模比较大的时候会导致较长的收敛时间,拓扑改变的影响面也较大。

 

第二点缺陷:近些年IEEE 802.1Q大行其道,逐渐成为交换机的标准协议。在网络结构对称的情况下,单生成树也没什么大碍。但是,在网络结构不对称的时候,单生成树就会影响网络的连通性。

假设SW1是根桥,实线链路是VLAN 10,虚线链路是802.1QTrunk链路,TrunkVLAN 10VLAN 20。当SW2Trunk端口被阻塞的时候,显然SW1SW2之间VLAN 20的通路就被切断了

 

第三点缺陷:

当链路被阻塞后将不承载任何流量,造成了带宽的极大浪费,这在环行城域网的情况下比较明显

 

假设SW1是根桥,SW4的一个端口被阻塞。在这种情况下,SW2SW4之间铺设的光纤将不承载任何流量,所有SW2SW4之间的业务流量都将经过SW1SW3转发,增加了其他几条链路的负担。

这些缺陷都是单生成树SST无法克服的,于是支持VLAN的多生成树协议出现了。

 

3PVST/PVST+的出现

每个VLAN都生成一棵树是一种比较直接,而且最简单的解决方法。它能够保证每一个VLAN都不存在环路。但是由于种种原因,以这种方式工作的生成树协议并没有形成标准,而是各个厂商各有一套,尤其是以Cisco VLAN生成树PVSTPer VLAN Spanning Tree)为代表。

 

 

 

第一点缺陷:由于每个VLAN都需要生成一棵树,PVST BPDU的通信量将正比于TrunkVLAN个数。

第二点缺陷:在VLAN个数比较多的时候,维护多棵生成树的计算量和资源占用量将急剧增长。特别是当Trunk了很多VLAN的接口状态变化的时候,所有生成树的状态都要重新计算CPU将不堪重负。所以,Cisco交换机限制了VLAN的使用个数,同时不建议在一个端口上Trunk很多VLAN

第三点缺陷:由于协议的私有性,PVST/PVST+不能像STP/RSTP一样得到广泛的支持,不同厂家的设备并不能在这种模式下直接互通,只能通过一些变通的方式实现,例如FoundryIronSpanIronSpan默认情况下运行的是STP协议,当某个端口收到PVST BPDU时,该端口的生成树模式会自动切换成PVST/PVST+兼容模式。

一般情况下,网络的拓扑结构不会频繁变化,所以PVST/PVST+的这些缺点并不会很致命。但是,端口Trunk大量VLAN这种需求还是存在的。于是,CiscoPVST/PVST+又做了新的改进,推出了多实例化的MISTP协议。

 

4、第三代生成树协议:MISTP/MSTP

 

 

多实例生成树协议MISTPMulti-Instance Spanning Tree Protocol)定义了实例Instance)的概念。

简单的说,STP/RSTP是基于端口的,PVST/PVST+是基于VLAN的,而 MISTP就是基于实例的。所谓实例就是多个VLAN的一个集合,通过多个VLAN捆绑到一个实例中去的方法可以节省通信开销和资源占用率。

 

MSTP可以将多个VLAN的生成树映射为一个实例,即vlan map to a instance,我们不需要那么多的生成树,只需要按照冗余链路的条数来得出需要几棵生成树。

如果只有两条链路,并且有1-1000VLAN,我们可以将1-500定义为instance 1,将501-1000定义到instance 2。只生成两棵树12,同样实现了冗余与负载分担。

 

MSTP协议精妙的地方在于把支持MSTP的交换机和不支持MSTP交换机划分成不同的区域,分别称作MST域和SST域。在MST域内部运行多实例化的生成树,在MST域的边缘运行RSTP兼容的内部生成树ISTInternal Spanning Tree)。

阅读(1602) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~