连接中断原因也可能是增加了新的链路,导致其中一台交换机重新选举根端口,最终认为新链路所连端口是根端口,RSTP在点到点链路上使用提议/同意(Proposal/Agreement)过程,让类似这种链路迅速开始工作,并且不会造成临时的交换环路,也不会造成明显的通信中断。
新链路端口选为根端口,其他端口为指定端口。邻居还没来得及被告知这种变更,于是两边都是指定端口,造成环路。要避免这种环路可以在将新的根端口置为转发状态之前,把所有非边界指定端口置为丢弃状态。这可以保证无环但也会造成明显的通信中断。需要等待一定时间。
 
提议/ 同意( Proposal/ Agreement)。
提议表示一个端口想要成为指定转发端口的意愿,而同意表示允许立即执行。在两台交换机之间增加了新的点到点链路后,两端的端口一开始都是指定丢弃状态,这是非边界端口的默认角色和状态。
任何处于丢弃或学习状态的指定端口需要发送设置了提议位的BPDU。因此两台交换机都会尝试交换设置了提议位的BPDU(或简称为提议),假设它们都有权成为指定端口。
然而,如果其中一个接收到提议的端口发现这个提议构成了这台交换机收到的最优结果BPDU,这个端口的角色就会从指定端口变为根端口(状态仍保持为丢弃状态)。交换机上的其他端口也会随之更新。
进一步说,交换机如果在根端口接收到了提议,它会立刻把所有非边界指定端口设置为丢弃状态。这个操作称为同步(Sync)。处于同步状态的交换机被从网络中隔离,避免任何交换环路穿其而过:它的根端口仍处于丢弃状态(即使已处于转发状态,邻居的指定端口也仍处于丢弃或学习状态),它的指定端口被有意设置为了丢弃状态。现在可以安全地将新根端口移至转发状态,并通知上行交换机:可以将指定端口从转发或学习状态变更为转发状态了。这是在交换机在执行同步之后,通过其根端口发送设置了同意位BPDU(或简称为同意)实现的。上行交换机在指定丢弃端口或指定学习端口上收到协议BPDU时,会立刻把端口变为转发状态,完成两台交换机之间的提议/同意交换。
因为所有的指定转发端口和指定学习端口都会发送提议,提议/同意交换过程其实是从“上层”交换机移至“下层”(根交换机是生成树的“顶”),造成传递的效果,

在交换网络中造成运行中断的原因可以是直接链路故障(交换机失去了根端口)、间接链路故障(邻居失去了根端口)、增加新的根链路,或变更了根交换机。RSTP对于每种事件都有响应机制:针对直接链路故障,把最优的替换端口变为新的根端口;针对间接链路故障,允许接受来自指定交换机的次优BPDU;针对增加新的根链路,使用提议/同意机制进行应对;针对根交换机的更替,由以上机制组合处理。
在提议/同意的交换过程中,所有非边界指定端口都会被移至丢弃状态(也就是同步操作)。如果工程师没有使用接口命令spanning-tree portfast,或全局命令spanning-tree portfast default(都只对Access端口有效),将面向终端主机的端口明确配置为边界端口,它们将在同步过程的中被设置为丢弃状态。因为终端主机不能发送RSTP协议,因此这些端口会在两个转发延迟间隔之后,再次变为转发状态,终端主机将经历明显的连接性中断。在RSTP中,将面向终端主机的端口配置为边界端口是至关重要的;否则网络的性能可能比802.1D STP还差。
 

STP-8-RSTP中的提议/同意过程的更多相关文章

  1. STP详解-STP、RSTP、MSTP

    STP详解 01 冗余链路中存在的问题 如图所示LSW1和LSW2之间有两条线路相连,它们之间任何一条链路出现故障另外一条线路可以马上顶替出现故障的那条链路,这样可以很好的解决单链路故障引起的网络中断 ...

  2. JVM中对象的创建过程

    JVM中对象的创建过程如以下流程图中所示: 对其主要步骤进行详细阐述: 为新生对象分配内存: 内存的分配方式: 指针碰撞:假设Java堆中内存是绝对规整的,所有用过的内存放在一边,空闲的内存在另一边, ...

  3. Android中View的绘制过程 onMeasure方法简述 附有自定义View例子

    Android中View的绘制过程 onMeasure方法简述 附有自定义View例子 Android中View的绘制过程 当Activity获得焦点时,它将被要求绘制自己的布局,Android fr ...

  4. Android系统在新进程中启动自定义服务过程(startService)的原理分析

    在编写Android应用程序时,我们一般将一些计算型的逻辑放在一个独立的进程来处理,这样主进程仍然可以流畅地响应界面事件,提高用户体验.Android系统为我们提供了一个Service类,我们可以实现 ...

  5. 【转】Android中View的绘制过程 onMeasure方法简述 附有自定义View例子

    Android中View的绘制过程 当Activity获得焦点时,它将被要求绘制自己的布局,Android framework将会处理绘制过程,Activity只需提供它的布局的根节点. 绘制过程从布 ...

  6. Android Multimedia框架总结(二十二)MediaCodec中C++中创建到start过程及状态变换

    上一章介绍MediaCodec中创建到start过程(到jni部分),从今天开始,将深入源码中看看其c++过程,看下Agenda如下: mediacodec.h CreateByType initMe ...

  7. JVM中对象的回收过程

      当我们的程序开启运行之后就,就会在我们的java堆中不断的产生新的对象,而这是需要占用我们的存储空间的,因为创建一个新的对象需要分配对应的内存空间,显然我的内存空间是固定有限的,所以我们需要对没有 ...

  8. 有谁知道Delphi中"窗口"的创建过程?

      求助:有谁知道Delphi中窗口的创建过程,此“窗口”不仅仅指 TForm 类型, 还包括一般的窗口控件,如TButton,TEdit等等,希望有能够十分详细的运作 过程,比如说CreatPara ...

  9. oracle中使用函数控制过程是否执行(结合job使用)

    oracle中使用函数控制过程是否执行(结合job使用时候,循环时间不好写的时候,可以此种方法比较方便) CREATE OR REPLACE FUNCTION wsbs_pk_date_validat ...

随机推荐

  1. bootstrap.min.css.map

    问题:引入bootstrap..min.css的时候出现了URL:bootstrap.min.css.map 404的错误. 解决方法:将bootstrap.min.css里的最后一行/*# sour ...

  2. smokeping 报警配置

    摘自: http://blog.csdn.net/achejq/article/details/51556494 smokeping 默认用sendmail 发邮件告警,也可以直接调用外部程序进行报警 ...

  3. u3d 多线程 网络

    开启一个线程做网络连接,和接收数据, 用event进行广播 using UnityEngine; using System; using System.Threading; using System. ...

  4. [算法]从Trie树(字典树)谈到后缀树

    我是好文章的搬运工,原文来自博客园,博主July_,地址:http://www.cnblogs.com/v-July-v/archive/2011/10/22/2316412.html 从Trie树( ...

  5. POJ2657Comfort(扩展欧几里得基础)

    A game-board consists of N fields placed around a circle. Fields are successively numbered from1 to ...

  6. manacher(无讲解)

    BZOJ3325: [Scoi2013]密码 https://lydsy.com/JudgeOnline/problem.php?id=3325 分析: 根据前i个字符和一些不等和相等条件就可以确定每 ...

  7. poj1475 Pushing Boxes[双重BFS(毒瘤搜索题)]

    地址. 很重要的搜索题.★★★ 吐槽:算是写过的一道码量比较大的搜索题了,细节多,还比较毒瘤.虽然是一遍AC的,其实我提前偷了大数据,但是思路还是想了好长时间,照理说想了半小时出不来,我就会翻题解,但 ...

  8. 【Python】Python figure显示的两种方式

    1. 两种方式: 终端输出图像新窗口输出图像 2. 终端输出命令: %matplotlib inline 新窗口输出命令: %matplotlib qt5 注意此两个语句是命令行输入,若在spyder ...

  9. poj2279排队——杨氏矩阵与钩子公式(DP爆内存)

    题目:http://poj.org/problem?id=2279 书上的DP做法会爆内存,尝试写了一个,过了样例. 转载: 代码如下: #include<iostream> #inclu ...

  10. python2和python3中的range区别

    python2中的range返回的是一个列表 python3中的range返回的是一个迭代值 for i in range(1,10)在python2和python3中都可以使用,但是要生成1-10的 ...