• stp基本介绍


    stp生成树协议 防环**

    为了提高网络的可靠性,交换网络中通常会使用冗余链路。然而,在冗余链路中会给交换网络带来环路风险,并导致广播风暴以及MAC地址表翻摆等的问题,进而影响到用户的通信质量。生成树协议STP(Spanning Tree Protocol)是一种由交换机运行的、用来解决交换网络中环路问题的数据链路层协议。

    1 mac地址表翻摆

    当pc发送了一个广播帧A,交换机收到这个广播帧之后会进行泛洪操作,这样,SW1的e0/0/1---SW2的e0/0/----SW3的e0/0/1---SW3的e0/0/2----SW1的e0/0/2,同样的道理,SW1的e0/0/2----SW3的e0/0/2---SW2的e0/0/2---SW1的e0/0/1,这样以来,这个广播帧会顺时针和逆时针不停的旋转,每次A进入交换内,交换都会不停的修改mac-address表,这样就形成了mac地址表的翻摆。快速的mac地址表翻摆会大量消耗交换机的cpu,严重导致网络的拥堵。

    2 广播风暴

    因为A会不停的快速旋转,每台交换机都会收到A帧的拷贝,每次收到之后都会进行泛洪的操作,不停的进行泛洪转发,这样就形成了广播风暴。(和mac地址表翻摆同样的道理) 不停的进行泛洪,如果大量广播帧进入的话,会严重影响交换机的处理速度,导致网络的断掉。另外,计算机也会收到广播帧,并且会将广播帧通过网卡收到之后交给上层网络去处理,大量广播帧的话也可能导致计算机的cpu运算不足,导致计算卡顿甚至关机蓝屏。

    3 多帧复制

    pc1向pc2发送了一个单播帧B,假设SW1的mac-address中没有关于pc2的mac地址,SW2的mac-address中存在pc2的mac地址,SW3的mac-address中也存在关于pc2的mac地址。当pc1向pc2发送一个单播帧B的时候,由于SW1不知道 pc2的mac地址,所以SW1会进行泛洪的操作,这样以来,SW2和SW3都会收到一个单播帧B,又由于,SW2和SW3都存在pc2的mac地址,所以SW2和SW3都会对单播帧B进行对pc2的转发操作,这样以来pc2就收到了两个同样的单播帧B,这样就形成了多帧复制的现象。

    STP树的生成

    设想一下,在存在环路的网络中如何消除环路呢。最好的办法就是切断其中一条线路,这样环路就消失了。但是如果其中的一条线路被切断了,那么网络中如果发生故障时两台设备就没办法实现链路备份了。如何才能既想要在有环网络中消除环路,又能实现链路备份呢?显然,在物理状态下是没有办法实现的。(因为不可能通过人工手动插拔网线监测网络故障)但是我们可以假想一下,如果在逻辑层面上,**网络在运行正常的情况下让其中的某个端口保持阻塞状态,当网络发生故障的时候再让该端口保持转发状态,恢复正常。完成链路备份**。**这样,就可以做到既能消除环路,又能实现链路备份。**

       **这就是STP协议的基本原理:**在一个具有物理环路的交换网络中,交换机通过运行STP协议,自动生成一个没有环路的工作拓扑。该无环工作拓扑也成为STP树,当网络拓扑发生变化时,STP树也会自动地发生相应的改变。简言之,有环的物理拓扑提高了网络连接的可靠性,而无环的工作拓扑避免了广播风暴、MAC地址表震荡。这就是STP的精髓。

    **运行过程**
    STP算法很复杂,但是其过程可以归纳为以下三个部分。
    1.选择根网桥
    2.选择根端口
    3.选择指定端口

    **aa.**选择根网桥的依据是交换机的网桥优先级,网桥优先级是用来衡量网桥在生成树算法中优先级的十进制数,取值范围是0~65535.默认值是32768,网桥ID=网桥优先级+网桥MAC地址组成的,共有8个字节。由于交换机的网桥优先级都是默认,所以在根网桥的选举中比较的一般是网卡MAC地址的大小,选取MAC地址小的为根网桥
    **bb.**选择根端口是到根网桥路径开销最低,根路径开销是两个网桥间的路径上所有链路的开销之和,也就是某个桥网到达根网桥的中间所有链路的路径开销之和。
    **cc.**选择指定端口:第一选择根路径开销较低,第二是所在的交换机网桥ID值最小,第三端口号最小。
    注:根桥上的所有端口都是指定端口。
    **端口状态**
    Blocking(阻塞状态):不会参与数据帧的转发。该端口通过接收BPDU来判断根交换机的位置和根ID,以及在STP拓扑收敛结束之后,各交换机端口应该处于什么状态,在默认情况下,端口会在这种状态下停留20秒钟时间。
    Listening(侦听状态):生成树此时已经根据交换机所接收到的BPDU而判断出了这个端口应该参与数据帧的转发。于是交换机端口就将不再满足于接收BPDU,而同时也开始发送自己的BPDU,并以此通告邻接的交换机该端口会在活动拓扑中参与转发数据帧的工作。在默认情况下,该端口会在这种状态下停留15秒钟的时间。
    Learning(学习状态):这个二层端口准备参与数据帧的转发,并开始填写MAC表。在默认情况下,端口会在这种状态下停留15秒钟时间。
    Forwarding(转发状态):这个二层端口已经成为了活动拓扑的一个组成部分,它会转发数据帧,并同时收发BPDU。
    Disabled(禁用状态):这个二层端口不会参与生成树,也不会转发数据帧。

  • 相关阅读:
    openEuler 通过Rook在k8s集群部署Ceph
    公众号点击原文下载文件怎么设置
    Pytorch实用教程:pytorch中可以做哪些优化,以提高模型的识别精度
    sd-webui-controlnet代码分析
    云原生|kubernetes|k8s下部署SQLServer以及Navicat连接SQLServer报错:远程主机强迫关闭了一个现有的连接 错误的解决
    Redis--缓存击穿、缓存穿透、缓存雪崩
    Kettle循环结果集中的数据并传入SQL组件【或转换】里面
    74cms骑士人才招聘系统源码SE版 v3.16.0
    AI智能监控平台EasyCVR+无人机方案:实时全景无死角全方面助力山区安防系统新升级
    Aandroid studio编码最实用的快捷键
  • 原文地址:https://blog.csdn.net/Shakespeare_i/article/details/126684063