网工交换基础——生成树协议(01)

news2024/11/21 0:33:00

一、生成树的技术概述

1、技术背景

二层交换机网络的冗余性导致出现二层环路:

 人为因素导致的二层环路问题: 

 二层环路带来的网络问题:

生成树协议的概念:

        STP(Spanning Tree Protocol)是生成树协议的英文缩写。该协议可应用于在网络中建立树形拓扑,消除网络中的环路,并且可以通过一定的方法实现路径冗余,但不是一定可以实现路径冗余。生成树协议适合所有厂商的网络设备,在配置上和体现功能强度上有所差别,但是在原理和应用效果是一致的。

        在网络中部署生成树后,交换机之间会进行生成树协议报文的交互并进行无环拓扑计算,最终将网络中的某个(或某 些)接口进行阻塞(Block ),从而打破环路。
生成树能够动态响应网络拓扑变化调整阻塞接口:
        交换机上运行的生成树协议会持续监控网络的拓扑结构,当网络拓扑结构发生变化时,生成树能感知到这些变化,并 且自动做出调整。
        因此,生成树既能解决二层环路问题,也能为网络的冗余性提供一种方案。
二层及三层环路的特点:

1)三层环路:

        常见原因:路由环路;

        防环机制:动态路由协议有一定的防环能力;

                          IP报文头部的TTL字段可用户防环(初始值为255,没经过一台路由器减1,当TTL为1时,机会转发将会被丢弃)

2)二层环路:

        常见原因:二次冗余环境;

        防环机制:需要借助特定的协议或机制实现二层防环;

                         二层帧头中没有任何可用于防环的字段。

STP是一个用于局域网中消除二层环路的协议,主要工作在二层网络中:

        防止环路;提供冗余备份链路;防止MAC地址表震荡。

===================================================================

二、STP的基本概念及工作原理:

1、基本概念

STP的基本概念——桥ID(Bridge ID,BID):

1)BID = 优先级(16位)+MAC(交换机背板MAC,48位)

       (优先级默认32768(配置时为4096的倍数));

2)每一台运行STP的交换机都拥有一个唯一的BID;

3)BID桥优先级占据高16bit,其余的低48bit是桥MAC地址;

4)在STP网络中,BID最小的设备会被选举为根桥。

-----------------------------------------------------

 STP的基本概念——根桥(root Bridge):

1)STP的主要作用之一是在整个交换网络中计算出一棵无环的 “树”(STP树)。

2) 根桥是一个STP交换网络中的“树根” 。

3)STP开始工作后,会在交换网络中选举一个根桥,作为无环 拓扑的“树根” 。

4)在STP网络中,桥ID最小的设备会被选举为根桥。

        1. 首先比较桥优先级,优先级的值越小,则越优先;

        2. 如果优先级相等,那么再比较MAC地址,拥有最小MAC 地址的交换机会成为根桥。

-------------------------------------

STP的基本概念——Cost(开销):

1)接口的Cost主要用于计算根路径开销,也就是到达根的开销。

2)接口的缺省Cost除了与其速率、工作模式有关,还与交换机

3)使用的STP Cost计算方法有关。

        • 接口带宽越大,则Cost值越小。

        • 用户也可以根据需要通过命令调整接口的Cost。

---------------------------------------------------

 STP的基本概念——Cost计算方法:

接口cost = 接口实际带宽除以参考带宽

-----------------------------------------------

 STP的基本概念——RPC(Root Path Cost,根路径开销)(R(Root Path Cost) oot Path Cost):

        一台设备从某个接口到达根桥的RPC等于从根桥到该设备沿 途所有入方向接口的Cost累加。

---------------------------------

 STP的基本概念——Port ID(PID,接口ID):

1)接口ID由两部分构成的,高4 bit是接口优先级,低12 bit是 接口编号。

2)激活STP的接口会维护一个缺省的接口优先级,在华为交换 机上,该值为128。

----------------------------------------------

STP的基本概念——BPDU(Bridge Protocol Data Unit,网桥协议数据单元):

1)BPDU是STP的协议报文。

2)BPDU分为两种类型:

        • 配置BPDU(Configuration BPDU)

        • TCN BPDU(Topology Change Notification BPDU)

        • 配置BPDU是STP进行拓扑计算的关键;

        • TCN BPDU只在网络拓扑发生变更时才会被触发。

------------------------------------------------

配置 BPDU 的比较原则:
STP 操作:
        1. 选举一个根桥。
        2. 每个非根交换机选举一个根端口。
        3. 每个网段选举一个指定端口。
        4. 阻塞非根、非指定端口。
STP 中定义了三种端口角色:指定端口,根端口和预备端口。
STP 按照如下顺序选择最优的配置 BPDU
        1. 最小的根桥 ID
        2. 最小的 RPC
        3. 最小的网桥 ID
        4. 最小的接口 ID
        在这四条原则中(每条原则都对应配置BPDU 中的相应字段),第一条原则主要用于在网络 中选举根桥,后面的原则主要用于选举根接口及指定接口。

-----------------------------------------

2、工作原理

1)在交换网络中选举一个根桥:

STP 在交换网络中开始工作后,每个交换机都会向网络中发送配置BPDU 。配置 BPDU 中包含交换机自己的桥 ID
网络中拥有最小桥 ID 的交换机成为根桥。
在一个连续的 STP 交换网络中只会存在一个根桥。
根桥的角色是可抢占的。
为了确保交换网络的稳定,建议提前规划 STP 组网,并将规划为根桥的交换机的桥优先级设置为最小值0

2)在每台非根桥选举一个根端口:

每一台非根桥交换机都会在自己的接口中选举出一个接口。
非根桥交换机上有且只会有一个根接口。
当非根桥交换机有多个接口接入网络中时,根接口是其收到最优配置BPDU 的接口。
可以形象地理解为,根接口是每台非根桥上“朝向”根桥的 接口。

3)在每条链路上选举一个指定端口:

根接口选举出来后,非根桥会使用其在该接口上收到的最优BPDU进行计算,然后将计算得到的配置 BPDU 与除了根接口之外的其他所有接口所收到的配置BPDU 进行比较:
如果前者更优,则该接口为指定接口;
如果后者更优,则该接口为非指定接口。
一般情况下,根桥的所有接口都是指定接口。

4)非指定端口被阻塞:

一台交换机上,既不是根接口,又不是指定接口的接口被称 为非指定接口。
STP 操作的最后一步是阻塞网络中的非指定接口。这一步完 成后,网络中的二层环路就此消除。
总结,STP的工作流程:

1、根桥选举

        初始状态下所有交换机都会认为自己是根桥,交换机会将自己所有的接口变为DP角色处于discarding状态,发送以自己为根的BPDU,交换机通过比较BPDU选举出根桥,根桥的选举原则是选举BID小的成为根桥。

        BID由桥优先级和桥MAC地址组成,首先比较桥优先级,如果比较不出,在比较桥MAC地址,两者都是越小越优先。

        根桥选举完成后,只有根桥发送BPDU。

2、根端口选举

        当根桥选举完毕后,在每一台非根桥上选举一个根端口,根端口的选举原则为:非根交换机上接收最优BPDU的接口成为根端口。

最优BPDU的比较原则:

        a、优选Root ID最小的

        b、优选RPC最小的

        c、优选Sender BID最小的

        d、优选Sender PID最小的

        e、优选本地PID最小的

3、选举指定端口

        当根端口选举完成以后,每台非根桥都会计算出一个BPDU参数,并且从DP接口向外发送,同时对自己计算出的BPDU参数和接收到的BPDU参数进行比较

        3.1 如果接收到的BPDU参数更优,自己的接口由DP变为AP,进入阻塞状态

        3.2 如果本地的BPDU参数更优,自己的接口保持为DP不变,进入转发状态。

常用命令:

[Huawei]stp mode stp //修改生成树类型

[Huawei]stp priority 0 //修改桥优先级

[Huawei]display bridge mac-address //查看交换机设备MAC

[SW1-GigabitEthernet0/0/1]stp port priority 16 //修改端口优先级

STP的接口状态和结构状态迁移:

3、拓扑变换过程

1)根桥故障恢复过程:

1. SW1 根桥发生故障,停止发送 BPDU 报文。
2. SW2 等待 Max Age 计时器( 20 s )超时,从而导致已经收到的BPDU 报文失效,又接收不到根桥发送的新的 BPDU 报 文,从而得知上游出现故障。
3. 非根桥会互相发送配置 BPDU ,重新选举新的根桥。
4. 经过重新选举后, SW3 A 端口经过两个 Forward Delay (15 s )时间恢复转发状态。
        • 非根桥会在 BPDU 老化之后开始根桥的重新选举。
        • 根桥故障会导致 50 s 左右的恢复时间。

2)直连链路故障恢复过程:

当交换机 SW2 网络稳定时检测到根端口的链路发生故障,则其 备用端口会经过两倍的Forward Delay 15s )时间进入用户流量转发状态。
SW2 检测到直连链路物理故障后,会将预备端口转换为根端口。
直连链路故障,备用端口会经过 30s 后恢复转发状态。

3)非直连链路故障恢复过程:

非直连链路故障后, SW3 的备用端口恢复到转发状态,非直连故障会导致 50s 左右的恢复时间。

4、STP的基本配置命令:

1)配置生成树模式(华为缺省为MSTP)[Huawei] stp mode { stp | rstp | mstp } ;

2)配置根桥:[Huawei] stp root primary;

        配置当前设备为根桥。缺省情况下,交换机不作为任何生成树的根桥。配置后该设备优先级数值自动为0 ,并且不能 更改设备优先级。

3)配置备份根桥:[Huawei] stp root secondary;

        配置当前交换机为备份根桥。缺省情况下,交换机不作为任何生成树的备份根桥。配置后该设备优先级数值为4096 , 并且不能更改设备优先级。
[Huawei] stp priority priority;配置交换机的优先级(默认为32768)
[Huawei] stp pathcost-standard ;配置接口路径开销
[Huawei-GigabitEthernet0/0/1] stp cost ;这是指定接口的开销。
[Huawei-intf] stp priority ;配置接口优先级。
[Huawei] stp enable;启用协议。(缺省下默认启用)
<SW3> display stp brief;查看STP接口状态。

====================================================

三、RSTP(rapid spanning Tree Protocol,快速生成树协议)

1、RSTP相较于STP的改进

配置BPDU的处理发生变化:
        ▫ 拓扑稳定后,配置 BPDU 报文的发送方式进行了优化
        ▫ 使用更短的 BPDU 超时计时
        ▫ 对处理次等 BPDU 的方式进行了优化
配置BPDU 格式的改变,充分利用了 STP 协议报文中的 Flag 字段,明确了接口角色

1)端口角色的的改变:

RSTP 的接口角色共有 4种:根接口、指定接口、预备接口和备份接口以及边缘接口。

如果指定端口位于整个域的边缘,不再与任何交换设备连接,这种端口叫做边缘端口。
边缘端口一般与用户终端设备直接连接,可以由 Disabled 状态直接转到 Forwarding 状态。

2)端口状态的的改变:

RSTP 的状态规范把原来的 5 种状态缩减为 3 种。

四、生成树技术进阶——MSTP(Multi-Service Transfer Platform,多生成树协议)

1、STP和RSTP的缺陷

        所有VLAN共享一棵生成树(会造成资源浪费)。

MSTP VLAN 映射到一个生成树的实例,若干个 VLAN可共用一棵生成树。例如:
        • 将偶数 VLAN 映射到实例 1
        • 将基数 VLAN 映射到实例 2
        • 网络中将只维护 2 棵生成树。

2、MSTP概述

MSTP 把一个交换网络划分成多个域,每个域内形成多棵生成树,生成树之间彼此独立。
每棵生成树叫做一个多生成树实例 MSTI Multiple Spanning Tree Instance )。
所谓生成树实例就是多个 VLAN 的集合所对应的生成树。
通过将多个 VLAN 捆绑到一个实例,可以节省通信开销和资源占用率。
MSTP 各个实例拓扑的计算相互独立,在这些实例上可以实现负载均衡。
可以把多个相同拓扑结构的 VLAN 映射到一个实例里,这些 VLAN 在接口上的转发状态取决于接口在对应实例的状态。

五、堆叠

六、Smart Link

 Smart Link是一种为双上行组网量身定做的解决方案:
在双向行的设备上部署,当网络正常时,两条上行链路中,一条处于活跃状态,而另一条则处于备份状态(不承载业务流量)。如此一来二层环路就此打破。
当主用链路发生故障后,流量会在毫秒级的时间内迅速 切换到备用链路上,保证了数据的正常转发。
▫ Smart Link 配置简单,便于用户操作。
无需协议报文交互,收敛速度及可靠性大大提升。

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

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

相关文章

如何分析和优化慢sql语句

前言 sql查询速度比较慢容易成为性能瓶颈,这时我们可以优化我们的sql语句或数据库表 一般sql语句执行很慢的种类分为: 1.聚合查询 2.多表查询 3.表数据量过大查询 4.深度分页查询 这四种的前三种都可以通过优化sql语句来优化sql查询速度 正文 聚合查询 我们可以通过尝…

机器人视觉教学实训平台

一&#xff1a;功能概述 1.1、功能简介 机器人视觉教学实训平台基于睿尔曼机器人与海康机器视觉产品&#xff0c;面向机器人视觉系统应用而开发设计&#xff0c;产品涵盖机器人系统、工业视觉系统、自动化控制系统、计算机编程系统&#xff0c;可以在一台设备上进行多种与机器…

C++初阶学习第三弹——类与对象(上)——初始类与对象

前言&#xff1a; 在前面&#xff0c;我们已经初步学习了C的一些基本语法&#xff0c;比如内敛函数、函数重载、缺省参数、引用等等&#xff0c;接下来我们就将正式步入C的神圣殿堂&#xff0c;首先&#xff0c;先给你找个对象 目录 一、类与对象是什么&#xff1f; 二、类的各…

Git 工作原理

Git 工作原理 | CoderMast编程桅杆https://www.codermast.com/dev-tools/git/git-workspace-index-repo.html Workspace&#xff1a;工作区Index / Stage&#xff1a;暂存区Repository&#xff1a;仓库区&#xff08;或本地仓库&#xff09;Remote&#xff1a;远程仓库 Git 一…

如何优雅的实现 iframe 多层级嵌套通讯

前言 在前端开发项目中&#xff0c;不可避免的总会和 iframe 进行打交道&#xff0c;我们通常会使用 postMessage 实现消息通讯。 如果存在下面情况&#xff1a; iframe 父子通讯iframe 同层级通讯iframe 嵌套层级通讯 当面对这种复杂的情况的时候&#xff0c;通讯不可避免…

Uptime Kuma 使用指南:一款简单易用的站点监控工具

我平时的工作会涉及到监控&#xff0c;而站点是一个很重要的监控项。项目上线后&#xff0c;我们通常会将站点监控配置到云平台上&#xff0c;以检测各站点的连通性。但随着项目不断增多&#xff0c;云平台上的配额就有点捉急了。针对这个情况&#xff0c;我们可以试试这个开源…

李沐49_样式迁移——自学笔记

样式迁移 将样式图片中的样式迁移到内容图片上&#xff0c;合成图片&#xff0c;例如将照片转换成漫画形式或者是油画风。 基于CNN的样式迁移 读取图片和样式风格 %matplotlib inline import torch import torchvision from torch import nn from d2l import torch as d2ld…

Facebook的魅力魔法:探访数字社交的奇妙世界

1. 社交媒体的演变与Facebook的角色 在数字化时代&#xff0c;社交媒体已经成为我们日常生活中不可或缺的一部分。而在众多的社交媒体平台中&#xff0c;Facebook 以其深厚的历史和广泛的影响力&#xff0c;成为了全球数亿用户沟通、分享和互动的主要场所。从其初创之时起&…

【学习AI-相关路程-自我总结-相关入门-自我学习-NVIDIA-Jetson】

【学习AI-相关路程-自我总结-相关入门-自我学习】 1、前言2、思考前进方向3、学习路线1、基础知识阶段2、初级准备阶段3、中级学习阶段4、高级实战阶段 4、自我的努力5、学习平台6、自己总结 1、前言 最近AI相关比较火的&#xff0c;对于程序员&#xff0c;或者走这行的人来说…

Flutter开发好用插件url_launcher详解-启动 URL

文章目录 url_launcher介绍安装用法错误处理自定义行为其他功能 url_launcher介绍 url_launcher 是一个 Flutter 插件&#xff0c;用于启动 URL。它支持网络、电话、短信和电子邮件方案。您可以使用它从您的 Flutter 应用程序中打开网站、拨打号码、发送短信或撰写电子邮件。 …

群组分析方法

目录 1.什么是群组分析方法 2.基本原理 3.群组分析方法分类 3.1.层次方法 3.2.划分方法 3.3.密度基方法 ​​​​​​​3.4.模型基方法 4.群组评估 5.应用步骤 1.什么是群组分析方法 群组分析&#xff08;Cluster Analysis&#xff09;是数据分析中的一种重要方法&…

git lab 2.7版本修改密码命令

1.gitlab-rails console -e production Ruby: ruby 2.7.5p203 (2021-11-24 revision f69aeb8314) [x86_64-linux] GitLab: 14.9.0-jh (51fb4a823f6) EE GitLab Shell: 13.24.0 PostgreSQL: 12.7 2根据用户名修改密码 user User.find_by(username: ‘username’) # 替换’use…

ABAP 遗传算法求解

本文无文本解析&#xff0c;结尾处有简单装箱问题的示例&#xff0c;该算法收敛结果较慢&#xff0c;仅供ABAP爱好者参考&#xff0c;实践&#xff0c;实际应用建议使用线性规划。可直接复制后在系统中使用。 对象自定义逻辑版本-截图 对象自定义逻辑版本-对象描述 INIT I…

Navicat连接SQLSever报错:[08001] MicrosoftTCP Provider 远程主机强迫关闭了一个现有的连接

Navicat连接SQLSever报错&#xff1a;[08001] [Microsoft][SQL Server Native Client 10.0]TCP Provider: 远程主机强迫关闭了一个现有的连接 问题分析 旧版的MSSQL 如果不是最新版的&#xff0c;可以去这安装以下即可。 最新版的MSSQL 如果是安装最新版的MSSQL连接不上很正…

DFS和回溯专题:全排列 II

DFS和回溯专题&#xff1a;全排列 II 题目链接: 全排列 II 参考题解 代码随想录 题目描述 代码纯享版 class Solution {public List<List<Integer>> list_all new ArrayList();public List<Integer> list new ArrayList();public int[] res;public Lis…

探索 Python 的动态类型系统:变量引用、不可变性及高效内存管理与垃圾回收机制的深入分析

文章目录 1. 动态类型及其内存管理解析1.1 变量与对象的引用关系1.2 对象的不可变性和内存地址的变化 2. 垃圾回收与内存优化策略2.1 动态内存分配的基础2.2 Python 的垃圾回收 Python作为一种流行的高级编程语言&#xff0c;以其代码的易读性和简洁性著称。尤其是它的动态类型…

开源数据集分享———猫脸码客

猫脸码客作为一个专注于开源数据集分享的公众号&#xff0c;致力于为广大用户提供丰富、优质的数据资源。我们精心筛选和整理各类开源数据集&#xff0c;涵盖机器学习、深度学习、自然语言处理等多个领域&#xff0c;以满足不同用户的需求。 (https://img-blog.csdnimg.cn/d98…

找不到vcruntime140_1.dll,无法继续执行代码的多种解决方法

在启动电脑并着手进行日常工作的过程中&#xff0c;当我尝试运行一款至关重要的软件时&#xff0c;系统突然弹出一个令人困扰的错误提示&#xff1a;“由于找不到vcruntime140_1.dll&#xff0c;无法继续执行代码”&#xff0c;这个错误信息明确指出&#xff0c;由于缺失了vcru…

SpringCloud系列(16)--将服务提供者Provider注册进Zookeeper

前言&#xff1a;在上一章节中我们说明了一些关于Eureka自我保护模式&#xff0c;而且自上一章节起关于Eureka的知识已经讲的差不多了&#xff0c;不过因为Eureka已经停更了&#xff0c;为了安全考虑&#xff0c;我们要用还在更新维护的注册中心来取代Eureka&#xff0c;而本章…

【Java--数据结构】链表经典OJ题详解(上)

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 谈谈头插、头删、尾插、头插的时间复杂度 反转一个单链表 链表的中间结点 返回倒数第k个结点 合并两个链表 谈谈头插、头删、尾插、头插的时间复杂度 头插和头删的时…