标题：RSTP
基本原理
STP协议由IEEE802.1D定义，RSTP由IEEE802.1W定义。
STP的基本原理是，通过在交换机之间传递一种特殊的协议报文（在IEEE 802.1D中这种协议报文被称为“配置消息”）来确定网络的拓扑结构。配置消息中包含了足够的信息来保证交换机完成生成树计算。
生成树协议STP/RSTP[1]
技术原理
Rstp是从stp发展过来的，其实现基本思想一致，但它更进一步的处理了网络临时失去连通性的问题。Rstp规定在某些情况下，处于Blocking状态的端口不必经历2倍的Forward Delay时延而可以直接进入转发状态。如网络边缘端口（即直接与终端相连的端口），可以直接进入转发状态，不需要任何时延。或者是网桥旧的根端口已经进入Blocking状态，并且新的根端口所连接的对端网桥的指定端口仍处于Forwarding状态，那么新的根端口可以立即进入Forwarding状态。即使是非边缘的指定端口，也可以通过与相连的网桥进行一次握手，等待对端网桥的赞同报文而快速进入Forwarding状态。当然，这有可能导致进一步的握手，但握手次数会受到网络直径的限制。
功能介绍
生成树协议最主要的应用是为了避免局域网中的网络环回，解决成环以太网网络的“广播风暴”问题，从某种意义上说是一种网络保护技术，可以消除由于失误或者意外带来的循环连接。STP也提供了为网络提供备份连接的可能，可与SDH保护配合构成以太环网的双重保护。新型以太单板支持符合ITU-T 802.1d标准的生成树协议STP及802.1w规定的快速生成树协议RSTP，收敛速度可达到1s。
端口状态
802.1d交换机的端口在STP环境中共有5种状态：阻塞blocking、监听listening、学习learning、转发forwarding、关闭(disable)。
*Blocking：处于这个状态的端口不能够参与转发数据报文，但是可以接收配置消息，并交给CPU进行处理。 不过不能发送配置消息，也不进行地址学习。
*Listening：处于这个状态的端口也不参与数据转发，不进行地址学习；但是可以接收并发送配置消息。 
*Learning：处于这个状态的端口同样不能转发数据，但是开始地址学习，并可以接收、处理和发送配置消息。
*Forwarding：一旦端口进入该状态，就可以转发任何数据了，同时也进行地址学习和配置消息的接收、处理和发送。
交换机上一个原来被阻塞掉的端口由于在最大老化时间内没有收到BPDU，从阻塞状态转变为倾听状态，倾听状态经过一个转发延迟（15秒）到达学习状态，经过一个转发延迟时间的MAC地址学习过程后进入转发状态。
如果到达倾听状态后发现本端口在新的生成树中不应该由此端口转发数据则直接回到阻塞状态。
当拓扑发生变化，新的配置消息要经过一定的时延才能传播到整个网络，这个时延称为转发延迟（Forward Delay），协议默认值是15秒。
在所有网桥收到这个变化的消息之前，若旧拓扑结构中处于转发的端口还没有发现自己应该在新的拓扑中停止转发，则可能存在临时环路。为了解决临时环路的问题，生成树使用了一种定时器策略，即在端口从阻塞状态到转发状态中间加上一个只学习MAC地址但不参与转发的中间状态，两次状态切换的时间长度都是Forward Delay，这样就可以保证在拓扑变化的时候不会产生临时环路。　802.1wSTP定义了4种不同的端口状态，监听（Listening），学习（Learning），阻断（Blocking）和转发（Forwarding），其端口状态表现为在网络拓扑中端口状态混合（阻断或转发），在拓扑中的角色（根端口、指定端口等等）。在操作上看，阻断状态和监听状态没有区别，都是丢弃数据帧而且不学习MAC地址，在转发状态下，无法知道该端口是根端口还是指定端口。
在RSTP中只有三种端口状态，Discarding、Learning和Forwarding。802.1D中的禁止端口，监听端口，阻塞端口在802.1W中统一合并为禁止端口。
表8-20 STP和RSTP端口状态比较
STP 
Port State
RSTP
Port State
端口是否
为活跃状态
端口是否
学习MAC地址
禁止
禁止
No
No
阻塞
禁止
No
No
监听
禁止
Yes
No
学习
学习
Yes
Yes
转发
转发
Yes
Yes
表8-20
RSTP有五种端口类型。根端口和指定端口这两个角色在RSTP中被保留，阻断端口分成备份和替换端口角色。生成树算法（STA）使用BPDU来决定端口的角色，端口类型也是通过比较端口中保存的BPDUB来确定哪个比其他的更优先。
1）根端口
非根桥收到最优的BPDU配置信息的端口为根端口，即到根桥开销最小的端口，这点和STP一样。请注意图8-16上方的交换机，根桥没有根端口。
按照STP的选择根端口的原则，SW-1和SW-2和根连接的端口为根端口。
  
图8-16 RSTP根端口
2）指定端口
与STP一样，每个以太网网段段内必须有一个指定端口。假设SW-1的BID比SW-2 优先，而且SW-1的P1口端口ID比P2优先级高，那么P1为指定端口，如图8-17所示。 
  
图8-17 指定端口的选择
3）替换端口
如果一个端口收到另外一个网桥的更好的 BPDU，但不是最好的，那么这个端口成为替换端口，如图8-18所示。
对于SW-2来说，端口P3收到的BPDU比自己优先，自己为次优先，P3为替换端口。
4）备份端口
如果一个端口收到同一个网桥的更好 BPDU，那么这个端口成为备份端。当两个端口被一个点到点链路的一个环路连在一起时，或者当一个交换机有两个或多个到共享局域网段的连接时，一个备份端口才能存在。
如图8-19所示，SW-1的P1和P2口同时接入到以太网的同一网段，P1为指定端口，P2 优先级低，则P2端口为备份端口。 
  
图8-18 替换端口的选择
  
图8-19 备份端口的选择
5）禁用端口
在快速生成树协议应用的网络运行中不担当任何角色。
配置
步骤1：进入全局模式[1]
Switch#configure terminal
步骤2：开启生成树协议
Switch(config)#spanning-tree
默认状态下STP协议是关闭的，需要用命令打开
步骤3：配置生成树模式
Switch(config)#spanning-tree mode { mstp | rstp | stp }
P/A机制
P/A机制即Proposal/Agreement机制。其目的是使一个指定端口尽快进入Forwarding状态。其过程的完成根据以下几个端口变量：
A）Proposing。当一个指定端口处于Discarding或Learning状态的时候，该变量置位。并向下游交换传递Proposal位被置位的BPDU。
B）Proposed。当下游交设备端口收到对端的指定端口发来的携带Proposal的BPDU的时候。该变量置位。该变量指示上游网段的指定端口希望忙进入Forwarding状态。 
C）sync。当Proposed被设置以后，收到Proposal置位信息的根端口会依次为自己的其他端口置位sync变量。如果端口是非边缘的指定端口是则会进入Discarding状态。
D）synced。当其它端口完成转到Discarding后，会设置自己的synced变量（Alternate、Backup和边缘端口会马上设置该变量）。根端口监视其他端口的synced，当所有其他端口的synced全被设置，根端口会设置自己的synced，然后传回BPDU，其中Agreement位被置位。
E）agreed。当指定端口接收到一个BPDU时，如果该BPDU中的Agreement位被置位且端口角色定义是“根端口”，该变量被设置。Agreed变量一旦被置位，指定端口马上转入Forwarding状态。
改进：
A、STP没有明确区分端口状态与端口角色，收敛时主要依赖于端口状态的切换。RSTP比较明确的区分了端口状态与端口角色，且其收敛时更多的是依赖于端口角色的切换。
B、STP端口状态的切换必须被动的等待时间的超时。而RSTP端口状态的切换却是一种主动的协商。
C、STP中的非根网桥只能被动的中继BPDU。而RSTP中的非根网桥对BPDU的中继具有一定的主动性。