RSTP与STP的不同增加端口角色:AP和BP

减少端口状态为Discardinglearningforwarding

充分利用BPDU中的Flag字段

对BPDU的处理方式发生了改变

提高收敛速度

增加了保护功能

RSTP和STP消除环路的思想保持一致,RSTP具备了STP的所有功能,支持RSTP的网桥可以和支持STP的网桥一同运行。

RSTP的端口角色共有4种:根端口、指定端口、Alternate端口和Backup端口。

根端口和指定端口的作用同STP协议中定义,Alternate端口和Backup端口的描述如下:从配置BPDU报文发送角度来看:

Alternate端口就是由于学习到其它网桥发送的更优配置BPDU报文而阻塞的端口。

Backup端口就是由于学习到自己发送的更优配置BPDU报文而阻塞的端口。

从用户流量角度来看:

Alternate端口提供了从指定桥到根的另一条可切换路径,作为根端口的备份端口。

Backup端口作为指定端口的备份,提供了另一条从根桥到相应网段的备份通路。

给一个RSTP域内所有端口分配角色的过程就是整个拓扑收敛的过程。

RSTP端口状态Forwarding

Learning

discardingSTP端口状态RSTP端口状态发送配置BPDUMAC地址学习转发数据

DisableDiscarding否否否

BlockingDiscarding否否否

ListeningDiscarding是否否

LearningLearning是是否

ForwardingForwarding是是是

RSTP的状态规范把原来的5种状态缩减为3种。根据端口是否转发用户流量和学习MAC地址来划分:如果不转发用户流量也不学习MAC地址,那么端口状态就是Discarding状态。

如果不转发用户流量但是学习MAC地址,那么端口状态就是Learning状态。

如果既转发用户流量又学习MAC地址,那么端口状态就是Forwarding状态。

RSTP计算过程:端口在Discarding状态下完成端口角色的确定:

当端口角色确定为根端口和指定端口后,经过forwardingdelay后,端口进入Learning状态,处于Learning状态的端口其处理方式和STP相同,此期间端口开始学习MAC地址并在Forwardingdelay后进入Forwarding状态,开始转发数据。实际上,RSTP会通过其他方式加快这个过程。

当端口角色确定为Alternate端口后,端口会维持在Discarding状态。

RSTP对STP的BPDU改动充分利用STP中BPDU的Flag,明确端口角色

Type字段为2

Flag字段使用了之前的保留位,更改后的配置BPDU更名为RST BPDU

配置BPDU格式的改变,充分利用了STP协议报文中的Flag字段,明确了端口角色。在配置BPDU报文的格式上,除了保证和STP格式基本一致之外,RSTP作了一些小变化:Type字段,配置BPDU类型不再是0而是2,所以运行STP的设备收到RSTP的配置BPDU时会丢弃。

Flags字段,使用了原来保留的中间6位,这样改变的配置BPDU叫做RSTBPDU。

RSTP中BPDU的Flag字段解释:第0位为TC标志位,和STP相同。

第1位为Proposal标志位,该位置位表示该BPDU为快速收敛机制中的Proposal报文。

第2位和第3位为端口角色标志位,00表示端口角色为未知;01表示端口角色为Alternate或Backup端口;10表示端口为根端口;11表示端口为指定端口。

第4位为Learning标志位,该位置位表示端口处于Learning状态。

第5位为Forwarding标志位,该位置位表示端口处于Forwarding状态。

第6位为Agreement标志位,该位置位表示该BPDU位快速收敛机制中的Agreement报文。

第7位为TCA标志位,和STP相同。

RSTP中配置BPUD的处理非根桥设备每隔HelloTimer从指定端口主动发送配置BPDU

BPDU超时计时器为3个HelloTimer

阻塞端口可以立即对收到的次级BPDU进行回应

BPDU处理发生的变化拓扑稳定后,配置BPDU报文的发送方式

拓扑稳定后,根桥按照HelloTimer规定的时间间隔发送配置BPDU。其他非根桥设备在收到上游设备发送过来的配置BPDU后,才会触发发出配置BPDU,此方式使得STP协议计算复杂且缓慢。RSTP对此进行了改进,即在拓扑稳定后,无论非根桥设备是否接收到根桥传来的配置BPDU报文,非根桥设备仍然按照HelloTimer规定的时间间隔发送配置BPDU,该行为完全由每台设备自主进行。

更短的BPDU超时计时

如果一个端口连续3个HelloTime时间内没有收到上游设备发送过来的配置BPDU,那么该设备认为与此邻居之间的协商失败。而不像STP那样需要先等待一个MaxAge。

次级BPDU的处理

当一个端口收到上游的指定桥发来的RSTBPDU报文时,该端口会将自身存储的RSTBPDU与收到的RSTBPDU进行比较。如果该端口存储的RSTBPDU的优先级高于收到的RSTBPDU,那么该端口会直接丢弃收到的RSTBPDU,立即回应自身存储的RSTBPDU。当上游设备收到下游设备回应的RSTBPDU后,上游设备会根据收到的RSTBPDU报文中相应的字段立即更新自己存储的RSTBPDU。由此,RSTP处理次等BPDU报文不再依赖于任何定时器通过超时解决拓扑收敛,从而加快了拓扑收敛。

STP收敛机制在STP中,为了避免环路,端口从使能到进入转发状态需要等待默认30秒的时间,只能依靠计时器被动的收敛。如果想要缩短计时器,会引起网络的不稳定性。

RSTP快速收敛机制边缘端口机制

在RSTP里面,如果某一个指定端口位于整个网络的边缘,即不再与其他交换设备连接,而是直接与终端设备直连,这种端口叫做边缘端口。边缘端口不接收处理配置BPDU,不参与RSTP运算,可以由Disable直接转到Forwarding状态,且不经历时延,就像在端口上将STP禁用。但是一旦边缘端口收到配置BPDU,就丧失了边缘端口属性,成为普通STP端口,并重新进行生成树计算,从而引起网络震荡。

根端口快速切换机制

如果网络中一个根端口失效,那么网络中最优的Alternate端口将成为根端口,进入Forwarding状态。因为通过这个Alternate端口连接的网段上必然有个指定端口可以通往根桥。

Proposal/Agreement机制

当一个端口被选举成为指定端口之后,在STP中,该端口至少要等待一个ForwardDelay(Learning)时间才会迁移到Forwarding状态。而在RSTP中,此端口会先进入Discarding状态,再通过Proposal/Agreement机制快速进入Forward状态。这种机制必须在点到点全双工链路上使用。

Proposal/Agreement机制简称P/A机制。

边缘端口机制边缘端口连接的是终端,当网络拓扑发生变化时,边缘端口不会发生环路,所以边缘端口可以忽略两个ForwardingDelay,直接进入转发状态,无需任何延迟。

边缘端口不接收处理配置BPDU,不参与RSTP运算,可以由Disable直接转到Forwarding状态,且不经历时延,就像在端口上将STP禁用。但是一旦边缘端口收到配置BPDU,就丧失了边缘端口属性,成为普通STP端口,并重新进行生成树计算,从而引起网络震荡。

根端口快速切换机制在RSTP中,Alternate端口为根端口的备份。当该网桥的根端口失效进入阻塞状态时,网桥会选择优先级最高的Alternate端口作为新的根端口,如果网桥对端设备指定端口依然为转发状态,则该网桥的新根端口直接进入Forwarding状态。

P/A机制是指定端口快速进入转发状态

工作模式为点对点的全双工模式

包括Proposal和Agreement报文

P/A机制Proposal/Agreement机制,其目的是使一个指定端口尽快进入Forwarding状态。

P/A机制要求两台交换设备之间链路必须是点对点的全双工模式。一旦P/A协商不成功,指定端口的选择就需要等待两个ForwardDelay,协商过程与STP一样。

新链路连接成功后,P/A机制协商过程如下

p0和p1两个端口马上都先成为指定端口,发送RSTBPDU。

S2的p1口收到更优的RSTBPDU,马上意识到自己将成为根端口,而不是指定端口,停止发送RSTBPDU。

S1的p0进入Discarding状态,于是发送的RSTBPDU中把proposal置1。

S2收到根桥发送来的携带proposal的RSTBPDU,开始将自己的所有端口进入sync变量置位。

p2已经阻塞,状态不变;p4是边缘端口,不参与运算;所以只需要阻塞非边缘指定端口p3。

p2、p3、p4都进入Discarding状态之后,各端口的synced变量置位,根端口p1的synced也置位,于是便向S1返回Agreement位置位的回应RSTBPDU。该RSTBPDU携带和刚才根桥发过来的BPDU一样的信息,除了Agreement位置位之外(Proposal位清零)。

当S1判断出这是对刚刚发出的Proposal的回应,于是端口p0马上进入Forwarding状态。

P/A过程可以向下游继续传递

P/A过程可以向下游继续传递。

当S1和S2之间新增了一条链路后,P/A机制工作如下:S1通过端口E1发送Proposal置位的RSTBPDU消息给S2。

S2收到该消息后,意识到E2为根端口,启用同步机制阻塞指定端口E1和E3以避免产生环路,然后将根端口设置为转发状态,并向S1发送Agreement消息。

S1收到Agreement消息后,指定端口E1马上进入转发状态。

S2处于同步状态的非边缘指定端口E1和E3发送Proposal报文。

S3收到S2发送的Proposal报文后,判断E1为根端口,启动同步过程,由于S3下游均为边缘端口,所以已经实现了同步,因此S3直接向S2回复Agreement消息。

S2收到S3发送的Agreement消息后,端口E1马上进入转发状态。

S4的处理过程如S3。

S2收到S4发送的Agreement消息后,端口E3马上进入转发状态。

P/A过程结束。

在RSTP中检测拓扑是否发生变化只有一个标准:一个非边缘端口迁移到Forwarding状态。

一旦检测到拓扑发生变化,将进行如下处理:为本交换设备的所有非边缘指定端口启动一个TC WhileTimer,该计时器值是HelloTime的两倍。在这个时间内,清空状态发生变化的端口上学习到的MAC地址。同时,由这些端口向外发送RSTBPDU,其中TC置位。一旦TC WhileTimer超时,则停止发送RSTBPDU。

其他交换设备接收到RSTBPDU后,清空所有端口学习到MAC地址,除了收到RSTBPDU的端口。然后也为自己所有的非边缘指定端口和根端口启动TC WhileTimer,重复上述过程。

如此,网络中就会产生RSTBPDU的泛洪。

RSTP与STP互操作RSTP端口在接收到STPBPDU的两个hellotimer后,会切换到STP工作模式

切换到STP协议的RSTP端口会丧失快速收敛等特性

当运行STP的设备从网络撤离后,原运行RSTP的交换设备可迁移回到RSTP工作模式

RSTP可以和STP互操作,但是此时会丧失快速收敛等RSTP优势。

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

在华为设备上可以配置运行STP的交换设备被撤离网络后,运行RSTP的交换设备可迁移回到RSTP工作模式。

选举根交换机

端口角色描述

Root Port根端口,是所在交换机上离根交换机最近的端口,稳定时处于转发状态。

Designated Port指定端口,转发所连接的网段发往根交换机方向的数据和从交换机方向发往所连接的网段的数据,稳定时处于转发状态。

Backup Port备份端口,不处于转发状态,所属交换机为端口所连网段的指定交换机。

Alternate Port预备端口,不处于转发状态,所属交换机不是端口所连网段的指定交换机。

端口状态描述

Discarding

丢弃状态此状态下端口对接收到的数据做丢弃处理,端口不转发数据帧,不学习MAC地址表。

Alternate Port和Backup Port

Learning

学习状态此状态下端口不转发数据帧,但是学习MAC地址表,参与计算生成树,接收并发送BPDU。

Forwarding

转发状态此状态下端口正常转发数据帧,学习MAC地址表,参与计算生成树,接收并发送BPDU。

rstp使用linux运行,RSTP 详细相关推荐

  1. Window VNC远程控制LINUX:VNC详细配置介绍

    Window VNC远程控制LINUX:VNC详细配置介绍 //---------------------------------------vnc linux下的详细配置 1.VNC的启动/停止/重 ...

  2. linux rc.d的作用,init.d,rc.d详解 Linux运行时详解

    Linux 启动时需要哪些步骤呢?本文将详细描述不同的运行级在启动中的作用. 对于那些在DOS/Win9x/NT 平台下的高级用户而言,Linux 似乎是一个怪物.没有config.sys ,没有 a ...

  3. Linux运行级详解

    对于那些在DOS/Win9x/NT平台下的高级用户而言,Linux似乎是一个怪物.没有config.sys,没有 autoexec.bat,具有个人特色的机器配置不知道从何开始. 需要说明的是,很多人 ...

  4. Java 内存 关系_JVM和Linux之间的详细内存关系

    JVM和Linux之间的详细内存关系 在一些具有8g物理内存的服务器上,主要运行Java服务.系统内存分配如下:Java服务的JVM堆大小设置为6g,监视过程大约需要600m,Linux本身使用大约8 ...

  5. linux 运行 级别(转)

    标准的linux运行级为3或者5,如果是3的话,系统就在多用户状态.如果是5的话,则是运行着X Window 系统.如果目前正在3或5,而你把运行级降低到2的话,init就会执行K45named脚本. ...

  6. init.d,rc.d详解 Linux运行时详解

    Linux 启动时需要哪些步骤呢?本文将详细描述不同的运行级在启动中的作用. 对于那些在DOS/Win9x/NT 平台下的高级用户而言,Linux 似乎是一个怪物.没有config.sys ,没有 a ...

  7. stm32移植paho_如何在STM32上移植Linux?超详细的实操经验分享

    原标题:如何在STM32上移植Linux?超详细的实操经验分享 刚从硬件跳槽为嵌软时,没有任何一丝的准备.一入职,领导就交代了一项特难的任务--在stm32上移植linux! 瞬间我就懵了,没办法硬着 ...

  8. linux内核编译最详细,Linux内核编译详细教程,linux内核编译

    Linux内核编译详细教程,linux内核编译 尝试编译下Linux-kernel 4.14.14,使用Ubuntu 16.04 64位 系统. kernel-4.14.14 内核文件约96MB,解压 ...

  9. linux lds,Linux LDS 文件格式详细分析.pdf

    Linux LDS 文件格式详细分析.pdf LDS 文件格式分析 连接脚本的格式 ==================== 连接脚本是文本文件. 你写了一系列的命令作为一个连接脚本. 每一个命令是一 ...

最新文章

  1. 微信开发者平台如何编写代码_编写超级清晰易读的代码的初级开发者指南
  2. 前端学习(2987):vue+element今日头条管理--案例演示
  3. 使用Reloader实现更新configmap后自动重启pod
  4. TouchSlide - 大话主席
  5. Java为什么要有堆外内存_作为 Java 开发者,你需要了解的堆外内存知识
  6. 第15章-使用远程服务
  7. iOS多线程(一):GCD的基本使用
  8. 负载均衡软件LVS分析四(测试)
  9. Svn分支管理的使用(三)
  10. snipaste和PS工具
  11. windows错误代码
  12. 夸克浏览器产品分析报告
  13. 台式机安装linux软件,台式机如何安装Ubuntu
  14. 伪静态URLRewrite学习笔记
  15. 18 -Flask构建弹幕微电影网站- 部署上线
  16. Oracle insert语句慢的背后
  17. Scapy功能介绍以及应用
  18. WinDbg CDB
  19. laravel导出Excel表格提示内存超出
  20. 量子力学、波函数与量子计算:揭开宇宙微观奥秘的神奇之门

热门文章

  1. 打开acrobat pdf阅读器提示“内容准备进度”解决方法
  2. (五)MyBatis学习总结(超级详细哦,尤其适合初学者)
  3. 蓝牙协议规范(如Bluetooth Core Specification)下载地址
  4. 【论】易语言锁机过杀
  5. 场景营销解密:出海品牌在全球市场的差异化策略
  6. 前端E2E测试-环境搭建-Vue+Cypress(1)
  7. Word之输出音符mf中强音符(三)
  8. Java方法完整调用链生成工具
  9. 三年软件开发工作经验,被人质疑技术水平,我静静不说话
  10. 有关教学设计的四个网站