为什么要提出STP的优化问题?
简单的STP配置虽然可以工作,但可能存在一个突出的问题:收敛时间过长,有时候在全网收敛时间可能超过1分钟以上。所以STP在发展过程中也不断在优化,以提升其工作效率。
●PortFast, UplinkFast和BackboneFast
这些都是Cisco提出来的特别针对STP问题的解决方案,具体如下:
1)PortFast 使用环境:在接入(access)端口上使用
优化方法:一旦该端口物理上能工作,立即将其置为“转发”状态
配置命令:spanning-tree portfast (interface subcommand),spanning-tree portfast default (global)
2)UplinkFast 使用环境:在包含多条上行线路的接入层交换机上使用
优化方法:当一个根端口(RP)失去连接时,立即用另一个RP替换,并 可立即转发流量,在所有交换机的CAM中触发更新。
配置命令:spanning-tree uplinkfast [max-update-rate rate] (global)
3)BackboneFast 使用环境:主要在网络骨干上用来侦测间接的连接失败
优化方法:当RP停止接收Hello时,不需要等待Maxage时间,而是直接 查询与RP相连的交换机(使用RLQ BPDU)。
配置命令:spanning-tree backbonefast (global)
●PortChannel
从STP的角度考虑,将多条链路看作一条链路,这样可以提高网络的可用性(特别在中继链路上),只要这些链路有一条保持连接,STP路径就可以保持,就不需要再重新收敛STP。
当交换机要由PortChannel发送帧时,必须预先决定从哪条物理链路发送。这个决定工作由Cisco交换机通过负载均衡(基于交换机的全局负载均衡配置)的方法来实现。Port-channel load balance type命令可以设置负载均衡的类型(如使用源和目的MAC、IP地址以及TCP、UDP端口等)
可以通过channel-group number mode on (interface subcommand)配置哪个接口属于PortChannel。也可以通过动态协议来配置,这类协议有:Cisco特有的Port Aggregation Protocol(端口聚合协议,PAgP)和IEEE 802.1 AD的Link Aggregation Control Protocol(链路聚合控制协议,LACP)。使用PAgP配置的命令是channel-group number mode auto|desirable。使用LACP配置的命令是channel-group number mode active|passive。对于动态决定加入PortChannel的那些端口而言,必须相同的条件是:
1)同样的速度和双工设置
2)如果不是中继,应属于同一个VLAN
3)如果是中继,应为同一中继类型,应同为允许的VLAN和原始VLAN
4)对于每个通过PortChannel的所有链路传输的VLAN都有同样的STP开销
5)没有配置SPAN
●快速生成树协议
IEEE 802.1w快速生成树协议(RSTP)对802.1d标准的提升:加速STP收敛。为了实现这个目的,RSTP定义了与STP所不同的BPDU,定义了新的端口状态以及新的端口角色,同时它还能与STP兼容。具体如下:
1)RP反应速度:只等待3个Hello(STP是10个)
2)可由丢弃状态(代替了STP的阻塞状态)直接转换到学习状态,而不需要STP的监听状态
3)Cisco的PortFast、UplinkFast和BackboneFast功能的标准化
4)如果一个交换机有多个端口连接到同一共享LAN段,可以允许备份的DP
RSTP有效利用了交换网络的拓扑结构,因而可以加速收敛。RSTP定义了三种链路类型:
1)点对点:交换机间的连接
2)共享:交换机到hub的连接
3)边:交换机到用户设备的连接
对于边链路类型的处理方式,与前面所述的ProtFast类似(配置也一样)。对于点对点链路,RSTP直接向相邻交换机查询状态,这与BackboneFast类似,只不过这里使用的是IEEE的标准消息罢了。
RSTP和STP端口状态比较:
管理状态
|
STP状态(802.1d)
|
RSTP状态(802.1w)
|
不可用状态
|
屏蔽(Disabled)
|
丢弃(Discarding)
|
可用状态
|
阻塞(Blocking)
|
丢弃(Discarding)
|
可用状态
|
监听(Listening)
|
丢弃(Discarding)
|
可用状态
|
学习(Learning)
|
学习(Learning)
|
可用状态
|
转发(Forwarding)
|
转发(Forwarding)
|
在RSTP中,丢弃状态意味着该端口既不转发帧,也不接收帧,也不学习源MAC地址,而不管其什么原因造成。RSTP不再需要监听状态,因为它是动态查询邻接交换机,这就已经保证其收敛的时候不会产生环。
与STP类似,RSTP使用端口角色(port role)来表示端口是RP还是DP。除了这两个角色之外,RSTP还引入了一些新的角色,如下表所示:
RSTP角色
|
描述
|
根端口
|
与STP同
|
指定端口
|
与STP同
|
可替端口
|
类似于UplinkFast,可替换的根端口
|
备份端口
|
可替换的指定端口
|
设置RSTP的命令:spanning-tree mode rapid-pvst (global),也可以使用802.1s MST(使用的也是802.1w RSTP)
●快速Per VLAN增值生成树(RPVST+)
RSTP与PVST+的组合,结合了两者的优点,与MSTP和PVST+兼容。
配置方法:在接口上,输入spanning-tree link-type point-to-point命令
●多生成树(IEEE 802.1s)
又称为多实例STP,定义了怎样使用802.1Q中继来实现STP的多个实例的方法。其主要好处在于:
1)与PVST+类似,当有些端口在一个VLAN下是阻塞时,在另一个VLAN下仍然可以转发。
2)总使用802.1w RSTP来实现快速收敛。
3)不要求每个VLAN都分配一个STP实例。
在一起使用MST的交换机群称为MST区域;为了创建MST区域,交换机需要进行以下配置:
1)使用spanning-tree mode mst命令进入MST配置模式。
2)在MST配置模式下,使用name子命令创建MST区域名(最多32个字符)。
3)在MST配置模式下,使用revision子命令创建MST修订号
4)在MST配置模式下,使用instance子命令将VLAN映射到MST的STP实例上
MST配置的关键在于:区域中的所有交换机必须配置相同参数。