STP和RSTP详解-原理篇

  • 一、STP
    • 1.1 STP基本概念
    • 1.2 STP三个定时器
    • 1.3 STP BPDU报文
      • 1.3.1 配置 BPDU
      • 1.3.2 TCN BPDU
      • 1.3.3 BPDU优先级
    • 1.4 STP不足之处(面试常考点)
    • 1.5 STP 拓扑计算过程分析
  • 二、RSTP
    • 2.1 新增三种端口角色
    • 2.2 重新划分端口状态
    • 2.3 BPDU的改变
      • 2.3.1 BPDU格式变化
      • 2.3.2 拓扑变化时BPDU的使用变化
      • 2.3.3 配置BPDU 处理上的变化
    • 2.4 P/A收敛机制
    • 2.5 RSTP的其他收敛机制
  • 三、RSTP和STP的兼容(互操作)
  • 四、相关文章链接

一、STP

基于 IEEE 802.1 D 标准建立
解决问题:广播风暴导致网络不可用;MAC地址表回滚

1.1 STP基本概念

在 STP协议中选举涉及很多基本概念,“一个根,两个度量,三个选举要素,四个种比较原则,五种端口状态

  1. 一个根
    树形网络中必须有一个根,于是引入了 STP根桥的概念,并且根桥有且仅有一个,网络中出了根桥统称非根桥
    注意:桥是一个网络逻辑中心,不一定是网络的物理中心,且会根据拓扑变化而变化,根桥一般固定在性能最好的交换机上。
  2. 两种度量
  • ID :STP中的ID包含 BID(桥ID)和PID(端口ID)

BID: BID一般有64位组成,高I6位为桥优先级(0-61440,越小越优)),低48位为背板MAC地址(MAC地址越小越优)。 BID决定了那台交换机成为网络中的根桥。

PID: 高四位端口优先级,低12位端口号。(在选择指定端口时,两个端口的路径开销和端口发送的BPDU中的BID都相同的情况下,比较端口的PID,PID小的为指定端口,)端口优先级可以影响端口在指定生成树实例上的角色。

  • 路径开销: 路径开销(Path Cost)是一个端口参数,由端口的速率决定(对于链路聚合,链路速率是所有UP状态端口速率和),桥上所有的端口的根路径开销,以及交换机上的不同端口间的路径开销值均为零。
  1. 选举三要素:
  • 根桥:BID最小的桥设备,通过交互BID报文选出最小的BID,图中SW1为根桥;
  • 根端口:负责转发根方向转发的数据,是当前设备上前往根桥的路径开销最小的出端口(非根桥交换机距离根桥“最近”的端口);
    注意: 在一个运行STP设备上根端口有且仅有一个,但是根桥上没有根端口。
  • 指定端口指定端口(DP)和指定桥(DB),对于一台设备而言,与本机相连负责向本机转发配置BPDU的设备就是指定桥,对端的连接端口就是指定端口;对一个局域网而言,负责向本网段转发配置消息的设备就是指定桥,指定桥中向本网段转发配置消息的端口就是指定端口。

一旦根桥、根端口、指定端口选举成功,则整个树形网络建立完成,在拓扑稳定后只有根端口和指定端口转发用户流量,其他端口都处于阻塞状态,他们只接收STP协议报文,不转发用户流量。
4. 四个比较原则 :
STP生成树的生成计算中依赖各个端口发送的配置BPDU中携带的优先级向量:{根桥ID;累计路径开销;发送者BID;发送端口PID} 数值越小越优

  • 根桥ID :每个STP网络中有且仅有一个根
  • 累计路径开销 :发送配置BPDU的端口到根桥的距离
  • 发送者BID :发送配置BPDU的设备的BID
  • 发送端口PID : 发送配置BPDU的端口的PID
  1. **五种端口状态: **
状态 中文 说明
Forwarding 转发状态 端口既转发用户流量也转发BPDU报文,中油根端口和指定端口才能进入Forwarding状态
Learning 学习状态 此时设备会根据收到用户的流量构建MAC地址表,但是不转发用户流量,,这是一种过渡状态,增加Learning状态位防止临时二层环路
Listening 监听状态 此时设备正在确定端口角色,选举出根桥、根端口和指定端口,这是一种过渡状态
Blocking 阻塞状态 端口仅可以接收并处理BPDU,不转发用户流量
Disabled 禁用状态 端口不仅仅转发BPDU报文,也不能转发用户流量,端口是Down状态


①:端口从禁止状态开始初始化或者使能后首先进入阻塞状态。
②:在端口突然被禁用或者链路失效时将从当前其他所有状态下直接进入到禁用状态。
③:在端口被选举为根端口或指定端口后,由阻塞状态进入到监听状态。
④:在端口不再是根端口或指定端口时,会从当前其他状态直接进入阻塞状态。
⑤:当新选出的根端口和指定端口要经过两倍的转发延时(即从监听状态进入学习状态,再从学习状态进入转发状态)后才能进入转发状态,以确保新的配置消息传遍整个网络,防止临时环路的产生。
注意: 华为设备缺省状态使用的是MSTP模式,当从MSTP中切换成STP模式,设备运行STP协议的设备上端口支持的端口和MATP支持的端口状态一样,支持的状态包换转发、学习和丢弃这三种

1.2 STP三个定时器

  • Hello定时器:
    Hello定时器是指运行STP协议的设备发送配置BPDU的时间间隔,即设备会每隔HelloTime时间向周围的设备发送配置消息BPDU,以确认链路是否存在故障。
    当网络拓扑稳定之后,该定时器的修改只有在根桥修改后才有效。新的根桥会在发出的BPDU报文中填充适当的字段以向其他非根桥传递该定时器修改的信息。当拓扑变化之后,TCNBPDU的发送不受这个定时器的管理。
  • Forward Delay(转发延时):
    转发延时是设备进行状态迁移的延迟时间,是指一个端口处于Listening和Learming状态的各自持续时间,缺省是1Ss。即Listening状态持续15s,随后进入Learming状态,然后再持续15s。
    链路故障会引发网络重新进行生成树的计算,生成树的结构将发生相应的变化。但是重新计算得到的新配置消息不可能立即传遍整个网络,如果此时新选出的根端口和指定端口就立即开始数据转发的话很可能会造成临时的二层环路。为此,STP采用了一种状态迁移机制,新选出的根端口和指定端口要经过两倍的ForwardDelay延时后才能进入转发状态,这个延时保证了新的配置消息传遍整个网络,从而防止了临时环路的产生。
  • Max Age (最大生成时间):
    最大生存时间是指端口的BPDU报文的老化时间,可在根桥上通过命令人为改动老化时间。
    Max Age通过配置BPDU报文的传输,可保证Max Age在整网中-致。运行STP协议的网络中非根桥设备收到配置BPDU报文后,会对报文中的MessageAge(消息生存时间)和Max Age进行比较:如果Message Age小于等于Max Age,则该非根桥设备继续转发配置BPDU报文:如果Message Age大于Max Age,则该配置BPDU报文将被老化。该非根桥设备直接丢弃该配置BPDU,可认为网络直径过大,导致根桥连接失败。

注意: 当配置BPDU从根网桥发出时报文中的 Message Age 值为0 。当其他桥收到配置BPDU时,Message Age值为从根桥发送到当前桥接收到BPDU的总时间,包括传输延时等。实际实现中,配置BPDU报文每经过一个桥,Message Age增加1。

1.3 STP BPDU报文

1.3.1 配置 BPDU


我们来看一个数据包

1.3.2 TCN BPDU

TCN BPDU是指在下游拓扑发生变化时向上游发送拓扑变化通知,直到根桥。TCN BPDU在如下两种情况下会产生。

  • 端口状态变为Forwarding状态,且该设备上至少有一一个指定端口。
  • 指定端口在收到TCNBPDU后向根桥复制TCNBPDU.

TCN BPDU中的内容比较简单,只有表8-1中列出的前3个字段:协议ID、协议版本和消息类型,长度只有4个字节,且“消息类型”字段是固定值0x80。

1.3.3 BPDU优先级

当同一个桥收到多个BPDU时,优先级高的BPDU生效,其他被丢弃,优先级比较见1.1中的四个比较原则。

假定有两条配置BPDUX和Y,则它们的比较顺序如下。
(1)如果X的根桥ID小于Y的根桥ID,则X优于Y。
(2)如果X和Y的根桥ID相同,但X的根路径开销小于Y,则X优于Y。
(3)如果X和Y的根桥ID,以及路径开销都相同,但X的桥ID小于Y,则X优于Y;
(4)如果X和Y的根桥ID、根路径开销以及桥ID都相同,但X的端口ID小于Y,则X优于Y。

1.4 STP不足之处(面试常考点)

  • STP没有细致区分端口状态和端口角色,在STP协议中划分了5种端口状态,其中的listening、learning 、和 blocking三个状态没有本质的区别,都不转发用户流量。
  • STP采用被动算法,依赖定时器等待的方式判断拓扑的变化–收敛速度慢
  • STP协议中算法规定在稳定的拓扑中只有根网桥能主动发送配置BPDU,而其他桥设备只能被动转发,直到传遍整个STP网络

1.5 STP 拓扑计算过程分析

在比较原则和选举三要素中已经说明,
初始化阶段:根桥选举→根端口选举→指定端口选举→网路收敛完成
拓扑变化:下游设备向上游设备发送 TCN BPDU 报文通知上游设备,上游设备使用的是 TC位,或者TCA位置1的配置 BPDU,

  • TCA标志位置1的配置BPDU报文主要是上游设备用来告知下游设备已经知道拓扑变化,通知下游设备停止发送TCN BPDU报文:
  • TC标志位置1的配置BPDU报文主要是上游设备用来告知下游设备拓扑发生变化,要求下游设备直接删除有故障的端口MAC地址表项,从而达到快速收敛的目的。

二、RSTP

继IEEE 802.1D 定义了STP标准后,IEEE推出了 802.1W,作为802.1D的补充,并定义了RSTP标准,在新版本的 802.1D (2004)中已经接纳了RSTP标准,取代了原来的STP,RSTP保留了STP的大部分算法和计时器。

2.1 新增三种端口角色

RSTP的端口角色共有五种:根端口、指定端口、Alternate(替代)端口、Backup(备份)端口和Edge(边缘)。

当“根端口” 或“指定端口”失效,“替代端口”或“备份端口”就会无延时地转发状态,提高了收敛速度,Edge端口时管理员根据实际需要配置的一种指定端口,用于连接PC或不需要运行STP的下游交换机,管理员需要保证下游不存在环路,Edge端口能够直接进入Forwarding状态。

2.2 重新划分端口状态

RSTP端口状态分为三种:Discarding(丢弃)、Learning(学习)、Forwarding(转发)

STP端口状态 RSTP端口状态 对应端口角色 是否发送BPDU 是否学习MAC 是否转发数据
Forwarding Forwarding 根端口、指定端口
Learning Learning 根端口、指定端口
Listening Discarding 根端口、指定端口
Blocking Discarding Alternate端口、Backup端口
Disabled Discarding Disable

2.3 BPDU的改变

2.3.1 BPDU格式变化
  • RSTP只有配置BPDU,没有TCN BPDU ;
  • RST中的 BPDU称为 RST BPDU
  • Type字段: RST BPDU 类型不在是0 而是2 (如图中RSTP是0x02;STP是0x00 ),即STP设备收到RST BPDU时会丢弃
  • Flage字段:(最高位TCA,最低位TCN ,用来表示BPDU类型的)
    • Agreement:确认标志位,当该位为1时,表示该BPDU报文为快速收敛机制中的Agreement报文,是对所收到的Proposal BPDU(此时Bit 1 位置为1)的提议确认,即P/A机制,可以是指定端口通过和对端端口的一次握手即可快速的进去转发状态,其中不需要任何定时器。
    • Forwarding:转发状态标志位,位于 bit 5 该位为1时表示发送该BPDU 的端口状态处于转发状态
    • Learning : 学习状态标志位,位于bit4 ,该位为1时表示发送该BPDU 的端口状态处于学习状态
    • Port role :端口角色标志位,bit 2和bit 3两位, 00 时表示发送BPDU的端口角色未知;01时表示发送BPDU的端口为替代(Alternate)或备份(Backup);10时表示发送BPDU的端口为根端口;11时表示发送BPDU的端口为指定端口
  • Proposal:提议标志位,位于bit1 当该位置1时表示该BPDU 报文为快速收敛机制中的Proposal报文,对端在收到该报文后,如果同意,则需要发送bit6位置1的确认报文

注意:运行STP的设备会丢弃收到的 RST BPDU ,目前RSTP交换机都提供STP兼容模式,运行在STP兼容模式的端口会发送和接收配置BPDU,表现的特性也和STP类似,除配置BPDU外,RSTP同样有 TCN BPDU, 类型也为0x80。

2.3.2 拓扑变化时BPDU的使用变化
2.3.3 配置BPDU 处理上的变化

2.4 P/A收敛机制

  • proposing(提议请求):当一个端口处于DIscarding状态或Learning状态时,proposing变量置位,并向下游桥设备传递Flags字段proposal标志位置1的 RST BPDU,请求快速切换到Forwarding状态
  • proposed(提议采纳):当对端的根端口收到以上Proposal标志位置1的RST BPDU时,proposed变量置位。该变量指示本网段上的指定端口希望尽快进入Forwarding状态。
  • sync(同步请求):当根端口的proposed 变量置位后会依次为本桥上的其他端口使sync变量置位,使所有非边缘端口都进入Discarding状态,准备重新同步。
  • synced(同步完成):当端口进入到Discarding状态后会将自己的synced变量置位,包括本桥上的其他所有Altermate端口、Backup 端口和边缘端口,实施同步操作。此时,根端口监视其他端口的synced变量置位情况,当所有其他端口的synced变量全被置位,则根端口最后也会将自己的synced变量置位,表示本桥上已正式完成同步操作,向上游设备传回Agreement标志位置1的RST BPDU(表示此BPDU为Agreement RST BPDU报文)。
  • **agreed(提议确认):**当原来想要进入转发状态的上游设备指定端口收到对端根端口发来的一一个Agreement RST BPDU时,则此指定端口的agreed变量被置位。Agreed变量一旦被置位,则该指定端口马上转入Forwarding状态。

== 注意:==
事实上对于STP,指定端口的选择可以很快完成,主要的速度瓶颈:为了避免环路,必须等待足够长的时间,使全网的端口状态全部确定,也就是说必须要等待至少一个Forward Delay 所有端口才能进行转发。而RSTP的主要目的就是消除这个瓶颈,通过阻塞自己的非根端口来保证不会出现环路。而使用P/A 机制加快了上游端口转到Forwarding状态的速度。
但P/A机制要求两台交换设备之间链路必须是点对点的全双工模式。一旦P/A协商不成功,指定端口的选择就需要等待两个ForwardDelay,协商过程与STP–样。

2.5 RSTP的其他收敛机制

  • 根端口快速切换机制
    如果网络中一个根端口失效,那么网络中最优的Alternate端口将立即成为根端口,并进入 Forwarding 状态,在点到点以太网链路上,根端口总能快速迁移到 Forwarding状态。
  • 边缘端口的引入
    在RSTP中,如果某一个指定端口位于整个网络的边缘,即不再与其他交换设备连接,而是直接与终端设备直连(保证下游无环,不一定是终端设备),这种端口叫做边缘端口。
    边缘端口不接收处理配置BPDU,不参与RSTP运算,可以由Disable状态直接转到Forwarding状态,且不经历任何时延。但是一旦边缘端口收到配置BPDU,就丧失了边缘端口属性,成为普通RSTP端口,并重新进行生成树计算,从而引起网络振荡。

三、RSTP和STP的兼容(互操作)

RSTP 可以和STP互操作,但是此时会丧失快速收敛等RSTP优势,当一个网段里既有运行STP的交换设备,又有运行RSTP的交换设备时,STP交换设备会忽略RST BPDU,而运行RSTP的交换设备在某端口上接收到运行STP的交换设备发出的配置BPDU时,会在两个Hello Time时间之后把自己的端口转换到STP工作模式,发送配置BPDU。这样,就实现了互操作。

四、相关文章链接

STP和RSTP 华为设备配置方法

STP和RSTP详解-原理篇相关推荐

  1. MSTP详解- 原理篇

    MSTP详解-原理篇 一. MSTP产生背景 二. MSTP基本概念 三.MSTP端口角色 四.MSTP的端口状态与收敛机制 五. MSTP 拓扑计算原理 5.1 MSTP 向量优先级 5.2 CIS ...

  2. Docker网络详解——原理篇

    前言 当你开始大规模使用Docker时,你会发现需要了解很多关于网络的知识.Docker作为目前最火的轻量级容器技术,有很多令人称道的功能,如Docker的镜像管理.然而,Docker同样有着很多不完 ...

  3. Redis五种基本数据类型底层详解(原理篇)

    Redis五种基本数据类型底层详解 详细介绍Redis用到的数据结构 简单动态字符串 SDS和C字符串的区别 总结 链表 字典 哈希表 字典 哈希算法 解决键冲突 rehash(重点) 渐进式reha ...

  4. BERT详解——原理篇(组会PPT,其中大量参考李宏毅的bert课程视频)

  5. 数通--交互技术--STP+RSTP详解

    交互技术–STP+RSTP详解 STP: 一.作用: 1.解决环路(广播风暴.Mac地址表震荡) 2.实现链路备份的目的 二.stp流程(原理): 1.选举一个根桥 (优先级=BID<0-655 ...

  6. IIS负载均衡-Application Request Route详解第一篇: ARR介绍

    IIS负载均衡-Application Request Route详解第一篇: ARR介绍   说到负载均衡,相信大家已经不再陌生了,本系列主要介绍在IIS中可以采用的负载均衡的软件:微软的Appli ...

  7. IIS负载均衡-Application Request Route详解第二篇:创建与配置Server Farm

    自从本系列发布之后,收到了很多的朋友的回复!非常感谢,同时很多朋友问到了一些问题,有些问题是一些比较基本的问题,由于时间的缘故,不会一一的为大家回复,如果有不明白的,希望大家勤自学!本系列虽然不难,但 ...

  8. IIS负载均衡-Application Request Route详解第二篇:创建与配置Server Farm(转载)

    IIS负载均衡-Application Request Route详解第二篇:创建与配置Server Farm 自从本系列发布之后,收到了很多的朋友的回复!非常感谢,同时很多朋友问到了一些问题,有些问 ...

  9. Linux使用详解(进阶篇)

    文章目录 Linux使用详解(进阶篇) 1.Linux目录说明 2.操作防火墙 3.ulimit命令和history命令 4.RPM和Yum的使用 5.设置系统字符集 6.vi & vim编辑 ...

最新文章

  1. Windows服务器版本简介
  2. [云炬创业管理笔记]第一章测试5
  3. jira使用教程pdf_需要申请项目?需要开通权限?需要创建流程?刚需教程安排上了!...
  4. oracle insert 新增语句
  5. 你的通勤时间都去哪了?
  6. js 获取father_(原创)Node.JS实战26:强大的工作池。收藏吧!你一定会用的到。...
  7. 线性表之--队列操作
  8. mysql 安装参考
  9. gromacs 安装_GROMACS:粗粒化力场建立和模拟上线!
  10. 学完Java后可从事的十大领域!
  11. The log scan number (620023:3702:1) passed to log scan in database 'xxxx' is not valid
  12. 时域上的乘积等于频域上的卷积_图卷积神经网络:Graph Convolutional Networks
  13. android 融云数据库路径,Android开发规范
  14. 上位机软件系统开发工具简介
  15. html5如何实现语音点歌,怎么给手机点歌 怎么样用自己手机给对方手机点歌
  16. Java之网络编程(二)UDP
  17. 国产工业机器人目前发展到了什么水平?
  18. C++在使用fgetc读取文件时出现方框乱码
  19. 国际服服务器怎么换账号吗,战争雷霆国际服怎么切换账号 | 手游网游页游攻略大全...
  20. ecshop活动页_ECShop:专题活动

热门文章

  1. 如何利用样机制作一张精美的展示图
  2. 【Unity3D】关于 InputManager 以及改键功能的制作
  3. MiFlash提示“错误代码”为“0xffffffff”
  4. (笔记)双重差分(DID)、拓展及其Stata实现
  5. echart基本使用
  6. 在 Spring Boot 中使用 HikariCP 连接池
  7. 年度社区app源码,简单唯美,对接hybbs,iapp开源
  8. 无线电台、无线网桥、网络结构相关知识总结
  9. 牛客24479 小睿睿的数列
  10. 大数据NiFi(五):NiFi分布式安装