• 1
  • 2
  • 3
  • 4
首页
 
金网智

   技术文章
金网智 www.50cto.com


STP生成树详解

【 来源:本站 】 【 发布时间:2011/6/13 10:23:22 】

STP
 
为了减少网络的故障时间,我们经常会采用冗余拓扑。STP可以让具有冗余结构的网络
在故障时自动调整网络的数据转发路径。STP重新收敛时间较长,通常需要30—50秒,为
了减少这个时间,引入了一些补充技术,例如uplinkfast、backbonefast等。RSTP则在协
议上对STP作了根本的改进形成新的协议,从而减少收敛时间。STP还有许多改进,例如PVST、
MST协议,以及安全措施,本章将介绍这些常用的配置。
 
14.1 STP简介
14.1.1 基本STP
为了增加局域网的冗余性,我们常常会在网络中引入冗余链路,然而这样却会引起交换
环路。交换环路会带来三个问题:广播风暴、同一帧的多个拷贝、交换机CAM表不稳定。
STP(STP,Spanning Tree Protocol)可以解决这些问题,STP基本思路是阻断一些交换机接
口,构建一棵没有环路的转发树。STP利用BPDU(Bridge Protocol Data Unit)和其他交换
机进行通信,从而确定哪个交换机该阻断哪个接口。在BPDU中有几个关键的字段,例如:
根桥ID、路径代价、端口ID等。
为了在网络中形成一个没有环路的拓扑,网络中的交换机要进行以下三个步骤:(1)选
举根桥、(2)选取根口、(3)选取指定口。这些步骤中,哪个交换机能获胜将取决于以下因
素(按顺序进行):
(1) 最低的根桥ID;
(2) 最低的根路径代价;
(3) 最低发送者桥ID;
(4) 最低发送者端口ID。
每个交换机都具有一个唯一的桥ID,这个ID由两部分组成:网桥优先级+MAC地址。网
桥优先级是一个2个字节的数,交换机的默认优先级为32768;MAC地址就是交换机的MAC
地址。具有最低桥ID的交换机就是根桥。根桥上的接口都是指定口,会转发数据包。
选举了根桥后,其他的交换机就成为非根桥了。每台非根桥要选举一条到根桥的根路径。
STP使用路径Cost来决定到达根桥的最佳路径(Cost是累加的,带宽大的链路Cost低),
最低Cost值的路径就是根路径,该接口就是根口;如果Cost职一样,就根据选举顺序选举
根口。根口是转发数据包的。
交换机的其他接口还要决定是指定口还是阻断口,交换机之间将进一步根据上面的四个
因素来竞争。指定口是转发数据帧的。剩下的其它的接口将被阻断,不转发数据包。这样网
络就构建出一棵没有环路的转发树。
当网络的拓扑发生变化时,网络会从一个状态向另一个状态过渡,重新打开或阻断某些
接口。交换机的端口要经过几种状态: 禁用(Disable)、阻塞(Blocking)、监听状态
(Listening)、学习状态(Learning)、最后是转发状态(Forwarding)。
14.1.2 PVST
当网络上有多个VLAN时,PVST(Per Vlan STP)会为每个VLAN构建一棵STP树。这样的
好处是可以独立地为每个VLAN控制哪些接口要转发数据,从而实现负载平衡。缺点是如果
VLAN数量很多,会给交换机带来沉重的负担。Cisco交换机默认的模式就是PVST。
 
14.1.3 portfast、uplinkfast、backbonefast
STP的收敛时间通常需要30—50秒。为了减少收敛时间,有一些改善措施。Portfast
特性使得以太网接口一旦有设备接入,就立即进入转发状态,如果接口上连接的只是计算机
或者其他不运行STP的设备,这是非常合适的。
Uplinkfast则经常用在接入层交换机上,当它连接到主干交换机上的主链路上故障时,
能立即切换到备份链路上,而不需要经过30秒或者50秒。Uplinkfast只需要在接入层交
换机上配置即可。
Backbonefast则主要用在主干交换机之间,当主干交换机之间的链路上故障时,可以
比原有的50秒少20秒就切换到备份链路上。Backbonefast需要在全部交换机上配置。
14.1.4 RSTP
RSTP实际上是把减少STP收敛时间的一些措施融合在STP协议中形成新的协议。RSTP
中,接口的角色有:根接口、指定接口、备份接口(Backup Interface)、替代接口(Alternate 
Interface)。接口的状态有:丢弃(Discarding)、学习状态(Learning)、转发状态
(Forwarding)。接口还分为边界接口(Edge Port)、点到点接口(Point-to-Point Port)、
共享接口(Share Port)。
14.1.5 MST
在PVST中,交换机为每个VLAN都构建一棵STP树,不仅会带来CPU的很大负载,也会
占用大量的带宽。MST则是把多个VLAN映射到一个STP实例上,从而减少了STP实例。MST
可以和STP、PVST配合使用。对于运行STP、PVST的交换机来说,一个MST域看起来就像一
台交换机。
14.1.6 STP防护
STP协议并没有什么措施对交换机的身份进行认证。在稳定的网络中如果接入非法的交
换机将可能给网络中的STP树带来灾难性的破坏。有一些简单的措施来保护网络,虽然这些
措施显得软弱无力。Root Guard特性将使得交换机的接口拒绝接收比原有根桥优先级更高
的BPDU。而BPDU Guard主要是和portfast特性配合使用,portfast使得接口一有计算机
接入就立即进入转发状态,然而万一这个接口接入的是交换机很可能造成环路。BPDU  Guard
可以使得portfast接口一旦接收到BPDU,就关闭该接口。
 
14.2 实验1: STP、PVST
1. 实验目的
通过本实验,读者可以掌握如下技能:
(1) 理解STP的工作原理
(2) 掌握STP树的控制
(3) 利用PVST进行负载平衡
2. 实验拓扑
 


图14-1 实验1、实验2、实验4拓扑图
 
图14-1中,S1和S2模拟为核心层的交换机,而S3为接入的交换机。S1和S2实际上
是三层交换机,我们这里并不利用其三层功能,所以它们也采用二层交换机的图标。
3. 实验步骤
我们要在网络中配置2个VLAN,不同VLAN的STP具有不同的根桥,实现负载平衡。
(1) 步骤1:利用VTP在交换机上创建VLAN2,在S1和S2之间的链路配置Trunk
S1(config)#vtp domain VTP-TEST
Changing VTP domain name from NULL to VTP-TEST
S1(config)#vlan 2
//在S1上配置VTP的域名,并创建VLAN 2。由于默认时S2和S3的VTP域名为空,它们将
自动学习到S1的VTP域名,同时S2、S3也将自动学习到VLAN 2,请确认是否成功。
 
S1(config)#int f0/14
S1(config-if)#shutdown
//关闭该接口,以免影响我们的实验
S1(config)#int f0/13
S1(config-if)#switchport trunk encapsulation dot1q
S1(config-if)#switchport mode trunk
//S1的f0/13改为negotiate后,由于默认时S2的f0/13为auto模式,S1和S2将自动协
商成功Trunk。而默认时S3的以太网接口就是desirable模式,所以S3和S1、S2的链路
也自动协商成功Trunk。请确认三条链路的Trunk是否成功。
(2) 步骤2:检查初始的STP树
S1#show spanning-tree 
VLAN0001
  Spanning tree enabled protocol ieee
//以上表明运行的STP协议是IEEE的802.1D
  Root ID    Priority    32768
             Address     0009.b7a4.b181
             Cost        19
             Port        17 (FastEthernet0/15)
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
//以上显示VLAN 1的STP树的根桥信息,通过根桥的MAC地址可以确定S3是根桥。这是
因为S3是较早的交换机,具有较低的MAC地址。由于S3是一台低端的交换机,成为根桥
显然是不合理的。
  Bridge ID  Priority    32769  (priority 32768 sys-id-ext 1)
 
             Address     0018.ba11.f500
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time 300
//以上显示该交换机的桥ID
Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/13           Altn BLK 19        128.15   P2p 
Fa0/15           Root FWD 19        128.17   P2p 
//以上显示该交换机各个接口的状态,f0/13为阻断状态,f0/15为根口
          
VLAN0002
  Spanning tree enabled protocol ieee
  Root ID    Priority    32768
             Address     0009.b7a4.b182
             Cost        19
             Port        17 (FastEthernet0/15)
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
 
  Bridge ID  Priority    32770  (priority 32768 sys-id-ext 2)
             Address     0018.ba11.f500
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time 300
 
Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/13           Altn BLK 19        128.15   P2p 
Fa0/15           Root FWD 19        128.17   P2p
//以上是VLAN 2的STP树情况,VLAN 2的STP树和VLAN 1的类似。默认时,Cisco交换机
会为每个VLAN都生成一个单独的STP树,称为PVST(Per VLAN Spanning Tree)。
 
【技术要点】需要仔细分析为什么STP会是目前这种情况。三个交换机的默认优先级都是
32768,而S3的MAC较低,所以成为了根桥,则S3上的f0/1和f0/2是指定口,处于Forword
状态。S1有两个接口可以到达S3,一个接口是f0/13,到达S3的Cost为19+19=38,另
一个接口是f0/15,到达S1的Cost为19,因此f0/15是根口,处于Forword状态。同样
S2上,f0/15也是根口,处于Forword状态。在S1和S2之间的链路上,要选举出一个指定
口。根据选举的要素,根桥的ID是一样的,不能决出胜负;到达根桥的Cost值也是一样的,
都为19,不能决出胜负;但是发送者桥ID不一样,S1的MAC地址高,S2的MAC地址低,
S2获胜,所以S2的f0/13是指定口,处于Forward状态,S1的f0/13就处于Block状态了。
(3) 步骤3:控制S1为VLAN1的根桥,S2为VLAN2的根桥
S1(config)#spanning-tree vlan 1 priority 4096
S2(config)#spanning-tree vlan 2 priority 4096
//对于VLAN 1来说,S1的优先级为4096,而S2和S3保持默认值32768,这样S1就成为
了VLAN 1的根桥。同样我们控制S2成为了VLAN 2的根桥。优先级通常要是4096的倍数。
 
 
S1#show spanning-tree      
VLAN0001
  Spanning tree enabled protocol ieee
  Root ID    Priority    4097
             Address     0018.ba11.f500
             This bridge is the root
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
//S1成为了VLAN 1的根桥了
  Bridge ID  Priority    4097   (priority 4096 sys-id-ext 1)
             Address     0018.ba11.f500
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time 15 
Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/13           Desg FWD 19        128.15   P2p 
Fa0/15           Desg FWD 19        128.17   P2p 
//对于VLAN 1来说,f0/13和f0/15是指定口,都处于转发状态了
 
VLAN0002
  Spanning tree enabled protocol ieee
  Root ID    Priority    4098
             Address     0018.ba11.eb80
             Cost        19
             Port        15 (FastEthernet0/13)
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
//S2成为了VLAN 2的根桥了
  Bridge ID  Priority    32770  (priority 32768 sys-id-ext 2)
             Address     0018.ba11.f500
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time 15 
 
Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/13           Root FWD 19        128.15   P2p 
Fa0/15           Altn BLK 19        128.17   P2p
//对于VLAN 2来说,f0/13是根口,处于转发状态,而f0/15却是阻断状态
 
S3#show spanning-tree brief
VLAN1
  Spanning tree enabled protocol ieee
  Root ID    Priority    4097
             Address     0018.ba11.f500
             Cost        19
             Port        1 (FastEthernet0/1)
 
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
 
  Bridge ID  Priority    32768
             Address     0009.b7a4.b181
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time 300
 
Interface                                   Designated
Name                 Port ID Prio Cost  Sts Cost  Bridge ID            Port ID
-------------------- ------- ---- ----- --- ----- -------------------- -------
FastEthernet0/1      128.1    128    19 FWD     0  4097 0018.ba11.f500 128.17 
FastEthernet0/2      128.2    128    19 FWD    19 32768 0009.b7a4.b181 128.2  
//在S3上,对于VLAN1,S3的f0/1和f0/2都处于转发状态。
VLAN2
  Spanning tree enabled protocol ieee
  Root ID    Priority    4098
             Address     0018.ba11.eb80
             Cost        19
             Port        2 (FastEthernet0/2)
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
 
  Bridge ID  Priority    32768
             Address     0009.b7a4.b182
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time 300
 
Interface                                   Designated
Name                 Port ID Prio Cost  Sts Cost  Bridge ID            Port ID
-------------------- ------- ---- ----- --- ----- -------------------- -------
FastEthernet0/1      128.1    128    19 FWD    19 32768 0009.b7a4.b182 128.1  
FastEthernet0/2      128.2    128    19 FWD     0  4098 0018.ba11.eb80 128.17
//S3上,对于VLAN2,S3的f0/1和f0/2也都处于转发状态。
(4) 步骤4:控制指定口
在步骤3中可以看到对于VLAN 1,S1成为了根桥,S1的f0/13和f0/15处于转发状态;
S2的f0/13是根口,也处于转发状态;S3的f0/1是根口,也处于转发状态;然而S2和S3
之间的链路上,却是低端交换机S3的f0/2在转发数据,原因在于S2和S3在竞争指定口时,
由于S3的MAC较低而获胜了,这是不合理的。VLAN 2的情况类似。
我们要控制指定口,这可以通过改变优先级实现,如下:
S2(config)#spanning-tree vlan 1 priority 8192
S1(config)#spanning-tree vlan 2 priority 8192
//对于VLAN 1来说,S2的优先级为8192,比S1的4096低,不至于成为根桥,但是比S3
的32768低,所以在竞争指定口时会获胜。VLAN 2的情况类似。
 
S3#show spanning-tree brief 
 
VLAN1
(此处省略)
Interface                                   Designated
Name                 Port ID Prio Cost  Sts Cost  Bridge ID            Port ID
-------------------- ------- ---- ----- --- ----- -------------------- -------
FastEthernet0/1      128.1    128    19 FWD     0  4097 0018.ba11.f500 128.17 
FastEthernet0/2      128.2    128    19 BLK    19  8193 0018.ba11.eb80 128.17 
//S3上,对于VLAN1,S3的f0/1处于转发状态,而f0/2处于阻断状态。
 
VLAN2
  (此处省略)
Interface                                   Designated
Name                 Port ID Prio Cost  Sts Cost  Bridge ID            Port ID
-------------------- ------- ---- ----- --- ----- -------------------- -------
FastEthernet0/1      128.1    128    19 BLK    19  8194 0018.ba11.f500 128.17 
FastEthernet0/2      128.2    128    19 FWD     0  4098 0018.ba11.eb80 128.17
// S3上,对于VLAN 2,S3的f0/1处于阻断状态,而f0/2处于转发状态,这样起到了负
载平衡的作用。
 
14.3 实验2: portfast、uplinkfast、backbonefast
1. 实验目的
通过本实验,读者可以掌握如下技能:
(1) 理解portfast的工作场合和配置
(2) 理解uplinkfast的工作场合和配置
(3) 理解backbonefast的工作场合和配置
2. 实验拓扑
如图14-1。
3. 实验步骤
在实验1的基础上继续本实验,我们将只关心VLAN 1的STP树。
(1) 步骤1:配置portfast
图14-1中,S1的f0/5是用于接入计算机。当计算机接入时,f0/5接口立即进入
Listening状态,随后经过Learning,最后才成为Forwarding,这期间需要30秒的时间。
这对于有些场合是不可忍受的,可以配置portfast特性,使得计算机一接入,接口立即进
入Forwarding。
S1(config)#int f0/5
S1(config-if)#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 has been configured on FastEthernet0/5 but will only
 have effect when the interface is in a non-trunking mode.
//交换机会警告该接口只能用于接入计算机或者路由器,不要接入其他的交换机
(2) 步骤2:配置uplinkfast
先确认实验1的STP树已经正确。在图14-1中的S1上,关闭f0/15接口,在S3上反
复执行“show spanning-tree vlan 1 brief”观察f0/2接口的状态变化:
FastEthernet0/2      128.2    128  3019 LIS    19  8193 0018.ba11.eb80 128.17
大约15秒后变为:
FastEthernet0/2      128.2    128  3019 LRN    19  8193 0018.ba11.eb80 128.17
大约15秒后变为:
FastEthernet0/2      128.2    128  3019 FWD    19  8193 0018.ba11.eb80 128.17
合计大约15+15=30秒,f0/2变为转发状态。
 
S3(config)#spanning-tree uplinkfast
S1(config)#int f0/15
S1(config-if)#no shutdown
S1(config-if)#shutdown  //等STP重新稳定后,才执行该语句
在S3上重复执行“show spanning-tree vlan 1 brief”,可以看到f0/2很快就进入了
Forwarding状态。
 
【技术要点】没有配置uplinkfast时,交换机S3如果能直接检测到f0/1接口上的链路故
障,f0/2会立即进入Listen状态,这样30秒就能进入Forward状态。然而如果S1和S3
之间存在一个Hub,S1上的f0/15接口故障了,S3将无法直接检测到故障,S3只能等待10
个周期没有收到S1的BPDU(每个周期2秒),20秒中后,S3的f0/2才进入Listen状态,
这样总共50秒才就能进入Forward状态。所以STP重新收敛的时间通常需要30—50秒。
(3) 步骤3:配置backbonefast
打开S1上f0/15接口,确认STP树已经正确。在图14-1中的S1上,关闭f0/13接口,
在S3上反复执行“show spanning-tree vlan 1 brief”观察f0/2接口的状态变化:
FastEthernet0/2      128.2    128  3019 BLK    19  8193 0018.ba11.eb80 128.17
大约20秒后变为:
FastEthernet0/2      128.2    128  3019 LIS    19  8193 0018.ba11.eb80 128.17
大约15秒后变为:
FastEthernet0/2      128.2    128  3019 LRN    19  8193 0018.ba11.eb80 128.17
大约15秒后变为:
FastEthernet0/2      128.2    128  3019 FWD    19  8193 0018.ba11.eb80 128.17
合计大约20+15+15=50秒,f0/2变为转发状态。
 
S1(config)#spanning-tree backbonefast
S2(config)#spanning-tree backbonefast
S3(config)#spanning-tree backbonefast
S1(config)#int f0/13
S1(config-if)#no shutdown
S1(config-if)#shutdown  //等STP重新稳定后,才执行该语句
 
在S3上重复执行“show spanning-tree vlan 1 brief”,可以看到f0/2很快就进入了
Listening状态,合计大约15+15=30秒后,f0/2就变为转发状态,比之前的50秒少了
20秒。
 
【提示】uplinkfast命令只需要在S3配置即可,而backbonefast命令需要在S1、S2、S3
三台交换机上都配置。
 
14.4 实验3:RSTP
1. 实验目的
通过本实验,读者可以掌握如下技能:
(1) 熟悉RSTP的配置
2. 实验拓扑


图14-2  实验3拓扑图
3. 实验步骤
(1) 步骤1:请把两台交换机的配置清除干净,重启交换机
S1#delete flash:vlan.dat
S1#erase startup-config
S1#reload
S2#delete flash:vlan.dat
S2#erase startup-config
S2#reload
(2) 步骤2:配置S1和S2之间的Trunk
S1(config)#int f0/13
S1(config-if)#switchport trunk encapsulation dot1q
S1(config-if)#switchport mode trunk
S1(config)#int f0/14
S1(config-if)#switchport trunk encapsulation dot1q
S1(config-if)#switchport mode trunk
(3) 步骤3:配置S1成为根桥
S1(config)#spanning-tree vlan 1 priority 4096 
在S1和S2上用“show spanning-tree”命令检查STP的情况,S2的f0/14应该处于阻断
状态。
 
【技术要点】S1是根桥,S2要选取到达S1的根路径,有两条路径,Cost都为19。这时由
于S2在f0/13接口上收到的BPDU中,发送者(S1)端口号为13;在f0/14接口上收到的
BPDU中,发送者端口号为14。所以f0/13被选举为根口了,f0/14则只能被阻断了。
(4) 步骤4:在S2上关闭f0/13接口,观察STP树的重新生成
 
在S2上关闭f0/13接口,重复执行“show spanning-tree”,可以看到f0/14经过30秒
后才进入了Forwarding状态。
(5) 步骤5:配置RSTP
S1(config)#spanning-tree mode rapid-pvst
S2(config)#spanning-tree mode rapid-pvst
(6) 步骤6:在S2上关闭f0/13接口,观察STP树的重新生成
在S2上重新打开f0/13接口,确认STP稳定后,在S2上关闭f0/13接口,重复执行“show
spanning-tree”,可以看到f0/14立即进入了Forwarding状态。说明RSTP的收敛比普通
STP有了很大的改善。
(7) 步骤7:配置链路类型
S1(config)#int range f0/13 -14
S1(config-if-range)#duplex full 
S1(config-if-range)#spanning-tree link-type point-to-point
S2(config)#int range f0/13 -14
S2(config-if-range)#duplex full 
S2(config-if-range)#spanning-tree link-type point-to-point
//S1和S2之间的链路是Trunk链路,自动协商为全双工,RSTP会自动把它们的链路类型标
识为点到点。我们这里强制配置了一遍。
 
【技术要点】RSTP中接口分为边界接口(Edge Port)、点到点接口(Point-to-Point Port)、
共享接口(Share Port)。如果接口上配置了spanning portfast,接口就为边界接口;如
果接口是半双工,接口就为共享接口;如果接口是全双工,接口就为点到点接口。在接口上
指明类型有利于RSTP的运行。
 
14.5 实验4: MST
1. 实验目的
通过本实验,读者可以掌握如下技能:
(1) 理解MST的工作原理
(2) 掌握MST的配置
2. 实验拓扑
如图14-1。
3. 实验步骤
我们要在网络中创建4个VLAN,VLAN 1和VLAN 2使用MST实例1,VLAN 3和VLAN 4
使用MST实例2。
(1) 步骤1:利用VTP在交换机上创建VLAN,在S1和S2之间的链路配置Trunk
S1(config)#vtp domain VTP-TEST
Changing VTP domain name from NULL to VTP-TEST
S1(config)#vlan 2
S1(config)#vlan 3
S1(config)#vlan 4
 
S1(config)#int f0/14
S1(config-if)#shutdown
//关闭该接口,以免影响我们的实验
S1(config)#int f0/13
S1(config-if)#switchport trunk encapsulation dot1q
S1(config-if)#switchport mode trunk
S2(config)#int f0/13
S2(config-if)#switchport trunk encapsulation dot1q
S2(config-if)#switchport mode trunk
(2) 步骤2:配置MST
只有S1和S2才能支持MST。
S1(config)#spanning-tree mode mst 
//以上把生成树的模式改为MST,默认时是PVST。
S1(config)#spanning-tree mst configuration 
//以上是进入MST的配置模式下
S1(config-mst)#name TEST-MST
//以上命名MST的名字
S1(config-mst)#revision 1
//以上配置MST的revision号,只有名字和revision号相同的交换机才是在同一个MST
区域
S1(config-mst)#instance 1 vlan 1-2
//以上是把VLAN 1和VLAN 2的生成树映射到实例1
S1(config-mst)#instance 2 vlan 3-4
//以上是把VLAN 3和VLAN 4的生成树映射到实例2,我们这里一共有三个MST实例,实例
0是系统要使用的
S1(config-mst)#exit
//要退出,配置才能生效
S1(config)#spanning-tree mst 1 priority 8192
S1(config)#spanning-tree mst 2 priority 12288
//以上配置S1为MST实例1的根桥
 
S2(config)#spanning-tree mode mst 
S2(config)#spanning-tree mst configuration 
S2(config-mst)#name TEST-MST
S2(config-mst)#revision 1
S2(config-mst)#instance 1 vlan 1-2
S2(config-mst)#instance 2 vlan 3-4
S2(config-mst)#exit
S2(config)#spanning-tree mst 1 priority 12288
S2(config)#spanning-tree mst 2 priority 8192
//以上配置S2为MST实例2的根桥
(3) 步骤3:检查生成树
S1#show spanning-tree 
MST00
 
  Spanning tree enabled protocol mstp
//以上表明运行的是MST协议
  Root ID    Priority    32768
             Address     0009.b7a4.b181
             Cost        200000
             Port        15 (FastEthernet0/13)
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
  Bridge ID  Priority    32768  (priority 32768 sys-id-ext 0)
             Address     0018.ba11.f500
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/13           Root FWD 200000    128.15   P2p 
Fa0/15           Altn BLK 200000    128.17   P2p Bound(PVST) 
//以上的MST00是系统要使用的实例,BPDU是通过它来发送的
          
MST01
  Spanning tree enabled protocol mstp
  Root ID    Priority    8193
             Address     0018.ba11.f500
             This bridge is the root
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
  Bridge ID  Priority    8193   (priority 8192 sys-id-ext 1)
             Address     0018.ba11.f500
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/13           Desg FWD 200000    128.15   P2p 
Fa0/15           Boun BLK 200000    128.17   P2p Bound(PVST) 
          
MST02
  Spanning tree enabled protocol mstp
  Root ID    Priority    8194
             Address     0018.ba11.eb80
             Cost        200000
             Port        15 (FastEthernet0/13)
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
  Bridge ID  Priority    12290  (priority 12288 sys-id-ext 2)
             Address     0018.ba11.f500
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/13           Root FWD 200000    128.15   P2p 
Fa0/15           Boun BLK 200000    128.17   P2p Bound(PVST)
 
//以上显示的是S1上的MST实例情况。
 
S3#show spanning-tree brie
VLAN1
  Spanning tree enabled protocol ieee
  Root ID    Priority    32768
             Address     0009.b7a4.b181
             This bridge is the root
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
  Bridge ID  Priority    32768
             Address     0009.b7a4.b181
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time 15 
Interface                                   Designated
Name                 Port ID Prio Cost  Sts Cost  Bridge ID            Port ID
-------------------- ------- ---- ----- --- ----- -------------------- -------
FastEthernet0/1      128.1    128    19 FWD     0 32768 0009.b7a4.b181 128.1  
FastEthernet0/2      128.2    128    19 FWD     0 32768 0009.b7a4.b181 128.2  
(此处省略)
//以上表明S3成为了所有VLAN的根桥,f0/1和f0/2都处于转发状态,这不是我们想要的。
(4) 步骤4:控制S1成为根桥
S1(config)#spanning-tree mst 0 priority 4096
//注意这里应该配置MST 0的优先级,只有MST 0才发送BPDU。
 
S3#show spanning-tree brief
VLAN1
  Spanning tree enabled protocol ieee
  Root ID    Priority    4096
             Address     0018.ba11.f500
             Cost        19
             Port        1 (FastEthernet0/1)
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
//以上表明S1是VLAN 1的根桥了
  Bridge ID  Priority    32768
             Address     0009.b7a4.b181
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time 300
 
Interface                                   Designated
Name                 Port ID Prio Cost  Sts Cost  Bridge ID            Port ID
-------------------- ------- ---- ----- --- ----- -------------------- -------
FastEthernet0/1      128.1    128    19 FWD     0  4096 0018.ba11.f500 128.17 
FastEthernet0/2      128.2    128    19 BLK     0 32768 0018.ba11.eb80 128.17
(此处省略)
 
//对于S3上所有的VLAN来说,f0/2都是阻断的,无法取得负载平衡。
(5) 步骤5:控制负载平衡
S3(config)#int f0/2
S3(config-if)#spanning-tree vlan 3 cost 10
S3(config-if)#spanning-tree vlan 4 cost 10
//以上改变VLAN 3和VLAN 4在f0/2接口上的Cost值。这样对于VLAN 3和VLAN 4,S3
的f0/2接口就处于转发状态了。
 
14.6 实验5: STP保护
1. 实验目的
通过本实验,读者可以掌握如下技能:
(1) ROOT GUARD的使用
(2) BPDU GUARD的使用
2. 实验拓扑


图 14-3 实验6拓扑图
3. 实验步骤
(1) 步骤1:关闭不需要的接口,配置S1和S2之间的Trunk,
S1(config)#int f0/14
S1(config-if)#shutdown
S1(config)#int f0/15
S1(config-if)#shutdown
S1(config)#int f0/13
S1(config-if)#switchport trunk encapsulation dot1q
S1(config-if)#switchport mode trunk
(2) 步骤2:配置S1成为根桥
S1(config)#spanning-tree vlan 1 priority 8192
(3) 步骤3:在S2的f0/15上配置guard root 
S2(config)#int f0/15
S2(config-if)#spanning-tree guard root
(4) 步骤4:把S3改为根桥,观察S2的动作
S3(config)#spanning-tree vlan 1 priority 4096
S2#show spanning-tree inconsistentports 
Name                 Interface              Inconsistency
 
-------------------- ---------------------- ------------------
VLAN0001             FastEthernet0/15       Root Inconsistent
Number of inconsistent ports (segments) in the system : 1
//S2将从f0/15收到S3发送的更优的BPDU,然而由于该接口上配置Root guard,S2的接
口进入阻断状态。
 
S2#show spanning-tree 
VLAN0001
(此处省略)
Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/13           Root FWD 19        128.15   P2p 
Fa0/15           Desg BKN*19        128.17   P2p *ROOT_Inc
(5) 步骤5:配置BPDU Guard
S2(config)#int f0/15
S2(config-if)#shutdown
//关闭接口
S2(config-if)#no spanning-tree guard root
//去掉之前的配置
S2(config-if)#spanning-tree portfast
S2(config-if)#spanning-tree bpduguard enable
//以上配置BPDU Guard
 
S2(config)#int f0/15
S2(config-if)#no shutdown
0:28:49: %SPANTREE-2-BLOCK_BPDUGUARD: Received BPDU on port FastEthernet0/15 with BPDU Guard
enabled. Disabling port.
00:28:49: %PM-4-ERR_DISABLE: bpduguard error detected on Fa0/15, putting Fa0/15 in err-disable
state
00:28:50: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/15, changed state to down
//交换机从f0/15接口收到S3的BPDU,f0/15被disable了
 
S2#show interfaces f0/15
FastEthernet0/15 is down, line protocol is down (err-disabled)
//可以看到f0/15接口关闭了。要重新开启,请先移除BPDU源,在接口下执行“shutdown”、
“no shutdown”命令。
 
14.7 本章小结
本章首先介绍了STP的作用和基本工作原理,交换机通过STP协议有选择性地阻断了某
些接口,从而构建无环路的转发路径,STP需要选取根桥、根口、指定口。802.1D的STP
需要较长时间才收敛,通常为30—50秒。本章还介绍减少STP收敛的措施:uplinkfast、
backbonefast和RSTP协议。默认时CISCO交换机为每个VLAN构建一棵树,这样方便控制
STP树,但导致STP树数量太多。MST则可以为多个VLAN共同构建一棵树。本章最后介绍了
 
保护STP树的两个简单措施:Root Guard和BPDU Guard。表14-1是本章出现的命令。
 
表14-1 本章命令汇总
命令 作用
show spanning-tree 查看STP树信息
spanning-tree vlan 1 priority 4096 配置VLAN1的桥优先级
spanning-tree portfast 配置接口为portfast,当有设备接入时立即
进入转发状态
spanning-tree uplinkfast 配置uplinkfast特性
spanning-tree backbonefast 配置backbonefast特性
spanning-tree mode rapid-pvst 把STP的运行模式设为RSTP+PVST
spanning-tree link-type point-to-point把接口的链路类型改为点对点
spanning-tree mode mst 把生成树的模式改为MST
spanning-tree mst configuration 进入MST的配置模式
name TEST-MST 命名MST的名字
revision 1 配置MST的revision号
instance 1 vlan 1-2 把VLAN 1和VLAN 2的生成树映射到实例1
spanning-tree guard root 在接口上配置root guard特性
spanning-tree bpduguard enable 在接口上配置bpduguard特性

版权所有 © 2011-2012金网智 建议:1024 * 768 分辨率
地址:天津市红桥区青年路85号青年创业园服务楼105室   邮编300121
电话:(8622)87783825
Emailsupport@50cto.com