当前位置: 首页 > article >正文

STP生成树

概述:

        STP(Spanning Tree Protocol)生成树协议将环形网络修剪成为一个无环的树型网络,避免报文在环形网络中的增生和无限循环。

        一个集成网络难免会出现环路,环路会产生广播风暴,最终导致整个网络资源被耗尽,网络瘫痪不可用。同时,环路还会引起MAC地址表震荡导致MAC地址表项被破坏。

        为了破除环路,产生了数据链路层协议STP,运行该协议的设备通过彼此交互信息发现网络中的环路,并有选择的对某个端口进行阻塞,最终将环形网络结构修剪成无环路的树形网络结构,从而防止报文在环形网络中不断发送,避免形成广播风暴,避免设备由于重复接收相同的报文造成处理能力下降。

相关概念:

根桥(Root Bridge):

        相当于是树根。每个交换机运行STP,会产生桥ID,桥ID最小的为根桥。对于一个STP/RSTP网络,根桥有且只有一个,它是整个网络的逻辑中心,但不一定是物理中心。根据网络拓扑的变化,根桥可能改变。

BID(Bridge,ID桥ID):

        优先级+MAC地址。计算公式为:BID = 桥优先级 + MAC地址。通过比较桥ID的大小,可以选出STP中的根桥。先比较优先级,若优先级相同,则比较MAC地址。桥ID值越小,优先级越高,越有可能成为根桥。

PID(Port ID,端口ID):

        优先级+接口号。计算公式为:PID = 端口优先级 + 接口号。端口ID用于在STP中区分不同的端口,以便进行端口角色的选举和配置

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

        BPDU是STP的协议报文,STP正常工作的根本。STP交换机之间会交互BPDU报文,这些报文携带着一些重要信息,如桥ID、端口ID、根路径开销等。通过这些信息,STP会计算出网络的生成树,并选举出根桥、根端口、指定端口等关键角色。

RP(Root Port,根端口):

        非根桥交换机上连接根桥且到根桥开销最小的端口。根端口负责将流量和控制消息从下游交换机发送到根桥。在STP的生成树中,每个非根桥交换机都只有一个根端口。开销越小,越能成为根端口。

DP(Designated Port,指定端口):

        是网络中每个网段中转发配置BPDU的端口。每个网段有且只有一个指定端口。负责从根桥接收数据并转发给所连接的网段。同时,它也负责向根桥发送BPDU报文。路径开销和端口ID的组合值最小的端口成为指定端口。

AP(Alternate Port,预备端口):

        根接口RP的备份。当RP出现故障后,接替RP的工作。

BP(Backup Port,备份端口):

        与AP类似,BP是DP的备份。

端口状态

端口目的说明
Disabled(禁止)处于关闭或未启用STP的状态状态为Down
Blocking(阻塞)不能转发数据,但可以接收STP的BPDU信息阻塞端口
Listening(监听)若端口被选举为根端口或指定端口,它会转换到监听状态过渡端口(15s)
Learning(学习)端口开始学习MAC地址,同时继续收发BPDU信息,但依旧不转发用户数据防止临时环路
Forwarding(转发)收发BPDU信息,学习MAC地址,并转发数据流量根端口和指定端口会进入转发状态

BPDU报文格式

BPDU封装格式

BPDU被封装在以太网数据帧中,遵循IEEE 802.3标准。具体来说,BPDU的封装包括以下几个部分:

  1. 目的MAC地址:BPDU的目的MAC地址是组播地址01-80-C2-00-00-00,表示该帧是发送给网络中的所有STP交换机。

  2. Length字段:指后续数据的字节长度,但不包括CRC(循环冗余校验)字节。

  3. LLC头:逻辑链路控制(LLC)头部,其中目的服务访问点(DSAP)和源服务访问点(SSAP)的值通常为0x42,控制字段值为3。

  4. BPDU报文头:随后是BPDU报文头,包含了STP协议的各种信息和参数。

BPDU报文内容

BPDU报文内容主要包括以下几个字段:

  1. Protocol Identifier:协议标识符,值为0,占用2字节

  2. Protocol Version Identifier:协议版本标识符,STP为0,RSTP(Rapid Spanning Tree Protocol,快速生成树协议)为2,MSTP(Multiple Spanning Tree Protocol,多生成树协议)为3,占用1字节

  3. BPDU Type:BPDU类型,占用1字节。具体类型包括:

    • 0x00:STP的配置BPDU。
    • 0x02:RSTP BPDU或MSTP BPDU。
    • 0x80:STP的TCN(Topology Change Notification,拓扑变化通知)BPDU。
  4. Flags:网络拓扑变化标志,占用1字节。其中,最高位表示拓扑变化确认(TCA)标志,最低位表示拓扑变化(TC)标志。

  5. Root Identifier:当前根桥的BID(Bridge Identifier,桥标识符),共占用8字节。前2个字节是网桥的优先级,后6个字节是网桥的MAC地址

  6. Root Path Cost:根路径开销,即从本端口到根桥的开销,占用4字节

  7. Bridge Identifier:发送者的BID,同样是前2字节是网桥优先级,后6字节是网桥MAC地址,共占用8字节

  8. Port Identifier:发送端口的PID(Port Identifier,端口标识符),占用2字节

  9. Message Age:标识BPDU的消息年龄,如果配置BPDU是根桥发出的,则Message Age为0。每经过一个桥,Message Age增加1,占用2字节

  10. Max Age:标识消息老化的年龄,即BPDU报文老化的时间,缺省值是20秒,可选范围是6-40秒,占用2字节

  11. Hello Time:发送两个相邻BPDU的时间间隔,缺省值是2秒,可配置的时间范围是1-10秒,占用2字节

  12. Forward Delay:控制Listening状态和Learning状态的持续时间,缺省值是15秒,可配置范围是4-30秒,占用2字节

选举过程

选出根桥(Root Bridge)

        STP开始时,网络中的每个桥(交换机)都会宣称自己是根桥,并广播自己的桥ID给网络中的其他桥。桥ID由桥优先级(默认为32768)和桥MAC地址组成。具有最低桥ID的桥会被选为根桥。

选出根端口(Root Port)

        在每个非根桥上,STP会选择一个端口作为根端口,该端口是到达根桥的最短路径上的端口。STP会考虑路径成本(由端口速度和配置决定)和桥ID来确定哪个端口是最佳的根端口。

选出指定端口(Designated Port)

        在生成树的每个网段(由两个桥之间的链路分隔开的部分)上,STP会选择一个端口作为指定端口。这个端口负责向该网段转发帧。选择指定端口的依据包括到达根桥的路径成本、发送者桥ID、发送者端口ID等。

4. 阻塞其他端口(Blocking Other Ports)

        在选择了根端口和指定端口之后,STP会将非根桥上的其他端口置于阻塞状态(Blocking)。这些端口不参与帧的转发,但会监听网络中的STP消息,以便在需要时快速转换状态。

STP拓扑发生改变的原因

1、端口从forwarding状态过渡到disable或blocking状态。

2、非根桥如果从指定端口接收到TCN BPDU包,需要向根桥装发TCN BPDU包。

3、端口进入转发状态,并且本地已存在一个指端端口。

STP拓扑改变过程

检测拓扑变化

  • 当网络中的设备检测到拓扑变化时(如链路断开、设备故障等),会触发STP的重新计算过程。
  • STP通过BPDU的交换来检测拓扑变化。BPDU分为两种:配置BPDU和TCN BPDU。

重新计算生成树

  • 在检测到拓扑变化后,STP会重新计算生成树拓扑,以确保网络的连通性和无环路。
  • 这个过程包括重新选举根桥、根端口和指定端口,以及更新非指定端口的状态。

加速MAC地址表老化

  • 拓扑变化后,交换机中的MAC地址表可能包含过时的表项,这些表项会导致数据转发错误。
  • STP通过发送TCN BPDU来加速MAC地址表的老化过程。根桥在收到TCN BPDU后,会在后续的配置BPDU中设置TC(Topology Change)标志位,通知下游设备将MAC地址表的老化时间从默认的300秒缩短为Forward Delay时间(默认为15秒)。

收敛过程

  • STP的收敛时间取决于多种因素,包括Max Age(BPDU的最大存活时间,默认为20秒)和Forward Delay(端口从监听状态到转发状态的延时,默认为15秒)。
  • 在拓扑变化后,STP的收敛时间通常为Max Age加上两倍Forward Delay的时间,即大约50秒。

STP的基础配置命令

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 32768

缺省情况下,交换机的优先级取值为32768

5、配置接口的路径开销

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

配置接口路径开销计算方法。缺省情况下,路径开销值的计算方法为IEEE 802.1t(dot1t)标准方法。同一网路内所有交换机的接口路径开销应使用相同的开销算法。

[huawei-GigbitEthernet0/0/1] stp cost 100

设置当前接口的路径开销值。使用华为计算方法时参数cost取值范围是1~200000。使用IEEE 802.1d标准方法时取值范围是1~65535。使用IEEE 802.1t标准方法时取值范围是1~200000000。

6、配置接口优先级

[huawei-intf] stp priority 128

配置接口的优先级。缺省情况下,交换机接口的优先级取值为128

7、启用STP/RSTP/MSTP

[huawei] stp enable

使能交换机的STP/RSTP/MSTP功能。缺省情况下,设备此功能处于启用状态

STP配置例子

[Huawei]display stp

[Huawei]dis int vlan 1

[Huawei]display stp brief 


http://www.kler.cn/a/311526.html

相关文章:

  • 科研绘图系列:R语言组合堆积图(stacked plot)
  • 虚拟机linux7.9下安装mysql
  • 高校宿舍信息管理系统小程序
  • 机器学习课程总结(个人向)
  • 解锁 AI 新境界:元素碰撞的神奇应用技巧全解析
  • 【Pikachu靶场:XSS系列】xss之过滤,xss之htmlspecialchars,xss之herf输出,xss之js输出通关啦
  • css 中 em 单位怎么用
  • 医疗数据分析师
  • Uniapp的alertDialog返回值+async/await处理确定/取消问题
  • 矿场工程车检测数据集 4900张 工程车 带标注voc yolo
  • Unity Transform 组件
  • 【GO开发】MacOS上搭建GO的基础环境-Hello World
  • 2024-1.2.12-Android-Studio配置
  • HttpMediaTypeNotAcceptableException: No acceptable representation问题解决方法
  • 解决使用nvm管理node版本时提示npm下载失败的问题
  • 选择排序
  • DPDK 简易应用开发之路 2:UDP数据包发送及实现
  • Day14:学生信息管理系统
  • 【Qt网络编程】Tcp多线程并发服务器和客户端通信
  • Laravel邮件发送:从配置到发邮件的指南!
  • 从零开始讲DDR(2)——DDR的核心技术
  • 软考架构-架构风格
  • 全网最适合入门的面向对象编程教程:50 Python函数方法与接口-接口和抽象基类
  • 2-95 基于matlab的模板定位
  • 阿里云容器服务Kubernetes部署新服务
  • springboot实战章节小结