杭州校区切换校区
图标

学习文章

当前位置:首页 > >学习文章 > >

STP生成树简介

发布时间: 2017-06-16 14:35:08

STPSpanning Tree Protocol是生成树协议的英文缩写。该协议可应用于环路网络,通过一定的算法实现路径冗余,同时将环路网络修剪成无环路的树型网络,从而避免报文在环路网络中的增生和无限循环。STP的基本原理是通过在交换机之间传递一种特殊的协议报文(在IEEE 802.1D中这种协议报文被称为“配置消息”)来确定网络的拓扑结构。配置消息中包含了足够的信息来保证交换机完成生成树计算。

生成树协议STP/RSTP

技术原理:

  STP的基本思想就是生成“一棵树”,树的根是一个称为根桥的交换机,根据设置不同,不同的交换机会被选为根桥,但任意时刻只能有一个根桥。由根桥开始,逐级形成一棵树,根桥定时发送配置报文,非根桥接收配置报文并转发,如果某台交换机能够从两个以上的端口接收到配置报文,则说明从该交换机到根有不止一条路径,便构成了循环回路,此时交换机根据端口的配置选出一个端口并把其他的端口阻塞,消除循环。当某个端口长时间不能接收到配置报文的时候,交换机认为端口的配置超时,网络拓扑可能已经改变,此时重新计算网络拓扑,重新生成一棵树。


功能介绍:

  生成树协议最主要的应用是为了避免局域网中的网络环回,解决成环以太网网络的“广播风暴”问题,从某种意义上说是一种网络保护技术,可以消除由于失误或者意外带来的循环连接。生成树协议运行生成树算法(STA).生成树算法很复杂,但是其过程可以归纳为以下三个步骤:

(1)选择根网桥

(2)选择根端口

(3)选择指定端口

STP生成树原理

单点失效(signle point of failure)及其解决方法:

    当两个Segement之间只有一条物理连接时就有可能出现单点失效→ 单方面的故障导致全网Down;Segement的三种概念:在STP领域表示一段物理介质(网线/光纤)、在封装领域表示经过L4封装的数据、在路由领域表示被L3设备所分割的逻辑子网;避免单点失效的方法构建冗余网络。冗余网络三大问题:


多帧复制(Multiple Frame Copies)-未知MAC地址的数据帧在交换机间不断的复制转发复制转发……直到找到该目标地址并成功构建MAC映射,而这时该目标已经收到了N个同样的数据帧了;

MAC表地址跳动(MAC-Adress Instability)-因为几个接口都能够连接同一个PC因此MAC表中该设备的MAC值匹配的接口不断在几个接口间跳动;

广播风暴(Broadcast Storms)-广播会永无休止的发送下去占用越来越多的资源直到资源耗尽网络堵塞交换机Down机。

解决方法:STP。

 

生成树协议STP(Spaining Tree Protocol)

    STP核心:Provides a loop-redundant network topology,by placing certain in the blocking state(在冗余网络中将特定的端口置于阻塞状态,来实现既没有环路,也可以冗余的网络)。

Brigde-ID

    是8BIT的ID,由优先级(Priority/2Bits)+MAC地址(6Bits)组成,优先级一般默认为0x8000(32768)并且只取整;

    优先级取值:0x0000(0)、0x1000(4096)、0x2000()、0x3000()、0x4000()、0x5000()、0x6000(24576)、0x7000(28672)、0x8000(32768)、0x9000(36864)。

                                  


各种接口的STP默认开销:

    link speed   Revised IEEE Spec Cost   Previous IEEE Spec Cost       

    10Gbps           2                                    1

    1Gbps             4                                    1   

    100Mbps        19                                  10

    10Mbps         100                                100


 

桥接协议数据单元BPDU(Bridge Protocol Data Unit)

在交换网络中由根桥RB(Root Bridge)发送,用于STP的计算和收敛;发送周期为2秒。

BPDU的作用:选举根桥、确定本地是否形成环路、阻塞特定端口防止环路、监控生成树的状态;

BPDU有两类:TC和TCN;TCA是TC的一种,当拓扑变化时检测到变化的交换机会通过RP向根桥发送TCN;而根桥收到TCN后会发送TCA表示收到,同时发送TC要求该交换机把MAC表的age时间改为15秒以学习新的表:由于TC是RB产生的,所以要更改各个计时器时只能在RB上更改。


端口的不同状态

堵塞(Block,默认20s):丢弃从该接口收到的正常数据帧;不会在该接口上学习mac-address-table;不会从该接口发送正常数据帧;会从该接口接收对端发送的BPDU;不会从该接口发送BPDU;

监听(Listen,默认15s):丢弃从该接口收到的正常数据帧;不会在该接口上学习mac-address-table;不会从该接口发送正常数据帧;会从该接口接收对端发送的BPDU;会从该接口发送BPDU(根桥RB、根端口RP、指定端口DP等的选举在该阶段完成,如果接口没有成为DP则重新回到Block);

同步(Learning,默认15s):丢弃从该接口收到的正常数据帧;会在该接口上学习mac-address-table;不会从该接口发送正常数据帧;会从该接口接收对端发送的BPDU;会从该接口发送BPDU;

转发(Forward,直到down机→TK里面是15、30s的):从该接口接受正常数据帧;会在该接口上学习mac-address-table;从该接口发送正常数据帧;会从该接口接收对端发送的BPDU;会从该接口发送BPDU。


 

交换机对BPDU的处理

    如果交换机从一个接口接收到优先级高的BPDU,会把该BPDU保存下来并且该接口不再往外发送BPDU。在收敛时只有根桥产生BPDU,其余交换机只能从RP接收BPDU后才从DP发送出去;这样非根桥可能从DP或者NDP接受到BPDU。如果交换机从DP接收到优先级低的BDPU会丢弃,并给源MAC发送自己较新的BPDU;如果从NDP收到优先级低的BPDU会只丢弃了事。



 

LAB1:四大结论第一(One root brigde per network)

STEP1:察看交换机的网管IP 所对应的那个MAC地址:

每一个STP交换网络都只有一个根桥RB;引用原则1-Lowest Brigde-ID的那个交换机就是RB;

Brigde-ID由本交换机的优先级(2字节)和网管MAC地址(6字节)组成一共8个字节(网管MAC地址:可以理解为被telnet的那个地址);

    用#sh ve查看MAC地址得:Base ethernet MAC address:00:0F:FE:2A:80:F6 ;还有sh cdp nei也能察看到MAC地址;

    交换机的STP优先级默认是0x8000(32768);

    STEP2:查看STP相关信息(本机BID):

    用#sh spanning-tree查看,Root-ID就是本STP网络中根桥的Brigde-ID→根据Root-ID找到根桥;

    STEP3:通过优先级控制根桥选举:

    根桥:sw1(config)#spanning-tree vlan 1 root primary(默认PRI=24576/0x6000);备份根桥:sw2(config)#spanning-tree vlan 1 root secondary(默认PRI=28672/0x7000);

    还可以更改优先级:

    通过#spanning-tree vlan 1 priority 4096 。

                                                 




LAB2:四大结论第二(One root port per non-root brigde)

STEP1:查看Cost:

每个非根桥NRB都有一个唯一的根端口RP;不是RB的交换机都是NRB;引用原则2-Lowest path cost to root bridge的那个交换机接口就是RP;

用#sh spanning-tree查看,得知当前的RP是9,Cost为19 (当前去往根桥的cost值);

STEP2:控制RP的选举:

用(c-i)#speed 10(单位是Mbps);

可以用#sh in status →sh spanning-tree detail查看;

也可以通过直接调试Cost值来控制:(c)#spanning-tree cost 50 。



 

LAB3:四大结论第三(One designated port per segement)

STEP1:查看Cost:

每一个网段有一个指定端口DP;引用原则3→Lowest sender Brigde-ID;

STEP2:控制DP的选举:

SW1(c)#spanning-tree vlan 1 priority 36864(优先级Prio=0x9000)。



 

LAB4:四大结论第四(Nondesignated ports are unused )

STEP1:查看Cost:

没有获得任何标记的端口NDP被禁用;引用原则4-Lowest port ID;用#sh spanning-tree in f0/22 detail查看;断后NDP是SW2的Fa0/7!BPDU入口不能堵的啊!!!

STEP2:控制NDP的选举:

SW3(c-i)#spanning-tree port-priority 32 (这个值必须是16的整倍数);再查看。

STEP3:SW2与SW1的连接恢复后会怎样?

先堵7后堵8→SW2被堵死了……把SW2改为RB后再恢复呢?


 

LAB5:观察STP的转发延时

STEP1:直链检测错误 (35秒):

PC1 ping sw3的网管IP,shutdown SW3 23口观察:

让SW1成为根桥,即把优先级改为最低(c)#spanning-tree vlan 1 prilrity 0 ;然后PC3 ping PC1的同时shutdown掉SW2的Fa0/23,因为SW2的Fa0/8是阻塞的,所以down之前是从SW2的Fa0/23口发送数据到PC1的;

STEP2:非直链检测错误(50秒):

PC3 ping sw3的网管IP,shutdown SW3 9口观察:

SW1/SW2的链路带宽由原来的100M改为10M后Cost值变为100,而SW1/SW3和SW2/SW3为100M,那么Fa0/23是阻塞的;ping的同时shutdown掉SW2的Fa0/8后观察时间。

 

 

 

    

上一篇: VPN特点

下一篇: SSH登陆网络设备

在线咨询 ×

您好,请问有什么可以帮您?我们将竭诚提供最优质服务!