STP-6-快速生成树协议-新端口角色,状态和类型以及新链路类型
2024-08-28 01:19:27
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},基于端口配置链路类型。
最新文章
- (转)Vsdocman7.2 注册版
- 【BZOJ】【2844】albus就是要第一个出场
- python 读写INI配置文件
- MVC 避免黄页
- Java宝典
- C#名单:一个简单的实现
- Hibernate的查询,二级缓存,连接池
- postman安装使用教程---图文讲解
- ThinkPHP中处理Layout模板的问题
- pytorch识别CIFAR10:训练ResNet-34(微调网络,准确率提升到85%)
- TextBox使用技巧--转载
- php中pcntl_fork详解
- WSDL文件
- Python经典算法片段
- asp在线压缩和解压缩文件(文件夹)
- C#防止内存泄露的方法
- Failed to execute request because the App-Domain could not be created. Error: 0x8007000e 存储空间不足,无法完成此操作。
- gradle/maven/eclipse工程相互转化
- python标准库介绍——6 math模块详解
- beecloud resrful api test(nodejs)
热门文章
- myeclipse与eclipse的web项目部署区别
- C#调用带返回值的存储过程
- iOS多线程各种安全锁介绍 - 线程同步
- linux命令-mount挂载umount卸载
- java判断姓是否合格 百家姓
- [Python Study Notes]一个简单的区块链结构(python 2.7)
- day17 10.jdbc的crud操作
- 算法Sedgewick第四版-第1章基础-1.4 Analysis of Algorithms-002如何改进算法
- cximage使用
- javascript字符串 转 驼峰字符