25.STP生成树协议介绍(链路收敛、拓扑变更)及缺点

2023-05-16

生成树协议(Spanning Tree Protocol,STP)

是一种工作在OSI网络模型中的第二层(数据链路层)的通信协议,基本应用是防止交换机冗余链路产生的环路.用于确保以太网中无环路的逻辑拓扑结构.从而避免了广播风暴,大量占用交换机的资源。

产生原因:
交换机之间存在冗余(备份)路径,以及交换机的泛洪机制,导致交换机之间产生 二层交换环路。

造成影响:
1.广播风暴
2.MAC地址表不稳定
3.数据帧的重复拷贝
在这里插入图片描述
造成影响名词解释:什么是广播风暴、什么是MAC地址表不稳定和数据帧的重复拷贝

解决方案:逻辑性阻塞某个接口.

所以就产生了STP协议。

工作过程

生成树协议工作过程:
STP通过协商阻断一些交换机端口,以确保网络中所有目的地之间只有一条逻辑路径,构建一棵没有环路的转发树。当一个端口阻止流量进入或离开时,该端口便视为处于阻塞状态。不过 STP 用来防止环路的网桥协议数据单元 (BPDU) 帧仍可继续通行。

网桥协议数据单元(BPDU)

在STP中发送的比较信息为BPDU
BPDU分为两种:
配置BPDU:config-BPDU

周期2s;用来进行生成树计算和维护生成树拓扑的报文;
拓扑变更BPDU:TCN-BPDU.

TC BPDU----①TCN BPDU  ②TC BPDU ③TCA BPDU 

TCN BPDU:拓扑变更告知包,只能从RP发出,不一定所有的交换机都有该数据包
TC BPDU:拓扑变更包,当根桥收到TCN BPDU后,会从DP指定端口发出TC BPDU包,所有的设备都会收到该数据包,收到TC BPDU数据包的设备会将MAC地址的老化时间从300s设置为15s。
TCA BPDU:拓扑变更确认包,当收到TCN BPDU的交换机会向发送者发送TCA BPDU报文,作为回复。

拓扑变更时的流程(重点)

正常情况下,交换机只会从它的RP根端口每2s接收到configuration BPDU包,但不会主动发送configuration BPDU给root bridge 根桥的。

    发生拓扑变化时,

①当交换机检测到拓扑发生变化了,它就会发送TCN BPDU包给root bridge,切记:TCN是通过root port向root bridge方向发出的。

②当交换机从它的指定端口DP接收到TCN类的BPDU,它必须为其做转发,也是从它的RP发出,同时,它必须做出回复,从它的DP向发送者发送TCA BPDU作为回复
注:这里是正常的configuration BPDU包.它的TCA位被置1,表明是要给TCN以回复的,但它跟TCN不是一类型的包.

③当TCN到达root bridge后,root bridge也要做出回应,会发出一种正常的BPDU包,包内的TC字段会被置1,TC即topology change,表示发现拓扑变化.这个包会被所有交换机转发,同样的TC位会置1,直至传遍全网,所有交换机都得知拓扑变化为止.

④收到TC BPDU包的交换机将把MAC地址的老化时间从300s—>15s
在这里插入图片描述
介绍BPDU中的重要字段的含义
在这里插入图片描述
在这里插入图片描述

端口的转换状态

在这里插入图片描述

生成树选举

在这里插入图片描述
网络设计通常采用冗余方法提高网络的健壮性、稳定性。常见的冗余方式有:链路冗余和设备冗余
链路冗余

STP链路收敛

 1.链路状态收敛的定义

从链路出现故障到网络拓扑恢复稳定的过程

 2.分类

直接链路收敛和间接链路收敛

直接链路收敛-----30s

必须满足的条件:
原先的NDP就处于阻塞状态了,所以就不需要最大20s的老化时间了。
在这里插入图片描述

间接链路收敛-----50s

间接情况:down掉的交换机x上没有阻塞端口NDP,需要20s的老化时间。如图中的交换机B
在这里插入图片描述

当二层网络中拓扑发生改变,将处于阻塞状态下的端口过渡到转发状态,可能用30秒或50秒的时间.其故障原因满足下面条件,从阻塞状态过渡到转发状态需要30秒,
那就是交换机X的直连链路down并且阻塞接口同时也位于交换机X之上,此时30秒可以收敛[直连检测机制]。
其它情况均为50秒。

STP的缺点
STP为了避免临时环路的产生,每个端口在确认为根端口或者指定端口后,仍然需要等待30s的时间才能进入转发状态;此外对于拓扑稳定的网络,经常需要重新进行STP计算,某些端口可能会长期处于阻塞状态而导致网络长时间的中断;
STP定义了TCNBPDU,可以使得网络拓扑变化时在50s之内实现收敛,TCNBPDU产生的条件是网桥由根端口转变为Forwarding状态,且网桥至少包含一个指定端口;
当网络中存在大量用户主机时,由于频繁地上下线导致交换机频繁发送TCNBPDU,导致网桥MAC地址老化时间长期保持为15s,MAC地址频繁刷新会导致网络产生大量未知单播造成的广播报文从而影响网络的带宽。

相关文档扩展

一、STP(Spanning Tree Protocol)
PVST、PVST+、RSTP、MSTP
IEEE 802.1d STP
IEEE 802.1q VLAN
IEEE 802.1p Qos
IEEE 802.1x dot1x
IEEE 802.1w RSTP
IEEE 802.1s MSTP

1.作用:防止二层交换环路
1)为什么交换网络会形成环路?(原因:为了提高网络的可靠性,增加冗余设备,从而导致交换网络环路)
2)如何防止二层交换环路?
Spanning Tree Protocol
2.Spanning Tree Protocol(生成树协议)
1)STP如何选举
a)选举Root Bridge
每个交换机(网桥)都拥有一个BridgeID(=BridgePriority+Bridge MAC Address)
0~65535,缺省32768
b)在每个非根桥上选举根端口
i)到达根桥的路径费用最小
10M 100
100M 19
1000M 4
10G 2
ii)Sender Bridge ID最小
iii)Sender PortID最小(PortID=Port Priority+Port Number)
0~255,缺省123
iv)自身的PortID最小(PortID=Port Priority+Port Number)
c)为每个网段(二层网段)选择一个Designated Port(指定端口)
i)到达根桥的路径费用最小
10M 100
100M 19
1000M 4
10G 2
ii)Sender Bridge ID最小
iii)Sender PortID最小(PortID=Port Priority+Port Number)
0~255,缺省123
iv)自身的PortID最小(PortID=Port Priority+Port Number)
2)BPDU报文(Bridge Protocol Data Unit)桥协议数据单元
在STP中,BPDU报文由Root Bridge产生,其他交换机中转该BPDU报文

3)假设网络中的交换机设备刚启动,每个交换机都认为自己是Root Bridge,发送BPDU报文
经过一段时间的交互,最终选择Root Bridge/同时可以确定每个交换机上的不同端口
的角色(Root Port/Designated Port),被选择为RP或DP的端口必须经过2个Forward Delay
时间后,才能进入Forward状态。

问题1:刚启动的时候,所有交换机的端口处于block状态。
     被选择成RP或DP的端口先进入Listen,再经过Learning状态,最后进入Forward状态
     其他端口(没有被选举为RP或DP)继续停留在block状态。
问题2:为什么RP/DP需要经过2个Forward Delay才进入Forward状态?
     为了防止STP收敛过程中的临时环路,当然引入Forward Delay后,在STP收敛过程中,将导致网络的临时中断。
问题3: Forward Delay为什么等于15秒
     BPDU报文每隔2秒发送一次,通常网络的直径为7

4)STP端口的角色:RP/DP/其他的统称为NDP,RP/DP最终进入Forwarding状态,NDP(非指定端口)为Blocking状态

 STP端口的状态:
       Blocking   (稳定状态):不会学习MAC地址,不能转发数据帧
       Listening  (过渡状态):不会学习MAC地址,不能转发数据帧
       Learning   (过渡状态):学习MAC地址,不能转发数据帧
       Forwarding (稳定状态):学习MAC地址,转发数据帧
 什么情况下,STP成为收敛?
 --所有端口均为Forwardig或Blocking状态

5)STP中的BPDU报文的类型
a)Configuration BPDU(配置BPDU):只能由Root Bridge,其他交换机中转这种BPDU
b)TCN BPDU(拓扑改变通知BPDU):由发行拓扑改变的交换机产生

6)拓扑改变的机制
在交换网络中,若一个交换机发行拓扑改变,它将产生TCN BPDU,沿着去往root bridge方向发送, (从自己的RP端口发出,必须得到上游交换机的确认TCA,如果没有收到TCA,再次发送TCN BPDU)直到该TCN BPDU报文达到root bridge.
root bridge收到该TCN BPDU后,在后续一段时间内(Max-AGE+Forward_Delay)发送的configuration BPD 中的TC标志位=1,所有交换机收到这种带TC比特的Configuration BPDU时,将本交换机的MAC地址表中的现有
表项的老化时间设置为Forward_delay 15秒.

7)PVSTP(Per VLAN)
a)优点
在每个VLAN中计算一个STP实例,可以实现不同VLAN的流量分担,提高链路的利用率。
b)BridgeID
不同VLAN都需要计算一个STP实例,如何设置BridgeID?
实现方式:
i.一个交换机上存在一个MAC地址池,不同VLAN计算STP中,从其中选取一个MAC地址,
从而保证不同STP实例的BridgeID唯一。
ii.使用扩展系统id。
将原先16bit的优先级划分为2部分,前4bit依旧用作priority,后12bit将VLAN ID映射进去。

       VLAN 1的BridgeID(假设交换机的priority为缺省值32768)
               32769.MAC         
       VLAN 2的BridgeID(假设交换机的priority为缺省值32768)
               32770.MAC
       由于后12bit被用作VLAN ID的映射,因此配置PVST的交换机优先级,步长必须为4096
               交换机的优先级:0/4096/8192

c)PVST+配置
Switch(config)#spanning-tree vlan VLAN_ID priority 优先级

  spanning-tree portfast(interface command) trunk
  spanning-tree portfast default (global command)
  interface range fa0/1,f0/5-10
  define interface-range ald fa0/1,fa0/5-10
  interface range macro ald

  IEEE 802.1d  STP 
  IEEE 802.1q  VLAN
  IEEE 802.1w  RSTP
  IEEE 802.1s  MSTP

RSTP(Rapid Spanning Tree Protocol)

PVRST+

1.选举的原则:和STP完全一样
2.RSTP和STP的区别
1)端口角色
STP:RP/DP/NDP
RSTP:RP/DP/NDP(AP:Alternate Port,BP:Backup Port)
其中AP(替换端口),用来替换Root Port
BP(备份端口),用了备份Designated Port
AP:若一个端口是由于接收到其他交换机的BPDU报文而进入blocking,则该端口为AP;
BP:若一个端口是由于接收到本交换机的BPDU报文而进入blocking,则该端口为BP;

2)端口状态
STP: Blocking/Listening/Learning/Forwarding
RSTP:Discarding/Learning/Forwaring
3)RSTP改进收敛速度的方法

a)引入hello机制(类似于邻居机制)
     若连续3次未收到hello报文,则认为邻居故障,将从该邻居得到的BPDU消息老化.

b)一个交换机c(一个端口为RP,其余端口为AP,处于阻塞状态),若交换机C的RP故障,则AP成为的RP,该端口可以直接转发
 
   (4096)A---------B(8192)
         \         /
          \       /
           \     /(阻塞)AP
            C(32768)接入层
c)Proposal-Agreement机制(提议/同意机制)
       注1:Proposal-Agreement必须在Point-to-Point链路上进行。
       注2:若交换机的端口工作在全双工,则缺省认为是Point-to-Point链路。
            若交换机的端口工作在半双工,则缺省认为是Shared链路。

       从根桥开始,由DP端口向下游交换机的端口发出Proposal消息,
       下游交换机的端口必须满足一些条件才可以回复Agerement消息。
       需要满足什么条件?
           下游交换机除了接收Proposal消息以外的所以其他端口必须满足sync(同步)条件,才可以回复Agreement消息。
       注:一个端口怎样才能满足sync条件?
           1)该端口是edge-port(边缘端口,这种端口通常是连接终端设备,它的收敛时间为0)
           2)该端口是阻塞的

  show cdp neighbors
  spanning-tree mode rapid-pvst
  spanning-tree link-type point-to-point
 
 d)拓扑改变机制
       STP:由发现拓扑改变的交换机产生TCN BPDU,沿着去往Root Bridge的方向,最终发送到Root Bridge.
           原因:STP中,只有Root Bridge才能产生Configuration BPDU报文
      RSTP:由发现拓扑改变的交换机直接泛洪这个消息到网络中。
           原因:每个交换机可以自动产生/发送BPDU报文。


   RSTP中,什么才算拓扑改变?
        非边缘端口进入转发状态。
   STP中,什么菜算拓扑改变?
        端口进入blocking或forwarding状态

MSTP(Multi Spanning Tree Protocol)

1.作用
在网络中运行多个生成树的实例,从而实现流量的分担
将多个VLAN映射到一个生成树实例
基于RSTP开发的,在网络中运行多个生成树实例,从而实现流量的分担。
2.MSTP的配置
同一个区域(Region)中的交换机进行MSTP的交互
如何确定Region?由以下3个参数确定(Name/Revision number/VLAN关联表)

spanning-tree mode mst
spanning-tree mst configuration 进入配置模式
name 7979
revision 1
instance 1 vlan 11-20
instance 2 vlan 21-30

show spanning-tree mst configuration
show spanning-tree mst 1

spanning-tree mst 1 priority 4096
spanning-tree mst 2 priority 8192

show int trunk
show cdp neighbors

归纳:
STP/PVST/PVST+/RSTP/PVRST/MSTP
思科交换机设备PVST(只能支持ISL封装的trunk)/PVST+(支持ISL/802.1Q封装的trunk)/PVRST/MSTP
华为交换机设备STP/RSTP/MSTP

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

25.STP生成树协议介绍(链路收敛、拓扑变更)及缺点 的相关文章

随机推荐

  • linux vnc的默认端口修改

    linux vnc的默认端口修改 2014 02 08 20 01 28 分类 xff1a LINUX vnc的默认端口是5901 xff0c 这个说法是不对的 vnc并不是只有一个端口 以前另一个文章介绍了nvcserver的配置用户的过
  • redis配置

    1 Redis 3 2x配置文件详解 2 3 4 默认redis不是以后台进程的方式启动 xff0c 如果需要在后台运行 xff0c 需要将这个值设置成yes 5 以后台方式启动的时候 xff0c redis会写入默认的进程文件 var r
  • Cosmos OpenSSD架构分析--FSC

    接口速度 xff1a type bw read75 s1s 75 s 8k 1s 61 104m swrite 1300 s 1s 1300 s 8k 1s 61 6m serase3 8ms 1s 3 8ms 8k 256 1s 61 5
  • 单片机的栈

    导读 xff1a 在C语言的世界里 xff0c 栈的地位非常举足轻重 xff0c 许多错误都可能和栈设置有关 xff0c 那么该如何确定栈的大小 xff1f 今天分享一点栈知识 xff0c 帮助你确定栈的大小 xff0c 参考链接请点击下方
  • GPS数据接收 串口调试感受

    注册这个账户也有一段日子了 xff0c 不知不觉已经研2了 xff0c 时间过的好快 xff0c 研3的学长已经答辩完 xff0c 马上要离开学校去工作了 xff0c 在南京 xff0c 一份不错的工作 这学期已经过去一个月了 xff0c
  • 使用VNC访问Windows桌面

    1 背景介绍 两台电脑 xff0c 一个笔记本 xff0c 一个台式机 笔记本上装的是Windows 10 通过上网小助手上网 xff08 P S 上网小助手 Stupid Policy xff09 台式机上装的是Ubuntu 14 04L
  • Maven 与 IntelliJ IDEA 的完美结合<转>

    转载地址 xff1a http www open open com lib view open1388650391891 html 你是否正在学习Maven xff1f 是否因为Maven难用而又不得不用而苦恼 xff1f 是否对Eclip
  • Cannot install ubuntu or other linux flavours on citrix Xen server

    Citrix Xen sucks When u try to install linux stuff on its Xen servers u will get an error complaining errors like below
  • web网站css,js更新后客户浏览器缓存问题,需要刷新才能正常展示的解决办法

    问题描述 最近将公司官网样式进行了调整 xff0c 部署到服务器后访问发现页面展示不正常 xff0c 但是刷新之后就会展示正常 问题分析 研究之后发现可能的原因有 css文件过大 xff0c 加载缓慢本地缓存问题 xff0c 虽然服务器修改
  • 目标检测篇-FPN论文精读

    1 FPN网络结构 基于feature pyrimid来检测不同scale的object xff0c 共有4种思路 a 使用图像金字塔构建特征金字塔 在每个图像尺度上独立计算的 b 只使用单一尺度的特征 c 重用由卷积神经网络计算的金字塔特
  • VNC的安装和常用命令

    主要参考文章 xff1a http www cnblogs com coderzh archive 2008 07 16 1243990 html http os 51cto com art 201005 201136 all htm ht
  • Deepin debian安装Libreoffice

    Libreoffice LibreOffice 是一款功能强大的办公软件 xff0c 默认使用开放文档格式 OpenDocument Format ODF 并支持 docx xlsx pptx 等其他格式 它包含了 Writer Calc
  • 小波变换——哈尔小波,Haar

    哈尔小波转换是于1909年由Alfr d Haar所提出 xff0c 是小波变换 xff08 Wavelet transform xff09 中最简单的一种变换 xff0c 也是最早提出的小波变换 Alfr d Haar xff0c 188
  • 一个字节多少位

    前几天笔试发现这个问题有点模糊 xff0c 囧 xff0c 记录一下 xff1a 1字节 xff08 byte xff09 61 8位 xff08 bit xff09 在16位的系统中 xff08 比如8086微机 xff09 1字 xff
  • java 基础排序(冒泡、插入、选择、快速)算法回顾

    java 基础排序 xff08 冒泡 插入 选择 快速 xff09 算法回顾 冒泡排序 code private static void bubbleSort int array int temp for int i 61 0 i lt a
  • Houdini Python开发实战 课程笔记

    P2 43 P3 43 P4 43 P5 基础 xff1a 1 Houdini中使用Python的地方 2 Textport xff1a 可使用cd ls等路径操作的命令 xff08 命令前加 xff0c 可在python中使用 xff09
  • Houdini Mac 添加external editor

    我的尝试 xff08 没有成功 xff09 xff1a 1 找到houdini env文件 2 修改env文件 xff0c 添加 EDITOR 61 34 Applications Sublime Text app Contents Sha
  • Vue拖拽组件列表实现动态页面配置

    需求描述 最近在做一个后台系统 xff0c 有一个功能产品需求是页面分为左右两部分 xff0c 通过右边的组件列表来动态配置左边的页面视图 xff0c 并且左边由组件拼装起来的视图 xff0c 可以实现上下拖拽改变顺序 xff0c 也可以删
  • 项目时间管理

    项目进度管理知识领域中主要包括规划进度管理 定义活动 排列活动顺序 估算活动资源 估算活动持续时间 制定进度计划 控制进度等7个过程 一 规划进度管理 规划进度管理是为规划 编制 管理 执行和控制项目进度而制定政策 程序和文档的过程 规划进
  • 25.STP生成树协议介绍(链路收敛、拓扑变更)及缺点

    生成树协议 xff08 Spanning Tree Protocol xff0c STP xff09 是一种工作在OSI网络模型中的第二层 数据链路层 的通信协议 xff0c 基本应用是防止交换机冗余链路产生的环路 用于确保以太网中无环路的