一、portfast 端口加速
- 针对交换机的access接口,连接的是终端用户例如router、PC、server 等等,这些不需要运行生成树的接口。
- access接口直接进入listening状态,等待 30s才能进入转发状态.
- 位置:接入层交换机的access 接口
- 做完之后节约时间:30s
- 配置
sw1(config)#int range ethernet 2/0-1
sw1(config-if-range)#spanning-tree portfast
提示:只能在接入设备启用
%Warning: portfast should only be enabled on ports connected to a single
host. Connecting hubs, concentrators, switches, bridges, etc... to this
interface when portfast is enabled, can cause temporary bridging loops.
Use with CAUTION
%Portfast will be configured in 2 interfaces due to the range command
but will only have effect when the interfaces are in a non-trunking mode.
注意:不同型号的交换机命令稍有不同
- 全局启用:所有接口启用
sw1(config)#spanning-tree portfast edge default
- 在某些接口上关闭portfast
sw1(config)#int e0/1
sw1(config-if)#spanning-tree portfast disable
- 在trunk接口启用portfast(默认情况下,接口一旦收到BPDU,portfast 失效),用于语音VLAN,语音VLAN要启用QOS,就要启用802.1Q,接口就得做trunk接口
sw1(config)#int e0/1
sw1(config-if)#spanning-tree portfast edge trunk
二、uplinkfast 上行链路加速
- 若上行链路发送故障,阻塞端口直接进入listening 状态,默认等待30s进 入forwarding
- 位置:所有的接入层交换机上
- 节约时间30s
- 配置
首先将sw1,sw2,sw3上的所有接口关闭,然后打开sw1上的e0/0,e0/2,sw2上的e0/0,e1/0,sw3上的e0/2,e1/0
则sw1为根网桥,sw1接口全为指定端口,sw2上e0/0为根端口,e1/0为指定端口,sw3上e0/2为根端口,e1/0为阻塞端口
结果
sw1
Interface Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Et0/0 Desg FWD 100 128.1 Shr
Et0/2 Desg FWD 100 128.3 Shr
sw2
Interface Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Et0/0 Root FWD 100 128.1 Shr
Et1/0 Desg FWD 100 128.33 Shr
sw3
Interface Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Et0/2 Root FWD 100 128.3 Shr
Et1/0 Altn BLK 100 128.33 Shr
打开sw3的debug
sw3#debug spanning-tree events
Spanning Tree event debugging is on
关闭sw3上e0/2,即down掉sw3到sw1的上行链路
sw3(config)#int e0/2
sw3(config-if)#shu
结果:可以看到e1/0端口立即进入listening状态,随即15秒后进入learning,再15秒进入forwarding,即e1/0阻塞端口成为根端口转发数据,整个过程用了30s
sw3(config-if)#
*Nov 24 22:16:35.014: STP: VLAN0001 new root port Et1/0, cost 200
*Nov 24 22:16:35.014: STP: VLAN0001 Et1/0 -> listening
*Nov 24 22:16:35.014: STP[1]: Generating TC trap for port Ethernet0/2
sw3(config-if)#
*Nov 24 22:16:37.018: %LINK-5-CHANGED: Interface Ethernet0/2, changed state to administratively down
sw3(config-if)#
*Nov 24 22:16:37.018: STP: VLAN0001 sent Topology Change Notice on Et1/0
*Nov 24 22:16:38.026: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet0/2, changed state to down
sw3(config-if)#
*Nov 24 22:16:50.018: STP: VLAN0001 Et1/0 -> learning
sw3(config-if)#
*Nov 24 22:17:05.018: STP[1]: Generating TC trap for port Ethernet1/0
*Nov 24 22:17:05.018: STP: VLAN0001 sent Topology Change Notice on Et1/0
*Nov 24 22:17:05.018: STP: VLAN0001 Et1/0 -> forwarding
打开e0/2端口,恢复之前的状态
然后做uplinkfast
sw3(config)#spanning-tree uplinkfast
变化:
- 显示 Uplinkfast enabled
- 优先级变为 priority 49152,32768+4*4096=49152,
- cost值增加3000
增大了优先级,增加了cost值,意思他要离根网桥远一点,不能成为根网桥,一般最底层的接入层交换机才做
再次关闭e0/2端口
结果
*Nov 24 23:04:45.790: %SPANTREE_FAST-7-PORT_FWD_UPLINK: VLAN0001 Ethernet1/0 moved to Forwarding (UplinkFast).
表示e1/0口直接成为根端口转发数据
Interface Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Et1/0 Root FWD 3100 128.33 Shr
全局模式
Spanning tree uplinkfast rata-limit 100
(单位数据包每秒)
开始sw3上的e1/0接口是阻塞的,通过e0/2接口学习mac地址转发数据,若e0/2 down掉,则e1/0成为根端口转发数据,此时sw2上则需要学习sw3上大量的mac地址,为了做好切换过程,做了全局uplinkfast后
,在e0/2未down之前会通过e1/0阻塞端口向上发送伪包,为了让sw2学习sw3上的mac地址,此时若e0/2 down掉,e1/0成为根端口后可以直接转发数据。
三、backbonefast 骨干加速
-
若骨干链路发生故障,下行链路经过50s进入forwarding状态;
-
启用backbonefast特性,若收到次级BPDU,通过根端口向根网桥发送 RIQ查询(询问优质根是否正常),若正常由根网桥返回RIQ应答,描述根正常,则blocking接口进入listening状态,经过30s进入forwarding.
-
部署位置:所有交换机
-
节约时间:20s
-
启用backbonefast特性
重新打开sw3的e0/2接口,则e0/2重新成为根端口,e1/0为阻塞端口
若down掉sw1连接sw2的骨干链路(关闭sw2的e0/0),则sw3的e1/0接口成为指定端口,sw2的e1/0成为根端口,这个过程中sw3的e1/0接口成为指定端口需要经过50ssw3(config-if)#
*Nov 24 23:35:02.798: STP: VLAN0001 heard root 28673-0203.e900.0200 on Et1/0
sw3(config-if)#
*Nov 24 23:35:03.966: STP: VLAN0001 Et1/0 -> listening
*Nov 24 23:35:04.798: STP: VLAN0001 heard root 28673-0203.e900.0200 on Et1/0
*Nov 24 23:35:04.798: STP: VLAN0001 Topology Change rcvd on Et1/0
*Nov 24 23:35:04.798: STP: VLAN0001 sent Topology Change Notice on Et0/2
sw3(config-if)#
*Nov 24 23:35:18.974: STP: VLAN0001 Et1/0 -> learning
sw3(config-if)#
*Nov 24 23:35:33.974: STP[1]: Generating TC trap for port Ethernet1/0
*Nov 24 23:35:33.974: STP: VLAN0001 sent Topology Change Notice on Et0/2
*Nov 24 23:35:33.974: STP: VLAN0001 Et1/0 -> forwarding
*Nov 24 23:35:33.974: stp_state_change_completed: Et1/0. new state = FWD
详解:
骨干链路断开后,sw2不能收到sw1的BPDU,所以sw2就以为自己是根网桥,则sw2会向sw3发送BPDU(此BPDU与之前向sw3发送的不一样,之前发送的rid是sw1,bid是sw2自己,现在发送的rid和bid都是sw2自己),此时sw3通过sw1收到的BPDU,rid要优于sw2发送的(称sw2的为次级BPDU),故sw3会忽略sw2发送的BPDU,但sw3的阻塞端口e1/0会一直监听sw2发来的BPDU,之前一直从sw2收到的是来自于根网桥的BPDU,现在不能收到来自于根网桥的BPDU了,超时时间20s,则sw3的e1/0端口会进入listening状态,告诉sw2根网桥还活着(向sw2发送优质BPDU),直到进入forwarding,整个过程需要50s
backbonefast建议在所有交换机都做
骨干链路断开之后,sw2会向sw3发送次级BPDU,sw3会忽略,做了backbonefast后,收到次级BPDU后,sw3会主动向根网桥发送根链路查询请求报文(RLQ request) ,根网桥会回复根链路查询响应报文(RLQ response),sw3知道sw2收不到根网桥发送的BPDU,以为自己是根网桥了,所以sw3的e1/0接口直接进入listening状态,告诉sw2根网桥还活着(向sw2发送优质BPDU),直到进入forwarding,整个过程需要30s,节约了20s。
重新打开sw2的e0/0端口
配置
sw1(config)#spanning-tree backbonefast
sw2(config)#spanning-tree backbonefast
sw3(config)#spanning-tree backbonefast
关闭sw2的e0/0端口
结果
sw3(config)#
*Nov 25 00:07:22.998: STP: VLAN0001 heard root 28673-0203.e900.0200 on Et1/0
*Nov 25 00:07:22.998: STP: VLAN0001 Et1/0 -> listening
可知sw3的e1/0端口立即进入listening状态。
根端口:root port RP
指定端口:DP
阻塞端口:NDP