rstp协议和stp协议对比_详解:快速生成树协议RSTP

RSTP对STP的改进

IEEE于2001年发布的802.1W标准定义了RSTP(Rapid Spanning-Tree Protocol,快速生成树协议),该协议基于STP协议,对原有的STP协议进行了更加细致的修改和补充。

STP的不足之处

STP协议虽然能够解决环路问题,但是由于网络拓扑收敛慢,影响了用户通信质量。如果网络中的拓扑结构频繁变化,网络也会随之频繁失去连通性,从而导致用户通信频繁中断,这是用户无法忍受的。

STP的不足之处如下:

  • 首先,STP没有细致区分端口状态和端口角色,不利于初学者学习及部署。网络协议的优劣往往取决于协议是否对各种情况加以细致区分。从用户角度来讲,Listening、Learning和Blocking状态并没有区别,都同样不转发用户流量。从使用和配置角度来讲,端口之间最本质的区别并不在于端口状态,而是在于端口扮演的角色。根端口和指定端口可以都处于Listening状态,也可能都处于Forwarding状态。
  • 其次,STP算法是被动的算法,依赖定时器等待的方式判断拓扑变化,收敛速度慢。
  • 最后,STP的算法要求在稳定的拓扑中,根桥主动发出配置BPDU(Bridge Protocol Data Unit)报文,而其他device进行转发,传遍整个STP网络。这也是导致拓扑收敛慢的主要原因之一。

RSTP对STP的改进

根据STP的不足,RSTP删除了3种端口状态,新增加了2种端口角色,并且把端口属性充分的按照状态和角色解耦,使得可以更加精确的描述端口,从而使得初学者更易学习协议,同时支持拓扑快速收敛。

  • 通过端口角色的增补,简化了生成树协议的理解及部署。
51f35b519e067b10e7ff68c82dbc838e.png
  • 如图1所示,RSTP的端口角色共有4种:根端口、指定端口、Alternate端口和Backup端口。根端口和指定端口的作用同STP协议中定义,Alternate端口和Backup端口的描述如下:从配置BPDU报文发送角度来看:Alternate端口就是由于学习到其它网桥发送的配置BPDU报文而阻塞的端口。Backup端口就是由于学习到自己发送的配置BPDU报文而阻塞的端口。从用户流量角度来看:Alternate端口提供了从指定桥到根的另一条可切换路径,作为根端口的备份端口。Backup端口作为指定端口的备份,提供了另一条从根桥到相应网段的备份通路。给一个RSTP域内所有端口分配角色的过程就是整个拓扑收敛的过程。
  • 端口状态的重新划分RSTP的状态规范把原来的5种状态缩减为3种。根据端口是否转发用户流量和学习MAC地址来划分:如果不转发用户流量也不学习MAC地址,那么端口状态就是Discarding状态。如果不转发用户流量但是学习MAC地址,那么端口状态就是Learning状态。如果既转发用户流量又学习MAC地址,那么端口状态就是Forwarding状态。如表1所示,新的端口状态与STP规定的端口状态比较。

说明:端口状态和端口角色是没有必然联系的,表1显示了各种端口角色能够具有的端口状态。

6c449f6fb6dda6e6a2edf9051051578d.png

配置BPDU格式的改变,充分利用了STP协议报文中的Flag字段,明确了端口角色。

在配置BPDU报文的格式上,除了保证和STP格式基本一致之外,RSTP作了一些小变化:

  • Type字段,配置BPDU类型不再是0而是2,所以运行STP的device收到RSTP的配置BPDU时会丢弃。
  • Flag字段,使用了原来保留的中间6位,这样改变的配置BPDU叫做RST(Rapid Spanning Tree) BPDU,如图2所示。
9c865efc855c9967f5c28d8a854408dd.png
  • 配置BPDU的处理发生变化拓扑稳定后,配置BPDU报文的发送方式拓扑稳定后,根桥按照Hello Timer规定的时间间隔发送配置BPDU。其他非根桥device在收到上游device发送过来的配置BPDU后,才会触发发出配置BPDU,此方式使得STP协议计算复杂且缓慢。RSTP对此进行了改进,即在拓扑稳定后,无论非根桥device是否接收到根桥传来的配置BPDU报文,非根桥device仍然按照Hello Timer规定的时间间隔发送配置BPDU,该行为完全由每台device自主进行。更短的BPDU超时计时如果一个端口连续3个Hello Time时间内没有收到上游device发送过来的配置BPDU,那么该device认为与此邻居之间的协商失败。而不像STP那样需要先等待一个Max Age。处理次等BPDU当一个端口收到上游的指定桥发来的RST BPDU报文时,该端口会将自身存储的RST BPDU与收到的RST BPDU进行比较。如果该端口存储的RST BPDU的优先级高于收到的RST BPDU,那么该端口会直接丢弃收到的RST BPDU,立即回应自身存储的RST BPDU。当上游device收到下游device回应的RST BPDU后,上游device会根据收到的RST BPDU报文中相应的字段立即更新自己存储的RST BPDU。由此,RSTP处理次等BPDU报文不再依赖于任何定时器通过超时解决拓扑收敛,从而加快了拓扑收敛。
  • 快速收敛Proposal/Agreement机制当一个端口被选举成为指定端口之后,在STP中,该端口至少要等待一个Forward Delay(Learning)时间才会迁移到Forwarding状态。而在RSTP中,此端口会先进入Discarding状态,再通过Proposal/Agreement机制快速进入Forwarding状态。这种机制必须在点到点全双工链路上使用。Proposal/Agreement机制简称P/A机制,详细描述请参见RSTP技术细节中的P/A协商。根端口快速切换机制如果网络中一个根端口失效,那么网络中最优的Alternate端口将成为根端口,进入Forwarding状态。因为通过这个Alternate端口连接的网段上必然有个指定端口可以通往根桥。这种产生新的根端口的过程会引发拓扑变化,详细描述请见RSTP技术细节中的RSTP拓扑变化处理。边缘端口的引入在RSTP里面,如果某一个指定端口位于整个网络的边缘,即不再与其他device连接,而是直接与终端设备直连,这种端口叫做边缘端口。边缘端口不接收处理配置BPDU,不参与RSTP运算,可以由Disable直接转到Forwarding状态,且不经历时延,就像在端口上将STP禁用。但是一旦边缘端口收到BPDU报文,就丧失了边缘端口属性,成为普通STP端口,并重新进行生成树计算,从而引起网络震荡。
  • 保护功能RSTP提供的保护功能如表2所示。
990229fa58373fd38626190763fdd825.png

RSTP技术细节

RSTP技术细节主要包括三方面:P/A机制、拓扑变化处理,以及与STP的互操作。

P/A机制

为了实现华为公司的数据通信设备与其他厂商的设备互通,需要根据其他厂商设备的P/A机制选择端口的快速迁移方式。

P/A机制即Proposal/Agreement机制,其目的是使一个指定端口尽快进入Forwarding状态。如图1所示,P/A协商过程的完成根据以下几个端口变量:

b1c6742b5ab7ff8e77361ed0754b3f74.png
  1. proposing:当一个指定端口处于Discarding或Learning状态时,该变量置位,并向下游交换设备传递Proposal位被置位的RST BPDU(Rapid Spanning Tree Bridge Protocol Data Unit)。
  2. proposed:当端口收到对端的指定端口发来的携带Proposal的RST BPDU时,该变量置位。该变量指示本网段上的指定端口希望尽快进入Forwarding状态。
  3. sync:当Proposed被置位以后,收到Proposal的根端口会依次为自己的其他端口置位sync变量。而收到Proposal的非边缘端口则会进入Discarding状态。
  4. synced:当端口转到Discarding状态后,会将自己的synced变量置位。Alternate端口、Backup端口和边缘端口会马上置位该变量。根端口监视其他端口的synced,当所有其他端口的synced全被置位,根端口会将自己的synced置位,然后传回RST BPDU,其中Agreement位被置位。
  5. agreed:当指定端口接收到一个RST BPDU时,如果该BPDU中的Agreement位被置位且端口角色字段是根端口,该变量被置位。Agreed变量一旦被置位,指定端口马上转入Forwarding状态。
8bf60209510488472facc2a2e0be4c10.png

如图2所示,根桥DeviceA和DeviceB之间新添加了一条链路。在当前状态下,DeviceB的另外几个端口p2是Alternate端口,p3是指定端口且处于Forwarding状态,p4是边缘端口。新链路连接成功后,P/A机制协商过程如下:

  1. p0和p1两个端口马上都先成为指定端口,发送RST BPDU。
  2. DeviceB的p1口收到更优的RST BPDU,马上意识到自己将成为根端口,而不是指定端口,停止发送RST BPDU。
  3. DeviceA的p0进入Discarding状态,于是发送的RST BPDU中把proposal置1。
  4. DeviceB收到根桥发送来的携带proposal的RST BPDU,开始将自己的所有端口进入sync变量置位。
  5. p2已经阻塞,状态不变;p4是边缘端口,不参与运算;所以只需要阻塞非边缘指定端口p3。
  6. p2、p3、p4都进入Discarding状态之后,各端口的synced变量置位,根端口p1的synced也置位,于是便向DeviceA返回Agreement位置位的回应RST BPDU。该RST BPDU携带和刚才根桥发过来的BPDU一样的信息,除了Agreement位置位之外(Proposal位清零)。
  7. 当DeviceA判断出这是对刚刚发出的Proposal的回应,于是端口p0马上进入Forwarding状态。

以上P/A过程可以向下游继续传递。

事实上对于STP,指定端口的选择可以很快完成,主要的速度瓶颈在于:为了避免环路,必须等待足够长的时间,使全网的端口状态全部确定,也就是说必须要等待至少一个Forward Delay所有端口才能进行转发。而RSTP(Rapid Spanning Tree Protocol)的主要目的就是消除这个瓶颈,通过阻塞自己的非根端口来保证不会出现环路。而使用P/A机制加快了上游端口转到Forwarding状态的速度。

P/A机制要求两台交换设备之间链路必须是点对点的全双工模式。一旦P/A协商不成功,指定端口进行转发就需要等待两个Forward Delay,等待时间与STP时间一样。

RSTP拓扑变化处理

在RSTP中检测拓扑是否发生变化只有一个标准:一个非边缘端口迁移到Forwarding状态。

一旦检测到拓扑发生变化,将进行如下处理:

  • 为本交换设备的所有非边缘指定端口启动一个TC While Timer,该计时器值是Hello Time的两倍。在这个时间内,清空状态发生变化的端口上学习到的MAC地址。同时,由这些端口向外发送RST BPDU,其中TC(Topology Change)置位。一旦TC While Timer超时,则停止发送RST BPDU。
  • 其他交换设备接收到RST BPDU后,清空所有端口学习到MAC地址,除了收到RST BPDU的端口。然后也为自己所有的非边缘指定端口和根端口启动TC While Timer,重复上述过程。

如此,网络中就会产生RST BPDU的泛洪。

RSTP与STP的互操作

RSTP可以和STP互操作,但是此时会丧失快速收敛等RSTP优势。

当一个网段里既有运行STP的交换设备又有运行RSTP的交换设备,STP交换设备会忽略RST BPDU,而运行RSTP的交换设备在某端口上接收到运行STP的交换设备发出的配置BPDU,在两个Hello Time时间之后,便把自己的端口转换到STP工作模式,发送配置BPDU。这样,就实现了互操作。

在华为公司的数据通信设备上,如果运行STP的交换设备被撤离网络,运行RSTP的交换设备可通过配置由STP工作模式迁移回到RSTP工作模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值