RSTP
什么是生成树?
在二层环境中,有选择性的将冗余链路阻塞,形成树状拓扑,避免环路,同时冗余备份
生成树的选举?
先看一遍 生成树STP
(1)根桥(ROOT):比较Router ID【优先级,MAC地址】越小越好
(2)根端口(Root port,RP):因为Router ID已经确定了,往下比,先比较cost值【越小越优先】,再比较Bridge ID【优先级+MAC地址】,然后在比较Port ID【优先级(128)+接口号】,哪一个参数能比较出来就停止
(3)指定端口(designed port,DP):因为Router ID已经确定了,往下比,先比较cost值【越小越优先】,再比较Bridge ID【优先级+MAC地址】,然后在比较Port ID【优先级(128)+接口号】,哪一个参数能比较出来就停止
(4)阻塞端口(A/termate port,NDP):这种情况只会出现在两个SW用两条线互相连起来
因为Router ID已经确定了,往下比,先比较cost值【越小越优先】,再比较Bridge ID【优先级+MAC地址】,然后在比较Port ID【优先级(128)+接口号】,哪一个参数能比较出来就停止
STP的不足?
1.收敛很慢,一般30s-50s,才能恢复连通性
2.端口角色偏少,如根端口DOWN掉后,需要从其他端口中重新选举根端口,没有对应的备份接口
3.端口状态复杂,增加了使用难度
BPDU包都比较的方式那些?
- Route ID
- 优先级(默认32768),4096的倍数,越小越优先
- MAC地址,越小越优先
- 一开始Router IP=bridge ID(每个交换机都以为自己是根桥,都会在Router ID信息中填入自己的优先级与MAC地址),如下图
- RPC(cost)
- 到根桥的距离,默认BPDU从根桥出发cost值为0,只算BPDU包的入接口的cost值
- 通过Cost值选举其它生成树的角色,下面这个图,意思表达与bridge IP和Port id比较相同
- briged ID
- 优先级(默认32768),4096的倍数,越小越优先
- MAC地址,越小越优先
- Port ID
- 优先级(128)+端口号
RSTP的改进
1.端口角色改进
- 预备端口AP:根端口的备份,RP的预备端口
如果RP口down掉,此接口成为RP并立即进入转发状态(一般秒级内即可完成)
- 备份端口BP:DP口的备份,DP口的备份端口
这个BP端口产生需要条件,如上图,一个设备选两个DP口才会有BP接口的出现,如果RP口down掉,此接口成为DP并立即进入转发状态(一般秒级内即可完成)
- 边缘端口:交换机下接终端设备【提高生成树的收敛速度】
为什么需要边缘端口?
就是SW1和PC机相连接的端口如果不设置成边缘端口,此端口也会参见到RSTP角色选举的内容里,没有达到快速转发的状态
端口状态(只有三种)
- discarding
- learnging
- forwarding
2.PA机制改进
两台设备进行握手
SW1首先发送P位置的BPDU报文给SW2,期望成为DP口,SW2设备首收到SW1P位置的BPDU报文,先进行同步阻塞其他接口【这里注意,发P位置BPDU报文的SW1可以向多个接口同时发送,而发A位置BPDU报文的SW2设备只能先阻塞到其他接口才能发送】,回复A位置的BPDU报文,SW1收到这个A位置的BPDU立马接口进入Fowarding
- Proposal(提议想成为的角色)/Agreement(回复请求)机制,其目的是使一个指定端口尽快进入Forwarding状态
- 指定端口通过与相连的网桥进行一次握手,快速进入转发状态
- P/A机制要求两台交换设备之间的链路必须是点对点的全双工模式
- RSTP选举原理和STP本质上是一致的,选根桥-选非根桥上的根端口-选预备端口和备份端口
- RSTP在选举的过程中加入了P/A机(Proposal/Agreement发起请求-回复请求),确认机制不再需要等待Forward Delay时间保证无环,协商一般秒级,就是discarding可以之间到forwarding状态
在STP BPDU的flags字段里用到了(8bit)
网络拓扑变更
TCA(第7bit)
TC(第0bit)
RSTP BPDU的flags字段
Port Role :就是想成为的角色
Agreement:就是同意的话就设为1
这个包可以看出是,A位置的BPDU的回复包
RSTP角色选举的过程
当剩下SW2与SW3协商选举DP的时候,两边都会发送P位置的BPDU包
3.拓扑变更优化
STP拓扑变更
STP当网络拓扑发生变化时,下游交换机不断发送TCN BPDU报文给上游交换机,上游设备接收到TCN BPDU报文后发送TCN报文,表示确认,下游停止发送TCN。直到根交换机收到TCN BPDU报文向全网发送TC BPDU,收到TC BPDU的交换机如果MAC老化时间大于15s,将MAC地址表老化时间设置为15s,华为收到TC BPDU报文删除旧的mac地址表重新学习MAC地址。
TCN BPDU报文:用来向上游设备乃至根桥通知拓扑变化。上游设备指定接口处理此报文
TCA:是上游设备用来告知下游设备已经知道拓扑变化
TC:标记的配置BPDU报文主要是上游设备用来告知下游设备拓扑发生变化,请下游设备删除MAC地址表,重新学习
RSTP拓扑变更做的优化
当拓扑发生变更,变更点都可以发送TC报文,收到TC报文MAC地址清空。STP是Root才发TC报文
4.BPDU处理变化
STP:根桥Hello timer(2s)发送BPDU报文,其他非根设备进行转发,收敛慢
RSTP:根桥和非根桥都可以主动发送BPDU,周期为Hello timer(2s)
STP:一个端口10倍Hello timer时间(Max Age=20s)没有收到BPDU报文,认为down了
RSTP:一个端口3倍Hello timer时间(6s)没有收到BPDU报文,认为邻居down
BPDU保护机制
BPDU保护原理:配置BPDU保护功能后,如果边缘端口收到BPDU报文,边缘端口将会立即关闭,从而有效防止网络震荡。
缺省情况下,交换设备的BPDU保护功能处于禁止状态
1.配置边缘端口
//当接口配置为边缘端口,不接收BPDU,不参与选举角色,实现快速转发
[SW3]int e0/0/3
[SW3-Ethernet0/0/3]stp edged-port enable
配置边缘端口保护,PC机向边缘端口发送BPDU报文,接口直接down掉
[SW3]stp bpdu-protection
如果配置BPDU保护以后被接口因为发送BPDU被down,想要恢复
//手动恢复,到接口下
undo shutdown
//自动恢复,30s恢复
error-down auto-recpvery cause bpdu-protection interval 30
BPDU Filter【更好】
应用场景:
对于运行生成树协议的网络,当通过命令stp edged-port enable将当前端口配置成边缘端口,该端口便不再参与生成树计算,从而帮助加快网络拓扑的收敛时间以及加强网络的锤稳定性。可是端口仍然会发送BPDU报文,这可能导致BPDU报文发送到其它网络,引起其它网络产生震荡。
通过在该端口上配置命令stp bpdu-filter enable 便可解决此问题。在网络边缘设备上配置该命令,使边缘端口不处理,不发送BPDU报文,该端口即为BPDU filter端口。
接口下配置:
接口下启用BPDU Filter特性(不一定需要边缘端口就是edged-port),这个接口只会接受BPDU报文, 不做任何处理,不发送
//BPDU保护和BPDU Filter可以同时配置,但是一起的时候只有BPDU filter生效
[SW3]int g0/0/3
[SW3-GigabitEthernet0/0/3]stp bpdu-filter enable
[SW3-GigabitEthernet0/0/3]dis this
#
interface GigabitEthernet0/0/3
stp bpdu-filter enable
stp edged-port enable
#
return
全局配置:没什么用
全局启用BPDU Filter特性,只作用于 edged port的接口。如果此接口不在DBPU 边缘接口的状态,那么BPDU Filter的特性也会被禁止,接口生成生成树的计算
[SW3]stp bpdu-filter default
根桥保护
一开始都不配,要接入交换机了,把被接入交换机的那个接口配置根桥保护
TC-BPDU泛洪保护
交换设备在接受到TC BPDU报文后,会执行MAC地址表项和ARP表项的删除操作。如果有人伪造TC BPDU报文恶意攻击交换设备时,交换设备短时间内会收到很多TC BPDU报文,频繁的删除操作会给设备造成很大的负担,给网络的稳定性带来很大隐患。
启用防tc-bpud攻击后,如果在单位时间内,设备只会处理阀值指定的次数。对于其他超出阀值的TC BPDU报文,定时器到期后设备只对其统一处理一次。这样可以避免频繁的删除MAC地址表项和ARP表项,从而达到保护设备的目的
//默认2s处理一个TC-BPDU报文
sys
//开启对TC-BPDU报文保护功能
stp tc-protection
//处理TC-BPDU的时间间隔,默认2s
stp tc-protection interval X
//单位时间内处理TP-BPDU的阀值,默认1个
stp tc-proterction threshold X
比如有100个BPDU报文需要处理,设置了时间间隔为2s,阀值为2个,那么剩下的98个BPDU是2s过后,统一处理一次
配置RSTP
[SW1]stp mode rstp [SW1]stp bpdu-protection [SW2]stp mode rstp [SW1]stp bpdu-protection [SW3]stp mode rstp [SW1]stp bpdu-protection
现在SW3是root,修改SW1为root
//想要那个设备成为root,就修改优先级为0或4096的倍数 [SW1]stp priority ? INTEGER<0-61440> Bridge priority, in steps of 4096 [SW1]stp priority 0
配置指定AP接口
//想要让哪个端口成为AP口,就去那个端口下操作,默认cost2W,越小越优先 [SW3]int g0/0/2 [SW3-GigabitEthernet0/0/2]stp cost 60000

评论