IEEE 802.1w快速生成树协议(RSTP)增强了802.1D标准,在设计合理的网络中收敛时间远少于1秒。
 
端口状态从5个减少到3个

丢弃状态是在端口刚启用时的默认状态,边界端口除外,它的默认状态是转发状态。丢弃端口类似于传统STP中的阻塞状态,也是会持续处理收到的BPDU的,根据角色而定还会发送BPDU。
RSTP根据端口在拓扑中的目的或角色来定义它的状态,其中定义了4个独立的端口角色:
根端口(保持原意);
指定端口(保持原意);
替换端口(用来替换交换机自己根端口的端口);(可以立即接替)
备用端口(用来替换交换机自己在共享网段中指定端口的端口)。(这个要等相应计时器超时后接替)
 
如果交换机上的两个物理端口连接到相同的共享LAN,在指定端口失效后,所有备用端口在连续缺失3个BPDU后都变为指定丢弃端口,只有一个一直保持指定丢弃状态,其他次优端口在收到新指定端口发出的BPDU后变回备份丢弃状态。由于连接到共享链路的端口并不发送提议(Proposal),因此从备用端口直接变为指定端口的做法是不安全的。
端口在刚启用时,默认角色是指定端口。
 
最后,在RSTP中,端口有类型:端口可以为边界(Edge)端口或非边界(Non-Edge)端口。由于Cisco的PortFast特性,这个属性已被业界熟知。边界端口在启用之后立刻会变为指定转发(DesignatedForwarding)端口。它仍发送BPDU,但不应该收到任何BPDU。如果边界端口上收到了一个BPDU,这个边界端口将变回非边界类型的端口,并开始执行普通RSTP端口的操作。配置中并不会移除什么命令;只有端口运行时的操作状态将会改变。这个端口在失效并再次启动后,会再次成为边界端口;甚至在它断开连接/重新连接,或者关闭并重新开启后,都会再次成为边界端口。没有一种可靠的方式可以自动检测一个端口到底是边界,还是非边界端口。CiscoCatalyst交换机上的默认端口类型是非边界端口。
 
对于链路,RSTP能够识别以下两种链路类型。
点到点链路:将RSTP交换机连接到最多一个邻居RSTP交换机的链路。
共享链路:将RSTP交换机连接到两个或多个邻居交换机的链路。
从RSTP的角度看来,集线器和非STP交换机会创建出一个共享的通信环境,在没有这类设备的最新LAN设计中,所有链路的类型都是点到点链路。多数RSTP对于响应速度的改进只用于点到点链路。在共享链路上,RSTP退回到类似于STP的由计时器驱动的慢操作。并没有一种可靠的方式能够检测链路到底是点到点的,还是共享的。然而,Catalyst交换机在这方面还是比较智能的:如果一个端口与其直连的邻居协商使用半双工操作的话,交换机会认为这个邻居是集线器(集线器不支持全双工),并且认为链路类型是共享的。如果一个端口与直连邻居协商使用全双工操作,交换机会认为这个邻居是运行RSTP的交换机,并且认为链路类型是点到点的。显然,这个判断是根据猜测作出的,因此这个逻辑也可能出现失效的情况(比如在两交换机的点到点链路上,因为技术难题或链路的独特性而运行半双工,或者三台或更多台RSTP交换机连接在一台不运行STP且不受管理的交换机上)。在双工模式和链路类型之间并没有一到一的对应关系。以防猜不中正确的结果,工程师可以使用命令spanning-tree link-type {point-to-point|shared},基于端口配置链路类型。
 
 

最新文章

  1. (转)Vsdocman7.2 注册版
  2. 【BZOJ】【2844】albus就是要第一个出场
  3. python 读写INI配置文件
  4. MVC 避免黄页
  5. Java宝典
  6. C#名单:一个简单的实现
  7. Hibernate的查询,二级缓存,连接池
  8. postman安装使用教程---图文讲解
  9. ThinkPHP中处理Layout模板的问题
  10. pytorch识别CIFAR10:训练ResNet-34(微调网络,准确率提升到85%)
  11. TextBox使用技巧--转载
  12. php中pcntl_fork详解
  13. WSDL文件
  14. Python经典算法片段
  15. asp在线压缩和解压缩文件(文件夹)
  16. C#防止内存泄露的方法
  17. Failed to execute request because the App-Domain could not be created. Error: 0x8007000e 存储空间不足,无法完成此操作。
  18. gradle/maven/eclipse工程相互转化
  19. python标准库介绍——6 math模块详解
  20. beecloud resrful api test(nodejs)

热门文章

  1. myeclipse与eclipse的web项目部署区别
  2. C#调用带返回值的存储过程
  3. iOS多线程各种安全锁介绍 - 线程同步
  4. linux命令-mount挂载umount卸载
  5. java判断姓是否合格 百家姓
  6. [Python Study Notes]一个简单的区块链结构(python 2.7)
  7. day17 10.jdbc的crud操作
  8. 算法Sedgewick第四版-第1章基础-1.4 Analysis of Algorithms-002如何改进算法
  9. cximage使用
  10. javascript字符串 转 驼峰字符