UplinkFast
裁人
UplinkFast是思科专有特性,它能够在上联链路失效时减少STP的收敛时间。这个特性是设计来运行在交换环境中当交换机拥有至少一个alternate/backup根端口(处于blocking状态的端口),思科建议只在接入层交换机而且是拥有闭塞(blocked)端口时使用UplinkFast这个特性。。
背景知识:
用户接在接入层交换机上,接入层交换机有两条上联链路,以实现冗余。但冗余换来的代价就是物理上的环路。此时STP会把某个端口闭塞(block)以防环。
如果接入交换机到D1的主链路down掉,STP会重新计算,最后会把到连接到D2那个闭塞端口打开,以恢复连接。如果是STP默认参数,这个恢复时间需要30秒,如果使用aggressive timer,可以降到14秒,但使用了思科专有特性UplinkFast,收敛时间可以降到1秒内!
没有使用UplinkFast时的情况:
1、上图中,接入交换机到汇聚交换机D1的上联链路失效。D1为根。
2、接入交换机左边端口P1立即DOWN掉,接入交换机宣告它到D1的链路失效。接入交换机认为连接到D2那条链路(仍然在接收BPDU)的端口为替代根端口(alternate root port),所以开始把这个端口的状态从blocking转变到forwarding,但这个过程需要经历监听(listening)和学习(learning)两个状态,每个状态都要消耗一个转发延迟(forward_delay,默认为15秒),所以这个端口从闭塞到转发需要15*2=30秒的时间。
3、转发延迟(forward_delay,默认为15秒)可以修改,但最小值只能是7秒,所以通过修改参数可以使得收敛时间由30秒降为14秒,但是这个修改操作需要谨慎使用!
UplinkFast操作原理
UplinkFast特性基于上联链路组(uplink group)。在一个交换机上,上联链路组由根端口
和所有提供到根桥的替代连接的端口组成。如果根端口失效(主链路失效),那么上联链路组中下一个最小COST值的端口会被选择来替代根端口。
看下图能帮助你理解
1、蓝色R代表根端口,绿色d代表指定端口。绿色箭头表示根桥产生BPDU并由各交换机
在它们的指定端口上转发这些BPDU。
2、当一个端口接收到BPDU,表明它拥有到根桥的路径(因为BPDU是由根桥产生)。
3、交换机A上,有三个端口接收BPDU(表明三个端口可以去往根桥),但发送BPDU的端口是指定端口,所以这端口不能去往根桥。
4、交换机上除了根端口之外所有接收BPDU的端口都被闭塞(block)。这是因为一个接收BPDU的端口能够去往根桥,所以如果交换机上有两个以上能够去往根桥的端口,那么这交换机就会有环路,所以要闭塞。
5、自环端口不能提供替代路径到根桥。就如上图中的交换机B,自环的被闭塞的端口是不能接收自己的BPDU的,所以这个闭塞端口不能提供到跟前的替代路径。
在一个给定交换机里,根桥和所有非自环的闭塞端口,组成一个上联链路组。
上联链路失效时使用UplinkFast的情况:
立即切换到替代上联链路
1、接入交换机A的上联链路组包括根端口P1和非自环闭塞端口P2
2、当主链路失效,交换机A检测到P1状态DOWN。此时它立刻知道它唯一一条通往根桥的路径失效了,而且其它上联链路组中的路径(如P2)被闭塞了!
3、端口P2立即置为转发(forwarding)状态(它违背了标准STP操作过程)。
CAM表更新
当UplinkFast完成了在两个链路间的“快速切换”后,网络中不同的交换机上的CAM表(Content-Addressable Memory)会短暂的无效,从而减慢实际收敛时间。
上图中可见,S发的包为了达到C,需要经过D2—D1—A,如果交换机A左边主链路失效,
UplinkFast会马上启用P2端口那条链路,此时网络中交换机的CAM就不再准确!S发包给C,包还是会走D2—D1—A,D1会把包丢弃。就算是有拓扑变更机制(topology change mechanism),也需要最多15秒来解决这个问题。
江恩理论
为了解决这个问题,交换机A泛洪虚拟的包(dummy packets),这些包使用交换机CAM表里有的不同的MAC地址作为源地址,如上图中,交换机A用C作为源地址产生一个包,目的地址为思科专有的组播MAC地址。使用这种机制,就可以更新网络中其他交换机的CAM表了。
如果添加新的上联链路,情况是怎样?
就如前面提到的,如果主链路失效,那么UplinkFast特性会马上启用上联链路组中的COST值最小的那条链路。那如果,失效的那条主链路又恢复了呢?UplinkFast会马上允许端口P1接管,而让端口P2重新回到闭塞状态吗?
答案是不会的!为什么?主要考虑到:
1、稳定性。如果主链路是突然好了但很快又失效,不断地闪断,会影响网络稳定性。跑车壁纸
2、UplinkFast能做的只是立即让交换机A主链路端口P1状态置为转发(forwarding),但问题来了,主上联链路对端汇聚交换机D1的端口是遵守常规STP过程的,需要30秒才能变为转发,所以UplinkFast特性把接入交换机A的P1口立即置为转发是无补于事的!
最好的解决方案就是保持现有上联链路有效,以及保持端口P1闭塞直到对端P3开始转发。P1与P2间切换延迟时间为2个转发延迟+5秒,一共35秒。为什么要加上5秒?这是给其他协议(比如以太网捆绑的DTP协议)留有一定的协商时间。
所以,就算主上联链路UP起来了,UplinkFast也会把它闭塞35秒。
注意:如果主链路经历了上面提到的35秒后,变成可用的转发状态后,又再次失效,此时
UplinkFast又会马上切换到P2那条链路,此时,P1端口不允许立即再次切换为主上联链路了,需要等待一个大约也是35秒的时间。
配置UplinkFast意味着一些变化
UplinkFast一旦在交换机上配置,交换机就会自动调整一些STP参数:
1、交换机的桥优先级会增加到一个比缺省值要高的值,以保证交换机不会被选为根桥(根桥没有任何根端口)
2、交换机所有端口的COST值会增加3000,以保证交换机端口不会被选举为指定端口。
所以,在你配置UplinkFast特性之前要谨慎,因为STP参数会自动调整,有可能会引起现有STP拓扑改变。
UplinkFast的配置
查看STP确实的参数值:
A#show spanning-tree
如烟歌词VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 8193
Address 0016.4748.dc80
Cost 19
Port 130 (FastEthernet3/2)
Hello Time 2 c Max Age 20 c Forward Delay 15 c
Bridge ID Priority 32768
Address 0009.b6df.c401
Hello Time 2 c Max Age 20 c Forward Delay 15 c
Aging Time 300
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa3/1 Altn BLK 19 128.129 P2p
!--- Port connecting to D2
Fa3/2 Root FWD 19 128.130 P2p
!--- Port connecting to D1
配置UplinkFast以及查看STP参数的变化:
A(config)#spanning-tree uplinkfast
A(config)#do show spanning-tree
免费学习网VLAN0001
Spanning tree enabled protocol ieee
修心 Root ID Priority 8193
Address 0016.4748.dc80
Cost 3019
Port 130 (FastEthernet3/2)
Hello Time 2 c Max Age 20 c Forward Delay 15 c
Bridge ID Priority 49152
Address 0009.b6df.c401
Hello Time 2 c Max Age 20 c Forward Delay 15 c
Aging Time 300化身石桥
Uplinkfast enabled
怀孕肚子尖
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa3/1 Altn BLK 3019 128.129 P2p
Fa3/2 Root FWD 3019 128.130 P2p
可见,桥ID优先级由确实的32768增加到49152,端口COST值由19增加3000到3019。