生成树——STP

STP

1.产生背景

        在星状拓扑或者树形拓扑中,当某个设备或者某条链路出现故障,就会导致数据不能正常转发,出现单点故障的问题。

        为了防止出现单点故障,一般需要环形拓扑来保证链路的冗余性,当某条链路出现故障,可以通过另外一条路径转发,不影响业务的正常运行。

        但是环形拓扑会导致一些问题出现:环路、广播风暴、和MAC地址表震荡等。为了解决性这些问题,可以通过生成树或者堆叠来实现。生成树通过阻塞端口的形式,来解决环路造成的一系列问题。

2.STP中的角色

        设备角色:根交换机、非根交换机

        端口角色:指定端口(DP)、根端口(RP)和阻塞端口

        桥优先级最小的将会被选举为根交换机,每个树只能有一个根,其他为非根交换机。根上的端口都是指定端口,非根与根交换机进行数据传输的端口为根端口,既不是根端也不是非指定端口的端口将会被阻塞。

3.STP的信元传输载体-BPDU

        

        RID:根的BID

        RPC:根路径开销,本端口到根的路径开销值

        BID: 发送方桥ID,共有8个字节,由两个字节的桥优先级和6个字节MAC地址组成。优先级范围是0-65535,以小为优,默认32768,步长4096,优先级必须是4096的整倍数,因为为了适应于多生树,将桥优先级和的后12比特划分为实例的编号,因此,只有前4个比特可以表示为优先级,所以必须是4096的倍数。优先级相同,比较MAC地址,以小为优。

优先级MAC地址
0000 0000000000006字节
优先级值实例编号

        PID:发送方的端口ID,共有2个字节,由1个字节的端口优先级和1个字节的端口编号组成。优先级范围0-255,以小为优,默认128,步长64,优先级必须是64的整倍数,为了防止端口编号不够用,将端口优先级的后4个比特划分到了端口编号中,因此必须是64的倍数。优先级相同,比较端口编号,以小为优。

优先级端口编号
0000 000000000000
优先级值端口编号值

        

        hello time:发送BPDU的时间间隔,默认2秒。

        message age:从根产生为0,每经过一个桥设备就会加1.

        MAX age:BPDU的老化时间,默认20秒。BPDU传输具有距离性,最大传输半径是7,为了因丢包导致BPDU收不到,增加3个hello的时间,即20=7*2+3*2。设备收到配置BPDU时,会比较 message age是否大于 MAX age大于则丢弃,否则会产生并转发新的配置BPDU。

        forward delay:延迟时间,默认15秒。 

        BPDU(桥协议数据单元)是STP进行信息交互和角色选举的信令,在STP中,有两种类型的BPDU,分别是配置BPDU和拓扑变更BPDU。在STP选举期间,每台交换机都认为自己是根,都可以发送配置BPDU,当STP选举完成以后,配置BPDU只有根才能发出,非根交换机只能转发来自根的配置BPDU。拓扑变更BPDU是当下游交换机感知到拓扑发生变化时,产生TCN BPDU,不断向上游交换机发送,上游交换机收到下游发来的TCN BPDU,回复TCA置位的配置BPDU,告知下游停止发送TCN BPDU,并复制一份TCN BPDU向根转发,只有指定端口才能处理TCN BPDU,根交换机收到已经发送TC和TCA都置位的配置BPDU,告知下游交换机加速MAC地址表的老化。

4.STP的5种状态机

        STP的端口有5种状态。

        disabled:关闭状态,不发BPDU,不收BPDU,不构建MAC地址,不转发数据。

        blocking:阻塞状态,不发BPDU,收BPDU,不构建MAC地址,不转发数据。

        listening:侦听状态,发BPDU,收BPDU,不构建MAC地址,不转发数据。

        learning:学习状态,发BPDU,收BPDU,构建MAC地址,不转发数据。

        forwarding:转发状态,发BPDU,收BPDU,构建MAC地址,转发数据。

        由 listening到 learning需要一个 forward delay周期,也就是需要等待15秒的时间, 由 learning到 forwarding也需要一个 forward delay周期,也需要等待15秒的时间。因此端口从  listening状态到forwarding状态共需要30秒的时间。

5.STP的选举过程

        5.1 选举根交换机

        交换机一开始都认为自己是根,互相发送配置BPDU进行根的选举,此时每个交换机的端口,都是DP端口,端口状态为 listening。首先比较桥优先级,优先级最小的选举为根,优先级相同,则比较MAC地址,MAC地址最小的成为根。根选出来后,根上的指定端口经过两个forward delay周期转换成forwarding状态。

        举例:

        

          选举过程分析:

                SW1和SW2的桥优级先都比SW3小,所以都比SW3优。

                SW1和SW2的桥优级相同,比较MAC地址, SW1的MAC地址小,所以SW1选为根。

 

        5.2 每台非根交换机选举一个根端口

        当根选出来后,每台非根交换机上要选出一个根端口,选举根端口时先比较RPC来进行选举,端口到根的cost越小,则越优。RPC一样时,则比较上行设备的BID,BID优先级小的为优,BID优先级相同,则比较上行设备MAC地址,MAC地址小的优。当上行设备BID相同时,则比较上行设备的PID,PID优先级小的为优,PID优先级相同,则比较上行设备的端口编号,端口编号小优。当上行PID相同时,则比较本地PID,PID优先级小的为优,PID优先级相同,则比较本设备的端口编号,端口编号小优。

        举例:

                

 

 

         SW1选举为根以后,非根交换机SW2和SW3上都要选举出一个根端口。

        选举过程如下:

        SW3的G0/0/1端口到达根的RPC为20000,G0/0/1端口到达根的RPC为40000,所以,SW3的G0/0/1端口为RP端口,经过两个forward delay周期转换成forwarding状态。

        同理,SW2的G0/0/1端口到达根的RPC为20000,G0/0/3端口到达根的RPC为40000,所以,SW2的G0/0/1端口为RP端口,经过两个forward delay周期转换成forwarding状态。

        5.3 每条链路选举一个指定端口

                STP的每条链路都要有一个指定端口,根上都是指定端口,因此在非根交换机之间要选举指定端口。在选举指定端口时,也是先比较RPC进行选举,端口到根的cost越小,则越优。RPC一样时,则比较本BID,BID优先级小的为优,BID优先级相同,则比较MAC地址,MAC地址小的优。当BID相同时,则比较设备的PID,PID优先级小的为优,PID优先级相同,则比较设备的端口编号,端口编号小优。

        举例:

         选举过程:

                SW3的G0/0/2接口和SW2的G0/0/3比较RPC,由于RPC相同,所以比较设备BID,SW2的优先级更小,所以更优,SW2的G0/0/3选举为DP端口,经过两个forward delay周期转换成forwarding状态。

 

        5.4 阻塞非根非指定端口

                由于SW3的G0/0/2接口既不能成为DP端口,也不能成为RP端口,所以将被阻塞,定在blocking状态。

        

6.STP的拓扑变更

        

        当拓扑发生变化时,有可能导致MAC地址找不到的情况,影响正常通信,而其他交换机感知不到拓扑的变化,且MAC地址表老化时间是300秒,时间过于缓慢。因此,TCN BPDU可以感知拓扑变化并告知其他交换机。在STP中,flag字段只用到了最高位和最低位,最高位TC位表示通知其他交换机加速MAC地址表的老化,最低位TCA表示已经感知到拓扑变更,让下游设备停止发送TCN BPDU。

        

        拓扑变更过程:

        下游交换机感知到拓扑发生变化,以hello周期向上游设备发送TCN BPDU。

        上游设备的DP端口才能处理TCN BPDU,并回复TCA置位的配置BPDU,告知下游通知发送TCN。

        上游设备复制下游发来的TCN向上游发送,直到根收到TCN。

        根交换机收到TCN以后,发送TC和TCA都置位的配置BPDU,通过指定端口告知所有设备拓扑发生变化,加速老化MAC地址表,老化时间由原来的300秒改成15秒。

 

7.STP链路的切换

 直连链路故障:

                

        SW3和SW1之间的链路出现故障时,SW3根据自身端口状态的变化,感知到拓扑发生变更,向SW2周期性发送TCN BPDU告知上游交换机,此时阻塞端口G0/0/2由blocking状态向forwarding状态迁移,历时两个forward delay周期,也就是30秒。

        SW2收到SW3的TCN BPDU,在发送来自根的配置BPDU时,将TCA置位,告诉SW3停止发送TCN BPDU,同时复制一份TCN  BPDU发送给SW1。

        SW1收到TCN BPDU,发送TCA和TC都置位的配置BPDU,告诉所有交换机拓扑发生改变,加速MAC地址表的老化。

 

        整个拓扑收敛过程历时30秒的时间。

非直连链路故障:

        

        

        SW1和SW2之间的链路出现故障时,SW2由于收不到来自根的配置BPDU,此时SW2认为自己是根,产生配置BPDU发给SW3。

        SW3收到SW2的次优 BPDU,立刻老化SW2原来的最优BPDU,重新选举DP端口,此时SW3的G0/0/2接口成为DP端口,SW2的G0/0/3端口成为RP端口。

        非直连链路故障标准收敛时间是50秒,华为是30秒。因为 SW3收到SW2的次优 BPDU时,需要等待SW2原来的最优BPDU老化以后,才会开始选举DP端口,而华为设备只要收到次优 BPDU就会立刻老化。

8.STP的配置

实验拓扑:

        

 

实验要求:

        1.为了防止其他更优的交换机接入,导致根发生变化,要让SW1始终为根。

        2.通过更改RPC改变R2和R3之间的阻塞端口。

SW1配置:

[sw1]stp mode stp-----设置STP模式为STP模式,SW2和SW3上也要配置STP模式
[sw1]stp root primary----设置SW1始终为根

查看此时STP端口状态:

 

 

 

此时SW2的G0/0/3为阻塞端口,通过更改RPC,让SW3上的G0/0/2端口为阻塞端口。

[sw3-GigabitEthernet0/0/1]stp cost 40000----更改SW3到根的RPC为40000

 验证:

 

 

 

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值