生成树技术背景

二层交换机网络的冗余性与环路

在这里插入图片描述

随着局域网规模的不断扩大,越来越多的交换机被用来实现主机之间的互连。如图,接入层交换机单链路上联,则存在单链路故障,也就是如果这根上联链路发生故障,交换机下联用户就断网了。另一个问题的单点故障,也就是交换机如果宕机,交换机下联用户也就断网了。

为了解决此类问题,交换机在互连时一般都会使用冗余链路来实现备份。冗余链路虽然增强了网络的可靠性,但是也会产生环路,而环路会带来一系列的问题,继而导致通信质量下降和通信业务中断等问题。

人为错误导致的二层环路

在现实中,除了冗余链路会引起环路,还有一些人为错误导致的环路。
在这里插入图片描述

二层环路带来的问题

在这里插入图片描述

问题一:广播风暴

根据交换机的转发原则,如果交换机从一个端口上接收到的是一个广播帧,或者是一个目的MAC地址未知的单播帧,则会将这个帧向除源端口之外的所有其他端口转发。如果交换网络中有环路,则这个帧会被无限转发,此时便会形成广播风暴,网络中也会充斥着重复的数据帧。

本例中,SW3收到了一个广播帧将其进行泛洪,SW1和SW2也会将此帧转发到除了接收此帧的其他所有端口,结果此帧又会被再次转发给SW3,这种循环会一直持续,于是便产生了广播风暴。交换机性能会因此急速下降,并会导致业务中断。

问题二:MAC地址表漂移

交换机是根据所接收到的数据帧的源地址和接收端口生成MAC地址表项的。

本例中,SW3收到一个广播帧泛洪,SW1从GE0/0/1接口接收到广播帧后学习且泛洪,形成MAC地址5489-98EE-788A与GE0/0/1的映射;SW2收到广播帧后学习且泛洪,SW1再次从GE0/0/2收到源MAC地址为5489-98EE-788A的广播帧并进行学习,5489-98EE-788A会不断地在GE0/0/1与GE0/0/2接口之间来回切换,这被称为MAC地址漂移现象。

生成树协议

在这里插入图片描述

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

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

STP通过构造一棵树来消除交换网络中的环路。

运行STP算法,判断网络中存在环路的地方并阻断冗余链路,将环路网络修剪成无环路的树型网络,从而避免了数据帧在环路网络中的增生和无穷循环。

生成树能够动态响应网络拓扑变化调整阻塞接口
在这里插入图片描述

交换机上运行的生成树协议会持续监控网络的拓扑结构,当网络拓扑结构发生变化时,生成树能感知到这些变化,并且自动做出调整。

因此,生成树既能解决二层环路问题,也能为网络的冗余性提供一种方案。

如图,交换机上运行STP协议,会通过报文监控网络的拓扑结构,正常情况下是将SW3上的一个接口进行阻塞(Block),从而打破环路,当监控到SW1与SW3之间出现链路故障,则恢复阻塞端口进入转发状态。

二层及三层环路的区别

在这里插入图片描述

常见环路主要分为二层环路和三层环路。

二层环路主要因为网络中部署了二层冗余环境,或人为的误接线缆导致,可以通过借助特定的协议或机制实现二层防环;

三层环路主要因为路由环路,可以通过动态路由协议防环和IP报文头部中的TTL字段用于防止报文被无止尽地转发。

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

在这里插入图片描述

生成树协议应用于园区网络的二层网络中,进行链路备份和消除环路。

STP概述

  • STP是一个用于局域网中消除环路的协议。
  • 运行该协议的设备通过彼此交互信息而发现网络中的环路,并对某些接口进行阻塞以消除环路。
  • STP在网络中运行后会持续监控网络的状态,当网络出现拓扑变更时,STP能够感知并且进行自动响应,从而使得网络状态适应新的拓扑结构,保证网络可靠性。
  • 由于局域网规模的不断增长,生成树协议已经成为了当前最重要的局域网协议之一。

STP的基本概念及工作原理

STP的基本概念:桥ID
在这里插入图片描述

桥ID(Bridge ID,BID)

  • IEEE 802.1D标准中规定BID由16位的桥优先级(Bridge Priority)与桥MAC地址构成。
  • 每一台运行STP的交换机都拥有一个唯一的BID。
  • BID桥优先级占据高16bit,其余的低48bit是桥MAC地址。
  • 在STP网络中,BID最小的设备会被选举为根桥。

在STP中,每一台交换机都有一个标示符,叫做Bridge ID或者桥ID,桥ID由16位的桥优先级(Bridge Priority)和48位的MAC地址构成。在STP网络中,桥优先级是可以配置的,取值范围是0~65535,默认值为32768,可以修改但是修改值必须为1024的倍数。优先级最高的设备(数值越小越优先)会被选举为根桥。如果优先级相同,则会比较MAC地址,MAC地址越小则越优先。

如图,需要在该网络中选举根桥,首先比较三台交换机的桥优先级,桥优先级都为4096,再比较三台交换机的MAC地址,谁小谁优先,最终选择SW1为根桥。

STP的基本概念:根桥

在这里插入图片描述

根桥(Root Bridge)

  • STP的主要作用之一是在整个交换网络中计算出一棵无环的“树”(STP树)。
  • 根桥是一个STP交换网络中的“树根”。
  • STP开始工作后,会在交换网络中选举一个根桥,根桥是生成树进行拓扑计算的重要“参考点”,是STP计算得出的无环拓扑的“树根”。
  • 在STP网络中,桥ID最小的设备会被选举为根桥。

在BID的比较过程中,首先比较桥优先级,优先级的值越小,则越优先,拥有最小优先级值的交换机会成为根桥;如果优先级相等,那么再比较MAC地址,拥有最小MAC地址的交换机会成为根桥。

树形的网络结构必须有树根,于是STP引入了根桥(Root Bridge)概念。

对于一个STP网络,根桥在全网中只有一个,它是整个网络的逻辑中心,但不一定是物理中心。根桥会根据网络拓扑的变化而动态变化。

网络收敛后,根桥会按照一定的时间间隔产生并向外发送配置BPDU,其他设备仅对该报文进行处理,传达拓扑变化记录,从而保证拓扑的稳定。

STP的基本概念:Cost

在这里插入图片描述

开销(Cost)

  • 每一个激活了STP的接口都维护着一个Cost值,接口的Cost主要用于计算根路径开销,也就是到达根的开销。
  • 接口的缺省Cost除了与其速率、工作模式有关,还与交换机使用的STP Cost计算方法有关。
  • 接口带宽越大,则Cost值越小。
  • 用户也可以根据需要通过命令调整接口的Cost。

交换机的每个端口都有一个端口开销(Port Cost)参数,此参数表示该端口在STP中的开销值。默认情况下端口的开销和端口的带宽有关,带宽越高,开销越小。

华为交换机支持多种STP的路径开销计算标准,提供多厂商场景下最大程度的兼容性。缺省情况下,华为交换机使用IEEE 802.1t标准来计算路径开销。

STP的基本概念:Cost计算方法

在这里插入图片描述

接口Cost是已经激活了STP的接口所维护的一个开销值,该值存在默认值,与接口的速率有关联,并且设备使用不同的算法时,相同的接口速率对应不同的Cost值。

STP的基本概念:RPC

在这里插入图片描述

根路径开销(Root Path Cost)

  • 在STP的拓扑计算过程中,一个非常重要的环节就是“丈量”交换机某个接口到根桥的“成本”,也即RPC。
  • 一台设备从某个接口到达根桥的RPC等于从根桥到该设备沿途所有入方向接口的Cost累加。
  • 在本例中,SW3从GE0/0/1接口到达根桥的RPC等于接口1的Cost加上接口2的Cost。

从一个非根桥到达根桥的路径可能有多条,每一条路径都有一个总的开销值,此开销值是该路径上所有接收BPDU端口的端口开销总和(即BPDU的入方向端口),称为路径开销。非根桥通过对比多条路径的路径开销,选出到达根桥的最短路径,这条最短路径的路径开销被称为RPC,并生成无环树状网络。根桥的根路径开销是0。

STP的基本概念:Port ID

在这里插入图片描述

接口ID(Port ID,PID)

  • 运行STP的交换机使用接口ID来标识每个接口,接口ID主要用于在特定场景下选举指定接口。
  • 接口ID由两部分构成的,高4 bit是接口优先级,低12 bit是接口编号。
  • 激活STP的接口会维护一个缺省的接口优先级,在华为交换机上,该值为128。用户可以根据实际需要,通过命令修改该优先级。

运行STP交换机的每个端口都有一个端口ID,端口ID由端口优先级和端口号构成。端口优先级取值范围是0到240,步长为16,即取值必须为16的整数倍。缺省情况下,端口优先级是128。端口ID可以用来确定端口角色。

STP的基本概念:BPDU

在这里插入图片描述

BPDU(Bridge Protocol Data Unit,网桥协议数据单元)

  • BPDU是STP能够正常工作的根本。BPDU是STP的协议报文。
  • STP交换机之间会交互BPDU报文,这些BPDU报文携带着一些重要信息,正是基于这些信息,STP才能够顺利工作。
  • BPDU分为两种类型:
  • 配置BPDU(Configuration BPDU)
  • TCN BPDU(Topology Change Notification BPDU)
  • 配置BPDU是STP进行拓扑计算的关键;TCN BPDU只在网络拓扑发生变更时才会被触发。

为了计算生成树,交换机之间需要交换相关的信息和参数,这些信息和参数被封装在BPDU中。

BPDU有两种类型:配置BPDU和TCN BPDU。

配置BPDU包含了桥ID、路径开销和端口ID等参数。STP协议通过在交换机之间传递配置BPDU来选举根交换机,以及确定每个交换机端口的角色和状态。在初始化过程中,每个桥都主动发送配置BPDU。在网络拓扑稳定以后,只有根桥主动发送配置BPDU,其他交换机在收到上游传来的配置BPDU后,才会发送自己的配置BPDU。

TCN BPDU是指下游交换机感知到拓扑发生变化时向上游发送的拓扑变化通知。

配置BPDU的报文格式

在这里插入图片描述

配置BPDU的比较原则

在这里插入图片描述

对于STP而言,最重要的工作就是在交换网络中计算出一个无环拓扑。在拓扑计算的过程中,一个非常重要的内容就是配置BPDU的比较。在配置BPDU中,有四个字段非常关键,它们是“根桥ID”、“根路径开销”、“网桥ID”以及“接口ID”,这四个字段便是交换机进行配置BPDU比较的关键内容。

STP按照如下顺序选择最优的配置BPDU:

  1. 最小的根桥ID
  2. 最小的RPC
  3. 最小的网桥ID
  4. 最小的接口ID

在这四条原则中(每条原则都对应配置BPDU中的相应字段),第一条原则主要用于在网络中选举根桥,后面的原则主要用于选举根接口及指定接口。

STP操作:

  1. 选举一个根桥。
  2. 每个非根交换机选举一个根端口。
  3. 每个网段选举一个指定端口。
  4. 阻塞非根、非指定端口。

STP中定义了三种端口角色:指定端口,根端口和预备端口。

指定端口是交换机向所连网段转发配置BPDU的端口,每个网段有且只能有一个指定端口。一般情况下,根桥的每个端口总是指定端口。

根端口是非根交换机去往根桥路径最优的端口。在一个运行STP协议的交换机上最多只有一个根端口,但根桥上没有根端口。

如果一个端口既不是指定端口也不是根端口,则此端口为预备端口。预备端口将被阻塞。

配置BPDU的转发过程

在这里插入图片描述

交换机在刚启动时都认为自己是根桥,互相发送配置BPDU进行STP运算。

STP的计算过程 (1)

在这里插入图片描述

在交换网络中选举一个根桥

  • STP在交换网络中开始工作后,每个交换机都会向网络中发送配置BPDU。配置BPDU中包含交换机自己的桥ID。
  • 网络中拥有最小桥ID的交换机成为根桥。
  • 在一个连续的STP交换网络中只会存在一个根桥。
  • 根桥的角色是可抢占的。
  • 为了确保交换网络的稳定,建议提前规划STP组网,并将规划为根桥的交换机的桥优先级设置为最小值0。

什么是根桥?

根桥是STP树的根节点。

要生成一棵STP树,首先要确定出一个根桥。

根桥是整个交换网络的逻辑中心,但不一定是它的物理中心。

当网络的拓扑发生变化时,根桥也可能发生变化。(抢占)

选举过程:

STP交换机初始启动之后,都会认为自己是根桥,并在发送给其他交换机的BPDU中宣告自己为根桥。因此,此时BPDU中的根桥ID为各自设备的网桥ID。

当交换机收到网络中其他设备发送来的BPDU后,会比较BPDU中的根桥ID和自己的BID。

交换机不断交互BPDU,同时对BID进行比较,最终选举一台BID最小的交换机作为根桥,其他的则为非根桥。

如图:根桥的选举先比较优先级,交换机SW1、2、3的优先级相等,则比较MAC地址,也优选最小的,所以SW1的BID最小,因此SW1为根桥,SW2和SW3为非根桥。

注意:

根桥的角色可抢占。当有更优的BID的交换机加入网络时,网络会重新进行STP计算,选出新的根桥。

STP的计算过程 (2)

在这里插入图片描述

在每台非根桥上选举一个根接口

  • 每一台非根桥交换机都会在自己的接口中选举出一个接口。
  • 非根桥交换机上有且只会有一个根接口。
  • 当非根桥交换机有多个接口接入网络中时,根接口是其收到最优配置BPDU的接口。
  • 可以形象地理解为,根接口是每台非根桥上“朝向”根桥的接口。

什么是根端口?

一个非根桥设备上会有多个端口与网络相连,为了保证从某台非根桥设备到根桥设备的工作路径是最优且唯一的,就必须从该非根桥设备的端口中确定出一个被称为“根端口”的端口,由根端口来作为该非根桥设备与根桥设备之间进行报文交互的端口。

在选举出根桥后,根桥仍然持续发送BPDU,而非根桥将持续不断的收到根桥发送的BPDU。因此,在所有非根桥上选举一个距离根桥“最近”的端口(根端口),在网络收敛后,根端口将不断的收到来自根桥的BPDU。

即:根端口保证了交换机与根桥之间工作路径的唯一性和最优性。

注意:一个非根桥设备上,最多只能有一个根端口。

选举过程:

  1. 交换机有多个端口接入网络,各个端口都会收到BPDU报文,报文中会携带“RootID、RPC、BID、PID”等关键字段,端口会针对这些字段进行PK。
  2. 首先比较根路径开销(RPC),STP协议把根路径开销作为确定根端口的重要依据。RPC值越小,越优选,因此交换机会选RPC最小的端口作为根端口。
  3. 当RPC相同时,比较上行交换机的BID,即比较交换机各个端口收到的BPDU中的BID,值越小,越优选,因此交换机会选上行设备BID最小的端口作为根端口。
  4. 当上行交换机BID相同时,比较上行交换机的PID,即比较交换机各个端口收到的BPDU中的PID,值越小,越优先,因此交换机会选上行设备PID最小的端口作为根端口。
  5. 当上行交换机的PID相同时,则比较本地交换机的PID,即比较本端交换机各个端口各自的PID,值越小,越优先,因此交换机会选端口PID最小的端口作为根端口。
STP的计算过程 (3)

在这里插入图片描述

在每条链路上选举一个指定接口

  • 为指定接口;
  • 如果后者更优,则该接口为非指定接口。
  • 一般情况下,根桥的所有接口都是指

什么是指定端口?

网络中的每个链路与根桥之间的工作路径必须是唯一的且最优的。当一个链路有两条及以上的路径通往根桥时(该链路连接了不同的交换机,或者该链路连接了同一台交换机的不同端口),与该链路相连的交换机(可能不止一台)就必须确定出一个唯一的指定端口。

因此,每个链路(Link)选举一个指定端口,用于向这个链路发送BPDU。

注意:一般情况下,根桥上不存在任何根端口,只存在指定端口。

选举过程:

指定端口也是通过比较RPC来确定的,选择RPC最小的作为指定端口,如果RPC相同,则比较BID和PID。

  1. 首先比较根路径开销(RPC),值越小,越优选,因此交换机会选RPC最小的端口作为指定端口。
  2. 若RPC相等,则比较链路两端交换机的BID,值越小,越优选,因此交换机会选BID最小的交换机的端口作为指定端口。
  3. 若BID相等,则比较链路两端端口的PID,值越小,越优选,因此交换机会选PID最小的交换机的端口作为指定端口。
STP的计算过程 (4)

在这里插入图片描述

非指定接口被阻塞

  • 一台交换机上,既不是根接口,又不是指定接口的接口被称为非指定接口。
  • STP操作的最后一步是阻塞网络中的非指定接口。这一步完成后,网络中的二层环路就此消除。

什么是非指定端口(预备端口)?

在确定了根端口和指定端口之后,交换机上所有剩余的非根端口和非指定端口统称为预备端口。

阻塞非指定端口

STP会对这些非指定端口进行逻辑阻塞,即这些端口不能转发由终端计算机产生并发送的帧(用户数据帧)。

一旦非指定端口被逻辑阻塞后,STP树(无环路工作拓扑)就生成了。

注意:

非指定端口可以接收并处理BPDU。

根端口和指定端口既可以接收和发送BPDU,也可以转发用户数据帧。

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

在这里插入图片描述

如图,首先选举根桥,三台交换机的桥优先级相同,则比较桥MAC地址,谁小谁优先,最终选举SW1为根桥;

其次选举根端口,SW2上GE0/0/1距离根桥最近,RPC最小,所以SW2的GE0/0/1为根端口,同理SW3的GE0/0/1也为根端口;

然后选举指定端口,SW1为根桥,所以SW1上的GE0/0/0和GE0/0/1端口为指定端口,SW2的GE0/0/2端口接收到SW3的配置BPDU,比较BID,SW2比SW3的BID更优,所以SW2的GE0/0/2端口为指定端口;

最终非根端口,非指定端口的SW3的GE0/0/2端口为预备端口。

事例2:识别以下拓扑中的根桥及各种接口角色

在这里插入图片描述

如图,首先选举根桥,三台交换机的桥优先级相同,则比较桥MAC地址,谁小谁优先,最终选举SW1为根桥;

其次选举根端口,SW2上GE0/0/1距离根桥的总带宽为1000M,SW2上GE0/0/2到根桥的总带宽为1000M,带宽越小cost越小,所以SW2的GE0/0/1为根端口,同理SW3的GE0/0/1也为根端口;

然后选举指定端口,SW1为根桥,所以SW1上的GE0/0/0和GE0/0/1端口为指定端口,SW2的GE0/0/2端口接收到SW3的配置BPDU,比较BID,SW2比SW3的BID更优,所以SW2的GE0/0/2端口为指定端口;

最终非根端口,非指定端口的SW3的GE0/0/2端口为预备端口。

事例3:识别以下拓扑中的根桥及各种接口角色

在这里插入图片描述

如图,首先选举根桥,四台交换机的桥优先级相同,则比较桥MAC地址,谁小谁优先,最终选举SW1为根桥;

其次选举根端口,SW2上GE0/0/1距离根桥最近,RPC最小,所以SW2的GE0/0/1为根端口,同理SW3的GE0/0/2也为根端口,SW4的两个端口RPC相同,然后比较SW4的G0/0/1对应的交换机SW2的BID与G0/0/2对应的交换机SW3的BID,谁小谁优先,最终选举出SW4的GE0/0/1端口为根端口;

然后选举指定端口,SW1为根桥,所以SW1上的GE0/0/0和GE0/0/1端口为指定端口,SW2的GE0/0/2端口接收到SW4的配置BPDU,比较BID,SW2比SW4的BID更优,所以SW2的GE0/0/2端口为指定端口,同理可得SW3的GE0/0/1端口为指定端口;

最终非根端口,非指定端口的SW4的GE0/0/2端口为预备端口。

事例4:识别以下拓扑中的根桥及各种接口角色

在这里插入图片描述

如图,首先选举根桥,两台交换机的桥优先级相同,则比较桥MAC地址,谁小谁优先,最终选举SW1为根桥;

其次选举根端口,SW2上两个端口RPC相同,再比较两个接口对端的BID也相同,然后比较两个端口对端的PID,SW2的G0/0/1的对端PID:128.1,SW2的G0/0/2的对端PID:128.2,越小越优先,所以SW2的G0/0/1为根端口;

然后选举指定端口,SW1为根桥,所以SW1上的GE0/0/1和GE0/0/2端口为指定端口;

最终非根端口,非指定端口的SW2的GE0/0/2端口为预备端口。

STP的接口状态迁移

在这里插入图片描述

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

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

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

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

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

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

拓扑变化 - 根桥故障

在这里插入图片描述

根桥故障恢复过程

  1. SW1根桥发生故障,停止发送BPDU报文。
  2. SW2等待Max Age计时器(20 s)超时,从而导致已经收到的BPDU报文失效,又接收不到根桥发送的新的BPDU报文,从而得知上游出现故障。
  3. 非根桥会互相发送配置BPDU,重新选举新的根桥。
  4. 经过重新选举后,SW3的A端口经过两个Forward Delay(15 s)时间恢复转发状态。
  5. 非根桥会在BPDU老化之后开始根桥的重新选举。
  6. 根桥故障会导致50 s左右的恢复时间。

根桥故障:

在稳定的STP网络,非根桥会定期收到来自根桥的BPDU报文。

如果根桥发生了故障,停止发送BPDU,下游交换机就无法收到来自根桥的BPDU报文。

如果下游交换机一直收不到BPDU报文,Max Age计时器(缺省: 20s)就会超时,从而导致已经收到的BPDU报文失效,此时,非根桥会互相发送配置BPDU,重新选举新的根桥。

端口状态:

SW3的预备端口,20s后会从Blocking状态进入到Listening状态,再进入Learning状态,最终进入到Forwarding状态,进行用户流量的转发。

收敛时间:

根桥故障会导致50s左右的恢复时间,等于Max Age加上2倍的Forward Delay收敛时间。

拓扑变化 - 直连链路故障

在这里插入图片描述

直连链路故障恢复过程

当交换机SW2网络稳定时检测到根端口的链路发生故障,则其备用端口会经过两倍的Forward Delay(15s)时间进入用户流量转发状态。

  • SW2检测到直连链路物理故障后,会将预备端口转换为根端口。
  • 直连链路故障,备用端口会经过30s后恢复转发状态。

直连链路故障:

当两台交换机间用两条链路互连时,其中一条是主用链路,另一条为备用链路。

当网络稳定时,交换机SWB检测到根端口的链路发生故障,则其备用端口会进入用户流量转发状态。

端口状态:

备用端口会从Blocking状态,迁移到Listening-Learning-Forwarding状态。

收敛时间:

直连链路故障,备用端口会经过30s后恢复转发状态。

拓扑变化 – 非直连链路故障
  • 非直连链路故障后,SW3的备用端口恢复到转发状态,非直连故障会导致50s左右的恢复时间。
    在这里插入图片描述

非直连故障

在稳定的STP网络,非根桥会定期收到来自根桥的BPDU报文。

若SW1与SW2之间的链路发生了某种故障(非物理故障),因此SW2一直收不到来自根桥SW1的BPDU报文,Max Age计时器(缺省: 20 s)就会超时,从而导致已经收到的BPDU报文失效。

此时,非根桥SW2会认为根桥失效,并且认为自己是根桥,从而发送自己的配置BPDU给SW3,通知SW3自己是新的根桥。

在此期间,SW3的预备端口一直收不到包含根桥ID的BPDU,Max Age计时器超时后,端口进入到Listening状态,开始向SW2“转发”从上游发来的包含根桥ID的BPDU。

因此,Max Age定时器超时后,SW2和SW3几乎同时收到对方发来的BPDU,再进行STP重新计算,SW2发现SW3发来的BPDU更优,就放弃宣称自己是根桥并重新确定端口角色。

端口状态:

SW3预备端口20s后会从Blocking状态进入到Listening状态,再进入Learning状态,最终进入到Forwarding状态,进行用户流量的转发。

收敛时间:

非直连故障会导致50s左右的恢复时间,等于Max Age加上2倍的Forward Delay收敛时间。

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

在这里插入图片描述

在交换网络中,交换机依赖MAC地址表转发数据帧。缺省情况下,MAC地址表项的老化时间是300秒。如果生成树拓扑发生变化,交换机转发数据的路径也会随着发生改变,此时MAC地址表中未及时老化掉的表项会导致数据转发错误,因此在拓扑发生变化后需要及时更新MAC地址表项。

本例中,SW2中的MAC地址表项定义了通过端口GigabitEthernet 0/0/3可以到达主机A,通过端口GigabitEthernet 0/0/3可以到达主机B。由于SW3的根端口产生故障,导致生成树拓扑重新收敛,在生成树拓扑完成收敛之后,从主机A到主机B的帧仍然不能到达目的地。这是因为MAC地址表项老化时间是300秒,主机A发往主机B的帧到达SW2后,SW3会继续通过端口GigabitEthernet 0/0/3转发该数据帧。
在这里插入图片描述

拓扑变化过程中,根桥通过TCN BPDU报文获知生成树拓扑里发生了故障。根桥生成TC用来通知其他交换机加速老化现有的MAC地址表项。

拓扑变更以及MAC地址表项更新的具体过程如下:

SW3感知到网络拓扑发生变化后,会不间断地向SWB发送TCN BPDU报文。

SW2收到SW3发来的TCN BPDU报文后,会把配置BPDU报文中的Flags的TCA位设置1,然后发送给SW3,告知SW3停止发送TCN BPDU报文。

SW2向根桥转发TCN BPDU报文。

SW1把配置BPDU报文中的Flags的TC位设置为1后发送,通知下游设备把MAC地址表项的老化时间由默认的300 s修改为Forward Delay的时间(默认为15 s)。

最多等待15 s之后,SW2中的错误MAC地址表项会被自动清除。此后,SW2就能重新开始MAC表项的学习及转发操作。

STP的基础配置

STP的基础配置命令

  1. 配置生成树工作模式
    [Huawei] stp mode { stp | rstp | mstp }
    交换机支持STP、RSTP和MSTP(Multiple Spanning Tree Protocol)三种生成树工作模式,默认情况工作在MSTP模式。

  2. (可选)配置根桥
    [Huawei] stp root primary
    配置当前设备为根桥。缺省情况下,交换机不作为任何生成树的根桥。配置后该设备优先级数值自动为0,并且不能更改设备优先级。

  3. (可选)备份根桥
    [Huawei] stp root secondary
    配置当前交换机为备份根桥。缺省情况下,交换机不作为任何生成树的备份根桥。配置后该设备优先级数值为4096,并且不能更改设备优先级。

  4. (可选)配置交换机的STP优先级
    [Huawei] stp priority priority
    缺省情况下,交换机的优先级取值是32768。

  5. (可选)配置接口路径开销
    [Huawei] stp pathcost - standard { dot1d-1998 | dot1t | legacy }
    配置接口路径开销计算方法。缺省情况下,路径开销值的计算方法为IEEE 802.1t(dot1t)标准方法。
    同一网络内所有交换机的接口路径开销应使用相同的计算方法。
    [Huawei - GigabitEthernet0/0/1] stp cost cost
    设置当前接口的路径开销值。

  6. (可选)配置接口优先级
    [Huawei - intf] stp priority priority
    配置接口的优先级。缺省情况下,交换机接口的优先级取值是128。

  7. 启用STP/RSTP/MSTP
    [Huawei] stp enable
    使能交换机的STP/RSTP/MSTP功能。缺省情况下,设备的STP/RSTP/MSTP功能处于启用状态。

RSTP对STP的改进

STP的不足之处
  • STP协议虽然能够解决环路问题,但是由于网络拓扑收敛慢,影响了用户通信质量。如果网络中的拓扑结构频繁变化,网络也会随之频繁失去连通性,从而导致用户通信频繁中断,这是用户无法忍受的。
  • STP没有细致区分接口状态和接口角色,不利于初学者学习及部署。
  • 网络协议的优劣往往取决于协议是否对各种情况加以细致区分。
  • 从用户角度来讲,Listening、Learning和Blocking状态并没有区别,都同样不转发用户流量。
  • 从使用和配置角度来讲,接口之间最本质的区别并不在于接口状态,而是在于接口扮演的角色。
  • 根接口和指定接口可以都处于Listening状态,也可能都处于Forwarding状态。
  • STP算法是被动的算法,依赖定时器等待的方式判断拓扑变化,收敛速度慢。
  • STP算法要求在稳定的拓扑中,根桥主动发出配置BPDU报文,而其他设备进行处理,传遍整个STP网络。这也是导致拓扑收敛慢的主要原因之一。
RSTP概述
  • IEEE 802.1w中定义的RSTP可以视为STP的改进版本,RSTP在许多方面对STP进行了优化,它的收敛速度更快,而且能够兼容STP。
  • RSTP引入了新的接口角色,其中替代接口的引入使得交换机在根接口失效时,能够立即获得新的路径到达根桥。备份端口作为指定端口的备份,帮助链路上的网桥快速获得到根桥的备份路径。RSTP的状态规范根据端口是否转发用户流量和学习MAC地址把原来的5种状态缩减为3种。 另外,RSTP还引入了边缘接口的概念,这使得交换机连接终端设备的接口在初始化之后能够立即进入转发状态,提高了工作效率。

IEEE于2001年发布的802.1w标准定义了快速生成树协议RSTP(Rapid Spanning-Tree Protocol),RSTP在STP基础上进行了改进,实现了网络拓扑快速收敛。

RSTP(快速生成树)是从STP演化而来的,基本思想一样;当交换网络拓扑结构发生变化时, RSTP可以通过Proposal/Agreement机制更快地恢复网络的连通性。

根据STP的不足,RSTP删除了3种端口状态,新增加了2种端口角色,并且把端口属性充分的按照状态和角色解耦;此外,RSTP还增加了相应的一些增强特性和保护措施,实现网络的稳定和快速收敛。

RSTP是可以与STP实现后向兼容的,但在实际中,并不推荐这样的做法,原因是RSTP会失去其快速收敛的优势,而STP慢速收敛的缺点会暴露出来。

RSTP对STP的其他改进:

配置BPDU的处理发生变化:

拓扑稳定后,配置BPDU报文的发送方式进行了优化;

使用更短的BPDU超时计时;

对处理次等BPDU的方式进行了优化;

配置BPDU格式的改变,充分利用了STP协议报文中的Flag字段,明确了接口角色。

RSTP拓扑变化处理:相比于STP进行了优化,加速针对拓扑变更的反应速度。

RSTP对STP的其他改进
  • 配置BPDU的处理发生变化:
  • 拓扑稳定后,配置BPDU报文的发送方式进行了优化
  • 使用更短的BPDU超时计时
  • 对处理次等BPDU的方式进行了优化
  • 配置BPDU格式的改变,充分利用了STP协议报文中的Flag字段,明确了接口角色
  • RSTP拓扑变化处理:相比于STP进行了优化,加速针对拓扑变更的反应速度
端口角色不同

在这里插入图片描述

RSTP的接口角色共有4种:根接口、指定接口、预备接口和备份接口

从配置BPDU报文发送角度来看:

预备(Alternate)接口就是由于学习到其它网桥发送的配置BPDU报文而阻塞的接口。

备份(Backup)接口就是由于学习到自己发送的配置BPDU报文而阻塞的接口。

从用户流量角度来看:

Alternate接口提供了从指定桥到根的另一条可切换路径,作为根接口的备份接口。

Backup接口作为指定接口的备份,提供了另一条从根桥到相应网段的备份通路。

边缘端口
  • 如果指定端口位于整个域的边缘,不再与任何交换设备连接,这种端口叫做边缘端口。
    在这里插入图片描述

边缘端口一般与用户终端设备直接连接,可以由Disabled状态直接转到Forwarding状态。

在STP中用户终端接入交换设备端口状态由Disabled状态转到Forwarding状态需要经过15s,那么用户在这段时间无法上网,如果网络频繁变化,用户上网状态非常不稳定,时断时续。

边缘端口一般与用户终端设备直接连接,不与任何交换设备连接。边缘端口正常情况下接收不到配置BPDU报文,不参与RSTP运算,可以由Disabled状态直接转到Forwarding状态,且不经历时延,就像在端口上将STP禁用了一样。但是,一旦边缘端口收到配置BPDU报文,就丧失了边缘端口属性,成为普通STP端口,并重新进行生成树计算,从而引起网络震荡。

端口状态不同
  • RSTP的状态规范把原来的5种状态缩减为3种。
  • 如果不转发用户流量也不学习MAC地址,那么接口状态就是Discarding状态。
  • 如果不转发用户流量但是学习MAC地址,那么接口状态就是Learning状态。
  • 如果既转发用户流量又学习MAC地址,那么接口状态就是Forwarding状态。
STP接口状态 RSTP接口状态 接口在拓扑中的角色
Forwarding Forwarding 包括根接口、指定接口
Learning Learning 包括根接口、指定接口
Listening Discarding 包括根接口、指定接口
Blocking Discarding 包括Alternate接口、Backup接口
Disabled Discarding 包括Disable接口

RSTP把原来STP的5种端口状态简化成了3种。

Discarding状态,端口既不转发用户流量也不学习MAC地址。

Learning状态,端口不转发用户流量但是学习MAC地址。

Forwarding状态,端口既转发用户流量又学习MAC地址。

STP/RSTP的缺陷:所有的VLAN共享一棵生成树
  • RSTP在STP基础上进行了改进,实现了网络拓扑快速收敛。
  • 但RSTP和STP还存在同一个缺陷:由于局域网内所有的VLAN共享一棵生成树,因此无法在VLAN间实现数据流量的负载均衡,链路被阻塞后将不承载任何流量,还有可能造成部分VLAN的报文无法转发。
    在这里插入图片描述
VBST:基于VLAN的生成树
  • 华为公司提出了VBST(VLAN-Based Spanning Tree)生成树解决方案。该解决方案中,生成树的形成是基于VLAN的,不同VLAN间可形成相互独立的生成树,不同VLAN内的流量沿着各自的生成树转发,进而可实现流量的负载分担。
    在这里插入图片描述

企业网中部署VBST:

可消除网络中可能存在的通信环路。

可实现链路的复用和流量的负载分担,进而有效地提高链路带宽的利用率。

配置和维护简单,进而可降低配置和维护成本。

但是如果网络中VLAN的数量较多,为每个VLAN执行独立的生成树计算将耗费交换机大量的资源。

MSTP:多生成树
  • 为了弥补STP和RSTP的缺陷,IEEE于2002年发布的802.1s标准定义了MSTP。
  • MSTP兼容STP和RSTP,既可以快速收敛,又提供了数据转发的多个冗余路径,在数据转发过程中实现VLAN数据的负载均衡。
    在这里插入图片描述

MSTP概述

  • MSTP把一个交换网络划分成多个域,每个域内形成多棵生成树,生成树之间彼此独立。
  • 每棵生成树叫做一个多生成树实例MSTI(Multiple Spanning Tree Instance)。
  • 所谓生成树实例就是多个VLAN的一个集合。
  • 通过将多个VLAN捆绑到一个实例,可以节省通信开销和资源占用率。
  • MSTP各个实例拓扑的计算相互独立,在这些实例上可以实现负载均衡。
  • 可以把多个相同拓扑结构的VLAN映射到一个实例里,这些VLAN在接口上的转发状态取决于接口在对应实例的状态。
堆叠与园区网络树形结构组网形态

传统STP组网
在这里插入图片描述

两台汇聚交换机分别与接入层交换机构成了三角形的二层环路,网络中不得不部署STP,而STP将阻塞网络中的接口,造成链路带宽无法充分利用。

交换机堆叠组网
在这里插入图片描述

将汇聚交换机部署堆叠,形成逻辑意义上的单台设备,从而简化网络拓扑,此外,通过在汇聚交换机与接入交换机之间部署链路聚合,可将拓扑进一步简化为“树形结构”,消除二层环路,同时充分提高链路带宽利用率

堆叠iStack(Intelligent Stack),是指将多台支持堆叠特性的交换机设备组合在一起,从逻辑上组合成一台整体交换设备。

堆叠系统建立之前,每台交换机都是单独的实体,有自己独立的IP地址和MAC地址,对外体现为多台交换机,用户需要独立的管理所有的交换机;堆叠建立后堆叠成员对外体现为一个统一的逻辑实体,用户使用一个IP地址对堆叠中的所有交换机进行管理和维护,如图所示。通过交换机堆叠,可以实现网络大数据量转发和网络高可靠性,同时简化网络管理。

Smart Link

在这里插入图片描述

  • Smart Link是一种为双上行组网量身定做的解决方案:
  • 在双向行的设备上部署,当网络正常时,两条上行链路中,一条处于活跃状态,而另一条则处于备份状态(不承载业务流量)。如此一来二层环路就此打破。
  • 当主用链路发生故障后,流量会在毫秒级的时间内迅速切换到备用链路上,保证了数据的正常转发。
  • Smart Link配置简单,便于用户操作。
  • 无需协议报文交互,收敛速度及可靠性大大提升。

如图所示Switch3采用双上行方式分别连接到FW1和FW2,这样Switch3到达上行的链路就可以有两条。在Switch3上配置Smart Link,正常情况下,可实现Port2所在链路作为Port1所在链路的备份。若Port1所在的链路发生故障,Smart Link会自动将数据流量切换到Port2所在链路,保证业务不中断。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐