生成树三种标准(802.1d、802.1w、802.1s)的基本工作原理很相似,我们先来讨论802.1d。以下所说的STP,均指802.1d。

既然叫“树”,那就要先确定“树根”。

我们把STP中的“树根”叫做“根桥”。因为交换机还没有诞生时,STP在较古老的链路层设备“网桥”之间运行。现在,端口数量较少的网桥已经逐渐淘汰了,不过“根桥”的叫法沿用了下来,我们理解为“根交换机”就好了。

根桥由网络中“桥ID”最小的交换机担任!

每台交换机在STP中,都通过“桥ID(BID)”来标识自己。我们知道,每台交换机都有MAC地址,而且MAC地址是唯一的,用MAC地址来标识交换机是个不错的主意。可是,MAC地址不可修改,我们就没办法“走后门”,所以,加个“优先级”,让我们可以想让谁当谁就能当根桥。

BID=优先级.MAC地址。

BID共有8个字节,优先级占2个字节,MAC地址占6个字节。不过,优先级部分中低12位用来标识VLAN信息,高4位才是真正优先级。

默认情况下,优先级高4位取值为二进制1000,VLAN信息在STP和RSTP中都为全零,在MSTP中表示MSTID,这个后面再讨论。

所以,优先级默认为十进制32768,且取值必须为4096的整数倍。

STP的协议报文叫BPDU(Bridge Protocol Data Unit,桥协议数据单元),主要包含以下内容:

Root Bridge ID:根桥ID;

Root Path Cost:根路径开销。指定桥的端口去往根桥沿途经过的链路开销之和。

Designate Bridge ID:指定桥ID,转发根桥BPDU的桥ID;

Designate Port ID:上游交换机给我发BPDU的端口ID;

Bridge Port ID:本交换机收到BPDU的端口ID。

STP需要做两件事情:选举根桥、确定端口角色。

首先我们讨论选举根桥。交换机通电启动后,还不知道网络中有没有别人,所以认为自己是根桥,并把这个消息通过BPDU通告出去。如图中,每台交换机也会收到其他交换机发来的BPDU,比较一下其中的BID,即可选举出根桥。

BID比较办法:先比较优先级,优先级值越小,优先级越高。如果优先级相同,则比较MAC地址大小,越小越优。

根桥选出后,其他交换机都可以叫指定桥。指定桥不再主动发出BPDU,只会转发根桥的BPDU。根桥每间隔Hello Time(默认2秒)时间周期性发出BPDU。

根桥选举完成后,我们接下来确定端口角色。

在STP中,端口也有标识,我们叫PID(Port ID)。

PID=优先级.端口索引号。

PID共占2个字节,其中,优先级与端口索引号各占1字节。但为了避免端口索引号不够用,把优先级中的低4位保留用于端口索引号,一般取值为0000。高4位优先级默认二进制取值为1000,所以端口优先级默认为128,且取值必须为16的整数倍(低4位不能用于优先级),原理和桥优先级类似。端口索引号是端口在交换机上的唯一编号。

在STP中,端口角色共有三种,分别为根端口RP(Root Port)、指定端口DP(Designated Port)、阻塞端口AP(Alternate Port)。

什么是根端口?指定桥上所有端口中去往根桥最优的端口叫根端口。这话有两个意思,一是根桥上没有根端口,二是除根桥外,每台指定桥上的根端口有且仅有一个。

那么,指定桥上如何选举根端口呢?

由于交换机上接入网络的端口数量可能较多,谁是根端口,大家就要拉出来比比了。

首先比一比谁去根桥更近,也就是谁的RPC(Root Path Cost)最小。

STP中每条物理链路都有开销,开销值和链路带宽、聚合有关,值越小越优。


如图中,SWA为根桥,那么SWA上没有根端口。指定桥SWB端口E0/1的RPC为为10,端口E0/2的RPC为30+20=50(经过SWC),所以E0/1为RP。同理,SWC上的RP为端口E0/1。

可是,有时候开销一样:

如图中,SWB可以选出RP为E0/1。可是我们发现SWC两个端口的RPC都是10。

这种情况,当根路径开销比不出来时,我们就比较指定桥ID,也就是给你发BPDU的桥ID谁更优。

给SWC端口E0/1发送BPDU的是SWA,BID为0.MAC_A;

给SWC端口E0/2转发BPDU的是SWB,BID为4096.MAC_B;

显然SWA的BID更优,所以SWC的E0/1为根端口。

有没有指定桥ID也相同的情况呢?

如图中,两台交换机通过两条链路相连接,链路开销相同。SWA为根桥,SWB的端口E0/1和E0/2谁是根端口呢?

RPC相同,指定桥ID都是SWA,也相同!

这时,我们比较Designate Port ID,指定端口ID。这里的指定端口ID,是指给我发BPDU的交换机是用哪个端口发的!

很显然,SWA用E0/1端口给SWB的E0/2端口发BPDU,SWA用E0/2端口给SWB的E0/1端口发BPDU。SWA上的两个端口中,E0/1的PID较优(优先级相同,编号小的优)。

SWB一拍大腿,E0/2是根端口!

有没有可能指定端口ID也相同呢?

如上图,两台交换机间接了一台Hub,或是一台没有运行STP的交换机,并透传BPDU。

假设各链路开销均相同,那么,SWB的两个端口比RPC、指定桥ID以及指定端口ID,都无法比出高下,胜负难分。

这时,还有一个绝招,比Bridge Port ID,简单点说,就是比两个端口的PID谁更优。

先比PID中的优先级,越小越优,如果一样,端口编号越小越优。

清楚了,E0/1是根端口!

选举根端口就这四个办法,实际上,通常用前两个办法就搞定了。

每台交换机的根端口选出来后,接下来要选指定端口了。

注意,这里说的指定端口是一种端口的角色,跟刚才说的用来选根端口的指定端口不是一个意思。

参考连接:https://zhuanlan.zhihu.com/p/139844708

STP怎么选根桥和根端口相关推荐

  1. HCIA/HCIP使用eNSP模拟STP实验与STP根桥、根端口、指定端口选举方法

    使用eNSP模拟STP实验 实验配套拓扑:STP Configuration.topo 目录 使用eNSP模拟STP实验 拓扑预览 一.修改默认模式 二.确定根桥与各端口 三.修改SW1为主根桥 SW ...

  2. STP 根桥、根port、指定port是怎样选举的

    学习CCNA过程中,对交换机的根桥.跟port以及指定port选举有些迷糊.也度娘了一番,总认为一部分人解释的不够全面精细.通过细致研究终于有了自己的理解,分享给大家,假设纰漏,欢迎指正. STP收敛 ...

  3. 【STP生成树】(桥ID、根桥、cost、RPC、接口ID、BPDU报文格式、端口选举举例)-20211216.20211217

    目录 一.生成树STP技术背景 1.前言 2.二层交换机的冗余性与环路 二.生成树协议 1.生成树协议​​ 2.生成树能动态感知网络拓扑的变化,调整阻塞或放行端口 生成树: 通过交互报文感知网络拓扑的 ...

  4. 以太网 STP临时环路的产生、STP BPDU的转发过程、根桥故障案例分析。

    2.10.2 以太网 传统STP生成树(STP临时环路.STP BPDU的转发过程.根桥故障案例) 传统STP生成树 2.10.2 以太网 传统STP生成树(STP临时环路.STP BPDU的转发过程 ...

  5. 交换机配置——STP实验(指定特定交换机为根桥)

    一.实验目的:将三层交换机Switch3设置为根桥交换机 二.拓扑图如下: 三.具体步骤 先说明一下,四个交换机形成环路,为解决环路问题交换机会自动进行选举,选举出一个根源,根桥交换机会决定一个最佳路 ...

  6. 生成树协议,stp使用哪两个参数来选举根网桥?

    生成树协议STP使用哪两个参数来选举根网桥 ____________. A.网桥优先级和IP地址 B.链路速率和IP地址 C.链路速率和MAC地址 D.网桥优先级和MAC地址 正确答案 D 答案解析 ...

  7. Java黑皮书课后题第5章:**5.35(加法)编写程序,计算下面的和:1/(1+根2) + 1/(根2+根3) + 1/(根3+根4)+……1/(根624+根625)

    @[TOC](5.35(加法)编写程序,计算下面的和:1/(1+根2) + 1/(根2+根3) + 1/(根3+根4)+--1/(根624+根625)) 题目 题目概述 5.35(加法)编写程序,计算 ...

  8. cms 移动根节点到根节点中的子节点,根节点消失解决办法

    cms 移动根节点到根节点中的子节点,根节点消失解决办法 cms使用对应有个NetCMS数据库,找到其中NT_News_Class表,这个表就是保存栏目名称的表 select * from dbo.N ...

  9. 经典的二叉树的先根、中根和后根遍历序列题

    目录 先根遍历:根左右 中根遍历:左根右 后根遍历:左右根 下面做俩题就懂了 ​ 先根遍历:根左右 中根遍历:左根右 后根遍历:左右根 下面做俩题就懂了 题一: 先根遍历:ABCDEFGH 中根遍历: ...

最新文章

  1. Android 使用 ellipsize 实现文字横向移动效果(跑马灯效果)
  2. Spring学习笔记:1(初步认识概念)
  3. linux中的五大查找命令---whereis,find,locate,which,type
  4. getchar()和EOF
  5. 软件设计师 - UML图
  6. Java-静态方法、非静态方法
  7. Linux Vim基本操作(文件的打开和编辑)完全攻略(有图有真相)
  8. Java-20180419
  9. 图论--最短路径--观光旅游
  10. 在web项目中使用MarkDown组件
  11. wps设置页码,从某一页重新开始编号
  12. 数学建模之蒙特卡洛算法
  13. 案例分享 | 腾讯互娱基于 CPU 环境的分布式 YOLOv3 实现
  14. 使用Scanner收集你的身高体重,并计算出你的BMI值是多少 BMI的计算公式是 体重(kg) / (身高*身高)
  15. 音乐文件自动整理工具
  16. MPI并行程序开发设计----------------------------------并行编程模型和算法等介绍
  17. 基于华为云设计的智能家居控制系统(STM32+ESP8266)
  18. 为什么函数f(x)=x²不是满射
  19. 微立体岗位竞聘PPT模板
  20. TMC2225电机驱动简介

热门文章

  1. 1822 - Failed to add the foreign key constraint. Missing index for constraint ‘fk_tno_course‘ in the
  2. QRJDC搭建实现QQ扫码登录对接青龙对接傻妞
  3. 药品名智能分类模型(化药_中成药_中药材)
  4. ExtJs之Text文本框Text和文本域TextArea
  5. 【腾讯Bugly干货分享】聊聊苹果的Bug - iOS 10 nano_free Crash
  6. 利用powerful number求积性函数前缀和
  7. C++类和对象的使用之对象指针
  8. 企业办公oa系统、医药OA办公后台管理、会议管理、用户管理、物料管理、活动管理、日常拜访、Axure医药内部管理平台、web端后台管理系统原型、医药OA系统、权限管理、Axure原型、rp原型
  9. [ app.json 文件内容错误] app.json: window.navigationBarTextStyle 字段需为 black,white【已解决】
  10. 新手第二课:atof()函数的头文件