二层如何避免loop 的产生

news2024/11/17 13:35:04

STP是一个用于局域网中消除环路的协议。STP通过构造一棵树来消除交换网络中的环路

二层交换机

二层交换机不具备路由能力,主要功能有三种

1)地址学习(address learning):通过查看帧的源MAC地址来加紧转发/过滤表的MAC地址数据库里

2)转发/过滤决定(forward/filter decisions) :当借口收到一个帧的时候,交换机查看目标MAC地址,寻找MAC地址数据库和接口,然后向符合条件的那个目标端口转发

3)转发避免(loop avoidance):假如有冗余的连接,可能会造成环路的产生,STP就用来阻止这些环路

STP基本概念

STP的基本原理是,通过在交换机之间传递一种特殊的协议报文,网桥协议数据单元(Bridge Protocol Data Unit,简称BPDU),来确定网络的拓扑结构。按照树的结构来构造网络拓扑,消除网络中的环路,避免由于环路的存在而造成广播风暴问题。

STP的端口角色:指定端口,根端口,预备端口

指定端口:交换机向所连网段转发配置BPDU的端口,每个网段有且只能有一个指定端口,一般情况下,根桥的每个端口总是指定端口

根端口:非根交换机去往根桥路径最优的端口。在一个运行STP协议的交换机上最多只有一个根端口,但根桥上不存在根端口

预备端口:既不是指定端口也不是根端口的端口,预备端口被堵塞

STP选举过程

1)选举一个根桥交换机

STP中的每个交换机都会有一个桥ID(bridge id)。桥ID由16位桥优先级和48位MAC地址构成。优先级最高的设备(数值越小越优先)会被选举为根桥,如果优先级相同,则会比较MAC地址,MAC地址越小则越优先

2)非根桥交换机选举根端口

非根桥交换机在选举根端口时依据端口的根路径开销,对端BID(bridge id),对端PID(port id)和本段PID。首先看开销(与带宽有关),开销值越低,接口越优。开销相同,看发送者的bridge ID,最后比较发送者port id(port优先级+port ID),越小越好

开销值是改路径上所有接受BPDU端口的端口开销总和(BPDU的入方向端口),称为路径开销

端口ID由端口优先级和端口号构成,端口优先级取值范围0-240,步长为16,必须是 16的整数倍。缺省情况下,端口优先级是128

3)每个网段选一个指定接口

每个网段都应该有一个指定端口,根桥的所有端口都是指定端口(除非根桥在物理上有环路)

指定端口的选举也是首先比较累计路径开销,累计路径开销最小的端口就是指定端口。如果累计路径开销相同,则比较端口所在交换机的桥ID,所在桥ID最小的端口被选举为指定端口,如果还选举不出来,则比较端口ID,端口ID最小的被选举为指定端口

4)预备接口被阻塞

只有指定端口和根端口可以转发数据。非根,非指定端口为预备端口,被阻塞,不能转发数据,只能够从所连网段的指定交换机接收到BPDU报文,并以此来监视链路状态

STP端口状态:

1)forwarding:转发状态,端口既可以转发用户流量也可以转发BPDU报文,只有根端口或者指定端口才能进入forwarding状态

2)learning:学习状态,端口可以根据收到的用户流量构建MAC地址表,但不能转发用户流量,目的为了防止临时环路

3)listening:侦听状态,端口可以转发BPDU报文,但不能转发用户流量

4)blocking:阻塞状态,端口仅仅能接收并处理BPDU报文,但不能转发BPDU,也不能转发用户流量。此状态是预备端口的最终状态

5)disabled:禁用状态。端口既不处理和转发BPDU报文,也不转发用户流量

只有最终处于forwarding状态才能转发数据

只有选举结束变为根端口或者指定端口才不会停留在阻塞状态

禁用并不是生成树状态

BPDU类型

有两种类型:配置BPDU和TCN BPDU

1)配置BPDU 包含了桥ID,路径开销和端口ID以及时间等参数。STP协议通过在交换机之间传递配置BPDU来选举根交换机,以及确定每个交换机端口的角色和状态。在初始化过程中,每个桥都主动发送配置BPDU。在网络拓扑稳定以后,只有根桥主动发送配置BPDU,其他交换机收到上游传来的配置BPDU之后,才会发送自己的配置BPDU

2)TCN BPDU 是指下游交换机感知到拓扑变化时向上游发送的拓扑变化通知。拓扑发生变化后需要及时更新MAC地址表项。

3)BPDU报文被封装在以太网数据帧中,目的MAC是组播MAC:01-80-C2-00-00-00

STP三个计时器

BPDU发送间隔hello time 2s,转发时延15s,maxage 20s

hello time

运行STP协议的设备发送配置消息BPDU的时间间隔,用于检测链路是否存在故障,设备每隔hello time便会向周围的设备发送hello报文,以确定链路是否存在故障。当网络拓扑稳定之后,该计时器的修改只有在根桥修改之后才有效。新的根桥会在发出的BPDU报文中填充适当的字段来向其他非根桥传递该计时器修改的信息。当拓扑变化之后,TCN BPDU的发送不受这个计时器管理

forward delay

forwar delay timer指一个端口处于listening和learning状态的各自持续时间,默认15s。STP采用一种状态迁移机制,新选出的根端口和指定端口要经过2倍的forward delay延时后才能进入转发状态,这个延时保证了新的配置消息传遍整个网络,从而防止了临时换路产生

max age

端口的BPDU报文老化时间,可以在根桥上人为修改,非根桥设备收到配置BPDU报文之后。会把message age与max age进行比较,如果前者小于后者,那么非根桥设备继续转发配置BPDU报文。反之,配置BPDU将会老化,且该设备会将其丢弃

STP配置基本流程

stp mode { mstp | stp | rstp }

stp priority priority / stp root primary

stp pathcost-standard { dot1d-1998 | dot1t | legacy }命令用来配置指定交换机上开销值的标准

使用华为的私有计算方法时,cost取值范围是1~200000。

使用IEEE 802.1d标准方法时,cost取值范围是1~65535。

使用IEEE 802.1t标准方法时,cost取值范围是1~200000000。

display stp 命令显示交换机上所有端口信息

display stp interface命令显示交换机上指定端口信息。其他一些信息还包括端口角色,端口状态,以及实用的保护机制等。常用 display stp brief

RSTP

STP不足

拓扑收敛满,拓扑变更复杂,端口角色重新选举慢,端口状态多余。根据STP不足,RSTP删除了三种端口状态,新增加了两种端口角色

RSTP的端口2种新增角色:alternate端口和backup端口。根端口和指定端口的作用与STP相同

从配置BPDU报文发送角度来看

alternate端口就是由于学习到其他网桥发送的配置BPDU而堵塞的阻塞端口

backup端口就是由于学习到自己发送的配置BPDU而阻塞的阻塞端口

从用户流量角度来看

alternate端口提供了从指定桥到根的另一种可切换路径作为根端口的备份端口。backup端口作为指定端口的备份,提供了零一条从根桥到相应网段的备份通路。给一个RSTP域内所有端口分配角色的过程就是整个拓扑收敛的过程

端口状态的重新划分:RSTP状态缩减为3种,并且根据是否转发用户流量和学习MAC地址来划分:

discarding:既不转发用户流量也不学习MAC地址

learning:不转发用户流量但是学习MAC地址

forwarding:既转发用户流量又学习MAC地址

配置BPDU发送方式的改变

STP拓扑稳定后,根桥按照hello time时间间隔来发送配置BPDU。其他非根桥设备在收到上游设备发送过来的配置BPDU后,才会触发转发配置BPDU,此方法使得STP协议计算复杂且缓慢

RSTP进行了改善,稳定之后,无论非根桥设备是否收到根桥发送的配置BPDU报文,都会根据hello time来发送配置BPDU,每台设备自主进行

更短的超时计时器:

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

边缘端口的引入

在RSTP里面,如果某一个指定端口位于整个网络的边缘,不在于其他交换设备连接,而是直接与终端设备直连,这个端口叫做边缘端口,边缘端口不接受处理配置BPDU,不参与RSTP运算,可以从disable直接转到forwarding状态,并且不经历时延,就像在端口上将STP禁用。但是一旦边缘端口收到配置BPDU,就丧失了边缘端口属性,成为普通STP端口,并重新进行树计算,从而引起网络震荡。[SwitchB ]stp edged‐port default 或者接口模式下使用

命令[SwitchB‐GigabitEthernet0/0/2] stp edged‐port enable

快速收敛–proposal/aggrement机制(重点)

这种机制必须在点到点全双工链路上使用,在接口配置模式下使用命令stp point-to-point force-true强制接口类型为点到点链路。在RSTP中,端口会先进入discarding状态,再通过P/A机制快速进入forward状态

1)p0和p1两个端口马上都成为指定端口,发送PST BPDU

2)s2的p1收到更好的RST BPDU,马上意识到自己成为根端口而不是指定端口,停止发送RST BPDU

3)s1的p0会进入disarding状态,于是发送的RST BPDU中把proposal置1

4)s2收到根桥发送来的携带proposal的RST BPDU,开始将自己的所有端口进入sync变量置位

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

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

7)当s1判断出这是对刚刚发出的proposal的回应,于是端口p0马上进入forwarding状态

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

根端口快速切换机制

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

RSTP拓扑变化处理

在RSTP中检测拓扑是否发生变化只有一个标准:一个非边缘端口迁移到forwarding状态。一旦检测到拓扑发生变化,将进行如下处理:

为本交换设备的所有非边缘指定端口启动一个TC While Timer,该计时器值是hello time的两倍。在这个时间内清空状态发生变化的端口上学习到的MAC地址,同时,由这些端口向外发送RSTP BRDU,其中TC置位,一旦TC While Timer超时,则停止发送RST BPDU

其他交换设备接收到RST BPDU后,清空除了收到RST BPDU的端口以外其他端口学习到MAC地址。然后也为自己所有的非边缘指定端口和根端口启动TC While Timer,重复上述过程。如此,网络中就会产生RST BPDU的泛洪

RSTP与STP的互操作

STP的交换设备会忽略RSTP BPDU。运行RSTP的交换设备在某端口接收到运行STP的交换设备发出的配置BPDU,在两个hello time时间之后,便把自己的端口转换到STP工作模式,发送配置BPDU,从而实现了互操作

RSTP保护功能

**BPDU保护:**配置BPDU保护功能后,如果边缘端口收到BPDU报文,边缘端口将会被立即关闭。

[SwA]stp bpdu‐protection

根保护一旦启用root保护功能的指定端口收到优先级更高的RST BPDU时,端口状态将进入discarding状态,不再转发报文。经过一段时间之后,如果端口一直没有再收到优先级较高的RST BPDU,端口会自动恢复到正常的forwarding状态。root保护功能只能在指定端口上配置生效

[SwitchA‐GigabitEthernet0/0/1] stp root‐protection

TC-BPDU攻击保护启用防TC-BPDU报文攻击功能之后,在单位时间内,RSTP进程处理TC类型BPDU报文的次数可配置(缺省的单位时间2s,缺省的处理次数3次)。如果在单位时间内,RSTP进程在收到TC类型BPDU报文数量大于配置的阈值,那么RSTP进程只会处理阈值指定的次数。对于其他超出阈值的TC类型BPDU报文,定时器到期时,RSTP进程只对其统一处理一次。这样可以避免频繁的删除MAC地址表项,从而达到保护交换机的目的。

[SwA]stp tc‐protection 开启保护,[SwA]stp tc‐protection threshold 10 设置阀

值。

环路保护为了防止单向链路导致的环路可以开启环路保护功能。在启动了环路保护功能后,如果根端口或者alternate端口长时间收不到来自上游的RST BPDU时,则会向网管发出通知信息(如果是根端口则进入discarding状态)。而阻塞端口则会一直保持在阻塞状态,不转发报文,从而不会在网络中形成环路。直到根端口或alternate端口收到RST BPDU,端口状态才正常到forwarding状态。环路保护功能只能在根端口或alternate端口上配置生效

[SwitchA‐GigabitEthernet0/0/1]stp loop‐protection

MSTP

RSTP在STP基础上进行了改进,实现了网络拓扑快速收敛。但RSTP和STP还存在同一个缺陷:由于局域网内所有的vlan共享一棵生成树,因此无法再vlan间实现数据流量的负载均衡,链路被阻塞后将不承载任何流量,造成带宽浪费,还有可能造成部分VLAN的报文无法转发

MSTP基本概念

通过MSTP把一个交换网络划分成多个域,每个域内形成多颗生成树,生成树之间彼此独立。没课生成树叫做一个多生成树实例MSTI(Multiple Spanning Tree

Instance),每个域叫做一个MST域(MST Region:Multiple Spanning Tree Region)。

MSTP网络中包含1个或多个MST域,每个MST域中包含一个或多个MSTI。MSTP通过设置VLAN映射表(即VLAN和MSTI的对应关系表),把VLAN和MSTI联系起来。每个VLAN只能对应一个MSTI,即同一个VLAN的数据只能在一个MSTI中传输,而一个MSTI可以对应多个VLAN

每个MSTI都有一个标识MSTID,MSTID是一个两字节的证书。VRP平台支持16个MST instance,MSTID的取值范围时0-15,默认所有VLAN 映射到MST instance 0

每个MSTI都使用单独的RSTP算法,计算单独的生成树。MSTP兼容STP和RSTP,既可以快速收敛,又提供了数据转发的各个冗余路径,在数据转发过程中实现VLAN数据的负载均衡

MST域中同一个MST域的设备具有下列特点

1)都启动了MSTP

2)具有相同的域名

3)具有相同的VLAN到生成树实例映射配置

4)具有相同的MSTP修订级别配置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/389298.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

django框架开发部署项目

前言:相信看到这篇文章的小伙伴都或多或少有一些编程基础,懂得一些linux的基本命令了吧,本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python:一种编程语言&…

工作负载使用教程

主要包括YCSB和背景一、安装Java二、安装Memcached数据库并配置三、修改YCSB脚本文件四、运行YCSB脚本五、运行GAPBS总结背景 测试multi-clock内核的内存性能有啥提升 YCSB:雅虎推出的云数据库基准测试套件 参考论文MULTI-CLOCK: Dynamic Tiering for Hybrid Memor…

03-产品解决方案:需求分析、功能优先级划分、功能价值、用户体验

文章目录3.1 需求分析3.1.1 需求分析的目的3.1.2 需求分析的方法(Y模型)3.1.3 需求分析的具体应用3.2 功能优先级划分Kano模型3.3 功能价值3.3.1 什么是功能价值?3.3.2 实际价值判断3.3.3 成本评估3.4 用户体验3.4.1 用户体验的定义及影响因素…

IDEA 每次新建工程都要重新配置 Maven 解决方案

IDEA 每次新建工程都要重新配置 Maven 解决方案 IDEA 每次新建工程都要重新配置 Maven,是一件相当浪费时间的事情。这是因为在创建一个项目后,在 File -> Settings -> Build,Execution,Deployment -> Build Tools -> Maven下配置了 Maven h…

华为OD机试用Python实现 -【停车找车位】 |2023.Q1 A卷

华为OD机试题 最近更新的博客华为 OD 机试 300 题大纲本篇题目:停车找车位题目描述输入描述输出描述示例一输入输出示例二输入输出代码编写思路Python 代码最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题

QML编码约定

QML中的国际化: QML使用以下函数来将字符串标记为可翻译的 qsTr()qsTranslate()qsTrld()QT_TR_NOOP()QT_TRANSLATE_NOOP()QT_TRID_NOOP最常用的还是qsTr() string qsTr(string sourceText, string disambiguation&…

Linux- 系统随你玩之--文件管理-双生姐妹花

文章目录1、前言2、文件管理-双生姐妹花2.1、 df2.1.1、 df 语法2.1.1 、常用参数2.2、 du2.2.1、du 语法2.1.1、 常用参数2.3、双生姐妹花区别2.3.1、 查看文件统计 的计算方式不同2.3.2 、删除文件情况下统计结果 不同2.3.3 、针对双生姐妹花区别 结语3、双生姐妹花实操3.1 、…

[2019红帽杯]childRE

题目下载:下载 参考:re学习笔记(24)BUUCTF-re-[2019红帽杯]childRE_Forgo7ten的博客-CSDN博客 这道题涉及到c函数的修饰规则,按照规则来看应该是比较容易理解的。上面博客中有总结规则,可以学习一下。 载…

不同的网络分层模型与其常见的协议和硬件

文章目录一、网络分层模型1.1 OSI七层参考模型1.2 TCP/IP分层模型1.3 数据的分层传输二、网络通信媒介和数据链路2.1 网卡2.2 中继器Repeater2.3 集线器交换机(二层设备) 比集线器升级了什么二层交换机和三层交换机说明:该博客粗略整理了下不同的网络模型&#xff0…

Vue3之组件间传值避坑指南

组件间传值的两个坑 我们都知道父组件可以把值传递到自组件中,但是有时候子组件需要修改这个父组件传递过来的这个值,我们可以想象下能修改成功吗?这是坑之一。我们在组件间传值的时候,都是一个属性名对应一个值,接收…

泛函分析导论

它的基本思想是将函数看作向量,从而将函数空间转化为向量空间,进而研究函数空间的性质。泛函分析的主要内容包括:线性空间、内积空间、赋范空间、希尔伯特空间、算子理论、谱理论、函数空间等。空间与算子度量空间赋范空间和巴拿赫空间线性算…

Mybatis插件开发及执行原理

mybatis源码下载 https://github.com/mybatis/mybatis-3,本文分析源码版本3.4.5 mybatis启动大致流程 在看这篇文章前,建议查看我另一篇文章,以了解框架启动的流程和框架中一些重要对象:https://blog.csdn.net/Aqu415/article/…

com.alibaba.nacos.shaded.io.grpc.netty.shaded.io.netty.channel.AbstractChannel

一 完成的错误信息 异常Message one Caused by: com.alibaba.nacos.shaded.io.grpc.netty.shaded.io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information 异常Message two [com.alibaba.nacos.client.remote.worker] ERROR…

K8S 实用工具之二 - 终端 UI K9S

开篇 📜 引言: 磨刀不误砍柴工工欲善其事必先利其器 第一篇:《K8S 实用工具之一 - 如何合并多个 kubeconfig?》 像我这种,kubectl 用的不是非常溜,经常会碰到以下情况: 忘记命令,先…

基于粒子群改进的支持向量机SVM的情感分类识别,pso-svm情感分类识别

目录 支持向量机SVM的详细原理 SVM的定义 SVM理论 Libsvm工具箱详解 简介 参数说明 易错及常见问题 SVM应用实例,基于SVM的情感分类预测 代码 结果分析 展望 支持向量机SVM的详细原理 SVM的定义 支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型…

【C++修炼之路】25.哈希应用--布隆过滤器

每一个不曾起舞的日子都是对生命的辜负 布隆过滤器前言一.布隆过滤器提出二.布隆过滤器概念三. 布隆过滤器的操作3.1 布隆过滤器的插入3.2 布隆过滤器的查找3.3 布隆过滤器的删除四.布隆过滤器的代码4.1 HashFunc的仿函数参考4.2 BloomFilter.h五.布隆过滤器的优缺点六.布隆过滤…

Spring——Bean管理-xml方式进行属性注入

目录 一、xml方式创建对象 二、xml方式注入属性 第①种方式注入:set方法注入 第②种方式注入:有参构造函数注入 constructor-arg:通过构造函数注入 用name标签属性: 不按照顺序也会自动匹配 使用index标签属性:…

使用Struts的论坛系统的设计与实现

技术:Java、JSP等摘要:随着互联网的高速发展,目前可通过论坛系统可随时取得国际最新的软件及信息,也可以通过论坛系统来和别人讨论计算机软件、硬件、多媒体、程序设计、以及影视等等各种有趣的话题。本系统按照小型公司的实际要求…

第三讲:ambari编译后的安装包制作流程说明

一、概述 前两讲,我们已经将 Ambari 源码编译成功。现在我们想将 Ambari 编译后的 rpm 包,都放到 yum 本地仓库中,这样 Ambari 与 HDP 在安装部署时,就直接使用的我们自己编译的安装包了。 Ambari 的 rpm 包,有这么几类: ambari-server rpmambari-agent rpmambari metr…