生成树协议(超细)

本文深入探讨了生成树协议(STP)的工作原理,包括桥ID、根桥、开销等核心概念,以及STP如何通过选举根桥、根接口和指定接口来构建无环网络。同时,详细介绍了拓扑变化时的故障恢复流程,如根桥故障、直连链路故障和非直连链路故障。此外,还涵盖了STP的基础配置命令和RSTP对STP的改进,强调了RSTP的快速收敛特性。
摘要由CSDN通过智能技术生成

随笔一篇,以便日后翻阅,如有问题欢迎指正



前言

以太网交换网络中为了进行链路备份,提高网络可靠性,通常会使用冗余链路。但是使用冗余链路会在交换机网络上产生环路从而引发广播风暴以及MAC地址漂移等故障现象,导致用户通信质量差,甚至信号中断的可能。为解决网络中的环路问题,数据链路层 生成树协议(Spanning Tree Protocol)—— STP 应运而生。

  • 广播风暴:二层链路中不停的转发广播帧(或未知单播帧)
  • MAC地址漂移:二层链路中不同设备从不同接口收到同一源地址发出的包从而不断更新MAC地址表

问题背景:人为错误(线缆连接错误、未合理分配聚合链路)导致的二层交换机环路

运行STP协议的设备通过彼此交互信息发现网路中的环路,并有选择的对某个接口进行阻塞,最终将环路网络结构修剪成无环路的树型网结构,从而防止报文在环形网路中不断循环,避免设备由于重复接收相同报文造成处理性能下降。


Ⅰ . 初识生成树

1、生成树协议功能:将环路网络结构修剪成无环路的树型网结构,既能解决二层环路,也能为网络冗余性提供一种方案。

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

注:生成树协议一般工作在汇聚层

3、二层与三层环路的区别

二层环路 (Layer 2 Loop)
在这里插入图片描述

  • 常见根因:二层冗余环境
  • 需借助特定的协议或机制实现二层防环
  • 二层帧头并没有任何信息可用于防止数据帧被无尽转发

三层环路(Layer 3 Loop)
在这里插入图片描述

  • 常见根因:路由环路
  • 动态路由协议有一定的防环能力
  • IP报文头部中的TTL字段可用于防止报文被无止尽转发

Ⅱ . 生成树的基本概念及工作原理

一 、生成树基本概念

1、桥ID

Bridge ID —— BID(交换机ID)

  • IEEE 802.1D 标准中规定BID由16位(2字节)的桥优先级(Bridge Priority)与48位(6字节)桥MAC地址构成
  • 每一台运行STP的交换机都拥有一个唯一的BID
  • BID中桥优先级占据高位16bit(2字节),其余的低位48bit(6字节)是桥MAC地址。如:4096.4c1f-aabc-102c:
    • 4096是桥优先级(可人为设置)
    • 4c1f-aabc-102c 是桥MAC地址
  • 在STP网路中,BID越小越优,其中最小的设备(出厂最早)会被选举成为根桥

2、根桥

Root Bridge —— STP网路中的无环拓扑“树根”

根桥是STP树的根节点。要生成一棵STP树,首先要确定出一个根桥。根桥是整个交换网络的逻辑中心,但不一定是它的物理中心。当网络的拓扑发生变化时,根桥也可能会发生变化。

  • BID最小的会被选举成为根桥

3、开销

Cost —— 接口到达根桥的开销值,用于推断最佳路径

  • 接口的缺省Cost除了与速率、工作模式相关,还与交换机所使用的不同STP Cost计算方法有关
  • 接口带宽越大,开销值越小
  • 可手动配置接口开销,最小为1,往上取整

4、根路径开销

Root Path Cost —— RPC

  • 以根桥作为参照点,计算去往根桥入口方向接口的累计开销以计算最优路径

5、接口(端口)ID

Port ID —— PID

  • PID由两部分组成,一部分是由高位4bit的接口优先级,另一部分是低位12bit的接口编号
  • 激活STP的接口会维护一个缺省的接口优先级,在华为交换机上为128

6、BPDU

Bridge Protocol Data Unit —— 网桥协议数据单元

  • BPDU是STP的协议报文,用于网桥之间交互,使得网桥相互认识并选举根桥,同时也是运行STP交换机之间交换的消息帧
  • BPDU分两类:
    • 配置BPDU —— Configuration BPDU
    • TCN BPDU —— Topology Change Notification BPDU
  • 配置BPDU是STP进行拓扑计算的关键帧
  • TCN BPDU只在网络拓扑发生变化时才会被触发,发送此数据报文以确定新根桥或计算新开销

二 、生成树工作过程

1、选根桥

① STP在交换机网路中开始工作后,每个交换机都会向网路中发送配置BPDU,配置BPDU中包含交换机自身桥ID(只有根桥才有资格往外发送BPDU)
② 网路中拥有最小桥ID的交换机成为根桥
③ 在一个连续的STP交换机网路中只会存在一个根桥
④ 根桥的角色是可抢占的
⑤ 提前规划STP组网以确保网络的稳定,并将规划为根桥的交换机桥优先级设置为最小值0


2、选根接口(RP)

Root Port —— RP

① 每一台非根桥交换机都会在自己的接口中选举出一个接口
② 非根桥交换机上 有且只有一个 根接口
③ 当非根桥交换机有多个接口接入网路中时,跟接口时其收到最优BPDU的接口
简单的说:根接口其实就是每台非根桥交换机上朝向根桥的接口


3、选指定接口(DP)

Designated Port —— DP

① 根接口被选举出来后,非根桥交换机会使用根接口上收到的最优BPDU进行计算,将结果与自己其他所有接口收到的BPDU进行比较:

  • 前者(根接口)优,则该接口为指定端口
  • 后者(非根接口)优,则该接口为非指定接口
    ② 一般情况下,根桥所有接口都为指定接口

4、阻塞非指定(备用)端口(AP)

Alternate Port —— AP

① 一台交换机上既不是根端口,又不是指定端口的接口被称为非指定端口备份(预备)端口
② STP操作的最后一步就是对这些备用端口进行逻辑阻塞。所谓逻辑阻塞,是指这些备用端口不能转发由终端计算机产生并发送的帧,这些帧也被称为用户数据帧。不过,备用端口可以接收并处理STP协议帧。根端口和指定端口既可以发送和接收STP协议帧,又可以转发用户数据帧。


5、STP接口状态

  • 禁用(Disable):由网络管理员设定或因网络故障由系统的端口处于disabled状态。这个状态是比较特殊的状态,它并不是端口正常的STP状态的一部分。不能收发BPDU,不能收发业务数据帧,且接口为Down
  • 阻塞(Blocking):在端口初始化后,一个端口即不能接收或发送数据,也不能向它的地址表添加MAC地址。相反,这样的一个端口仅许接收BPDU报文,以便能侦听到其他邻接交换机的信息。被STP阻塞,不能发但可以侦听BPDU,不能收发数据帧,不学习MAC地址
  • 侦听(Listening):如果一个交换机认为一个端口可选为根端口或指定端口,那么,它就把该端口blocking状态变以listening状态。在listening状态,端口仍不能接收或发送数据帧。不过,为了使该端口加入生成树的拓扑过程,允许它接收或发送BPDU报文。由于该端口可以通过发送BPDU报文给其它交换机通告该端口的信息,因此,这个端口最终可能被允许成为一个根端口或指定端口。如果该端口失去根端口或指定端口的地位,那么它将反回到blocking状态。交换机侦听时间为15秒STP同步后认定该接口为根接口或指定接口,可收发BPDU,不能收发数据帧,不学习MAC地址
  • 学习(Learning):一个端口在listening状态下经过一段时间(称为转发延迟delay)后,将转为learning状态。该端口仍像从前一样发送和接收BPDU报文。不过,该交换机可以学习新的MAC地址,并将该地址添加到交换机的地址表中。正是因为如此,才使得交换机可以沉默一定的时间,处理有关地址表的信息。交换机学习时间为15秒侦听数据帧,可接收数据帧但不能转发,可以学习MAC地址
  • 转发(Forwarding):在learning状态下再经历一定的转发延迟时间,该端口转入到forwarding状态。在forwarding状态,该端口即可以发送和接收数据帧,也可以收集MAC地址加入到它的地址表,还可以发送和接收BPDU报文。在生成树拓扑中,该端口至此才成为一个全功能的交换机端口。可收发数据帧和BPDU,可根据根接口或指定接口进入转发状态
  • 最终,交换机端口只有 Forwaiding(FWD)Blocking(BLK) 这两种状态。
状态用途
禁用(Disable)强制关闭
阻塞(Blocking)只接收BPDU
侦听(Listening)构建活动拓扑
学习(Learning)构建网桥表 (确定根网桥、根端口与阻塞端口)
转发(Forwarding)发送/接收用户数据

在这里插入图片描述

  • ①:接口初始化或激活,自动进入阻塞状态
  • ②:接口被选举为根接口或指定端口,自动进入侦听状态
  • ③:转发延时器超时且接口为根接口或指定接口,转发延时默认15s
  • ④:接口不再是根接口、指定接口或指定状态
  • ⑤:接口被禁用或链路失效

三 、拓扑变化过程

1、根桥故障

问题背景:

  • 在稳定的STP网络,非根桥会定期收到来自根桥的BPDU报文。
  • 如果根桥发生了故障,停止发送BPDU,下游交换机就无法收到来自根桥的BPDU报文。
  • 如果下游交换机一直收不到BPDU报文,Max Age计时器(缺省: 20s)就会超时,从而导致已经收到的BPDU报文失效,此时,非根桥会互相发送配置BPDU,重新选举新的根桥。

在这里插入图片描述

恢复流程:
a、SW1根桥故障,停止发送BPDU
b、SW2等待Max Age计时器(20s)超时,从而导致已收到的BPDU失效,并无法收到新的BPDU,从而得知上游故障。
c、非根桥互相发送配置BPDU选举新根桥
d、重新选举后,被禁端口会经过两个Forward Delay(15s)时间恢复转发状态
e、非根桥会在BPDU老化之后开始根桥的重新选举
f、根桥故障会导致50s(20+15+15)左右的恢复时间

  • SW3的预备端口,20s后会从Blocking状态进入到Listening状态,再进入Learning状态,最终进入到Forwarding状态,进行用户流量的转发
  • 根桥故障会导致50s左右的恢复时间,等于Max Age加上2倍的Forward Delay收敛时间

2、直连链路故障

问题背景:

  • 当两台交换机间用两条链路互连时,其中一条是主用链路,另一条为备用链路。
  • 当网络稳定时,交换机SWB检测到根端口的链路发生故障,则其备用端口会进入用户流量转发状态。

在这里插入图片描述

a、当交换机SW2网络稳定时检测到根端口的链路发送故障,则其备用端口会经过两倍的Forward Delay(15s)时间进入用户流量转发状态
b、SW2检测到直连链路物理故障后,会将预留端口转换为根端口
c、直连链路故障,备用端口会经过30s后恢复转发状态

  • 备用端口会从Blocking状态,迁移到Listening-Learning-Forwarding状态
  • 直连链路故障,备用端口会经过30s后恢复转发状态

3、非直连链路故障

问题背景:

  • 在稳定的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的备用端口恢复到转发状态,非直连故障会导致50s左右的恢复时间

  • SW3预备端口20s后会从Blocking状态进入到Listening状态,再进入Learning状态,最终进入到Forwarding状态,进行用户流量的转发
  • 非直连故障会导致50s左右的恢复时间,等于Max Age加上2倍的Forward Delay收敛时间

4、拓扑变化导致的MAC地址表错误

缺省状况下,MAC地址表老化时间为300s,使用 TCN BPDU 缩短报文老化时间
在这里插入图片描述

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

具体过程:

  1. SW3感知到网络拓扑发生变化后,会不间断地向SW2发送TCN BPDU报文
    (SW3最先感知到链路变化并向SW2发送TCN BPDU并告诉它我这边有链路故障了)

  2. SW2收到SW3发来的TCN BPDU报文后,会把配置BPDU报文中的Flags的TCA位设置1,然后发送给SW3,告知SW3停止发送TCN BPDU报文
    (SW2向SW3回复一个 TCA置位的配置BPDU 告诉SW3你发的TCN BPDU我已收到,同时我也有从SW1收过来的配置BPDU,且告诉SW3:SW1是我们的根桥,你需要赶紧重新计算端口角色)

  3. SW2向根桥转发TCN BPDU报文
    (SW2向SW1发送TCN BPDU告诉SW1我们的网络拓扑有变化,得重新计算网络)

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

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

自此,拓扑变化时,MAC地址对映关系刷新完毕,TCN BPDU可快速一层一层通知根桥,再有根桥下发指令即可开始更新各自的MAC表


Ⅲ . 生成树的配置

一 、基础配置命令

1、配置生成树工作模式

[Huawei] stp mode stp/rstp/mstp		# 配置模式为stp/rstp/mstp,默认为mstp

2、(可选) 配置根桥

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

3、(可选) 配置备份根桥

[Huawei] stp root secondary		# 优先级自动为4096

4、(可选) 配置stp优先级

[Huawei] stp priority *****		# 必须配置4096的倍数,默认优先级为32768

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

[Huawei] stp pathcost-standard dot1q-1998/dotlt/legacy
# 配置接口路径开销计算方法,默认标准为 IEEE 802.1q(dotlt)方法
# 同一网络内所有交换机的接口路径开销计算方法必须一致

[Huawei-Ethernet0/0/1] stp cost ****	# 配置当前接口的路径开销值

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

[Huawei-Ethernet0/0/1] stp priority ***		# 默认接口优先级为128

7、启用stp/rstp/mstp协议

[Huawei] stp/rstp/mstp enable	# 默认自动开启

二 . 案列分析

在这里插入图片描述

SW1:
[SW1] stp mode stp
[SW1] stp enable
[SW1] stp priority 0	# 将此设备优先级设为0,也就是设置为根桥

SW2:
[SW2] stp mode stp
[SW2] stp enable
[SW1] stp priority 4096

SW3:
[SW2] stp mode stp
[SW2] stp enable

综上:根据生成树协议计算规则,0/0/22接口将被阻塞

在SW3上查看stp接口状态
<SW3>dis stp brief 
MSTID   Port                        Role  	STP State     Protection
   0    GigabitEthernet0/0/21       ALTE  	FORWARDING      NONE
   0    GigabitEthernet0/0/22       ROOT  	DISCARDING      NONE

Ⅳ . 进阶生成树

一 、RSTP

RSTP:Rapid Spanning-Tree Protocol ,快速生成树协议

1、STP的不足之处

1、STP协议虽然能够解决环路问题,但是由于网络拓扑收敛慢,影响了用户通信质量。如果网络中的拓扑结构频繁变化,网络也会随之频繁失去连通性,从而导致用户通信频繁中断,这是用户无法忍受的

2、STP没有细致区分接口状态和接口角色,不利于初学者学习和部署

3、网络协议的优劣往往取决于是否对各种情况加以细致区分:

  • 从用户角度来讲,Listening、Learning和Blocking状态并没有区别,都不能转发流量
  • 从使用和配置角度来讲,接口之间最本质的区别并不在于接口状态,而在于接口扮演的角色
  • 根接口和指定接口都可以处于Listening状态,也可能都处于Forwarding状态

4、STP算法是被动算法,依赖于定时器等待的方式判断拓扑变化,收敛速度较慢

5、STP算法要求在稳定的拓扑中,根桥主动发出配置BPDU报文,而其他设备进行处理,传遍整个STP网络。着也是导致拓扑收敛较慢的主要原因之一


2、RSTP对STP的改进

  • IEEE(电气电子工程师学会)与2001年发布的802.1w标准定义了RSTP,在STP的基础上进行了改进,实现了网络拓扑快速收敛
  • RSTP从STP演化而来,基本思想是一样的:当网络拓扑结构发生变化时,RSTP可以通过Proposal/Agreement机制更快的恢复网络的连通性
  • 根据STP的不足,RSTP删除了3中端口状态,新增两种端口角色,并且把端口属性充分的按照状态和角色解耦,此外,RSTP还新增了相应的一些增强特性和保护措施,实现网络的稳定和快速收敛
  • RSTP是可以与STP实现后向兼容的,但在实际中并不推荐这种做法,原因是RSTP会失去其快速收敛的优势,而STP慢速收敛的缺点会暴露出来
  • RSTP对STP的其他改进:
    • 配置BPDU的处理发生变化:
      • 拓扑稳定后,配置BPDU报文的发送方式进行了优化;
      • 使用更短的BPDU超时计时;
      • 对处理次等BPDU的方式进行了优化;
    • 配置BPDU格式的改变,充分利用了STP协议报文中的Flag字段,明确了接口角色。
    • RSTP拓扑变化处理:相比于STP进行了优化,加速针对拓扑变更的反应速度。

3、RSTP新增变化

RSTP中把Disable、Blocking、Listening三种状态归结为 Discarding状态
新增备份接口(Backup)和边缘接口两种端口角色

在这里插入图片描述

预备接口:Alternate Port —— AP,前文有提到过,也叫非指定端口或备份端口
备份接口:Backup Port —— BP

  • 从配置BPDU报文发送角度来看:
    • 预备接口就是由于学习到其它网桥发送的配置BPDU报文而阻塞的接口。
    • 备份接口就是由于学习到自己发送的配置BPDU报文而阻塞的接口。
  • 从用户流量角度来看:
    • Alternate接口提供了从指定桥到根的另一条可切换路径,作为根接口的备份接口。
    • Backup接口作为指定接口的备份,提供了另一条从根桥到相应网段的备份通路

补充:边缘端口:处于整个域的边缘,不再与任何交换设备相连接
在这里插入图片描述

  • 在STP中用户终端接入交换设备端口后状态由Disabled状态转到Forwarding状态需要经过15s,
    那么用户在这段时间无法上网,如果网络频繁变化,用户上网状态非常不稳定,时断时续
  • 边缘端口一般与用户终端设备直接连接,不与任何交换设备连接。边缘端口正常情况下接
    收不到配置BPDU报文,不参与RSTP运算,可以由Disabled状态直接转到Forwarding状态,
    且不经历时延,就像在端口上将STP禁用了一样。但是,一旦边缘端口收到配置BPDU报文,
    就丧失了边缘端口属性,成为普通STP端口,并重新进行生成树计算,从而引起网络震荡
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

PiB

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

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

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

打赏作者

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

抵扣说明:

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

余额充值