生成树(STP)

原理概述

1:STP 是用来避免数据链路层(二层)环路的协议。使用 BPDU (网桥协议数据单元,可以认为是报文)传递网络信息计算出一 个无环的树状网络结构,并阻塞特定端口。在网络出现故障的时候,STP 能快速发现链路故 障,并尽快的找出另外一条路径用来进行数据传输。 交换机上运行的 STP 通过 BPDU 信息的交互,选举根交换机,然后每台非根交换机选 择用来与根交换机通信的根端口,之后每个网段选择用来转发数据至根交换机的指定端口, 最后剩余端口则被阻塞。

2:选根桥(根据优先级和MAC地址进行比较,谁小谁优,默认优先级为32768);选根端口;选指定端口;阻塞剩余端口。

BPDU 选举四点

1:根桥ID(生成树运算第一步就是通过比较每台交换机的交换机 ID 选举根交换机,交换机 ID 由 交换机优先级和 MAC 地址组成。首先比较交换机优先级,数值最低的为根交换机,如果优 先级一样,则比较 MAC 地址,同样数值最低的选举为根交换机。)

2:RPC(根路径开销 root path cost)

3:发送者桥ID

4:发送端口ID

 现在将 S1 配置为主根交换机,S2 为备份根交换机,将 S1 的优先级改为 0,S2 的优先 级改为 4096。

[S1]stp priority 0

[S2]stp priority 4096

 查看 S2 和 S3 的 STP 状态

Hello Time 定时器:Hello Time 为周期发送 BPDU 来维护生成树的稳定的时间,默认为 2 秒。

Max Age 定时器:BPDU 的最大生存时间,默认为 20 秒。

Forward Delay 定时器:此延迟时间为 Forward Delay 定时器的时间,默认为 15 秒。STP 采用了一种端口状态迁移机制,新选出的根端 口和指定端口要经过 2 倍的 Forward Delay 延时后才能进入转发状态,这个延时保证了新的 配置消息传遍整个网络。

使用命令 ping  x.x.x.x -t 持续发送 ICMP 报文,进行连通性测试。当主链路down之后,备份链路会从该链路收到来自根桥的BPDU,经过最短转发时间30s 后,转发数据,在 S1 上修改 STP 的 Forwad Delay 时间为 2000 厘秒,默认为 1500 厘秒。注意,只有在 根交换机上进行该配置才会生效。

[S1]stp timer forward-delay 2000

STP角色

根端口(root port)指定端口(designation port)阻塞端口(blocking port)

STP端口状态

disable (未使能) blocking(阻塞)listening (监听 )learing (学习) forwarding(转发)

 

 

 

 

 

 

 

 

### 生成树协议(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 ``` 此函数实现了基于输入参数列表选出最优候选节点作为根桥的功能演示. ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Fe_smoothlyx

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

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

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

打赏作者

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

抵扣说明:

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

余额充值