1.标准STP收敛

1.1 端口角色变迁

1RP放弃当前端口角色

①成为non-DP

此时直接进入Blocking状态,并不用等待

②成为DP

此时端口状态将保持forwarding,并不用等待

2DP放弃当前端口角色

RP放弃端口角色时相同

3non-DP决定成为RPDP

此时将从Blocking状态进入Listening,在2Forward Delay之后进入forwarding

1.2 收到Inferior BPDU

1DP收到Inferior BPDU

触发发送BPDU,同步下游设备

2RP收到Inferior BPDU

忽略

3non-DP收到Inferior BPDU

忽略

实际上,当RPnon-DP收到来自指定桥的InferiorBPDU时,是发生间接链路故障的信号,但标准STP对其置之不理(除非开启BackboneFast

可见:

标准STP收敛慢的根本原因在于

①端口状态转换是依赖计时器的

Blocking状态端口欲成为RPDP时需要等待收敛

③不能及时发现网络拓扑的变化(除非配置Cisco增强特性)


2.RSTP快速收敛

2.1 针对情况

RSTP针对STP中会造成缓慢收敛的地方进行了优化,而原本STP能够实现快速收敛的地方并未做改动

如上图所示,原先网络中SW1为根桥,如果此时修改优先级而导致SW3成为了新的根桥,则在RSTP中的收敛过程与STP中将完全一致

SW3成为根桥,fa0/2放弃RP角色,成为DP,端口状态维持forwarding

SW3发送BPDU,同步其它设备

SW2fa0/3收到superior BPDU,重新进行STP选举,fa0/3放弃DP成为RP,端口状态维持forwarding

fa0/1放弃RP,成为DP,端口状态维持forwarding

SW2向下游发送BPDU

SW1收到superior BPDU,重新进行STP选举,fa0/2放弃DP成为RP,端口状态维持forwarding

以上收敛在瞬间即可完成

2.2 限制

Link Type必须为point-to-point,否则将无法实现快速收敛特性

RSTP快速收敛(Cisco实现)_第1张图片

如果Link Typeshared,则在RSTP看来拓扑是类似于上图所示,超过2台参与RSTP的交换机接入在同一segment

由于RSTPproposal/agreement在设计时是针对两台设备间的,因此在BPDU中无法指明propose或者agree的对象,在多台设备接入时,将会导致混乱

2.3 实现机制

Proposal/AgreementSynchronization


3.RSTP端口变化概述

3.1 Discarding端口决定成为RP

1概述

STP中,阻塞端口欲成为RP,则需要经过至少30 s的收敛时间,而RSTP中,端口决定成为RP时,可以直接进入Forwarding状态

导致Discarding端口决定成为RP共有三种可能:

①本地通过修改相关参数导致RP改变

RP失效或发生直接链路故障

Discarding端口收到BPDU导致RP改变

2本地修改参数

此时,端口确定成为RP后,直接进入Forwarding状态,并且开启同步机制

3RP失效或发生直接链路故障

Altn Port成为RP,直接进入Forwarding状态,并且开启同步机制

4收到BPDU而导致RP改变

此时端口同样直接进入Forwarding状态,但是对于同步机制是否开启有如下判断

①如果该BPDU开启proposal bit,则本地在RP确定后开启同步机制

②如果BPDU未开启proposal bit,则本地不会开启同步机制

3.2 Discarding端口决定成为DP

RSTP中,为了加快收敛,引入了Proposal/Agreement机制,此时DP并不立即进入Forwarding状态,而是与邻居进行协商,协商通过则立即进入Forwarding

注意:

如果端口状态放弃RP而成为DP,此时发送的BPDU中不会开启proposal bit


4.Synchronization

4.1 为何需要同步机制

对于生成树而言,确定DP是防止环路产生的关键,同步机制通过阻塞所有期望成为DP的端口,防止网络拓扑发生改变时,可能导致的环路

4.2 何时进行同步

①收到BPDU with proposal而产生新的RP,且本地存在non-edge DP

②本地通过修改STP相关参数而导致RP发生改变,且存在non-edgeDP

RP收到BPDU with proposal,且同意该上游端口为DP

④发生间接链路故障时,Altn Port成为新的RP

注意:

如果收到的BPDU中未开启proposal,而由此产生了新的RP,此时是不会开启同步机制的

产生新的DP时(例如收到BPDU后,本地Altn Port被选举为DP)不会开启同步机制

DP收到BDPU withproposal,且同意的话,该端口状态将直接被置为Discarding,不会开启同步机制

4.3 如何进行同步

阻塞所有non-edge DP


5.Proposal/Agreement

5.1 如何体现

BPDUflags中,有2bits分别用于表示proposal以及agreement

5.2 何时开启proposal

Discarding状态端口决定成为DP,由此可见,发送BPDUwith proposal的端口期望能成为DP

5.3 接收设备如何处理

1Altn Port收到BPDU withproposal

①认同

无响应,Altn Port并不会发送BPDU with agreement

②不认同

a.Altn Portsegment中最优的,因此决定成为DP,发送BPDU with proposal

b.是一个来自指定桥的InferiorBPDU,发生间接链路故障

2RP收到BPDU withproposal

①认同

a.确定当前交换机上各个端口的角色

b.开启同步机制,阻塞所有non-edgeDP

c.确定各个端口的状态——此时如果是新产生RP,该RP将直接进入Forwarding

d.RP发送BPDU withagreement

e.所有non-edge DP向下游发送BPDU witch proposal

②不认同

a.是一个来自指定桥的InferiorBPDU,发生间接链路故障

注意:

Discarding端口如果期望成为RP,则将直接进入forwarding状态


6.Indirection Failure in RSTP

6.1 何时发生间接链路故障

STP开启BackboneFast时相同,当RPDiscarding端口收到Inferior BPDU时,说明出现了间接链路故障

6.2 故障处理

1RP收到Inferior BPDU

Inferior BPDU rcv on RP from DesignatedBridge

Indirection failure has happened                //the old local RP has lostconnection to RootBridge


if(there is AltnPort)

Best BPDU rcv on AltnPort          //local device can reach RootBridge from the AltnPort

AltnPort bdecomes the new RP

the elder RP will become DP       //此前的指定桥由于失去了到根桥的连接,此时反而成为了当前设备看来的下游设备,原RP变成DP,向其提供到根桥的连接

run synchronization


else if(there is no AltnPort)

elect new RootBridge                   //the local device has lostconnection to RootBridge

2Discarding端口收到InferiorBPDU

Discarding端口决定成为DP

then

②发送BPDU with proposal bit

注意:

不像RP收到Inferior BPDU那样还要等待Discarding端口收到Best BPDU,由于当前设备存在RP,此时认为到根桥的连接完好

3DP收到Inferior BPDU

相比于STP触发发送BPDURSTPDP收到Inferior BPDU时将会对其忽略


7.案例

7.1 出现新的DPRP

RSTP快速收敛(Cisco实现)_第2张图片

如图所示,所有STP相关参数(除了cost)均为默认值,System ID与设备编号一致,SW1System ID最小,各个端口cost10

因此,当生成树网络收敛完毕后,SW1成为根桥;SW2fa0/1RPfa0/3DPSW3fa0/1RPfa0/2Altn Portfa0/4DP……

1修改SW2桥优先级

此时如果增大SW2Bridge Priority,将导致在SW2SW3所在的segment内,SW2fa0/3变成Altn PortSW3fa0/2成为DP

①由于优先级值增大,SW2 BID依然劣于当前的Root ID,因此交换机角色并不会改变,端口状态同样不变

SW3收到SW2发送的BPDU,当前的Discarding端口决定成为DP,发送BPDU withproposal

注意:

此时SW3上并不会出现同步现象,即fa0/4并不会被阻塞

SW2收到BPDU witch proposal bit,由于该BPDU更优,因此DP将放弃该端口角色,而成为Altn Port,端口立即被阻塞,完成收敛

注意:

SW2fa0/3由于立即被阻塞,不会发送BPDU with agreement

SW3fa0/2在经过2Forward Delay之后,才完成收敛

2SW2将桥优先级改回默认值

SW2在修改优先级后,由于之前fa0/3是下游端口,保留有BestBPDU,此时可以直接通过比较发现SW2在该segment内更优,因此Discarding端口在收到SW3BPDU之前就已经决定成为DP,并且发送BPDU withproposal

SW3收到BPDU,由于该BPDU更优,因此本地直接将端口阻塞,收敛完毕(同样不会发送BPDU withagreement

SW2fa0/32Forward Delay之后,完成收敛

3SW2fa0/1cost修改为1

SW2SW3之间,SW2通告的BPDURoot Path Cost变小,但是由于SW2已经是指定桥了,因此端口角色、状态都不会变化

4SW3fa0/2cost修改为1

此时在SW3上产生了一条距离根桥更近的路径,fa0/2将成为RP,而fa0/1将变成Altn Port

SW3上,RP发生了改变,STP确定各个端口的角色,fa0/2RPfa0/1Altn Portfa0/3DP

SW3开启同步机制,fa0/3被阻塞

SW3确定各个端口的状态,fa0/2直接进入Forwardingfa0/1Blockingfa0/3由于期望成为DP,发送BPDU with proposal

SW4收到BPDU with proposal后,由于接收端口是RP,因此响应BPDU withagreement

SW3收到BPDU with agreement,确定DP端口状态为Forwarding

7.2 出现新根桥

RSTP快速收敛(Cisco实现)_第3张图片


如上图所示,当生成树拓扑发生改变时,STPRSTP的应对策略将有所不同:

SW4通过修改桥优先级,成为新的根桥

STP收敛步骤

RSTP收敛步骤

SW4

SW4BID参数优于当前RID,成为新的根桥

SW4所有端口将成为DP

因此fa0/2直接由RP转到DP

fa0/3Blocking转为Listening

SW4的所有端口在2xForward  Delay后达到稳定


SW3

SW3收到SW4BPDU,原先根桥被抑制

fa0/4成为新的RP,端口状态依然为forwarding

fa0/1以及fa0/2都有成为DP的潜力,因而

fa0/2进入listening状态

fa0/1RP变为DP,维持forwarding

fa0/2收到来自SW2BPDU,选举后,将fa0/2阻塞

fa0/1在选举中胜出,维持forwarding

SW3的所有端口在fa0/2被阻塞后达到稳定


SW2

①收到SW4BPDU,原先根桥被抑制

fa0/4成为新的RP,端口状态依然为forwarding

fa0/1以及fa0/3都有成为DP的潜力,因而

fa0/1RP变为DP,维持forwarding

fa0/3维持forwarding

SW2的所有端口在收到SW4BPDU后即可达到稳定


SW1

①收到来自上游的BPDU,根桥发生改变

②根据接收到的BPDUfa0/2DP转为RP,维持forwarding

fa0/3在选举中失败,被阻塞

SW1的所有端口在收到来自SW2SW3BPDU

并确定端口角色后达到稳定


整个STP网络在30 s后完成收敛

限制因素在于SW4fa0/3不得不从listening开始收敛

SW4

SW4BID参数优于当前RID,成为新的根桥

SW4所有端口将成为DP

fa0/2直接由RP转到DP

fa0/3由于之前处于discarding状态

fa0/3发送的BPDU中开启proposal bit

SW4的所有端口在fa0/3收到agreement后达到稳定


SW3

SW3fa0/4收到BPDU,原先根桥被抑制,

fa0/4成为新的RP,端口状态依然为forwarding

③开启同步机制,阻塞将成为DPfa0/1

fa0/2由于原本就处于discarding状态,因此维持阻塞

④同步完毕,从fa0/4发送BPDU,开启agreement bit

以上过程由于不受计时器限制,因此实际执行时速度很快

fa0/2以及fa0/1发送的BPDU中,开启proposal bit

⑥由于SW2没有开启同步机制,因此其DP无需agreement

SW2发给SW3BPDU中并不开启proposal

SW2由于收到superior  BPDU,将fa0/3阻塞

⑦由于SW1处发生了状况,此时SW3fa0/1一直收不到agreement

经过2xForward Delay后进入forwarding

SW3上的所有端口在fa0/1收敛完毕后达到稳定


SW2

①收到SW4BPDU,原先根桥被抑制

由于SW4fa0/2BPDU不带有proposal

同步机制不会被开启

SW2根据BPDUfa0/4成为新的RP,其它端口均为DP

fa0/1fa0/3维持forwarding状态

SW2的所有端口在收到SW4BPDU后即可达到稳定


SW1

SW1首先收到来自SW3BPDU

原先根桥被抑制

fa0/3将成为RP,由于BPDU中带有proposal bit

SW1开启同步机制

fa0/2被阻塞

fa0/2收到来自SW2BPDU,其中proposal bit没有开启

④由于fa0/2收到的BPDU更优,RP发生改变

fa0/3由于已经收到了来自SW3BPDU

此时该端口不再认为自己将成为DP

又由于proposal bit没有开启,因此fa0/3不会进行同步

fa0/3处于discarding状态,且不会向上游发送agreement

SW1的所有端口在收到来自SW2BPDU后达到稳定


整个STP网络在30 s后完成收敛

限制因素在于SW3fa0/1不得不等待2Forward Delay

可见:

RSTP的收敛速度并不总快于STP

本例中导致RSTP收敛需要30 s,主要是因为proposal/agreement机制与STP标准收敛同时进行