Edge Port是Rapid STP中的一个新的端口类型,它的作用相当于Port Fast,但如果该端口收到了BPDU,则它将直接转换为普通端口。在Cisco设备中,边缘端口的实现还是通过Port Fast关键字。
Rapid STP还添加了链路属性这一概念,RSTP只能在点到点链路和边缘端口启用快速转发(直接进入Forward模式),RSTP根据端口类型将会自动设定链路属性,手工设定可以覆盖自动配置的设定。
- Shared——半双工模式自动配置
- Point to Point——全双工模式自动配置
快速生成树的端口状态只有三种:
- Forwarding
- 发送和接受用户数据
- Learning
- 建立MAC地址表
- Discarding
- 对应的是Listening、Blocking、Disabled三种状态
快速生成树新增了两种端口角色:
- Alternate
- 它提供了到达根交换机的备用路径,默认情况为Blocking(Discarding)。
- Backup
- 它提供了到达同一网段的备用路径,默认情况为Blocking(Discarding)。
在802.1D中,只有根交换机才能发送BPDU,通过其余的交换机向下中继,由于这样的形式,这就导致802.1D的收敛必须等待网络平稳后才能进行。
RSTP使用802.1D的BPDU格式来实现向后兼容,但是在消息类型(Message Type)字段中使用了一些未使用的位。BPDU中的Version字段也被设置为2,来区分802.1D BPDU和RSTP BPDU。RSTP使用交互式的过程,以便交换机协商状态的变化。
无论交换机有没有收到来自根交换机的BPDU,BPDU都会根据Hello Time的间隔(默认2秒钟)从所有端口发送BPDU。如果连续丢失3个BPDU时(6秒没有收到BPDU),则交换机就能够检测到邻居故障,相较于802.1D速度更快。
RSTP/RPVST+ Fast Converge传统的802.1D收敛速度慢主要是因为Timer多,时间长,才能安全地允许交换机端口转发数据。
当交换机参与树形拓扑时,RSTP使用不同的策略。当交换机首次加入拓扑或在现有拓扑中检测到故障时,RSTP要求它根据端口类型做出转发决策。
当交换机需要做出STP决策时,会与最近的邻居进行握手,如果握手成功,则将不断地向后进行握手直至抵达网络边缘。在握手过程中,交换机必须保障握手之前,不会引入循环。这通过同步过程来完成。
非边缘端口从Discarding状态开始。在交换机交换BPDU之后,就能够选举出根桥。
如果一个端口收到了更好的BPDU,则该端口成为根端口。对于每一个非边缘端口,交换机都会交换一个提议,即通过握手的方式来决定链路的每一端的状态。
每台交换机都假定自己的端口都应成为指定端口,并向邻居发送建议消息(Configuration BPDU)来建议这一事件。
-
如下图,假设根交换机与交换机A新建立了连接,此时两个交换机的端口都处于阻塞状态(Discarding),直到它们收到对方的BPDU。
- 当一个指定端口在Discarding或Learning状态时,它发出的BPDU中的Proposal位将会被置为1。
-
交换机A收到了更优的BPDU后会将P1调整为根端口。
-
交换机A开始同步,以确保交换机上的端口与最新收到的消息一致,如果满足以下条件其一,则端口处于同步状态:
- 端口处于阻塞状态,也就是在拓扑中为Discarding状态。
- 端口为边缘端口。
-
在下图中,P2与P4已经满足条件,交换机A只需要将P3的状态改为Blocking,并将其分配为Discarding角色。
-
那么现在交换机A的所有端口已处于同步状态,交换机A可以解除P1端口的Blocking状态,发送一条同意消息来回复根交换机。
- 这个消息是Proposal BPDU的副本,但修改了BPDU中Proposal Bit = 0 Agreement Bit = 1,这样能够让根交换机区分出它收到的Agreement对应于哪个Proposal。
-
一旦P0端口收到该消息,它就立刻将端口状态转换为转发状态。
-
此时P3仍处于Discarding状态,然后继续向外转发BPDU,向邻居开始建立握手(同步过程),并尝试快速切换到转发状态。
以上的这种机制是非常快的,因为它并不依赖任何计时器,这种握手方式以波的形式迅速地向网络边缘进行传播,并且能在拓扑发生变化时迅速恢复连通性。同时也能够兼容802.1D协议。
如果发送提议后没有收到回应,它会慢慢进入转发模式,并退回802.1D的生成树模式。如果对端交换机不使用RSTP,或者对端交换机端口处于Blocking状态,就可能发生以上的状况。
在RSTP中,只有端口转移到Forwarding状态的非边缘端口才会引起拓扑的变化。这与802.1D的生成树正好相反,端口进入到Blocking状态将不再被视为拓扑变化。当运行RSTP的交换机检测到拓扑更改时,会发生以下情况。
- 如有必要,它将启动TC While计时器,计时器的值约等于所有非边缘端口和到根端口的Hello Time的两倍。
- 只要该计时器在端口上运行,该端口发出的BPDU就会将TC bit置为1,在计数器为活动状态的时候,根端口也会发出BPDU。
- 收到该BPDU的交换机,会刷新所有和这些端口关联的MAC地址。
当交换机从邻居收到了TC bit置为1的BPDU时,会发生以下的情况。
- 它清除在其所有端口学习到的MAC地址,接受拓扑更改的端口除外。
- 它启动了TC While计时器,并在所有指定端口和根端口发送了TC bit 置为1的BPDU。(RSTP不再使用特定的TCN BPDU,除非需要通知802.1D的交换机。)
这样,TCN消息会很快充斥在整个网络中,而且只用到了一步过程。实际上,拓扑更改的发起者会在整个网络中传播此消息,而802.1D只有根交换机才会这样做。这种机制相较于802.1D快很多,无需根交换机,就可以将网络的拓扑更改状态保持在Max Age + Forward Delay秒。