2021.5.10 HCIA的课堂笔记与线下整理

STP

一、原理

以太网中为了进行链路备份,提高网络可靠性,通常会使用冗余链路。但是使用冗余链路会在交换网络中产生环路,并导致广播风暴(<=广播帧 &交换机转发原理)以及MAC地址表不稳定(<=单播帧 &交换机学习原理&转发原理)等故障现象,从而导致用户通信质量较差,甚至通信中断。为解决交换网络中的环路问题,提出了生成树协议STP(Spanning Tree Protocol)。

生成树协议,通过阻塞二层网络中的冗余链路,将网络修剪成树状,达到消除环路的目的;同时,当活动路径发生故障,生成树协议通过激活冗余链路,恢复网络通信。(作用:消除环路、链路备份)

环路问题

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

广播风暴

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

交换机是根据所接收到的数据帧的源地址和接收端口生成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地址表震荡。

 

二、类型

3种生成树协议:STP、RSTP和MSTP STP:IEEE于1998年发布的802.1D标准定义了STP。STP是数据链路层的管理协议,用于二层网络的环路检测和预防。STP可阻塞二层网络中的冗余链路,将网络修剪成树状,达到消除环路的目的。但是,STP拓扑收敛速度慢,即使是边缘端口也必须等待2倍forward delay的延迟(缺省为30S),端口才能迁移到转发状态。

RSTP:IEEE于2001年发布的802.1W标准定义了RSTP。RSTP在STP的基础上进行了改进,实现了网络拓扑快速收敛。但是,RSTP和STP还存在一个共同的缺陷:由于局域网内所有的VLAN共享一棵生成树,因此无法在VLAN间实现数据流量的负载均衡,还有可能造成部分VLAN的报文无法转发。 RSTP向下兼容STP协议,可以混合组网。

MSTP:IEEE于2002年发布的802.1S标准定义了MSTP。MSTP把一个交换网络划分成多个域,每个域内形成多棵生成树实例,生成树实例之间彼此独立,同时,每个域都有一个生成树实例与VLAN映射表,每个生成树实例都对应着一个或多个VLAN,而每个VLAN只能属于一个生成树实例。MSTP不仅能实现消除环路和冗余路径的作用,同时在数据转发过程中能够实现VLAN数据的负载均衡(确切地说是多生成树实例间的负载均衡)。 MSTP兼容STP和RSTP。

三、基本概念

BID(即交换机标识):BID是由桥优先级(16b)和桥MAC(48b)构成的。

PID(端口标识):PID是由端口优先级(4b)和端口号(12b)构成的。

接口开销:交换机的每个接口都有一个接口开销参数,此参数表示数据从该接口发送时的开销值,也就是数据的出接口开销。

STP认为从一个接口接收数据是没有开销的。接口开销的计算标准有3种,分别是802.1d,802.1t和华为私有标准,默认情况下采用802.1t标准。

RPC(根路径开销):有两种说法, 接口的根路径开销,指接口到根交换机的最小路径开销,即该路径上的所有出接口开销之和。 交换机的根路径开销,指交换机的各个接口到根桥的路径开销中最小的,也就是根端口到根桥的路径开销,也就是该路径上所有出接口开销之和。

RB(根桥/根交换机):即BID最小的交换机。

RP(根端口):即去往根交换机路径开销最小的端口。 每个非根交换机都有且仅有一个根端口,根交换机上没有根端口; RP端口所在网段的上游端口一定是DP端口; 根端口的最终状态是转发状态,如果是STP模式,端口迁移到转发状态需要等待2个FD。

DP(指定端口):STP为每个网段选出一个指定端口,用于转发由根交换机发往该网段的数据,并且为每个网段转发发往根交换机方向的数据。 在根交换机上,所有的STP端口都是指定端口; 指定端口所在的交换机称为该网段的指定交换机; 指定端口的最终状态是转发状态,如果是STP模式,端口迁移到转发状态需要等待2个FD。

AP(预备端口):既不是根端口也不是指定端口的交换机端口称为预备端口,也称阻塞端口。预备端口不转发数据,处于阻塞状态。

 

四、STP的过程

在以太网中,二层网络的环路会带来广播风暴,MAC地址表震荡,重复数据帧等问题,为解决交换网络中的环路问题,提出了STP。 STP的主要作用:

消除环路:通过阻断冗余链路来消除网络中可能存在的环路。

链路备份:当活动路径发生故障时,激活备份链路,及时恢复网络连通性。

STP通过构造一棵树来消除交换网络中的环路。 每个STP网络中,都会存在一个根桥,其他交换机为非根桥。根桥或者根交换机位于整个逻辑树的根部,是STP网络的逻辑中心,非根桥是根桥的下游设备。当现有根桥产生故障时,非根桥之间会交互信息并重新选举根桥,交互的这种信息被称为BPDU。BPDU中包含交换机在参加生成树计算时的各种参数信息,后面会有详细介绍。 STP中定义了三种端口角色:指定端口,根端口和预备端口。 指定端口是交换机向所连网段转发配置BPDU的端口,每个网段有且只能有一个指定端口。一般情况下,根桥的每个端口总是指定端口。 根端口是非根交换机去往根桥路径最优的端口。在一个运行STP协议的交换机上最多只有一个根端口,但根桥上没有根端口。 如果一个端口既不是指定端口也不是根端口,则此端口为预备端口。预备端口将被阻塞。

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

非根交换机在选举根端口时分别依据该端口的根路径开销、对端BID(Bridge ID)、对端PID(Port ID)和本端PID。 交换机的每个端口都有一个端口开销(Port Cost)参数,此参数表示该端口在STP中的开销值。默认情况下端口的开销和端口的带宽有关,带宽越高,开销越小。从一个非根桥到达根桥的路径可能有多条,每一条路径都有一个总的开销值,此开销值是该路径上所有接收BPDU端口的端口开销总和(即BPDU的入方向端口),称为路径开销。非根桥通过对比多条路径的路径开销,选出到达根桥的最短路径,这条最短路径的路径开销被称为RPC(Root Path Cost,根路径开销),并生成无环树状网络。根桥的根路径开销是0。

每个非根桥都要选举一个根端口。根端口是距离根桥最近的端口,这个最近的衡量标准是靠路径开销来判定的,即路径开销最小的端口就是根端口。端口收到一个BPDU报文后,抽取该BPDU报文中根路径开销字段的值,加上该端口本身的端口开销即为本端口路径开销。如果有两个或两个以上的端口计算得到的累计路径开销相同,那么选择收到发送者BID最小的那个端口作为根端口。 如果两个或两个以上的端口连接到同一台交换机上,则选择发送者PID最小的那个端口作为根端口。如果两个或两个以上的端口通过Hub连接到同一台交换机的同一个接口上,则选择本交换机的这些端口中的PID最小的作为根端口。

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

图中所示为STP的端口状态迁移机制,运行STP协议的设备上端口状态有5种:

Forwarding:转发状态。端口既可转发用户流量也可转发BPDU报文,只有根端口或指定端口才能进入Forwarding状态。

Learning:学习状态。端口可根据收到的用户流量构建MAC地址表,但不转发用户流量。增加Learning状态是为了防止临时环路。

Listening:侦听状态。端口可以转发BPDU报文,但不能转发用户流量。

Blocking:阻塞状态。端口仅仅能接收并处理BPDU,不能转发BPDU,也不能转发用户流量。此状态是预备端口的最终状态。

Disabled:禁用状态。端口既不处理和转发BPDU报文,也不转发用户流量。

小结

1、STP算法实现的基本过程 (1)初始状态 由于每个桥都认为自己是根桥,所以在每个端口所发出的BPDU中,RID字段都是用各自的BID,RPC字段是0,发送者BID是自己的BID,发送者PID是发送该BPDU端口的PID。 (2)选择根桥 网络初始化时,网络中所有的STP设备都认为自己是“根桥”,RID字段为自身的BID。通过交换配置BPDU报文,设备之间比较RID字段,值最小者被选为根桥。

(3)选择根端口和指定端口 步骤1:非根设备将接收最优配置BPDU报文的那个端口定为根端口。 步骤2:设备根据根端口的配置BPDU和根端口的开销,为每个端口计算一个指定端口配置消息,具体信息如下:RID,替换为根端口配置BPDU的RID;RPC,替换为根端口配置BPDU的RPC与根端口开销相加之和;发送者BID,替换为自身设备的BID;发送端口PID,替换为自身端口PID。

步骤3:设备将计算出的指定端口配置消息与角色待定端口自己的配置消息进行比较: 如果计算出的指定端口配置消息更优,则该端口被确定为指定端口,其配置消息也被计算出的配置消息替换,并周期性向外发送; 如果该端口自己的配置消息更优,则将该端口阻塞,并且不更新该端口的配置消息。该端口将不再转发数据,且只接收不发送配置消息。

从直观角度看(人为判断), 根桥的选举规则是:BID最小的交换机成为根桥。 根端口的选举规则是:依次比较各端口的RPC、发送者BID、发送端口PID和接收端口PID,较小者对应的端口成为根端口; 指定端口的选举规则是:依次比较所在交换机的RPC、所在交换机的BID和本端口的PID,较小者对应的端口成为指定端口。

为了计算生成树,交换机之间需要交换相关的信息和参数,这些信息和参数被封装在BPDU(Bridge Protocol Data Unit)中。 BPDU有两种类型:配置BPDU和TCN BPDU。 配置BPDU包含了桥ID、路径开销和端口ID等参数。STP协议通过在交换机之间传递配置BPDU来选举根交换机,以及确定每个交换机端口的角色和状态。在初始化过程中,每个桥都主动发送配置BPDU。在网络拓扑稳定以后,只有根桥主动发送配置BPDU,其他交换机在收到上游传来的配置BPDU后,才会发送自己的配置BPDU。 TCN BPDU是指下游交换机感知到拓扑发生变化时向上游发送的拓扑变化通知。 配置BPDU中包含了足够的信息来保证设备完成生成树计算,其中包含的重要信息如下: 根桥ID:由根桥的优先级和MAC地址组成,每个STP网络中有且仅有一个根桥。 根路径开销:到根桥的最短路径开销。 指定桥ID:由指定桥的优先级和MAC地址组成。 指定端口ID:由指定端口的优先级和端口号组成。 Message Age:配置BPDU在网络中传播的生存期。 Max Age:配置BPDU在设备中能够保存的最大生存期。 Hello Time:配置BPDU发送的周期。 Forward Delay:端口状态迁移的延时。

STP拓扑变化

1.根桥故障

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

2.直连链路故障

此例中,SWA和SWB使用了两条链路互连,其中一条是主用链路,另外一条是备份链路。生成树正常收敛之后,如果SWB检测到根端口的链路发生物理故障,则其Alternate端口会迁移到Listening、Learning、Forwarding状态,经过两倍的Forward Delay后恢复到转发状态。

3.非直连链路故障

本例中,SWB与SWA之间的链路发生了某种故障(非物理层故障),SWB因此一直收不到来自SWA的BPDU报文。等待Max Age定时器超时后,SWB会认为根桥SWA不再有效,并认为自己是根桥,于是开始发送自己的BPDU报文给SWC,通知SWC自己作为新的根桥。在此期间,由于SWC的Alternate端口再也不能收到包含原根桥ID的BPDU报文。其Max Age定时器超时后,SWC会切换Alternate端口为指定端口并且转发来自其根端口的BPDU报文给SWB。所以,Max Age定时器超时后,SWB、SWC几乎同时会收到对方发来的BPDU。经过STP重新计算后,SWB放弃宣称自己是根桥并重新确定端口角色。非直连链路故障后,由于需要等待Max Age加上两倍的Forward Delay时间,端口需要大约50秒才能恢复到转发状态。

4.拓扑改变导致MAC地址表错误

在交换网络中,交换机依赖MAC地址表转发数据帧。缺省情况下,MAC地址表项的老化时间是300秒。如果生成树拓扑发生变化,交换机转发数据的路径也会随着发生改变,此时MAC地址表中未及时老化掉的表项会导致数据转发错误,因此在拓扑发生变化后需要及时更新MAC地址表项。 本例中,SWB中的MAC地址表项定义了通过端口GigabitEthernet 0/0/3可以到达主机A,通过端口GigabitEthernet 0/0/1可以到达主机B。由于SWC的根端口产生故障,导致生成树拓扑重新收敛,在生成树拓扑完成收敛之后,从主机A到主机B的帧仍然不能到达目的地。这是因为MAC地址表项老化时间是300秒,主机A发往主机B的帧到达SWB后,SWB会继续通过端口GigabitEthernet 0/0/1转发该数据帧。

拓扑变化过程中,根桥通过TCN BPDU报文获知生成树拓扑里发生了故障。根桥生成TC用来通知其他交换机加速老化现有的MAC地址表项。 拓扑变更以及MAC地址表项更新的具体过程如下: SWC感知到网络拓扑发生变化后,会不间断地向SWB发送TCN BPDU报文。 SWB收到SWC发来的TCN BPDU报文后,会把配置BPDU报文中的Flags的TCA位设置1,然后发送给SWC,告知SWC停止发送TCN BPDU报文。 SWB向根桥转发TCN BPDU报文。 SWA把配置BPDU报文中的Flags的TC位设置为1后发送,通知下游设备把MAC地址表项的老化时间由默认的300秒修改为Forward Delay的时间(默认为15秒)。 最多等待15秒之后,SWB中的错误MAC地址表项会被自动清除。此后,SWB就能重新开始MAC表项的学习及转发操作。

五、STP的配置

华为X7系列交换机支持三种生成树协议模式。 stp mode { mstp | stp | rstp }命令用来配置交换机的生成树协议模式。缺省情况下,华为X7系列交换机工作在MSTP模式。在使用STP前,STP模式必须重新配置。

基于企业业务对网络的需求,一般建议手动指定网络中配置高、性能好的交换机为根桥。 可以通过配置桥优先级来指定网络中的根桥,以确保企业网络里面的数据流量使用最优路径转发。 stp priority priority命令用来配置设备优先级值。priority值为整数,取值范围为0到61440,步长为4096。缺省情况下,交换设备的优先级取值是32768。另外,可以通过stp root primary命令指定生成树里的根桥。

华为X7系列交换机支持三种路径开销标准,以确保和友商设备保持兼容。缺省情况下,路径开销标准为IEEE 802.1t。 stp pathcost-standard { dot1d-1998 | dot1t | legacy }命令用来配置指定交换机上路径开销值的标准。 每个端口的路径开销也可以手动指定。此STP路径开销控制方法须谨慎使用,手动指定端口的路径开销可能会生成次优生成树拓扑。 stp cost cost命令取决于路径开销计算方法: 使用华为的私有计算方法时,cost取值范围是1~200000。 使用IEEE 802.1d标准方法时,cost取值范围是1~65535。 使用IEEE 802.1t标准方法时,cost取值范围是1~200000000。

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Doomer_0

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

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

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

打赏作者

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

抵扣说明:

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

余额充值