热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

深入解析STP、RSTP与MSTP协议及其应用

生成树协议(STP)由IEEE802.1D-1998标准定义,主要用于防止网络中的环路问题,但其收敛速度较慢,不适用于需要快速恢复的环境。为了解决这一问题,快速生成树协议(RSTP)和多生成树协议(MSTP)应运而生。RSTP在IEEE802.1w中定义,显著提高了网络的收敛速度,特别是在点对点链路和边缘端口上表现优异。MSTP则进一步扩展了RSTP的功能,支持多个生成树实例,能够更好地实现负载均衡和资源优化。这些协议在现代网络设计中发挥着重要作用,广泛应用于企业级网络和数据中心。

一、生成树基本概念

















STP

 


生成树(Spanning-Tree Protocol)IEEE Std 802.1D-1998定义,不能快速迁移。即使是在点对点链路或边缘端口,也必须等待2倍的forward delay的时间延迟,网络才能收敛。

802.1d标准中对端口状态的定义有: 

1.监听(listening). 2.学习(learning). 3.堵塞(blocking). 4.转发(forwarding). 5.禁用(disabled).


RSTP


快速生成树协议(rapid spanning Tree Protocol ),即IEEE Std 802.1w 2001定义,可以快速收敛,存在以下缺陷:

局域网内所有网桥共享一棵生成树,不能按VLAN阻塞冗余链路

802.1w标准中对端口状态的定义有: 

1.丢弃(discarding). 2.堵塞(blocking). 3.转发(forwarding). 

丢弃状态,实际上类似802.1d中监听、学习和禁用状态的集合


MSTP

 


多生成树协议(Multiple Spanning Tree Protocol),即IEEE Std 802.1s中第13节描述。

MSTP算法通过应用MSTP、STP或RSTP的桥任意互连的桥接网络,为分配给任一个特定VLAN的帧提供了简单而完备的连通性。MSTP允许不同VLAN的数据从各自的路径分发。各条路径建立在由LAN和MST桥组成的MST域中的各个独立的多生成树实例的基础上。

MSTP 弥补RSTP的缺陷,它允许不同vlan的流量沿各自的路径分发,从而为冗余链路提供了更好的负载分担机制。


 

二.负载分担

 

















STP


1、STP协议为了冗余存在,单纯树型的网络无法提供足够的可靠性,由此引入了额外的链路,这样就出现环路问题,由此STP确保无环路问题。

2、STP为IEEE 802.1D标准协议,并不能实现真正的冗余与负载分担。它内部只有一棵STP tree,因此必然有一条链路要被blocking,不会转发数据,只有另外一条链路出现问题时,这条被blocking的链路才会接替之前链路所承担的职责,做数据的转发。无论怎样,总会有一条链路处于不被使用的状态,冗余是有了,但是负载分担则没有。

3、cisco对STP做了改进,它使得每个VLAN都运行一棵STP TREE,这样第一条链路可以为vlan 1 2 3服务,对vlan 4 5 6 blocking,第二条链路可以为vlan 4 5 6 forwarding,对vlan 1 2 3关闭,无形中实现了链路的冗余,负载分担。这种技术被称之为PVST+

4、随着网络的发展,人们发现传统STP协议无法满足主备快速切换的需求,因为STP协议将端口定义5种状态,分别为:blocking 、listening 、learning、 forwarding、 disabling,想要从blocking切换至forwarding状态,必需要经过50秒周期,这50秒只能被动地去等待。20秒的blocking状态下,如果没有检测到邻居发来的BPDU包,则进入listening,这时要做选举Root Bridge、Designate Port、Root Port,15秒后,进入learning,learning状态下可以学习MAC地址,为最后的forwarding做准备,同样是15秒,最后到达转发状态。如此延时在现代网络环境下代价不可承受。


RSTP


RSTP为802.1w标准

解决了延时的问题,它收敛速度很快,当然CISCO也针对这种技术推出了自已的RPVST+技术。RSTP在STP基础上额外定义了两种port role(注意这里的概念,端口角色),分别是alternate与backup。另外重新规定了port state(端口状态),分别为discarding、Learning、Forwarding.

STP的一大失败之处在于混淆了port role与port state两种概念,在RSTP上,这样的问题不再存在了,port state与port role无关了。alternate port责任是为另一台交换机上的链路作备份,而backup port是为本交换机上的端口作备。

 

RSTP最重要的变化在于对BPDU中type字段的利用上,之前STP只使用其中两个位

























 7


 6


 5


 4


 3


 2


 1


 0


TC


Proposal


Port-


role


learning


forwarding


Agreement


TCA


另外6个位中实现了很多的功能,包括不再需要去等待50秒的时间完成主备切换,直接利用proposal与agreement协商即可,大大缩短收敛时间。

RSTP还定义了两个新的概念:edge port与link type,如果是edge port,表明下面接的只能是主机,环路的存在是不可能的,所以可以直接将其从discarding切换到forwarding状态,类似于STP中的port fast技术。而link type定义了这条链路是point-to-point的还是shared。如果有pt-pt环境下,就可以做快速切换。


MSTP


STP和RSTP均采用一棵STP tree,负载分担不可实现,而CISCO的PVST+与RPVST+采用了每个VLAN一棵生成树,尽管实现负载分担,但会占用非常多CPU时间,这也正是MSTP(802.1s)产生原因。

MSTP可以将多个VLAN的生成树映射为一个实例,即vlan map to a instance,不需要那么多的生成树,只需要按照冗余链路的条数来得出需要几棵生成树。

如果只有两条链路,并且有1-1000个VLAN,我们可以将1-500定义为instance 1,将501-1000定义到instance 2。只生成两棵树1和2,同样实现了冗余与负载分担。

MSTP是基于RSTP的,没有RSTP,MSTP是无法运行的。

(思科:PVST+ 与 RPVST+ 模式下:交换机可支持128个STP instance)

(MSTP模式下:交换机可支持65个MST instance,当然每个实例中的VLAN数目是无限的。)



推荐阅读
  • 本文介绍了如何通过C#语言调用动态链接库(DLL)中的函数来实现IC卡的基本操作,包括初始化设备、设置密码模式、获取设备状态等,并详细展示了将TextBox中的数据写入IC卡的具体实现方法。 ... [详细]
  • 本文详细介绍了C++中的构造函数,包括其定义、特点以及如何通过构造函数进行对象的初始化。此外,还探讨了转换构造函数的概念及其在不同情境下的应用,以及如何避免不必要的隐式类型转换。 ... [详细]
  • 项目风险管理策略与实践
    本文探讨了项目风险管理的关键环节,包括风险管理规划、风险识别、风险分析(定性和定量)、风险应对策略规划及风险控制。旨在通过系统的方法提升项目成功率,减少不确定因素对项目的影响。 ... [详细]
  • 本文将从基础概念入手,详细探讨SpringMVC框架中DispatcherServlet如何通过HandlerMapping进行请求分发,以及其背后的源码实现细节。 ... [详细]
  • 回顾两年前春节期间的一个个人项目,该项目原本计划参加竞赛,但最终作为练习项目完成。独自完成了从编码到UI设计的全部工作,尽管代码量不大,但仍有一定的参考价值。本文将详细介绍该项目的背景、功能及技术实现。 ... [详细]
  • 如何在PHP中安装Xdebug扩展
    本文介绍了如何从PECL下载并编译安装Xdebug扩展,以及如何配置PHP和PHPStorm以启用调试功能。 ... [详细]
  • 在处理大数据量的SQL分页查询时,通常需要执行两次查询来分别获取数据和总记录数。本文介绍了一种优化方法,通过单次查询同时返回分页数据和总记录数,从而提高查询效率。 ... [详细]
  • 本文详细探讨了BCTF竞赛中窃密木马题目的解题策略,重点分析了该题目在漏洞挖掘与利用方面的技巧。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 在日常生活中,支付宝已成为不可或缺的支付工具之一。本文将详细介绍如何通过支付宝实现免费提现,帮助用户更好地管理个人财务,避免不必要的手续费支出。 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • 本文探讨了在一个物理隔离的环境中构建数据交换平台所面临的挑战,包括但不限于数据加密、传输监控及确保文件交换的安全性和可靠性。同时,作者结合自身项目经验,分享了项目规划、实施过程中的关键决策及其背后的思考。 ... [详细]
  • importjava.io.*;importjava.util.*;publicclass五子棋游戏{staticintm1;staticintn1;staticfinalintS ... [详细]
  • 本文通过一个具体的实例,介绍如何利用TensorFlow框架来计算神经网络模型在多分类任务中的Top-K准确率。代码中包含了随机种子设置、模拟预测结果生成、真实标签生成以及准确率计算等步骤。 ... [详细]
  • 嵌套列表的扁平化处理
    本文介绍了一种方法,用于遍历嵌套列表中的每个元素。如果元素是整数,则将其添加到结果数组中;如果元素是一个列表,则递归地遍历这个列表。此方法特别适用于处理复杂数据结构中的嵌套列表。 ... [详细]
author-avatar
萧士瑋62184
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有