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

生成树(STP)协议

目录

前言

为什么出现STP?

一、STP概述

1.基本原理

2.相关概念

BPDU

根路径开销

桥ID(BID)

端口ID(PID)

二、三大选举

端口角色

举栗子

三、五状态

四、拓扑变更

直接拓扑变更

间接拓扑变更

五、STP的增强特性


前言

为什么出现STP?

在没有出现stp之前,当前往一个目的地存在二条及二条以上的链路,这样可能会形成环路,所以就出现了stp(生成树协议),名字正如它的原理一般希望它的路径能够如一棵树的结构那般不会有环的出现,这样就起到了防环的作用

一、STP概述

1.基本原理

STP(Spanning Tree Protocol)是生成树协议的英文缩写,它的标准是IEEE 802.1D。可应用于计算机网络中树形拓扑结构建立,STP的主要目的就是确保在网络中存在冗余路径时,不会产生环路。

原理:通过在交换机之间传递一种特殊的协议报文-网桥协议数据单元,来确定网络的拓扑结构。

2.相关概念

BPDU

(1)(Bridge Protocol Data Unit,简称BPDU)

配置BPDU(Configuration BPDU):用于计算无环的生成树的

TCN BPDU:用于在二层网络拓扑发生变化时产生用来缩短MAC表项的刷新时间的(由默认的300s缩短为15s)

(2)配置BPDU的长度至少要35个字节,包含了桥ID、路径开销和端口ID等参数,即{根桥ID累计根路径开销发送者BID发送端口PID}

(3)只有当发送者的BID或端口的PID两个字段中至少有一个和本桥接收端口不同,BPDU报文才会被处理,否则丢弃。这样避免了处理和本端口信息一致的BPDU报文。

根路径开销

发送配置BPDU的端口到根桥的距离,决定了到根桥的路径开销

桥ID(BID)

由桥优先级和桥MAC两部分组成,在STP网络中,桥ID最小的设备会被选举为根桥。

端口ID(PID)

由端口优先级和端口编号组成,端口优先级默认为128,端口编号的大小为:G>F>E

二、三大选举

STP的选举过程分为3步骤:选举根桥,选举根端口,接着选举指定端口,最后阻塞端口

端口角色

根桥:根桥上的所有端口均为指定端口

在初始的交换环境中,每台设备均认为自己是根桥,接着再往外发送自己的BPDU(含根桥)进行比较,比较规则如下

选举规则:

①优先级值(默认为32768)越小越优;

②MAC地址越小越优先

根端口:负责接收BPDU(在非根桥设备上仅有一个接口属于根端口)

选举规则:

先比较到达根桥的根路径开销(即到达根桥经过的设备的接口开销总和),越小越优

再比较发送方桥ID(BID),本台交换机每个接口接收到的BPDU(含桥ID),越小越优

接着比较发送方端口ID(PID),本台交换机对端相连的BPDU(含对方接口的PID),越小越优

④最后比较端口ID(若连集线器),本台交换机的端口IP,越小越优

指定端口:负责发送和转发BPDU

每条链路上都会选举出一个指定端口,根桥的每个接口均为指定端口

选举规则:

先比较到达根桥的根路径开销(即到达根桥经过的设备的接口开销总和),越小越优

再比较发送方桥ID(BID),本台交换机每个接口接收到的BPDU(含桥ID),越小越优

接着比较发送方端口ID(PID),本台交换机对端相连的BPDU(含对方接口的PID),越小越优

④最后比较端口ID(若连集线器),本台交换机的端口IP,越小越优

阻塞端口:

当选举完根桥、根端口、指定端口之后会阻塞备用端口

举栗子

[SW1]display stp
-------[CIST Global Info][Mode MSTP]-------
CIST Bridge         :32768.4c1f-cc5e-557d  # 当前交换机的桥ID(优先级. MAC地址)
Config Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20  # 配置的STP时间参数:Hello时间2秒,Max Age 20秒,Forward Delay 15秒,Max Hop 20
Active Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20  # 实际生效的STP时间参数
CIST Root/ERPC      :32768.4c1f-cc47-70f1 / 20000  # CIST根桥的桥ID和到根桥的外部路径开销(ERPC)
CIST RegRoot/IRPC   :32768.4c1f-cc5e-557d / 0  # 当前交换机的区域根桥(RegRoot)和内部路径开销(IRPC)
CIST RootPortId     :128.1  # 当前交换机的根端口ID(端口优先级. 端口号)
BPDU-Protection     :Disabled  # BPDU保护功能未启用
TC or TCN received  :12  # 收到的拓扑变更(TC)或拓扑变更通知(TCN)次数
TC count per hello  :0  # 每个Hello时间内收到的TC次数
STP Converge Mode   :Normal  # STP收敛模式为普通模式
Time since last TC  :0 days 0h:2m:20s  # 上次拓扑变更发生的时间
Number of TC        :7  # 拓扑变更发生的总次数
Last TC occurred    :GigabitEthernet0/0/2  # 上次拓扑变更发生的端口

----[Port1(GigabitEthernet0/0/1)][FORWARDING]----  # 端口1(GigabitEthernet0/0/1)的状态信息
 Port Protocol       :Enabled  # 端口STP协议已启用
 Port Role           :Root Port  # 端口角色为根端口(Root Port)
 Port Priority       :128  # 端口优先级为128
 Port Cost(Dot1T )   :Config=auto / Active=20000  # 端口开销配置为自动,实际生效值为20000
 Designated Bridge/Port   :32768.4c1f-cc47-70f1 / 128.1  # 指定桥ID和指定端口ID
 Port Edged          :Config=default / Active=disabled  # 端口边缘状态配置为默认,实际未启用
 Point-to-point      :Config=auto / Active=true  # 点对点链路配置为自动,实际为true(点对点链路)
 Transit Limit       :147 packets/hello-time  # 每个Hello时间内允许转发的BPDU包数量
 Protection Type     :None  # 未启用端口保护功能
 Port STP Mode       :MSTP  # 端口STP模式为MSTP
 Port Protocol Type  :Config=auto / Active=dot1s  # 端口协议类型配置为自动,实际为dot1s(IEEE 802.1s)
 BPDU Encapsulation  :Config=stp / Active=stp  # BPDU封装类型配置为STP,实际为STP
 PortTimes           :Hello 2s MaxAge 20s FwDly 15s RemHop 20  # 端口的时间参数:Hello时间2秒,Max Age 20秒,Forward Delay 15秒,剩余跳数20
 TC or TCN send      :10  # 端口发送的TC或TCN次数
 TC or TCN received  :2  # 端口收到的TC或TCN次数
 BPDU Sent           :11  # 端口发送的BPDU总数
          TCN: 0, Config: 0, RST: 0, MST: 11  # 发送的BPDU类型细分:TCN 0个,Config 0个,RST 0个,MST 11个
 BPDU Received       :1483  # 端口收到的BPDU总数
          TCN: 0, Config: 0, RST: 0, MST: 1483  # 收到的BPDU类型细分:TCN 0个,Config 0个,RST 0个,MST 1483个

三、五状态

STP确保在一个网络中只有一条活动的路径,进而避免了环路问题

  • Disable:(禁用状态)

不参与STP的计算,处在物理层的断开状态(与世无争)

此时端口处在shutdown状态

  • Blocking:(阻塞状态)

接收BPDU但不发送BPDU,不接收和发送数据

当收到BPDU之后端口进入Blocking状态,此后继续监听BPDU数据帧,此状态持续可能需要20s

当端口up或使能STP启用

  • Listening:(侦听状态)

接收BPDU和发送BPDU,不接收和发送数据

收到BPDU之后进入Listening状态,在此状态继续监听BPDU数据帧,此状态持续15s

此时端口被选为指定端口/根端口

  • Learning:(学习状态)

接收BPDU和发送BPDU,不接收和发送数据,但学习MAC地址

进入Learning状态,继续接收BPDU并且学习MAC地址完善MAC地址表,此状态持续15s

端口 Forward delay计时器超时

  • Forwording:(转发状态)

接收BPDU和发送BPDU,接收和发送数据

进入此状态,正常转发数据

端口 Forward delay计时器超时

四、拓扑变更

MAC地址表老化时间300S
1.拓扑发生变化时,设备向所有STP接口发送TCN BPDU
2.邻居设备收到时,回复一个TCA置位的配置BPDU,并将TCN BPDU转发至根桥
3.根桥收到TCN BPDU时,自身MAC地址表老化时间临时修改为15S
4.根桥发送TC置位的配置BPDU,所有交换收到后将MAC地址表老化时间临时修改为15S

直接拓扑变更

当设备C的e0/0/1接口down,那么就e0/0/1无法接收到根桥发送的BPDU,设备C会快速感知到e0/0/1down所以就将e0/0/2接口转为RP,这个过程不到1s,但e0/0/2的RP状态需要能够到转发状态需要30s时间

特征:设备的每个接口都能接收根桥的BPDU,当根端口down时可以实时的转为根端口的物理接口

间接拓扑变更

当设备B的e0/0/1接口down,设备B接收不到BPDU则自己认为根桥不存在,所以自认为根桥向设备C发送BPDU,但设备B的BPDU比设备A(根桥)的BPDU优先级低--称为次级BPDU因此设备C不会学习,过了一段设备C的e0/0/2接口仍然未收到实际根桥的BPDU因此e0/0/2接口转为DP状态,过了30s之后转发根桥的BPDU给设备B,设备B收到后知道有更优的设备存在因此将设备B的e0/0/2转为RP状态,过了30s之后才有转发功能

特征:并不是每个接口都能收到BPDU

五、STP的增强特性

  • PortFast:主机接口快速转发,避免TCN。

  • UplinkFast:接入交换机快速切换根接口。

  • BackboneFast:全网交换机快速检测间接拓扑变更。

  • BPDU Guard:防止PortFast接口误接交换机。

  • BPDU Filter:阻止PortFast接口收发BPDU。

  • UDLD:检测光纤单向链路故障。

  • Root Guard:防止根桥被抢占。

  • Loop Guard:防止NDP接口因链路堵塞导致环路。

相关文章:

  • 基于 Java 和深度学习的图像分类应用实践
  • 大屏设计新纪元:定制视觉盛宴
  • 【WRF模拟】WPS预处理设置生成文件地址
  • XSS-labs(反射型XSS) 靶场 1-13关 通关
  • 图解AUTOSAR_CP_E2E_Library
  • Linux系统——keepalived安装与部署
  • 用 pytorch 从零开始创建大语言模型(一):理解大型语言模型
  • 关于 Redis 缓存一致
  • 定积分与不定积分在概率统计中的应用
  • idea问题(三)pom文件显示删除线
  • C++ - 从零实现Json-Rpc框架-2(服务端模块 客户端模块 框架设计)
  • 从报错到成功:Mermaid 流程图语法避坑指南✨
  • C# HTTP 文件上传、下载服务器
  • 视频剪辑全流程解析:从素材到成片
  • 大模型训练为什么选择交叉熵损失(Cross-Entropy Loss):均方误差(MSE)和交叉熵损失的深入对比
  • springboot实现调用百度ocr实现身份识别+二要素校验
  • python3.13.2安装详细步骤(附安装包)
  • [AI速读]用持续集成(CI)优化芯片验证环境:Jenkins与EDA工具的实战指南
  • <项目> 高并发服务器的HTTP协议支持
  • 学习使用 Git 和 GitHub 开发项目的教程推荐
  • 天算星座二期首批卫星成功发射,将助力6G空天信息基础设施建设
  • 马上评|训斥打骂女儿致死,无暴力应是“管教”底线
  • 阿联酋与美国达成超过2000亿美元协议
  • “16+8”“生酮饮食”,网红减肥法究竟靠谱吗?
  • “80后”北京市东城区副区长王智勇获公示拟任区委常委
  • 观察|本轮印巴冲突或促使印度空军寻求更先进战机