一、基础知识点
1.RSTP端口状态
丢弃(也就是802.1D中的禁用、阻塞、侦听的合并)
学习
转发
2.端口角色:
根端口:收到最优的BPDU的接口就是根端口。这是距离Root最近的(cost最小)的接口。
指定端口:在每一个segment上选择一个指定端口,该端口将发送这个segment上最优的BPDU。
替代端口:丢弃状态。本交换机除了根端口外,其他到根路径的端口,如果活跃的根端口发生故障,替代端口将成为根端口,所以替代端口可以理解为根端口的可替代者
备份端口:丢弃状态。指定端口的备份,出现在一台交换机有两个端口连接到同一个共享介质时。
禁用端口
STP与RSTP的端口对比:
二、BPDU格式和操作
1.802.1W BPDU格式
RSTP只在802.1D基础上对BPDU做了少量修改:
在802.1D中,TYPE字段只使用了最高位和最低位,来表示TC和TC确认,RSTP对该字段进行的扩展:
RSTP BPDU的协议是2,版本是2。
2.BPDU操作
在802.1D中,非根交换机只有从根端口收到根桥发送的BPDU,自己才能产生BPDU。而在RSTP中,即使非根交换机没有从根交换机处收到BPDU,其自己也以“hello间隔”为周期(默认2S)发送BPDU。
3.Faster Aging of Information
在特定的接口,如果连续三个周期没有收到BPDU(或者max-age超时),接口上的STP协议数据将迅速老化,如此一来,BPDU又有点类似交换机之间的keep-alive机制。这种快速老化的机制有助于对拓扑变化的快速响应。
4.Accepts Inferior BPDUs
这个机制与CISCO的BackboneFast特性非常类似。
当交换机从其他指定交换机或根桥收到次优BPDU,802.1D遇到这种情况是首先忽略这些次优BPDU,而RSTP是立即接受这些次优BPDU同时回传一个更优的BPDU。
看上图,初始情况下,C的一个接口被选举为非指定端口被Block,B会从指定端口发送BPDU给C。我们先考虑一下802.1D的情况,当Root及B之间的链路故障了,由于C上连接B的接口被BLOCK,它不发送BPDU给B,因此,B此刻认为自己是Root,于是向C发送自己为Root的BPDU。而由于这个时候C的接口上还存储着之前B发给自己的BPDU,而这个BPDU相比与B后来发送给自己的BPDU更优,因此C直接忽略这些次优BPDU,一直到Max-Age超时,C的接口上存储的此前B发过来的BPDU才会老化,这时候接口进入LST,才开始发送BPDU,指示根为Root。而此刻B才接受事实,将自己连接C的接口置为根端口。
那么对于RSTP情况就不一样了,C在收到次优BPDU后,将立即回送自己的BPDU,好让B了解拓扑情况。
三、Rapid Transition to Forwarding State
RSTP的一个重要的改进是端口的快速过渡。传统的STP算法在将一个接口过渡到forwarding状态之前,需要经历几个计时器。为了获得网络的快速 收敛,我们可能会去调整计时器,然而这种方式有可能影响网络的稳定性。RSTP的设计,使得我们不用依赖调整计时器,并且可以使得接口可以安全的过渡到转 发状态。为了实现接口上的快速收敛,RSTP引入了一些新的概念:
1.边缘端口 edge ports
RSTP定义的这种端口类型与Portfast十分类似。因为这些接口用于连接主机,所以一般不会产生环路。这些端口可以跳过LST或LRN直接过渡到转发状态。并且当这些接口up down的时候不会引起拓扑变更。
另外,边缘端口一旦收到BPDU,则立即丢失边缘端口的特征,变成一个普通的spanning-tree接口。
在catalyst交换机上,可以用portfast关键字来进行手工配置。
2.链路类型 Link types
RSTP能够在边缘端口及point2piont链路上快速过渡。RSTP的链路类型是通过接口的双工状态自动获取的,如果接口是半双工,那么链路类型就是shared port,如果是全双工,那么就是point2point。
当然,接口的链路类型可以通过命令修改,接口模式下:spanning-tree link-type ?
3.802.1D与RSTP 的收敛对比
802.1D的情形:
1.A及Root之间新增链路Link1
2.A及Root在Link1两端的接口都进入Listening状态,A将收到Root发出来的BPDU
3.A将BPDU从自己的指定端口发送出去,BPDU被泛洪到网络中
4.B和C收到这个更优的BPDU,继续向网络中泛洪
5.数秒后,D收到这个BPDU,Block掉端口P1
由 于缺乏feedback机制,A连接Root的接口从Listening到Forwarding,需要经历15*2s的延迟。此时A、B、C下联的用户流 量就出现问题了(因为D在收到更优的BPDU后,将P1口block了,这时候ABC相当于在A的根端口过渡到forwarding之前都处于网络的”隔 离地带”)
RSTP的情形:
4.Proposal/Agreement Sequence
对于802.1D来说,当一个端口被选举为指定接口,它从blocking到forwarding至少需要30S的时间。然而在RSTP中,proposal/Agreement机制使得接口能够在几秒内完成迅速、可靠的过渡。
小结:
proposal agreement的机制是非常快速的,因为它们不用受限于任何计时器,这个握手机制会迅速的蔓延到整个交换网络末梢,并且能在拓扑发生变更的时候迅速收敛。
如果一个designated discarding接口在发出proposal后,没有收到agreement,它将慢慢的过渡到forwarding状态,这个过程是传统的802.1D的 listening-learning-forwarding过程。这种情况有可能发生在对端交换机不理解RSTP BPDUs或者对端交换机的端口被block的情况。
四、拓扑变更机制
1.拓扑变更机制(检测)
在RSTP中,只有当非边缘端口过渡到forwarding状态才会触发拓扑变更。也就是说,一个端口如果丢失了连接,则不再认为是一次拓扑变更,这与802.1D是有区别的。
当一个RSTP交换机检测到一次拓扑变更它将:
为根端口及所有的非边缘指定端口启动一个TC while timer,timer的值等于2倍的hello-time计时器
向上述端口泛洪MAC表
注意主要TC while timer在端口上计时,端口发送出去的BPDU就会进行TC bit置位,该BPDU也会从根端口往外发送
2.拓扑变更机制(传递)
当一台RSTP交换机收到TC bit置位的BPDU,它将:
a)清除从所有接口学习到的MAC表项,除了收到TC BPDU的那个接口。这个动作虽然有可能导致网络中存在短暂的突发性泛洪,但是也有利于刷新CAM表、清除stale表项。
b)激活TC while timer,然后从所有的非边缘指定端口及根端口往外发送TC置位的BPDU。通过这种方式,拓扑变更信息会迅速在网络中泛洪。
通过这种方式,TC消息会被迅速的泛洪到整个网络。而不用像802.1D哪样,把消息传递到root,再由root来同时拓扑变更。
cisco原文链接:http://www.cisco.com/en/US/tech/tk389/tk621/technologies_white_paper09186a0080094cfa.shtml