一篇文章详解STP/RSTP/MSTP 二层防环技术

本文深入探讨了STP(生成树协议)、RSTP(快速生成树协议)以及MSTP(多生成树协议)在防止局域网环路中的作用。STP通过选举根桥、根端口和指定端口,构建无环路树形网络结构,解决广播风暴和MAC地址表震荡问题。RSTP对STP进行改进,引入快速收敛机制,如Proposal/Agreement机制,缩短端口状态迁移时间。MSTP则进一步实现了VLAN级别的负载均衡和生成树实例的独立计算,允许在同一网络中为不同VLAN创建独立的最优路径,提高网络效率。文章详细阐述了这些协议的工作原理、选举机制、报文格式和拓扑变化处理,为理解二层网络的环路避免和优化提供了全面的知识。
摘要由CSDN通过智能技术生成

 

一、STP 出现的背景
STP 是一个用于局域网中消除环路的协议。运行该协议的设备通过彼此交互信息而发现网络中的环路,并适当对某些端口进行阻塞以消除环路。由于局域网规模的不断增长,生成树协议已经成为了当前最重要的局域网协议之一。

环路的网络中,会产生如下两种情况:
1、广播风暴导致网络不可用。

2、MAC 地址表震荡导致 MAC 地址表项被破坏。

 

二、STP 基本概念

一个根桥
树形的网络结构必须有树根,于是 STP 引入了根桥(Root Bridge)概念。
对于一个 STP 网络,根桥在全网中只有一个,它是整个网络的逻辑中心,但不一定是物理中心。根桥会根据网络拓扑的变化而动态变化。
网络收敛后,根桥会按照一定的时间间隔产生并向外发送配置 BPDU,其他设备仅对该报文进行处理,传达拓扑变化记录,从而保证拓扑的稳定。


两种度量
生成树的生成计算有两大基本度量依据:ID 和路径开销。
ID
ID 又分为:BID(Bridge ID)和 PID(Port ID)。
BID:桥 ID
IEEE 802.1D 标准中规定 BID 是由 16 位的桥优先级(Bridge Priority)与桥 MAC 地址构成。BID 桥优先级占据高 16 位,其余的低 48 位是 MAC 地址。
在 STP 网络中,桥 ID 最小的设备会被选举为根桥。
PID:端口 ID
PID 由两部分构成的,高 4 位是端口优先级,低 12 位是端口号。
PID 只在某些情况下对选择指定端口有作用。

路径开销
路径开销(Path Cost)是一个端口变量,是 STP 协议用于选择链路的参考值。STP 协议通过计算路径开销,选择较为“强壮”的链路,阻塞多余的链路,将网络修剪成无环路的树形网络结构。在一个 STP 网络中,某端口到根桥累计的路径开销就是所经过的各个桥上的各端口的路径开销累加而成,这个值叫做根路径开销(Root Path Cost)。

 

三要素选举
从环形网络拓扑结构到树形结构,总体来说有三个要素:根桥、根端口和指定端口
根桥 RB(Root Bridge)
根桥就是网桥 ID 最小的桥,通过交互配置 BPDU 协议报文选出最小的 BID。
根端口 RP(Root Port)
所谓根端口就是去往根桥路径开销最小的端口,根端口负责向根桥方向转发数据,这个端口的选择标准是依据根路径开销判定。在一台设备上所有使能 STP 的端口中,根路径开销最小者,就是根端口。很显然,在一个运行 STP 协议的设备上根端口有且只有一个,根桥上没有根端口。
指定端口 DP(Designated Port)

 

一旦根桥、根端口、指定端口选举成功,则整个树形拓扑建立完毕。在拓扑稳定后,只有根端口和指定端口转发流量,其他的非根非指定端口都处于阻塞(Blocking)状态,它们只接收 STP 协议报文而不转发用户流量。

 

四个比较原则
STP 选举有四个比较原则,构成消息优先级向量:{ 根桥 ID,累计根路径开销,发送设备 BID,发送端口 PID }。


在 STP 计算过程中,都遵循数值越小越好的原则。
最小 BID:用来选举根桥。运行 STP 协议的设备之间根据表 2 所示根桥 ID 字段选择最小的BID。
最小累计根路径开销:用来在非根桥上选择根端口。在根桥上,每个端口到根桥的根路径开销都是 0。

最小发送者 BID:当一台运行 STP 协议的设备要在两个以上根路径开销相等的端口之中选择根端口时,通过 STP 协议计算,将选择接收到的配置消息中发送者 BID 较小的那个端口。

最小 PID:用于在根路径开销相同的情况下,不阻塞最小 PID 的端口,而是阻塞 PID 值较大的端口。

 

五种端口状态

 

对于 STP,影响端口状态和端口收敛有以下 3 个参数。
Hello Time
运行 STP 协议的设备发送配置消息 BPDU 的时间间隔,用于设备检测链路是否存在故障。设备每隔 Hello Time 时间会向周围的设备发送 hello 报文,以确认链路是否存在故障。当网络拓扑稳定之后,该计时器的修改只有在根桥修改后才有效。新的根桥会在发出的 BPDU报文中填充适当的字段以向其他非根桥传递该计时器修改的信息。但当拓扑变化之后, TCN PDU 的发送不受这个计时器的管理。
Forward Delay
设备状态迁移的延迟时间。链路故障会引发网络重新进行生成树的计算,生成树的结构将发生相应的变化。不过重新计算得到的新配置消息无法立刻传遍整个网络,如果新选出的根端口和指定端口立刻就开始数据转发的话,可能会造成临时环路。为此, STP 采用了一种状态迁移机制,新选出的根端口和指定端口要经过 2倍的Forward Delay延时后才能进入转发状态,这个延时保证了新的配置消息传遍整个网络,从而防止了临时环路的产生。
说明:Forward Delay Timer 指一个端口处于 Listening 和 Learning 状态的各自持续时间,默认是 15秒。即 Listening 状态持续 15 秒,随后 Learning 状态再持续 15 秒。这两个状态下的端口会处于 Blocking 状态,这正是 STP 用于避免临时环路的关键。
Max Age
端口的 BPDU 报文老化时间,可在根桥上通过命令人为改动老化时间。
Max Age 通过配置 BPDU 报文的传输,可保证 Max Age 在整网中一致。运行 STP 协议的网络中非根桥设备收到配置 BPDU 报文后,报文中的 Message Age 和 Max Age 会进行比较:
如果 Message Age 小于等于 Max Age,则该非根桥设备继续转发配置 BPDU 报文。
如果 Message Age 大于 Max Age,则该配置 BPDU 报文将被老化。该非根桥设备直接丢弃该配置 BPDU,可认为网络直径过大,导致根桥连接失败。
说明:如果配置 BPDU 是根桥发出的,则 Message Age 为 0。否则, Message Age 是从根桥发送到当前桥接收到 BPDU 的总时间,包括传输延时等。实际实现中,配置 BPDU 报文经过一个桥,Message Age 增加 1。

 

三、STP 报文格式

桥 ID、路径开销和端口 ID 等信息,所有这些信息都是通过 BPDU 协议报文传输。
配置 BPDU 是一种心跳报文,只要端口使能 STP,则配置 BPDU 就会按照 Hello Time 定时器规定的时间间隔从指定端口发出。
TCN BPDU 是在设备检测到网络拓扑发生变化时才发出。
BPDU 报文被封装在以太网数据帧中,目的 MAC 是组播 MAC:01-80-C2-00-00-00, Length/Type字段为 MAC 数据长度,后面是 LLC 头, LLC 之后是 BPDU 报文头。以太网数据帧格式如下图。

配置 BPDU
通常所说的 BPDU 报文多数指配置 BPDU。
在初始化过程中,每个桥都主动发送配置 BPDU。但在网络拓扑稳定以后,只有根桥主动发送配置BPDU,其他桥在收到上游传来的配置 BPDU 后,才触发发送自己的配置 BPDU。配置 BPDU 的长度至少要 35 个字节,包含了桥 ID、路径开销和端口 ID 等参数。只有当发送者的 BID 或端口的 PID两个字段中至少有一个和本桥接收端口不同, BPDU 报文才会被处理,否则丢弃。这样避免了处理和本端口信息一致的 BPDU 报文。
配置 BPDU 在以下 3 种情况下会产生:
只要端口使能 STP,则配置 BPDU 就会按照 Hello Time 定时器规定的时间间隔从指定端口发出。
当根端口收到配置 BPDU 时,根端口所在的设备会向自己的每一个指定端口复制一份配置BPDU。
当指定端口收到比自己差的配置 BPDU 时,会立刻向下游设备发送自己的 BPDU。

 

BPDU 报文基本格式

 

标志字段STP 中只使用了其最高位和最低位。
Flags 字段格式

  • 3
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

网络工程师笔记

如果对你用于就鼓励下吧

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

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

打赏作者

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

抵扣说明:

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

余额充值