1.选择根交换机
2.确定根端口
3.确定指定端口
 
 

1.选择根交换机
 
stp中只有一台交换机能成为根(Root),每台交换机按自己的STP逻辑,先发一个hello称自己为根,如果收到了比自己更优的hello,它会停止产生hello,以停止声明自己是根。然后交换机开始转发更优的hello。逐渐地,除了拥有最低网桥ID的交换机外,所有交换机停止生成自己的hello,最终这台交换机赢得选举,成为根交换机。
 
原802.1D网桥ID中有两个字段:
2字节的优先级,6字节的MAC
原8021.D网桥ID的定义记录在802.1t修正案中,后整合到802.1D-2004中,下为原始格式与新格式
 
 

格式的改变主要是因为出现了PVST+和MST支持的多生成树。
如果使用旧格式,使用每vlan生成树,vlan让物理交换机像多台逻辑交换机一样操作,则网桥ID都是一样的(逻辑为多层拓扑),违背802.1D设计要求:每个交换机使用不同的网桥ID。所以就为每个vlan使用不同的mac地址,但这同时也消耗了每台交换机中的大量预留MAC地址
 
使用新格式后,结合vlan id,就不需要为每台交换机都预留那么多mac了。通过全局命令spanning-tree extend system-id,可以查看交换机上使用的系统ID拓展。
 
2.确定根端口
 
在选择出根交换机后,其他交换机需要确定他们各自的根端口(RP),过程如下
(1).根交换机每隔hello间隔(默认2秒)发送一个hello,hello中的RBID和SBID为根ID,RPC为0,SPID为出端口标识符
(2).每台非根交换机在每个端口上收到一个bpdu后,就会将端口的开销值加到这个bpdu的RPC值中,并得到结果bpdu(Resulting BPDU)。然后收到最优结果bpdu的端口被选举为根端口。
(3).非根交换机在根端口上收到hello,在更新完其中的RPC,SBID,SPID和消息老化字段之后,会通过其他指定端口转发这个hello,非根交换机在其他端口上收到的hello,只会被处理,但不转发。
(4)交换机不会从根端口和阻塞端口转发出hello。
 
在最新的Catalyst交换机上使用PVST或快速PVST时,使用的开销值对应于802.1D-1998版本标准;使用MSTP时,对应于802.1D-2004版本。对于PVST和快速PVST,工程师可以使用全局配置命令spanning-tree pathcost method long启用802.1D-2004开销。默认配置为spanning-tree pathcost method short,即使用旧版本的开销。
 
以下是默认端口开销
 

3.确定指定端口
 
在收敛完成的STP拓扑中,只有一台交换机负责转发Hello到每个LAN网段。转发Hello到LAN网段的交换机称为该网段的指定交换机,指定交换机上用来转发Hello到网段的端口称为指定端口(DP)。交换机上所有既不是根端口也不是指定端口的其他端口将被移至阻塞状态。
 
选举规则如下:
1.去往根的路径开销最低的交换机;
2.网桥ID最低的邻居交换机;
3.网桥ID最低的邻居上端口ID最低的端口。

STP-2-三个选择的更多相关文章

  1. Java语言程序设计(基础篇) 第三章 选择

    第三章 选择 3.8 计算身体质量指数 package com.chapter3; import java.util.Scanner; public class ComputeAndInterpret ...

  2. Java语法基础(三)----选择结构的if语句、switch语句

    [前言] 流程控制语句: 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的.也就是说程序的流程对运行结果有直接的影响.所以,我们必须清楚每条语句的执行流程.而且,很多时候我们要通过 ...

  3. Java 第三章 选择结构

    第三章   选择结构 if基本语法: if(条件){// 表达式 // 代码块 } eg: int a = 10; if(a > 1){ System.out.println("内容& ...

  4. 排序算法总结(三)选择排序【Select Sort】

    一.原理 选择排序的原理非常简单,就是选出最小(大)的数放在第一位,在剩下的数中,选出最小(大)的数,放在第二位......重复上述步骤,直到最后一个数. 二.过程 原始数据 第一次排序,选出最小的数 ...

  5. Jquery学习(三)选择

    1.Jquery最重要的是选择. 学习要点:        1.简单选择器        2.进阶选择器        3.高级选择器 ①简单选择器. 最简单的也就是最经常使用的,最经常使用的一般也是 ...

  6. Python基础三(选择,循环)

    序 首先我们知道程序的执行有三种结构:顺序.选择.循环三种结构,而为了方便我们书写和多次利用我们就需要把一段代码封装器来,这就是方法.今天我就说的是程序的基本结构的格式和方法. 注:所有的程序都可以通 ...

  7. Java基础(三)选择和循环结构

    一.选择结构,条件判断 1.if 语句 一个 if 语句包含一个布尔表达式和一条或多条语句.如果布尔表达式的值为 true,则执行 if 语句中的代码块,否则执行 if 语句块后面的代码. impor ...

  8. DL基础补全计划(三)---模型选择、欠拟合、过拟合

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  9. Java 第三章 选择结构1

    选择结构(一) 会使用基本的 if 选择结构 掌握逻辑运算符,掌握多重 if 选择结构 , 掌握嵌套 if 选择 结构 为什么需要 if 选择结构 例如: 如果张浩的 java 考试成绩大于 98分, ...

  10. 使用java理解程序逻辑 第三章 选择结构一

    if 选择结构: if(条件){       代码块  //条件成立后要执行的代码.可以是一条语句,也可以是一组语句 } 可以处理单一或组合条件的情况. if-else 选择结构: if(条件){   ...

随机推荐

  1. AndroidPageObjectTest_TimeOutManagement.java

    以下代码使用ApiDemos-debug.apk进行测试 //这个脚本用于演示PageFactory的功能:设置timeout时间. package com.saucelabs.appium; imp ...

  2. 常用git命令和工具

    0. ln -s src_dir  //一个参数即可在当前目录下生成一个软链接   1.git command --clone/push a branch      git clone <url ...

  3. Python对象拷贝——深拷贝与浅拷贝

    对象赋值 浅拷贝 深拷贝 1. 对象赋值 对象的赋值实际上是对对象的引用.也就是说当把一个对象赋值给另一个对象时,只是拷贝了引用.如: >>> t1 = tuple('furzoom ...

  4. 如何把wecenter的推荐的问题模块单独调取出来?

    查阅文档: http://wenda.wecenter.com/question/1893 http://www.zhidiu.com/article/1012 http://wenda.wecent ...

  5. cookie(点心的意思)服务器给客户端的点心

    他是用户访问web服务器时,服务器在用户硬盘上存放的信息,好像是服务器给客户端的“点心”.比如:是否记录用户名密码.其中,A服务器不允许访问B服务器存在客户端的cookie 一个cookie包含一对k ...

  6. fiddler_test

    fiddler学习第二天 啦啦啦 拉拉呀

  7. 一个表格中选定的tr,显示在另一个表格中

    一.先获得表格A每点中行的下标index(); 二.申明一个数组,把下表全部push到数组中: 三.在用for循环遍历数组,同时申明html代码片段: 四.用html+=表格A tr:eq(arr[i ...

  8. 3.清除dns缓存的意义及命令?

    1.dos命令:ipconfig /flushdns 2.意义: 简单地说就是 www.baidu.com ,www.sina.com 这些就是DNS域名.但是计算机不能直接通过DNS域名访问服务器( ...

  9. 关于layer.open() 弹框的使用

    在用 layer.open() 追加渲染HTML的时候,完全看不到效果,皆因layui框架需要在最后用 form.render() 方法来渲染表单才可以看到效果,写法如下: <script> ...

  10. staruml详解

    一.用例图   1.说明        1.1  用例图说明的事谁要使用系统以及他们使用该系统可以做些什么?  <业务需求>        1.2  解析一个用例图,我们可以发现它包含4个 ...