STP概述

stp基本概念:

1.桥id
每一台运行stp的交换机都拥有一个唯一的桥id,桥id一共8byte,包含16bit的桥优先级和48bit的桥MAC地址,其中桥优先级占据桥id的高16bit,而mac地址占据其余的48bit。

2.根桥
STP的主要作用之一是在整个交换网路中计算出一颗无环的“树”,这棵树一旦生成,网络中的无环拓扑也就形成了。对于这棵树而言,树根是非常重要的,树根一旦明确了,“树枝”才能沿着网络拓扑进行延展,STP的根桥就是这棵树的树根,树根的角色至关重要,STP的一系列计算均以树根为参考点。当STP开始工作后,第一件事就是在网络中选举出根桥。在一个交换网络中,根桥只会有一个。
网络中拥有最小桥ID的交换机将成为根桥。在比较桥id时,首先比的时桥优先级,桥优先级的值最小的交换机将胜出成为根桥,如果桥优先级相等,那摩MAC地址最小的交换机将成为根桥。
华为交换机缺省的桥优先级为32768.可在系统视图下使用stp priority命令修改,优先级的取值范围是0~61440,并且必须为4096的倍数,例如0、4096、8192等。

3.开销(Cost)与根路径开销(Root Path Cost,RPC)
每一个激活了STP的接口都维护着一个Cost值,接口的Cost主要用于计算RPC,也就是计算到达根的开销。接口的缺省Cost除了与其速率、工作模式有关,还与交换机使用的Stp Cost计算方法有关。华为的交换产品支持3种计算方法,它们分别是IEEE802.1D-1998标准方法、IEEE802.1t标准方法以及华为私有的计算方法。
在交换机的系统视图下使用stp pathcost-standard命令,可修改Cost计算方法,该命令有3个可选关键字。

  • dot1d-1998:IEEE 802.1D-1998标准方法。
  • dot1t:IEEE802.1t标准方法。
  • legacy:华为计算方法。

注:当然修改交换机Cost计算方法需要非常谨慎,如果确实需要修改,那么需保证交换网络中所有STP设备使用一致的计算方法。
接口Cost是一个非常重要的变量,它将影响STP对于链路的优选。在STP的拓扑计算过程中,一个非常重要的环节就是“丈量”交换机某个接口到根桥的“成本”,我们将这个“成本”称为RPC(Root Path Cost,根路径开销)。

4.接口id(Port Identification)
运行STP的交换机使用接口ID来标识每个接口,接口id主要用于在特定场景下选举指定接口。接口ID长度为16bit,由两部分组成,其中高4bit是接口优先级,低12bit是接口编号。以华为S5700交换机为例,缺省时接口优先级为128,可在接口视图下使用stp port priority命令修改,优先级的取值范围是0~240,并且必须是16的倍数,例如0、16、32等。

STP的基本操作过程


STP通过4个步骤来保证网络中不存在二层环路:


1.在交换机网络中选举一个根桥(Root Bridge,RB)
网络中拥有最小桥ID的交换机将成为根桥。在比较桥id时,首先比的时桥优先级,桥优先级的值最小的交换机将胜出成为根桥,如果桥优先级相等,那摩MAC地址最小的交换机将成为根桥。STP的正常工作依赖于该协议所使用的报文的正常交互,这种报文就是BPDU(Bridge Protocol Data Unit,网桥协议数据单元)。
2.在每个非根桥上选举一个根接口(Root Port,RP)
在一个交换网络中,除了根桥之外的其他交换机都是非根桥,STP将为每个非根桥选举一个根接口,所谓根接口,实际上是非根桥上所有接口中收到最优BPDU的接口,可以简单地将其理解为交换机在STP树上“朝向”根桥的接口。非根桥可能会有一个或多个接口接入同一个交换网络,STP将会在这些接口中选举并且只会选出一个根接口。在STP收敛完成后,根桥依然会周期性的向网络中发送BPDU,而非根桥则会周期性的在自己的根接口上收到BPDU,并沿着STP树向下游转发。
3.选举指定接口(Designated Port,DP)
STP将在每个网段中选举一个指定接口,这个接口是该网段内所有接口到达根桥的最优接口。此外,指定接口还负责向该网段发送BPDU。
对于非根桥而言,其所有接口中收到最优BPDU的接口将成为该设备的根接口,随后该非根桥使用自己接受的最优BPDU,为本设备上的其他接口各计算一个BPDU,然后使用计算出的BPDU与接口上所维护的BPDU(接口自身也会从网络中收到BPDU,并将该BPDU保存起来)进行比较,如果前者更优,那么该接口将成为指定接口,并且其所保存的BPDU也被前者替代,交换机将替代后的BPDU从该指定接口转发给下游交换机;如果后者更优,那么该接口将成为非指定接口(非指定接口指的是既不是根接口,也不是指定接口的接口)。
综上所述,对于非根桥而言,根接口的选举过程是非根桥将自己所收到的所有BPDU进行比较,而制定接口的选举过程则是非根桥用自己计算出的BPDU与别的设备发过来的BPDU进行比较。
一般而言,根桥的所有接口都是指定接口。
4.阻塞非指定接口,打破二层环路
经STP计算后,如果交换机的某个(或某些)接口既不是根接口又不是指定接口(我们将这种接口称为非指定接口),那么该接口将会被STP阻塞,如此一来网络中的二层环路也就被打破了。

STP报文


在一个交换网络中,STP能够正常工作的基本前提是BPDU的正常交互。STP的BPDU有两种类型:配置BPDU(Configuration BPDU)及TCN BPDU(Topology Change Notification BPDU)。两种BPDU各有各的用途。BPDU载荷被直接封装在以太网数据帧中,数据帧的目的MAC地址是组播MAC地址:0180-C200-0000。
1.配置BPDU
配置BPDU是STP进行拓扑计算的关键。在交换网络的初始化过程中,每台交换机都从自己激活了STP的接口向外发送配置BPDU。当STP收敛完成后,只有根桥才会周期性的发送配置BPDU(缺省时,以2s为周期发送配置BPDU,可以在设备的系统视图下使用stp timer hello命令修改发送周期),而非根桥则会在自己的根接口上收到上游发送过来的配置BPDU,并立即被触发而产生自己的配置BPDU,然后从自己的指定接口发送出去。这一过程看起来就像是根桥发出的配置BPDU逐跳地“经过”了其他的交换机。
2.TCN BPDU
TCN BPDU的格式非常简单,只有“协议ID”、"协议版本ID"以及"BPDU类型"三个字段,并且“BPDU”字段的值为0x80。TCN BPDU用于在网络拓扑发成变化时向根桥通知变化的发生。
对于STP而言,当拓扑发生变更时,远离变更点的交换机无法直接感知到变化的发生,此时它们的MAC地址表项还是老旧的,如果依然通过这些MAC地址表项来指导数据转发,便有可能出现问题。因此STP需要一种机制,用于在网络中发生拓扑变更时促使全网的交换机尽快老化自己的MAC地址表项,以适应新的网络拓扑。当拓扑稳定时,网路中只会出现配置BPDU,而当拓扑发生变更时,STP会使用TCN BPDU,以及两种特殊的配置BPDU。
(1)TCN BPDU
TCN BPDU用于在网络拓扑发生变化时向根桥通知变化的发生。TCN BPDU需要从发现拓扑变更的交换机传递到根桥,而该交换机与根桥之间可能隔着多台交换机,感知到拓扑变化的交换机会从其根接口发送TCN BPDU,也就是朝着根桥的方向发送TCN BPDU,该报文会一跳一跳的向上游传递,直至抵达根桥。
(2)“标志”字段中TCA比特位被设置为1的配置BPDU
STP要求TCN BPDU从发现拓扑变更的交换机传递到根桥的过程时可靠的,因此当一台交换机收到下游发送上来的TCN BPDU后,需要使用“标志”字段中TCA比特位被设置为1的配置BPDU回应对方并向自己的上游发送TCN BPDU。这个过程将一直持续,直到根桥收到该TCN BPDU。
(3)“标志”字段中TC比特位被设置为1的配置BPDU
根桥收到TCN BPDU后,也就意识到了拓扑变化的发生,接下来它要将该变化通知到全网,它将向网络中泛洪“标志”字段中TC比特位被设置为1的配置BPDU,网络中的交换机收到该配置BPDU后,会立即将其MAC地址表的老化时间从原有的值调整为一个较小的值(该值等于转发延迟时间),使MAC地址表能够尽快刷新,以便适应新的网络拓扑。

STP的时间参数


STP定义的三个重要的时间参数。

  • Hello Time(Hello时间):运行了STP的交换机发送配置BPDU的时间间隔,缺省为2s。如需修改STP发送配置BPDU的时间间隔,那么必须在根桥上修改,修改完成后,所有的非根桥都与根桥对其该时间值。
  • Forward Delay(转发延时):运行了STP的接口从侦听状态进入学习状态,或者从学习状态进入转发状态的延迟时间,缺省为15s。为了避免在生成树收敛过程中网络接口可能出现临时环路,或者短暂的数据帧泛洪现象,STP定义了侦听及学习这两种接口状态,并要求接口从阻塞状态进入转发状态前必须先经历这两个状态,而且分别在这两个状态各停留一个转发延时时间。这意味着对STP而言,一个被阻塞的接口被选举为根接口或指定接口后,进入转发状态之前至少需要经历30s的时间。
  • MAX Age(最大生存时间):BPDU的最大生存时间,也被称为BPDU的老化时间,缺省为20s。以非根桥的根接口为例,该设备将在这个接口上保存来自上游的最优BPDU,这个BPDU关联着一个最大生存时间,如果在该BPDU到达最大生存时间之间,接口再一次收到了BPDU,那么其最大生存时间将被重置,而如果接口一直没有收到BPDU从而导致该接口上保存的BPDU到达最大生存时间,那么该BPDU将被老化,此时设备将会重新在接口上选择最优BPDU,也就是重新进行根接口的选举。
    受限于几个时间参数的设计,一个STP接口要从阻塞状态进入转发状态可能需要花费约30~50s左右的时间,而这段时间内,网络中的业务可能就会受到影响。

RSTP

IEEE802.1D中定义的STP,是一个比较老旧的标准,在现如今的交换网络中,几乎很少能够看到他的部署了。STP存在诸多短板,例如收敛慢、端口状态定义繁冗、对拓扑变化的感知依赖计时器。
IEEE802.1w中定义的RSTP(Rapid Spanning Tree Protocol,快速生成树协议)可以视为STP的改进版本,RSTP在许多方面对STP进行了优化,它的收敛速度更快,而且能够兼容STP。
RSTP引入了新的接口角色,其中替代接口的引入使得交换机在根接口失效时,能够立即获得新的路径到达根桥。RSTP引入了P/A机制,使得指定接口被选举产生后能够快速进入转发状态,而不用像STP那样经历转发延迟时间。另外RSTP还引入了边缘接口的概念,这使得交换机连接终端设备的接口在初始化之后能够立即进入转发状态,提高了工作效率。

RSTP接口角色


RSTP在STP的基础上,增加了两种接口角色,它们是替代(Alternate)接口和备份(Backup)接口。因此,在RSTP中,共有4种接口角色:根接口、指定接口、替代接口和备份接口。
1.替代接口
替代接口可以简单地理解为根接口地备份,它是一台设备上,由于收到了其他设备所发送地BPDU从而被阻塞的接口,如果设备的根接口发生故障,那么替代接口可以成为新的根接口,这加快了网络的收敛过程。(一台设备如果是非根桥,那么有且只能有一个根接口,但是该设备可以没有替代接口,也可以有,当存在替代接口时,可以存在一个或多个。当设备的根接口发生故障时,最优的替代接口将成为新的根接口。)

2.备份接口
备份接口是一台设备上由于收到了自己所发送的BPDU从而被阻塞的接口。如果一台交换机拥有多个接口接入通一个网段,并且在这些接口中有一个被选举为该网段的指定接口,那么这些接口中的其他接口将被选举为备份接口,备份接口将作为该网段到达根桥的冗余接口。通常情况下,备份接口处于丢弃状态。

RSTP接口状态

STP定义了五种接口状态,它们分别是禁用、阻塞、侦听、学习和转发,而RSTP简化了接口状态,将STP禁用、阻塞及侦听状态简化为丢弃(Discarding)状态。

STP的接口状态RSTP的接口状态
禁用(Disabled)丢弃(Discarding)
阻塞(Blocking)
侦听(Lisening)
学习(Learning)学习(Learning)
转发(Forwarding)

转发(Forwarding)

在RSTP中,处于丢弃状态的接口既不会转发业务数据帧,也不会学习MAC地址。

RSTP BPDU


RSTP的配置BPDU被称为RST BPDU(Rapid Spanning Tree BPDU),它的格式与STP的配置BPDU大体相同,只是其中个别字段做了修改,以便适应新的工作机制和特性。对于RST BPDU来说,“协议版本ID”字段的值为0x02,“BPDU类型”字段的值也为0x02.最重要的变化体现在“标志”字段中,该字段一共8bit,STP只使用了其中的最比特位和最高比特位,而RSTP在STP的基础上,使用了剩余的6个比特位,并且分别对这些比特位进行了定义。
       RSTP和STP不同之处在于,在网络稳定后,无论是根桥还是非根桥,都将周期性的发送配置BPDU,也就是说对于非根桥而言,它们不用在根接口上收到BPDU之后,才被触发而产生自己的配置BPDU,而是自发的、周期性发送BPDU。 
       RSTP在BPDU的处理上的另一点改进是对于次优(Inferior)BPDU的处理。运行STP的交换机在每个接口上保存一份BPDU,对于根接口及非指定接口而言,交换机保存的是发送自上游交换机的BPDU,而对于指定接口而言,交换机保存的是自己根据根接口的BPDU所计算出的BPDU。如果接口收到一份BPDU,而且该接口当前所保存的BPDU比接受的BPDU更优,那摩后者对于前者而言就是次优BPDU,在STP中,当指定接口收到次优BPDU时,它会立即发送自己的BPDU,而对于非指定接口,当其收到次优BPDU时,它将等待接口所保存的BPDU老化之后,再重新计算新的BPDU,并且将新的BPDU发送出去,这将导致非指定接口需要最长约20s的时间才能启动状态迁移。
在RSTP中,无论接口的角色如何,只要接口收到次优BPDU,便立即发送自己的BPDU,这个变化使得RSTP的收敛更快。

边缘接口


我们已经知道,运行了STP 的交换机,其接口在初始化启动之后,首先会进入阻塞状态,如果接口被选举为根接口或指定接口,那摩它还需要经历侦听、学习,最后才可以进入转发状态,也就是说,一个接口从初始启动之后到进入转发妆台至少需要消耗约30s的时间。对于交换机上连接到交换网路上的接口,经历此过程是必要的,毕竟该接口存在产生环路的风险,然后有些接口引发环路的风险非常低,比如,交换机连接pc的接口等。这些接口如果启动之后还要经历上述过程那就太低效了。
可将交换价的接口配置为边缘端口(Edge Port)来解决上述问题。边缘接口缺省不参与生成树计算,当边缘端口被激活后,它可以立即切换到转发状态并开始收发业务流量,而不用经历转发延时时间。另外,边缘接口的关闭或激活并不会触发RSTP拓扑变更。
将接口配置为边缘接口的命令如下:

[Huawei]interface GigabitEthernet 0/0/1
[Huawei-GigabitEthernet0/0/1]stp edged-port enable 

值得注意的是,由于人为的疏忽,边缘端口也可能被误接交换设备,一但交换设备连接到边缘端口,那么便引入了安全隐患。因此如果边缘接口连接了交换设备并且收到了BPDU,则该接口立刻变成普通的生成树接口,可能引发网络中的RSTP重计算,从而对网络造成影响。
一个接口被配置为边缘端口后,依然会周期性的发送BPDU,然而对边缘设备来说,此BPDU是多余的,可以在接口的配置视图下增加stp bpdu-filter enable 命令,该命令用于激活该接口的BPDU过滤功能,在交换机的接口上激活此功能后,该接口将不再发送BPDU,而当其收到BPDU时,也会直接忽略。

保护功能

1.BPDU保护(BPDU Protection)


上述提到,一个接口被配置为边缘端口后,依然会周期性的发送BPDU,然而对边缘设备来说,此BPDU是多余的,如果边缘接口连接了交换设备并且收到了BPDU,则该接口立刻变成普通的生成树接口,可能引发网络中的RSTP重计算,从而对网络造成影响。
通过在交换机上激活BPDU保护功能即可解决上述问题。当交换机激活该功能后,如果边缘接口收到了BPDU,则交换机会立即把接口关闭(置为Error-Down),同时触发告警。配置如下:

[Huawei]interface GigabitEthernet 0/0/1
[Huawei-GigabitEthernet0/0/1]stp edged-port enable   //将接口设为边缘端口
[Huawei-GigabitEthernet0/0/1]q

[Huawei]interface GigabitEthernet 0/0/2
[Huawei-GigabitEthernet0/0/2]stp edged-port enable 
[Huawei-GigabitEthernet0/0/2]q

[Huawei]interface GigabitEthernet 0/0/3
[Huawei-GigabitEthernet0/0/3]stp edged-port enable 
[Huawei-GigabitEthernet0/0/3]q
[Huawei]stp bpdu-protection                         //在所有边缘端口上激活BPDU保护功能
[Huawei]

如果受保护的边缘接口由于收到了BPDU而被关闭,缺省时时不会自动恢复的,网络管理源需在该接口配置视图下先执行shutdownundo shutdown命令,或直接使用restart命令来恢复,或使用接口自动恢复功能使其恢复:[Huawei]error-down auto-recovery cause bpdu-protection interval 

2.根保护(Root Protection) 


对于一个部署了RSTP交换网络来说,根桥的地位至关重要,可以将其优先级配置为0来保证根桥的地位,但是,根桥的角色是可抢占的,万一有另一台优先级也是0的,根桥的地位就会发生被抢可能,从而造成影响。
可在交换机的相关接口上部署根保护功能,即可避免上述问题,当根桥的指定接口激活根保护功能后,该接口如果收到更优的BPDU,则会忽略这些BPDU,并将接口切换到丢弃状态,如此一来,根桥的地位就得以保持。
值得注意的是,跟保护功能只有在指定接口上激活才有效,当根桥的指定接口激活根保护功能后,该接口如果收到更优的BPDU,则会忽略这些BPDU,并将接口切换到丢弃状态,如果接口不再收到更优BPDU,则一段时间后(通常为两倍的转发延迟时间),它将会自动恢复到转发状态。跟保护配置如下:

[Huawei]interface GigabitEthernet 0/0/1
[Huawei-GigabitEthernet0/0/1]stp root-protection 

3.环路保护(Loop Protection)


在根接口上激活了环路保护功能后,如果该接口长时间没有收到BPDU,那么交换机将会重新选举根接口并将该接口的角色调整为指定接口,此时交换机会将该接口的状态切换到丢弃状态,从而避免环路发生。
在替代接口上激活了环路保护功能后,如果该接口长时间没有收到BPDU,那么交换机将会在将该接口的角色调整为指定接口,但是将其状态保持在丢弃状态,从而避免环路的产生。
环路保护配置如下:

[Huawei]interface GigabitEthernet 0/0/1
[Huawei-GigabitEthernet0/0/1]stp loop-protection 

4.拓扑变更保护(TC Protection)


一个可靠的交换网络是不允许频繁出现拓扑变更的,一旦出现网络拓扑变更,TC BPDU(此处指TC比特置位的BPDU)将会被泛洪到全网,从而引发交换机执行MAC地址表删除操作。
交换机激活拓扑变更保护功能后,将在单位时间内只进行一定次数的TC BPDU处理,如果交换机在该时间内收到超过所设上限的TC BPDU,那么它只会按照规定的次数进行处理,超过的部分则必须等待一定时间后再进行处理。
在交换机的系统视图下执行stp tc-protection命令即可激活拓扑变更保护功能,该功能激活后,交换机在单位时间内(缺省时,该时间等于Hello time,也即2s,可通过stp tc-protection interval命令修改)只会处理1次(该次数可通过stp tc-protection threshold命令修改)TC BPDU,如果在该时间内,收到了更多的TC BPDU,则这些报文只能等前面提及的时间超时后才会被处理。

MSTP

        众所周知,STP是一个相对老旧的标准,RSTP虽然在STP的基础上进行了一定的优化,但是依然与STP一样存在一个较大的短板,那就是当它们被部署到交换网络中时,所有的VLAN共用一棵生成树。这个短板将使得网络中的流量无法在所有可用链路上实现负载分担,导致链路带宽利用率、设备资源利用率低。
       那么换一种思路,会不会存在一种生成树协议,它基于VLAN进行生成树的计算,这种生成树的优点自然是不言而喻的,当交换机运行这种生成树协议后,它会针对每一个VLAN单独计算一棵生成树,网络管理员可以针对每个VLAN的生成树独立配置根桥,当然,也可以通过相应的配置,使得不同的VLAN的生成树阻塞不同的接口。
      基于VLAN的生成树协议,自然可以将生成树的可操控性发挥到极致,然而这种技术也是存在一定短板的,设想一下,如果vlan的数量非常多,每个vlan都以此计算出一个自己的生成树,那么设备的资源消耗将变得非常大,为了进行大规模的生成树计算,设备将变得不堪重负,甚至可能影响到正常业务流量的处理。
      IEEE发布的802.1s标准解决了上述问题,它定义了一种新的生成树协议——MSTP(Multiple Instances Spanning Tree Protocol,多实例生成树协议),MPLS能够兼容STP及RSTP,在该协议中,生成树不是基于VLAN运行的,而是基于Instance(实例)运行的。所谓Instance,就是一个或多个VLAN的集合。
      网络管理员可以将一个或多个VLAN映射到一个Instance,然后MSTP基于该Instance计算生成树。基于Instance的生成树被称为MSTI(Multiple Spanning Tree Instance,多生成树实例),MSTP为每个Instance维护独立的MSTI。映射到同一个Instance的VLAN将共享同一棵生成树。网络管理员可以根据实际需要,在交换机上创建多个Instance,然后将特定的VLAN映射到相应的Instance。需要注意的是,一个Instance可以包含多个VLAN,但是一个VLAN只能被映射到一个Instance。
      在创建了Instance后,我们可以针对MSTI进行主根桥、次根桥、接口优先级或Cost等相关配置。这样一来,如果网络中存在大量VLAN,那么我们便可以将这些VLAN按照一定规律分别映射到不同的Instance中,从而通过MSTP实现负载分担,而且交换机仅需针对这几个Instance进行生成树成树计算,设备资源消耗大大降低。
      MSTP引入了域(Region)的概念,我们可以将一个大型的交换网络划分成多个MST域(Multiple Spanning Tree Region,多生成树域),一个MST域内可以包含一台或多台交换机,同属一个MST域的交换机必须配置相同的域(Regoin Name)、相同的修订级别(Revision Level),以及相同的VLAN与Instance的映射关系。当然,对于一些小型网络而言,全网的交换设备属于一个域也未尝不可。

相关mstp基础实验:MSTP基础实验_一张白纸白又白的博客-CSDN博客

  • 5
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值