网络技术基础(11)—— 生成树STP简单学习

简介: 【3月更文挑战第1天】网络基础笔记(加班了几天,中途耽搁了,预计推迟6天),这篇借鉴了之前师兄的笔记,边听边记笔记实在是太慢了。

STP生成树协议概述

以太网交换网络中为了进行链路备份,提高网络可靠性,通常会使用冗余链路。但是使用冗余链路会在交换网络上产生环路,引发广播风暴以及MAC地址表不稳定等故障现象,从而导致用户通信质量较差,甚至通信中断。

image.png
二层环路

image.png
环路泛洪

image.png
STP

STP(Spanning Tree Protocol,生成树协议)是一种用于在局域网中消除数据链路层物理环路的协议。主要作用是防止交换机冗余链路产生的环路,确保以太网中无环路的逻辑拓扑结构,从而避免了广播风暴和MAC地址表震荡等问题,提高了网络的可靠性和稳定性。

STP通过在设备之间传递BPDU(Bridge Protocol Data Unit,桥协议数据单元)来确定网络的拓扑结构。运行STP协议的设备会交互信息并发现网络中的环路,然后有选择地对某些端口进行阻塞,最终将环路网络结构修剪成无环路的树形网络结构。

简单来讲就是在网络中交换机可以有多条链路相连,但是通过STP协议逻辑关闭掉多余的端口,形成没有环路的冗余结构网络,当主链路故障,其它逻辑关闭的端口会自动打开实现备份效果。

STP原理与基础

STP的版本:

  • STP(802.1D):这是STP的原始版本,它是一种二层的防环机制,用于解决环路问题。STP通过在设备之间传递BPDU(Bridge Protocol Data Unit,桥协议数据单元)来确定网络的拓扑结构,并根据一系列规则(如端口状态、路径开销等)来阻塞某些端口,最终将环路网络结构修剪成无环路的树形网络结构。

  • RSTP(802.1W):这是STP的快速版本,。与STP相比,RSTP的收敛速度更快,因为它采用了快速切换机制和更高效的端口状态。RSTP在STP的基础上增加了新的端口状态和操作规则,以便更快地发现和解决环路问题。

  • MSTP(802.1S):这是STP的多实例版本。MSTP允许多个生成树实例在单个网络中运行,每个实例可以有不同的配置参数。MSTP通过将VLAN映射到不同的生成树实例中,可以实现更精细的流量控制和管理。

现在华为华三的默认是开启了MSTP功能的。

大概步骤:

  • 在二层网络中选择一个最重要的根桥,其他的为非根桥

  • 其他非根桥交换机选择到根桥最近的端口作为主要端口

  • 逻辑关闭其它多余端口

  • 定期发送BPDU进行优化

STP基本概念

桥ID(Bridge ID,BID)

由16位的桥优先级(Bridge Priority)与桥MAC地址构成。由于MAC地址的唯一性,因此每台交换机都具有唯一的桥ID,格式为:4096.4c1f-aabc-102a。BID桥优先级占据高16bit,且必须为4096的整数倍,其余的低48bit是桥MAC地址。

image.png

根桥

STP的主要作用之一是在整个交换网络中计算出一棵无环的“树”(STP树)。根桥是一个STP交换网络中的“树根”。在STP网络中,BID最小的设备会被选举为根桥。桥ID比较:先比较优先级,越小越优先;优先级相同再比较MAC地址,地址越小越优先。

image.png

开销(Cost)

每一个激活了STP的接口都维护着一个Cost值,接口的Cost主要用于计算根路径开销,也就是到达根的开销。接口带宽越大,则Cost值越小。用户也可以根据需要通过命令调整接口的Cost。

image.png

根路径开销(Root Path Cost)

一台设备从某个接口到达根桥的RPC等于从根桥到该设备沿途所有入方向接口的Cost累加。一般用于非根桥选择根端口,值越小越优先。

image.png

接口ID(Port ID,PID)

运行STP的交换机使用接口ID来标识每个接口,接口ID主要用于在特定场景下选举指定接口。接口ID由两部分构成的,高4 bit是接口优先级,低12 bit是接口编号。激活STP的接口会维护一个缺省的接口优先级,在华为交换机上,该值为128。优先级小的优先。

image.png

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

BPDU是STP的协议报文,STP交换机之间会交互BPDU报文,这些BPDU报文携带着一些重要信息,正是基于这些信息,STP才能够顺利工作。

BPDU分为两种类型:配置BPDU是STP进行拓扑计算的关键;TCN BPDU只在网络拓扑发生变更时才会被触发。

  • 配置BPDU(Configuration BPDU)

  • TCN BPDU(Topology Change Notification BPDU)

数据报文格式:

image.png

STP计算过程

配置BPDU转发过程如下:

image.png

1.所有交换机一开始都认为自己是根桥,从所有接口向外发送配置BPDU。

image.png

2.等待全网交换机泛洪BPDU都确定之后,会根据优先级确定一个根桥,一般情况下根桥所有端口都是指定端口;然后非根桥会选择一个到达根桥最近的根端口和一段链路的指定端口。

image.png

3.非根桥交换机每段链路选举一个指定接口

image.png

4.根桥全部接口为指定端口,非根桥上一个根端口,另外每段链接选举一个指定端口,其它端口逻辑关闭,就形成了一个无环的网络架构了。

image.png

然后交换机会定期进行BPDU的泛洪修剪,保障网络没有环路。

STP接口角色与状态

上面我们提到了根端口、指定端口、阻塞端口等概念,这里学习下STP的不同端口角色。

在STP版本中有三类端口:

  • 指定端口:一般情况下,根桥的所有端口都是指定端口,能够转发数据

  • 根端口:非根桥到达根桥最近的端口,相当于主干链路

  • 阻塞端口:非根桥上不是根端口,在一段链路上选举指定端口失败的端口都是阻塞端口,不能转发数据

在STP中不同端口有几种不同的状态,结合起来就是STP的端口角色和状态关系。

image.png

接口状态变化

image.png

简单概述

1.交换机配置STP后端口进入阻塞。

2.进行BPDU交互,选择完成后确定根端口和指定端口

3.端口进入侦听、学习状态,非根端口和非指定端口进入阻塞状态

4.经过一定延迟根端口和指定端口进入转发状态,可以进行数据转发

STP选举规则

根桥选举

1、比较桥ID,桥ID小的优先

2、桥ID相同则比较MAC地址,MAC地址越小越优先

非根桥的根端口选举

1、比较RPC,RPC越小越优先,选举为根端口,即根桥到达非根桥端口的链路开销

2、当链路存在hub设备,根桥可能不是所有端口为指定端口,存在一个备份端口

3、比较对端的BID(根桥ID)

4、比较对端(根桥)的PID

5、比较本端的PID(非根桥)

指定端口的选举

1、比较RPC,根桥到达的端口,越小越优先

2、比较发送者的BID,比较一段链路两个设备的BID,越小越优先

3、比较发送者的PID(连接hub设备可能出现)

STP配置示例

实际中配置前建议先规划性能较好的设备配置最高的优先级作为根桥,确定好理想的网络架构,然后配置好IP以及端口类型,最后所有交换机启动STP功能。

配置命令如下:

# 配置生成树工作模式,现在默认是mstp,以后再学习
[Huawei] stp mode {
   
    stp | rstp | mstp }

# (可选)配置根桥,手动确定根桥设备,配置后该设备优先级数值自动为0,并且不能更改设备优先级。
[Huawei] stp root primary

# (可选)备份根桥,配置后该设备优先级数值为4096,并且不能更改设备优先级。
[Huawei] stp root secondary

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

# (可选)配置接口路径开销
[Huawei-GigabitEthernet0/0/1] stp cost cost

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

# 启用STP/RSTP/MSTP
[Huawei] stp enable

总结

生成树STP用于交换机二层网络防止环路以及冗余备份功能实现。有根桥和非根桥,有指定端口和根端口,状态包括:阻塞、侦听、学习、转发、丢弃等,大致了解了STP主要通过在BPDU携带自己的优先级参数进行选举根桥,然后在每段链路都需要通过接口的Port ID选举指定端口,然后阻塞其它端实现无环网络架构,最后其实配置不难,建议提前规划好设备核心骨干以及划分端口,最后启用STP功能即可,需要实际多配置练习。

相关文章
|
6天前
|
算法
|
6天前
|
算法 网络协议
生成树协议:网络稳定的守护者
【4月更文挑战第22天】
13 0
|
4天前
|
存储 算法 Windows
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例(下)
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例
11 0
|
4天前
|
算法 数据可视化 数据挖掘
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例(上)
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例
14 0
|
3天前
|
机器学习/深度学习 数据可视化
R语言逻辑回归、决策树、随机森林、神经网络预测患者心脏病数据混淆矩阵可视化(下)
R语言逻辑回归、决策树、随机森林、神经网络预测患者心脏病数据混淆矩阵可视化
10 0
|
3天前
|
机器学习/深度学习 数据采集 数据可视化
R语言逻辑回归、决策树、随机森林、神经网络预测患者心脏病数据混淆矩阵可视化(上)
R语言逻辑回归、决策树、随机森林、神经网络预测患者心脏病数据混淆矩阵可视化
12 0
|
3天前
|
Kubernetes API 调度
|
4天前
|
前端开发 数据挖掘 数据建模
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例(中)
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例
14 0
|
5天前
|
机器学习/深度学习
GAN网络的代码实现(学习ing)
GAN网络的代码实现(学习ing)
|
5天前
|
机器学习/深度学习 算法 数据挖掘
R语言气象模型集成预报:神经网络、回归、svm、决策树用环流因子预测降雨降水数据
R语言气象模型集成预报:神经网络、回归、svm、决策树用环流因子预测降雨降水数据
11 0