下面的讲述中提到的拓扑结构都是指的这个图。
在正常的工作状态下,L2是活动的,那么L1肯定就是阻塞的了。如果是L2出现故障后,那么交换机C可以立马检测到,并且把L3链路激活。利用的就是uplinkfast特性。也就说这个特性可以检测到直接的链路故障。但是当L1破坏的时候呢?正常的情况下,是这样的工作过程:当L1破坏了以后,交换机B就接收不到任何的BPDU了,这个时候,他就会自动的参与到根交换机的选举中,也就是他会发送自己的BPDU,其中包含着他本身的一些信息。这个时候呢,这个阻塞的L3链路就会传输BPDU到交换机C,那么他就会比较这个信息吧。如果这个成功的话,那么他不会立即应用这个根交换机的,他会在最大寿命时间以后,才会删除那个先前的根交换机的信息并应用现在这个新的根交换机。那么这个过程我们可以看到是:最大寿命时间+2倍的转发延迟时间。默认的情况是:20+2*15=50秒。
这样的话,时间就算是很长的了。如果我们使用了Backbone Fast特性的话,那么收敛的时间就会减少到30S。就不会有那个最大寿命时间了。下面看下使用了这个特性以后的工作过程:当L1坏掉的时候,交换机B还是那样,就认为自己是老大了,然后发送BPDU,宣告自己的一些信息。告诉别人就是老大。这个时候,通过L3传输到交换机C。交换机C收到这样的信息后,不会茫然的接受了,而是要从原来的根接口发送一个根链路查询BPDU。目的就是为了确定下以前的那个根交换机是否还活着呢,如果是的话,就不去理睬这个从交换机B发来的信息了,而是把那个接着交换机B的端口进入到转发状态,并且是指定端口的角色。这样的话,交换机B又可以到达根交换机了。你看,这样的话,收敛时间不是相当的快吗?就是一个BPDU在L2上的来回时间。也许朋友们得说,不是还在L上跑了吗?因为只有在L2上跑的这段时间网络状态才是不稳定的啊。那个L3上跑的时候,网络的结构还是很稳定的。网络里的数据还是可以进行正常转发的。上面是根交换机不变的情况。如果说这个时候,交换机C的根端口也出了问题,那如何是好呢?现在这个时候,如果除了这个根端口以后,还有其他的备份的链路吗?(当然了,在这种情况下,是绝对没有了,因为我们一定要注意我们实施这个特定的前提条件是什么、、、)这个时候,我们只能考虑是根端口坏掉了,并且没有其他的链路了,怎么办呢?那么就接受这个交换机B成为根交换机,并且转变那个端口的状态和角色,立马进入工作状态。也不会等待交换机C的最大寿命时间到期了。最后一句非常的重要。这个就是运用这个特性和不运用这个特性最大的区别。这样一来呢,不但检测到了间接链路的故障,还大大提高了收敛时间。非常的好啊~~~
这个命令的实现也是在全局配置模式下:spanning-tree backbonefast 。
并且一定要记住的是:如果想让这个特性最好的为网络服务的话,那么加入的交换机都得使用这个特性。如果不是全部开启的话,那么肯定链路收敛的时候速度会不同步啊~~就会影响网络的收敛速度了。
这3个特性的简单比较:
Portfast:应用在接入模式的端口上的,为了防止下面的接网络设备,同时也加快了端口的转换速度,提高了STP的收敛速度。还会抑制BPDU,只要接收到BPDU,端口就会进入到Err-disable状态。只有到了时间或者手工干预才可以啊~~~
Uplink Fast:这个也是应用在端口上的,到那时却是Trunk模式的端口。这个特性使得在活动链路出现故障的时候能够快速的进行端口角色的转换,并且还以抑制BPDU,减少发送这些BPDU所用的时间。并且在一定的程度上还有防护根交换机的功能。
Backbone Fast :可以说是第二个特性的补充!不但可以检测到间接的链路故障,还可以大大的缩短STP的收敛时间。
上述的这些特性都是在2层交换机上进行设置的。并且这些特性在设置的时候,一定要非常的清楚是设置在那个端口上,是设置上什么类型的端口上。如果想做到熟练的应用,我觉得对网络的拓扑结构有一个清楚的了解是非常重要的,可以说是实施这些特性的基础~~~
下面呢,我们还要讲几个特性,说是增加STP的弹性(么是弹性啊?哈哈、、、)
BPDU防护特性:这个特性就是说端口不接收BPDU,如果接收到的话,就会进入err-disable状态。只有到了超时的时间或者是手动进行干预才可以回复过来。这个特性我们在上面讲PortFast特性的时候也提及到了。我们使用这个命令的时候,是在全局配置模式下的:spanning-tree portfast bpduguard default。他的解释是这样的:Enable bdpu filter by default on all portfast ports 。也就说在这个交换机的所有的portfast接口上都会使用这个特性,都不接收BPDU。我们还可以在特性的接口上进行配置:spanning-tree bpduguard enable 就是在这个端口上启用这个命令。他的功能的解释是这样的:Don't accept BPDUs on this interface 。看清楚了啊,只是写得不接收BPDU 哦。我用的CISCO2960。
BPDU过滤特性:这个命令的功能,我们可以使用在交换机上查看命令的方式,来理解这个命令的功能:全局配置命令spanning-tree portfast bpdufilter default。对他的意思的解释是这样的:Enable bdpu filter by default on all portfast ports 。要注意到,说的是在所有的PORTFAST接口上实现这个特性。我们还可以到接口配置模式下进行配置:spanning-tree bpdufilter enable 。看看对这个端口下的BPDU过滤特性的解释:Don't send or receive BPDUs on this interface 。可以晓得BPDU的防护特性和过滤特性有什么差距了吧~~~一个是只是不接收,而这个是发送和接收都是不允许的~~~~这样的话就彻底的保证了这个端口的下面的设备不会对网络的正常运行产生不良的影响。
注意啊,这些特性的实施都是建立在端口是接入模式的端口之上的哦~~~并且,都是启动了portfast特性的可别忽略了前提。 我们可以先是全没模式下启动这个特性,然后我们再在那些特性的上联端口上关闭掉这个特性: spanning-tree porfast diable 。其实这个叙述是多余的,因为启动这个特性的接口都是接入模式的端口,而那些上联的端口是trunk模式的,呵呵、、、快迷糊了~~~
根防护特性:这个功能就是通过在接口上运用一个命令来实现的。当然了,这个接口你得 慎重的选择。当运用了这个特性以后,这个端口就被强制的设置成STP的指定端口的角色。这样的话,下面无论接什么类型的设备,都不会成为根交换机了。因为即使是下面这个设备发送来更好的BPDU,那么他也不会受理。就直接进入err-disable了,这个状态在这里又叫做STP不一致状态(stp inconsistence)。一直到下面的这个设备不再发送BPDU了,这个端口才恢复到正常的转发状态。因为这个特性的霸道性,所以我们应用的时候得格外的小心谨慎。我们要在根交换机的各个端口上使用这个特性,是可以的。我们也可以在我们故意设置的备份交换机上设置这个特性也是可以的。但是也得选择是那些端口上。这样的话,就可以完全的巩固根交换机的身份了嘛,不会让外来的设备来捣蛋了~~~嘿嘿、、这个根防护特性是在端口模式下配置的:spanning-tree guard root ,解释是这样的:Set guard mode to root guard on interface ~ 想想看,如果我们把各个宿舍的网口都设置成这个根防护特性,那么他们下面就不能接小交换机了啊~~其实对于2层交换机的这种连接终端的端口实施一个BPDU过滤就已经够用的了吧,就不用再用这个更狠的了吧~~~
同时呢,我们也需要清楚某个端口下的网络的最大的流量啊~~因为如果下面的数据量很大,但是那个端口的带宽很小的,就会产生丢包的现象,厉害了就会导致链路OVER,那样的话,就很有可能导致网络拓扑的改变,如果是频繁改变的话,就会严重影响网络的稳定性啊~~~所以从这个角度来看,理解一个端口的带宽大小和这个端口下的网络的最大流量是很有必要的。并且在正确的端口上实施根交换机防护特性也是当务之急啊!!!!
剩下的工作就是需要我们来验证这些配置信息了。我们可以通过几个命令来查看这些配置信息:
Show spanning-tree summary detail
Show spanning-tree interface type slot/value
Show spanning-tree interface type slot/value detail
Show spanning-tree inconsistenports
对于最后一个命令,我们可以查看到那些STP不一致状态的端口,这样的接口也就说明了这些显示的结果下面连接的设备发送了BPDU了嘛~~~或许是这个设备是刚加进来的,并且还是STP参数没设置好,敢来影响正常的网络机构。或者是这个设备产生了什么问题,导致发疯,无法自控了~~~哈哈、、、那么就有必要进来看看这个设备的健康状况咯!!
得学会从设备的显示结果中分析自己想要的结果啊~~~
老重要了!!最近学会的~~不是太早,呵呵、、、也说不上很晚~~哈哈、、、、
到此,我的总结就OK了~~