RSTP
    1.RSTP概述:(Rapid Spanning Tree Protocol,RSTP)快速生成树,RSTP(IEEE 802.1w)是为了弥补STP(IEEE 802.1d)的缺陷而制定的.
    在网络拓扑中使用IEEE 802.1生成树协议来保证网络中没有环路,但是当网络拓扑发生变化时,通常至少需要30秒才能恢复网络,30秒的故障恢复时间是在当前的网络中是不能忍受的。为了解决这个问题,有了RSTP,RSTP采用了STP的基本概念,加快了收敛速度。
    1)RSTP端口角色
    RSTP协议中除规定了根端口、制定端口和阻塞端口外,又规定了两种端口类型,即替代端口和备用端口.
 
    替代端口:能够到达根网桥的替代路径,在非根网桥上,当根端口出现故障,替代端口将成为根端口。
    备用端口:能够提供网段冗余连接的备份端口,当指定端口出现故障,替代端口就会成为指定端口。
  
    2)RSTP端口状态
    RSTP协议只定义了三种端口状态:丢弃、学习、转发
    丢弃:此状态合并了IEEE 802.1d的禁用、阻塞和侦听状态,端口如果处于此状态将丢弃入站的帧,并且不学习MAC地址。
    学习:与IEEE 802.1d的学习状态相同,学习MAC地址但是丢弃入站的帧。
    转发:发送和接收数据帧,并且能够学习MAC地址。
  
    3)RSTP的收敛
    在RSTP的网络中,每台交换机主动维护网络拓扑,即所有的交换机所有端口都定期(hello时间)发送BPDU报文(STP网络中交换机只是中继根网桥的BPDU报文,所以STP网络中只有根网桥的BPDU报文)。入如果交换机连续3次没有收到邻接交换机的BPDU报文,则认为邻接交换机出现故障,默认的hello时间是2秒,所以RSTP发现故障的时间是6秒,STP的最大寿命是20秒。
    为了实现端口的快速转发,在RSTP中定义了两种新的变量
    边缘端口:边缘端口即在网络边缘,这种端口不会形成环路,所以这种端口可以立即进入转发状态。和STP中的速端口基本相同,当端口收到BPDU报文的时候,它就会失去边缘端口的状态,成为正常的生成树端口。命令如下:
    Switch(config-if)#spanning-tree portfast
   
    链路类型:Cisco交换机默认情况下,如果端口工作在全双工模式下,则认为其是点到点的链路(point-to-point);如果端口工作在半双工模式下则不是点到点的链路,而是认为其工作在共享介质上。
    点到点的链路通过和邻接交换机交换BPDU快速确定端口状态。例如:一台交换机提议将自身的端口变为指定的端口,如果对端的交换机同意,则它会是同相同的消息回复。当提议和回复消息完成后,就完成了指定端口的选择,而不需要经过STP的计时器的等待时间。但是有时候,由于某种原因导致交换机端口工作在半双工模式,这时可以通过命令将端口变为点到点的链路,命令如下:
    Switch(config-if)#spanning-tree link-type point-to-point
    RSTP通过对STP的改进,大幅度加快了收敛的速度。
   
    2.快速PVST+
    RSTP和STP一样都是一种底层技术,在启用MST或者RPVST+(快速PVST+)后才会使用RSTP。Cisco交换机默认运行PVST+,使用传统的8021.d生成树。如果需要将PVST+模式更改为RPVST+,可以通过如下命令实现:
    Switch(config)#spanning-tree mode rapid-pvst
    RPVST+和PVST+相同,为每一个VLAN生成一个单独的RSTP实例,可以通过show spanning-tree 查看RPVST+的状态。


   
    如上图所示:中断SW1和SW2直连的链路,如果是PVST+,则SW2将中断50秒左右。如果使用RPVST+,则SW2向SW3发送BPDU报文,认为自己的根网桥,在点到点的链路上通过和邻接交换机交换BPDU快速确定端口状态。当SW2收到次BPDU报文并同意后,F0/23端口成为新的根端口,SW3的F0/24成为指定端口,整个过程持续时间很短。
   


    MST(Multiple Spanning Tree Protocol,MST)多生成树
    1.MST概述  
    无论是PVST+还是RPVST+,都为每一个VLAN生成一个生成树,如果VLAN数量过多的话,将占用太多的交换机资源。
    IEEE 802.1s定义的多生成树 (MST或者MSTP)就是用于解决STP实例过多的问题。
    MST是对RSTP的扩展,所以MST有RSTP的快速特性,并且MST可以将一个或者多个VLAN映射到一个STP实例中,从而减少STP实例的数量。
    2.MST配置
    (1)启用MST模式
    Switch(config)#spanning-tree mode mst
    (2)进入MST配置模式,在交换机启动了MST模式后,要对MST配置需要进入到MST配置模式,命令如下:
    Switch(config)#spanning-tree mst configuration
    (3)配置MST区域名
    Switch(config-mst)#name name
    其中,name为配置MST的区域名,最多32个字符,一般网络中只是用一个MST区域名.
    (4)配置区域配置修订号
    Switch(config-mst)#revision version
    其中,version的范围是0-65535,在提交新的MST配置时,配置修订号不会自动增加,另外,交换机的区域配置必须相同(区域名/区域修订号等).
    (5)将VLAN映射到MST实例
    Switch(config-mst)#instance instance-id vlan vlan-list
    (6)设置MST实例的优先级
    Switch(config)#spanning-tree mst instance-id priority bridge-priority
    或者
    Switch(config)#spanning-tree mst instance-id root { primary | secondary }
    (7)查看mst生成树协议
    Switch#show spanning-tree
   
    3.MST配置实例
   
    如图:交换机之间都是100Mb/s链路,交换机为默认配置,要求实现VLAN的负载均衡。
   
    配置如下:
    (1)配置交换机之间的链路为trunk
    SW1(config-if-range)#switchport mode trunk
    SW2、SW3上一样配置
    (2)配置链路的负载均衡
    在配置负载均衡前,首先要在交换机上配置MST
    ###############
   
    由于IOS不支持MST,截不了图,手写命令吧
    SW1(config)#spanning-tree mode mst
    SW1(config)#spanning-tree mst configuration
    SW1(config-mst)#name aaa
    SW1(config-mst)#revision 10
    SW1(config-mst)#instance 1 vlan 1-2
    SW1(config-mst)#instance 2 vlan 3-4
    SW2/SW3上做一样的MST配置
    然后配置负载均衡
    SW1(config)#spanning-tree mst 1 priority 4096
    SW2(config)#spanning-tree mst 2 priority 4096

    然后使用show spanning-tree mst instance-id 查看生成树状态