前言
-
STP协议虽然能够解决环路问题,但是由于网络拓扑收敛较慢,影响了用户通信质量,而且如果网络中的拓扑结构频繁变化,网络也会随之频繁失去连通性,从而导致用户通信频繁中断,这也是很多用户无法忍受的。
-
由于STP的不足,IEEE于2001年发布的802.1w标准定义了RSTP。RSTP 在STP基础上进行了诸多改进优化,使得协议更加清晰、规范,同时也实现了二层网络拓扑的快速收敛。
STP的问题点
问题一:设备从初始状态到完全收敛至少需要30s
问题二:直连端口故障,将另外端口转换为RP端口,需要至少30s
问题三:非直连端口故障
问题四:终端连接上来,需要至少30s
问题五:拓扑变更
STP的不足之处
不足之处--端口角色
不足之处--端口状态
RSTP特点
-
RSTP具备STP的所有功能,可以兼容STP运行
-
RSTP和STP有所不同
-
减少了端口状态
-
增加了端口角色
-
BPDU格式及发送方式不同
-
当交换网络拓扑结构发生变化时,RSTP可以更快地恢复网络的连通性
-
RSTP端口状态
-
RSTP将端口状态缩减为三个
-
Discarding
-
Learning
-
Forwarding
-
-
RSTP将端口角色增加到四个
-
根端口
-
指定端口
-
Alternate端口(根端口的备份)
-
Backup端口(指定端口的备份)
-
端口角色
| 描述 |
Root Port
根端口
|
所在交换机上离跟交换机最近的端口,处于转发状态
|
Designated Port
指定端口
|
转发所连接的网段发往根交换机方向的数据
从根交换机方向发往所连接的网段的数据,处于转发状态
|
Alternate Port
预备端口
|
根端口的备份,不处于转发状态
|
Backup Port
备份端口
|
指定端口的备份,不处于转发状态
|
RSTP BPDU格式
-
和STP相比不同之处有
-
Protocol Version ID 变为2
-
BPDU Type变为2
-
使用了Flags字段的全部8位
-
-
在RSTP BPDU的Flags字段中,除TC以及TCA标志位,还包含P/A标志位、端口状态标志位以及端口角色标志位
针对不同问题的解决办法
前三个问题不用配置任何命令,改用RSTP即自动启用
针对问题一:P/A机制
-
P/A机制基本原理(如下图)
-
首先选出根桥A后,根桥发送一个P置位的BPDU包;(协商)
-
-
B收到A发送的P置位的BPDU包后,会回一个A置位的BPDU包(确认),同时进入转发状态;
-
-
A收到B发来的A置位的BPDU包,端口进入Forwarding状态。
-
-
-
特点:由于有来回确认机制和同步变量机制,就无需依靠计时器来保障无环。
-
有了P/A机制后,不用再等15s的计时器,收敛更快。
-
针对问题二:根端口快速切换根桥
针对问题三:次优BPDU处理机制
-
非直连端口故障问题(如图)
-
SWB的DP端口向SWC发送一个P置位的BPDU包;
-
SWC由于知道原最优的BPDU包是SWA,且SWA并没有DOWN,所以会给SWB回一个P置位的BPDU包,且将自身的AP端口角色转换为DP端口;
-
SWB收到SWC的P置位的BPDU数据包,回给SWC一个A置位的BPDU包用于确认。
针对问题四:边缘端口的引入
在RSTP中,交换机
连接终端的链路可以立即进入转发状态(因为是连接终端,所以没有必要去进行比较RP、DP等)。
当交换机连接终端设备的接口设置为边缘端口后,如果该端口收到BPDU后,就丧失边缘端口属性,成为普通STP端口,并重新进行生成树计算。
边缘端口收到BPDU包的可能性:
-
该交换机下面连接的是另外一台交换机,并不是真正的终端设备
-
该终端设备开启模拟器,桥接真实网卡,对交换机进行攻击(或者其他攻击)
配置命令:
int g0/0/0
stp edged-port enable
RSTP拓扑改变处理机制
-
拓扑改变触发条件
-
只有非边缘端口转变为Forwarding状态时,产生拓扑改变
-
-
拓扑改变处理
-
在两倍Hello时间内(4s)向所有其他指定端口和根端口发送TC置位BPDU报文
-
清除除接收到TC报文的端口之外的所有指定端口和根端口学习的MAC地址
-
下图解释:
-
SWB的E1端口原为根端口,发生故障后,E2端口变为根端口,并向SWC发送TC包
-
SWC收到SWB的TC包后,会将原E1端口的所有MAC地址清空,且从E1端口发送TC包到SWA设备
-
SWA设备收到SWC发的TC包后,也会清空所有E1端口的MAC地址信息
判断拓扑是否变化的标准:一个非边缘端口迁移到Forwarding状态
RSTP配置
命令 |
配置
|
stp mode rstp
|
配置RSTP模式
|
display stp
|
查看RSTP配置信息和参数
|
stp edged-port enable |
配置某个端口为边缘端口
|
stp edged-port default
|
配置所有端口为边缘端口
|
stp edged-port disable
|
禁用边缘端口
|