查看原文
其他

生成树协议:STP、RSTP和MSTP,解决网络环路、广播风暴

wljslmz瑞哥 网络技术联盟站 2024-03-15

来源:网络技术联盟站 

你好,这里是网络技术联盟站。

在计算机网络中,生成树协议是一种基本的机制,用于防止冗余网络拓扑中的环路和广播风暴。这些协议确保在任何给定时间网络中的任何两个节点之间仅存在一条路径,从而防止数据冲突和数据包丢失。本文瑞哥将深入介绍三种主要的生成树协议:STP(Spanning Tree Protocol)、RSTP(Rapid Spanning Tree Protocol)和MSTP(Multiple Spanning Tree Protocol)。

让我们直接开始!

目录:

  • 一、生成树协议诞生的背景

  • 二、术语

    • 2.1 设备角色

    • 2.2 端口角色

  • 三、STP、RSTP、MSTP概念

    • 3.1 STP

    • 3.2 RSTP

    • 3.3 MSTP

  • 四、STP端口状态

    • 4.1 Disabled(禁用)

    • 4.2 Blocking(阻塞)

    • 4.3 Listening(监听)

    • 4.4 Learning(学习)

    • 4.5 Forwarding(转发)

  • 五、STP端口状态的迁移过程

  • 六、RSTP/MSTP端口状态

    • 6.1 Forwarding(转发)

    • 6.2 Learning(学习)

    • 6.3 Discarding(丢弃)

  • 七、端口的选举原则

    • 7.1 根桥选举原则

    • 7.2 根端口选举原则

    • 7.3 指定端口选举原则

  • 八、BPDU

    • 8.1 BPDU报文分类

    • 8.2 BPDU报文格式

  • 九、生成树协议定时器

    • 9.1 Hello Time定时器和超时时间

    • 9.2 Forward Delay定时器

    • 9.3 Max Age定时器和Message Age

  • 十、STP 拓扑计算方法

    • 10.1 初始状态

    • 10.2 选择根桥

    • 10.3 选择根端口和指定端口

  • 十一、MSTP详解

    • 11.1 MST域

    • 11.2 CST、IST、CIST、SST

    • 11.3 域根、总根、主桥

    • 11.4 MSTP的拓扑计算

    • 11.5 优先级向量的比较原则

    • 11.6 CIST的计算、MSTI的计算

    • 11.7 MSTP与VLAN的关系:

  • 十二、拓扑变化机制

  • 十三、RSTP/MSTP快速收敛机制

    • 13.1 Proposal/Agreement 机制

    • 13.2 根端口快速切换机制

    • 13.3 边缘端口

  • 十四、STP/RSTP/MSTP兼容性

    • 14.1 RSTP兼容STP

    • 14.2 MSTP兼容STP/RSTP

  • 十五、总结

一、生成树协议诞生的背景

生成树协议(Spanning Tree Protocol, STP)的出现背景主要是为了解决以太网中由于冗余链路导致的环路问题。在网络设计中,为了提高网络的可靠性和避免单点故障,通常会在交换机之间使用冗余链路。然而,这些冗余链路如果没有得到适当的管理,就会在网络中形成环路,导致一系列问题,如广播风暴和MAC地址表震荡。

广播风暴是指当网络中存在环路时,广播帧或未知单播帧会被无限制地在环路中转发,从而消耗大量的网络资源,导致网络性能急剧下降,甚至可能导致网络瘫痪。

MAC地址表震荡则是由于环路中的不断广播,导致交换机的MAC地址表不断更新,无法稳定,进而影响到交换机的正常学习和转发功能。

为了解决这些问题,STP协议被提出。STP通过在网络中创建一棵无环路的生成树来消除环路,同时在活动路径发生故障时,能够激活备份链路,恢复网络连通性。这样,即使在网络中存在多条链路,STP也能确保网络中不会出现环路,从而避免了广播风暴和MAC地址表震荡的问题。

STP的基本思想是通过交换机之间的信息交换来发现并阻断造成环路的链路,最终形成一棵覆盖所有设备的无环路生成树。这个过程中,会选举出一个根桥(Root Bridge),并确定每个交换机的根端口(Root Port)和指定端口(Designated Port),以确保网络中的数据流动是有序的。

随着技术的发展,STP也经历了改进,产生了RSTP(快速生成树协议)和MSTP(多生成树协议),它们在STP的基础上提供了更快的网络收敛速度和更好的网络负载均衡能力。这些协议的发展,都是为了适应网络规模的扩大和业务需求的增长,确保网络的稳定性和高效性。

二、术语

2.1 设备角色

根桥(Root Bridge)

  • 在整个生成树的网络中,有且仅有一个根桥。
  • 根桥是逻辑中心,用于生成树计算的起点。
  • 根桥的选择是动态的,根据网络拓扑的变化而变化。

非根桥设备

  • 除根桥外,网络中的其他设备都被称为非根桥设备。
  • 非根桥设备参与生成树计算,根据拓扑变化调整其角色。

2.2 端口角色

根端口(Root Port - RP)

  • 根端口是指向根桥的最短路径的端口。
  • 每个非根桥设备上都有一个根端口。

指定端口(Designated Port - DP)

  • 在每个网络段(LAN)上,选择一个设备的端口作为指定端口,该端口负责将数据传输到根桥。
  • 每个非根桥设备的每个网络段上都有一个指定端口。

在STP和RSTP中,这两个端口角色是协议动态计算的结果,旨在构建无环的生成树拓扑,防止环路的发生。根端口和指定端口的选择基于端口到根桥的路径开销,以确保数据的有效传输,并在网络拓扑发生变化时快速适应。

备用端口(Alternate Port)

  • 在RSTP中引入,备用端口是在非根桥设备上选择的备用路径的端口,用于快速恢复拓扑变化。
  • Alternate端口是根端口的备份端口,为从指定桥到根桥的另一条可切换路径提供了备份。
  • 当设备学习到其他网桥发送的配置BPDU报文时,Alternate端口被阻塞。这意味着如果当前的根端口出现故障,生成树协议可以快速切换到Alternate端口,确保数据的连通性。
  • Alternate端口的引入是为了提高对于根端口故障的快速容错能力。

备份端口(Backup Port)

  • 在RSTP中引入,备份端口是在非根桥设备上选择的备份路径的端口,用于提供冗余连接。
  • Backup端口是指定端口的备份,为从根桥到相应网段的备份通路提供了另一条路径。
  • 当设备学习到自己发送的配置BPDU报文时,Backup端口被阻塞。这意味着如果当前的指定端口出现故障,生成树协议可以快速切换到Backup端口,确保数据的传输。
  • Backup端口的引入是为了提高对于指定端口故障的快速容错能力。

这两个端口角色的引入使得生成树协议在面对链路故障时能够更加迅速地切换到备份路径,从而提高网络的可靠性和快速收敛性。

边缘端口(Edge Port)

  • 在RSTP中引入,边缘端口是连接主机或其他无需生成树协议的设备的端口,可快速进入转发状态。
  • 边缘端口是设备上与终端设备直连的端口。
  • 位于网络的边缘,不参与生成树计算,可以直接进入转发状态。
  • 当端口启用生成树协议时,默认会启用边缘端口自动探测功能。如果在一定时间内(通常是2倍的Hello Time加1秒)未收到BPDU报文,端口将被自动设置为边缘端口。手动配置设备上的端口为边缘端口时,边缘端口自动探测功能将失效。

在MSTP中,还引入了一些新的端口角色:

主端口(Master Port)

  • 在MSTP中引入,主端口是在多生成树域中选择的主路径的端口。
  • 在MSTP网络中,每个MST域内会计算出一棵生成树,即内部生成树(IST)。将每个MST域看作一个节点,所有的MST域之间会计算出一棵生成树,即公共生成树(CST)。
  • Master端口是MST域中和总根相连的路径最短的端口,是MST域中的报文去往总根的必经之路。

域边缘端口(Boundary Port)

  • 在MSTP中引入,域边缘端口是连接不同生成树域的端口,相当于RSTP中的边缘端口。
  • Master端口是一种特殊的域边缘端口,在CIST上的角色是根端口,在其他各实例上的角色都是Master端口。
  • 在MSTP网络中,域边缘端口是位于MST域的边缘,连接到其他MST域或者单生成树的端口。在图中的例子中,AP1、DP1和DP2都是该MST域的域边缘端口。

三、STP、RSTP、MSTP概念

3.1 STP

STP(Spanning Tree Protocol)是一种二层网络协议,用于防止网络中的环路问题。它通过在冗余网络拓扑中创建一棵覆盖所有交换机的无环路生成树来实现。STP的工作原理包括根桥选举、根端口和指定端口的选举,以及非根端口的阻塞来消除环路。

3.2 RSTP

RSTP(Rapid Spanning Tree Protocol)是STP的改进版本,提供了更快的网络收敛能力。RSTP引入了新的端口角色和状态,如Alternate和Backup端口,以及Discarding、Learning和Forwarding状态。这些改进使得RSTP能够更快地响应网络拓扑的变化。

3.3 MSTP

MSTP(Multiple Spanning Tree Protocol)是一种进一步改进的协议,它允许在一个物理网络中创建多个逻辑生成树。每个生成树可以被分配给不同的VLAN,从而实现负载均衡和更细粒度的冗余控制。MSTP通过将VLAN映射到不同的生成树实例来实现这一点。

四、STP端口状态

在生成树协议(STP)中,设备的端口存在不同的状态,这些状态反映了端口在生成树计算过程中的角色和行为。

4.1 Disabled(禁用)

  • 说明: 端口状态为Down,不处理BPDU报文,也不转发用户流量。
  • 行为: 禁用状态的端口处于关闭状态,不参与生成树计算,不接收或发送BPDU报文,且不转发任何用户流量。

4.2 Blocking(阻塞)

  • 说明: 端口仅接收并处理BPDU报文,不转发用户流量。
  • 行为: 阻塞状态的端口用于阻止环路的形成,仅接收BPDU报文以参与生成树计算,但不进行用户数据的转发。

4.3 Listening(监听)

  • 说明: 过渡状态,开始生成树计算,端口可以接收和发送BPDU报文,但不转发用户流量。
  • 行为: 监听状态是进入生成树计算的过渡阶段,端口可以接收和发送BPDU报文,但仍然阻止用户数据的转发。

4.4 Learning(学习)

  • 说明: 过渡状态,设备根据收到的用户流量构建MAC地址表。端口可以接收和发送BPDU报文,但不转发用户流量。
  • 行为: 在学习状态,设备开始构建MAC地址表,学习端口收到的用户数据的源MAC地址。端口可以接收和发送BPDU报文,但仍然阻止用户数据的转发。

4.5 Forwarding(转发)

  • 说明: 端口可以接收和发送BPDU报文,也转发用户流量。只有根端口或指定端口才能进入Forwarding状态。
  • 行为: 转发状态表示端口已完成生成树计算,可以接收和发送BPDU报文,并且开始正常转发用户数据流量。只有被选为根端口或指定端口的端口才能进入此状态。

五、STP端口状态的迁移过程

  1. 端口Up或使能了STP,会从Disabled状态进入到Blocking状态:

当一个端口变为Up(启用)或者STP被启用时,端口会从Disabled状态进入Blocking状态。在Blocking状态下,端口仅接收并处理BPDU报文,不进行用户数据的转发,起到防止环路形成的作用。

  1. 端口被选举为根端口或指定端口,会进入Listening状态:

当端口被选为根端口或指定端口,它会进入Listening状态。在Listening状态下,端口开始生成树计算,可以接收和发送BPDU报文,但仍然不进行用户数据的转发。

  1. 端口的Forward Delay定时器超时,会进入Learning/Forwarding状态:

当端口的Forward Delay定时器超时时,端口会从Listening状态进入Learning状态,然后进入Forwarding状态。在Learning状态下,设备开始构建MAC地址表。在Forwarding状态下,端口可以接收和发送BPDU报文,并且开始正常转发用户数据流量。

  1. 端口不再是根端口或指定端口时,会进入Blocking状态:

如果端口不再被选为根端口或指定端口,它将从当前状态(可能是Forwarding或者Listening)返回到Blocking状态。这确保了生成树重新计算,并防止环路的形成。

  1. 端口Down或者去使能STP时,就进入Disabled状态:

当端口变为Down(禁用)或者STP被禁用时,端口会从当前状态(可能是Blocking、Listening、Learning或者Forwarding)进入Disabled状态。在Disabled状态下,端口不处理BPDU报文,也不进行用户数据的转发。

六、RSTP/MSTP端口状态

在快速生成树协议(RSTP)和多生成树协议(MSTP)中,相比STP,它们将端口状态缩减为三种,具体如下:

6.1 Forwarding(转发)

  • 说明: 端口转发用户流量,也学习MAC地址,且接收和发送BPDU报文。
  • 行为: 在Forwarding状态下,端口可以正常转发用户数据流量,学习源MAC地址,并与其他设备交换BPDU报文,用于维护生成树状态。

6.2 Learning(学习)

  • 说明: 过渡状态,设备根据收到的用户流量构建MAC地址表。端口可以接收和发送BPDU报文,但不转发用户流量。
  • 行为: 在Learning状态下,设备开始构建MAC地址表,学习端口收到的用户数据的源MAC地址。端口可以接收和发送BPDU报文,但仍然阻止用户数据的转发。

6.3 Discarding(丢弃)

  • 说明: 端口只接收BPDU报文,不转发用户流量,也不学习MAC地址。
  • 行为: 在Discarding状态下,端口仅用于接收和处理BPDU报文,不进行用户数据的转发,也不学习源MAC地址。

这种简化的端口状态使得RSTP和MSTP能够更快速地适应拓扑变化,提高网络的收敛速度。

七、端口的选举原则

7.1 根桥选举原则

最小BID原则: 设备通过比较BID(Bridge ID)来选举根桥。BID由桥优先级(Bridge Priority)和桥MAC地址构成,其中高16位是桥优先级,低48位是MAC地址。被选举为根桥的设备是BID最小的设备。

7.2 根端口选举原则

最小RPC原则: 在非根桥设备上,生成树协议会选举根端口。根端口是根路径开销(Root Path Cost,RPC)最小的端口。

最小发送设备BID原则: 如果存在两个或更多端口的根路径开销相同,那么通过比较这些端口收到的BPDU报文中的“发送设备BID”,选择BID最小的端口作为根端口。

7.3 指定端口选举原则

最小PID原则: 在根路径开销相同的情况下,生成树协议会选举指定端口。指定端口是阻塞PID值较大的端口,而PID小的端口被选为指定端口。

PID的作用: 在存在根路径开销相同的情况下,通过比较端口的PID值来决定选举哪个端口为指定端口,以便消除潜在的环路。

八、BPDU

生成树协议中设备之间的拓扑计算是通过交互BPDU(Bridge Protocol Data Unit)报文实现的。这些BPDU报文携带了生成树计算和维护生成树拓扑所需的信息。

8.1 BPDU报文分类

配置BPDU(Configuration BPDU)

  • 说明: STP使用配置BPDU进行生成树计算和维护生成树拓扑的报文。
  • 目的: 确定根桥、根端口、指定端口等关键信息。
  • Protocol Version Identifier: 0
  • BPDU Type: 0x00
  • 核心字段:Root Identifier、Root Path Cost、Bridge Identifier、Port Identifier
  • Root Identifier:当前根桥的BID,由桥优先级与桥MAC地址构成。
  • Root Path Cost:根路径开销,表示某端口到根桥所经过的各个桥上的各端口路径开销的累加值。
  • Bridge Identifier:发送设备的BID。
  • Port Identifier:发送端口的PID,由端口优先级和端口号构成。

RST BPDU

  • 说明: RSTP使用RST BPDU进行生成树计算和维护生成树拓扑的报文。
  • 目的: 在RSTP中,这些BPDU报文用于快速收敛生成树拓扑。
  • Protocol Version Identifier: 2
  • BPDU Type: 0x02
  • RST BPDU与配置BPDU基本一致,增加了Version 1 Length字段和使用了Flags字段中间的六位。

MST BPDU

  • 说明: MSTP使用MST BPDU进行生成树计算和维护生成树拓扑的报文。
  • 目的: MSTP支持多个生成树实例,每个实例使用独立的MST BPDU进行拓扑计算。
  • Protocol Version Identifier: 3
  • BPDU Type: 0x02
  • MST BPDU前36个字节和RST BPDU相同,从第37个字节开始是MSTP专有字段。最后的MSTI配置信息字段由若干MSTI配置信息组连缀而成。

TCN BPDU(Topology Change Notification BPDU)

  • 说明: 用于通知网络拓扑发生变化的报文。
  • 目的: 当网络拓扑发生变化时,通知相关设备进行拓扑重计算。
  • Protocol Version Identifier: 0
  • BPDU Type: 0x80
  • 长度为4个字节,使用了Protocol Identifier、Protocol Version Identifier和BPDU Type字段。

8.2 BPDU报文格式

BPDU报文被封装在以太网数据帧中,其目的MAC地址通常为:01-80-C2-00-00-00。

BPDU报文格式包含多个字段,其中两个关键字段用于判断BPDU报文类型:

  1. Protocol Version Identifier (PVID):

  • 用于指定生成树协议的版本。
  • BPDU Type:

    • 用于指定BPDU报文的类型,例如配置BPDU、RST BPDU、MST BPDU、TCN BPDU等。

    这些字段的值有助于设备识别BPDU报文的类型以及执行相应的拓扑计算。生成树协议通过这种交互的方式,确保网络中的设备始终保持对拓扑变化的感知,并根据生成树算法进行相应的调整,以维护环路防御和网络的稳定性。

    九、生成树协议定时器

    9.1 Hello Time定时器和超时时间

    • 设备每隔Hello Time的时间间隔会向相邻设备发送BPDU报文,以确认链路是否存在故障。
    • 超时时间的计算公式为:超时时间 = Hello Time × 3 × Timer Factor。
    • Timer Factor是一个设备可以手动配置的参数,用于调整超时时间。

    9.2 Forward Delay定时器

    • Forward Delay定时器表示设备状态迁移的延迟时间。
    • 在链路故障引发生成树计算时,新选出的根端口和指定端口要经过2倍的Forward Delay延时后才能进入转发状态。
    • Forward Delay定时器的默认值为15秒。

    9.3 Max Age定时器和Message Age

    • Max Age定时器是BPDU报文老化时间,可以在根桥上手动配置。
    • Message Age表示BPDU报文从根桥发送到当前设备接收的总时间。
    • 当非根桥设备收到BPDU报文时,会比较Message Age和Max Age的值,以判断是否要老化该BPDU报文。
    • 如果Message Age小于等于Max Age,则继续转发BPDU报文;如果Message Age大于Max Age,则该BPDU报文被认为已经老化,设备丢弃该BPDU报文。
    • Message Age的值每经过一个桥就增加1。

    这些定时器和超时机制的设计有助于生成树协议在网络拓扑发生变化时,能够快速而稳定地进行拓扑计算,确保生成树结构的及时调整和环路防御的有效性。

    十、STP 拓扑计算方法

    10.1 初始状态

    初始状态下,每个设备都认为自己是根桥,并且每个端口发出的BPDU中根桥字段使用自己的BID,RPC字段是到根桥的路径开销(初始状态下,每个设备认为自己是根桥,因此RPC为0),发送者BID是自身的BID,端口PID是发送该BPDU端口的端口ID。

    10.2 选择根桥

    通过交换配置消息,设备之间比较根桥ID,网络中BID最小的设备被选为根桥。

    10.3 选择根端口和指定端口

    非根桥设备将接收到的最优配置消息的那个端口定为根端口。

    设备根据根端口的配置消息和根端口的路径开销为每个端口计算一个指定端口配置消息。

    根桥ID替换为根端口的配置消息的根桥ID。

    根路径开销替换为根端口配置消息的根路径开销加上根端口对应的路径开销。

    发送者BID替换为自身设备的ID。

    发送端口PID替换为自身端口ID。

    设备将计算出的配置消息与角色待定端口自己的配置消息进行比较:

    • 如果计算出的配置消息更优,则该端口被确定为指定端口,其配置消息也被计算出的配置消息替换,并周期性地向外发送。
    • 如果该端口自己的配置消息更优,则不更新该端口的配置消息并将该端口阻塞。该端口将不再转发数据,且只接收不发送配置消息。

    设备将所有端口的配置消息进行比较,选出最优的配置消息。

    十一、MSTP详解

    MSTP(Multiple Spanning Tree Protocol)是生成树协议的一种变体,引入了多生成树的概念。

    11.1 MST域

    MST域(MST Region)是指在MSTP(Multiple Spanning Tree Protocol)网络中的一组设备以及它们之间的网络拓扑结构,形成一个逻辑上独立的单元。

    具体来说,同一个MST域的设备满足以下条件:

    1. 启用了MSTP: 所有设备都必须启用MSTP协议,以参与生成树的计算和维护。

    2. 相同的域名: MST域内的设备共享相同的域名,这个域名用于标识和区分不同的MST域。域名是一个字符串,通过配置命令设置。

    3. 相同的VLAN到生成树实例映射配置: MST域内的设备使用相同的VLAN到生成树实例的映射配置。这一点是为了确保各设备在同一MST域内对VLAN的处理方式一致。

    4. 相同的MSTP修订级别配置: MST域内的设备使用相同的MSTP修订级别配置,用于判断MST配置的更新情况。当MST配置发生变化时,修订级别会增加。

    在MSTP网络中,一个局域网可以划分为多个MST域,各MST域之间可以在物理上直接或间接相连。通过MSTP的配置命令,用户可以将多台设备划分到同一个MST域内,以实现更灵活的生成树控制和配置管理。每个MST域内都会独立地执行生成树协议的计算,形成逻辑上的生成树结构。

    11.2 CST、IST、CIST、SST

    1. CST(Common Spanning Tree): CST是连接网络内所有MST域的一棵生成树。每个MST域可以看作是一个节点,而CST是这些节点通过STP或RSTP协议计算生成的一棵生成树。 CST的目标是将整个网络连接为一个单一的生成树,确保不存在环路。在网络中,黑色线条表示连接各个域的CST。

    2. IST(Internal Spanning Tree): IST是各MST域内的一棵生成树。IST是一个特殊的MSTI(Multiple Spanning Tree Instance),通常称为MSTI0。IST是CIST在MST域中的一个片段,是MST域内部的生成树。在网络中,深蓝色线条表示连接该域的所有交换设备形成的IST。

    3. CIST(Common and Internal Spanning Tree): CIST是通过STP或RSTP协议计算生成的,连接一个网络内所有设备的单生成树。CIST包括了CST和IST,形成了网络内的一棵完整的生成树。CIST的目标是确保整个网络中不存在环路,同时在每个MST域内形成相应的生成树。

    4. SST(Single Spanning Tree): SST是指运行STP或RSTP的设备只能属于一个生成树的情况。在某些情况下,整个MST域中只有一个设备,这个设备构成了单生成树。这样的情况下,整个MST域就是一个SST。

    11.3 域根、总根、主桥

    1. 域根(Regional Root):

    IST域根(Internal Spanning Tree Root): 在MSTP网络中,IST域根是指在MST域中IST生成树中距离总根(CIST Root)最近的设备。这是每个MST域内部形成的生成树的树根。

    MSTI域根(Multiple Spanning Tree Instance Root): 一个MST域内可以生成多棵生成树,每棵生成树都称为一个MSTI。MSTI域根是每个多生成树实例的树根。在图中不同的MSTI有各自的域根。

    1. 总根(CIST Root): 总根是CIST(Common and Internal Spanning Tree)的根桥,即整个网络中的根桥。在图中,DeviceA是CIST的根桥,也是总根。

    2. 主桥(Master Bridge)或IST Master: 主桥是域内距离总根最近的交换设备。主桥是每个MST域内IST生成树的树根。在图中,黄色标识的设备是主桥。

    总根在MST域中时,总根同时也是该域的主桥。

    11.4 MSTP的拓扑计算

    MSTP的拓扑计算使用了优先级向量来确定CIST和MSTI的生成树。

    参与CIST计算的优先级向量:

    • 根交换设备ID: 用于选择CIST中的根交换设备。根交换设备ID由MSTI0的优先级和MAC地址构成。
    • 外部路径开销(ERPC): 从CIST的域根到达总根的路径开销。在域内,所有交换设备上保存的外部路径开销相同。如果CIST的根交换设备就在域内,则所有设备上的外部路径开销为0。
    • 域根ID: 用于选择MSTI中的域根。域根ID由MSTI0的优先级和MAC地址构成。
    • 内部路径开销(IRPC): 本桥到达域根的路径开销。域边缘端口保存的内部路径开销大于非域边缘端口保存的内部路径开销。
    • 指定交换设备ID: CIST的指定交换设备是本桥通往域根的最邻近的上游桥。如果本桥就是总根或域根,则指定交换设备为自己。
    • 指定端口ID: 指定交换设备上同本设备上根端口相连的端口。端口ID由优先级(4位)和端口号(12位)构成。端口优先级必须是16的整数倍。
    • 接收端口ID: 接收到BPDU报文的端口。端口ID由优先级(4位)和端口号(12位)构成。端口优先级必须是16的整数倍。

    参与MSTI计算的优先级向量:

    • 域根ID: 用于选择MSTI中的域根。域根ID由MSTI0的优先级和MAC地址构成。
    • 内部路径开销(IRPC): 本桥到达域根的路径开销。
    • 指定交换设备ID: MSTI的指定交换设备是本桥通往域根的最邻近的上游桥。如果本桥就是域根,则指定交换设备为自己。
    • 指定端口ID: 指定交换设备上同本设备上根端口相连的端口。端口ID由优先级(4位)和端口号(12位)构成。端口优先级必须是16的整数倍。
    • 接收端口ID: 接收到BPDU报文的端口。端口ID由优先级(4位)和端口号(12位)构成。端口优先级必须是16的整数倍。

    11.5 优先级向量的比较原则

    1. 根交换设备ID比较: 先比较根交换设备ID,值最小的向量具有最高优先级。

    2. 外部路径开销比较: 如果根交换设备ID相同,再比较外部路径开销。

    3. 域根ID比较: 如果外部路径开销相同,再比较域根ID。

    4. 内部路径开销比较: 如果域根ID仍然相同,再比较内部路径开销。

    5. 指定交换设备ID比较: 如果内部路径仍然相同,再比较指定交换设备ID。

    6. 指定端口ID比较: 如果指定交换设备ID仍然相同,再比较指定端口ID。

    7. 接收端口ID比较: 如果指定端口ID还相同,再比较接收端口ID。

    如果接收到的BPDU内包含的配置消息优于端口上保存的配置消息,则端口上原来保存的配置消息被新收到的配置消息替代。端口同时更新交换设备保存的全局配置消息。反之,新收到的BPDU被丢弃。

    通过这样的比较原则,MSTP能够有效地选举出根交换设备、生成CIST和各个MSTI的生成树,以确保网络的稳定和避免环路。

    11.6 CIST的计算、MSTI的计算

    计算CIST和MSTI的生成树涉及不同的层次,具体如下:

    CIST(Common and Internal Spanning Tree)

    1. 选择CIST的树根: 在整个网络中选择一个优先级最高的设备作为CIST的树根。这通过比较CIST的配置消息,包括根交换设备ID、外部路径开销等字段来实现。

    2. 计算CIST: 在整个网络中计算CIST,包括所有MST域。MSTP将每个MST域视为单台设备,通过计算在MST域间生成CST。CST和IST(Internal Spanning Tree)构成整个网络的CIST。

    MSTI(Multiple Spanning Tree Instances)

    1. MSTI的计算: 在MST域内,MSTP根据VLAN和生成树实例的映射关系,为每个VLAN生成不同的生成树实例(MSTI)。每个MSTI独立进行计算,互不干扰。

    2. 生成树计算方法: 每个MSTI的生成树计算方法与STP基本相同。它包括选择树根、选择根端口和指定端口。

    3. MSTI的特点: 每个MSTI的生成树独立,可以有不同的根、不同的拓扑、可以在不同的生成树内发送BPDU。

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

    11.7 MSTP与VLAN的关系:

    1. VLAN到MSTI的映射:

    MSTP允许将多个VLAN映射到同一个MSTI,从而在网络中更灵活地配置生成树。

    1. 单实例生成树和多实例生成树:
    • 单实例生成树:一个MSTI覆盖多个VLAN。
    • 多实例生成树:每个VLAN对应一个独立的MSTI。

    十二、拓扑变化机制

    拓扑变化机制主要通过拓扑变化通知(Topology Change Notification,TCN)来实现。

    1. 拓扑变化通知 (Topology Change Notification, TCN): 当网络中发生拓扑变化时,例如链路断开或接口状态改变,受到影响的设备会生成TCN BPDU,用来通知其他设备网络拓扑发生变化。

    2. TCN BPDU传播: 生成TCN BPDU的设备会将该BPDU广播到网络中的其他设备。这样,整个网络都能够感知到拓扑的变化。

    3. 接收TCN BPDU的设备: 每个设备在接收到TCN BPDU后,会做出相应的处理。它将该信息传递给上游设备,通知它有拓扑变化发生。这样,整个网络中的设备能够及时更新拓扑信息。

    4. 老化机制: 当设备收到TCN BPDU后,会立即老化与该端口相关的MAC地址表项,以便及时更新到新的拓扑。老化机制用于清除与上游设备关联的MAC地址,防止数据流量因为过时的MAC地址表项而引发问题。

    5. 生成树重新计算: 收到TCN通知后,设备会重新计算生成树,确保网络中没有环路,并更新生成树的相关参数。这包括重新选择根端口、指定端口等。

    通过TCN机制,生成树协议能够快速适应网络拓扑的变化,避免临时环路的产生,保障数据流量的正常传输。TCN BPDU的生成和传播帮助网络中的设备及时感知拓扑变化,从而保证生成树的稳定性。

    十三、RSTP/MSTP快速收敛机制

    RSTP/MSTP的快速收敛机制涉及到Proposal/Agreement机制、根端口快速切换机制以及边缘端口。这些机制的目的是加速网络拓扑变化的通知和适应,提高整体收敛速度。

    13.1 Proposal/Agreement 机制

    普通 P/A 机制

    • 两台设备之间链路必须是点对点的全双工模式。
    • 协商开始后,两台设备将各自的指定端口标记为提议端口(Proposal)。
    • 向对端发送 Proposal,对端接收后将自己的所有端口标记为同步(sync)。
    • 设备根据接收到的 Proposal 设置自己的端口状态。
    • 通过 Proposal/Agreement 协商,指定端口尽快进入 Forwarding 状态。

    增强 P/A 机制

    • 协商开始时,设备都认为自己是根桥,所有端口标记为提议端口(Proposal)和同意端口(Agreement)。
    • 上游设备发送 Proposal,下游设备将与上游设备相连的端口设置为根端口,并阻塞其他非边缘端口。
    • 上游设备发送 Agreement,下游设备根端口进入 Forwarding 状态。
    • 下游设备回应 Agreement,上游设备的非根端口设置为指定端口,并指定端口进入 Forwarding 状态。

    13.2 根端口快速切换机制

    如果 RSTP/MSTP 网络中的根端口失效,最优 Alternate 端口将直接成为根端口并进入 Forwarding 状态。

    根端口失效后,通过快速切换机制直接切换到 Forwarding 状态,避免了传统 STP 下的两个 Forward Delay 时间的等待。

    13.3 边缘端口

    边缘端口是不再与其他交换设备连接,而是直接与终端设备相连的端口。

    边缘端口不参与生成树运算,可以由 Disable 直接转到 Forwarding 状态,且不经历时延。

    一旦边缘端口收到 BPDU,就丧失边缘端口属性,成为普通端口,并重新进行生成树计算。

    这些机制的引入有效减少了生成树协议收敛时间,提高了网络的快速收敛能力。

    十四、STP/RSTP/MSTP兼容性

    STP(Spanning Tree Protocol),RSTP(Rapid Spanning Tree Protocol),和 MSTP(Multiple Spanning Tree Protocol)之间有一定的兼容性。

    14.1 RSTP兼容STP

    运行 RSTP 的设备可以与运行 STP 的设备互相连接,但在这种情况下,RSTP 设备会忽略 STP BPDU,而 STP 设备则会忽略 RSTP BPDU。

    如果 RSTP 设备的某个端口接收到 STP 设备发出的配置 BPDU,该端口会在两个 Hello Time 时间后将自己的模式切换回 STP 模式,并发送 STP 配置 BPDU。

    当 STP 设备从网络中移除后,运行 RSTP 的设备可以手动执行 MCheck 操作,使相连的端口切换回原来的 RSTP 模式。

    14.2 MSTP兼容STP/RSTP

    运行 MSTP 的设备与运行 STP 的设备相连时,MSTP 设备会将与 STP 设备相连的接口切换到 STP 模式,实现了互相兼容。

    运行 MSTP 的设备与运行 RSTP 的设备相连时,两者之间可以互相识别 BPDU。

    在网络中同时运行 STP、RSTP 和 MSTP 的设备时,各个设备会尽量进行兼容性处理,以确保网络的正常运行。然而,需要注意的是,兼容性通常会导致使用最低公共的协议特性,因此可能无法充分发挥 RSTP 或 MSTP 的快速收敛等优势。最佳实践是在整个网络中选择一种生成树协议,以确保获得最佳性能。

    十五、总结

    STP、RSTP和MSTP是构建稳定二层网络的经典生成树协议。它们在不同的网络环境中发挥着关键作用,提供了网络拓扑的稳定性和可维护性。网络管理员在选择和配置生成树协议时,需要综合考虑网络规模、复杂度和管理需求,以达到最佳的性能和可管理性。

    本文详细介绍了STP、RSTP和MSTP的原理、工作机制、拓扑计算过程、拓扑变化机制以及它们之间的兼容性。希望这些信息能够帮助大家更深入地理解生成树协议,并在实际网络中做出明智的选择和配置。


    往期推荐

    6G,它来了,真的666!

    刀片服务器:高密度、高可用性,数据中心必备!

    硬盘类型:SSD、HDD、光盘,分别代表啥意思?

    5G那么强大了,为啥还会有双频路由器?

    当分段路由遇上IPv6,新一代的IP承载协议SRv6,它实在太强了!



    继续滑动看下一个
    向上滑动看下一个

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存