生成树


1 生成树技术概述

1.1 生成树技术的背景

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

  2.人为错误导致的二层环路

  3.广播风暴与MAC地址漂移

1.2 生成树协议

  1.初识生成树协议

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

  2.生成树能够动态响应网络拓扑变化调整阻塞接口

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

  3.二层及三层环路

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

2 STP的基本概念

  STP是一个用于局域网中消除环路的协议。

  运行该协议的设备通过彼此交互信息而发现网络中的环路,并对某些接口进行阻塞以消除环路。

  STP在网络中运行后会持续监控网络的状态,当网络出现拓扑变更时,STP能够感知并且进行自动响应,从而使得网络状态适应新的拓扑结构,保证网络可靠性。

  由于局域网规模的不断增长,生成树协议已经成为了当前最重要的局域网协议之一。

2.1 桥ID

  桥ID (Bridge ID,BID)

  IEEE 802.1D标准中规定BID由16位的桥优先级(Bridge Priority)与桥MAC地址构成。

  每一台运行STP的交换机都拥有一个唯一的BID。

  BID桥优先级占据高16bit,其余的低48bit是桥MAC地址。

  在STP网络中,BID最小的设备会被选举为根桥。

  备注:此处网桥(Bridge),或者桥也就是交换机。

2.2 根桥

  根桥(Root Bridge)

  STP的主要作用之一是在整个交换网络中计算出一棵无环的”树”(STP树)。

  根桥是一个STP交换网络中的”树根”。

  STP开始工作后,会在交换网络中选举一个根桥,根桥是生成树进行拓扑计算的重要”参考点”,是STP计算得出的无环拓扑的”树根”。

  在STP网络中,桥ID最小的设备会被选举为根桥。

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

2.3 Cost

  开销(Cost)

  每一个激活了STP的接口都维护着一个Cost值,接口的Cost主要用于计算根路径开销,也就是到达根的开销。

  接口的缺省Cost除了与其速率、工作模式有关,还与交换机使用的STP Cost计算方法有关。

  接口带宽越大,则Cost值越小。

  可以根据需要通过命令调整接口的Cost。

  Cost计算方法:

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

2.4 RPC

  根路径开销(Root Path Cost)

  在STP的拓扑计算过程中,一个非常重要的环节就是”丈量”交换机某个接口到根桥的”成本”,即RPC。

  一台设备从某个接口到达根桥的RPC等于从根桥到该设备沿途所有入方向接口的Cost累加。

  本例中,SW3从GE0/0/1接口到达根桥的RPC等于接口1的Cost加上接口2的Cost。

2.5 接口ID(Port ID,PID)

  接口ID (Port ID,PID)

  运行STP的交换机使用接口ID来标识每个接口,接口ID主要用于在特定场景下选举指定接口。

  接口ID由两部分构成,高4bit是接口优先级,低12bit是接口编号。

  激活STP的接口会维护一个缺省的接口优先级,在华为交换机上,该值为128。可以根据实际需要,通过命令修改该优先级。

2.6 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只在网络拓扑发生变更时才会被触发。

2.6.1 配置BPDU的报文格式

字节 字段 描述
2 PID 协议ID,对于STP而言,该字段的值总为0
1 PVI 协议版本ID,对于STP而言,该字段的值总为0
1 BPDU Type 指示本BPDU的类型,若值为0x00,则表示本报文为配置BPDU;若值为0x80,则为TCN BPDU
1 Flags 标志,STP只使用了该字段的最高及最低两个比特位,最低位是TC(Topology Change,拓扑变更)标志,最高位是TCA(Topology Change Acknowledgment,拓扑变更确认)标志
8 Root ID 根网桥的桥ID
4 RPC 根路径开销,到达根桥的STP Cost
8 Bridge ID BPDU发送桥的ID
2 Port ID BPDU发送网桥的接口ID(优先级+接口号)
2 Message Age 消息寿命,从根网桥发出BPDU之后的秒数,每经过一个网桥都加1,所以它本质上是到达根桥的跳数
2 Max Age 最大寿命,当一段时间未收到任何BPDU,生存期到达最大寿命时,网桥认为该接口连接的链路发生故障。默认20s
2 Hello Time 根网桥连续发送的BPDU之间的时间间隔,默认2s
2 Forward Delay 转发延迟,在侦听和学习状态所停留的时间间隔,默认15s

2.6.2 配置BPDU的比较原则

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

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

   1.最小的根桥ID

   2.最小的RPC

   3.最小的网桥ID

   4.最小的接口ID

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

2.6.3 配置BPDU的转发过程

3 STP的工作原理

3.1 STP的计算过程

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

  STP在交换网络中开始工作后,每个交换机都会向网络中发送配置BPDU,配置BPDU中包含交换机自己的桥ID。

  网络中拥有最小桥ID的交换机成为根桥。

  在一个连续的STP交换网络中只会存在一个根桥。

  根桥的角色是可抢占的。

  为了确保交换网络的稳定,建议提前规划STP组网,并将规划为根桥的交换机的桥优先级设置为最小值0。

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

  每一台非根桥交换机都会在自己的接口中选举出一个接口,根接口的作用:接收根桥的BPDU

  非根桥交换机上有且只会有一个根接口。

  当非根桥交换机有多个接口接入网络中时,根接口是其收到最优配置BPDU的接口。

  可以形象地理解为,根接口是每台非根桥上”朝向”根桥的接口。

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

  根接口选举出来后,非根桥会使用其在该接口上收到的最优BPDU进行计算,然后将计算得到的配置BPDU与除了根接口之外的其他所有接口所收到的配置BPDU进行比较:

   如果前者更优,则该接口为指定接口;

   如果后者更优,则该接口为非指定接口。

  一般情况下,根桥的所有接口都是指定接口。

4.非指定接口被阻塞

  一台交换机上,既不是根接口,又不是指定接口的接口被称为非指定接口。

  STP操作的最后一步是阻塞网络中的非指定接口。这一步完成后,网络中的二层环路就此消除。

根端口与指定端口总结:

端口类型 作用 选举位置 选举规则
根端口 接收根桥的BPDU 在每一台非根桥选举 1、比较RPC
2、比较对端桥ID
3、比较对端的PID
4、比较自己的PID
指定端口 发送或转发BPDU 在每一段链路上选举 1、比较自己设备的RPC
2、比较自己的桥ID
3、比较自己的PID

3.2 STP接口状态

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

3.3 STP接口状态迁移

  1.接口初始化或激活,自动进入阻塞状态

  2.接口被选举为根接口或指定接口,自动进入侦听状态

  3.转发延迟计时器超时且接口依然为根接口或指定接口

  4.接口不再是根接口或指定接口或指定状态

  5.接口被禁用或者链路失效

3.4 拓扑变化-根桥故障

  根桥故障恢复过程

  1.SW1根桥发生故障,停止发送BPDU报文。

  2.SW2等待Max Age计时器(20s)超时,从而导致已经收到的BPDU报文失效,又接收不到根桥发送的新的BPDU报文,从而得知上游出现故障。

  3.非根桥会互相发送配置BPDU,重新选举新的根桥。

  4.经过重新选举后,SW3的A端口经过两个Forward Delay(15 s)时间恢复转发状态。

  非根桥会在BPDU老化之后开始根桥的重新选举。

  根桥故障会导致50 s左右的恢复时间。

3.5 拓扑变化-直连链路故障

  直连链路故障恢复过程

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

  SW2检测到直连链路物理故障后,会将预备端口转换为根端口。

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

3.6 拓扑变化-非直连链路故障

  非直连链路故障后,SW3的备用端口恢复到转发状态,非直连故障会导致50s左右的恢复时间。

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

  如下图,SW3的根端口发生故障,导致生成树拓扑重新收敛,在生成树拓扑完成收敛之后,从主机A到主机B的帧仍然不能到达目的地。这是因为交换机依赖MAC地址表转发数据帧,缺省情况下,MAC地址表项的老化时间是300秒。那么该怎么快速恢复转发?

  TCN BPDU在网络拓扑变化的时候产生。

  报文格式:协议标识、版本号和类型。

  拓扑变化:会使用到配置BPDU中Flags的TCA和TC位。

4 STP基础配置命令

  1.配置生成树工作模式

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

  2.(可选)配置根桥

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

  3.(可选)备份根桥

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

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

# 缺省情况下,交换机的优先级取值是32768
[Huawei] stp priority priority

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

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

# 设置当前接口的路径开销值。
[Huawei-GigabitEthernet0/0/1] stp cost cost

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

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

  7.启用STP/RSTP/MSTP

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

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