STP/RSTP/MSTP(生成树协议)

发布时间 2023-04-16 15:55:46作者: 爱吃青椒不爱吃西红柿

STP(生成树协议)是运行在交换机上的二层破环协议,环路会导致广播风暴、MAC地址表震荡等后果,STP的主要目的就是防止二层网络中环路的产生。

一、STP工作原理
选举三要素:(桥ID、端口ID、开销)
桥ID=优先级(值越小优先级越大越优,默认为32768)+MAC(值越小越优)
端口ID=端口优先级(默认128,范围0-255,越小越优)+端口编号(应该是越小越优)
开销cost=此桥或此端口到根桥的路径开销,带宽越大开销值越小(越小越优)

根桥选举过程:
按顺序进行比较(优先级>MAC)越小越优
a. 先比较BID中的优先级,具有最小优先级的交换机定为根桥。
b. 如果优先级一样,再比较BID中的MAC地址,MAC地址最小的确定为跟桥。

根端口选举过程:
按顺序进行比较(到根桥的路径开销>对端交换机的BID>对端的端PID>本段的PID)越小越优
a. 非根桥交换机上,到根桥的根路径开销最小的端口,即为该非根交换机的根端口
b. 如果根路径开销相同,则比较对端交换机的BID,越小越优
c. 如果对端交换机的BID相同,则比较对端的PID,越小越优
d. 如果对端的PID相同,则比较本端的PID,越小越优。

指定端口选举过程:
按顺序进行比较(到根桥的路径开销>交换机的BID>交换机的PID)越小越优
a. 在各个链路上,到根桥的根路径开销最小的端口,即为指定端口
b. 如果根路径开销相同,则比较两端交换机的BID,越小越优
c. 如果对端交换机的BID相同,则比较两端交换机的PID,越小越优

阻塞端口:
最后,其余既不是根端口也不是指定端口的都是阻塞端口。

注意:
a.根交换机上所有端口都是指定端口
b.每条链路只有一个指定端口

二、STP的端口状态
(1)Disabled:禁用状态。    端口既不处理和转发BPDU报文;也不转发用户流量。端口会在这种状态下停留10秒钟时间。
(2)Blocking:阻塞状态。     端口仅仅能接收并处理BPDU,不能转发BPDU;也不能转发用户流量。默认端口会在这种状态下停留20秒钟时间。
(3)Listening:侦听状态。    端口可以接收和转发BPDU报文;但不能转发用户流量。默认该端口会在这种状态下停留15秒钟的时间。
(4)Learning:学习状态。    端口可根据收到的用户流量构建MAC地址表,但不转发用户流量。默认端口会在这种状态下停留15秒钟时间。
(5)Forwarding:转发状态。端口既可转发用户流量也可收发BPDU报文,只有根端口或指定端口才能进入Forwarding状态。默认端口会在这种状态下停留15秒钟时间。

禁用状态:不收发任何报文
阻塞状态:不接收或转发数据,接收但不发送BPDU,不进行地址学习
监听状态:不接收或转发数据,接收并发送BPDU, 不进行地址学习
学习状态:不接收或转发数据,接收并发送BPDU, 开始地址学习
转发状态:接收或转发数据, 接收并发送BPDU, 开始地址学习

三、STP的时间参数

(1)Hello Time(hello时间):发送BPDU的时间间隔,默认为2秒,当拓扑稳定后,只有在根桥上修改才有效。TCN BPDU的发送不受此定时器管理。
(2)Forward Delay Time(转发延迟):指一个端口处于Listening和Learning状态的各自持续时间,默认是15秒。即Listening状态持续15秒,随后Learning状态再持续15秒。
(3)Max Age(最大生存时间):端口的BPDU报文老化时间,可在根桥上修改,默认是20秒。

四、STP的两种报文类型(配置BPDU由指定接口发送,TCN BPDU由根端口发送)

(1)配置BPDU:在收敛过程中,每台交换机都从自己激活了STP的接口向外发送配置BPDU。收敛完成后,只有根桥才会周期性的发送配置BPDU(缺省周期为2s),非根桥在自己的根接口上收到上游的配置BPDU后,立即被触发产生自己的配置BPDU,然后从指定接口上发送出去。常所说的BPDU报文就是指配置BPDU。
(2)TCN BPDU: TCN BPDU用于在网络拓扑发生变化时向根桥通知变化的发生。当网络拓扑发生变化时,远离变化点的交换机无法直接感知变化的发生,其MAC地址表项也就无法快速刷新。通过TCN BPDU可以解决这个问题。

RSTP

STP的四种保护机制

(1)BPDU保护
当边缘接口收到BPDU后,该接口立即变成一个普通RSTP接口,这个过程可能引发网络中RSTP重新计算,从而对网络产生影响。通过在交换机上激活BPDU保护功能可解决该问题。激活该功能后,如果边缘接口收到BPDU,则交换机立即把接口关闭,同时触发告警。

(2)根保护
由于错误配置或恶意攻击,网路中根桥可能会收到优先级更高的BPDU报文,从而导致拓扑变化,导致RSTP重新计算。部署根保护功能可保证根桥的稳定性。在根桥的指定接口上激活根保护功能后,该接口如果收到更优的BPDU,则会忽略这些BPDU,并且将该接口切换到丢弃状态,如果接口不再收到更优的BPDU,则过一段时间后(通常为两倍的转发延迟时间),接口会自动恢复到转发状态。注意,根保护功能只有在指定接口上激活才有效。

(3)环路保护
当由于网络拥塞,导致下游交换机收不到上游交换机的配置BPDU,在规定时间内,下游交换机没有收到,则会开启闭塞端口,选定端口角色,可能会导致临时环路。配置环路保护后,如果在规定周期内,没有收到上游交换机的BPDU则会闭塞上游端口。

(4)拓扑变更保护
如果网络中存在攻击者恶意发送TCN BPDU,将导致交换机频繁清除MAC地址表,就会导致网络不稳定,交换机性能收到极大影响。交换机激活拓扑变更保护后,将在单位时间(缺省2s)内只进行一定次数的TC BPDU处理,对超出部分,则必须等待一段时间后进行处理。

1.端口角色的重新划分(3+2-1) 

新增了两种角色:都是用来做备份的,本质上也是被阻塞的。去掉了阻塞端口。
(1)根端口
(2)指定端口
(3)backup 备份端口 :Backup端口作为指定端口的备份,提供了另外一条从根桥到非根桥的备份链路。
(4)alternate 预备端口 :Alternate端口作为根端口的备份端口,提供了从指定桥到根桥的另一条备份路径。

2.端口状态的重新划分

状态由5种缩减为三种
Discarding (丢弃状态):不转发流量,也不学习MAC地址
Learning (学习状态):不转发流量,但是学习MAC地址
Forwarding(转发状态):既转发流量,也学习MAC地址

P/A机制:其目的是使一个指定端口尽快进入Forwarding状态,从而加速生成树收敛,它是一种握手机制。

(1)SW1和SW2立即通过各自的接口发送BPDU,开始都认为自己是根桥
(2)经过BPDU交互后,选举出根桥、根端口、指定端口,接口停止发送BPDU,都进入丢弃状态。
(3)接下来P/A机制发生。SW1的0/0/1接口处于丢弃状态,故SW1从0/0/1发送P置位的BPDU。
(4)SW2收到P置位的BPDU后,会立即启动一个同步机制。将所有非边缘端口全部阻塞,然后答复SW1他这里不存在环路。(已经处于丢弃状态的接口缺省已完成同步,而边缘接口不参与该过程,除此之外,交换机处于转发状态的指定接口需要切换到丢弃状态以便完成同步)
(5)SW2立即将根接口0/0/2切换到转发状态,并向SW1发送A置位的BPDU。
(6)SW1收到P置位的BPDU后,立即将0/0/1切换到转发状态,此时PC1和PC2便可实现通信。
(7)由于SW2的指定接口0/0/4仍处于丢弃状态,因此他会继续向下游交换机发起一个P/A过程,以此类推。

边缘端口的特点:

1.边缘端口一般与用户终端设备直接相连
2.边缘端口不参与RSTP运算,但会往外发送BPDU
3.边缘端口的启动或关闭不会出发拓扑变化
4.P/A机制中,边缘端口不阻塞,可持续进行流量转发
5.边缘端口在端口UP之后立即进入转发状态;不需等待2倍的转发延时就可转发流量
6.一旦边缘端口收到配置BPDU,就丧失了边缘端口的属性,成为普通的STP端口,并重新进行生成树计算,从而引起网络动荡

MMSTP(多生成树协议)

STP/RSTP的缺陷:所有VLAN共享一颗生成树,阻塞链路被完全浪费,无法实现不同VLAN在多链路上负载分担
MSTP的优点:基于实例计算出多颗生成树,实例间实现负载分担。

IST(内部生成树):每个MST域独立计算的内部生成树实例
CST(公共生成树):把每个MST域当做一台交换机组成的单生成树
CIST(公共内部生成树):CST+IST
CIST域根:每个IST的根网桥
CIST总根:整个CIST的根网桥
Master端口:CST的根端口。(单域MSTP中不存在Master端口,多域中,根域不存在该端口,其他域只有一个该端口)

交换机在同一个域的必要条件:

(1)域名一致
(2)修订级别一致
(3)实例和VLAN的映射关系一致