STP不足之处:
网络拓扑收敛慢,影响了用户通信质量。如果网络中的拓扑结构频繁变化,网络也会随之频繁失去连通性,从而导致用户通信频繁中断。
导致STP收敛慢的原因:
1)、STP没有细致区分端口状态和端口角色,不利于初学者学习及部署,listening、learning和 Blocking 状态并没有区别,都同样不转发用户流量;
2)、STP 算法是被动的算法,依赖定时器等待的方式判断拓扑变化,收敛速度慢;
3)、在网络稳定时,只有根桥发送BPDU报文。
RSTP 对 STP 的改进:
1、通过端口角色的增补,简化了生成树协议的理解及部署;RSTP 的端口角色共有 4 种:根端口、指定端口、 Alternate 端口和 Backup 端口;
1)、从配置 BPDU 报文发送角度来看:
a、Alternate 端口就是由于学习到其它网桥发送的配置 BPDU 报文而阻塞的端口;
b、Backup 端口就是由于学习到自己发送的配置 BPDU 报文而阻塞的端口。
2)、从用户流量角度来看:
a、Alternate 端口提供了从指定桥到根的另一条可切换路径,作为根端口的备份端口;
b、Backup 端口作为指定端口的备份,提供了另一条从根桥到相应网段的备份通路。
2、端口状态的重新划分:
RSTP 的状态规范把原来的 5 种状态缩减为 3 种。根据端口是否转发用户流量和学习 MAC 地址来划分:
1)、discarding:不转发流量,不学习MAC地址;
2)、learning:不转发流量,学习MAC地址;
3)、forwarding:转发流量,学习MAC地址。
3、配置 BPDU 格式的改变,充分利用了 STP 协议报文中的 Flag 字段,明确了端口角色;
1)、Type 字段,配置 BPDU 类型不再是 0 而是 2,所以运行 STP 的设备收到 RSTP 的配置BPDU 时会丢弃;
2)、Flags 字段,使用了原来保留的中间 6 位,这样改变的配置 BPDU 叫做 RST BPDU,具体RSTP Flags字段格式如下:
? Bit7:TCA
? Bit6:Agreement
? Bit5:Forwarding
? Bit4:Learning
? Bit3和Bit2:端口角色
? 00:未知
? 01:根端口
? 10:Alternate / Backup
? 11:指定端口
? Bit1:Proposal
? Bit0:TC
4、配置 BPDU 的处理发生变化;
1)、发送BPDU:配置BPDU由根桥产生并且发送,非根桥在接收到根桥的配置BPDU后,才出发发送;RSTP每个设备都会按规定时间发送配置BPDU;
2)、BPDU超时:STP要等待Max age超时,RSTP只等待3个Hello time时间;
3)、处理次优BPDU:当一个端口收到上游的指定桥发来的 RST BPDU 报文时,该端口会将自身存储的 RST BPDU 与收到的 RST BPDU 进行比较。
如果该端口存储的 RST BPDU 的优先级高于收到的 RST BPDU,那么该端口会直接丢
弃收到的 RST BPDU,立即回应自身存储的 RST BPDU。当上游设备收到下游设备回应
的 RST BPDU 后,上游设备会根据收到的 RST BPDU 报文中相应的字段立即更新自己
存储的 RST BPDU。
由此, RSTP 处理次等 BPDU 报文不再依赖于任何定时器通过超时解决拓扑收敛,从而
加快了拓扑收敛
5、快速收敛;
1)、Proposal/Agreement 机制:
在点到点以太网链路上,指定端口可以和对端通过握手协商的方式进行快速迁移。双方设备必须满足如下状态机:
a. proposing. 指定端口处于discarding或learning状态的时候,会设置该变量。向下游交换机传递Proposal flag被置位的RST BPDU。
b. proposed. 当收到指定端口发来的proposal BPDU的时候,该变量设置。该变量指示本网段上的指定端口希望尽快的进入forwarding状态。
c. sync. 当proposed被设置以后,收到proposal的根端口会依次为自己的其他端口设置sync变量。将所有不是Edge port的指定端口转为discarding状态。
d. synced. 当端口完成转到discarding后, 会设置自己的synced。Alternate、Backup 和边缘端口会马上设置该变量。根端口监视其他端口的synced,当所有其他端口的synced全被设置,根端口会设置自己的synced,然后传回RST BPDU,其中Agreement flag被设置。
e. agreed. 当指定端口接收到一个RST BPDU的时候,如果该BPDU中的agreement flag被置位且端口角色字段是“根端口”,该变量被设置。当agreed被设置的时候,指定端口马上转入forwarding状态。
1.1)、触发Proposal/Agreement 机制的条件:
a、 设备之间链路必须是点对点的全双工模式,且端口类型为指定端口;
b、 新接入的设备发送更优的RST BPDU。
1.2)、P/A机制协商过程:
a、刚开始交换机都认为自己的端口为指定端口,只不过指定端口的状态是discarding。
b、进入discarding状态后就开始发送proposal置位的RST BPDU。
c、比较自己与收到的RST BPDU,如果本端的优,就丢弃对端发送过来的RST BPDU,并且继续发送本端的RST BPDU;如果对端的优,就停止发送RST BPDU,并进入下个步骤。
d、不优的交换机将自己所有接口阻塞(又称同步)(除已经阻塞接口,边缘端口)。
e、不优的交换机向优的一方发送agreement置位的RST BPDU,并将这个端口置于forwarding状态,角色为根端口。
f、RST BPDU优的一端收到agreement置位的RST BPDU后,就将这个端口置于forwarding状态,角色为指定端口。
1.3)、Proposal/Agreement 机制的目的是使一个指定端口尽快进入 Forwarding 状态。
2)、根端口快速切换机制:如果网络中一个根端口失效,那么网络中最优的 Alternate 端口将成为根端口,进入Forwarding 状态;
3)、边缘端口的引入:边缘端口不接收处理配置 BPDU,不参与 RSTP运算,可以由 Disable直接转到 Forwarding状态,一旦边缘端口收到配置 BPDU,就丧失了边缘端口属性,成为普通 STP 端口,并重新进行生成树计算,从而引起网络震荡。
6、保护功能;
1)、BPDU 保护:交换设备上启动了 BPDU 保护功能后,如果边缘端口收到RST BPDU,边缘端口将被error-down,但是边缘端口属性不变,同时通知网管系统。
2)、根保护:对于启用 Root 保护功能的指定端口,其端口角色只能保持为指定端口。一旦启用 Root 保护功能的指定端口收到优先级更高的 RST BPDU 时,端口状态将进入 Discarding 状态,不再转发报文。在经过一段时间(通常为两倍的 Forward Delay),如果端口一直没有再收到优先级较高的RST BPDU ,端口会自动恢复到正常的Forwarding 状态。(Root 保护功能只能在指定端口上配置生效)
3)、环路保护:在启动了环路保护 功能后,如果根端口 或Alternate 端口长时间收不到来自上游的 RST BPDU 时,则向网管发出通知信息(如果是根端口则进入 Discarding 状态)。而阻塞端口则会一直保持在阻塞状态,不转发报文,从而不会在网络中形成环路。直到根端口或 Alternate 端口收到 RST BPDU ,端口状态才恢复正常到Forwarding 状态。(环路保护功能只能在根端口或 Alternate 端口上配置生效)
4)、防TC-BPDU***:启用防 TC-BPDU 报文***功能后,在单位时间内,交换设备处理 TC BPDU 报文的次数可配置。如果在单位时间内,交换设备在收到 TC BPDU报文数量大于配置的阈值,那么设备只会处理阈值指定的次数。对于其他超出阈值的 TCN BPDU
报文,定时器到期后设备只对其统一处理一次。这样可以避免频繁的删除 MAC 地址表项和ARP 表项,从而达到保护设备的目的。
原文地址:http://blog.51cto.com/9480916/2337990