首页 > 其他分享 >STP生成树

STP生成树

时间:2024-03-30 23:58:05浏览次数:21  
标签:BPDU tree 端口 生成 STP 根桥 转发 spanning

背景:为了达到网络的高可用性,通常会部署冗余的线路,来避免单点故障的问题,但是冗余的环境会造成其他的问题:广播风暴、帧的多个副本,mac数据可不稳定。为了避免冗余环境带来的问题,提出了stp协议来避免。

1.分类

①stp:spanning tree protocol,生成树协议,基于802.1d协议

②cst    ③pvst/pvst+   ④rstp   ⑤mstp

2.BPDU

网桥协议数据单元,每2s发送一次,老化时间20s

①内容:1)自己的桥ID      2)自己认为的根桥id       3)到达根桥的开销

②分类:

配置BPDU:当网络环境稳定的时候,只有根桥会发送配置BPDU

TCN BPDU:拓扑变更BPDU,当网络环境拓扑发生变化的时候,之后根桥会发送TCN BPDU

③生成树的选举:(选举过程是同时进行的)

1)根桥:通过比较桥ID(优先级+背板mac地址),越小越优,选举出根桥之后,只有根桥会发送配置BPDU

2)根端口(RP):在所有非根桥交换机上进行选举,每台交换机选举出一个根端口

I、作用:接收来自根桥的BPDU

II、选举:

a、比较到达根桥的开销,越小越优(10M--100、100M--19、1G--4、10G--2)

b、比较发送方的桥ID(优先级+背板mac地址),越小越优

c、比较发送方的端口ID(端口优先级+端口号),越小越优

3)指定端口(DP):在所有链路上进行选举,每条链路选举出一个指定端口

I、作用:发送和转发BPDU

II、选举:

a、比较到达根桥的开销,越小越优(10M--100、100M--19、1G--4、10G--2)

b、比较自己的桥ID(优先级+背板mac地址),越小越优

c、比较自己的端口ID(端口优先级+端口号),越小越优

4)阻塞端口

④端口状态:

1)disable:禁用状态,不参与生成树选举的端口,现网中接口处于shutdown的端口

2)blocking:阻塞状态,处于阻塞状态的端口,可以接收BPDU、但是不会发送BPDU,不能进行数据帧的转发(最大老化时间20s,当转发端口超过最大老化时间没有接收BPDU时,就会进行状态的转变,从阻塞状态变为侦听状态)

3)listening:侦听状态,处于侦听状态的端口,可以接收BPDU、发送BPDU,但是不能进行数据帧的转发(转发延迟时间15s)

4)learning:学习状态,处于学习状态的端口,可以接收BPDU、发送BPDU,但是不能进行数据帧的转发(转发延迟时间15s)

5)forwarding:转发状态,处于转发状态的端口,可以接收BPDU、发送BPDU,可以进行数据帧的转发

⑤交换机的端口从阻塞状态变为转发状态需要的时间:

1)当交换机自身链路出现故障的时候,需要30s才能从阻塞状态变为转发状态

2)当交换机非自身链路出现故障的时候,需要50s才能从阻塞状态变为转发状态

3)当终端设备接入进交换机的时候,需要30s才能转发数据

3.PVST+

每个vlan一棵生成树,对802.1d的拓展,思科私有的

基本配置:

Switch#show spanning-tree

Switch(config)#spanning-tree mode pvst

Switch(config)#spanning-tree vlan 1 root primary (优先级默认降低8192)

Switch(config)#spanning-tree vlan 1 root secondary(优先级默认降低4096)

Switch(config)#spanning-tree vlan 1 priority 20480(4096的倍数)

4.stp拓扑变更

拓扑变更:当网络环境发生变化时,端口状态也会进行改变(变为转发状态/阻塞状态)

当某台交换机检测到网络拓扑环境发生变化,就会向沿着根桥的交换机发送TCN(拓扑变更),上游的设备接收到下游设备的TCN后,会先给下游设备回复一个TCA,然后再向沿着根桥的交换机发送TCN,只到根桥交换收到为止。根桥交换机收到下游设备发送的TCN后,会先给下游设备回复一个TCA,然后向其他所有端口发送TCN,把自己的mac地址秒的老化时间修改为15s,其他下游交换机收到根桥发送的TCN之后,重复以上动作,直到整个网络环境的交换机都收到为止。

增强特性:

1. UplinkFast:

主要是部署接入层交换机(部署在汇聚层交换机可能会导致环路,假如汇聚层交换机有三条链路,其中一条能通的链路断了

,另外两条可能变成转发状态,可能会导致环路),实现当接入层交换机的上行链路发生故障的时候可以实现快速转移 ,收敛速度1s

SW3(config)#spanning-tree uplinkfast

*Sep 24 12:31:26.607: setting bridge id (which=1) prio 49153 prio cfg 49152 sysid 1 (on) id C001.aabb.cc00.3000-优先级变大

*Sep 24 12:32:12.216: STP: VLAN0001 new root port Et0/0, cost 3200--开销变大

改变优先级或者开销主要是为了让设备成为根桥,端口成为指定端口的可能性降低(成为根桥后,端口都为指定端口)

SW3#show spanning-tree uplinkfast

2.BackboneFast:

主要是部署在汇聚层交换机,要求全部的汇聚层交换机都要开启这个特性。实现当非自身链路出现故障时节约20s时间

全部汇聚层交换机都要开:因为汇聚层交换机要发送根链路查询,其他汇聚层交换机不开它是不知道咋进行处理的。

当交换机检测到链路发生故障的时候,将收到新的BPDU与认为的根桥的BPDU做比较,如果新的BPDU没有之前更优的话,交换机就会发送根链路查询(RLQ)

,询问根桥是否还在,如果有收到根桥的回复,则交换机的阻塞端口直接调到侦听状态,同时会将自身存储BPDU发送给对方

SW1(config)#spanning-tree backbonefast

SW3#show spanning-tree backbonefast

3.PortFast:

主要是部署接入层交换机,一般在用于连接终端接口(access),当主机接入的时候可以实现快速转发,收敛时间约1s,

(开启这个特性之后是不参与生成树选举),不建议在trunk链路上开启(除非trunk链路接的是服务器)

接口上配置:

SW3(config)#int range e0/2

SW3(config-if-range)#spanning-tree portfast edge

全局上配置:(将所有非trunk端口自动激活PortFast特性)

 SW3(config)#spanning-tree portfast edge default

SW3(config-if)#spanning-tree portfast edge trunk--针对trunk端口开启这个特性,不建议使用

*Sep 24 13:06:51.632: STP: VLAN0001 Et0/2 ->jump to forwarding from blocking

SW3#sh spanning-tree int e0/2 portfast

标签:BPDU,tree,端口,生成,STP,根桥,转发,spanning
From: https://blog.csdn.net/qq_45790661/article/details/137111291

相关文章

  • AMD hipcc 生成各个gpu 微架构汇编语言代码的方法示例
    1,gpuvectorAdd示例为了简化逻辑,故假设vector的size与运行配置的thread个熟正好一样多,比如都是512之类的.1.1源码vectorAdd.hip#include<stdio.h>#include<hip/hip_runtime.h>__global__voidvectorAdd(constfloat*A,constfloat*B,float*C){inti=......
  • STP 的机制
    什么是STP协议?STP在最初被设计出来的时候,主要是用于防止二层环路导致的广播风暴,是一个破环协议。最初是在IEEE802.1d中被定义。STP的三种计时器hello:hello时间是在端口上发送的每个BPDU之间的时间。默认情况下,此时间为2秒。Forwarddelay:Forwarddelay是在List......
  • qrcodejs2 首次生成微信支付二维码不渲染问题
    使用qrcodejs2生成微信支付二维码,后端向前端传递了微信二维码url,通过此方法生成渲染二维码图片  qrcode(url){ //前端根据URL生成微信支付二维码   console.log("调用二维码生成")   //先清除,后增加   document.getElementById("qrcodeIm......
  • Item6:如果你不想使用编译器生成函数,就明确拒绝
    芝士wa2024.3.30Item6链接对于一个自定义空类,编译器会自动提供四个构造函数:默认构造函数默认析构函数拷贝构造函数拷贝赋值运算符(=)如果我不想有这些构造函数,应该怎么办呢?书里给出了答案,自己声明这些函数,并设置为private,然后不去实现它,当有人不小心地调用了它们,在li......
  • 经典Prompt欣赏 - 给代码生成单元测试
    在Twitter上看到一段给代码生成单元测试的Prompt:https://twitter.com/mattshumer_/status/1773385952699789808虽然它是针对Claude3的,但理论上来说可以适用于绝大部分模型。Prompt如下:<prompt_explanation>Youareanexpertsoftwaretestertaskedwiththoroughlytest......
  • 经典Prompt欣赏 - 给代码生成单元测试
    在Twitter上看到一段给代码生成单元测试的Prompt:https://twitter.com/mattshumer_/status/1773385952699789808虽然它是针对Claude3的,但理论上来说可以适用于绝大部分模型。Prompt如下:<prompt_explanation>Youareanexpertsoftwaretestertaskedwiththoroughlytest......
  • C语言rand、srand库函数生成随机数(附时间戳)
    前言:当我们想要用C语言写程序来获取一个随机数时,该如何获取呢?这里我们上百度搜索一下这里就有提到使用rand、srand、time库函数搭配来获取随机数,也许根据其所说我们已经可以获得随机数解决问题,但想问题不能只浮于表面,下面我们来深入认识一下rand、srand、time库函数。一、ra......
  • AI写作智能免费一键生成:让写作变简单,输入标题,轻松装作
    首先,这篇文章是基于笔尖AI写作进行文章创作的,喜欢的宝子,也可以去体验下,解放双手,上班直接摸鱼~按照惯例,先介绍下这款笔尖AI写作,宝子也可以直接下滑跳过看正文~笔尖Ai写作面向写作领域的全能型Ai写作工具笔尖Ai写作助手包括:Ai论文、Ai开题报告、Ai公文写作、Ai商业计划书、文......
  • 人工智能大模型的两大领域:语言与图片生成
    随着科技的飞速发展,人工智能(AI)技术已经深入到我们生活的方方面面。在AI的众多应用中,大模型技术无疑是近年来最引人注目的领域之一。从老程序员的角度来看,人工智能大模型主要可以分为两大类:语言类和图片生成类。这两类大模型不仅有着各自独特的技术特点,还在实际应用中发挥着不可......
  • 大模型检索增强生成RAG原理介绍
    大家好,我是程序锅。github上的代码封装程度高,不利于小白学习入门。常规的大模型RAG框架有langchain等,但是langchain等框架源码理解困难,debug源码上手难度大。因此,我写了一个人人都能看懂、人人都能修改的大模型RAG框架代码。整体项目结构如下图所示:本篇文章将介绍2.RA......