小何要努力

小何要努力

STP--->RSTP快速生成树讲解

15
2023-11-22

STP--->RSTP快速生成树讲解

STP的不足

问题:为什么STP协议收敛满,但是端口角色计算实际上十分迅速,端口角色选举过程非常快,但是为什么要等待30s?

监听(listening)状态15s:

这个状态为了防止临时环路,让BPDU有足够的时间传递到全网。防止STP收敛过程中新的阻塞端口还没有计算出来,而其他端口都已经处于了转发状态导致的临时环路

学习(learning)状态15s:

在STP收敛过程中存在MAC地址提前老化,为了避免大量位置的DMAC地址的单播帧被泛洪转发,所以设计一段MAC地址学习时间来避免临时环路和泛洪

STP被动的去等待计时器超时机制的收敛,收敛速度慢

引入快速生成树RSTP

RSTP快速的原因---P/A机制

P/A机制触发的前提

①DP的端口要处于discarding状态

②链路必须要为点对点的全双工模式

P/A机制的作用

P/A机制让链路在没有临时环路的情况下,快速的过渡到转发状态,而不用等待计时器的超时,加快的收敛速度

RSTP报文

P/A机制的工作原理

①当SW1和SW2启动RSTP时,都会认为自己是根桥,都会互相发送带有P置位的BPDU

②当SW2的g1口收到比自己更优的BPDU报文之后,会将自己的端口角色变为RP端口,而不是DP端口

③此时SW1交换机的g1口为DP端口,并进入到discarding,触发P/A机制,发送P置位信息

④SW2收到P置位信息后,进行同步变量(SW2会将下游所有的DP端口变为discarding状态。如果下游是AP端口或者边缘端口,则端口状态保持不变)

⑤SW2同步变量完成后,发送A=1的BPDU,之后就不再发bpdu报文。此时SW2的g1口已经确定为RP,并进入forwarding状态

⑥SW1收到之后,g1作为DP端口马上进入forwarding状态。

若有下游网段继续执行P/A协商,直到所有的网段协商完毕。

存在根桥的情况下:需要连接SW3和SW4的g2和g3口

此时root的DP向交换机发送bpdu报文,字段包含P=1,该交换机收到BPDU报文之后判断自己的端口角色。

①如果是RP则会将自己交换机上的所有接口阻塞掉,并回复BPDU报文中包含A=1字段。完成P/A协商之后,两个端口直接到转发forwarding状态。(下游的网段会继续协商P/A,直到所有的网段协商完毕)

②如果是AP则不会回复A=1字段,且对端的dp端口会等待2个forwarding时间才可以使得端口达到转发forwarding状态。

注意:在链路中,先启动的设备就先发送P置位(有根桥的链路就根桥发送P置位)

RSTP的端口角色

RP:根端口

DP:指定端口

AP:作为RP的备用端口,可以在RP端口故障时快速的切换。是收到了其他交换机发来的更好的bpdu

BP:作为DP的备用端口,是收到了自己发送的更好的BPDU

边缘端口的引入---边缘端口属于端口特性

边缘端口特点---在STP/RSTP/MSTP中都强烈建议配置边缘端口特性

①启用边缘端口特性的指定端口

②不参与STP计算,可以直接由Distable状态转为Forwarding状态

此时RP端口故障,该交换机会进行STP计算,会认为自己是根桥,但是边缘端口仍然是forwarding状态

③不过边缘端口依然会发送BPDU,在收到BPDU后会失去边缘端口特性,参与STP的计算

④一般连接终端的端口会设置为边缘端口

边缘端口为什么发送BPDU

1.边缘端口依然是指定端口

2.如果边缘端口下行网络产生环路,发送BPDU可以预防环路

配置STP接口不发送BPDU,可以在接口下开启STP过滤

华为设备配置:

int g 0/0/1

stp bpdu-filter enable 使能接口不发送STP报文

锐捷设备配置:

接口模式下启用(不接受不发送BPDU,相当于关闭接口的stp功能):

全局模式下启用(所有开启portfast的接口不接受也不发送BPDU,如果收到了bpdu,filter和portfast都失效):

RSTP端口状态

三种端口状态

Disabled         不学习MAC,不转发用户数据

Learning         学习MAC,不转发用户数据

Forwarding     学习MAC,转发用户数据

RSTP对故障处理的优化:

1、根端口直连链路故障的快速切换机制

2、收到次级BPDU的处理

①B交换机RP端口链路故障后,会认为自己是根桥,向C交换机发送带有proposal=1的bpdu报文,将C直连的端口变为DP

②C交换机收到次优的BPDU报文后,会马上向B发送本地最优的BPDU报文,同时将自己的AP端口变更位DP

③B交换机收到更优的BPDU之后,会重新定义端口角色,将该端口变更为根端口,然后发送带有A=1的bpdu报文给C,然后进入到转发状态

④C交换机收到A置位的BPDU报文之后,也马上会进入到转发状态

RSTP保护机制

为什么需要BPDU保护

因为边缘端口收到BPDU报文之后,会重新计算STP导致网络震荡(在边缘端口上配置,只对边缘端口生效)

 补充:如果用户希望被Shutdown的边缘端口可自动恢复,可配置端口自动恢复功能。

error-down auto-recovery cause bpdu-protection interval 时间

使能接口管理状态自动恢复为Up的功能,并设置接口自动恢复为Up的延时时间,使被Shutdown的端口经过延时时间后能够自动恢复。

为什么需要根保护

由于维护人员的错误配置或者网络中的恶意攻击,使得根桥收到优先级更高的BPDU,会使根桥失去root地位,从而引起网络拓扑接口错误变动

(只能在指定端口上配置)

 为什么需要环路保护

根端口和其他阻塞端口状态是依靠不断接收来自上游交换机的BPDU维持。

当由于链路拥塞或者单向链路故障导致这些端口收不到来自上游交换机的BPDU时,交换机会重新选择根端口。原先的根端口会转变为指定端口,而原先的阻塞端口会迁移到转发状态,从而造成交换网络中可能产生环路。

在启动了环路保护功能后,如果根端口或AP端口长时间收不到来自上游设备的BPDU报文时,则向网管发出通知信息(此时根端口会进入Discarding状态,角色切换为指定端口),而AP端口则会一直保持在阻塞状态(角色也会切换为指定端口),不转发报文,从而不会在网络中形成环路。直到该端口再次收到BPDU报文。

(交换机的根端口AP端口上进行配置)

为什么要TC保护

交换机收到TC报文后,会执行MAC地址表项的删除操作,如果有人伪造TC-BPDU报文恶意攻击交换机,导致频繁的删除MAC地址表项,给网络的稳定带来很大的隐患

(TC-BPDU保护缺省2s内可以处理3次TC报文)