STP 使用生成树算法 (STA) 计算网络中的哪些交换机端口应配置为阻塞才能防止环路形成。STA 会将一台交换机指定为根桥,然后将其用作所有路径计算的参考点。在上图中,交换机 S1 在选举过程中被选为根桥。所有参与 STP 的交换机互相交换 BPDU 帧,以确定网络中哪台交换机的网桥 ID (BID) 最小。BID 最小的交换机将自动成为 STA 计算中的根桥。

BPDU 是运行 STP 的交换机之间交换的消息帧。每个 BPDU 都包含一个 BID,用于标识发送该 BPDU 的交换机。BID 内含有优先级值、发送方交换机的 MAC 地址以及可选的扩展系统 ID。BID 值的大小由这三个字段共同决定。

确定根桥后,STA 会计算到根桥的最短路径。每台交换机都使用 STA 来确定要阻塞的端口。当 STA 为广播域中的所有目的地确定到达根桥的最佳路径时,网络中的所有流量都会停止转发。STA 在确定要开放的路径时,会同时考虑路径开销和端口开销。路径开销是根据端口开销值计算出来的,而端口开销值与给定路径上的每个交换机端口的端口速度相关联。端口开销值的总和决定了到达根桥的路径总开销。如果可供选择的路径不止一条,STA 会选择路径开销最低的路径。

STA 确定了哪些路径要保留为可用之后,它会将交换机端口配置为不同的端口角色。端口角色描述了网络中端口与根桥的关系,以及端口是否能转发流量。

根端口 - 最靠近根桥的交换机端口。在示例中,交换机 S2 的根端口是 F0/1,该端口位于交换机 S2 与 S1 之间的中继链路上。交换机 S3 的根端口是 F0/1,该端口位于交换机 S3 与 S1 之间的中继链路上。

指定端口 - 网络中获准转发流量的、除根端口之外的所有端口。在示例中,交换机 S1 上的端口 F0/1 和 F0/2 都是指定端口。交换机 S2 的 F0/2 端口也是指定端口。

非指定端口 - 为防止环路而被置于阻塞状态的所有端口。在示例中,STA 将交换机 S3 上的端口 F0/2 配置为非指定端口。交换机 S3 上的 F0/2 端口处于阻塞状态。

根桥的选举过程:
如上图:
s3:
网桥ID:
优先级=32769
MAC地址=00A00222222

S2:
网桥ID:
优先级=32769
MAC地址=00A00111111

S1:
网桥ID:
优先级=24577
MAC地址=00A00333333

交换机启动后,会每 2 秒向外发送 BPDU 帧,其中包含根 ID 以及自己的 BID。对网络中的所有交换机而言,默认情况下此根 ID 与其本地 BID 相同。根 ID 用于标识网络中的根桥。最开始,每台交换机在刚启动时都将自己视为根桥。

随着交换机开始发送 BPDU 帧,广播域中的邻接交换机从 BPDU 帧中读取到根 ID 信息。如果收到的 BPDU 中包含的根 ID 比接收方交换机的根 ID 更小,接收方交换机会更新自己的根 ID,将邻接交换机作为根桥。注:也可能不是邻接交换机,而是广播域中的任何其它交换机。交换机然后将含有较小根 ID 的新 BPDU 帧发送给其它邻接交换机。最终,具有最小 BID 的交换机被公认为生成树实例中的根桥。

到根桥的最佳路径

为生成树实例指定根桥后,STA 便开始确定从广播域内所有目的地到根桥的最佳路径。将从目的地到根桥的路径上沿途的每个端口开销加在一起便可得到路径信息。

默认情况下,端口开销由端口的运行速度决定。 10-Gb/s 以太网端口的端口开销为 2,1-Gb/s 以太网端口的端口开销为 4,100-Mb/s 快速以太网端口的端口开销为 19,10-Mb/s 以太网端口的端口开销为 100。

注:STP 使用的端口开销值由 IEEE 定义。随着更新、更快的以太网技术面世,路径开销值也可能进行相应的改变,以满足各种可用速度的要求。

尽管交换机端口关联有默认的端口开销,但端口开销是可以配置的。通过单独配置各个端口开销,管理员便能灵活控制到根桥的生成树路径。

路径开销是到根桥的路径上所有端口开销的总和。路径开销最低的路径会成为首选路径,所有其它冗余路径都会被阻塞。在上图中,交换机 S2 通过路径 1(s2-s1) 到根桥交换机 S1 的路径开销是 19(基于 IEEE 定义的单端口开销),而使用路径 2(s2-s3-s1) 的路径开销是 38。由于路径 1 到根桥的总路径开销更低,因此其是首选路径。STP 随后将其它冗余路径阻塞,以防形成环路。

转载于:https://blog.51cto.com/frecolwang/294027

STP 简介----生成树算法相关推荐

  1. 计算机网络生成树算法,生成树算法

    在图论的数学领域中,如果连通图G的一个子图是一棵包含G的所有顶点的树,则该子图称为G的生成树(SpanningTree).生成树是连通图的包含图中的所有顶点的极小连通子图.图的生成树不惟一.从不同的顶 ...

  2. 快速生成树算法java_生成树RSTP,快速生成树协议,交换网络必用的破环协议,面试必备...

    一.RSTP 802.1w 标准定义了快速生成树协议 RSTP(Rapid Spanning Tree Protocol),该协议基于 STP 协议,对原有的 STP 协议进行了改进并实现了快速收敛. ...

  3. JAVA后端生成树算法,从指定的叶子节点到树根生成树,从树根到所有叶子结点

    4/11 10:20 更新了一些算法解释 4/18 17:17 更新了生成子树的方法,更加灵活了 先贴代码吧 import java.util.*;/*** @Author xjd* @Date 20 ...

  4. 惊艳!为艺术而生的算法

    作者 | Jack Cui 来源 | Jack Cui(ID:JackCui-AI) 周一,看到 arXiv 新发了一篇非常有趣的论文:「Stylized Neural Painting」. 看着很有 ...

  5. DL之DNN之BP:神经网络算法简介之BP算法/GD算法之不需要额外任何文字,只需要八张图讲清楚BP类神经网络的工作原理

    DL之DNN之BP:神经网络算法简介之BP算法/GD算法之不需要额外任何文字,只需要八张图讲清楚BP类神经网络的工作原理 目录 BP类神经网络理解 1.信号正向传播FP 2.误差反向传播BP+GD B ...

  6. DL之BP:神经网络算法简介之BP算法简介(链式法则/计算图解释)、案例应用之详细攻略

    DL之BP:神经网络算法简介之BP算法简介(链式法则/计算图解释).案例应用之详细攻略 相关文章:DL之DNN之BP:神经网络算法简介之BP算法/GD算法之不需要额外任何文字,只需要八张图讲清楚BP类 ...

  7. shell脚本详解(六)——数组简介和排序算法

    shell脚本详解(六)--数组简介和排序算法 一.数组 1.数组的定义方法 ①.方式一: ②.方式二: ③.方式三: ④.方式四: 2.数组包括的数据类型 3.获取数组长度 4.获取数据列表 5.读 ...

  8. python兔子编程_Python兔子生兔子算法,编程练习题实例十一

    Python兔子生兔子算法,编程练习题实例十一 Python兔子生兔子算法,编程练习题实例十一 没学习python之前就听说过一个兔子生兔子的数学算法问题.现在学习了python编程后,自然要用pyt ...

  9. python兔子生兔子_Python兔子生兔子算法,编程练习题实例十一

    没学习python之前就听说过一个兔子生兔子的数学算法问题.现在学习了python编程后,自然要用python语言来解决这个问题啦.Python编程练习题和答案实例十一,兔子生兔子的算法详解如下. P ...

最新文章

  1. 《Visual Studio Hacks 》(十)
  2. jquery option 动态 selected
  3. 如何重新安装TCP/IP协议
  4. monotouch Single View Application
  5. Go判断输出数据类型
  6. 关于火狐中使用jquery的animate做动画效果的问题解决
  7. LeetCode 1694. 重新格式化电话号码(模拟)
  8. Cloudera完善企业数据云愿景,新品进一步扩展无处不在的云体验
  9. 一维卷积神经网络_序列特征的处理方法之二:基于卷积神经网络方法
  10. R与Python手牵手:多格式文件导入与爬虫
  11. CSS display 常用属性小结
  12. 中国石油大学《大学语文》第一阶段在线作业
  13. 解决Server returned HTTP response code: 403 for URL报错
  14. 有关于APICLOUD打印条码功能的操作
  15. ONF推出第二版Atrium 获OpenDaylight支持
  16. 结构化数据和非结构化数据的分析
  17. 随着新时代的5G来临,中国半导体行业落后,中国看到了以AI芯片取代美国的机会
  18. 第一章:Java语言概述与环境开发
  19. python demo.py_pythonDemo.py
  20. 网络新闻评论观点挖掘系统实现

热门文章

  1. 走近webpack(0)--正文之前的故事
  2. python3 的encode 和 decode
  3. software RAID0+cryptsetup磁盘加密
  4. eslint 学习笔记
  5. Js中的window.parent ,window.top,window.self 详解
  6. 数论 - SGU 105 DIV3
  7. ( KMP 求循环节的个数)Power Strings -- poj -- 2406
  8. DNA Sorting(排序)
  9. 详解Spring MVC 4之ViewResolver视图解析器
  10. AppBox升级进行时 - 拥抱Entity Framework的Code First开发模式