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. ...
随机推荐
- 对List集合进行分页
1 简要说明 有时候,我们有一个list集合,需要对它进行分页处理 下面的根据类MyPageUtilVo就可以做到 它自带泛型,适合各种集合 可以设置每页的大小(默认为10) 根据页码(从1开始)就可 ...
- maven项目构建报错:Could not find artifact com.xxx.cloud:xxx-cloud:pom:1.0-SNAPSHOT and 'parent.relativePath' points at wrong local POM
maven多模块项目打包的时候报错如下: [ERROR] [ERROR] Some problems were encountered while processing the POMs: [FATA ...
- Hystrix断路器
1.介绍 ①产生原因 服务雪崩: 多个微服务之间调用,假设A调用B,C,B和C又调用其他微服务,这就是扇出. 如果扇出的链路上有某个微服务调用响应时间过长或者不可用,那么A调用会占用越来越多的系统资源 ...
- Windows QT程序配置删除网卡IP
1.Windows下可在CMD控制终端使用Dos命令对指定网卡进行IP配置,需要使用管理员权限打开CMD终端 往网卡添加IP主要有以下两种方法: 方法1: netsh interface ip add ...
- 0x05_My-OS显示字符串和任意参数
先看看效果: 要解决两个问题,第一个如何显示字符串,printf?我之前已经说了所有的头文件都要自己写,printf是stdio里的可是我们没有stdio 我们要通过画像素点的方式显示字符串,有点像我 ...
- playwright 实现高亮、is_visible 等源码修改
一. 前言 高亮是什么? 在ui自动化中可以执行js来让某个页面元素高亮,比如背景颜色.字体颜色.边框颜色等发生改变,以此更加方便执行的时候点了哪一步操作.(如果有不清楚怎么实现的可以转到我的介绍se ...
- Linux 下安装Nginx两种方法- yum安装 and Centos7下yum安装配置nginx与php
转载csdn: Linux 下安装Nginx两种方法- yum安装_在电脑前深思的博客-CSDN博客 Linux安装Nginx(两种方式)_HHRunning的博客-CSDN博客_linux 是否安装 ...
- 代码随想录算法训练营day01 | leetcode 704/27
前言 考研结束半个月了,自己也简单休整了一波,估了一下分,应该能进复试,但还是感觉不够托底.不管怎样,要把代码能力和八股捡起来了,正好看到卡哥有这个算法训练营,遂果断参加,为机试和日后求职打下一个 ...
- JSTL 报错 TagLibraryValidator
今天想要在 JSP 页面上用 JSTL 简化操作,发现导入 jstl.standard 包报错了.我是按照菜鸟上的教程来的.我的 Tomcat 版本是 10.0,之后发现 10.0 版本的 Tomca ...
- LeetCode-28 实现strStr() KMP算法的学习
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/repeated-string-match 题目描述 给定两个字符串 a 和 b,寻找重复叠加字符 ...