STP工作原理与不足处


前言

  为了提高网络可靠性,交换网络中通常会使用冗余链路。然而,冗余链路会给交换网络带来环路风险,并导致广播风暴以及MAC地址表不稳定等问题,进而会影响到用户的通信质量。生成树协议STP(Spanning Tree Protocol)可以在提高可靠性的同时又能避免环路带来的各种问题。


一、环路引起的问题

  随着局域网规模的不断扩大,越来越多的交换机被用来实现主机之间的互连。如果交换机之间仅使用一条链路互连,则可能会出现单点故障,导致业务中断。为了解决此类问题,交换机在互连时一般都会使用冗余链路来实现备份。
  冗余链路虽然增强了网络的可靠性,但是也会产生环路,而环路会带来一系列的问题,继而导致通信质量下降和通信业务中断等问题。

广播风暴

在这里插入图片描述
  根据交换机的转发原则,如果交换机从一个端口上接收到的是一个广播帧,或者是一个目的MAC地址未知的单播帧,则会将这个帧向除源端口之外的所有其他端口转发。如果交换网络中有环路,则这个帧会被无限转发,此时便会形成广播风暴,网络中也会充斥着重复的数据帧。
  本例中,主机A向外发送了一个单播帧,假设此单播帧的目的MAC地址在网络中所有交换机的MAC地址表中都暂时不存在。SWB接收到此帧后,将其转发到SWA和SWC,SWA和SWC也会将此帧转发到除了接收此帧的其他所有端口,结果此帧又会被再次转发给SWB,这种循环会一直持续,于是便产生了广播风暴。交换机性能会因此急速下降,并会导致业务中断。

MAC地址表震荡

在这里插入图片描述
  交换机是根据所接收到的数据帧的源地址和接收端口生成MAC地址表项的。
  主机A向外发送一个单播帧,假设此单播帧的目的MAC地址在网络中所有交换机的MAC地址表中都暂时不存在。SWB收到此数据帧之后,在MAC地址表中生成一个MAC地址表项,00-01-02-03-04-AA,对应端口为G0/0/3,并将其从G0/0/1和G0/0/2端口转发。此例仅以SWB从G0/0/1端口转发此帧为例进行说明。
  SWA接收到此帧后,由于MAC地址表中没有对应此帧目的MAC地址的表项,所以SWA会将此帧从G0/0/2转发出去。
  SWC接收到此帧后,由于MAC地址表中也没有对应此帧目的MAC地址的表项,所以SWC会将此帧从G0/0/2端口发送回SWB,也会发给主机B。
  SWB从G0/0/2接口接收到此数据帧之后,会在MAC地址表中删除原有的相关表项,生成一个新的表项,00-01-02-03-04-AA,对应端口为G0/0/2。此过程会不断重复,从而导致MAC地址表震荡。

STP工作原理

  在以太网二层网络中的环路问题,造成广播风暴、MAC地址震荡和数据帧重复等问题,为了解决交换网络中的问题,提出STP,STP主要作用:
   1)消除环路:通过阻断冗余链路来消除网络中可能存在的环路;
   2)链路备份:当活动链路出现问题,激活备份链路使用,恢复网络连通性;
在这里插入图片描述

STP操作

  STP是通过构造一颗树型来消除环路的。
  每个STP网络中,都会存在一个根桥,其他交换机为非根桥,根桥与根交换机位于整个逻辑树的根部,是STP网络的逻辑中心,非根桥是根桥的下游设备。当现有的根桥设备故障时,非根桥设备之间会交互信息并重新选举根桥,交互的这种信息叫BPDU,BPDU包含了交换机在参加STP计算所有参数信息。
  指定端口是交换机向所连网段配置的BPDU端口,每个网段有且只有一个指定端口,一般情况下,根桥下每个端口总是指定端口。
  根端口是非根桥设备通往根桥最优路径的端口,在运行STP协议的交换机上只有一个根端口,根桥设备没有根端口。
  如果一个端口既不是根端口也不是指定端口,则就是预备端口,该端口会被阻塞。
注意:
  STP定义了三个端口:根端口(R)、指定端口(D)、预备端口(A);
  每个非根桥设备都会选举一个根端口;
  每一个网段都会选举一个都会选举一个指定端口;

STP选举过程

   根桥设备选举 :桥ID >> MAC (比较值小,越小越优先)
在这里插入图片描述

  STP中根桥的选举依据的是桥ID,STP中的每个交换机都会有一个桥ID(Bridge ID) 。桥ID由16位的桥优先级(Bridge Priority)和48位的MAC地址构成。在STP网络中,桥优先级是可以配置的,取值范围是0~65535,默认值为32768。优先级最高的设备(桥ID最小)会被选举为根桥。如果优先级相同,则会比较MAC地址,MAC地址越小则越优先。
  交换机启动后就自动开始进行生成树收敛计算。默认情况下,所有交换机启动时都认为自己是根桥,自己的所有端口都为指定端口,这样BPDU报文就可以通过所有端口转发。对端交换机收到BPDU报文后,会比较BPDU中的根桥ID和自己的桥ID。如果收到的BPDU报文中的桥ID优先级低,接收交换机会继续通告自己的配置BPDU报文给邻居交换机。如果收到的BPDU报文中的桥ID优先级高,则交换机会修改自己的BPDU报文的根桥ID字段,宣告新的根桥。

   根端口选举:根据路径开销,选择到根桥设备路径最优的端口
在这里插入图片描述
  非根交换机在选举根端口时分别依据该端口的根路径开销、对端BID(Bridge ID)、对端PID(Port ID)和本端PID。
  交换机的每个端口都有一个端口开销(Port Cost)参数,此参数表示该端口发送数据时的开销值,即出端口的开销。STP认为从一个端口接收数据是没有开销的。端口的开销和端口的带宽有关,带宽越高,开销越小。从一个非根桥到达根桥的路径可能有多条,每一条路径都有一个总的开销值,此开销值是该路径上所有出端口的端口开销总和,即根路径开销RPC(Root Path Cost)。非根桥根据根路径开销来确定到达根桥的最短路径,并生成无环树状网络。根桥的根路径开销是0。
  一般情况下,企业网络中会存在多厂商的交换设备,华为X7系列交换机支持多种STP的路径开销计算标准,提供最大程度的兼容性。缺省情况下,华为X7系列交换机使用IEEE 802.1t标准来计算路径开销。
  运行STP交换机的每个端口都有一个端口ID,端口ID由端口优先级和端口号构成。端口优先级取值范围是0到240,步长为16,即取值必须为16的整数倍。缺省情况下,端口优先级是128。端口ID(port ID)可以用来确定端口角色。
  每个非根桥都要选举一个根端口。根端口是距离根桥最近的端口,这个最近的衡量标准是靠累计根路径开销来判定的,即累计根路径开销最小的端口就是根端口。端口收到一个BPDU报文后,抽取该BPDU报文中累计根路径开销字段的值,加上该端口本身的路径开销即为累计根路径开销。如果有两个或两个以上的端口计算得到的累计根路径开销相同,那么选择收到发送者BID最小的那个端口作为根端口。

   指定端口选举:累计开销(cost) >> 桥ID(BID) >> 端口ID(PID)
在这里插入图片描述
  在网段上抑制其他端口(无论是自己的还是其他设备的)发送BPDU报文的端口,就是该网段的指定端口。每个网段都应该有一个指定端口,根桥的所有端口都是指定端口(除非根桥在物理上存在环路)。
  指定端口的选举也是首先比较累计根路径开销,累计根路径开销最小的端口就是指定端口。如果累计根路径开销相同,则比较端口所在交换机的桥ID,所在桥ID最小的端口被选举为指定端口。如果通过累计根路径开销和所在桥ID选举不出来,则比较端口ID,端口ID最小的被选举为指定端口。
  网络收敛后,只有指定端口和根端口可以转发数据。其他端口为预备端口,被阻塞,不能转发数据,只能够从所连网段的指定交换机接收到BPDU报文,并以此来监视链路的状态。

  端口状态转换
    1 >> 端口初始化或使能;
    2 >> 端口被选为根端口或指定端口;
    3 >> 端口不再是根端口或指定端口;
    4 >> forward delay计时器超时;
    5 >> 端口禁用或链路失效;
在这里插入图片描述
图中所示为STP的端口状态迁移机制,运行STP协议的设备上端口状态有5种:
  1)Forwarding:转发状态。端口既可转发用户流量也可转发BPDU报文,只有根端口或指定端口才能进入Forwarding状态。
  2)Learning:学习状态。端口可根据收到的用户流量构建MAC地址表,但不转发用户流量。增加Learning状态是为了防止临时环路。
  3)Listening:侦听状态。端口可以转发BPDU报文,但不能转发用户流量。
  4)Blocking:阻塞状态。端口仅仅能接收并处理BPDU,不能转发BPDU,也不能转发用户流量。此状态是预备端口的最终状态。
  5)Disabled:禁用状态。端口既不处理和转发BPDU报文,也不转发用户流量。

STP计时器

  Hello Time是指运行STP协议的设备发送配置BPDU的时间间隔,用于检测链路是否存在故障。交换机每隔Hello Time时间会向周围的交换机发送配置BPDU报文,以确认链路是否存在故障。当网络拓扑稳定后,该值只有在根桥上修改才有效。
  配置BPDU(Hello Time)每隔2s由根桥发送一次,其他设备中继,非根交换机连续十个周期没有收到根桥发下来的BPDU报文,会认为根桥发生故障,重新选举。
在这里插入图片描述
  Message Age:如果配置BPDU是根桥发出的,则Message Age为0。否则,Message Age是从根桥发送到当前桥接收到BPDU的总时间,包括传输延时等。实际实现中,配置BPDU报文每经过一个交换机,Message Age增加1。
  Max Age是指BPDU报文的老化时间,可在根桥上通过命令人为改动这个值。Max Age通过配置BPDU报文的传递,可以保证Max Age在整网中一致。非根桥设备收到配置BPDU报文后,会将报文中的Message Age和Max Age进行比较:如果Message Age小于等于Max Age,则该非根桥设备会继续转发配置BPDU报文。如果Message Age大于Max Age,则该配置BPDU报文将被老化掉。该非根桥设备将直接丢弃该配置BPDU,并认为是网络直径过大,导致了根桥连接失败。

STP拓扑变化

  非根桥会在BPDU老化之后开始根桥的重新选举。
在这里插入图片描述
  在稳定的STP拓扑里,非根桥会定期收到来自根桥的BPDU报文。如果根桥发生了故障,停止发送BPDU报文,下游交换机就无法收到来自根桥的BPDU报文。如果下游交换机一直收不到BPDU报文,Max Age定时器就会超时(Max Age的默认值为20秒),从而导致已经收到的BPDU报文失效,此时,非根交换机会互相发送配置BPDU报文,重新选举新的根桥。根桥故障会导致50秒左右的恢复时间,恢复时间约等于Max Age加上两倍的Forward Delay收敛时间。

  直连链路故障
在这里插入图片描述
  SWB检测到直连链路物理故障后,会将预备端口转换为根端口。
  SWB的预备端口会在30 秒后恢复到转发状态。
  SWB的指定端口(D)转换成根端口(R),SWC的预备端口(A)转换成指定端口(D),经过2倍的Forward Delay(30S)后恢复到转发状态。

STP命令配置

[SWA]stp mode ? //stp有三种模式,mstp与rstp对stp改进,加快收敛机制
  mstp  Multiple Spanning Tree Protocol (MSTP) mode
  rstp  Rapid Spanning Tree Protocol (RSTP) mode
  stp   Spanning Tree Protocol (STP) mode
[SWA]stp mode stp
[SWA]stp priority 4096   //配置优先级,priority值为整数,取值范围为0到61440,步长为4096,stp root primary命令指定生成树里的根桥
[SWA]display stp      //查看STP配置 CIST Bridge~桥ID、Bridge Times~hello定时器时间、Forward Delay~定时器、max age~老化时间等

STP的不足点

  1)STP依靠计时器超时来防止环路;
  2)(根端口)RP端口故障,(预备端口)AP端口顶替(根端口)RP端口的话,需要30S时间;
  3)预备端口(AR)不会回应从对端设备接收过来的次优BPDU报文;
  4)终端设备和交换机设备的接口老化时间也要30S时间;
  5)STP拓扑更变机制比较复杂;
  6)角色有3种,状态有5种;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

darkqaz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值