生成树协议

1.STP

工作原理

STP通过在交换机之间传递配置BPDU来选举根交换机 (或根桥),以及确定每个交换机端口的角色和状态。
在初始化过程中,每个交换机都主动发送配置BPDU。
在网络拓扑稳定以后,只有根桥周期性发送配置BPDU,其他交换机在收到上游传来的配置BPDU后,才会发送自己的配置BPDU。
配置BPDU包含了桥ID、路径开销和端口ID等参数。

stp计算(选举过程)

主要通过比较4个参数进行角色选举:
根桥ID、根路径开销、网桥ID和端口ID。
选举根桥 (Root Bridge)
在一个交换网络中选举一个根桥。
选举根端口 (Root Port)
在每个非根桥上选举一个根端口。
选举指定端口 (Designated Port)
为每个网段选举一个指定端口。
阻塞非指定端口
阻塞交换机上所有剩余的非根、非指定端口。

stp端口状态

未使能,阻塞,侦听,学习,转发
①端口初始化或者使能,进入Blocking状态。
②端口被选为根端口或者指定端口,进入Listening状态。
③端口的Forward Delay时间到,进入Learning状态;再经过一个Forward Delay,进入Forwarding状态。
④端口不再是根端口、指定端口,进入Blocking状态。
⑤端口被禁用或者链路失效。

STP的不足

STP没有细致区分端口状态和端口角色,不利于初学者学习及部署。
①从用户角度来讲,Listening、Learning和Blocking状态并没有区别,都同样不转发用户流量。
②从使用和配置角度来讲,端口之间最本质的区别并不在于端口状态,而是在于端口扮演的角色。
STP算法是被动的算法,依赖定时器等待的方式判断拓扑变化,收敛速度慢。
STP算法要求在稳定的拓扑中,根桥主动发出配置BPDU报文,而其他设备再进行处理,最终传遍整个STP网络。

STP重收敛过程

①直连故障:
两台交换机间有两条链路,其中一条是主用链路,另一条为备用链路。
当网络稳定时,交换机SW2检测到根端口的链路发生故障,则被阻塞的端口会开始端口状态迁移,最终进入用户流量转发状态。
直连链路故障,端口状态转换,延时30s后进入Forwarding状态。
②非直连故障:
当网络正常时,SW3的被阻塞端口会定期收到来自根桥的BPDU。
当SW1与SW2之间的链路发生故障时,SW2能够第一时间检测到故障发生,此时它认为自己成为新的根桥,于是向SW3发送自己的配置BPDU(根桥ID为自己的桥ID)。
SW3的被阻塞端口将收到上述配置BPDU,但该BPDU并不比当前端口所缓存的配置BPDU更优,因此SW3忽略该配置BPDU。
当Max Age计时器超时后,SW3端口上缓存的配置BPDU老化,SW3开始向SW2发送配置BPDU,该配置BPDU由根桥SW1发送的配置BPDU触发,其中的根桥ID字段值为SW1的桥ID。
SW2收到上述配置BPDU后,解析该报文并认定SW1为根桥,于是将其连接SW3的端口切换为根端口。
非直连故障会导致50s左右的恢复时间,等于Max Age加上2倍的Forward Delay时间。

2. RSTP

基本概念

IEEE 802.1W中定义的RSTP可以视为STP的改进版本,RSTP在许多方面对STP进行了优化,它的收敛速度更快,而且能够兼容STP。
RSTP对STP的改进:
①通过端口角色的增补,简化了生成树协议的理解及部署;
②端口状态的重新划分;
③配置BPDU格式的改变,充分利用了STP协议报文中的Flag字段,明确了端口角色;
④配置BPDU的处理发生变化;
⑤快速收敛;
⑥增加保护功能。

改进具体内容

①端口角色
1)替代端口(Alternate)
Alternate端口就是由于学习到其它网桥发送的配置BPDU报文而阻塞的端口,它提供了从指定桥到根的另一条可切换路径,作为根端口的备份端口。
在这里插入图片描述
2)备份端口(Backup)
Backup端口就是由于学习到自己发送的配置BPDU报文而阻塞的端口,它作为指定端口的备份,提供了另一条从根桥到相应网段的备份通路。在这里插入图片描述
②端口状态
RSTP的状态规范缩减为3种,根据端口是否转发用户流量和学习MAC地址来划分:
Discarding状态:不转发用户流量也不学习MAC地址;
Learning状态:不转发用户流量但是学习MAC地址;
Forwarding状:既转发用户流量又学习MAC地址。
③配置BPDU-RST BPDU
RSTP的配置BPDU充分利用了STP报文中的Flag字段,明确了端口角色。
除了保证和STP格式基本一致之外,RSTP作了如下变化:
Type字段:配置BPDU类型不再是0而是2,所以运行STP的设备收到RSTP的配置BPDU时会丢弃。
Flag字段:使用了原来保留的中间6位,这样改变的配置BPDU叫做RST BPDU。
④配置BPDU的处理
1)拓扑稳定后,配置BPDU报文的发送方式
RSTP对配置BPDU的发送方式进行了改进。
在拓扑稳定后,无论非根桥设备是否接收到根桥传来的配置BPDU报文,非根桥设备仍然按照Hello Time规定的时间间隔发送配置BPDU,该行为完全由每台设备自主进行。
2)更短的BPDU超时时间
如果一个端口在超时时间(即三个周期,超时时间=Hello Time×3)内没有收到上游设备发送过来的配置BPDU,那么该设备认为与此邻居之间的协商失败。
3)处理次优BPDU
当一个端口收到上游的指定桥发来的RST BPDU报文时,该端口会将自身缓存的RST BPDU与收到的RST BPDU进行比较。
如果该端口缓存的RST BPDU优于收到的RST BPDU,那么该端口会直接丢弃收到的RST BPDU,立即回应自身缓存的RST BPDU,从而加快收敛速度。
⑤快速收敛机制
1)根端口快速切换
如果网络中一个根端口失效,那么网络中最优的Alternate端口将成为根端口,进入Forwarding状态。因为通过这个Alternate端口连接的网段上必然有个指定端口可以通往根桥。
在这里插入图片描述
2)指定端口快速切换
如果网络中一指定端口失效,那么网络中最优的Backup端口将成为指定端口,进入Forwarding状态。因为Backup端口作为指定端口的备份,提供了另一条从根桥到相应网段的备份通路。在这里插入图片描述
3)边缘端口(Edge Port)
在RSTP里面,如果某一个端口位于整个网络的边缘,即不再与其他交换设备连接,而是直接与终端设备直连,这种端口可以设置为边缘端口。
边缘端口不参与RSTP计算,可以由Discarding直接进入Forwarding状态。
但是一旦边缘端口收到配置BPDU,就丧失了边缘端口属性,成为普通STP端口,并重新进行生成树计算,从而引起网络震荡。
在这里插入图片描述
4)Proposal/Agreement机制
简称P/A机制。
RSTP通过P/A机制加快了上游端口进入Forwarding状态的速度。
在RSTP中,当一个端口被选举成为指定端口之后,会先进入Discarding状态,再通过P/A机制快速进入Forwarding状态。
在STP中,该端口至少要等待一个Forward Delay(Learning)时间才会进入到Forwarding状态。在这里插入图片描述
⑥拓扑变更机制
在RSTP中检测拓扑是否发生变化只有一个标准:一个非边缘端口迁移到Forwarding状态。
一旦检测到拓扑发生变化,将进行如下处理:
为本交换设备的所有非边缘指定端口和根端口启动一个TC While Timer,该计时器值是Hello Time的两倍。在这个时间内,清空所有端口上学习到的MAC地址。
同时,由非边缘指定端口和根端口向外发送RST BPDU,其中TC置位。一旦TC While Timer超时,则停止发送RST BPDU。
其他交换设备接收到RST BPDU后,清空所有端口(除了收到RST BPDU的端口和边缘端口)学习到MAC地址,然后也为自己所有的非边缘指定端口和根端口启动TC While Timer,重复上述过程。
如此,网络中就会产生RST BPDU的泛洪。
⑦保护功能
1)BPDU保护
正常情况下,边缘端口不会收到RST BPDU。如果有人伪造RST BPDU恶意攻击交换设备,当边缘端口接收到RST BPDU时,交换设备会自动将边缘端口设置为非边缘端口,并重新进行生成树计算,从而引起网络震荡。
交换设备上启动了BPDU保护功能后,如果边缘端口收到RST BPDU,边缘端口将被error-down,但是边缘端口属性不变,同时通知网管系统。
2)根保护
对于启用根保护功能的指定端口,其端口角色只能保持为指定端口。
一旦启用根保护功能的指定端口收到优先级更高的RST BPDU时,端口将进入Discarding状态,不再转发报文。经过一段时间(通常为两倍的Forward Delay),如果端口一直没有再收到优先级较高的RST BPDU,端口会自动恢复到正常的Forwarding状态。
根保护功能确保了根桥的角色不会因为一些网络问题而改变。
3)环路保护
在启动了环路保护功能后,如果根端口或Alternate端口长时间收不到来自上游设备的BPDU报文时,则向网管发出通知信息(此时根端口会进入Discarding状态,角色切换为指定端口),而Alternate端口则会一直保持在Discarding状态(角色也会切换为指定端口),不转发报文,从而不会在网络中形成环路。
直到链路不再拥塞或单向链路故障恢复,端口重新收到BPDU报文进行协商,并恢复到链路拥塞或者单向链路故障前的角色和状态。
4)防TC-BPDU攻击
启用防TC-BPDU报文攻击功能后,在单位时间内,交换设备处理TC BPDU报文的次数可配置。
如果在单位时间内,交换设备在收到TC BPDU报文数量大于配置的阈值,那么设备只会处理阈值指定的次数。
对于其他超出阈值的TC BPDU报文,定时器到期后设备只对其统一处理一次。这样可以避免频繁的删除MAC地址表项,从而达到保护设备的目的。

RSTP工作过程

(1)RSTP拓扑收敛过程
①每一台交换机启动RSTP后,都认为自己是“根桥”,并且发送RST BPDU。
所有端口都为指定端口,处于Discarding状态。
②上游链路的设备互联端口通过P/A机制,快速进入转发状态。
SW2收到更优的RST BPDU后,经比较认为SW1才是当前根桥,此时SW2的端口将成为根端口,而不是指定端口,停止发送RST BPDU。
SW1的端口进入Discarding状态,发送Proposal位置位的RST BPDU。SW2收到后阻塞除边缘端口以外的所有其他端口(该过程称为同步过程)。
SW2的各端口同步后,根端口立即进入Forwarding状态,并向SW1返回Agreement位置位的RST BPDU。SW1收到该报文后,会让指定端口立即进入Forwarding状态。
③下游链路的设备互联端口会进行新一轮的P/A协商。
SW2的下游端口设置为指定端口,持续发送Proposal位置位的RST BPDU。
SW3的下游端口收到该BPDU后,发现不是本设备收到的最优BPDU,则会忽略,不会发送Agreement位置位的RST BPDU。
SW2的下游端口一直收不到Agreement位置位的回应报文,等待2倍的Forward Delay后,进入转发状态。

3. MSTP (多协议生成树)

RSTP/STP的不足

①流量无法负载分担
②二层次优路径

多生成树协议的概述

MSTP是IEEE 802.1S中定义的生成树协议,MSTP兼容STP和RSTP,既可以快速收敛,又提供了数据转发的多个冗余路径,在数据转发过程中实现VLAN数据的负载均衡。
MSTP可以将一个或多个VLAN映射到一个Instance(实例),再基于Instance计算生成树,映射到同一个Instance的VLAN共享同一棵生成树。

MST Region

MSTP网络层次:
MSTP把一个交换网络划分成多个域,每个域内形成多棵生成树,生成树之间彼此独立。
MST Region(Multiple Spanning Tree Region,多生成树域),也可简称MST域:
由交换网络中的多台交换设备以及它们之间的网段所构成。
一个局域网可以存在多个MST域,各MST域之间在物理上直接或间接相连。用户可以通过MSTP配置命令把多台交换设备划分在同一个MST域内。
MSTP网络中包含1个或多个MST域,每个MST域中包含一个或多个多生成树实例。

MSTI

MSTI(Multiple Spanning Tree Instance,多生成树实例):
一个MST域内可以生成多棵生成树,每棵生成树都称为一个MSTI。
MSTI使用Instance ID标识,华为设备取值为0~4094。
VLAN映射表
MST域的属性,描述了VLAN和MSTI之间的映射关系。

CST(Common Spanning Tree,公共生成树)

是连接交换网络内所有MST域的一棵生成树。
如果把每个MST域看作是一个节点,CST就是这些节点通过生成树协议计算生成的一棵生成树。

IST(Internal Spanning Tree,内部生成树)

是各MST域内的一棵生成树。
IST是一个特殊的MSTI,MSTI的Instance ID为0。

CIST(Common and Internal Spanning Tree,公共和内部生成树)

通过生成树协议计算生成的,连接一个交换网络内所有交换设备的单生成树。

SST(Single Spanning Tree,单生成树)

运行生成树协议的交换设备只能属于一个生成树。
MST域中只有一个交换设备,这个交换设备构成单生成树。

总根、域根和主桥

总根(CIST Root)
是CIST的根桥,
域根(Regional Root)
分为IST域根和MSTI域根。
IST域根,在MST域中IST生成树中距离总根最近的交换设备是IST域根,
MSTI域根是每个多生成树实例的树根。
主桥(Master Bridge)
是IST Master,它是域内距离总根最近的交换设备。
如果总根在MST域中,则总根为该域的主桥。
在这里插入图片描述

MSTP的端口角色

MSTP中定义的所有端口角色包括:
根端口、指定端口、Alternate端口、Backup端口、Master端口、域边缘端口和边缘端口。
在这里插入图片描述

MSTP的端口状态

MSTP定义的端口状态与RSTP协议中定义相同:
Forwarding状态:端口既转发用户流量,学习MAC地址,又接收/发送BPDU报文。
Learning状态:过渡状态,端口接收/发送BPDU报文,不转发用户流量但是学习MAC地址。
Discarding状态:端口只接收BPDU报文,不转发用户流量也不学习MAC地址。
在这里插入图片描述

MSTP报文

MSTP使用MST BPDU(Multiple Spanning Tree Bridge Protocol Data Unit,多生成树桥协议数据单元)作为生成树计算的依据。
MST BPDU报文用来计算生成树的拓扑、维护网络拓扑以及传达拓扑变化记录。
在这里插入图片描述

4. MSTP工作原理

MSTP拓扑计算

MSTP拓扑计算:
MSTP可以将整个二层网络划分为多个MST域,各个域之间通过计算生成CST,域内生成IST,CST和IST构成了整个交换设备网络的CIST。
域内还可以基于实例计算生成多棵生成树,每棵生成树都被称为是一个MSTI。
CIST和MSTI都是根据优先级向量来计算的,这些优先级向量信息都包含在MST BPDU中。各交换设备互相交换MST BPDU来生成CIST和MSTI 。
参与CIST计算的优先级向量为:
{ 根交换设备ID,外部路径开销,域根ID,内部路径开销,指定交换设备ID,指定端口ID,接收端口ID }
参与MSTI计算的优先级向量为:
{ 域根ID,内部路径开销,指定交换设备ID,指定端口ID,接收端口ID }
注意:括号中的向量的优先级从左到右依次递减。

CIST计算

经过比较MST BPDU消息后,在整个网络中选择一个优先级最高的交换设备作为CIST的树根,即总根。
在每个MST域内,MSTP通过计算生成IST;同时MSTP将每个MST域作为单台交换设备对待,通过计算在MST域间生成CST。CST和IST构成了整个交换设备网络的CIST。

MSTI计算

在MST域内,MSTP根据VLAN和生成树实例的映射关系,针对不同的VLAN生成不同的生成树实例。
每棵生成树独立进行计算,计算过程与STP计算生成树的过程类似。

MSTP网络数据转发

在运行MSTP协议的网络中,一个VLAN报文将沿着如下路径进行转发:
在MST域内,沿着其对应的MSTI转发。
在MST域间,沿着CST转发。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值