STP生成树

1、生成树是为了防止二层环路造成的广播风暴。通过阻塞环路的某个端口从而达到消除环路的目的。

2、生成树的选举过程:

①选举根桥:

根据BPDU报文中的BID选举根桥。BID为优先级+最小的mac地址,越小越优先。

②选择根端口:

在每一个非根桥的交换机上选举一个端口,该端口到根桥的代价是最小的,该端口称为根端口。

1)比较每个端口到根桥的cost值的累加和,越小越优先。10M=cost为100,100M=cost为19,1000M=cost为4,10000M=cost为2。

2)cost值无法比较出来,那么就比较上连交换机的BID。

3)上连交换机的BID无法比较出来,那么就比较对端的port-ID,port-ID为优先级+端口编号,128+端口编号(如f/1)

4)对端的port-ID无法比较出来,那么就比较自己这段的port-ID。

③选择指定端口:

在每一条链路上选择一个指定端口。

1)比较链路两端各自到根桥的cost的累加和,越小越优先。或者比较根端口到根桥的cost值。越小越优先。

2)比较两端交换机的BID。

3)比较两端端口的port-ID。

④将既不是指定端口又不是根端口的端口阻塞掉(阻塞端口):

3、生成树的收敛:

生成树发送BPDU的时间2秒一个,老化时间为20秒。一般生成树的收敛时间为30-50 秒,20秒的阻塞、15秒的监听、15秒的学习。当链路发送变化时,发生变化的交换机负责发生一个TCN报文给所有的交换机,其他交换机收到后给他回复一个TCA报文,同时将他的TCN报文向上转发给根桥,根桥收到之后全网泛洪一个TC报文,通知全网进行mac地址表的更新。当交换机收到TC报文时会将mac地址表的老化时间由原来的300秒变为15秒。从未加快整个网络的收敛。

4、生成树的优化:

①portfast:快速端口。将交换机的端口置为portfast端口,那么该端口就不会参与生成树的收敛计算,该段就成为一个即插即用的端口。一般portfast端口用于边缘端口,如终端设备电脑、打印机、监控等。置为portfast的端口是不会转发BPDU报文的,但是可以接收BPDU报文。当portfast端口收到一个BPUD报文时,那么此时也要加入到生成树的收敛计算中。

②uplinkfast:(还能从其端口收到BPDU报文)将阻塞端口置为uplinkfast后,当转发链路出现故障时,阻塞链路就会省去15秒监听和15秒学习,直接进入转发阶段。

③backbonefast:(不能从其他端口收到BPDU报文)将阻塞端口置为backbonefast后,当转发链路故障之后,阻塞链路会将省去20秒的阻塞时间,但是依然需要15秒监听1秒学习时间。

5、生成树的安全:

①bpduguard:开启了bpduguard的端口后,该端口就不能在收到BPDU报文,一但该端口收到了BPDU报文后就会直接将该端口置为err-disabled状态。一般用于开启了portfast端口,防止恶意者伪造BPDU报文破坏生成树。

②bpdufilter:用于过滤BPDU报文,开启了bpdufilter的端口,则该端口既不收BPDU也不发送BPUD报文。一般用于两个网络的生成树的隔离,也能有效隔离恶意破坏者的攻击。

③guard:开启了guard的端口,则在一个已经确定好根桥的生成树网络中,当该端口再收到一个BPDU报文中的BID比已经确定的根桥的BID还优先时,则就将该端口置为err-disabled状态。

④loop guard :用于防止单向环路,例如光纤一根用于发送一根用于接收,放接收故障,而发送正常时就会无法收到根桥的BPDU,从未认为该链路down掉,那么就会将阻塞的接口打开,此时就会形成一个单向的环路。而loop guard就是用于防止这样的情况产生。

6、BPUD:

BPDU由根桥产生,指定端口只能转发来自于根桥的BPDU,阻塞端口与根端口只能接收BPDU报文。

7、MSTP与PVSTP:

PVSTP是Cisco私有协议,MSTP是共有协议。都是多生成树实例。就是在一个网络中可以运行多个生成树实例。PVSTP与MSTP都默认开启了uplinkfast与backbonefast所以收敛时间很快,一般在1-6秒就是收敛完成。

8、RSTP:

RSTP与普通的STP一样,在一个网络中只能运行一颗生成树。但是RSTP在普通的生成树上做了优化,能够更快速的收敛网络。在RSTP中只有丢弃端口discrete、学习learn、转发forward三种端口角色。端口状态有根端口、指定端口、备份端口、备用端口。备份端口作为根端口的备用,而备用端口作为指定端口的备用端口。备份端口指的是除了从转发接口能收到BPDU报文,还能从另一个阻塞端口收到来自于根桥的BPDU报文,那么这个阻塞端端口就叫做备份端口。备用端口就是我的指定端口转发出去的BPDU报文又从自己另一个端口收到,那就这个端口就叫做备用端口。当转发端口出现故障时,我们的备份端口直接进入到转发状态,从而加快了生成树的收敛带来的延迟丢包。

在普通的生成树中出现链路故障的交换机负责发送TCN报文,最后由根桥发送TC报文通告全网。这样在一定的程度上也延迟了生成树的收敛。在RSTP中TC报文直接由当前出现故障的交换机进行全网泛洪。

在RSTP中的 P/A 机制也加快了生成树的收敛时间。当新的交换机或者链路或者链路故障时,那么就会发生带有提议的BPDU报文P,只有对方所有接口为阻塞或边缘接口时那么就会发送一个带有同意的BPDU报文A。该过程几乎全网同时进行,加快了生成树的收敛时间。所以RSTP生成树的收敛时间是很快的,一般1-6秒。如果要使0丢包0感知切换,那么就需要使用到堆叠技术。

Original: https://www.cnblogs.com/WorldNoBug/p/16633807.html
Author: Ant_blog
Title: STP生成树

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/616548/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • pygame代码大全_Python打砖块小游戏源代码

    这次用Python实现的是一个接球打砖块的小游戏 ,最核心的就是:碰撞检测的数学模型 程序运行截图: 其实,编程问题到最后就是数学问题,这个游戏涉及到2D圆形与矩形的碰撞检测问题:…

    Python 2023年9月21日
    066
  • Python 局部变量global,全局变量local ,非局部变量nonlocal ,Enclosing function locals作用域

    一、作用域 Local 局部作用域 Enclosing 嵌套作用域 nonlocal 只作用于嵌套作用域,而且只是作用在函数里面 global 全局作用域 Built-in 内置作…

    Python 2023年5月24日
    080
  • pygame重新开始_Pygame(十八)音乐

    Pygame(十八)音乐 没有声音的游戏是没有灵魂的. 游戏中怎么可以没有声音呢? 前情提要 本节提要 内容详情 这长长的一串,对比昨天的短小无力,感觉今天的工作是真的大. 内容详…

    Python 2023年9月23日
    056
  • 国科大-高性能计算考试

    考试比较难,课程比较繁琐。把老师每节课留的课后题都做一些,考试基本就是这些东西 高性能计算2022 加粗样式 考试 1. 启动MPI程序时系统生成的是1维程序··· 写出一个子程序…

    Python 2023年11月9日
    046
  • matplotlib

    导入matplotlib 和 numpy, pandas一样,在导入 matplotlib时我们也可以用一些常用的简写形式: import matplotlib as mpl im…

    Python 2023年9月3日
    053
  • Numpy.diff函数的原理

    记录Numpy.diff函数的个人理解 基本使用 * np.diff的参数 – axis=0 axis=1 axis=2 基本使用 np.diff()做了数组中元素的减…

    Python 2023年8月28日
    061
  • python基础-流程控制

    逻辑判断:对于一件事情正确与否的判断,python中用布尔类型真(True)、假(False)做区分; 根据判断结果的不同去完成的不同操作,就是我们的业务逻辑; 对于条件是否满足的…

    Python 2023年10月31日
    045
  • Linux服务器安装pytorch更换conda清华镜像源

    1、添加清华镜像源 依次输入以下命令: conda config –add channels https://mirrors.tuna.tsinghua.edu.cn/…

    Python 2023年9月7日
    052
  • 突然 Java 倒下了……

    TIOBE 公布了 2022 年 12 月的编程语言排行榜。 Java 首次跌出前 3 名。除此之外,Kotlin 和 Julia 也越来越接近 Top 20。 TIOBE 将于下…

    Python 2023年10月8日
    038
  • Pandas入门详细教程(二)

    文章目录 * – pandas常用统计方法 – 数据合并之join、merge – 分组和聚合 pandas基础内容可跳转之前文章 Pandas…

    Python 2023年8月7日
    060
  • Python学习.iloc和.loc区别、联系与用法

    最近接触到数据科学,需要对一些数据表进行分析,观察到代码中一会出现loc一会又出现iloc,下面对两者的用法给出我的一些理解。 1.联系 (1)操作对象相同:loc和iloc都是对…

    Python 2023年8月6日
    049
  • 【区块链实战】如何创建一个带参数的智能合约

    目录 一、简介 二、知识点 智能合约 Solidity 公共变量 Solidity 私有变量 以太坊椭圆曲线算法 keccak256 abi 转码 智能合约编译,部署和运行 三、菜…

    Python 2023年9月27日
    055
  • 千古前端图文教程-HTML011-HTML基础知识回顾

    HTML基础知识回顾 HTML基础知识回顾 本文主要内容 #html 的常见元素 #1、head 区域的 html 元素 #2、html 元素(body 区域) #html 文档的…

    Python 2023年6月12日
    0117
  • 学会编程,能拿高薪?别再被洗脑了!

    大家好,我是程序员万峰。 [En] Hello, everyone, this is programmer Wanfeng. 上次我劝阻业余选手,今天我是来劝说专业选手辞职的。 […

    Python 2023年5月24日
    060
  • geodesic distance

    geodesic distance 1、python实现geodesic距离 2、c++实现geodesic距离 1、python实现geodesic距离 其中见到的出现最多的名词…

    Python 2023年8月27日
    051
  • pytest 接口自动化 从百草园到三味书屋…

    pytest 接口自动化从百草园到三味书屋… 开发环境 requests * – 安装requests GET 请求 POST请求 添加header信息 结…

    Python 2023年9月11日
    044
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球