一. 生成树相关的几个概念STP/RSTP/MSTP

STP:IEEE Std 802.1D-1998定义,不能快速迁移。即使是在点对点链路或边缘端口,也必须等待2倍的forward delay的时间延迟,网络才能收敛。


RSTP:IEEE Std 802.1w定义,可以快速收敛,却存在以下缺陷:
局域网内所有网桥共享一棵生成树,不能按vlan阻塞冗余链路。


MSTP 可以弥补这样缺陷,它允许不同 vlan 的流量沿各自的路径分发,从而为冗余链路提供了更好的
负载分担机制。

MSTP:Multiple Spanning Tree Protocol 多生成树协议
在规范 IEEE Std 802.1s 中第 13 节描述。 MSTP 算法通过应用 MSTP STP RSTP 的桥任意互连的桥接网络,为分配给任一个特定 VLAN 的帧提供了简单而完备的连通性。 MSTP 允许不同 VLAN 的数据从各自的路径分发。各条路径建立在由 LAN MST 桥组成的 MST 域中的各个独立的多生成树实例的基础上。

二.生成树相关的负载分担 STP/RSTP/MSTP

 

1STPSpanning-Tree Protocol

STP协议生来就是为了冗余而存在的,单纯树型的网络无法提供足够的可靠性,由此我们引入了额外的链路,这才出现了环路这样的问题。但单纯是标准的802.1D STP协议并不能实现真正的冗余与负载分担。

 

STPIEEE 802.1D标准,它内部只有一棵STP tree,因此必然有一条链路要被blocking,不会转发数据,只有另外一条链路出现问题时,这条被blocking的链路才会接替之前链路所承担的职责,做数据的转发。无论怎样,总会有一条链路处于不被使用的状态,冗余是有了,但是负载分担是不可想象的。

 

ciscoSTP做了改进,它使得每个VLAN都运行一棵stp tree,这样第一条链路可以为vlan 1 2 3服务,对vlan 4 5 6 blocking,第二条链路可以为vlan 4 5 6 forwarding,对vlan 1 2 3关闭,无形中实现了链路的冗余,负载分担。这种技术被称之为PVST+

 

随着网络的发展,人们发现传统的STP协议无法满足主备快速切换的需求,因为STP协议将端口定义了5种状态,分别为:blocking listening learning forwarding disabling,想要从blocking切换至forwarding状态,必需要经过50秒的周期,这50秒我们只能被动地去等待。20秒的blocking状态下,如果没有检测到邻居发来的BPDU包,则进入listening,这时要做的是选举Root BridgeDesignate PortRoot Port15秒后,进入learninglearning状态下可以学习MAC地址,为最后的forwarding做准备,同样是15秒,最后到达转发状态。这样的延时在现代网络环境下是让人极为难以忍受的。

 

2RSTP802.1w的出现解决了延时的问题,它的收敛速度很快,当然CISCO也针对这种技术推出了自已的RPVST+技术。RSTPSTP基础上额外定义了两种port role(注意这里的概念,端口角色),分别是alternatebackup。另外重新规定了port state(端口状态),分别为discardingLearningForwarding.

 

STP的一大失败之处在于混淆了port roleport state两种概念,在RSTP上,这样的问题不再存在了,port stateport role无关了。alternate port责任是为另一台交换机上的链路作备份,而backup port是为本交换机上的端口作备。

 

RSTP最重要的变化在于对BPDUtype字段的利用上,之前STP只使用了其中的两个位

 

 7

 6

 5

 4

 3

 2

 1

 0

TC

Proposal

Port-

role

learning

forwarding

Agreement

TCA

 

另外6个位中实现了很多的功能,包括不再需要去等待50秒的时间完成主备切换,直接利用proposalagreement协商即可,这样大大缩短了收敛时间。

 

RSTP还定义了两个新的概念:edge portlink type,如果是edge port,表明下面接的只能是主机,环路的存在是不可能的,所以我们可以直接将其从discarding切换到forwarding状态,类似于STP中的port fast技术。而link type定义了这条链路是point-to-point的还是shared。如果有pt-pt环境下,我们就可以做快速的切换了

 

3MSTP802.1s

STPRSTP都采用了一棵STP tree,负载分担不可实现,而CISCOPVST+RPVST+采用了每个VLAN一棵生成树,虽然实现了负载分担,但是会占用非常多的CPU时间。这也正是MSTP802.1s)产生的原因

 

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

 

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

 

MSTP是基于RSTP的,没有RSTPMSTP是无法运行的。

 

另:

PVST+  RPVST+ 模式下:交换机可支持128STP instance

MSTP模式下:交换机可支持65MST instance,当然每个实例中的VLAN数目是无限的。