STP工作过程

本文深入解析了STP(Spanning Tree Protocol)的工作原理,包括根桥选举、根接口和指定接口的选择,以及如何通过阻塞非指定接口来防止二层网络环路的形成,确保网络稳定运行。

STP工作过程

STP通过4个步骤来保证网络中不存在二层环路。

在交换网络中选举一个根桥(Root Bridge,RB )

  • STP的计算需要一个参考点,而根桥就是这个参考点,它是STP经计算得到的这棵无环的树的树根。

  • 桥ID最小的交换机将成为根桥。

  • 对于一个交换网络而言,正常情况下只会存在一个根桥。

  • 如下图所示,SW1、SW2及SW3的桥优先级都是32768,因此MAC地址最小的SW1成为网络中的根桥。

  • STP的正常工作依赖于该协议所使用的报文的正常交互,这种报文就是BPDU (Bridge Protocol Data Unit,网桥协议数据单元),BPDU中
    包含着几个重要的数据(根ID、RPC、网桥ID、桥ID),这些数据是STP进行无环拓扑计算的关键。
    在这里插入图片描述

  • 需要注意的是,根桥的地位是具有可抢占性的

  • 在上图网络拓扑中,在STP完成收敛后,若网络中接入了一台新的交换机,而且这台新增的交换机的优先级为4096,比现有根桥SW1的优先级更高,那么该新增的交换机将成为网络中的新根桥,与此同时,STP将重新收敛、重新计算网络拓扑,在这个过程中有可能引发网络震荡,从而对业务流量的正常转发造成影响,所以根桥角色的稳定性是十分重要的

在每个非根桥上选举一个根接口(Root Port,RP )

  • 在一个交换网络中,除了根桥之外的其他交换机都是非根桥,
  • STP将为每个非根桥选举一个根接口,所谓根接口,实际上是非根桥上所有接口中收到最优BPDU的接口(通过根端口接受来自根的BPDU),可以简单地将其理解为交换机在STP树上“朝向”根桥的接口。
  • 非根桥可能会有一个或多个接口接入同一个交换网络,STP将在这些接口之中选举出一个(而且只会选一个)根接口。
  • 在STP收敛完成之后,根桥依然会周期性地向网络中发送BPDU,而非根桥则会周期性地在自己的根接口上收到BPDU(非根桥会存储收到的BPDU,缺省老化时间20s),并沿着STP树向下游转发(根桥、非根桥都会通过指定端口向下游发送经过自己计算的BPDU报文)。
  • 如下图所示的网络中,SW2及SW3均为非根桥,以SW3为例,在STP收敛过程中,它在自己的Port1及Port2接口上都会收到BPDU,SW3会将这两个BPDU进行比较,收到最优BPDU的接口Port1将成为根接口(RPC较小)。
    在这里插入图片描述

选举指定接口(Designated Port, DP )

  • STP将在每个网段中选举一个指定接口,这个接口是该网段内所有接口中到达根桥的最优接口。并且,指定接口还负责向该网段发送BPDU。
  • 对于非根桥而言:
  1. 首先,所有接口中收到最优BPDU的接口将成为该设备的根接口(根ID->RPC->网桥ID->接口ID),
  2. 然后,该非根桥使用自己接收的最优BPDU为本设备上的其他接口各计算一个BPDU,
  3. 最后,使用计算出的BPDU与接口上所维护的BPDU(接口自身也会从网络中收到BPDU,并将BPDU保存起来)进行比较,如果前者更优,那么该接口将成为指定接口,并且其所保存的BPDU也被前者替代,交换机将替代后的BPDU从该指定接口转发给下游交换机;如果后者更优,那么该接口将成为非指定接口(非指定接口指的是既不是根接口,又不是指定接口的接口)。
  • 简单来说,对于非根桥而言,根接口的选举过程是非根桥将自己所收到的所有BPDU进行比较,而指定接口的选举过程则是非根桥用自己计算出的BPDU跟别的设备发过来的BPDU进行比较。
  • 如下图所示网络中,在SW1与SW2之间的网段中,SW1的Port1被选举为指定接口;在SW1与SW3之间的网段中,SW1的Port2被选举为指定接口。
  • 一般而言,根桥的所有接口都是指定接口。
  • STP还会在SW2及SW3之间的网段中选举一个指定接口,最终SW2的Port2接口胜出(网桥ID较小),成为该网段的指定接口。
    在这里插入图片描述

阻塞非指定接口,打破二层环路

  • 经STP计算后,如果交换机的某个(或者某些)接口既不是根接口又不是指定接口,我们将这种接口称为非指定接口,那么该接口将会被STP阻塞,如此一来网络中的二层环路也就被打破了。
  • 如下图所示的网络中,SW3的Port2由于既不是根接口,又不是指定接口,因此被阻塞。
  • 被阻塞的接口既不会接收也不会转发业务数据(业务数据有别于BPDU,可以简单理解为用户的应用数据),
  • 另外被阻塞的接口也不会发送BPDU,但是会持续侦听BPDU,以便感知网络拓扑的变更情况。
    在这里插入图片描述
<think>嗯,用户这次想要深入了解STP工作过程及其端口状态变化。之前已经详细解释过802.1Q协议,现在用户聚焦在生成树协议上,看来是在系统学习网络冗余技术。 注意到用户提供了两个站内引用,其中引用[1]详细描述了STP端口状态机,引用[2]则指出了传统STP的缺陷。虽然用户没有直接提问这些内容,但显然希望将端口状态变化纳入STP工作过程的整体框架中。 用户可能是个网络工程师预备役,正在备考认证考试。ta特意要求"总结",说明需要理论结合实践的要点提炼。考虑到之前解释802.1Q时采用了技术解析+配置示例的模式,这次也应该保持类似的实用风格。 需要特别注意几个技术要点:首先必须讲清端口状态变迁与拓扑收敛的关系,比如Listening状态实际是STP重新计算拓扑的关键阶段;其次要强调阻塞端口的作用,这是防环的核心机制;最后需关联用户提供的cost值标准差异,这是实际配置中的易错点。 用户引用的cost值对比很有意思,802.1d的老标准(10M=100)和802.1T新标准(100M=200000)相差三个数量级,这个细节很多教材会忽略,但实际工程中混用可能导致路径选择错误,应该重点说明。 至于回复结构,考虑设计为六个部分:选举过程(含cost值影响)、状态机详解、收敛缺陷、防护机制、厂商改进方案、配置示例。其中端口状态变迁表要突出时间维度,因为Forward Delay的15秒等待正是STP收敛慢的主因。最后华为配置示例中加入cost修改命令,这样用户能立即实践。 </think>### STP工作过程及端口状态变化总结 #### **一、STP核心工作过程** **目标**:构建无环拓扑,通过阻塞冗余链路消除环路[^1]。 1. **选举根桥(Root Bridge)** - **依据**:比较桥ID(Bridge ID = 优先级 + MAC地址) - **规则**:优先级最小者胜出(默认优先级=32768);若优先级相同,则比较MAC地址(值小者胜)[^1]。 2. **选举根端口(Root Port)** - **位置**:每台**非根桥**交换机上 - **依据**: - 最低**根路径开销**(累计到根桥的链路开销) - 次优比较:发送方桥ID最小 → 发送方端口ID最小 - **作用**:指向根桥的最优路径端口[^1]。 3. **选举指定端口(Designated Port)** - **位置**:每条**物理链路**上 - **依据**: - 最低根路径开销(从该端口所在交换机到根桥) - 次优比较:本地桥ID最小 → 本地端口ID最小 - **作用**:负责转发该链路上的BPDU和流量[^1]。 4. **阻塞非根非指定端口** - 未被选为根端口或指定端口的端口进入 **Blocking 状态**,逻辑断开环路[^1]。 ```mermaid graph TB A[根桥选举] --> B[每台交换机选举根端口] B --> C[每条链路选举指定端口] C --> D[阻塞剩余端口] ``` #### **二、端口状态变迁详解 STP通过5种状态控制端口行为(以标准802.1D为例)[^1]: | 状态 | 行为描述 | 持续时间 | 触发条件 | |-------------|--------------------------------------------------------------------------|---------------------|--------------------------------------------------------------------------| | **Disabled**| 端口物理关闭,参与STP运算 | - | 管理员手动关闭或物理故障 | | **Blocking**| 转发数据,**仅接收BPDU**监控网络状态 | 20秒(Max Age) | 端口启用初始状态,或角色为Alternate/Backup(非根/非指定端口) | | **Listening**| 参与拓扑计算,确定端口角色(根端口/指定端口),**学习MAC地址** | 15秒(Forward Delay)| 从Blocking状态被选为根端口/指定端口 | | **Learning**| 学习MAC地址构建表项,**仍转发用户数据** | 15秒(Forward Delay)| Listening状态超时 | | **Forwarding**| 正常转发用户数据和BPDU | 持续 | Learning状态超时,且端口角色确认为根端口/指定端口 | > ⚠️ **关键机制**: > - **Forward Delay计时器**(默认15秒)控制Listening→Learning→Forwarding的延时,防止临时环路。 > - 阻塞端口持续监听BPDU,若根桥故障或链路中断,将触发拓扑重计算[^1]。 --- ### 三、STP的局限性及改进 #### **1. 传统STP缺陷** - **收敛速度慢**:从链路故障到恢复需30-50秒(Blocking→Forwarding需2×15秒+Max Age)[^2]。 - **链路利用率低**:备份链路在正常时完全阻塞,造成资源浪费[^2]。 #### **2. 改进协议对比** | 协议 | 改进点 | 收敛时间 | |--------|-----------------------------------------------------------------------|----------------| | **RSTP**| 端口角色细分(新增Alternate/Backup),引入**Proposal/Agreement机制** | 1-2秒 | | **MSTP**| 多实例生成树,同VLAN映射到同生成树实例 | 同RSTP级别 | --- ### 四、华为设备配置示例 ```bash # 开启STP并指定模式 [SW] stp enable [SW] stp mode rstp # 推荐使用RSTP # 手动指定根桥(优先级设为0) [SW] stp priority 0 # 修改端口开销(影响根端口选举) [SW] interface GigabitEthernet 0/0/1 [SW-GigabitEthernet0/0/1] stp cost 200000 # 802.1T标准千兆链路开销 ``` > 📌 **Cost值标准差异**[^2]: > - **802.1d标准**:10M=100, 100M=19, 1G=4 > - **802.1T标准**:10M=2,000,000, 100M=200,000, 1G=20,000 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值