STP理论基础
目的
防止二层环路及防止环路造成的广播风暴以及引起的MAC表震荡
方法
首先,所有配置了STP的交换机互相向相邻交换器(配置了STP的)发送BPDU(协议数据单元),选举根桥(根交换机),根交换机上所有端口都为指定端口,指定端口的对端都为根端口,其他交换机相连链路,互相发送BPDU对比交换机优先级或背板MAC地址(越小越优先),优先级“好”的成为根端口或指定端口,“不好”的成为指定端口或阻塞端口。
BPDU(协议数据单元)
用于传递STP协议相关报文,分为两种:
1、配置BPDU,用于传递STP的配置信息
2、TCN BPFU,用于通告与拓扑变更信息
要求
在所有交换机中必须要有一台交换机作为根桥
每个非根桥都要有一个根端口
每个物理网段必须要有一个指定端口
其他不能成为根端口和指定端口的端口就是阻塞端口
选举规则
1、选举根桥:通过BPDU中的桥ID,BID标识交换机身份,在通过优先级+Mac地址(优先级默认32769,必须是4096的倍数)
2、选举根端口:在非根桥上,距离根桥最近的端口就是本交换设备的根端口,由于根桥上全是指定端口,所以和根桥相连的端口在“正常环境”都是根端口,但由于链路开销(带宽越大,开销越小)有可能不同,所以相连端口也有可能成为阻塞端口,具体为:
1、选择到达根桥开销小的优先
2、对端交换机PID小的优先(优先级+端口号)
3、端口ID小的优先
3、选举指定端口:由于一台交换机只能有一个根端口,所以其他端口不是指定端口就是阻塞端口,而指定端口的选举具体为:
1、选择到达根桥开销小的优先
2、交换机BID小的优先
3、端口ID小的优先
4、选举阻塞端口:当本交换机存在根端口,物理连接对端已经成为指定端口,
初始化流程
disable:禁用状态,端口被关闭。
blocking:阻塞状态,接收BPDU,但不发送BPDU,不学习MAC地址,不转发数据包。
listening:监听状态,接收并发送BPDU,不学习MAC地址,不转发数据包,当状态想要变化时,处于该状态15秒时转换到学习状态。选举端口角色的时候在这个状态。
learning:学习状态,接受并发送BPDU,学习MAC地址,不转发数据包,当状态想要变化时,处于该状态15秒时转换到转发状态。
forwarding:转发状态,接收并发送BPFU,学习MAC地址,转发数据包。
计时器
hello time:2秒,配置BPDU的发送周期。
Max age:20秒,10个hello time的时间,如果在这些时间内没有收到BPDU报文,则认为链路故障。
Forwarding delay:15秒,状态切换延迟,就是监听状态、学习状态、转发状态之间的切换。
链路故障
多数情况下不是物理层发生故障,物理层故障链路直接会直接down掉,交换机可以直接检测到链路变化,所以不需要等待一个max age。
而是协议层面或由于某种原因使交换机无法收到bpdu。
状态变化
当链路发生故障(到达Max age时)或有新的接口加入时(变为转发状态-个人认为有待研究),判断为拓扑发生了变化,需要向根桥发起TCN BPDU,其他交换机收到TCN BPDU时,继续向根交换机转发TCN BPDU,直到到达根桥为止,当根桥收到TCN BPDU后,向所有的端口发送一个TC置位的配置BPDU,这个BPDU会使收到该BPDU的报文将自己的Mac表清空(实际上是将Mac地址表的老化时间缩短为15秒,原本是300秒),也就是加快故障切换速度。
之所以要改变mac表原因是链路故障不一定是链路down掉,链路down时该条链路自动从mac表中消失,而由于各种原因收不到bpdu,这条链路依旧会存在于mac表中,所以需要重新清空学习。
STP的问题
收敛速度慢,故障切换时间太长,短则30秒(监听-学习-转发),长则50秒(max age-监听-学习-转发)。
网络中大量主机频繁上下线,会导致TCN BPDU大量发送。
断掉链路会浪费资源
RSTP
快速生成树协议
可以将故障恢复时间直接缩短到1秒左右
端口状态减少到3种
Discarding:将Disabled、Blocking、Listening结合为Discarding状态,不学习MAC地址,不转发数据包,肯定是接受但不发送BPDU。
Learning:学习状态,接受并发送BPDU,学习MAC地址,不转发数据包。
Forwarding:转发状态,接收并发送BPFU,学习MAC地址,转发数据包。
端口角色增加到4种(算上边缘端口其实有5种)
1、根端口和指定端口不变
2、闭塞端口非为两种:
1)Alternate,替代端口--根端口的备份,当根端口故障后,马上成为根端口,并进入转发状态。
2)Backup,备份端口--指定端口的备份,当指定端口故障后,会等待一段时间后成为指定端口。
边缘端口机制
当链路激活后,边缘接口直接进入转发状态,不参与STP计算
边缘端口的UP/DOWN不会触发拓扑变更
一般把连接PC的端口配置位边缘端口
同样浪费资源
MSTP
多生成树协议,我喜欢叫多实例生成树协议,方便学嘛
将多个vlan捆绑到一个生成树实例,每个实例分别独立计算生成树
基于STP计算结构不同,实现不同vlan的流量负载均衡
MSTP使用RSTP的三种端口状态,定义与RSTP中相同
端口角色有7种,不再这里介绍,其他机制不再这里介绍。
STP理论基础的更多相关文章
- 解决:SharePoint当中的STP网站列表模板没有办法导出到其它语言环境中使用
首在在你的英文版本上,导出列表或是网站的模板,这个文件可能是这样滴:template.stp 把这个文件 template.stp 命名为 template.cab 解压 这个 *.cab 文件 在解 ...
- STP的作用和操作
STP的作用 STP通过阻塞端口来消除环路,并能够实现链路备份的目的 STP的操作 选举一个根桥 比较交换机的桥ID,越小越优先 桥ID 是8个字节,2个字节的优先级+6个字节的MAC地址 2.每个 ...
- CentOS 7.1 Bridge启用STP报错"Master connection not found or invalid"
今天在公司测试Linux bridge搭建,为了使内部docker容器的网络能够不经过2层封装转发对外公布,顾试用一下bridge功能,结果碰到报错:"Bringing up interfa ...
- [转]MOSS通过此命令注册模板,web应用程序可以根据stp模块生成网站集
注:C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\bin stsadm –o add ...
- 分布式系统开发的一些相关理论基础——CAP、ACID、BASE
本文主要讲述分布式系统开发的一些相关理论基础. 一.ACID 事务的四个特征: 1.Atomic原子性 事务必须是一个原子的操作序列单元,事务中包含的各项操作在一次执行过程中,要么全部执行成功,要么全 ...
- 特征脸(Eigenface)理论基础-PCA(主成分分析法)
在之前的博客 人脸识别经典算法一:特征脸方法(Eigenface) 里面介绍了特征脸方法的原理,但是并没有对它用到的理论基础PCA做介绍,现在做补充.请将这两篇博文结合起来阅读.以下内容大部分参考 ...
- AngularJS理论基础
AngularJS理论基础 AngularJs是一个用于设计动态web应用的结构框架. 它是一个框架,不是类库,是像EXT一样提供一整套方案用于设计web应用.它不仅仅是一个javascript框架, ...
- STP详解
STP详解 Write From YangWj Wednesday, March 5, 2014 一. 生成树协议 STP的主要任务是阻止在第2层网络(网桥或交换机)产生网络环路,它警惕的监视着网络中 ...
- STP根交换机,指定端口,根端口,阻塞端口
STP判断各交换机端口(指定端口:DP;根端口:RP;阻塞端口:AP) 判断步骤: 1.选举根交换机: 判断对象:所有运行STP协议的交换机中选出一个; 判断依据:交换机中选择网桥ID值(交换机优先级 ...
- 【转】不同VLAN之间相互通信及VTP、STP、EtherChannel概念
厘清最后一个概念. 转了网上两个相关帖子: http://www.net130.com/CMS/Pub/Tech/tech_zh/2009_03_12_97386_3.htm http://blog. ...
随机推荐
- Vue3源码阅读梳理
简单代码例子 const { createApp, defineComponent, computed, watch, ref, reactive, effect } = Vue const app ...
- pycharm软件的基本使用、python的注释语法、变量与常量、变量的命名风格、垃圾回收机制、数据类型、数据类型之整型、数据类型之浮点型
一.pycharm软件的基本使用 修改主题背景 修改字体大小 切换解释器 如何新建python文件 创建后缀是py的文件 注意:pycharm的语言 一定要使用英文的 二.python语法注释 (1) ...
- JDBC工具类,减少代码冗余好帮手
首先要在scr下创建一个file文件 当然 需要初始的注册驱动和数据库操作都可以实现,才可以用jdbc工具类进行减多少代码冗余~可以看前面一篇的博客,就是写如何连接jdbc哈~代码运行成功的快乐真的好 ...
- 看完这篇你不能再说不懂SSO原理了!
这一篇是原理篇,接下来还会有一篇实战篇,实战的相关代码是非常火的一个开源项目叫:xxl-sso 一.简介 单点登录(Single Sign On),简称为 SSO. 它的解释是在多个应用系统中,用户只 ...
- .net core 删除指定路径下的所有文件以及文件夹(文件夹建议保留目录)
1.服务层 /// <summary> /// 删除指定路径下的所有文件 /// </summary> /// <param name="filepath&qu ...
- osx安装mpd和ncmpcpp
简介 mdp 是一款开源的音乐播放软件, 全名为 media player daemon , 从字面意思理解, 就是一个后台播放进程. 不同于传统的音乐播放软件集成了播放解码和界面, mpd 只是一个 ...
- SpringBoot整合Mybatis、SpringBoot整合Spring Data JPA
Springboot Mybatis <?xml version="1.0" encoding="UTF-8"?> <project xmln ...
- 六:spring Cloud
六Spring Cloud 回顾之前的: javaSE 数据库 前端 Servlet HTTP Mybatis Spring SpringMVC SpringBoot Dubbo.Zookeeper. ...
- vue的异步组件
异步组件 异步组件:可以在首页加载之前先加载的组件,主要是做性能优化,提高用户体验 一.基本用法 在大型项目中,我们可能需要拆分应用为更小的块,并仅在需要时再从服务器加载相关组件.Vue 提供了 de ...
- Vue3中的响应式api
一.setup文件的认识 特点1:script 中间的内容就是一个对象 特点2:script 在第一层 定义的方法 或者 变量 => 就是这个对象 属性 => 顶层的绑定回被暴露给模板( ...