一,STP概述

      STP(Spanning Tree Protocol,生成树协议)是有应用于交换机之间的防环的。功能是用来防环的。

      基本原理:

         通过在交换机之间传递一种特殊的协议报文,网桥协议数据单元(BPDU),来确定网络的拓扑结构。BPDU有两种,一种是配置BPDU(configuration BPDU),一种TC BPDU(拓扑变更BPDU)。

          前者是用于计算无环的生成树的;后者是用于在二层网络拓扑发生变化时产生用来缩短MAC表项的刷新时间的(由默认的300s--->15s)

     分类:

          STP--->802.1D

          PVST

          RSTP---->802.1w

          MSTP---->802.1s

二,STP选举机制

     1.STP网桥角色

        角色:根网桥(Root),备根网桥(Secondary),非根网桥

        选举依据:根据BID(网桥ID)来标识符来进行选举的

           --->BID=优先级(默认是32768)+本地MAC地址

        越小越优先

     2.STP端口角色

        角色:根端口(RP),指定端口(DP),非指定端口(NDP)

        选举依据:

               ①先选举cost值最短

               ②再选举BID最小

               ③再选举邻居PID最小

               越小越优先----在STP中所有的参数都是越小越优先

        总结:

           根端口:对象是非根设备,每个非根设备有且仅有一个,除了根以外,离根最近的端口,用来接收BPDU分组。

           指定端口:对象是链路,每条链路上有且仅有一个。离根最近,用来发送BPDU分组

           阻塞端口:每一个环形拓扑有且仅有一个,用来阻塞数据防止环路。

   要根据PID来选举的情况:

   STP生成树协议的分析总结_第1张图片

    3.STP选举流程

        步骤:

           ①先选举根桥,并且根桥的所有接口都为DP。 

           ②一般DP对面就是RP(因为DP发送BPDU分组,RP接收BPDU分组)

           ③一般选举的流程:

             先选根桥--->选DP/RP--->选NDP(阻塞端口)          

三,STP数据分组----BPDU

      1.BPDU的定义

         BPDU(Bridge Protocol Data Unit,网桥协议数据单元)用于实现生成树的选举和维持。一般包含选举的参数,如BID,PID,cost。

     ----初始情况,都能发送,当根选举出来之后,只有根才能发送,其他交换机仅仅是转发。

      2.BPDU的分类 

         配置BPDU----周期2s

         TC BPDU----①TCN BPDU  ②TC BPDU ③TCA BPDU 

         TCN BPDU:拓扑变更告知包,只能从RP发出,不一定所有的交换机都有该数据包

         TC BPDU:拓扑变更包,当根桥收到TCN BPDU后,会从DP指定端口发出TC BPDU包,所有的设备都会收到该数据包,收到TC BPDU数据包的设备会将MAC地址的老化时间从300s设置为15s。

         TCA BPDU:拓扑变更确认包,当收到TCN BPDU的交换机会向发送者发送TCA BPDU报文,作为回复。

       3.拓扑发生变化的流程---重点

        正常情况下,交换机只会从它的RP根端口每2s接收到configuration BPDU包,但不会主动发送configuration BPDU给root bridge 根桥的。

        发生拓扑变化时,

        ①当交换机检测到拓扑发生变化了,它就会发送TCN BPDU包给root bridge,切记,TCN是通过root port向root bridge方向发出的。 

           ②当交换机从它的指定端口DP接收到TCN类的BPDU,它必须为其做转发,也是从它的RP发出,同时,它必须做出回复,从它的DP向发送者发送TCA BPDU作为回复。  注:这里是正常的configuration BPDU包.它的TCA位被置1,表明是要给TCN以回复的,但它跟TCN不是一类型的包.

        ③当TCN到达root bridge后,root bridge也要做出回应,会发出一种正常的BPDU包,包内的TC字段会被置1,TC即topology change,表示发现拓扑变化.这个包会被所有交换机转发,同样的TC位会置1,直至传遍全网,所有交换机都得知拓扑变化为止.  

        ④收到TC BPDU包的交换机将把MAC地址的老化时间从300s--->15s   

四,STP端口状态机

     1.端口状态机

        功能:描述端口从初始化状态到最终转发数据的过程

STP生成树协议的分析总结_第2张图片

     BLK:阻塞状态   处理BPDU,对应接口只能接收BPDU

     LIS:监听状态,处理BPDU和端口选举

     LRN:学习状态 ,地址学习。

     FWD:转发状态,数据的转发。

五,STP链路收敛

     1.链路状态收敛的定义

        从链路出现故障到网络拓扑恢复稳定的过程

     2.分类

        直接链路收敛和间接链路收敛

        直接链路收敛-----30s

       必须满足的条件:-----原先的NDP就处于阻塞状态了,所以就不需要最大20s的老化时间了。

        当二层网络中拓扑发生改变,将处于阻塞状态下的端口过渡到转发状态,可能用30秒或50秒的时间.其故障原因满足下面条件,从阻塞状态过渡到转发状态需要30秒,那就是交换机X的直连链路down并且阻塞接口同时也位于交换机X之上,此时30秒可以收敛[直连检测机制]。其它情况均为50秒。

        间接链路收敛-----50s

        间接情况:down掉的交换机x上没有阻塞端口NDP,需要20s的老化时间。

六,STP增强特性

   1.Portfast---加速30s

      端口加速,用于加速主机接入交换机。

      注:如果在连接其他交换机的端口上启用portfast的时候,将存在产生根桥环路的风险

      配置和验证portfast特性:

    STP生成树协议的分析总结_第3张图片

 2.uplinkfast-----加速30s

      能够在直接链路故障后提供快速收敛,加速选举新根端口。

      注:启用uplinkfast特性时,将影响到交换机上所有的vlan。Catalyst交换机不支持以vlan为基础配置uplinkfast特性。

      在 交换机启动uplinkfast后,由于提高了交换机上所有端口的路径开销,所以不适合作为根桥。

      uplinkfast激活一个快速重新配置的条件:

            ①在交换机上必须启动uplinkfast功能

            ②至少有一个处于Blocking的端口(存在冗余链路)

            ③链路失效必须发生在Root Port。

        wKioL1W5wRTzx8c4AAC5stByE-U185.jpg           

       wKioL1W5wTfiWxXYAACJYZZVChw774.jpg

3.Backbonefast------加速20s

   骨干加速,用于加速间接链路收敛,加速20s

   在丢失了根端口且备份俩路采用不同交换机的情况中,该特性可以降低默认的收敛时间50s--->30s。

   注:通过自己做实验得知,在间接链路收敛上,down掉的端口必须是Root Port根端口。