●
为什么要提出
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
配置的关键在于:区域中的所有交换机必须配置相同参数。