生成树的优化防护.docx
《生成树的优化防护.docx》由会员分享,可在线阅读,更多相关《生成树的优化防护.docx(9页珍藏版)》请在冰豆网上搜索。
生成树的优化防护
第一章:
二层交换:
生成树的增强(BPDU防护过滤,根防护)
(2014-09-2609:
33:
57)
转载▼
标签:
ccie
cisco
分类:
网络技术
以下提到的STP代表了所有生成树协议。
STP用于防环,但是有一个基础,就是软件硬件都没有问题。
软件一般就是指配置错误、bug,而硬件一般是指双向通讯故障,比如光纤两根线路,一根上行一根下行,如果断了一根就变成了单向通讯了。
简单来说,这些问题引起的后果,就是不该收到BPDU收到了,该收到BPDU的接口没有收到
=====================================================================
如果本该是接着终端,并启用了portfast的端口,被误接了交换机,就会引起了二层的环路。
有两个工具可以防止这种情况
·BPDUGUARD
·BPDUFILTER
====================================================================
先来说BPDUGUARD(下简称BG)
当配置了BG后,在portfast的接入接口收到BPDU,立即置为err_disabled。
两种配置方法
全局配置:
sw4(config)#spanning-treeportfastbpduguarddefault
默认所有portfast的接口,都启用BG。
接口配置:
sw4(config-if)#spanning-treebpduguardenable
无论接口是否启用了portfast,都启用BGP
如果需要把err_disable恢复过来,可以shutdown再noshutdown接口,但如果配置仍是错误,接口还是会被err_disabled
实验:
sw4(config-if)#spanning-treebpduguardenable
6d01h:
%SPANTREE-2-BLOCK_BPDUGUARD:
ReceivedBPDUonportFastEthernet0/8withBPDUGuardenabled.Disablingport.
6d01h:
%PM-4-ERR_DISABLE:
bpduguarderrordetectedonFa0/8,puttingFa0/8inerr-disablestate
6d01h:
%LINEPROTO-5-UPDOWN:
LineprotocolonInterfaceFastEthernet0/8,changedstatetodown
6d01h:
%LINK-3-UPDOWN:
InterfaceFastEthernet0/8,changedstatetodown
查看端口状态
sw4#showinterfacesstatuserr-disabled
PortNameStatusReason
Fa0/8err-disabledbpduguard
设置自动恢复
sw4(config)#errdisablerecoverycausebpduguard
默认300秒后自动恢复,但如果问题依旧,还是会err_disabled。
=====================================================================
BPDUFILTER(下简称BF)
不同的配置方式,有不同的作用
如果在全局模式下配置,所有启用了portfast的端口如果接收到了BPDU,会立即禁用portfast,并使端口参与STP运算,成为STP端口;
如果在接口模式下配置,那么接口将不会发送BPDU,而如果接收到BPDU,会无视掉,不会改变接入端口的角色。
全局配置命令:
sw4(config)#spanning-treeportfastbpdufilterdefault
接口配置命令:
sw4(config-if)#spanning-treebpdufilterenable
注意,两种配置方式的作用差异很大,我一般建议在接入接口上启用第二种。
=====================================================================
根防护(ROOTGUARD,下称RG)
当在一个稳定的交换网络中,加入一台新的交换机,而这台新交换机有可能抢夺根桥位置。
设置了根防护的接口,可以防止成为根端口。
回想一下什么是根端口,就是去往根桥并处于转发状态的接口。
如上图,那么新交换机D接入网络后,如果它并没有抢夺到根桥位置,则相安无事,正常转发;如果它抢夺根桥,发出更优的BPDU,C将接着D的接口block掉,但只会block掉根桥所在vlan,举例,D并不打算成为VLAN1的根桥,而要成为VLAN99的根桥,那么C就会在VLAN99的生成树中,把那个端口置为blocking,注意不是err_disabled,因为其他vlan的生成树里它可能是正常的,如VLAN1。
只要D不再发出更优的BPDU,SWC会立即停止阻塞这个端口上的相应VLAN的BPDU。
实验:
拓扑
在SW3的对应接口上设置rootguard,并开启debug
sw3(config)#intf0/7
sw3(config-if)#spanning-treeguardroot
sw3#debugspanning-treeevents
SpanningTreeeventdebuggingison
在SW4上修改优先级,使SW4抢夺根桥位置
sw4(config)#spanning-treevlan1rootprimary
看SW3的debug和生成树信息
*Mar 718:
47:
39.759:
STP:
VLAN0001heardroot24577-001a.a10b.7a00onFa0/7
*Mar 718:
47:
39.759:
supersedes32769-0015.630d.7080
6d18h:
%SPANTREE-2-ROOTGUARD_BLOCK:
RootguardblockingportFastEthernet0/7onVLAN0001.
sw3#
*Mar 718:
47:
39.763:
STP:
VLAN0001Fa0/7->blocking
sw3#
*Mar 718:
47:
41.763:
STP:
VLAN0001heardroot24577-001a.a10b.7a00onFa0/7
*Mar 718:
47:
41.763:
supersedes32769-0015.630d.7080
........
sw3#showspanning-treevlan1
VLAN0001
Spanningtreeenabledprotocolieee
RootID Priority 32769
Address 0015.630d.7080
Thisbridgeistheroot
HelloTime 2sec MaxAge20sec ForwardDelay15sec
BridgeID Priority 32769 (priority32768sys-id-ext1)
Address 0015.630d.7080
HelloTime 2sec MaxAge20sec ForwardDelay15sec
AgingTime300
Interface RoleStsCost Prio.NbrType
------------------------------------------------------------------------
Fa0/7 DesgBKN*19 128.7 P2p*ROOT_Inc
sw3#showspanning-treeinconsistentports
Name Interface Inconsistency
------------------------------------------------------------
VLAN0001 FastEthernet0/7 RootInconsistent
Numberofinconsistentports(segments)inthesystem:
1
将SW4改回去
sw4(config)#nospanning-treevlan1rootprimary
再看SW3的debug信息,可以见到sw3不再收到SW4的更优BPDU后自动恢复接口的状态。
sw3#
6d18h:
%SPANTREE-2-ROOTGUARD_UNBLOCK:
RootguardunblockingportFastEthernet0/7onVLAN0001.
sw3#
*Mar 718:
54:
22.723:
STP:
VLAN0001Fa0/7->listening
*Mar 718:
54:
37.723:
STP:
VLAN0001Fa0/7->learning
*Mar 718:
54:
52.723:
STP:
VLAN0001Fa0/7->forwarding
注意,rootguard不能只针对特定VLAN启用,而是对全部VLAN,不过在RG工作中,只会block掉尝试成为根端口的那个VLAN的BPDU和流量。
第二章:
生成树的优化
我们都知道一个网络优化的好坏,影响整个网络的性能,所以生成树协议的优化在网络中是十分重要的,下面我们说说生成树的优化及其增强特性。
工具/原料
∙STP相关资料
方法/步骤
1.1
由于生成树也有许多不能解决的问题:
比如
1.802.1d不能阻止有问题的交换机成为根网桥
2.不具备从特定端口过滤BPDU的特性
3.网络设备故障会使网络中产生桥接环路和黑洞
4.某些故障会干扰生成树
所以生成树的优化是必须做的。
2.2
BPDU防护:
防止交换机意外连接到了启用了PORTFAST特性的端口。
如果接口启用了PORTFAST特性,那么当该接口收到BPDU的时候,BPDU防护功能就会使其进入“err-disable”状态,而不是将其blocking,以防产生桥接环路。
直到管理员手动打开该端口。
管理员也可以设置超时时间间隔,当端口进入“err-disable”状态之后,超过时间间隔,端口会再次打开,如果这时候仍旧接收到BPDU,BPDU防护特性会再次将其关闭
BPDU防护有两种启用方式:
1)全局启用:
(no)spanning-treeportfastedgebpduguarddefault,这个是在所有开启了PORTFAST的端口上启用BPDU防护,前提是,已经开启了PORTFAST
2)端口启用:
spanning-treebpduguardenable,这个只在当前端口启用,这个无需先配置PORTFAST
3.3
BPDU过滤(不发):
当交换机直接与主机相连的时候,这个时候是不需要向主机发送BPDU的,因为主机不参与拓扑的计算,所以发过去还是会丢弃,白白的浪费资源,因此还不如不发。
1)全局启用:
(no)spanning-treeportfastbpdufilterdefault。
全局启用会作用于交换机上所有处于工作状态,且没有单独在接口底下配置BPDU过滤特性的PORTFAST端口(也就是说要想全局启用生效,端口必须先配置PORTFAST属性)。
如果这个端口收到了BPDU,那么他们就不再处于PortFast状态,BPDU过滤特性也将被禁用,然后开始和其他STP接口一样收发BPDU。
在启动的时候,端口会传输10个BPDU数据包,如果这个端口在这个时间内收到了BPDU数据包,那么同样会退出PortFast状态并且禁用BPDU过滤特性。
2)端口启用:
spanning-treebpdufilterenable。
端口会忽略收到的BPDU数据包,也不会发送任何BPDU数据包,这个不需要预先开启portfast特性。
BPDU过滤优先级高于BPDU防护,当有BPDU过滤的时候,BPDU防护将不生效
4.4
根防护(不建立):
当一个具有更高优先级的网桥接入当前网络的时候,会造成当前网络拓扑的变化,导致一系列事情的发生。
根保护的目的是确保根保护的端口成为指定端口,如果启用了根防护的端口上收到了一个更优的BPDU,则这个端口会进入不一致根的状态(等效于blocking状态),这时候不会处理BPDU,也就是说新的BPDU不会得到传播,也就不会竞选根网桥,这样就保证了原有拓扑的稳定性。
这个时候,处于不一致根状态的的端口还会继续监听,如果不再收到更优BPDU的时候,端口就会取消阻塞,依次进行STP的状态过渡,最终进入转发状态
5.5
对于根防护:
我们来举个例子
如下图:
A和B为分布层SW,C为接入层SW,根为A。
当在C下面再接一台SW时,由于D的优先级或MAC地址可能比其它要低,可能会使D成为Root SW,从而使得从A到达B的流量不能直接发送到B,而得使用C来转发,这样很不合理(A和B之间为千兆)。
为了避免这种情况,可以在C的下联端口上使用Root Guard,以防止该端口成为Root Port,从而防止D成为Root SW,确保A永远为Root SW。
使用Root Guard后,当SW D接入网络后,C的下联D的端口会收到一个更新的BPDU(前提是D的优先级最高)后,C将该端口转为Block状态,直到D不在发送新的BPDU或更改D的优先级。
关于根防护的一个建议:
在所有接入端口上启用根防护特性
启用方式:
Spanning-treeguardroot
6.6
检查配置的命令:
1.BPDU防护
Showspanning-treesummarytotals
2.BPDU过滤
Showspanning-treesummary(查看过滤的启用状态,默认的)
Showspanning-treeinterfacef0/1datails(查看特定端口的启用状态)
3.根防护
Showspanning-treeinconsistentports
END
注意事项
∙生成树BPDU防护和BPDU过滤中全局模式下必须配portfast