第一部分 STP基础
STP概述
生成树协议(STP,Spanning-Tree Protocol)是一种2层协议,通过一种专用的算法来发现网络中的物理环路并产生一个逻辑的无环(loop-free)拓扑结构。
STP生成了一个无环的树形结构,包括可以在整个2层网络范围内扩展的叶和枝。
STP概述
生成树协议(STP,Spanning-Tree Protocol)是一种2层协议,通过一种专用的算法来发现网络中的物理环路并产生一个逻辑的无环(loop-free)拓扑结构。
STP生成了一个无环的树形结构,包括可以在整个2层网络范围内扩展的叶和枝。
如上图这样一个高冗余度的网络,如果没有 STP 的存在,将会产生大量的广播环路,严重影响性能。生成树协议和其他协议一样,是随着网络的不断发展而不断更新换代的。在生成树协议发展过程中,老的缺陷不断被克服,新的特性不断被开发出来。
l 广播环路
当主机 A 发送一个目的地址为 FF-FF-FF-FF-FF-FF 的广播帧时,该 frame 将传至 CAT-1 和 CAT-2,当达到CAT-1 的端口1/1时,CAT-1按照标准透明桥接算法将数据帧从除去入端口,将其泛洪到其他每个端口,包括 CAT-1的1/2端口,从端口1/2发出的数据帧会到达下方以太网中的所有节点,包括CAT-2的端口1/2。同样CAT-2也做这样的处理,此后广播报文就会在CAT-1和CAT-2之间的链路成几何级数的增长。
l 广播环路
当主机 A 发送一个目的地址为 FF-FF-FF-FF-FF-FF 的广播帧时,该 frame 将传至 CAT-1 和 CAT-2,当达到CAT-1 的端口1/1时,CAT-1按照标准透明桥接算法将数据帧从除去入端口,将其泛洪到其他每个端口,包括 CAT-1的1/2端口,从端口1/2发出的数据帧会到达下方以太网中的所有节点,包括CAT-2的端口1/2。同样CAT-2也做这样的处理,此后广播报文就会在CAT-1和CAT-2之间的链路成几何级数的增长。
广播环路比路由环路更危险,在以太网帧结构只包含两个MAC地址、一个类型字段和一个循环冗余校验(CRC),并将网络层的包作为数据部分的内容,它没有像路由器那样,存在一个 TTL 域,对于一个路由环路而言,一个报文跳过 255 条后,就会被丢弃。而广播路由环路的报文将永远不会被丢弃。同时反复广播,其报文数量呈几何级数增长。
* 桥接表受损
除了广播风暴外,单播帧也会引起网络瓶颈。当主机A 此前已经拥有一条主机B的 ARP条目,希望ping主机B,但主机B临时从网络移除,并且交换机上相应于B的桥接表项已经被删除。假定任何一个交换机都没有运行STP,则当帧到达CAT-1 1/1后,CAT-1找不到目的地址,则CAT-1 1/2产生泛洪,同时CAT-2收到后,将主机A的位置改变到一个错误的端口上。此后帧还沿反方向循环。在端口1/1和1/2之间反复改变,导致CPU负载极大。
除了广播风暴外,单播帧也会引起网络瓶颈。当主机A 此前已经拥有一条主机B的 ARP条目,希望ping主机B,但主机B临时从网络移除,并且交换机上相应于B的桥接表项已经被删除。假定任何一个交换机都没有运行STP,则当帧到达CAT-1 1/1后,CAT-1找不到目的地址,则CAT-1 1/2产生泛洪,同时CAT-2收到后,将主机A的位置改变到一个错误的端口上。此后帧还沿反方向循环。在端口1/1和1/2之间反复改变,导致CPU负载极大。
生成树算法
算法(algorithm)就是一个公式或者解决特定问题的一组步骤。算法通常依赖于一组规则,有明确的开始和结束。
l*网桥ID
STP的特征就是生成树算法。生成树算法是根据一组参数来进行判别。网桥ID(BID,Bridge ID)是一个8字节的字段,包含一个数字有序对,如图,头2个字节的十进制数成为网桥优先级(Bridge Priority),后6字节是MAC地址(16进制)。
算法(algorithm)就是一个公式或者解决特定问题的一组步骤。算法通常依赖于一组规则,有明确的开始和结束。
l*网桥ID
STP的特征就是生成树算法。生成树算法是根据一组参数来进行判别。网桥ID(BID,Bridge ID)是一个8字节的字段,包含一个数字有序对,如图,头2个字节的十进制数成为网桥优先级(Bridge Priority),后6字节是MAC地址(16进制)。
网桥优先级是一个用来衡量网桥在生成树算法中优先权的十进制数,2的16次方,取值为0-65535。缺省值为32768。
BID的MAC地址是交换机的MAC地址之一。每个交换机都有一个MAC地址池,每个STP实例使用一个,作为按VLAN生成树实例(每个VLAN一棵)的BID。
具体算法:
BID 的比较方式如下,假设(s,t)和(u,v)分别为两个 BID,数对中的第一个值为优先级,第二个为MAC地址,则比较规则如下:
If s < u then ( s,t ) < ( u,v )
If ( s = u )&&( t < v ) then ( s,t ) < ( u,v )
BID值越小的网桥,其优先级越高
*路径开销
路径开销用来衡量网桥之间距离的一种方式。路径开销是两个网桥间某条路径上所有链路开销的总和,IEEE 802.1D最初定义链路开销是使用1000Mbit/s 除以Mbit/s为单位的链路带宽。例如10BASE-T链路的开销为 100,快速以太网和 FDDI 为 10。随着 Gbit/s 以太网和其它高速技术的出现,反映了该定义的一些缺陷。
链路开销使用整数存储,为了解决高带宽网络按原有标准计算出现小数的问题(10Gbit/s 按原标准为0.1)。IEEE改变了原有的反比例模型,按如下2种方式定义新的链路开销。
BID的MAC地址是交换机的MAC地址之一。每个交换机都有一个MAC地址池,每个STP实例使用一个,作为按VLAN生成树实例(每个VLAN一棵)的BID。
具体算法:
BID 的比较方式如下,假设(s,t)和(u,v)分别为两个 BID,数对中的第一个值为优先级,第二个为MAC地址,则比较规则如下:
If s < u then ( s,t ) < ( u,v )
If ( s = u )&&( t < v ) then ( s,t ) < ( u,v )
BID值越小的网桥,其优先级越高
*路径开销
路径开销用来衡量网桥之间距离的一种方式。路径开销是两个网桥间某条路径上所有链路开销的总和,IEEE 802.1D最初定义链路开销是使用1000Mbit/s 除以Mbit/s为单位的链路带宽。例如10BASE-T链路的开销为 100,快速以太网和 FDDI 为 10。随着 Gbit/s 以太网和其它高速技术的出现,反映了该定义的一些缺陷。
链路开销使用整数存储,为了解决高带宽网络按原有标准计算出现小数的问题(10Gbit/s 按原标准为0.1)。IEEE改变了原有的反比例模型,按如下2种方式定义新的链路开销。
1Gbit/s的CatOS系统使用短整型,10Gbit/s带宽以上的CatOS和新版的IOS使用长×××
*端口ID
端口ID(PID,Port ID),用来确定到根交换机的路径。由16bit的子串决定,其中包括6bit的端口优先级和10bit的端口号。基于IOS交换机,两部分都是8位。
端口ID(PID,Port ID),用来确定到根交换机的路径。由16bit的子串决定,其中包括6bit的端口优先级和10bit的端口号。基于IOS交换机,两部分都是8位。
端口优先级是一个可配置的STP参数。在CatOS交换机上,端口优先级的十进制取值范围是0-63,默认为32。基于IOS的交换机上,端口优先级的十进制取值范围是0-255,默认值为128。
具体算法:
Port ID的比较方式如下,假设(s,t)和(u,v)分别为两个Port ID,数对中的第一个值为端口优先级,
第二个值为MAC 地址,则比较规则如下
If s < u then ( s,t ) < ( u,v )
If ( s = u )&&( t < v ) then ( s,t ) < ( u,v )
PID越小的端口优先级越高
案例:
sw2#show spanning-tree interface fa 0/3 detail
Port 23 (FastEthernet0/23) of VLAN0001 is forwarding
Port path cost 100, Port priority 128, Port Identifier 128.23.
Designated root has priority 32769, address 0008.2059.9e40
Designated bridge has priority 32769, address 0009.4376.2300
Designated port id is 128.3, designated path cost 19
Timers: message age 0, forward delay 0, hold 0
Number of transitions to forwarding state: 1
Link type is shared by default
BPDU: sent 238527, received 0
PID中端口号定义采用数字编号的方式,一般 基于IOS的交换机上端口号空间为256 个端口。例如slot 0上的2 3 号口,其端口号为23,则Port ID如上所示为 128.23
具体算法:
Port ID的比较方式如下,假设(s,t)和(u,v)分别为两个Port ID,数对中的第一个值为端口优先级,
第二个值为MAC 地址,则比较规则如下
If s < u then ( s,t ) < ( u,v )
If ( s = u )&&( t < v ) then ( s,t ) < ( u,v )
PID越小的端口优先级越高
案例:
sw2#show spanning-tree interface fa 0/3 detail
Port 23 (FastEthernet0/23) of VLAN0001 is forwarding
Port path cost 100, Port priority 128, Port Identifier 128.23.
Designated root has priority 32769, address 0008.2059.9e40
Designated bridge has priority 32769, address 0009.4376.2300
Designated port id is 128.3, designated path cost 19
Timers: message age 0, forward delay 0, hold 0
Number of transitions to forwarding state: 1
Link type is shared by default
BPDU: sent 238527, received 0
PID中端口号定义采用数字编号的方式,一般 基于IOS的交换机上端口号空间为256 个端口。例如slot 0上的2 3 号口,其端口号为23,则Port ID如上所示为 128.23
STP过程
* STP判定和BPDU交换
Spanning-tree算法主要依靠BID,路径开销和端口 ID,在创建一个无环路的拓扑时,STP执行如下 4 个步骤:
1. 选取根交换机
2. 计算到根交换机的最小路径开销
3. 确定最小发送者BID
4. 确定最小的端口ID
为做出最佳判决,STP需要保证所有参与的网桥都获得正确的信息,网桥间的信息交互采用网桥协议数据单元(BPDU)的基于 2层的frame 来传递STP信息。网桥通过如上4 步来选择每个端口上所看到的“最佳 BPDU”网桥会村除从每个端口收到的最佳BPDU。在判定最优时,网桥会比较在此端口上收到的所有BPDU,以及会此端口上发送的BPDU。每收到一个BPDU,网桥都会根据4步过程进行检查,以判定是否比目前保存的此端口的最佳BPDU更好,如果有新的BPDU(或者本地生成的BPDU)更好,就会替换旧值。
当一个网桥被激活后,其所有的端口每隔2s(默认hello时间)发送一次BPDU报文 。如果收到其它端口比自己更好的BPDU,则本 BPDU。如果20s(默认最大时间Max Age)的时间没有从邻居收到更好的BPDU,则本地端口将重新发送BPDU。最大生存时间是最佳BPDU超时的时间。
* STP判定和BPDU交换
Spanning-tree算法主要依靠BID,路径开销和端口 ID,在创建一个无环路的拓扑时,STP执行如下 4 个步骤:
1. 选取根交换机
2. 计算到根交换机的最小路径开销
3. 确定最小发送者BID
4. 确定最小的端口ID
为做出最佳判决,STP需要保证所有参与的网桥都获得正确的信息,网桥间的信息交互采用网桥协议数据单元(BPDU)的基于 2层的frame 来传递STP信息。网桥通过如上4 步来选择每个端口上所看到的“最佳 BPDU”网桥会村除从每个端口收到的最佳BPDU。在判定最优时,网桥会比较在此端口上收到的所有BPDU,以及会此端口上发送的BPDU。每收到一个BPDU,网桥都会根据4步过程进行检查,以判定是否比目前保存的此端口的最佳BPDU更好,如果有新的BPDU(或者本地生成的BPDU)更好,就会替换旧值。
当一个网桥被激活后,其所有的端口每隔2s(默认hello时间)发送一次BPDU报文 。如果收到其它端口比自己更好的BPDU,则本 BPDU。如果20s(默认最大时间Max Age)的时间没有从邻居收到更好的BPDU,则本地端口将重新发送BPDU。最大生存时间是最佳BPDU超时的时间。
*STP收敛的步骤
生成树算法比较复杂,其收敛于一个无拓扑的初始过程包含
1. 选举根交换机(Root Bridge)
2. 选举根端口(Root Ports)
3. 选举指定端口(Designated Ports)
在网络第1次“初始”的时候,所有的网桥都会泛洪混合的 BPDU 信息。网桥开始执行前面讨论过的STP 4个判断过程。使得网桥追踪到一组BPDU,形成整个网络(Cisco 是一个vlan一个STP实例,故cisco的生成树范围定义在一个vlan中)。
I. 选举根桥
STP要求每个网桥分配一个唯一的标识(BID),BID通常由优先级(2bytes)和网桥MAC地址(6bytes)构成。根据 IEEE802.1d 规定,优先级值为 0-65535,缺省的优先级为 32768(0x8000)。当交换机最初启动时,它假定自己就是根交换机,并发送次优的 BPDU,当交换机接收到一个更低的 BID 时,它会把自己正在发送的BPDU的根BDI替换为这个最低的根BID,所有的网桥都会接收到这些BPDU,并且判定具有最小BID 值的网桥作为根网桥。
如下图所示,假定 A,B的优先级均为32,768,C 的优先级为40,000。各个交换机如何知道哪个交换机的BID最小呢?这是通过交换BPDU实现的。BPDU是网桥之间用于交换生成树信息的一种特殊的数据帧。
生成树算法比较复杂,其收敛于一个无拓扑的初始过程包含
1. 选举根交换机(Root Bridge)
2. 选举根端口(Root Ports)
3. 选举指定端口(Designated Ports)
在网络第1次“初始”的时候,所有的网桥都会泛洪混合的 BPDU 信息。网桥开始执行前面讨论过的STP 4个判断过程。使得网桥追踪到一组BPDU,形成整个网络(Cisco 是一个vlan一个STP实例,故cisco的生成树范围定义在一个vlan中)。
I. 选举根桥
STP要求每个网桥分配一个唯一的标识(BID),BID通常由优先级(2bytes)和网桥MAC地址(6bytes)构成。根据 IEEE802.1d 规定,优先级值为 0-65535,缺省的优先级为 32768(0x8000)。当交换机最初启动时,它假定自己就是根交换机,并发送次优的 BPDU,当交换机接收到一个更低的 BID 时,它会把自己正在发送的BPDU的根BDI替换为这个最低的根BID,所有的网桥都会接收到这些BPDU,并且判定具有最小BID 值的网桥作为根网桥。
如下图所示,假定 A,B的优先级均为32,768,C 的优先级为40,000。各个交换机如何知道哪个交换机的BID最小呢?这是通过交换BPDU实现的。BPDU是网桥之间用于交换生成树信息的一种特殊的数据帧。
根据选举规则,选择较小的优先级的交换机,则选择出Cat-A和Cat-B。在A , B优先级相同的时候,查找最小的MAC地址AA-AA-AA-AA-AA-AA.于是Cat-A被选举成为根交换机.
BPDU的结构:
II. 选择根端口
在选举根桥结束后,将选举根端口,一个网桥的根端口是按照路径开销最靠近根交换机的端口。 每一个非根交换机都将选出一个根端口。 根交换机每个接口均为根端口。网桥还是使用开销(cost)的概念来衡量接近程度。与某些路由协议的度量一样,STP对接近程度的度量也不使用跳数,而是通过“根路径开销”---到达根桥的链路开销之和来衡量。
其选择过程如下:
在选举根桥结束后,将选举根端口,一个网桥的根端口是按照路径开销最靠近根交换机的端口。 每一个非根交换机都将选出一个根端口。 根交换机每个接口均为根端口。网桥还是使用开销(cost)的概念来衡量接近程度。与某些路由协议的度量一样,STP对接近程度的度量也不使用跳数,而是通过“根路径开销”---到达根桥的链路开销之和来衡量。
其选择过程如下:
1) 根交换机Cat-A发送BPDU,他们所包含的根路径开销为0,当Cat-B收到这些BPDU后,迅速将端口 1/1 的路径开销累加到所收到 BPDU 的根路径开销。假定为FastEthernet,则加上端口1/1的开销19,Cat-B 1/1 到根路径的开销为 19。
2) Cat-B使用内部值19 ,并从端口1/2发送一个根路径开销为19 的BPDU
3) 当Cat-C从Cat-B收到这些BPDU将计算自己到根网桥的开销为38(19+19)。
4) Cat-C也在1/1 上收到来自A 的BPDU。同时计算1/1到根网桥的开销为19。
5) 根据最靠近根桥原则,C选出根端口为1/1。
6) Cat-C将继续向下游交换机公布其到根端口的开销为19
III. 选择指定端口
在桥接式的网络中,每个网段都有一个指定端口。一个网段的指定端口(Designated Port)是连接到网段中的一个桥接端口,它既向根桥发送数据,也通过此网段从根桥接收数据。在选举根端口的同时,基于到根网桥的的根路径成本的累加值的指定端口选择过程也在进行。包含某一网段的指定端口的网桥称为该网段的指定网根网桥的所有活动端口都成为指定端口,指定端口的选择也是基于到根桥的根路径开销。这条规则的例外是:当根网桥自身存在第一层物理环路的情况,例如:根网桥的两个端口连接到了同一台集线器上,或者两个端口通过交叉线连接到了一起。
2) Cat-B使用内部值19 ,并从端口1/2发送一个根路径开销为19 的BPDU
3) 当Cat-C从Cat-B收到这些BPDU将计算自己到根网桥的开销为38(19+19)。
4) Cat-C也在1/1 上收到来自A 的BPDU。同时计算1/1到根网桥的开销为19。
5) 根据最靠近根桥原则,C选出根端口为1/1。
6) Cat-C将继续向下游交换机公布其到根端口的开销为19
III. 选择指定端口
在桥接式的网络中,每个网段都有一个指定端口。一个网段的指定端口(Designated Port)是连接到网段中的一个桥接端口,它既向根桥发送数据,也通过此网段从根桥接收数据。在选举根端口的同时,基于到根网桥的的根路径成本的累加值的指定端口选择过程也在进行。包含某一网段的指定端口的网桥称为该网段的指定网根网桥的所有活动端口都成为指定端口,指定端口的选择也是基于到根桥的根路径开销。这条规则的例外是:当根网桥自身存在第一层物理环路的情况,例如:根网桥的两个端口连接到了同一台集线器上,或者两个端口通过交叉线连接到了一起。
Segment 1 中,根交换机 Cat-A 上 1/1 的路径开销为 0,Cat-B 上 1/1 的开销为 19。故 Cat-A 的 1/1为指定端口。Segment 2 中,同样 Cat-A 上的 1/2 被选举为指定端口。在 Segment 3 中。Cat-B 和 Cat-C上的1/2口,端口路径开销均为19。 此时将根据最小发送者的BID来确定,此时确定B的端口为指定端口,在某些情况下,例如Cisco的交换机每个vlan一个生成树实例,此时,将会出现BID 相同的情况,则最后比较端口ID,端口ID 在同一台交换机上定义是必定不相同的,最小端口ID的端口被定义为指定端口。
STP状态
在确定根端口,指定端口和非指定端口后,STP准备创建一个无环路拓扑。STP配置根端口和指定端口来转发流量,非指定端口阻塞流量。STP一共有5种状态:阻塞、监听、学习、转发和禁用。STP状态可以看作是等级制的,网桥端口从阻塞状态开始并按照顺序到转发状态。禁用状态是管理性的关闭STP状态。它不是正常STP端口过程的一部分。在交换机初始化之后,所有端口由阻塞状态开始。
5种状态:
在确定根端口,指定端口和非指定端口后,STP准备创建一个无环路拓扑。STP配置根端口和指定端口来转发流量,非指定端口阻塞流量。STP一共有5种状态:阻塞、监听、学习、转发和禁用。STP状态可以看作是等级制的,网桥端口从阻塞状态开始并按照顺序到转发状态。禁用状态是管理性的关闭STP状态。它不是正常STP端口过程的一部分。在交换机初始化之后,所有端口由阻塞状态开始。
5种状态:
状态转换过程:
* 阻塞状态(Blocking)
一个端口处于阻塞状态将会有如下特征:
# 丢弃所有连接的网段上收到的数据帧,或者通过交换而来内部转发的帧 。
#接收到的BPDU直接传给系统模块。
#没有地址数据库。
#不传递从系统模块收到的BPDU
#接收响应网络管理消息,但不传递他们
#需时20s
*侦听状态(Listening)
如果一个网桥在启动或者在一定时间没有收到BPDU后立即认为自己是根交换机,端口进入侦听状态,侦听状态是一种不传用户数据的STP状态,仅在端口发送和接收BPDU报文。努力确定一个活动的拓扑,该状态有如下特征:
# 丢弃所有连接的网段上收到的数据帧,或者通过交换而来内部转发的帧 。
# 接收到的BPDU直接传给系统模块。
# 没有地址数据库。
# 不传递从系统模块收到的BPDU
# 接收响应网络管理消息
# 需时15s
选举根桥,根端口和指定端口发生在侦听状态期间。 在指定端口选举中失败的端口成为非指定端口,并回到阻塞状态,剩下的指定端口或者根端口在15s后进入学习状态。
*学习状态(Learning)
学习状态是网桥不传递用户数据帧但构建桥接表并收集诸如数据帧源vlan等信息的一种STP状态。当网桥收到一个帧, 他将源MAC地址和端口放入桥接表, 当数据转发开始后学习状态减少了所需的泛洪次数需求。学习状态的生存时间同样受转发延迟定时器的控制,默认为15s 一个处于学习状态的端口特性:
#丢弃所有连接的网段上收到的数据帧。
# 丢弃从其它端×××换来的需要转发的帧
#接收到的BPDU直接传给系统模块。
#接收,处理传递从系统模块收到的BPDU
# 接收响应网络管理消息
#需时15s
*转发状态(Forwarding)
处于一个学习状态端口在转发延迟定时器超时后仍然是根端口或者指定端口,则将进入转发状态,转发状态特性如下:
# 转发所有连接的网段上收到的数据帧。
# 转发从其它端×××换来的需要转发的帧
# 将位置状态信息包含进自己的地址数据库
# 接收到的BPDU直接传给系统模块。
# 处理从系统模块收到的BPDU
# 接收响应网络管理消息
一个端口处于阻塞状态将会有如下特征:
# 丢弃所有连接的网段上收到的数据帧,或者通过交换而来内部转发的帧 。
#接收到的BPDU直接传给系统模块。
#没有地址数据库。
#不传递从系统模块收到的BPDU
#接收响应网络管理消息,但不传递他们
#需时20s
*侦听状态(Listening)
如果一个网桥在启动或者在一定时间没有收到BPDU后立即认为自己是根交换机,端口进入侦听状态,侦听状态是一种不传用户数据的STP状态,仅在端口发送和接收BPDU报文。努力确定一个活动的拓扑,该状态有如下特征:
# 丢弃所有连接的网段上收到的数据帧,或者通过交换而来内部转发的帧 。
# 接收到的BPDU直接传给系统模块。
# 没有地址数据库。
# 不传递从系统模块收到的BPDU
# 接收响应网络管理消息
# 需时15s
选举根桥,根端口和指定端口发生在侦听状态期间。 在指定端口选举中失败的端口成为非指定端口,并回到阻塞状态,剩下的指定端口或者根端口在15s后进入学习状态。
*学习状态(Learning)
学习状态是网桥不传递用户数据帧但构建桥接表并收集诸如数据帧源vlan等信息的一种STP状态。当网桥收到一个帧, 他将源MAC地址和端口放入桥接表, 当数据转发开始后学习状态减少了所需的泛洪次数需求。学习状态的生存时间同样受转发延迟定时器的控制,默认为15s 一个处于学习状态的端口特性:
#丢弃所有连接的网段上收到的数据帧。
# 丢弃从其它端×××换来的需要转发的帧
#接收到的BPDU直接传给系统模块。
#接收,处理传递从系统模块收到的BPDU
# 接收响应网络管理消息
#需时15s
*转发状态(Forwarding)
处于一个学习状态端口在转发延迟定时器超时后仍然是根端口或者指定端口,则将进入转发状态,转发状态特性如下:
# 转发所有连接的网段上收到的数据帧。
# 转发从其它端×××换来的需要转发的帧
# 将位置状态信息包含进自己的地址数据库
# 接收到的BPDU直接传给系统模块。
# 处理从系统模块收到的BPDU
# 接收响应网络管理消息
案例:
sw1#debug spanning-tree events (打开调试生成树状态信息)
我们将交换机1的fa0/24端口的开销调整为8,使得fa0/24为指定端口
sw1(config)#interface f0/24
sw1(config-if)#spanning-tree vlan 200 cost 8
sw1(config-if)#end
----------------------------------------------------------
03:51:32: STP: VLAN0200 new root port Fa0/24, cost 8
03:51:32: STP: VLAN0200 Fa0/24 -> listening
(f0/24原来处于blocking状态)
03:51:32: STP: VLAN0200 sent Topology Change Notice on Fa0/24
03:51:32: STP: VLAN0200 Fa0/23 -> blocking
03:51:47: STP: VLAN0200 Fa0/24 -> learning
(listening ->learning 15s时间)
03:52:02: STP: VLAN0200 Fa0/24 -> forwarding
(learning时间为15s)
sw1#debug spanning-tree events (打开调试生成树状态信息)
我们将交换机1的fa0/24端口的开销调整为8,使得fa0/24为指定端口
sw1(config)#interface f0/24
sw1(config-if)#spanning-tree vlan 200 cost 8
sw1(config-if)#end
----------------------------------------------------------
03:51:32: STP: VLAN0200 new root port Fa0/24, cost 8
03:51:32: STP: VLAN0200 Fa0/24 -> listening
(f0/24原来处于blocking状态)
03:51:32: STP: VLAN0200 sent Topology Change Notice on Fa0/24
03:51:32: STP: VLAN0200 Fa0/23 -> blocking
03:51:47: STP: VLAN0200 Fa0/24 -> learning
(listening ->learning 15s时间)
03:52:02: STP: VLAN0200 Fa0/24 -> forwarding
(learning时间为15s)
STP时间
STP运作受3个定时器的控制:
STP运作受3个定时器的控制:
· HELLO时间(根网桥发送配置BPDU的时间间隔) 缺省2s 这个值实际上只控制配置BPDU在根网桥上生成的时间,其他网桥则把它们从根网桥接收到的BPDU向外通告。换言之,如果在2-20秒内由于网络故障而没有收到新的BPDU,非根网桥在这段时间内就停止发送周期BPDU。如果这种情况持续超过20s,也就是超过最大存活期,非根网桥就使原来存储的BPDU无效,并开始寻找新的根端口。
· 转发延迟(侦听状态或学习状态的持续时间) 缺省15s 网桥在侦听状态和学习状态所花费的时间。只用转发延迟就控制了转发和学习两个状态。15秒这个值是假定网络的最大规模为7段网桥跳数;BPDU的最大丢失个数为3以及HELLO时间间隔为2秒的情况下得到的。这个转发延迟计时器同样可以用来控制网桥表在网络拓扑发生变化后的生存时间。
· 最大存活期(存储BPDU的时间) 缺省20s 就是网桥在丢弃BPDU前用来备份存储它的时间。
· 转发延迟(侦听状态或学习状态的持续时间) 缺省15s 网桥在侦听状态和学习状态所花费的时间。只用转发延迟就控制了转发和学习两个状态。15秒这个值是假定网络的最大规模为7段网桥跳数;BPDU的最大丢失个数为3以及HELLO时间间隔为2秒的情况下得到的。这个转发延迟计时器同样可以用来控制网桥表在网络拓扑发生变化后的生存时间。
· 最大存活期(存储BPDU的时间) 缺省20s 就是网桥在丢弃BPDU前用来备份存储它的时间。
STP的BPDU格式
STP BPDU帧格式随着所使用的协议类型变化。下图显示了IEEE 802.1D生成树协议的BPDU帧格式。
STP BPDU帧格式随着所使用的协议类型变化。下图显示了IEEE 802.1D生成树协议的BPDU帧格式。
Cisco专有的BPDU帧格式:
标准帧格式
n 帧控制域总是01
n 目的地址域指定了在桥街租地址表中所规定的目的地址,在IEEE STP BPDU 帧中,这个
n 地址为0x800143000000
n 原地址域指明了交换机所使用的基本MAC 地址
n 路由选择信息域仅在Cisco STP BPDU中有,RIF必须为0x0200
n 逻辑链路控制域控制所有STP BPDU的帧类型,这个域被设置为0x424203
BPDU内各域的格式。除端口ID域外,两种STP的BPDU内所有的域都是共同的。在IEEE和Cisco STP BPDU帧中,端口ID域定义了起源网桥的传送端口。
协议标志(2) 版本(1) 消息类型(1) 标志(1) 根ID(8) 根路径开销(4) 网桥ID(8) 端口ID(2) 消息生存时间(2) 最大生存时间(2) Hello周期(2) 转发延迟(2)
协议标志、版本和消息类型域总是被置为0
标志域包括下列的一种:
n 拓扑变化(TC)位,该信号指示拓扑变化并指明该BPDU是一个拓扑变化通告(TCN)BPDU。该位没有置位,则说明BPDU是一个配置BPDU。
n 拓扑变化确认(TCA)位,该位被置位表示确认收到一个TC位被置位的配置信息
其他域包括:
n 根ID域通过列出2字节的优先级和紧跟的6字节ID指明根交换机
n 根路经开销域指明从网桥发送该配置消息的网桥到跟交换机的路径开销
n BID域指明发送该消息的网桥的优先级和ID
n 端口ID域表明该配置消息的发送端口号(IEEE或者Cisco)。该域使得由于多个网桥相连而产生的环路可以被检测并纠正
n 消息生存时间域指示自从根发送完当前配置消息已经过了多长时间
n 最大生存时间指示当前配置消息何时被删除
n hello时间域指示根网桥配置消息的时间间隔
n 转发延迟域指示在拓扑变化后网桥在转到新状态之前需要等待多长时间。如果网桥转换的过快,可能并非所有网络链路都已经准备好了改变状态,于是会导致环路。
n 帧控制域总是01
n 目的地址域指定了在桥街租地址表中所规定的目的地址,在IEEE STP BPDU 帧中,这个
n 地址为0x800143000000
n 原地址域指明了交换机所使用的基本MAC 地址
n 路由选择信息域仅在Cisco STP BPDU中有,RIF必须为0x0200
n 逻辑链路控制域控制所有STP BPDU的帧类型,这个域被设置为0x424203
BPDU内各域的格式。除端口ID域外,两种STP的BPDU内所有的域都是共同的。在IEEE和Cisco STP BPDU帧中,端口ID域定义了起源网桥的传送端口。
协议标志(2) 版本(1) 消息类型(1) 标志(1) 根ID(8) 根路径开销(4) 网桥ID(8) 端口ID(2) 消息生存时间(2) 最大生存时间(2) Hello周期(2) 转发延迟(2)
协议标志、版本和消息类型域总是被置为0
标志域包括下列的一种:
n 拓扑变化(TC)位,该信号指示拓扑变化并指明该BPDU是一个拓扑变化通告(TCN)BPDU。该位没有置位,则说明BPDU是一个配置BPDU。
n 拓扑变化确认(TCA)位,该位被置位表示确认收到一个TC位被置位的配置信息
其他域包括:
n 根ID域通过列出2字节的优先级和紧跟的6字节ID指明根交换机
n 根路经开销域指明从网桥发送该配置消息的网桥到跟交换机的路径开销
n BID域指明发送该消息的网桥的优先级和ID
n 端口ID域表明该配置消息的发送端口号(IEEE或者Cisco)。该域使得由于多个网桥相连而产生的环路可以被检测并纠正
n 消息生存时间域指示自从根发送完当前配置消息已经过了多长时间
n 最大生存时间指示当前配置消息何时被删除
n hello时间域指示根网桥配置消息的时间间隔
n 转发延迟域指示在拓扑变化后网桥在转到新状态之前需要等待多长时间。如果网桥转换的过快,可能并非所有网络链路都已经准备好了改变状态,于是会导致环路。
拓扑变化和STP
STP通过使用一组定时器来避免在网络中出现桥接环路,如果一个稳定的STP进程出现变化可能需要30~50s 的时间才能收敛到新的拓扑(Max Age 20s + 2次forward delay 15s)。当网络在收敛过程时,那些已经不可达的物理地址仍旧存在于交换表中,交换机仍然会尝试向无法达到的设备转发数据帧。STP在拓扑变化的机制中,要求迅速清空交换表以删除不可达的物理地址。防止交换机将一些数据帧转发到那些不可达的设备。
下图为一个拓扑变化过程:
STP通过使用一组定时器来避免在网络中出现桥接环路,如果一个稳定的STP进程出现变化可能需要30~50s 的时间才能收敛到新的拓扑(Max Age 20s + 2次forward delay 15s)。当网络在收敛过程时,那些已经不可达的物理地址仍旧存在于交换表中,交换机仍然会尝试向无法达到的设备转发数据帧。STP在拓扑变化的机制中,要求迅速清空交换表以删除不可达的物理地址。防止交换机将一些数据帧转发到那些不可达的设备。
下图为一个拓扑变化过程:
1. 交换机D注意到拓扑变化
2. 交换机D从根端口发出一个拓扑变化通知(TCN,Topology Change Notice)BPDU,最终目的地为根交换机。TCN BPDU通过 BPDU中值为 0x80 的一个字节类型域表明。网桥持续发送 TCN BPDU直到该网段的指定网桥响应一个TCA“拓扑变更响应(Topology Change Acknoledgment)”配置BPDU,类型TCA是通过1字节标志域中的最高比特位指明的。
3. 该网段的指定网桥(Cat-B)发送一个 TCA 配置 BPDU 到源网桥(Cat-D)。交换机 B 也从根端口发送一个目的地为根交换机的TCN BPDU
4. 当根交换机收到(上游)TCN BPDU,就发送配置BPDU通告发生了一个拓扑变化。根交换机在配置中保持拓扑变化的时间等于转发延迟加最大生存时间.(15s+15s+20s)
5. 一个网桥收到(下游)从根交换机发出的拓扑变化配置消息,用转发延迟定时器(15s)使全部地址表项超时。这使得比默认设备通常需要5分钟更快的时间来使整张表超时快了很多。网桥将持续这一个过程知道不再从根交换机收到拓扑变化配置消息
2. 交换机D从根端口发出一个拓扑变化通知(TCN,Topology Change Notice)BPDU,最终目的地为根交换机。TCN BPDU通过 BPDU中值为 0x80 的一个字节类型域表明。网桥持续发送 TCN BPDU直到该网段的指定网桥响应一个TCA“拓扑变更响应(Topology Change Acknoledgment)”配置BPDU,类型TCA是通过1字节标志域中的最高比特位指明的。
3. 该网段的指定网桥(Cat-B)发送一个 TCA 配置 BPDU 到源网桥(Cat-D)。交换机 B 也从根端口发送一个目的地为根交换机的TCN BPDU
4. 当根交换机收到(上游)TCN BPDU,就发送配置BPDU通告发生了一个拓扑变化。根交换机在配置中保持拓扑变化的时间等于转发延迟加最大生存时间.(15s+15s+20s)
5. 一个网桥收到(下游)从根交换机发出的拓扑变化配置消息,用转发延迟定时器(15s)使全部地址表项超时。这使得比默认设备通常需要5分钟更快的时间来使整张表超时快了很多。网桥将持续这一个过程知道不再从根交换机收到拓扑变化配置消息
* 备份根交换机
通常拓扑变化中,如果根桥出现问题,将会极大地影响网络的 STP 收敛时间,此时,cisco 采用了一种备份根桥的策略。如下图:
其实质上是根据根网桥选举规则进行处理的,配置命令为:
Spaning-tree vlan vlan-id root primay
Spaning-tree vlan vlan-id root secondary
这2条命令的作用是修改BID中的 Priority 值,该命令仅在Catalyst 6500,4500,3750,3550,2950上支持
通常拓扑变化中,如果根桥出现问题,将会极大地影响网络的 STP 收敛时间,此时,cisco 采用了一种备份根桥的策略。如下图:
其实质上是根据根网桥选举规则进行处理的,配置命令为:
Spaning-tree vlan vlan-id root primay
Spaning-tree vlan vlan-id root secondary
这2条命令的作用是修改BID中的 Priority 值,该命令仅在Catalyst 6500,4500,3750,3550,2950上支持
配置STP
l 默认配置:
特性 默认设置
---------------------------------------------------------------------------
使能状态 只有vlan1
生成树模式 PVST+(RSTP和MSTP不启动)
交换机优先级 32768
生成树端口优先级(基于每个端口) 128
生成树端口开销 1000Mbps:4
100Mbps:19
10Mbps:100
生成树VLAN优先级(基于每个VLAN) 128
生成树VLAN开销 1000Mbps:4
100Mbps:19
10Mbps:100
生成树定时器 Hello时间: 2秒
转发延迟时间: 15秒
最大生存时间: 20秒
传输数据包: 6个BPDUs包
案例:
sw1#show spann vlan 1
VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 32769
Address 000b.5f2c.2080
Cost 19
Port 23 (FastEthernet0/23)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 32769 (priority 32768 sys-id-ext 1)
Address 000d.6564.0280
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 300
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- -------------------------------
Fa0/18 Desg FWD 19 128.18 P2p
Fa0/23 Root FWD 19 128.23 P2p
Fa0/24 Altn BLK 19 128.24 P2p
配置STP的模式
交换机支持3种模式:PVST+、RSTP和MSTP,默认设置为PVST+
配置过程:
1) 进入全局配置模式 configure terminal
2) 设置STP模式
spanning-tree mode [pvst|rapid-pvst|mst]
3) 验证结果
show spanning-tree summary
show spanning-tree interface 接口
show running-config
交换机支持3种模式:PVST+、RSTP和MSTP,默认设置为PVST+
配置过程:
1) 进入全局配置模式 configure terminal
2) 设置STP模式
spanning-tree mode [pvst|rapid-pvst|mst]
3) 验证结果
show spanning-tree summary
show spanning-tree interface 接口
show running-config
配置根交换机
配置过程:
1) 全局模式 configure terminal
2) 设置STP根交换机
spanning-tree vlan vlan号 root primary
[diameter 网络直径|hello-time 秒]
diameter:用来指定网络的直径。指定了网络直径后,交换机会自动针对此直径设定最优的
hello时间、转发延迟和最大时间,这能大大减少收敛时间。
Hello-time:人工指定hello时间覆盖自动计算值
3) 验证配置
show spanning-tree detail
案例:
sw1(config)#do show span vlan 200 (查看vlan 200的生成树状态)
VLAN0200
Spanning tree enabled protocol ieee
Root ID Priority 32968
Address 000b.5f2c.2080
Cost 19
Port 23 (FastEthernet0/23)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 32968 (priority 32768 sys-id-ext 200)
Address 000d.6564.0280
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 300
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- -------------------------------
Fa0/23 Root FWD 19 128.23 P2p
Fa0/24 Altn BLK 19 128.24 P2p
可以看出这台交换机sw1不是根交换机,它的fa0/23端口是根端口,fa0/24处于阻塞,它的优先级为32768+vlan号200=32968
我们现在开始配置,将sw1调整为根交换机
sw1(config)#spanning-tree vlan 200 root primary
sw1#show span vlan 200
VLAN0200
Spanning tree enabled protocol ieee
Root ID Priority 24776
Address 000d.6564.0280
This bridge is the root (这里显示是Vlan200的根交换机)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 24776 (priority 24576 sys-id-ext 200)
(它会自动调整交换机优先级为24576)
Address 000d.6564.0280
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 15
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- -------------------------------
Fa0/23 Desg FWD 19 128.23 P2p
Fa0/24 Desg FWD 19 128.24 P2p
配置过程:
1) 全局模式 configure terminal
2) 设置STP根交换机
spanning-tree vlan vlan号 root primary
[diameter 网络直径|hello-time 秒]
diameter:用来指定网络的直径。指定了网络直径后,交换机会自动针对此直径设定最优的
hello时间、转发延迟和最大时间,这能大大减少收敛时间。
Hello-time:人工指定hello时间覆盖自动计算值
3) 验证配置
show spanning-tree detail
案例:
sw1(config)#do show span vlan 200 (查看vlan 200的生成树状态)
VLAN0200
Spanning tree enabled protocol ieee
Root ID Priority 32968
Address 000b.5f2c.2080
Cost 19
Port 23 (FastEthernet0/23)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 32968 (priority 32768 sys-id-ext 200)
Address 000d.6564.0280
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 300
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- -------------------------------
Fa0/23 Root FWD 19 128.23 P2p
Fa0/24 Altn BLK 19 128.24 P2p
可以看出这台交换机sw1不是根交换机,它的fa0/23端口是根端口,fa0/24处于阻塞,它的优先级为32768+vlan号200=32968
我们现在开始配置,将sw1调整为根交换机
sw1(config)#spanning-tree vlan 200 root primary
sw1#show span vlan 200
VLAN0200
Spanning tree enabled protocol ieee
Root ID Priority 24776
Address 000d.6564.0280
This bridge is the root (这里显示是Vlan200的根交换机)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 24776 (priority 24576 sys-id-ext 200)
(它会自动调整交换机优先级为24576)
Address 000d.6564.0280
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 15
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- -------------------------------
Fa0/23 Desg FWD 19 128.23 P2p
Fa0/24 Desg FWD 19 128.24 P2p
配置备份根交换机
会将默认的交换机的优先级32768变为28762,作为根交换机的一种备份
配置过程:
1) 全局模式 configure terminal
2) 设置STP根交换机
spanning-tree vlan vlan号 root second
[diameter 网络直径|hello-time 秒]
diameter:用来指定网络的直径。指定了网络直径后,交换机会自动针对此直径设定最优的hello时间、转发延迟和最大时间,这能大大减少收敛时间。取值范围为2到7
Hello-time:人工指定hello时间覆盖自动计算值,取值范围为1到10
3) 验证配置
show spanning-tree detail
会将默认的交换机的优先级32768变为28762,作为根交换机的一种备份
配置过程:
1) 全局模式 configure terminal
2) 设置STP根交换机
spanning-tree vlan vlan号 root second
[diameter 网络直径|hello-time 秒]
diameter:用来指定网络的直径。指定了网络直径后,交换机会自动针对此直径设定最优的hello时间、转发延迟和最大时间,这能大大减少收敛时间。取值范围为2到7
Hello-time:人工指定hello时间覆盖自动计算值,取值范围为1到10
3) 验证配置
show spanning-tree detail
配置端口优先级
配置过程:
1) 进入全局模式 configure terminal
2) 进入接口模式 interface 接口
3) 如果接入端口
spanning-tree port-priority 优先级
优先级:取值范围0-240,默认为128,可以使用0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240
如果是中继接口
spanning-tree vlan vlan号 port-priority 优先级
4) 验证配置
show spanning-tree interface 端口
show spanning-tree vlan vlan号
案例:
sw2#show span vlan 200
VLAN0200
Spanning tree enabled protocol ieee
Root ID Priority 32968
Address 000b.5f2c.2080
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 32968 (priority 32768 sys-id-ext 200)
Address 000b.5f2c.2080
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 300
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- -------------------------------
Fa0/23 Desg FWD 19 128.23 P2p
Fa0/24 Desg FWD 19 128.24 P2p
可以看到sw2是根交换机,因为它的MAC地址低
sw1#show span vlan 200
VLAN0200
Spanning tree enabled protocol ieee
Root ID Priority 32968
Address 000b.5f2c.2080
Cost 19
Port 23 (FastEthernet0/23)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 32968 (priority 32768 sys-id-ext 200)
Address 000d.6564.0280
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 300
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- -------------------------------
Fa0/23 Root FWD 19 128.23 P2p
Fa0/24 Altn BLK 19 128.24 P2p
我们同时也看到交换机sw1的vlan200的情况,其中fa0/23是根端口,fa0/24是处于阻塞状态
Sw1#conf t
Sw1(config)#interface f0/24
Sw1(config-if)#spanning-tree vlan 200 port-priority 64
我们将端口fa0/24的优先级调整为64,默认为128
Sw2#conf t
Sw2(config)#interface f0/24
Sw2(config-if)#spanning-tree vlan 200 port-priority 64
查看修改后的情况
sw1#show span vlan 200
VLAN0200
Spanning tree enabled protocol ieee
Root ID Priority 32968
Address 000b.5f2c.2080
Cost 19
Port 24 (FastEthernet0/24)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 32968 (priority 32768 sys-id-ext 200)
Address 000d.6564.0280
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 300
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- -------------------------------
Fa0/23 Altn BLK 19 128.23 P2p
Fa0/24 Root FWD 19 64.24 P2p
发现现在fa0/24是根端口,它的端口优先级为64,而fa0/23处于了阻塞状态了
配置过程:
1) 进入全局模式 configure terminal
2) 进入接口模式 interface 接口
3) 如果接入端口
spanning-tree port-priority 优先级
优先级:取值范围0-240,默认为128,可以使用0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240
如果是中继接口
spanning-tree vlan vlan号 port-priority 优先级
4) 验证配置
show spanning-tree interface 端口
show spanning-tree vlan vlan号
案例:
sw2#show span vlan 200
VLAN0200
Spanning tree enabled protocol ieee
Root ID Priority 32968
Address 000b.5f2c.2080
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 32968 (priority 32768 sys-id-ext 200)
Address 000b.5f2c.2080
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 300
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- -------------------------------
Fa0/23 Desg FWD 19 128.23 P2p
Fa0/24 Desg FWD 19 128.24 P2p
可以看到sw2是根交换机,因为它的MAC地址低
sw1#show span vlan 200
VLAN0200
Spanning tree enabled protocol ieee
Root ID Priority 32968
Address 000b.5f2c.2080
Cost 19
Port 23 (FastEthernet0/23)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 32968 (priority 32768 sys-id-ext 200)
Address 000d.6564.0280
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 300
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- -------------------------------
Fa0/23 Root FWD 19 128.23 P2p
Fa0/24 Altn BLK 19 128.24 P2p
我们同时也看到交换机sw1的vlan200的情况,其中fa0/23是根端口,fa0/24是处于阻塞状态
Sw1#conf t
Sw1(config)#interface f0/24
Sw1(config-if)#spanning-tree vlan 200 port-priority 64
我们将端口fa0/24的优先级调整为64,默认为128
Sw2#conf t
Sw2(config)#interface f0/24
Sw2(config-if)#spanning-tree vlan 200 port-priority 64
查看修改后的情况
sw1#show span vlan 200
VLAN0200
Spanning tree enabled protocol ieee
Root ID Priority 32968
Address 000b.5f2c.2080
Cost 19
Port 24 (FastEthernet0/24)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 32968 (priority 32768 sys-id-ext 200)
Address 000d.6564.0280
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 300
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- -------------------------------
Fa0/23 Altn BLK 19 128.23 P2p
Fa0/24 Root FWD 19 64.24 P2p
发现现在fa0/24是根端口,它的端口优先级为64,而fa0/23处于了阻塞状态了
配置路径开销
如果想改变帧从某个交换机到根所经过的路径,需要仔细地计算当前的路径开销,然后改变目标路径上的端口开销。路径开销是通过配置STP路径上的各个端口开销来规定的。端口开销值小的端口被选做用于帧的转发,如果开销相同的,就选择端口号小的端口
选择过程:(优先级依次递减)
路径开销(path cost)
网桥ID (Bridge ID)
端口优先级(Port Priority)
配置过程:
1) 全局模式 configure terminal
2) 进入接口模式
interface 接口
3) 设置STP端口路径开销
接入接口
spanning-tree cost 开销值
开销值为:1-200000000
中继接口
spanning-tree vlan vlan号 cost 开销值
vlan号:1-4094
开销值:1-200000000
spanning-tree vlan vlan号 root second
4) 验证配置
show spanning-tree interface 接口
show spanning-tree vlan vlan号
show running-config
案例:
我们接着前面的例子继续,前面我们修改了sw1的fa0/24的端口优先级从128调整为64,使其成为了转发端口,现在我们配置端口路径开销
sw1(config)#interface f0/23
sw1(config-if)#spanning-tree vlan 200 cost 8 我们将vlan 200的端口开销调整为8)
sw1(config-if)#end
sw1#show spanning-tree vlan 200
VLAN0200
Spanning tree enabled protocol ieee
Root ID Priority 32968
Address 000b.5f2c.2080
Cost 8
Port 23 (FastEthernet0/23) (发现端口转变为fa0/23)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 32968 (priority 32768 sys-id-ext 200)
Address 000d.6564.0280
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 15
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- -------------------------------
Fa0/23 Root FWD 8 128.23 P2p
Fa0/24 Altn BLK 19 64.24 P2p
我们可以看到虽然fa0/24的端口优先级为64,但因为fa0/23端口的路径开销小,所以选择了fa0/23
如果想改变帧从某个交换机到根所经过的路径,需要仔细地计算当前的路径开销,然后改变目标路径上的端口开销。路径开销是通过配置STP路径上的各个端口开销来规定的。端口开销值小的端口被选做用于帧的转发,如果开销相同的,就选择端口号小的端口
选择过程:(优先级依次递减)
路径开销(path cost)
网桥ID (Bridge ID)
端口优先级(Port Priority)
配置过程:
1) 全局模式 configure terminal
2) 进入接口模式
interface 接口
3) 设置STP端口路径开销
接入接口
spanning-tree cost 开销值
开销值为:1-200000000
中继接口
spanning-tree vlan vlan号 cost 开销值
vlan号:1-4094
开销值:1-200000000
spanning-tree vlan vlan号 root second
4) 验证配置
show spanning-tree interface 接口
show spanning-tree vlan vlan号
show running-config
案例:
我们接着前面的例子继续,前面我们修改了sw1的fa0/24的端口优先级从128调整为64,使其成为了转发端口,现在我们配置端口路径开销
sw1(config)#interface f0/23
sw1(config-if)#spanning-tree vlan 200 cost 8 我们将vlan 200的端口开销调整为8)
sw1(config-if)#end
sw1#show spanning-tree vlan 200
VLAN0200
Spanning tree enabled protocol ieee
Root ID Priority 32968
Address 000b.5f2c.2080
Cost 8
Port 23 (FastEthernet0/23) (发现端口转变为fa0/23)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 32968 (priority 32768 sys-id-ext 200)
Address 000d.6564.0280
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 15
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- -------------------------------
Fa0/23 Root FWD 8 128.23 P2p
Fa0/24 Altn BLK 19 64.24 P2p
我们可以看到虽然fa0/24的端口优先级为64,但因为fa0/23端口的路径开销小,所以选择了fa0/23
配置vlan的优先级
先要了解mac地址缩减(MAC address reduction)和网桥ID优先级(Bridge ID Priority)的概念(和网桥优先级有区别)。有些交换机支持4096个VLAN,MAC地址缩减将STP的MAC地址需求从每个VLAN或者每个MISTP实例一个减少为一台交换机一个,在PVST+下最多支持4096个VLAN,或者16个有唯一标识符的MISTP实例,而且不需要增加交换机所需的MAC地址的数量。
启用MAC缩减后,存储在生成树BPDU中的网桥标识符就包含了被称为系统ID扩展的额外字段,它和网桥优先级组合后,系统ID扩展作为VLAN或者MISTP实例的唯一标识符。
未启用MAC地址缩减的网桥标识符
----------------------------------------------------------------
| 网桥优先级(2字节) | MAC地址(6字节) |
-----------------------------------------------------------------
启用MAC地址缩减的网桥标识符
------------------------------------------------------------------------------------------------
| 网桥优先级(高4位) | 系统ID扩展(低12位) | MAC地址(6字节) |
------------------------------------------------------------------------------------------------
| 网桥ID优先级 |
-------------------------------------------------------------------------------------------------
所以要注意,当启用了MAC地址缩减时,高4位用于确认网桥的优先级,这就意味着有16种可能的网桥ID优先级:0,4096,8192,12288,16384,20480,24576,28672,32768,36864,40960,45056,49152,53248,57344,61440。
配置过程:
1) 进入全局模式 configure terminal
2) 进入接口模式 interface 接口
3) 配置某vlan的优先级
spanning-tree vlan vlan号 priority 优先级
优先级取值:4096,8192,12288,16384,20480,24576,28672,32768,36864,40960,45056,49152,53248,57344,61440
案例:
我们一般还是通过spanning-tree vlan vlan号 root primary命令来设置
先要了解mac地址缩减(MAC address reduction)和网桥ID优先级(Bridge ID Priority)的概念(和网桥优先级有区别)。有些交换机支持4096个VLAN,MAC地址缩减将STP的MAC地址需求从每个VLAN或者每个MISTP实例一个减少为一台交换机一个,在PVST+下最多支持4096个VLAN,或者16个有唯一标识符的MISTP实例,而且不需要增加交换机所需的MAC地址的数量。
启用MAC缩减后,存储在生成树BPDU中的网桥标识符就包含了被称为系统ID扩展的额外字段,它和网桥优先级组合后,系统ID扩展作为VLAN或者MISTP实例的唯一标识符。
未启用MAC地址缩减的网桥标识符
----------------------------------------------------------------
| 网桥优先级(2字节) | MAC地址(6字节) |
-----------------------------------------------------------------
启用MAC地址缩减的网桥标识符
------------------------------------------------------------------------------------------------
| 网桥优先级(高4位) | 系统ID扩展(低12位) | MAC地址(6字节) |
------------------------------------------------------------------------------------------------
| 网桥ID优先级 |
-------------------------------------------------------------------------------------------------
所以要注意,当启用了MAC地址缩减时,高4位用于确认网桥的优先级,这就意味着有16种可能的网桥ID优先级:0,4096,8192,12288,16384,20480,24576,28672,32768,36864,40960,45056,49152,53248,57344,61440。
配置过程:
1) 进入全局模式 configure terminal
2) 进入接口模式 interface 接口
3) 配置某vlan的优先级
spanning-tree vlan vlan号 priority 优先级
优先级取值:4096,8192,12288,16384,20480,24576,28672,32768,36864,40960,45056,49152,53248,57344,61440
案例:
我们一般还是通过spanning-tree vlan vlan号 root primary命令来设置
配置STP定时器
在根交换机上可以配置hello、最大生存时间、转发延迟时间和传输延迟计数
配置过程:
1) 进入全局配置模式 configure terminal
2) 配置hello时间,默认为2秒
spanning-tree vlan vlan号 hello 秒数
秒数取值:1-10秒,默认为2秒
3) 配置转发延迟时间
spanning-tree vlan vlan号 forward-time 秒数
秒数取值:4-30秒,默认为15秒
4) 配置最大生存时间
spanning-tree vlan vlan号 max-age 秒数
秒数取值:6-40秒,默认为20秒
5) 配置传输延迟计数
spanning-tree transmit hold-count bpdu数
bpdu数:是指1秒钟内传输bpdu数据包数,取值为1-20,默认为6
6) 验证配置
show spanning-tree vlan vlan号
show spanning-tree detail
案例:
sw1(config)#spanning-tree vlan 200 hello-time 1
sw1(config)#spanning-tree vlan 200 forward-time 10
sw1(config)#spanning-tree vlan 200 max-age 15
sw1#show spann vlan 200
VLAN0200
Spanning tree enabled protocol ieee
Root ID Priority 24776
Address 000d.6564.0280
This bridge is the root
Hello Time 1 sec Max Age 15 sec Forward Delay 10 sec
Bridge ID Priority 24776 (priority 24576 sys-id-ext 200)
Address 000d.6564.0280
Hello Time 1 sec Max Age 15 sec Forward Delay 10 sec
Aging Time 300
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- -------------------------------
Fa0/23 Desg FWD 19 128.23 P2p
Fa0/24 Desg FWD 19 128.24 P2p
案例:
CCIE-LAB题目(YY)
在SW1上把fa0/7划分到vlan14中,并且把SW1指定为VLAN14的根交换机,且VLAN14的max-age为16秒,forward-delay为14秒,hello为2秒
配置命令
SW1
Conf t
Interface fa0/7
Switchport access vlan 14
Exit
Spanning-tree vlan 14 root primary
Spanning-tree vlan 14 hello-time 2
Spanning-tree vlan 14 max-age 16
Spanning-tree vlan 14 forward-time 14
验证
show spanning-tree vlan 14
-----------------------------------------------------
CCIE-LAB题目(V148)
High-priority traffic is running on VLAN_C. Make sure, once the corresponding switch ports have been activated, the time spent listening for a topology change is shortened to 5 seconds.
配置:
spanning-tree vlan 22 forward 5
在根交换机上可以配置hello、最大生存时间、转发延迟时间和传输延迟计数
配置过程:
1) 进入全局配置模式 configure terminal
2) 配置hello时间,默认为2秒
spanning-tree vlan vlan号 hello 秒数
秒数取值:1-10秒,默认为2秒
3) 配置转发延迟时间
spanning-tree vlan vlan号 forward-time 秒数
秒数取值:4-30秒,默认为15秒
4) 配置最大生存时间
spanning-tree vlan vlan号 max-age 秒数
秒数取值:6-40秒,默认为20秒
5) 配置传输延迟计数
spanning-tree transmit hold-count bpdu数
bpdu数:是指1秒钟内传输bpdu数据包数,取值为1-20,默认为6
6) 验证配置
show spanning-tree vlan vlan号
show spanning-tree detail
案例:
sw1(config)#spanning-tree vlan 200 hello-time 1
sw1(config)#spanning-tree vlan 200 forward-time 10
sw1(config)#spanning-tree vlan 200 max-age 15
sw1#show spann vlan 200
VLAN0200
Spanning tree enabled protocol ieee
Root ID Priority 24776
Address 000d.6564.0280
This bridge is the root
Hello Time 1 sec Max Age 15 sec Forward Delay 10 sec
Bridge ID Priority 24776 (priority 24576 sys-id-ext 200)
Address 000d.6564.0280
Hello Time 1 sec Max Age 15 sec Forward Delay 10 sec
Aging Time 300
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- -------------------------------
Fa0/23 Desg FWD 19 128.23 P2p
Fa0/24 Desg FWD 19 128.24 P2p
案例:
CCIE-LAB题目(YY)
在SW1上把fa0/7划分到vlan14中,并且把SW1指定为VLAN14的根交换机,且VLAN14的max-age为16秒,forward-delay为14秒,hello为2秒
配置命令
SW1
Conf t
Interface fa0/7
Switchport access vlan 14
Exit
Spanning-tree vlan 14 root primary
Spanning-tree vlan 14 hello-time 2
Spanning-tree vlan 14 max-age 16
Spanning-tree vlan 14 forward-time 14
验证
show spanning-tree vlan 14
-----------------------------------------------------
CCIE-LAB题目(V148)
High-priority traffic is running on VLAN_C. Make sure, once the corresponding switch ports have been activated, the time spent listening for a topology change is shortened to 5 seconds.
配置:
spanning-tree vlan 22 forward 5
配置负载
可以根据STP的一些特性实现基于STP的负载均衡,如下图:
可以根据STP的一些特性实现基于STP的负载均衡,如下图:
方法一:修改端口优先级
我们按照如上图,进行配置:
1) 进入全局模式 config terminal
2) 进入中继接口 interface 接口1
3) 修改端口优先级
spanning-tree vlan 8-10 port-priority 10
4) 进入另中继接口 interface 接口2
5) 修改中继端口的优先级
spanning-tree vlan 3-6 port-priority 10
方法二:修改端口路径开销
我们按照如上图,进行配置:
1) 进入全局模式 config terminal
2) 进入中继接口 interface 接口1
3) 修改端口优先级
spanning-tree vlan 8-10 port-priority 10
4) 进入另中继接口 interface 接口2
5) 修改中继端口的优先级
spanning-tree vlan 3-6 port-priority 10
方法二:修改端口路径开销
我们按照如上图,进行配置:
1) 进入全局模式 config terminal
2) 进入中继接口 interface 接口1
3) 修改端口路径开销
spanning-tree vlan 2-4 cost 30
4) 进入另中继接口 interface 接口2
5) 修改中继端口的优先级
6) spanning-tree vlan 8-10 cost 30
案例:
CCIE-LAB(版本148)
题目要求:
Load balance between the trunks, meeting the following requirements:
· Use trunk 1 for VLAN_BB1(VLAN 10) and VLAN_BB2(VLAN 40) traffic.
· Use trunk 2 for VLAN_B(VLAN 22) and VLAN_C(VLAN 62).
If one of the trunks should fail, all VLAN traffic should still be send across the trunk.
Restrict the traffic crossing the trunk to the VLANs used in this lab.
Do NOT change the path cost.
配置:SW1和SW2
interface f0/23
switch trunk allowed vlan 10,22,40,62
spanning-tree vlan 10 port-priority 64
spanning-tree vlan 40 port-priority 64
interface f0/24
switchport trunk allowed vlan 10,22,40,62
spanning-tree vlan 22 port-priority 64
spannint-tree vlan 42 port-priority 64
1) 进入全局模式 config terminal
2) 进入中继接口 interface 接口1
3) 修改端口路径开销
spanning-tree vlan 2-4 cost 30
4) 进入另中继接口 interface 接口2
5) 修改中继端口的优先级
6) spanning-tree vlan 8-10 cost 30
案例:
CCIE-LAB(版本148)
题目要求:
Load balance between the trunks, meeting the following requirements:
· Use trunk 1 for VLAN_BB1(VLAN 10) and VLAN_BB2(VLAN 40) traffic.
· Use trunk 2 for VLAN_B(VLAN 22) and VLAN_C(VLAN 62).
If one of the trunks should fail, all VLAN traffic should still be send across the trunk.
Restrict the traffic crossing the trunk to the VLANs used in this lab.
Do NOT change the path cost.
配置:SW1和SW2
interface f0/23
switch trunk allowed vlan 10,22,40,62
spanning-tree vlan 10 port-priority 64
spanning-tree vlan 40 port-priority 64
interface f0/24
switchport trunk allowed vlan 10,22,40,62
spanning-tree vlan 22 port-priority 64
spannint-tree vlan 42 port-priority 64
第二部分 STP特性
Portfast快速端口
Portfast快速端口是一个Catalyst的一个特性,能使交换机或中继端口跳过侦听学习状态而进入STP转发状态,在基于IOS交换机上,PortFast 只能用于连接到终端工作站的接入端口上。
当一个设备连接到一个端口上时,端口通常进入侦听状态。当转发延迟定时器超时后,进入学习状态,当转发延迟定时器第二次超时,端口进入到转发或者阻塞状态,当一个交换机或中继端口启用PortFast后,端口立即进入转发状态,但交换机检测到链路,端口就进入转发状态(插电缆后的2s) 。如果端口检测到一个环路同时又启用了PortFast 功能。它就进入阻塞状态。重要的是要注意到PortFast 值在端口初始化的时候才生效。如果端口由于某种原因又被迫进入阻塞状态,随后又需要回到转发状态,仍然要经过正常的侦听 。
Portfast快速端口
Portfast快速端口是一个Catalyst的一个特性,能使交换机或中继端口跳过侦听学习状态而进入STP转发状态,在基于IOS交换机上,PortFast 只能用于连接到终端工作站的接入端口上。
当一个设备连接到一个端口上时,端口通常进入侦听状态。当转发延迟定时器超时后,进入学习状态,当转发延迟定时器第二次超时,端口进入到转发或者阻塞状态,当一个交换机或中继端口启用PortFast后,端口立即进入转发状态,但交换机检测到链路,端口就进入转发状态(插电缆后的2s) 。如果端口检测到一个环路同时又启用了PortFast 功能。它就进入阻塞状态。重要的是要注意到PortFast 值在端口初始化的时候才生效。如果端口由于某种原因又被迫进入阻塞状态,随后又需要回到转发状态,仍然要经过正常的侦听 。
启用PortFast的主要原因是防止启动周期小于30s的PC需要和交换机端口从未连接状态进入到转发状态,一些网卡直到 MAC 层软件驱动被实际加载之后才会启动链路。这种情况下就会导致一些故障,例如DHCP环境下,这可能会出现一些问题。
配置过程:
1) 进入全局配置模式 configure terminal
2) 选择端口 interface 端口
3) 设置该端口启用portfast功能
spanning-tree portfast [trunk]
如果你要在trunk端口上启用portfast,必须添加trunk关键字。
4) 验证配置
show spanning-tree interface 端口 portfast
-----------------------------------------------
VLAN0001 enabled
Show spanning-tree summary
------------------------------------
Switch is in pvst mode
Root bridge for: none
EtherChannel misconfig guard is enabled
Extended system ID is enabled
Portfast Default is enabled
PortFast BPDU Guard Default is disabled
Portfast BPDU Filter Default is disabled
Loopguard Default is disabled
UplinkFast is disabled
BackboneFast is disabled
Pathcost method used is short
案例:
conf t
spanning portfast default (所有的接入端口)
interface f0/24
spanning portfast trunk
end
show spanning summary
show runn inter f0/24
Building configuration...
Current configuration : 87 bytes
!
interface FastEthernet0/24
switchport mode trunk
spanning-tree portfast trunk
end
案例:
CCIE-LAB(V142)
题目要求:
在sw1的F0/18口连接一台PC,使其不需要经过spanning-tree的学习过程,直接forwarding,不会自动协商成trunk。
配置:
SW1
Interface f0/18
Spanning-tree portfast
UplinkFast
在 STP 收敛过程中,一些终端站点可能会不可达,这是基于站点所连接交换机端口的 STP 状态而定。这打乱网络连接,于是关键是减少STP的收敛时间和网络受影响的时间。快速级联链路(UplinkFast)就是用来加快STP收敛的。UplinkFast是一项交换机的功能,用于在链路或者交换机失效时加速新的根端口的选择。
配置过程:
1) 进入全局配置模式 configure terminal
2) 选择端口 interface 端口
3) 设置该端口启用portfast功能
spanning-tree portfast [trunk]
如果你要在trunk端口上启用portfast,必须添加trunk关键字。
4) 验证配置
show spanning-tree interface 端口 portfast
-----------------------------------------------
VLAN0001 enabled
Show spanning-tree summary
------------------------------------
Switch is in pvst mode
Root bridge for: none
EtherChannel misconfig guard is enabled
Extended system ID is enabled
Portfast Default is enabled
PortFast BPDU Guard Default is disabled
Portfast BPDU Filter Default is disabled
Loopguard Default is disabled
UplinkFast is disabled
BackboneFast is disabled
Pathcost method used is short
案例:
conf t
spanning portfast default (所有的接入端口)
interface f0/24
spanning portfast trunk
end
show spanning summary
show runn inter f0/24
Building configuration...
Current configuration : 87 bytes
!
interface FastEthernet0/24
switchport mode trunk
spanning-tree portfast trunk
end
案例:
CCIE-LAB(V142)
题目要求:
在sw1的F0/18口连接一台PC,使其不需要经过spanning-tree的学习过程,直接forwarding,不会自动协商成trunk。
配置:
SW1
Interface f0/18
Spanning-tree portfast
UplinkFast
在 STP 收敛过程中,一些终端站点可能会不可达,这是基于站点所连接交换机端口的 STP 状态而定。这打乱网络连接,于是关键是减少STP的收敛时间和网络受影响的时间。快速级联链路(UplinkFast)就是用来加快STP收敛的。UplinkFast是一项交换机的功能,用于在链路或者交换机失效时加速新的根端口的选择。
当链路或交换机故障,或 STP 重新配置后,UplinkFast可以加速选择一个新的根端口。根端口立即进入转发状态,Uplinkfast 通过减少最大更新速率来限制突发多博流量。定义了更新分组发送的最大速率,默认为150分组/分钟
Uplinkfast 对于网络边缘的布线间交换机非常有用。他不适用于骨干设备。UplinkFast 在直连链路故障后提供快速的收敛能力,并通过上行链路组在冗余。
如上图所示,A 和根交换机相连的端口为转发状态,另一个为阻塞状态。当到根交换机的上行链路断开后,如果配置了Uplinkfast到另一台上层交换机的链路将直接转入转发状态,而不需要经过减听和学习状态,如图,这个转换需要经过大约1-5秒。
一旦交换机将以个备用端口转为转发状态,交换机开始在该端口发送伪多播帧,本地桥接标中每个表项都对应一个伪多播帧,每个本地网桥表中的表项(除了与发生故障的根端口相关联的表项)都对应一个伪组播帧。缺省时,每100毫秒大约发送15个伪组播帧。它使用工作站地址做为源地址,目的地址01-00-0C-CD-CD-CD作为目的地址。 如果原来的交换机恢复连接,交换机在等待2倍转发延迟时间再加上5s后才将该端口转入转发状态。这是的邻接端口有时间经过侦听和学习状态才转入转发状态。
注意,
1) 启用了uplinkfast后,它会影响此交换机的所有的VLAN。不能在单个VLAN上配置UplinkFast。
2) 在已经配置了网桥优先级的VLAN上不能启动Uplinkfast。要在配置了网桥优先级的VLAN上启动uplinkfast,必须首先将vlan上的交换机优先级恢复到默认值(使用命令no spanning-tree vlan vlan号 priority)
3) 启动了UplinkFast时,所有VLAN的网桥优先级都被设为49152,并且如果不改变缺省的路径开销,所有接口和VLAN trunk的路径开销都会增加3000
配置过程:
1) 进入全局配置模式 configure terminal
2) 启用UplinkFast
spanning-tree uplinkfast [max-update-rate 每秒传输包]
取值为每秒0到32000个数据包,缺省值为150。通常这个值就足够了。
3) 验证配置
show spanning-tree uplinkfast
show spanning-tree summary
案例:
#show spanning summary
----------------------------
Switch is in pvst mode
Root bridge for: none
EtherChannel misconfig guard is enabled
Extended system ID is enabled
Portfast Default is enabled
PortFast BPDU Guard Default is enabled
Portfast BPDU Filter Default is disabled
Loopguard Default is disabled
UplinkFast is disabled
BackboneFast is enabled
Pathcost method used is short
Name Blocking Listening Learning Forwarding STP Active
---------------------- -------- --------- -------- ---------- ----------
VLAN0001 1 0 0 2 3
VLAN0010 1 0 0 1 2
VLAN0020 1 0 0 1 2
VLAN0100 1 0 0 1 2
VLAN0200 1 0 0 1 2
VLAN0201 1 0 0 1 2
---------------------- -------- --------- -------- ---------- ----------
6 vlans 6 0 0 7 13
#conf t
(config)#spanning uplinkfast
#show span uplinkfast
UplinkFast is enabled
Station update rate set to 150 packets/sec.
UplinkFast statistics
-----------------------
Number of transitions via uplinkFast (all VLANs) : 0
Number of proxy multicast addresses transmitted (all VLANs) : 0
Name Interface List
-------------------- ------------------------------------
VLAN0001 Fa0/23(fwd), Fa0/24
VLAN0010 Fa0/23(fwd), Fa0/24
VLAN0020 Fa0/23(fwd), Fa0/24
VLAN0100 Fa0/23(fwd), Fa0/24
VLAN0200 Fa0/23(fwd), Fa0/24
VLAN0201 Fa0/23(fwd), Fa0/24
#Show span summary
Switch is in pvst mode
Root bridge for: none
EtherChannel misconfig guard is enabled
Extended system ID is enabled
Portfast Default is enabled
PortFast BPDU Guard Default is disabled
Portfast BPDU Filter Default is disabled
Loopguard Default is disabled
UplinkFast is enabled
BackboneFast is disabled
Pathcost method used is short
#debug spanning uplinkfast
#conf t
(config)#int f0/23
(config-if)#switchport mode access
00:26:40: STP FAST: UPLINKFAST: make_forwarding on VLAN0001 FastEthernet0/24 root port id new: 128.24 prev: 128.23
00:26:40: %SPANTREE_FAST-7-PORT_FWD_UPLINK: VLAN0001 FastEthernet0/24 moved to Forwarding (UplinkFast).
00:26:40: STP FAST: make_forwarding: via UPLINKFAST: NOT: port FastEthernet0/18
VLAN0001 is: uplink enabled new root FastEthernet0/24 (not me)prev root exists(8017/FastEthernet0/23) cur state forwarding role uplink
00:26:40: STP: UFAST: removing prev root port Fa0/23 VLAN0001 port-id 8017
00:26:40: STP FAST: UPLINKFAST: make_forwarding on VLAN0010 FastEthernet0/24 root port id new: 128.24 prev: 128.23
00:26:40: STP: UFAST: removing prev root port Fa0/23 VLAN0010 port-id 8017
00:26:40: STP FAST: UPLINKFAST: make_forwarding on VLAN0020 FastEthernet0/24 root port id new: 128.24 prev: 128.23
00:26:40: STP: UFAST: removing prev root port Fa0/23 VLAN0020 port-id 8017
00:26:40: STP FAST: UPLINKFAST: make_forwarding on VLAN0100 FastEthernet0/24 root port id new: 128.24 prev: 128.23
00:26:40: STP: UFAST: removing prev root port Fa0/23 VLAN0100 port-id 8017
00:26:40: STP FAST: UPLINKFAST: make_forwarding on VLAN0200 FastEthernet0/24 root port id new: 128.24 prev: 128.23
00:26:40: STP: UFAST: removing prev root port Fa0/23 VLAN0200 port-id 8017
00:26:40: STP FAST: UPLINKFAST: make_forwarding on VLAN0201 FastEthernet0/24 root port id new: 128.24 prev: 128.23
00:26:40: STP: UFAST: removing prev root port Fa0/23 VLAN0201 port-id 8017
00:26:40: STP FAST: make_forwarding: via UPLINKFAST: NOT: port FastEthernet0/24
VLAN0001 is: uplink enabled new root FastEthernet0/24 (me)prev root exists(8017/<none>) cur state forwarding role uplink
00:26:40: STP FAST: make_forwarding: via UPLINKFAST: NOT: port FastEthernet0/18
VLAN0001 is: uplink enabled new root FastEthernet0/24 (not me)prev root exists(8017/<none>) cur state forwarding role uplink
00:26:40: STP FAST: make_forwarding: via UPLINKFAST: NOT: port FastEthernet0/23
VLAN0001 is: uplink enabled new root FastEthernet0/24 (not me)prev root exists(8017/<none>) cur state blocking role looped
00:26:40: %SPANTREE-7-RECV_1Q_NON_TRUNK: Received 802.1Q BPDU on non trunk FastEthernet0/23 VLAN1.
00:26:40: %SPANTREE-7-BLOCK_PORT_TYPE: Blocking FastEthernet0/23 on VLAN0001. Inconsistent port type.
00:26:55: %SPANTREE-2-UNBLOCK_CONSIST_PORT: Unblocking FastEthernet0/23 on VLAN0001. Port consistency restored.
00:26:55: STP FAST: make_forwarding: via UPLINKFAST: NOT: port FastEthernet0/23
VLAN0001 is: uplink enabled new root FastEthernet0/24 (not me)prev root exists(8017/<none>) cur state blocking role looped
00:26:56: STP FAST: make_forwarding: via UPLINKFAST: NOT: port FastEthernet0/24
VLAN0001 is: uplink enabled new root FastEthernet0/24 (me)prev root exists(8017/<none>) cur state forwarding role uplink
00:26:56: STP FAST: make_forwarding: via UPLINKFAST: NOT: port FastEthernet0/18
VLAN0001 is: uplink enabled new root FastEthernet0/24 (not me)prev root exists(8017/<none>) cur state forwarding role uplink
00:27:31: STP FAST: UPLINKFAST: make_forwarding on VLAN0001 FastEthernet0/23 root port id new: 128.23 prev: 128.24
00:27:31: %SPANTREE_FAST-7-PORT_FWD_UPLINK: VLAN0001 FastEthernet0/23 moved to Forwarding (UplinkFast).
#show spanning uplinkfast
UplinkFast is enabled
Station update rate set to 150 packets/sec.
UplinkFast statistics
-----------------------
Number of transitions via uplinkFast (all VLANs) : 7
Number of proxy multicast addresses transmitted (all VLANs) : 32
Name Interface List
-------------------- ------------------------------------
VLAN0001 Fa0/23(fwd), Fa0/24
VLAN0010 Fa0/24(fwd)
VLAN0020 Fa0/24(fwd)
VLAN0100 Fa0/24(fwd)
VLAN0200 Fa0/24(fwd)
VLAN0201 Fa0/24(fwd)
BackboneFast
BackboneFast快速骨干是Catalyst交换机在跟端口或阻塞端口从指定网桥收到一个劣质(inferor)的BPDU时会起动的一种特性。次级BPDU用来标识一个既是根桥又是指定网桥的交换机。当一个交换机收到一个劣质 BPDU,就以为这该交换机的一个非直接链路出现故障。也就是说,一个指定网桥已经丢失到根交换机的连接。按照 STP 规则,因为所有配置的最大生存时间(20秒), 交换机会忽略所有的劣质的BPDU。Backbonefast的作用就是欺骗这20秒的延迟。当交换机接收到了次级BPDU时,交换机会判断是否有到达根桥的其他路径。
有两种情况需要考虑:
1) 如果劣质BPDU 到达一个阻塞端口,则交换机上的根端口和其他阻塞端口成为到根交换机的备选路径
2) 如果劣质BPDU 到达根端口,所有的阻塞端口都会成为到根交换机的潜在备用。
Uplinkfast 对于网络边缘的布线间交换机非常有用。他不适用于骨干设备。UplinkFast 在直连链路故障后提供快速的收敛能力,并通过上行链路组在冗余。
如上图所示,A 和根交换机相连的端口为转发状态,另一个为阻塞状态。当到根交换机的上行链路断开后,如果配置了Uplinkfast到另一台上层交换机的链路将直接转入转发状态,而不需要经过减听和学习状态,如图,这个转换需要经过大约1-5秒。
一旦交换机将以个备用端口转为转发状态,交换机开始在该端口发送伪多播帧,本地桥接标中每个表项都对应一个伪多播帧,每个本地网桥表中的表项(除了与发生故障的根端口相关联的表项)都对应一个伪组播帧。缺省时,每100毫秒大约发送15个伪组播帧。它使用工作站地址做为源地址,目的地址01-00-0C-CD-CD-CD作为目的地址。 如果原来的交换机恢复连接,交换机在等待2倍转发延迟时间再加上5s后才将该端口转入转发状态。这是的邻接端口有时间经过侦听和学习状态才转入转发状态。
注意,
1) 启用了uplinkfast后,它会影响此交换机的所有的VLAN。不能在单个VLAN上配置UplinkFast。
2) 在已经配置了网桥优先级的VLAN上不能启动Uplinkfast。要在配置了网桥优先级的VLAN上启动uplinkfast,必须首先将vlan上的交换机优先级恢复到默认值(使用命令no spanning-tree vlan vlan号 priority)
3) 启动了UplinkFast时,所有VLAN的网桥优先级都被设为49152,并且如果不改变缺省的路径开销,所有接口和VLAN trunk的路径开销都会增加3000
配置过程:
1) 进入全局配置模式 configure terminal
2) 启用UplinkFast
spanning-tree uplinkfast [max-update-rate 每秒传输包]
取值为每秒0到32000个数据包,缺省值为150。通常这个值就足够了。
3) 验证配置
show spanning-tree uplinkfast
show spanning-tree summary
案例:
#show spanning summary
----------------------------
Switch is in pvst mode
Root bridge for: none
EtherChannel misconfig guard is enabled
Extended system ID is enabled
Portfast Default is enabled
PortFast BPDU Guard Default is enabled
Portfast BPDU Filter Default is disabled
Loopguard Default is disabled
UplinkFast is disabled
BackboneFast is enabled
Pathcost method used is short
Name Blocking Listening Learning Forwarding STP Active
---------------------- -------- --------- -------- ---------- ----------
VLAN0001 1 0 0 2 3
VLAN0010 1 0 0 1 2
VLAN0020 1 0 0 1 2
VLAN0100 1 0 0 1 2
VLAN0200 1 0 0 1 2
VLAN0201 1 0 0 1 2
---------------------- -------- --------- -------- ---------- ----------
6 vlans 6 0 0 7 13
#conf t
(config)#spanning uplinkfast
#show span uplinkfast
UplinkFast is enabled
Station update rate set to 150 packets/sec.
UplinkFast statistics
-----------------------
Number of transitions via uplinkFast (all VLANs) : 0
Number of proxy multicast addresses transmitted (all VLANs) : 0
Name Interface List
-------------------- ------------------------------------
VLAN0001 Fa0/23(fwd), Fa0/24
VLAN0010 Fa0/23(fwd), Fa0/24
VLAN0020 Fa0/23(fwd), Fa0/24
VLAN0100 Fa0/23(fwd), Fa0/24
VLAN0200 Fa0/23(fwd), Fa0/24
VLAN0201 Fa0/23(fwd), Fa0/24
#Show span summary
Switch is in pvst mode
Root bridge for: none
EtherChannel misconfig guard is enabled
Extended system ID is enabled
Portfast Default is enabled
PortFast BPDU Guard Default is disabled
Portfast BPDU Filter Default is disabled
Loopguard Default is disabled
UplinkFast is enabled
BackboneFast is disabled
Pathcost method used is short
#debug spanning uplinkfast
#conf t
(config)#int f0/23
(config-if)#switchport mode access
00:26:40: STP FAST: UPLINKFAST: make_forwarding on VLAN0001 FastEthernet0/24 root port id new: 128.24 prev: 128.23
00:26:40: %SPANTREE_FAST-7-PORT_FWD_UPLINK: VLAN0001 FastEthernet0/24 moved to Forwarding (UplinkFast).
00:26:40: STP FAST: make_forwarding: via UPLINKFAST: NOT: port FastEthernet0/18
VLAN0001 is: uplink enabled new root FastEthernet0/24 (not me)prev root exists(8017/FastEthernet0/23) cur state forwarding role uplink
00:26:40: STP: UFAST: removing prev root port Fa0/23 VLAN0001 port-id 8017
00:26:40: STP FAST: UPLINKFAST: make_forwarding on VLAN0010 FastEthernet0/24 root port id new: 128.24 prev: 128.23
00:26:40: STP: UFAST: removing prev root port Fa0/23 VLAN0010 port-id 8017
00:26:40: STP FAST: UPLINKFAST: make_forwarding on VLAN0020 FastEthernet0/24 root port id new: 128.24 prev: 128.23
00:26:40: STP: UFAST: removing prev root port Fa0/23 VLAN0020 port-id 8017
00:26:40: STP FAST: UPLINKFAST: make_forwarding on VLAN0100 FastEthernet0/24 root port id new: 128.24 prev: 128.23
00:26:40: STP: UFAST: removing prev root port Fa0/23 VLAN0100 port-id 8017
00:26:40: STP FAST: UPLINKFAST: make_forwarding on VLAN0200 FastEthernet0/24 root port id new: 128.24 prev: 128.23
00:26:40: STP: UFAST: removing prev root port Fa0/23 VLAN0200 port-id 8017
00:26:40: STP FAST: UPLINKFAST: make_forwarding on VLAN0201 FastEthernet0/24 root port id new: 128.24 prev: 128.23
00:26:40: STP: UFAST: removing prev root port Fa0/23 VLAN0201 port-id 8017
00:26:40: STP FAST: make_forwarding: via UPLINKFAST: NOT: port FastEthernet0/24
VLAN0001 is: uplink enabled new root FastEthernet0/24 (me)prev root exists(8017/<none>) cur state forwarding role uplink
00:26:40: STP FAST: make_forwarding: via UPLINKFAST: NOT: port FastEthernet0/18
VLAN0001 is: uplink enabled new root FastEthernet0/24 (not me)prev root exists(8017/<none>) cur state forwarding role uplink
00:26:40: STP FAST: make_forwarding: via UPLINKFAST: NOT: port FastEthernet0/23
VLAN0001 is: uplink enabled new root FastEthernet0/24 (not me)prev root exists(8017/<none>) cur state blocking role looped
00:26:40: %SPANTREE-7-RECV_1Q_NON_TRUNK: Received 802.1Q BPDU on non trunk FastEthernet0/23 VLAN1.
00:26:40: %SPANTREE-7-BLOCK_PORT_TYPE: Blocking FastEthernet0/23 on VLAN0001. Inconsistent port type.
00:26:55: %SPANTREE-2-UNBLOCK_CONSIST_PORT: Unblocking FastEthernet0/23 on VLAN0001. Port consistency restored.
00:26:55: STP FAST: make_forwarding: via UPLINKFAST: NOT: port FastEthernet0/23
VLAN0001 is: uplink enabled new root FastEthernet0/24 (not me)prev root exists(8017/<none>) cur state blocking role looped
00:26:56: STP FAST: make_forwarding: via UPLINKFAST: NOT: port FastEthernet0/24
VLAN0001 is: uplink enabled new root FastEthernet0/24 (me)prev root exists(8017/<none>) cur state forwarding role uplink
00:26:56: STP FAST: make_forwarding: via UPLINKFAST: NOT: port FastEthernet0/18
VLAN0001 is: uplink enabled new root FastEthernet0/24 (not me)prev root exists(8017/<none>) cur state forwarding role uplink
00:27:31: STP FAST: UPLINKFAST: make_forwarding on VLAN0001 FastEthernet0/23 root port id new: 128.23 prev: 128.24
00:27:31: %SPANTREE_FAST-7-PORT_FWD_UPLINK: VLAN0001 FastEthernet0/23 moved to Forwarding (UplinkFast).
#show spanning uplinkfast
UplinkFast is enabled
Station update rate set to 150 packets/sec.
UplinkFast statistics
-----------------------
Number of transitions via uplinkFast (all VLANs) : 7
Number of proxy multicast addresses transmitted (all VLANs) : 32
Name Interface List
-------------------- ------------------------------------
VLAN0001 Fa0/23(fwd), Fa0/24
VLAN0010 Fa0/24(fwd)
VLAN0020 Fa0/24(fwd)
VLAN0100 Fa0/24(fwd)
VLAN0200 Fa0/24(fwd)
VLAN0201 Fa0/24(fwd)
BackboneFast
BackboneFast快速骨干是Catalyst交换机在跟端口或阻塞端口从指定网桥收到一个劣质(inferor)的BPDU时会起动的一种特性。次级BPDU用来标识一个既是根桥又是指定网桥的交换机。当一个交换机收到一个劣质 BPDU,就以为这该交换机的一个非直接链路出现故障。也就是说,一个指定网桥已经丢失到根交换机的连接。按照 STP 规则,因为所有配置的最大生存时间(20秒), 交换机会忽略所有的劣质的BPDU。Backbonefast的作用就是欺骗这20秒的延迟。当交换机接收到了次级BPDU时,交换机会判断是否有到达根桥的其他路径。
有两种情况需要考虑:
1) 如果劣质BPDU 到达一个阻塞端口,则交换机上的根端口和其他阻塞端口成为到根交换机的备选路径
2) 如果劣质BPDU 到达根端口,所有的阻塞端口都会成为到根交换机的潜在备用。
如果劣质BPDU 到达根端口,且没有阻塞端口,交换机将自己定义为根交换机。如果交换机存在备
用路径,它适用备用路径传送一种新的协议,通常情况下该模式会节约 20s的时间。
如上图:当L1 Down时,SWB 会发送一个劣等BPDU,告诉 SWC,我SWB 是Root,SWC 经过和SWA沟通(使用Root Link Query BPDU查询),SWA 告诉SWC,我SWA还活着呢。然后SWC告诉 SWB,SWA还活着,它还是Root。
BackboneFast应用在所有的VLAN中,不支持令牌环VLAN
配置过程:
1) 进入全局配置模式 configure terminal
2) 启用BackboneFast
spanning-tree backbonefast
3) 验证配置
show spanning-tree backbonefast
----------------------------------------------------
BackboneFast is enabled
BackboneFast statistics
-----------------------
Number of transition via backboneFast (all VLANs) : 0
Number of inferior BPDUs received (all VLANs) : 0
Number of RLQ request PDUs received (all VLANs) : 0
Number of RLQ response PDUs received (all VLANs) : 0
Number of RLQ request PDUs sent (all VLANs) : 0
Number of RLQ response PDUs sent (all VLANs) : 0
show spanning-tree summary
BPDU保护
BPDU保护仅用在PortFast模式。它被网络设计者用来加强STP域边界。从而保持与其的活动拓扑。在启用STP PortFast端口之后的设备被禁止影响STP拓扑。对于配置了portfast特性的接口,它不应当接收到BPDU,如果配置了PortFast特性的接口接收了BPDU,那就表示了无效的配置,可能就会产生桥接环路,通过配置BPDU保护后,配置了PortFast的端口如果收到BPDU将会把端口状态调整到Err-Disable.如下是一个信息:
2000 May 12 15:13:32 %SPANTREE-2-RX_PORTFAST:Received BPDU on PortFast enable port. Disabling 2/1
2000 May 12 15:13:32 %PAGP-5-PORTFROMSTP:Port 2/1 left bridge port 2/1
如下图所示,A的优先级为8192,为该vlan的根桥,B的优先级为16
BPDU保护仅用在PortFast模式。它被网络设计者用来加强STP域边界。从而保持与其的活动拓扑。在启用STP PortFast端口之后的设备被禁止影响STP拓扑。对于配置了portfast特性的接口,它不应当接收到BPDU,如果配置了PortFast特性的接口接收了BPDU,那就表示了无效的配置,可能就会产生桥接环路,通过配置BPDU保护后,配置了PortFast的端口如果收到BPDU将会把端口状态调整到Err-Disable.如下是一个信息:
2000 May 12 15:13:32 %SPANTREE-2-RX_PORTFAST:Received BPDU on PortFast enable port. Disabling 2/1
2000 May 12 15:13:32 %PAGP-5-PORTFROMSTP:Port 2/1 left bridge port 2/1
如下图所示,A的优先级为8192,为该vlan的根桥,B的优先级为16
转载于:https://blog.51cto.com/kevinsong/199512