第五章 VLAN与生成树和生成树的配置
VLAN与生成树的关系
1、IEEE通用生成树(CST)
2、Cisco Per Vlan生成树(PVST)
3、带CST的Cisco Per Vlan生成树(PVST+)
CST是IEEE解决运行虚拟局域网VLAN的生成树方法,CST定义整个第二层交换网络所有VLAN仅使用一个生成树实例,这个生成树实例运行在整个交换局域网上。
PVST是解决在虚拟局域网上处理生成树的cisco特有解决方案,PVST为每个虚拟局域网运行单独的生成树实例,一般情况下PVST要求在交换机之间的中继链路上运行cisco的ISL(inter switch link)
PVST+是cisco解决在虚拟局域网上处理生成树问题的另一个方案。PVST+允许CST信息传给PVST,以便与其它厂商在VLAN上运行生成树的实例方法进行互相操作。
PVST优点:
1、生成树拓扑结构的总体规模减少
2、改进了生成树的扩展性,并减少了收敛时间
3、提供更快的收敛恢复能力和更高的可靠性
PVST缺点:
1、为了维护针对每个VLAN而生成的生成树,交换机的利用率(如CPU负载)会理高。
2、为了支持各个VLAN的BPDU,需要占用更多的Trunk链路带宽。
CST优点:
1、最小数量的BPDU通信,带宽占用少
2、交换机负载保持最小
CST缺点:
1、只能用一个根网桥,这不能为所有的VLAN做到根网桥的优化放置,导致对某些设备来说,可能存在次优化路径。
2、为包括交换机架构中的所有端口,生成树的拓扑结构变化较大,这就会导致较长的收敛时间和更频繁的重新配置。
生成树配置涉及的任务
1、选举和维护一个根网桥,通过正确放置根网桥,来提供一个优化的网络拓扑结构。
2、通过配置一些生成树的参数来优化生成树,如端口优先级、端口成本。
3、通过配置上行速链路来减少生成树的收敛时间。
缺省条件下,STP在一台交换机所有端口都是启用的
配置STP
Switch#:con t
Switch(config)#:spanning-tree vlan vlan-id
Switch(config)#:end
Switch#:show spanning-tree summary
查看STP详细状态信息
Show spanning-tree vlan vlan-id detail
显示:designated root has priority 8912,address 0007.eb06.1741
Designated bridge has priority 8912,address 0007.eb06.1741
Designated port is 7,path cost 0
人为建立根网桥
人为建立根网桥就可以优化生成树协议所选择的path,path明确,可使spanning-tree的配置和排错比较容易和清晰,还可以设定备份或从(secondary)根网桥,当主网桥失效的时候接替他的工作。
提示:强烈建议不要将接入层的交换机配置为根网桥,STP的根网桥通常是汇聚层或核心层交换机。
通过命令直接建立根网桥
Spanning-tree vlan vlan-id root primary(第一位,根源)
可以通过命令改变网桥的优先级,输入该命令,系统会检查每个VLAN当前根交换机的网桥优先级,如果能保证自己成为指定VLAN的根交换机,就将自己在指定的VLAN中的网桥优先级设置为24567。
Swithc(config)#:spanning-tree vlan vlan-id root primary diameter netdianmeter hell-time sec
为VLAN配置根网桥、网络半径。Root指定这台交换机为根网桥,diameter netdiameter该关键字指定在末端主机任意两点之间的网段的最大数量。Netdiameter的值是2-7,这个直径应从根网桥开始计算,根网桥是1。
Switch#:show spanning-tree vlan vlan-id detail
例:show spanning-tree vlan 10 detail
(表明交换机配置后priority已经变为24576)
第四行:we are the root of the spanning tree(表明该交换机已成为根网桥)
让交换机恢复缺省配置命令
Switch(config)#:no spanning vlan vlan-id root
配置从(secondary)交换机或备用交换机,需要将关键字primary改为secondary
Switch(config)#:spanning-tree vlan vlan-id root secondary
但在有些情况下,必须使用改变网桥优先级别来让某台交换机成为根网桥,使用命令。
Switch(config)#:spanning-tree [vlan vlan-id] priority bridge-priority
设定为指定的bridge-priority,如不加vlan vlan-id则所有Vlan的网桥优先级都会被更改。
Bridge-priority的缺省值是32768,可选值为0—65535,不过Bridge-priority的值必须是4096的倍数,可以是0
例:
Switch#:con t
Switch(config)#spanning-tree vlan 10 priority 8192
Switch#:show spanning-tree vlan 10 detail
显示:第二行:bridge Identifier has priority 8192, , address 0007.eb06.1741
第四行:we are the root of the spanning tree
将网桥优先级恢复到缺省设置
Switch(config)#:no spanning-tree vlan vlan-id priority
确定根网桥的路径
1、根路径成本(root path cost)
2、网桥ID(Bridge ID)
3、端口优先级(prot priority)
先检查BPDU中的path cost,path cost低的端口被选为转发端口。如path cost相同,那么,spanning tree检查Bridge ID,低的Bridge ID,port被允许转发,如果path cost and Bridge ID都相同(如平行链路),spanning tree查看port ID,以打破僵局,port ID低的作为转发端口。一旦发现最小值,它就停止检查BPDU,并将最小值的端口处于转发状态。
修改端口成本原则:应该将低一些的数值分配给连接更快的介质(比如全双工),将高一些的数值分配给连接慢一些的介质端口。
取值范围:1--200000000
配置命令:
Switch(config)#:spanning-tree [vlan vlan-id] cost cost
如加上VLAN参数,则仅修改那个特定的VLAN的端口成本,不加则修改所有VLAN的prot cost(不建议修改prot cost)
回到缺省命令:
Switch(config-if)#:no spanning-tree [vlan vlan-id] cost (要进入到端口配置模式)
查看配置
Switch#:show spanning-tree interface f0/1 detail
第二行:port path cost 50,port priority 128(表示F0/1的port cost已配置为50)
在交换机上配置端口在VLAN中的成本
Switch(config)#:int f0/1
Switch(config-if)#:spanning-tree vlan 2,3 cost 15
Switch#:show spanning-tree int f0/1 detail
修改端口优先级
基于CLI命令的交换机,可能端口优先级范围0-63,缺省为32。基于IOS的交换机端口优先级别范围:0-255,缺省为128
配置命令:
Switch(config-if)#:spanning-tree [vlan vlan-id] port-priority priority
建议加上VLAN参数修改端口优先级
查看配置:
Switch#:show spanning-tree int f0/1 detail
恢复为缺省值:
Switch(config-if)#:no spanning-tree [vlan vlan-id] port-priority
修改生成树计时器
只能在根网桥及任何备用网桥上,才可以修改计时器。这样根网桥会把这3个计时器的值封装在BPDU报文中,传播到整个网络上。改变缺少计时器值可能在网络中引起严重的问题,不建议在生产环境里这么做。
1、修改HELLO时间
Hello时间计时器(hello timer)网桥期望从它的邻接网桥接听到访问信息,缺省情况BPDU报文每隔2 sec发送一次。
Spanning-tree vlan vlan-id hello-time seconds
Hello取值范围1-10sec
例:
Switch(config)#:spanning-tree vlan 10 hello-time 3
Switch(config)#:end
Switch#show spanning-tree vlan10
显示:Hello time (sec) : 3(表明Hello时间已修改为3秒)
恢复缺省Hello时间
Switch(config)#no spanning vlan 10 hello-time
2、修改转发延迟计时器
转发延迟计时器(forward delay timer)确定一个端口在转换到学习状态之前处于侦听状态的时间,以及在学习状态转换到转发状态之前处于学习状态的时间。
Spanning-tree vlan vlan-id forward-time seconds
可以修改第一个VLAN的转发延迟计时器,计时器的缺省值是15秒,取值范围是4-30秒,如取值太低的话,可能会导致回路和网络失败。
提示:配置转发延迟需要注意:
1、转发延迟时间过长,会导致生成树的收敛过慢;
2、转发延迟时间过短,可能会在拓扑改变的时候,引入暂时的路径回环。
例:
Switch(config)#spanning-tree vlan 10 forward-time 10
Switch(config)#end
Switch#show spanning-tree vlan 10
显示:Forward Delay (sec) :10
恢复缺省forward delay timer
Switch(config)#no spanning-tree vlan 10 forward-time
3、修改最大老化时间
最大老化时间(max-age timer),规定了从一个具有指定端口的邻接交换机上所收到的BPDU报文的生存时间。如果非指定端口在最大老化时间内没有收到BPDU报文,那么该端口进入到listering状态,并由接收交换机产生配置BPDU报文。这时,该端口就成为指定端口,并恢复网段的边通性。
缺省时间:20秒,取值范围:6-40秒
Spanning-tree vlan vlan-id max-age seconds
提示:最大老化时间的配置需要注意:
1、最大老化时间过长,会导致链路故障不能被及时发现;
2、最大老化时间过短,可能会在网络拥塞时使交换机误认为链路故障,造成频繁的生成树重新计算。
例:
Switch(cofngi)#spanning-tree vlan 10 max-time 15
Switch#show spanning-tree vlan 10
显示:Max Age (sec) : 15
恢复缺省Max-age timer
Switch(config)#no spanning-tree vlan 10 max-time
提示:修改计时器的值时要小心。如果计时器的值太低,生成树协议可能会在收到所有BPDU之前,将一个端口置为转发状态,这样就可能导致在交换网络中产生桥接环路。建议在定义根网桥时修改网络直径,它将修改计时器,以正确的反映网络状况。
4、速端口的配置
终端用户工作站通常连入访问层中的一个交换机端口。则交换机端口在STP从阻塞状态至转发之前,不会处于可用状态,在STP计时器的缺省情况下,这个过程至少要花费30秒时间(15秒从侦听到学习状态,15秒从学习到转发状态)。交换机在到达转发状态前,不能发送或接收任何数据。
提示:端口初始化所引发的时间延迟可能达到50秒,即交换机如要运行PAGP(端口聚集协议),以协商以太信道的配置,则需另外的20秒延迟。
在仅连接单一工作站或某些特定设备的交换机端口上,是不会形成桥接回路的。Cisco交换机提供了Portfast(速端口)特性,将侦听和学习状态的时间削减到可忽略的水平。其结果是,当一条工作站链路被开通时,交换机会立即把速端口转移到转发状态。不过,生成树回路检测仍处于工作状态,如果在该端口上探测有回路的存在,则把它置于阻塞状态。
启用速端口
Spanning-tree portfast
例:
Switch(config)#interface fastethernet0/1
Switch(config-if)#spanning-tree portfast
在交换机端口上一旦启用速端口,就会有一段提示,其含意是:通常,速端口是连接到终端PC机的,如果启用了速端口的端口连接到HUB、交换机和网桥等设备,就有可能会导致生成树环路。
Switch#show spanning-tree interface f0/1 detail
显示:最后一行The port is in portfast mode(表明速端口在F0/1上已经启用)
关闭速端口
Switch(config-in)#no spanning-tree portfast
Switch#show int f0/1 detail
显示的最后一行将没有The port is in portfast mode这句的输出了。
上行速链路的配置
使用STP上行速链路,可以在链路或者交换机失效或者STP重新配置时,加速新的根端口的选择过程。被阻塞端口会立即转换到转发状态,不需要像通常的STP过程那样,经过侦听和学习状态。在网络边缘的接入层交换机上,上行速链路是一项最有用的功能,但它不适合用在骨干设备上。
上行速链路能在直连链路失效时实现快速收敛,并能通过上行链路组(uplink group),在多个冗余链路之间实现负载平衡。上行链路组是一组接口(属于各个VLAN)。在某个特定时间,其中只有一个处于转发状态。特别指出,上行链路组由一个根端口(处于转发态)和一组阻塞的端口组成,当前的转发链路失效时,上行链路组提供了另外一条路径。
提示:STP上行速链路被设计用于接入层交换机,不是为了用于网络核心而设计的。上行速链路只需在接入屋交换机配置,其他交换机不参与上行速链路。
上行速链路的配置
在已经配置了网桥优先级的VLAN上,不能启动上行速链路。如想配置必须将VLAN上的交换机优先级恢复到缺省值( no spanning-tree vlan vlan-id priority)。
配置上行速链路
Spanning-tree uplinkfast [max-uplink-rate pkts-per-second]
max-uplink-rate来限制空发的组播通信,缺省值是150包/秒
pkts-per-second缺省值是150包/秒,取值范围是每秒0-32000个数据包。
查看上行速链路
Show spanning-tree summary
提示:在cisco IOS软件版本12.1中首次引入了命令show spanning-tree uplinkfast
启动了上行速链路后,如果不进行变更,所有VLAN的网桥优先级和所有接口的端口成本都被设为缺省值。
停用上行速链路
No spanning-tree uplinkfast
例:
Switch(config)#spanning-tree uplinkfast
Switch#show spanning-tree summary