第十三章 生成树协议
一、生成树背景
1.为什么产生STP协议?
产生STP的原因就是用来解决局域网中的环路或者说大点叫广播风暴。下面用图来解释:
首先假设PCA发了一个数据帧,他的流量第一次走向是这样的。
但是由于下面两点原因会造成第二次流量走向:
原因一:网桥或者说二层交换机对于其他交换机相当于是透明的,即SWA对SWB SWC来说,它不存在,SWA相当于一根线。
原因二:交换机的MAC地址表项只能一个端口对应学到一个或者多个MAC,不能一个MAC学到几个端口。端口就有点类似咱们高中学函数的时候,函数的定义是只能一对一或者一对多,但是不能多对一。不然就不叫函数叫方程了。
流量第二次走向,此时,对于SWB SWC来说,这个流量(亦即新帧数据,为什么是新的?因为SWBSWC的E1/0/2端口都没有学到)是新的流量所以更改了自己的MAC地址表项,然后再转发新的流量(新数据帧)到上面那根线路上去。记住,这里是SWBSWC第一次转发新流量(新帧)到上面线路去。
第三次流量走向是基于第一次的,回到第一张图,从SWB下来的流量,跑向两边,当它发现SWA的地址表项是基于E1/0/1学的,重点来了:
因为SWB对于SWASWC都是透明的,这个是第一次下来的流量,它只记录了自己的端口是基于SWB的E1/0/1口。其余不管的。那跑向两边的流量,对于SWC来说,它端口已经学到了PCA的MAC地址为2口,所以它放这个流量过去。而对于SWA来说,因为它这个流量要从自己的E1/0/2口出去但是没学到,而MAC地址是唯一的。(学习前提条件第四点)所以把MAC地址更新成如图三,这里又会产生新的帧数据,即新流量出来。就是如箭头旁边的数字3.
新流量3走向SWBSWC发现端口又不一致的时候,又变成了新的帧数据4从SWBSWC出来,并更新MAC地址表项。按上述分析过程(即发现流量入口和学到端口不一致时,更新MAC地址表项产生新的帧数据(流量)),如此循环往复产生流量5等等,就产生了环路。
一旦这样无限下去,势必就会导致CPU负载过重,导致整片的交换机瘫痪,造成严重损失!这时候就会需要一种先进的方法来解决这个问题。
这就是STP产生的背景!
核心分析就是,PCA的地址是唯一的,也只能被一个端口学习到,一旦发生改变,就会产生新的帧数据(流量),实际上就是流量只在线路和交换机内部流通,但是帧数据(MAC地址表项也算数据)一直再增加。导致CPU负载过重宕机。
2.STP作用
1)通过阻断冗余链路来消除桥接网络中可能存在的路径回环
2)当前路径发生故障时,激活冗余备份链路,恢复网络连通性
二、STP
1.生成树协议
1)STP(Spanning Tree Protocol,生成树协议)是用于在局域网中消除数据链路层物理环路的协议。
2)通过在桥之间交换BPDU(Bridge Protocol Data Unit,桥接协议数据单元),来保证设备完成生成树的计算过程。
2.配置BPDU的生成和传递
1)配置BPDU包含以下重要信息,完成生成树计算
*根桥ID(RootID)
*根路径开销(RootPathCost)
*指定桥ID(DesignatedBridgeID)
*指定端口ID(DesignatedPortID)
2)各台设备的各个端口在初始时生成以自己为根桥(Root Bridge)的配置消息,向外发送自己的配置消息。
3)网络收敛后,根桥向外发送配置BPDU,其他的设备对该配置BPDU进行转发。
3.根桥的选举
1)桥ID由桥优先级(Bridge Priority)和桥MAC地址(BridgeMacAddress)组成
2)桥ID小的桥被选举为根桥
4.端口角色的确定
1)根桥上的所有端口为指定端口(Designated Port)
2)在非根桥上选举根路径开销(RootPathCost)最小的端口为根端口(Root Port)
3)每个物理段选出根路径开销最小的桥作为指定桥(Designated Bridge),连接指定桥的端口为指定端口
4)不是根端口和指定端口的其余端口被STP置为阻塞状态
5.根路径开销
1)根路径开销(RootPathCost)是到达根的路径上所有链路开销(Cost)的代数和
2)非根桥进行根端口选举时,根路径开销最小的端口为根端口
3)物理段进行指定桥选举时,路径开销最小的桥为指定桥
6.通过桥ID决定端口角色
1)在根路径开销相同时,所连网段指定桥ID最小的端口为根端口
2)在根路径开销相同时,桥ID最小的桥被选举为物理段上的指定桥,连接指定桥的端口为指定端口。
7.通过端口ID决定端口角色
在根路径开销、指定桥ID都相同的情况下,所连指定端口ID小的端口为根端口
8.端口状态
端口角色 |
端口状态 |
端口行为 |
未启用STP功能的端口 |
Disabled |
不收发BPDU报文,接收或转发数据 |
非指定端口或根端口 |
Blocking |
接收但不发送BPDU,不接收或转发数据 |
-- |
Listening |
接收并发送BPDU,不接收或转发数据 |
-- |
Learning |
接收并发送BPDU,不接收或转发数据 |
指定端口或根端口 |
Forwarding |
接收并发送BPDU,接收并转发数据 |
9.端口状态迁移
1)端口被选为指定端口或根端口后,需要从Blocking状态经Listening和Learing才能到Forwarding状态
2)默认的Forwarding Delay时间是15秒
10.生成树的不足
1)端口从阻塞状态进入转发状态必须经历两倍的Forwarding Delay时间
2)如果网络中的拓扑结构变化频繁,网络会频繁地失去连通性
三、RSTP
1.简介
1)RSTP(Rapid Spanning Tree Protocol,快速生成树协议)是STP协议的优化版
2)RSTP 具备STP的所有功能
3)RSTP可以实现快速收敛
*在某些情况下,端口进入转发状态的延时大大缩短,从而缩短了网络最终达到拓扑稳定所需要的时间。
2.RSTP的改进
STP行为 |
RSTP行为 |
|
端口被选为根端口 |
默认情况下,2倍的Forwarding Delay的时间延迟。 |
存在阻塞的备份根端口情况下,仅有数毫秒延迟。 |
端口被选为指定端口 |
默认情况下,2倍的Forwarding Delay的时间延迟。 |
在指定端口是非边缘端口的情况下,延迟取决因素较多。 |
在指定端口是边缘端口的情况下,指定端口可以直接进入转发状态,没有延迟。 |
四、MSTP
1.STP/RSTP的问题
1)Trunk链路上实际上运行着多个vlan
2)所有vlan公用一棵生成树
3)无法实现不同vlan在多条Trunk链路上的负载分担
2.MSTP简介
1)MSTP(Multiple Spanning Tree Protocol,多生成树协议)
2)将多个vlan捆绑到一个实例,每个实例生成独立的生成树
3)在多条Trunk链路上实现vlan级负载分担
3.三种生成树协议特性的比较
特性列表 |
STP |
RSTP |
MSTP |
解决环路故障并实现冗余备份 |
Y |
Y |
Y |
快速收敛 |
N |
Y |
Y |
形成多棵生成树实现负载分担 |
N |
N |
Y |
1)MSTP具有RSTP的快速收敛,同时又具有负载分担机制
2)MSTP兼容STP和RSTP
4.三种生成树协议的端口状态对比
五、生成树协议的配置
1.STP基本配置
1)开启设备STP特性
2)关闭端口的STP特性
3)配置STP的工作模式
2.STP可选配置
1)配置当前设备的优先级
2)配置端口为边缘端口
3.STP配置示例
4.STP监控与维护
六、总结
1.STP产生的原因是为了消除路径回环的影响
2.STP通过选举根桥和阻塞冗余端口来消除环路
3.RSTP和MSTP相关工作原理
4.生成树协议配置