RSTP与STP的不一样html
增长端口角色:AP和BP网络
减小端口状态为Discardinglearningforwarding并发
充分利用BPDU中的Flag字段ide
对BPDU的处理方式发生了改变学习
提升收敛速度url
增长了保护功能spa
RSTP和STP消除环路的思想保持一致,RSTP具有了STP的全部功能,支持RSTP的网桥能够和支持STP的网桥一同运行。orm
RSTP的端口角色共有4种:根端口、指定端口、Alternate端口和Backup端口。htm
根端口和指定端口的做用同STP协议中定义,Alternate端口和Backup端口的描述以下:blog
从配置BPDU报文发送角度来看:
Alternate端口就是因为学习到其它网桥发送的更优配置BPDU报文而阻塞的端口。
Backup端口就是因为学习到本身发送的更优配置BPDU报文而阻塞的端口。
从用户流量角度来看:
Alternate端口提供了从指定桥到根的另外一条可切换路径,做为根端口的备份端口。
Backup端口做为指定端口的备份,提供了另外一条从根桥到相应网段的备份通路。
给一个RSTP域内全部端口分配角色的过程就是整个拓扑收敛的过程。
RSTP端口状态
Forwarding
Learning
discarding
STP端口状态 |
RSTP端口状态 |
发送配置BPDU |
MAC地址学习 |
转发数据 |
Disable |
Discarding |
否 |
否 |
否 |
Blocking |
Discarding |
否 |
否 |
否 |
Listening |
Discarding |
是 |
否 |
否 |
Learning |
Learning |
是 |
是 |
否 |
Forwarding |
Forwarding |
是 |
是 |
是 |
RSTP的状态规范把原来的5种状态缩减为3种。根据端口是否转发用户流量和学习MAC地址来划分:
若是不转发用户流量也不学习MAC地址,那么端口状态就是Discarding状态。
若是不转发用户流量可是学习MAC地址,那么端口状态就是Learning状态。
若是既转发用户流量又学习MAC地址,那么端口状态就是Forwarding状态。
RSTP计算过程:
端口在Discarding状态下完成端口角色的肯定:
当端口角色肯定为根端口和指定端口后,通过forwardingdelay后,端口进入Learning状态,处于Learning状态的端口其处理方式和STP相同,此期间端口开始学习MAC地址并在Forwardingdelay后进入Forwarding状态,开始转发数据。实际上,RSTP会经过其余方式加快这个过程。
当端口角色肯定为Alternate端口后,端口会维持在Discarding状态。
RSTP对STP的BPDU改动
充分利用STP中BPDU的Flag,明确端口角色
Type字段为2
Flag字段使用了以前的保留位,更改后的配置BPDU改名为RST BPDU
配置BPDU格式的改变,充分利用了STP协议报文中的Flag字段,明确了端口角色。在配置BPDU报文的格式上,除了保证和STP格式基本一致以外,RSTP做了一些小变化:
Type字段,配置BPDU类型再也不是0而是2,因此运行STP的设备收到RSTP的配置BPDU时会丢弃。
Flags字段,使用了原来保留的中间6位,这样改变的配置BPDU叫作RSTBPDU。
RSTP中BPDU的Flag字段解释:
第0位为TC标志位,和STP相同。
第1位为Proposal标志位,该位置位表示该BPDU为快速收敛机制中的Proposal报文。
第2位和第3位为端口角色标志位,00表示端口角色为未知;01表示端口角色为Alternate或Backup端口;10表示端口为根端口;11表示端口为指定端口。
第4位为Learning标志位,该位置位表示端口处于Learning状态。
第5位为Forwarding标志位,该位置位表示端口处于Forwarding状态。
第6位为Agreement标志位,该位置位表示该BPDU位快速收敛机制中的Agreement报文。
第7位为TCA标志位,和STP相同。
RSTP中配置BPUD的处理
非根桥设备每隔HelloTimer从指定端口主动发送配置BPDU
BPDU超时计时器为3个HelloTimer
阻塞端口能够当即对收到的次级BPDU进行回应
BPDU处理发生的变化
拓扑稳定后,配置BPDU报文的发送方式
拓扑稳定后,根桥按照HelloTimer规定的时间间隔发送配置BPDU。其余非根桥设备在收到上游设备发送过来的配置BPDU后,才会触发发出配置BPDU,此方式使得STP协议计算复杂且缓慢。RSTP对此进行了改进,即在拓扑稳定后,不管非根桥设备是否接收到根桥传来的配置BPDU报文,非根桥设备仍然按照HelloTimer规定的时间间隔发送配置BPDU,该行为彻底由每台设备自主进行。
更短的BPDU超时计时
若是一个端口连续3个HelloTime时间内没有收到上游设备发送过来的配置BPDU,那么该设备认为与此邻居之间的协商失败。而不像STP那样须要先等待一个MaxAge。
次级BPDU的处理
当一个端口收到上游的指定桥发来的RSTBPDU报文时,该端口会将自身存储的RSTBPDU与收到的RSTBPDU进行比较。若是该端口存储的RSTBPDU的优先级高于收到的RSTBPDU,那么该端口会直接丢弃收到的RSTBPDU,当即回应自身存储的RSTBPDU。当上游设备收到下游设备回应的RSTBPDU后,上游设备会根据收到的RSTBPDU报文中相应的字段当即更新本身存储的RSTBPDU。由此,RSTP处理次等BPDU报文再也不依赖于任何定时器经过超时解决拓扑收敛,从而加快了拓扑收敛。
STP收敛机制
在STP中,为了不环路,端口从使能到进入转发状态须要等待默认30秒的时间,只能依靠计时器被动的收敛。若是想要缩短计时器,会引发网络的不稳定性。
RSTP快速收敛机制
边缘端口机制
在RSTP里面,若是某一个指定端口位于整个网络的边缘,即再也不与其余交换设备链接,而是直接与终端设备直连,这种端口叫作边缘端口。边缘端口不接收处理配置BPDU,不参与RSTP运算,能够由Disable直接转到Forwarding状态,且不经历时延,就像在端口上将STP禁用。可是一旦边缘端口收到配置BPDU,就丧失了边缘端口属性,成为普通STP端口,并从新进行生成树计算,从而引发网络震荡。
根端口快速切换机制
若是网络中一个根端口失效,那么网络中最优的Alternate端口将成为根端口,进入Forwarding状态。由于经过这个Alternate端口链接的网段上必然有个指定端口能够通往根桥。
Proposal/Agreement机制
当一个端口被选举成为指定端口以后,在STP中,该端口至少要等待一个ForwardDelay(Learning)时间才会迁移到Forwarding状态。而在RSTP中,此端口会先进入Discarding状态,再经过Proposal/Agreement机制快速进入Forward状态。这种机制必须在点到点全双工链路上使用。
Proposal/Agreement机制简称P/A机制。
边缘端口机制
边缘端口链接的是终端,当网络拓扑发生变化时,边缘端口不会发生环路,因此边缘端口能够忽略两个ForwardingDelay,直接进入转发状态,无需任何延迟。
边缘端口不接收处理配置BPDU,不参与RSTP运算,能够由Disable直接转到Forwarding状态,且不经历时延,就像在端口上将STP禁用。可是一旦边缘端口收到配置BPDU,就丧失了边缘端口属性,成为普通STP端口,并从新进行生成树计算,从而引发网络震荡。
根端口快速切换机制
在RSTP中,Alternate端口为根端口的备份。当该网桥的根端口失效进入阻塞状态时,网桥会选择优先级最高的Alternate端口做为新的根端口,若是网桥对端设备指定端口依然为转发状态,则该网桥的新根端口直接进入Forwarding状态。
P/A机制
是指定端口快速进入转发状态
工做模式为点对点的全双工模式
包括Proposal和Agreement报文
P/A机制
Proposal/Agreement机制,其目的是使一个指定端口尽快进入Forwarding状态。
P/A机制要求两台交换设备之间链路必须是点对点的全双工模式。一旦P/A协商不成功,指定端口的选择就须要等待两个ForwardDelay,协商过程与STP同样。
新链路链接成功后,P/A机制协商过程以下
p0和p1两个端口立刻都先成为指定端口,发送RSTBPDU。
S2的p1口收到更优的RSTBPDU,立刻意识到本身将成为根端口,而不是指定端口,中止发送RSTBPDU。
S1的p0进入Discarding状态,因而发送的RSTBPDU中把proposal置1。
S2收到根桥发送来的携带proposal的RSTBPDU,开始将本身的全部端口进入sync变量置位。
p2已经阻塞,状态不变;p4是边缘端口,不参与运算;因此只须要阻塞非边缘指定端口p3。
p2、p3、p4都进入Discarding状态以后,各端口的synced变量置位,根端口p1的synced也置位,因而便向S1返回Agreement位置位的回应RSTBPDU。该RSTBPDU携带和刚才根桥发过来的BPDU同样的信息,除了Agreement位置位以外(Proposal位清零)。
当S1判断出这是对刚刚发出的Proposal的回应,因而端口p0立刻进入Forwarding状态。
P/A过程能够向下游继续传递
P/A过程能够向下游继续传递。
当S1和S2之间新增了一条链路后,P/A机制工做以下:
S1经过端口E1发送Proposal置位的RSTBPDU消息给S2。
S2收到该消息后,意识到E2为根端口,启用同步机制阻塞指定端口E1和E3以免产生环路,而后将根端口设置为转发状态,并向S1发送Agreement消息。
S1收到Agreement消息后,指定端口E1立刻进入转发状态。
S2处于同步状态的非边缘指定端口E1和E3发送Proposal报文。
S3收到S2发送的Proposal报文后,判断E1为根端口,启动同步过程,因为S3下游均为边缘端口,因此已经实现了同步,所以S3直接向S2回复Agreement消息。
S2收到S3发送的Agreement消息后,端口E1立刻进入转发状态。
S4的处理过程如S3。
S2收到S4发送的Agreement消息后,端口E3立刻进入转发状态。
P/A过程结束。
在RSTP中检测拓扑是否发生变化只有一个标准:一个非边缘端口迁移到Forwarding状态。
一旦检测到拓扑发生变化,将进行以下处理:
为本交换设备的全部非边缘指定端口启动一个TC WhileTimer,该计时器值是HelloTime的两倍。在这个时间内,清空状态发生变化的端口上学习到的MAC地址。同时,由这些端口向外发送RSTBPDU,其中TC置位。一旦TC WhileTimer超时,则中止发送RSTBPDU。
其余交换设备接收到RSTBPDU后,清空全部端口学习到MAC地址,除了收到RSTBPDU的端口。而后也为本身全部的非边缘指定端口和根端口启动TC WhileTimer,重复上述过程。
如此,网络中就会产生RSTBPDU的泛洪。
RSTP与STP互操做
RSTP端口在接收到STPBPDU的两个hellotimer后,会切换到STP工做模式
切换到STP协议的RSTP端口会丧失快速收敛等特性
当运行STP的设备从网络撤离后,原运行RSTP的交换设备可迁移回到RSTP工做模式
RSTP能够和STP互操做,可是此时会丧失快速收敛等RSTP优点。
当一个网段里既有运行STP的交换设备又有运行RSTP的交换设备,STP交换设备会忽略RST BPDU,而运行RSTP的交换设备在某端口上接收到运行STP的交换设备发出的配置BPDU,在两个Hello Time时间以后,便把本身的端口转换到STP工做模式,发送配置BPDU。这样,就实现了互操做。
在华为设备上能够配置运行STP的交换设备被撤离网络后,运行RSTP的交换设备可迁移回到RSTP工做模式。
选举根交换机
端口角色 |
描述 |
Root Port |
根端口,是所在交换机上离根交换机最近的端口,稳定时处于转发状态。 |
Designated Port |
指定端口,转发所链接的网段发往根交换机方向的数据和从交换机方向发往所链接的网段的数据,稳定时处于转发状态。 |
Backup Port |
备份端口,不处于转发状态,所属交换机为端口所连网段的指定交换机。 |
Alternate Port |
预备端口,不处于转发状态,所属交换机不是端口所连网段的指定交换机。 |
端口状态 |
描述 |
Discarding 丢弃状态 |
此状态下端口对接收到的数据作丢弃处理,端口不转发数据帧,不学习MAC地址表。 Alternate Port和Backup Port |
Learning 学习状态 |
此状态下端口不转发数据帧,可是学习MAC地址表,参与计算生成树,接收并发送BPDU。 |
Forwarding 转发状态 |
此状态下端口正常转发数据帧,学习MAC地址表,参与计算生成树,接收并发送BPDU。 |