当前位置: 首页 > news >正文

5.1、生成树协议stp

一、广播风暴

广播风暴(Broadcast Storm)是网络中的一种现象,通常发生在局域网(LAN)中。当网络中的交换机或路由器配置错误,或环路没有被有效控制时,广播帧会在网络中无限制地传播,导致网络带宽被大量占用,最终可能导致网络瘫痪。

广播风暴的主要原因包括:

  1. 环路(Looping):如果网络中的设备没有正确配置生成树协议(STP),环路会产生大量的广播帧在网络中循环。
  2. 网络设备故障:交换机或路由器的硬件或软件故障可能导致广播风暴。
  3. 错误配置:不当的VLAN配置、冗余链路配置或网络设备的错误设置可能引发广播风暴。

预防措施包括:

  • 启用生成树协议(STP):避免环路的产生。
  • 设置广播风暴控制:一些交换机提供广播风暴控制功能,限制广播流量的上限。
  • 合理配置VLAN:减少广播域的大小,从而降低广播流量对网络的影响。

二、stp

计算机网络中的树型结构的最大特点就是没有环路,stp主要的工作原理就是把有环路的网络“切断”,生成一个没有环路的树型网络结构。其中,起冗余链路作用的并不会真正断开,此外还要确定多条路径要留那一条。

根据参数的设置,不同的交换机会被选为根桥,需要注意的是:任意时刻只能有一个根桥。从根开始逐级生成一颗“树”。

根交换机会定时发送配置数据包,非根桥收到配置数据包并转发,如果某台交换机能从两个以上的端口收到配置数据包,表明到这个交换机的路径不少于1条,这样就构成循环,需要切断。如果一台交换机长时间收不到配置数据包时,交换机就认为该端口配置超时,网络的结构有改变了,这个时候就会重新计算生一课新树。

生成树协议(Spanning Tree Protocol, STP)是一种网络协议,用于以太网网络中防止环路(loops)的产生。环路可能会导致广播风暴、网络拥塞以及数据包的重复传输。STP的主要功能是识别并禁用多余的路径,确保网络中只存在一条无环路的路径,保证数据帧能够正常传输。

工作原理

STP的工作原理:

  1. 根桥(Root Bridge)的选举

    • STP通过在网络设备之间进行BPDU(Bridge Protocol Data Unit)报文的交换来选举出一个根桥。根桥是网络中的参考点,具有最低桥优先级(Bridge Priority)的交换机会被选为根桥。
  2. 计算最短路径

    • 其他交换机会根据到达根桥的最短路径来计算各自的根路径代价(Root Path Cost)。交换机会将路径代价最低的接口设为根端口(Root Port),并保持这条路径激活。
  3. 指定端口(Designated Port)和阻塞端口(Blocked Port)

    • 在每个网络段上,代价最低的端口被指定为指定端口,用于转发流量。其他多余的端口则被设置为阻塞状态,以防止环路的形成。
  4. 阻塞和转发状态

    • 被选为根端口和指定端口的接口处于转发状态,允许流量通过。而被阻塞的端口则不会转发流量,只用于监听BPDU报文,以确保一旦网络拓扑发生变化(例如设备故障或新设备加入),STP能够动态调整,并重新配置网络路径。

STP的变种

  • 快速生成树协议(Rapid Spanning Tree Protocol, RSTP):RSTP是STP的增强版本,主要改进在于收敛速度更快,当网络拓扑发生变化时可以更快地调整路径。
  • 多实例生成树协议(Multiple Spanning Tree Protocol, MSTP):MSTP允许在同一个网络中运行多个生成树实例,以支持VLAN和更复杂的网络结构。

选取根桥的原则,根桥必须拥有最低的优先权ID和MAC地址。cisco交换机默认id值为32768,优先权id值范围为1~65 536。优先权数值相同,将由mac地址大小来决定,那个低就选那个。

stp下交换机端口的不同状态属性

在生成树协议(STP)中,交换机端口可以处于以下几种不同的状态,每种状态都有特定的属性和功能。这些状态用于确保网络中没有环路,同时维护网络的连通性。以下是STP下交换机端口的不同状态及其属性:

1. 阻塞状态(Blocking)

  • 功能:端口不转发数据帧,也不学习MAC地址,只接收并处理BPDU(Bridge Protocol Data Unit)报文。
  • 属性
    • 端口不会参与数据帧的转发。
    • 主要用于防止环路的形成。
    • 端口在这个状态下会等待生成树协议确定是否需要转换为其他状态。

2. 监听状态(Listening)

  • 功能:端口不转发数据帧,也不学习MAC地址,但它会监听网络中的BPDU报文,等待STP确认网络拓扑。
  • 属性
    • 端口从阻塞状态转换到监听状态,以准备可能的状态变更。
    • 端口开始参与生成树计算,但仍然不转发数据帧。

3. 学习状态(Learning)

  • 功能:端口不转发数据帧,但开始学习源MAC地址,将其添加到MAC地址表中。
  • 属性
    • 端口继续处理和发送BPDU报文。
    • 开始学习数据帧的源MAC地址,构建MAC地址表。
    • 准备进入转发状态。

4. 转发状态(Forwarding)

  • 功能:端口正常转发数据帧,处理BPDU,并学习MAC地址。
  • 属性
    • 端口处于正常工作状态,参与数据帧的转发。
    • 继续学习MAC地址并更新MAC地址表。
    • 发送和接收BPDU报文,维持生成树的网络拓扑。

5. 禁用状态(Disabled)

  • 功能:端口不参与生成树协议的计算,也不转发数据帧。
  • 属性
    • 端口处于关闭状态,完全不参与网络通信。
    • 这个状态通常是由于管理员手动禁用端口,或端口本身出现故障。

状态转换的顺序

  • 当一个端口启用并连接到网络时,它通常从阻塞状态开始,然后依次经过监听状态学习状态,最终到达转发状态。如果生成树协议检测到环路,端口会回到阻塞状态,以防止网络中的环路。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【ubuntu24.04】docker pull 配置
  • leetcode_62. 不同路径 + 63. 不同路径 II
  • Python青少年简明教程:数据类型和操作符
  • 微信小程序免费《短视频去水印》
  • day02-作业题
  • 小学二年级数学精选试题
  • 学习笔记——交通安全分析30
  • 企业高性能web服务器---nginx详解(基础介绍配置,核心配置)
  • MySQL系列—MySQL编译安装常见问题(或缺少依赖)及解决方法,MySQL 编译安装时需要安装的依赖(全)
  • 系统架构:分而治之
  • mysql数据库基础使用
  • NVR方案背景与产品介绍与构建一套完整的NVR产品解决方案
  • laravel学习之Eloquent和Collect
  • 高考志愿智能推荐系统-计算机毕设Java|springboot实战项目
  • SQL - 增、改、删
  • [译] React v16.8: 含有Hooks的版本
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • flask接收请求并推入栈
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • JS数组方法汇总
  • ReactNativeweexDeviceOne对比
  • Redis在Web项目中的应用与实践
  • Zepto.js源码学习之二
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 当SetTimeout遇到了字符串
  • 来,膜拜下android roadmap,强大的执行力
  • 前嗅ForeSpider教程:创建模板
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 小试R空间处理新库sf
  • 新版博客前端前瞻
  • 新手搭建网站的主要流程
  • 栈实现走出迷宫(C++)
  • 翻译 | The Principles of OOD 面向对象设计原则
  • ​用户画像从0到100的构建思路
  • (二)linux使用docker容器运行mysql
  • (二)延时任务篇——通过redis的key监听,实现延迟任务实战
  • (二开)Flink 修改源码拓展 SQL 语法
  • (理论篇)httpmoudle和httphandler一览
  • (六)激光线扫描-三维重建
  • (十六)串口UART
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)程序员技术练级攻略
  • .net core 依赖注入的基本用发
  • .NET Framework、.NET Core 、 .NET 5、.NET 6和.NET 7 和.NET8 简介及区别
  • .NET导入Excel数据
  • .NET多线程执行函数
  • //usr/lib/libgdal.so.20:对‘sqlite3_column_table_name’未定义的引用
  • [ C++ ] STL---仿函数与priority_queue
  • [20170728]oracle保留字.txt
  • [23] 4K4D: Real-Time 4D View Synthesis at 4K Resolution
  • [C++][数据结构][算法]单链式结构的深拷贝