加载中...

数通 08-STP


STP 生成树

技术背景:

环路带来的问题:

生成树协议是在网络中部署生成树后,交换机之间会进行生成树协议报文的交互并进行无环拓扑计算,最终将网络中的某个接口进行堵塞(block)从而打破环路。

交换机上运行的生成树协议会持续监控网络的拓扑结构,当网络拓扑结构发生变化时,生成树可以感知这些变化,并自动做出调整。因此,生成树既能解决二层环路问题,也能为网络的冗余性提供一种方案。

二层环路以及三层环路

相对于二层环路来说三层环路危害更小,IP报文在经过一定次数的转发TTL值会变为0,该报文就会被丢弃。而二层环路会无休止的复制转发报文,不会丢弃报文。

生成树协议在园区网络中的应用

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等

可以使用display stp查看哪台交换机是根桥

[Huawei]dis stp
-------[CIST Global Info][Mode MSTP]-------
CIST Bridge         :32768.4c1f-cc8e-09b5
Config Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
Active Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
CIST Root/ERPC      :32768.4c1f-cc8e-09b5 / 0			//这里显示的就是根桥的桥ip
CIST RegRoot/IRPC   :32768.4c1f-cc8e-09b5 / 0			//可以看出本交换机的桥ip和根桥的桥ip一致,说明这台交换机就是根桥
CIST RootPortId     :0.0
BPDU-Protection     :Disabled
TC or TCN received  :2
TC count per hello  :0
STP Converge Mode   :Normal 
Time since last TC  :0 days 0h:1m:17s
Number of TC        :2
Last TC occurred    :Ethernet0/0/2

可以使用display int vlan 1查看本交换机的MAC地址

[Huawei]dis int vlan 1
Vlanif1 current state : UP
Line protocol current state : DOWN
Description:
Route Port,The Maximum Transmit Unit is 1500
Internet protocol processing : disabled
IP Sending Frames' Format is PKTFMT_ETHNT_2, Hardware address is 4c1f-cc8e-09b5				//这里显示的就是桥ip
Current system time: 2022-10-02 19:44:44-08:00
    Input bandwidth utilization  : --
    Output bandwidth utilization : --
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个步骤来保证网络中不存在二层环路(STP计算过程):

1、选出根桥:每个交换机运行了stp,有一个桥id,桥id最小的交换机为根桥
2、选出根端口:每个非根桥上,选出1个根端口,收到bpdu最优的端口
3、选出指定端口:一个接口,发的bpdu,比收到的bpdu,更优,是指定端口
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树向下游转发。

使用display stp brief命令可以确定交换机的根接口

[Huawei]dis stp brief
 MSTID  Port                        Role  STP State     Protection
   0    Ethernet0/0/1               ROOT  FORWARDING      NONE		//root 就是RP
   0    Ethernet0/0/2               ALTE  DISCARDING      NONE
3.选举指定接口(Designated Port,DP)

STP将在每个网段中选举一个指定接口,这个接口是该网段内所有接口到达根桥的最优接口。此外,指定接口还负责向该网段发送BPDU。
对于非根桥而言,其所有接口中收到最优BPDU的接口将成为该设备的根接口,随后该非根桥使用自己接受的最优BPDU,为本设备上的其他接口各计算一个BPDU,然后使用计算出的BPDU与接口上所维护的BPDU(接口自身也会从网络中收到BPDU,并将该BPDU保存起来)进行比较,如果前者更优,那么该接口将成为指定接口,并且其所保存的BPDU也被前者替代,交换机将替代后的BPDU从该指定接口转发给下游交换机;如果后者更优,那么该接口将成为非指定接口(非指定接口指的是既不是根接口,也不是指定接口的接口)。
综上所述,对于非根桥而言,根接口的选举过程是非根桥将自己所收到的所有BPDU进行比较,而制定接口的选举过程则是非根桥用自己计算出的BPDU与别的设备发过来的BPDU进行比较。
一般而言,根桥的所有接口都是指定接口。

[Huawei]dis stp brief
 MSTID  Port                        Role  STP State     Protection
   0    Ethernet0/0/1               DESI  FORWARDING      NONE			//DESI就是DP
   0    Ethernet0/0/2               DESI  FORWARDING      NONE
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地址表能够尽快刷新,以便适应新的网络拓扑。

配置BPDU的报文格式

配置BPDU的比较原则

注意:在选取RP和DP时也是采用这一原则

思考题:识别以下拓扑中的根桥以及各种接口角色

1.先判断根桥
	SW1——网络中拥有最小桥ID的交换机将成为根桥

2.再判断根接口
	SW2-GE0/0/1、SW3-GE0/0/2、SW4-GE0/0/1——每个非根桥选举一个根接口,所谓根接口,实际上是非根桥上所有接口中收到最优BPDU的接口(参照BPDU的比较原则)
	
3.再判断指定接口
	SW2-GE0/0/2、SW3-GE0/0/1、SW1-GE0/0/1|GE0/0/2——这个接口是该网段内所有接口到达根桥的最优接口。(参照BPDU的比较原则)

STP的接口状态

状态名称 状态描述
禁用(Disable) 该接口不能收发BPDU,也不能收发业务数据帧,例如接口为down
阻塞(Blocking) 该接口被STP阻塞。处于阻塞状态的接口不能发送BPDU,但是会持续侦听BPDU,而且不能收发业务数据帧,也不会进行MAC地址学习
侦听(Listening) 当接口处于该状态时,表明STP初步认定该接口为根接口或指定接口,但接口依然处于STP计算的过程中,此时接口可以收发BPDU,但是不能收发业务数据帧,也不会进行MAC地址学习
学习(Learning) 当接口处于该状态时,会侦听业务数据帧(但是不能转发业务数据帧),并且在收到业务数据帧后进行MAC地址学习
转发(Forwarding) 处于该状态的接口可以正常地收发业务数据帧,也会进行BPDU处理。接口的角色需是根接口或指定接口才能进入转发状态

STP的接口状态迁移

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左右的时间,而这段时间内,网络中的业务可能就会受到影响。

STP的基础配置命令

1.配置生成树工作模式

[Huawei]stp mode {stp|rstp|mstp}

2.(可选)配制根桥

[Huawei]stp root primary

3.(可选)备份根桥

[Huawei]stp root secondary

4.(可选)配置交换机的STP优先级

[Huawei]stp priority 优先级取值(32768为缺省情况)

5.(可选)配置接口路径开销

设置接口开销计算方法

[Huawei]stp pathcost-standard{dot1d-1998|dot1t|legacy}

设置当前路径开销

[Huawei-GigabitEthernet0/0/1]stp cost 开销值

6.(可选)配置接口优先级

[Huawei-intf]stp priority 优先级数(128为缺省情况)

7.启用STP/RSTP/MSTP

[Huawei]stp enable

文章作者: okra2saber
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 okra2saber !
评论
  目录