stp选举原理

STP是一个用于局域网中消除环路的协议。二层网络中,为了进行链路备份,提高网络可靠性,通常使用冗余链路。但是使用冗余链路会导致物理拓扑成环,从而导致二层环路,二层环路的危害有广播风暴和mac表震荡。从而影响网络通信。
为了解决二层网络环路问题,出现了生成树协议(STP:spanning tree protocol)。
通过STP协议,能够通过二层设备间交互信息主动发现环路并通过阻塞端口的方式将环状网络修剪为无环的树结构。
STP在消除环路的同时也没有影响链路备份,当活动的路径发生故障时,之前被down掉的链路会被重新激活,恢复网络连通性。

STP基本概念

一个根桥

STP定义了一个树状网络结构,那么必须有一个唯一的根(root bridge)。它是网络的逻辑中心,但不一定是物理中心。根桥不是固定不变的,也会根据网络拓扑的变化动态变化。根桥是BID最小的桥,通过交互配置BPDU协议报文选出最小的BID。
网络收敛后,根桥会按照一定的时间间隔产生并向外发送配置BPDU,其他设备收到该配置BPDU后,如果优先级比自己的配置BPDU高,那么非根桥设备会根据收到的配置BPDU中携带的信息更新自己的STP端口存储的配置BPDU信息,否则就丢弃这个配置BPDU。

两种度量

STP的计算依据ID和路径开销

id

分为BID(bridge id)和PID(port ID)

BID:桥ID

BID的组成是:16位的桥优先级(bridge priority)与48位的桥MAC地址构成。
在STP中,BID最小的设备会被选举位根桥( RB)

PID:端口ID

PID的组成是:4位的端口优先级(port priority)与12位的端口号。
PID只在某些情况下对选择指定端口有作用。

路径开销(pathcost)

一个端口变量。是STP用于选择链路的参考值。STP通过计算路径开销,选择较为强壮的链路,阻塞多余的链路,将网络修剪成无环路的树状网络结构。
在一个STP网络中,某个端口到根桥的路径开销就是所经过的各个桥上的各端口的路径开销累加而成,这个值叫做根路径开销(ROOT PATH COST)

三要素选举

从环状结构到树状结构,有三个要素:根桥、根端口和指定端口。

根桥RB

BID最小的桥,通过交互配置BPDU协议报文选出最小的BID。

根端口RP

非根桥上的去往根桥路径开销最小的端口,根端口负责向RB转发数据。RP的确定依赖根路径开销,非根桥上RP有且仅有一个,根桥上没有根端口。

指定端口DP

对于一台设备而言

指定桥是与本机直接相连的并且负责向本机转发配置消息的设备
指定端口是指定桥向本机转发配置消息的端口。

对于一个局域网而言

指定桥是负责向本网段转发配置消息的设备
指定端口是指定桥向本网段转发配置消息的端口。

对于S2,S1就是它的指定桥,AP1就是S2的指定端口。
对于LAN,如果S2负责向LAN转发配置消息,那么S2就是它的指定桥,BP2就是它的指定端口。
根桥的所有端口都是指定端口。
一旦RB,RP,DP选举成功,那么整个树形拓扑就算建立完毕,在拓扑稳定后,只有RP和DP转发流量,其他的端口都处于阻塞(Blocking)状态,他们只接收STP协议报文而不转发用户流量。

四个比较原则

STP的四个比较原则
RBID>RPC>发送设备BID>发送端口PID

字段内容 简要说明
根桥ID 有且仅有一个
根路径开销 发送配置BPDU的端口到根桥的距离,决定了到根桥的路径开销
发送设备BID 发送配置BPDU的设备的BID
发送端口PID 发出配置BPDU的端口的PID
  • 最小BID:用来选举根桥(min)
  • 最小根路径开销:用来在非根桥上选举根端口,根桥的所有接口到根桥的跟路径开销都是0
  • 最小发送者BID:用来在非根桥上选举根端口,当非根桥存在两个及以上的最小根路径开销相等的端口时,选择接收到的配置消息中发送者BID较小的那个端口。
  • 最小PID:用来在非根桥上选举根端口,当非根桥存在两个及以上的最小根路径开销相等且BID也相等的端口时,选择PID较小的那个端口。

五种端口状态

forwarding

端口既转发用户流量也处理BPDU报文。只有根端口或指定端口才能进入forwarding状态

learning

设备会根据收到的用户流量构建mac地址表,但是不会转发用户流量。是个过渡状态,增加learning状态防止临时环路。

listening

确定端口角色,,将选举出根桥、根端口和指定端口。也是一个过渡状态。

blocking

端口仅仅接收并处理BPDU,不转发用户流量。阻塞端口的最终状态。

disabled

端口不仅不处理bpdu报文,也不转发用户流量。端口状态为down.

HCIE-RS面试--STP选举原理,状态机和接口角色相关推荐

  1. MongoDB复制选举原理及复制集管理

    一.MongoDB复制集的选举原理 复制是基于操作日志oplog,相当于MySQL中的二进制日志,只记录发生改变的记录.复制是将主节点的oplog日志同步应用到其他从节点的过程. 复制集的节点是通过选 ...

  2. 面试大厂不看这两份Java面试核心知识点原理篇+框架篇,有个屁用?食屎啦泥?

    前言 面试在即,Java知识点很凌乱? 别急,有本套书在呢! 除了原理,还有框架! ★ 精细讲解JVM原理.Java基础.并发编程.数据结构和算法.网络与负载均衡 ★ 深入挖掘数据库与分布式事务.分布 ...

  3. VRRP浮动路由(浮动路由原理,了解HSRP路由选举原理,实验过程与总结)

    文章目录 前言 单一链路存在的问题 HSRP是思科的私有协议 HSRP (热备份路由选择协议)介绍 VRRP浮动路由原理 Master路由器选举原理 浮动路由原理 实验详解 实验目的 实验过程 主机设 ...

  4. Zookeeper选举原理——FastLeaderElection

    转载自  Zookeeper选举原理 作为一个分布式应用程序协调服务,在大型网站中,其本身也是集群部署的,安装zookeeper的时候最好是单数节点,因为要选举.Zookeeper的leader节点是 ...

  5. 信息与通信工程学科面试准备——通信原理

    面试准备-通信原理 1.模拟通信系统的性能指标 ①有效性:用所传信号的有效传输带宽来表征,越小越有效. ②可靠性:输出信噪比(仅考虑加性干扰):接收端输出的信号平均功率与噪声平均功率之比 2.数字通信 ...

  6. Zookeeper在Dubbo中的作用及Zk集群的选举原理

    强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan Zk在Dubbo中的作用 zk在dubbo中是服务注册与发现的注册中心,dubbo的调用过程是c ...

  7. MySQL索引的理解学习,面试不问索引原理就是事务原理

    目录 MySQL执行SQL的整体流程 引言, MySQL索引底层学习原因 磁盘介绍(理解磁盘IO) 索引底层数据结构B+树 B+树(聚集索引) B+树(辅助索引) 思考一下为何使用B+树结构, 不是B ...

  8. Redis集群选举原理与脑裂问题

    系列文章目录 第一节 Redis的安装 第二节 Redis的五种数据结构(String.Hash.List.Set.ZSet) 第三节 Redis的持久化方式 第四节 Redis主从架构 第五节 Re ...

  9. 机器学习运维(MLOps):原理、组件、角色和架构

    标题:Machine Learning Operations (MLOps): Overview, Definition, and Architecture 作者:Dominik Kreuzberge ...

  10. 南邮微型计算机实验,南邮 微机原理 微型计算机与接口技术 微机原理实验.doc...

    南邮 微机原理 微型计算机与接口技术 微机原理实验.doc (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分  ;FILEMENT:E ...

最新文章

  1. 多个前端项目放在一个git好还是_前端工作流
  2. 基于现代神经网络通用人工智能架构设计
  3. [云炬创业基础笔记]第五章创业机会评估测试5
  4. 指定端口传输_高速数字传输链路测试 - 高速数字电路仿真设计与测试技术发展趋势综述(二)...
  5. 前端学习(2963):element-ui介绍
  6. 设计素材画面太平淡?优秀案例网页教你如何用色彩丰富画
  7. VS出现error LNK2005,error C4430,error C2011
  8. 机房运维——技术文档
  9. Mathematica仿真竞争性Lotka-Volterra方程(3种群)
  10. cv2.imread()读出的矩阵shape
  11. CSS学习笔记 01、CSS3基础知识学习
  12. 查看是否是固态硬盘SSD
  13. Android网络编程入门解析
  14. TP、TN、FP、FN、Recall、Miss Rate、MCC、F1 Score 等指标计算
  15. 【年度总结系列 2019】2019 时不我与
  16. 金融级实人认证是什么?
  17. relative会脱离文档流吗_脱离文档流与脱离文本流
  18. 【word2vec】算法原理 公式推导
  19. can和could的用法_can与could用法归纳
  20. Python UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xbb in position 0: invalid start byte

热门文章

  1. 如何花式计算20的阶乘?
  2. 用PWA构建一个完全离线的网站
  3. 初始化游戏状态数据二
  4. 传世经典书丛-UNIX编程艺术
  5. .NET中GC的运行机制
  6. Android的jsoup方法,在Android中使用Jsoup
  7. java第七章jdbc课后简答题_Java进阶之JDBC面试题(7)
  8. c++ win32 获取串口高低电平_串口和USB的区别,几种常见的串口协议
  9. matlab liccode,车牌识别的matlab程序--(详细注释,并有使用注意点)
  10. 力扣-1464. 数组中两元素的最大乘积