网络安全之STP(1)

STP---生成树协议

(注意,OSPF与其有许多相似的地方,OSPF在许多方面都有去借鉴STP)

首先是在建设企业网络时会产生的冗余:

1.设备冗余

2.线路冗余

3.UPS冗余(不间断电源)

4.网关冗余

在来学习STP生成树协议之前,我们来想一想

在二层环路中产生的问题:

1.广播风暴===广播帧在二层环路中会形成一个顺时针和逆时针的环路,并且会无线循环下去,最终导致宕机

2.MAC地址表翻摆(飘移)===因为数据帧环路的存在,交换机的MAC地址表中会不断更新MAC地址的接口对应关系

3.多帧复制===重复收到相同的数据帧

最短路径生成树

最短路径生成树===在二层交换网络中,逻辑上堵塞部分接口,实现从根交换机到所有节点的最短路径的拓扑结构,生成一个没有环路的拓扑,当其中最佳的路径出现故障时,刚将个别堵塞的接口打开,实现链路资源的备份。

简单介绍一些关于STP的一些版本

STP===802.1D

PVST、PVST+====恩科私有生成树协议

802.1W===RSTP===快速生成树协议

802.1S===MSTP===多生成树协议

BPDU (Bridge Protocol Data Unit,桥协议数据单元)是生成树协议(STP)中用于交换机之间传输信息的数据单元 。它的主要作用是帮助构建无环的网络拓扑,确保在物理上存在环路的网络中不会出现广播风暴或MAC地址表震荡等问题。

BPDU的主要功能

  1. 选举根桥:通过BPDU中的信息(如桥ID、根路径开销等),选举出网络中的根桥。

  2. 确定端口角色:帮助确定每个网段的指定桥和根端口,确保网络中只有一条路径到达根桥。

  3. 维护网络拓扑:定期发送BPDU来维护网络的生成树结构,确保网络拓扑的稳定。

  4. 通知拓扑变化:当网络拓扑发生变化时,通过TCN BPDU(拓扑变化通知BPDU)通知其他交换机

在STP中,BPDU分为两种,一种是配置BPDU,另外一种是TCN BPDU

在这个表中,我们首先来确认几个比较重要的部分:

根网桥ID 根路径开销 网桥ID 接口ID

这四部分是我们需要多去理解记忆的重要部分

消息寿命也类似于TTL

最后的三部分内容也是保活的重要配置

根网桥ID(root Identifier)===在这个生成树中,作为根的交换机的身份ID===802.1D中,一个交换机网络中只有一棵树

网桥ID===BID===每一台交换机的身份标识===8位字节数构成

前2个字节===优先级(数值越小的,优先充当RB即根网桥)

后6个字节===MAC地址(数值越小的,优先充当RB)

因为需要支持生成树协议,所以交换机至少拥有一个MAC地址,则可以使用这个MAC地址,但是如果三层交换机,可能拥有多个MAC地址,则会选择其中数值最小的作为BID中的MAC地址。

根路径开销===RPC===发出该BPDU的设备到达根网桥的开销

接口ID===2字节===用来区分和标识交换机不同的接口,发出该BPDU设备接口

前4位===优先级===取值范围理论上是0-65535,实际上为0-61440,默认32768,优先级只能使用前四位,后12位为拓展系统ID,只有在802.1S中启用===优先级修改需要按照4096的倍数来修改。

后12位===接口的标识

以上的参数会参与到生成树的角色选举

接下来,我们来具体学习配置BPDU和TCN BPDU

配置BPDU:

配置BPDU(Configuration BPDU)是生成树协议(STP)中用于进行生成树计算和维护生成树拓扑的报文。

配置BPDU的作用
  • 选举根桥:通过配置BPDU中的根桥ID(由根桥的优先级和MAC地址组成)来确定网络中的根桥。

  • 确定端口角色:根据配置BPDU中的信息(如根路径开销、指定桥ID、指定端口ID等)来确定端口的角色(根端口、指定端口、阻塞端口等),从而构建生成树。

  • 维护生成树拓扑:定期发送配置BPDU以维护生成树的拓扑结构,确保网络的稳定运行。

只有根网桥可以发送,在一开始,交换网络的初始阶段,所有设备都认为字节是根网桥,则都会从自己所激活STP协议的接口发出配置BPDU,基于收到BPDU进行角色选举,选出真正的根,之后所有的非根网桥不再主动发送配置BPDU,仅转发根网桥的配置BPDU,根网桥会每隔2秒周期发送,此外还有20s老化时间

根路径开销在转发时,计算方法是将接收到的BPDU中的RPC加上接口的开销值,可以通过以下的图表来的熟悉一下这个流程。

在这个表中,MAC地址的老化时间有360S缩小到15S,也就是我们所说的转发延迟同步。,表中的TCA和TC是配置BPDU

TCN BPDU:

TCN BPDU(Topology Change Notification BPDU)是生成树协议(STP)中的一种特殊报文,用于在网络拓扑发生变化时通知相关设备。以下是关于TCN BPDU的详细介绍:

定义

TCN BPDU是拓扑变化通知BPDU,当网络中的交换机检测到拓扑结构发生变化时,会生成并发送TCN BPDU。它是一种非常简单的BPDU,内容仅包含协议号、版本和类型字段,类型字段固定为0x80,长度为4个字节。

作用

TCN BPDU的主要作用是将拓扑变化的信息从下游设备逐级上报到根桥。根桥收到TCN BPDU后,会通过配置BPDU将拓扑变化信息广播到整个网络,以便所有交换机能够重新计算生成树并更新MAC地址表。

触发条件

TCN BPDU在以下两种情况下产生:

  1. 端口状态变为Forwarding状态。

  2. 指定端口收到TCN BPDU,复制TCN BPDU并发往根桥。

传播过程
  • 当非根桥检测到拓扑变化后,会生成TCN BPDU,并从自己的根端口发送出去。

  • 沿途收到TCN BPDU的交换机会向下游回应TCA(拓扑变更确认)标记位置1的配置BPDU,以阻止下端持续发送TCN BPDU,同时从自身根端口向上游转发TCN BPDU。

  • 最终,TCN BPDU会逐级上报到根桥。

与配置BPDU的关系
  • 配置BPDU用于生成树的计算和维护,而TCN BPDU用于通知拓扑变化。

  • 根桥收到TCN BPDU后,会在配置BPDU中设置TC(拓扑变更)标志位,将拓扑变化信息广播到整个网络。

STP的选举规则
根端口===RP

所有非根网桥有且仅有一个距离根网桥最近的端口,用来接受根网桥的BPDU

1.选择在接受根网桥BPDU是RPC最小的端口作为根端口

2.如果多个接口到达根网桥的开销值相同,则比较接口对端设备的BID,优先选择BID小的设备所对应的接口为根端口

3.如果对端的BID也相同,则比较对端的PID,优先选择PID小的接口为根端口

PID===2字节===前四位优先级,后12位为接口标识

先比较优先级,优先选择数值小的,默认128,每一位代表16,修改优先级也需要按照16的倍数修改,如果优先级相同,则比较接口标识

4.对端的PID也相同,则比较本地接口的PID,选择PID小的为根端口。

指定端口===DP

每一个链路上有且仅有一个端口为指定端口,用来发送或转发根网桥的BPDU,根网桥所有的根网桥所有的接口都是指定端口,根端口的对端一定是指定端口

1.优先选择发出根网桥BPDU时,RPC最小的端口作为指定端口

2.如果发出的开销值相同,则比较接口链接设备的BID,优先选择BID小的设备接口作为指定端口

3.如果本端的BID也相同,则比较接口的PID,优先选择PID小的作为指定端口

4.如果本端的PID也相同,则直接阻塞

非指定端口==NDP

此时在这个网络中,没有被赋予角色身份的端口就被叫做非指定端口。接下来发送几个图片来作为练习,找出图中网络的根端口,指定端口,非指定端口以及最短路径生成树。

大家可以尝试练习一下。

通过我们在上面的学习过程中,我们也发现接口也存在好几种状态,那我们接下来就继续学习

接口的状态

1.禁用

  • 接口关闭
  • 接口没有激活生成树

2.阻塞

接口激活生成树后第一个进入的状态,只能侦听BPDU,不能发送BPDU,不能发送BPDU也不能处理业务数据帧。

在设备20s没有侦听到BPDU,则认为根网桥不存在或者失败,则进入下一个状态。

3.侦听----(角色选举过程)

可以接受和发送BPDU,但是不能处理数据帧,15s后(转发延迟时间)将进入下一个状态,部分接口将会被阻塞,将会回退阻塞状态

为什么设置15s这么长的时间呢?

其主要目的是为了防止部分角色也没有选出来

4.学习

开始接收业务数据帧,但是只记录MAC地址和接口的信息,并不去转发业务数据帧,停留时间15s

15s目的:尽可能多的去记录MAC地址信息,以减少未知单播帧的泛洪

5.转发

可以进行BPDU的处理,也可以转发业务数据帧

最终可能提留的状态:转发和阻塞

侦听和学习是两个过渡状态,首次收敛-----50s

如果结构发生了突变,那么重新收敛需要多久呢?

结构突变
  1. 根网桥故障====50s
  2. 直连网桥故障====30s
  3. 非直连链路故障====50s

大家可以根据以上的状态来推测这个重新收敛的时间是怎么得出的。

相关推荐
枷锁—sha12 小时前
【SRC】SQL注入WAF 绕过应对策略(二)
网络·数据库·python·sql·安全·网络安全
天荒地老笑话么20 小时前
静态 IP 规划:掩码/网关/DNS 的正确组合
网络·网络协议·tcp/ip·网络安全
大方子2 天前
【PolarCTF】rce1
网络安全·polarctf
枷锁—sha2 天前
Burp Suite 抓包全流程与 Xray 联动自动挖洞指南
网络·安全·网络安全
聚铭网络2 天前
聚铭网络再度入选2026年度扬州市网络和数据安全服务资源池单位
网络安全
darkb1rd2 天前
八、PHP SAPI与运行环境差异
开发语言·网络安全·php·webshell
世界尽头与你2 天前
(修复方案)基础目录枚举漏洞
安全·网络安全·渗透测试
枷锁—sha3 天前
【SRC】SQL注入快速判定与应对策略(一)
网络·数据库·sql·安全·网络安全·系统安全
liann1193 天前
3.1_网络——基础
网络·安全·web安全·http·网络安全
ESBK20253 天前
第四届移动互联网、云计算与信息安全国际会议(MICCIS 2026)二轮征稿启动,诚邀全球学者共赴学术盛宴
大数据·网络·物联网·网络安全·云计算·密码学·信息与通信