生成树 stp

本文详细介绍了生成树协议STP的基本概念、作用,包括消除环路、稳定MAC地址学习和提供冗余连接等。同时,通过ensp拓扑图实验展示了STP的不同接口角色以及MSTP和RSTP的优化。文章涵盖了根桥、根端口、阻塞端口的概念,以及如何在实际网络环境中配置和管理这些协议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

思维导图:
在这里插入图片描述


提示:以下是本篇文章正文内容,下面案例可供参考

一、生成树的基本概念(stp)

生成树(Spanning Tree)是图论中的一个重要概念,在计算机科学、网络工程以及许多其他领域都有广泛的应用。STP是一个用于局域网中消除环路的协议。运行该协议的设备通过彼此交互信息而发现网络中的环路,并对某些接口进行阻塞以消除环路。STP在网络中运行后会持续监控网络的状态,当网络出现拓扑变更时,STP能够感知并且进行自动响应,从而使得网络状态适应新的拓扑结构,保证网络可靠性。由于局域网规模的不断增长,生成树协议已经成为了当前最重要的局域网协议之一。

什么是根桥?

(1) STP的主要作用之一是在整个交换网络中计算出一棵无环的“树”(STP树)。
(2)根桥是一个STP交换网络中的“树根”。
(3) STP开始工作后,会在交换网络中选举一个根桥,根桥是生成树进行拓扑计算的重要“参考点”,是STP计算得出的无环拓扑的“树根”。
(4) 在STP网络中,桥ID最小的设备会被选举为根桥。在BID的比较过程中,首先比较桥优先级,优先级的值越小,则越优先,拥有最小优先级值的交换机会成为根桥;如果优先级相等,那么再比较MAC地址,拥有最小MAC地址的交换机会成为根桥。

满足生成树的有以下几个条件:

  • 生成树是一个无环连通图,即它是一个树形结构,没有环路。
  • 生成树包含了原图G的所有顶点。
  • 在生成树中,任意两个顶点之间都存在一条唯一路径(即连通性)。

二、生成树的作用

生成树协议(Spanning Tree Protocol, STP)的主要作用在于防止在具有冗余链路的局域网(LAN)中出现数据链路层的环路。

以下是生成树协议的核心作用:

  1. 消除二层环路
    在复杂的交换网络中,交换机之间通过多条链路连接可能会自然形成物理环路。环路会导致数据帧在网络中无限循环转发,即所谓的“广播风暴”,严重消耗网络带宽,降低网络性能,并可能导致交换机的MAC地址表混乱。

  2. 预防广播风暴
    当数据帧的目的地址无法在本地MAC地址表中找到时,交换机会将其泛洪至除接收端口之外的所有端口,环路的存在使得同一个数据帧会被反复复制并发送,形成广播风暴,严重影响网络正常通信。

  3. 稳定MAC地址学习
    STP通过阻塞冗余路径上的端口来打破环路,确保每台主机和每个交换机端口对应唯一的路径,从而稳定MAC地址学习过程,避免MAC地址漂移。

  4. 提供冗余连接
    尽管STP最初的工作原理是阻塞一些冗余路径,但它同时也保持了这些路径作为备份,当主路径失效时,STP可以重新计算生成树拓扑,并激活备份路径恢复网络连接,从而提供链路冗余和网络可靠性。

  5. 确保无环路逻辑拓扑
    STP通过算法选举出一个根桥(Root Bridge),并且为每个网络段选择一个指定桥(Designated Bridge),其它非根非指定桥的端口将被置于阻塞状态(Blocking),最终构建出一个没有环路的逻辑树状网络结构。

  6. 快速收敛
    针对STP的传统收敛速度较慢的问题,后来发展出了快速生成树协议(Rapid Spanning Tree Protocol, RSTP)和多生成树协议(Multiple Spanning Tree Protocol, MSTP),它们能显著加快网络在拓扑改变后的收敛速度。

三、 ensp拓扑图实验

(1)stp

在这里插入图片描述

``

STP常见的三种接口角色:DP,RP,AP
DP(DESI):指定端口,可以转发数据
RP(ROOT):根端口,可以转发数据
AP(ALTE):阻塞端口,无法转发数据(但不影响BDPU报文转发)

首先对比原先大小:
在这里插入图片描述

stp pri 0 (命令作用是:把这台交换机当选为根桥)(0是因为:值越小越好,所以0最大)
在这里插入图片描述

再使用命令dis stp 查看

在这里插入图片描述

再使用命令dis stp b查看一下接口

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

(2)mstp

在这里插入图片描述
先配置 vlan
sw1 & sw2

undo info-center enable
vlan batch 10 20 30 40
int g 0/0/1
port link-type trunk
port trunk allow-pass vlan 10 20 30 40
int g 0/0/2
port link-type trunk
port trunk allow-pass vlan 10 20 30 40
int g 0/0/3
port link-type trunk
port trunk allow-pass vlan 10 20 30 40

sw3

undo info-center enable
vlan batch 10 20 30 40
int g 0/0/1
port link-type trunk
port trunk allow-pass vlan 10 20 30 40
int g 0/0/2
port link-type trunk
port trunk allow-pass vlan 10 20 30 40
int g 0/0/3
port link-type access
port default vlan 10
int g 0/0/4 
port link-type access 
port default vlan 20

sw4

undo info-center enable
vlan batch 10 20 30 40
int g 0/0/1
port link-type trunk
port trunk allow-pass vlan 10 20 30 40
int g 0/0/2
port link-type trunk
port trunk allow-pass vlan 10 20 30 40
int g 0/0/3
port link-type access
port default vlan 30
int g 0/0/4 
port link-type access 
port default vlan 40

再次去创建主根和次根 最后配置 mstp

设置主次根
sw1:

stp ins 1 root pri
stp ins 2 root sec

sw2:

stp ins 1 root sec
stp ins 2 root pri

配置mstp
sw1 ~ sw4

stp region-configuration
region-name l
ins 1 vlan 10 20
ins 2 vlan 30 40
active region-configuration

最后使用命令dis stp b查看

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


### 生成树协议(STP)的工作原理 生成树协议(STP, Spanning Tree Protocol)是一种用于防止网络中二层环路的协议。其主要作用是通过禁用冗余路径来消除潜在的广播风暴和其他问题,同时保留足够的备份路径以提高网络可靠性[^3]。 #### 工作流程 1. **选举根桥** 所有交换机参与选举过程,具有最低优先级值(Priority Value)和最小MAC地址的交换机会成为根桥(Root Bridge)。如果优先级相同,则比较MAC地址决定最终胜者[^2]。 2. **计算最短路径** 非根桥上的端口会根据开销(Cost)计算到达根桥的最佳路径,并标记这些端口为指定端口(Designated Port),其余未使用的端口则进入阻塞状态(Blocking State)。 3. **确定根端口与指定端口** - 根端口(Root Port)是指通向根桥成本最低的那个端口。 - 指定端口负责转发数据包至下游设备;而非指定端口会被置于阻塞状态以防形成环路[^1]。 4. **拓扑变化处理机制** 当检测到链路失效或其他事件引起的变化时,整个系统重新运行上述算法调整当前结构直至稳定下来完成新的收敛过程。 --- ### 生成树协议(STP)的配置方法 以下是针对思科设备的具体操作指南: #### 单VLAN环境下的基础配置 ```shell Switch(config)# spanning-tree mode stp ! 设置生成树模式为传统STP (802.1D) Switch(config)# no spanning-tree vlan <vlan-id> ! 可选关闭特定VLAN中的STP功能 ``` #### 多VLAN环境下MSTP实例分配 对于复杂环境中涉及多个虚拟局域网(VLAN),可以采用多生成树协议(Multiple Spanning Trees,MSTP): ```shell Switch(config)# spanning-tree mst configuration ! 进入MST配置模式 Switch(config-mst)# instance 1 vlan 10,20 ! 将某些VLAN映射给第一个实例 Switch(config-mst)# exit ! Switch(config)# spanning-tree mode mst ! 启动MSTP支持 ``` 另外还需注意一些常用调试命令帮助验证部署效果: ```shell show spanning-tree summary ! 查看全局概览信息 show spanning-tree interface f0/1 ! 显示某个具体接口的状态详情 debug spanning-tree ! 开启实时日志跟踪以便分析异常情况 ``` 以上便是关于如何理解和实施基本以及高级形式下生成树策略的主要内容概述^. --- ### 示例代码展示 下面提供一段简单的Python脚本模拟了部分逻辑判断环节: ```python class SwitchPort: def __init__(self,port_id,cost_to_root=999): self.port_id = port_id self.cost_to_root = cost_to_root def elect_root_bridge(switches): min_priority_switch=None lowest_mac="" for switch in switches.values(): if not min_priority_switch or \ ((switch.priority<min_priority_switch.priority)or\ (switch.priority==min_priority_switch.priority and str(switch.mac)<lowest_mac)): min_priority_switch=switch lowest_mac=str(min_priority_switch.mac) return min_priority_switch ``` 此函数实现了基于输入参数列表选出最优候选节点作为根桥的功能演示. ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笨笨轻松熊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值