STP生成树协议详解

看了网上关于STP生成树的解释感觉不是很懂,随即自己研究了一番

如有错误,欢迎指正,欢迎留言

--------------------------------------------------------------------------------------------------------------------

首先我们来了解一下为什么会有STP协议,即它能解决什么问题。

在企业里,为了防止线路故障,通常会做线路冗余,由于交换机会转发所有广播,所以会产生以下的问题:

      1.广播风暴。广播会在交换网络里无限传播,且越来越严重,直至占满交换机资源。

      2.重复帧。目标主机会收到越来越多的重复帧,这些重复帧可能每一个都需要回复。

      3.MAC地址表不稳定。由于交换机的自学习,使得发送广播的主机的MAC地址(即源MAC)不停的出现在交换机不同的接口。

所以出现了STP生成树协议,将多余的线路自动阻塞,防止以上的问题;当有线路故障时,又会生成新的生成树,原本阻塞的某一段又会重新开始转发帧,以达到线路冗余的目的。


我们来熟悉一下STP生成树的术语:

          桥ID:网桥的优先级(2字节)+本网桥最小MAC地址(6字节)

                    网桥优先级默认为32768

                    每一个交换机都有一个桥ID

          端口ID:端口优先级(1字节)+端口号(1字节)

                    端口优先级默认为128

                    每一个端口都有一个端口ID

        BPDU:桥协议数据单元,包含了网桥ID和Cost等信息


选举过程:

1.选择根桥

        具有最小网桥ID的交换机成为根桥

2.每个网桥选择一个根端口

        ①选取端口(注意是端口)到达根桥Cost值最小的端口作为根端口

        ②若以上相同,则选取BPDU发送方网桥ID最小的

        ③若以上均相同,则选取BPDU发送方端口ID最小的

                  带宽           Cost
                  10Gbps      2
                  1Gbps        4
                  100Mbps   19
                  10Mbps     100

3.每一个段选择一个指定端口

        ①选取网桥(注意是网桥)到达根桥Cost值最小的端口作为根端口

        ②若以上相同,则选取BPDU发送方网桥ID最小的

        ③若以上均相同,则选取BPDU发送方端口ID最小的

        注意:已经成为根端口的端口不再参与指定端口的选举

4.既不是根端口也不是指定端口的,进入阻塞状态


选举过程中端口的状态:

    Disable:不发送任何报文(端口处于关闭状态)

    Blocking:接收但不转发BPDU,不学习MAC地址,不接收也不转发帧(阻塞状态,但接收BPDU,需要时转为Listening)

    Listening:接收且转发BPDU,不学习MAC地址,不接收也不转发帧(监听状态,发送和接收BPDU)

    Learning:接收且转发BPDU,学习MAC地址,不接收也不转发帧(开始学习MAC地址)

    Forwarding:接收且转发BPDU,学习MAC地址,接收并转发帧(开始转发数据包)


   端口状态变化过程:

    Blocking-->Listening-->Learning-->Forwarding

    ①网桥开始活动后自动由Blocking转为Listening。

    ②在Listening阶段完成选举(20s),若为根端口或者指定端口则转为Learning,否则Blocking。

    ③在Learning阶段(15s)开始学习MAC地址,为数据转发做准备工作。

    ④Forwarding阶段(15s)就可以开始数据转发了。


读者可以根据下面的拓扑图练习一下STP生成树

        通过sh int | include bia 可以查看交换机的MAC地址

        通过sh spanning-tree可以查看各端口的状态

       

谢谢阅读。





posted @ 2018-06-06 13:02  NetRookieX  阅读(45)  评论(0编辑  收藏  举报