更新时间:2024-01-10
1 配置生成树协议(STP )
1.1 STP概述
标准的生成树协议(Spanning-Tree Protocol,STP)定义于IEEE 802.1D,它将一个由若干网桥连接组成的局域网拓扑简化为一棵单独的生成树,防止网络环路的产生,保证网络的稳定工作。
生成树算法和协议将任意的桥接局域网配置为简单连接的活动拓扑结构。在活动拓扑中,有些网桥端口可以转发帧,有些端口则处在阻塞状态而不能转发。处在阻塞状态的端口也可能被包含在活动拓扑中,当网络中出现设备失效、添加或移出时,它就会转入转发状态。
在生成树拓扑中,一个网桥被认为是根或者根桥(Root)。对每一个局域网段,都有一个网桥端口负责该网段到根桥的数据转发,该端口被认为是该局域网段的指派端口,而端口所在的网桥被认为是该局域网的指派网桥(Designated Bridge)。根桥是所有与之连接的局域网段的指派网桥。在每个网桥的端口中,到根桥最近的端口为该桥的根端口,且只有根端口和指派端口(如果存在)处于转发状态;还有一类端口并没有被关闭掉但是也不是根端口或指派端口,这一类端口为备用端口。
以下参数决定了稳定后的活动拓扑的结构:
(1) 每个网桥的唯一标识。
(2) 每个端口的路径开销。
(3) 网桥每个端口的端口标识。
优先级最高(标识符值最小)的网桥将被选为根桥。网络中每个网桥的端口都有一个根路径开销属性(Root Path Cost),即从根桥到该网桥经历的所有端口的路径开销的和的最小值。每个局域网段的指派端口就是指连接到该网段的且根路径开销最小的端口;如果若干个端口(连接到同一局域网段的不同网桥上)具有相同的根路径开销,则会首先比较它们所在网桥的标识,然后比较端口标识。按照这种方法,每个局域网段都只有一个指派端口(Designated Port),每个网桥上也只有一个根端口(Root Port)。
生成树拓扑使网络中不存在环路,保证网络的稳定性并具有故障恢复的能力。在以太网交换机被广泛使用的今天,STP的作用也越发显得重要。因此,生成树协议是作为本公司交换机的一项基本功能而被提供的。
快速生成树协议(Rapid Spanning-Tree Protocol,RSTP)是对802.1D STP的一项重要更新。在网络中的网桥、网桥端口或者局域网段出现故障时,快速生成树协议实现了网络拓扑的快速收敛。网桥上新的根端口可以立即进入转发状态工作,同时,网桥之间的直接认可使指派端口也可以马上进行转发。RSTP协议的配置请参见第二章配置快速生成树协议(RSTP)。
本章描述了如何配置交换机支持的标准生成树协议。
请注意:
802.1D STP和802.1D RSTP在本文中被简称为SSTP和RSTP。其中“SSTP”意为“Single Spanning-tree”。
1.2 SSTP 配置任务列表
• 选择STP模式
• 禁止/启动STP
• 禁止/启动端口的STP
• 配置网桥优先级
• 配置Hello Time
• 配置Max Age
• 配置Forward Delay
• 配置端口优先级
• 配置端口路径开销
• 配置自动指派端口
• 监控STP状态
• 配置SNMP Trap
1.3 SSTP配置任务
1.3.1 选择 STP模式
使用下面的命令进行生成树协议模式配置:
命令
|
目的
|
spanning-tree mode {sstp | pvst | rstp | mstp}
|
进行的STP模式配置选择。
|
1.3.2 禁止/启动STP
默认情况下STP启动,运行模式为RSTP,当不需要运行STP时可以禁止其运行。
使用下面的命令禁止STP:
命令
|
目的
|
no spanning-tree
|
禁止运行STP。
|
使用下面的命令启动STP:
命令
|
目的。
|
spanning-tree
|
启动默认模式的STP(RSTP)。
|
spanning-tree mode { sstp | pvst | rstp | mstp }
|
启动某种模式的STP。
|
1.3.3 禁止/启动端口的STP
默认情况下STP协议在所有交换端口(物理端口和聚合端口)上运行,在端口配置模式通过下面的命令禁止STP运行:
命令
|
目的
|
no spanning-tree
|
禁止端口运行STP。
|
禁止端口运行STP后,端口将保持指派端口角色和转发状态,也将不再发送BPDU。但各STP模式仍会对端口收到的BPDU进行类型检查、计数,并更新边界信息和拓扑信息。
请注意:
进行"no spanning-tree"配置时,若端口已经具有"RootPort"、"AlternatePort"、"MasterPort"或"BackupPort"角色,在RSTP/MSTP模式中,端口收到的协议信息会立即老化而转为"DesignatedPort";在SSTP/PVST模式中,端口将保持原角色一段时间,等待定时器超时后信息才会老化。
请注意:
各STP模式都支持"no spanning-tree"端口上的BpduGuard功能。
1.3.4 配置 网桥优先级
可以通过更改交换机的网桥优先级值来选择网络拓扑的生成树根。
使用下面的命令可以配置SSTP的网桥优先级:
命令
|
目的
|
spanning-tree sstp priority value
|
更改SSTP模式的网桥优先级值。
|
no spanning-tree sstp priority
|
恢复SSTP的网桥优先级为默认值(32768)。
|
1.3.5 配置Hello Time
通过配置SSTP的Hello Time可以决定当该交换机作为根桥时发送报文的时间间隔。
使用下面的命令可以配置SSTP的Hello Time:
命令
|
目的
|
spanning-tree sstp hello-time value
|
更改SSTP模式的Hello Time。
|
no spanning-tree sstp hello-time
|
恢复SSTP模式的Hello Time为默认值(2s)。
|
1.3.6 配置Max Age
通过配置SSTP的Max Age可以决定当该交换机作为根桥时生成树中报文的最大生存时间。
使用下面的命令可以配置SSTP的Max Age:
命令
|
目的
|
spanning-tree sstp max-age value
|
更改SSTP模式的最大生存时间。
|
no spanning-tree sstp max-age
|
恢复最大生存期为默认值(20s)。
|
1.3.7 配置Forward Delay
通过配置SSTP的Forward Delay可以决定当该交换机作为根桥时网络中的所有交换机的状态跳转的时间间隔。
使用下面的命令可以配置SSTP的Forward Delay:
命令
|
目的
|
spanning-tree sstp forward-time value
|
更改SSTP模式的Forward time。
|
no spanning-tree sstp forward-time
|
恢复Forward time为默认值(15s)。
|
1.3.8 配置端口 优先级
当有环路形成时,STP会将一些端口的状态跳转为Blocking状态,以断开环路。通过配置端口优先级和端口路径开销可以控制端口是否被阻塞。
使用下面的命令可以配置SSTP的端口优先级:
命令
|
目的
|
spanning-tree port-priority value
|
配置所有模式下端口的优先级。
|
spanning-tree sstp port-priority value
|
更改SSTP模式的端口优先级。
|
no spanning-tree sstp port-priority
|
恢复端口优先级为默认值(128)。
|
1.3.9 配置端口路径开销
使用下面的命令可以配置SSTP的端口路径开销:
命令
|
目的
|
spanning-tree cost value
|
配置所有模式下端口的路径开销。
|
spanning-tree sstp cost value
|
更改SSTP模式的端口路径开销。
|
no spanning-tree sstp cost
|
恢复端口路径开销为默认值。
|
1.3.10 配置自动指派端口
自动指派端口功能允许线卡自动向具有指派端口角色的端口发送BPDU,以减轻主控(MSU)的负担。
自动指派端口功能在所有生成树模式下均有效。
在全局配置模式下,使用下面的命令配置自动指派端口功能:
命令
|
目的
|
spanning-tree designated-auto
|
启动自动指派端口功能。
|
no spanning-tree designated-auto
|
关闭自动指派端口功能。
|
1.3.11 监控STP状态
为了监控STP配置和状态,可以在管理模式下使用下面的命令:
命令
|
目的
|
show spanning-tree
|
显示当前模式下生成树协议的状态。
|
show spanning-tree detail
|
显示当前模式STP的详细信息。
|
show spanning-tree interface
|
显示当前模式STP下的端口信息。
|
1.3.12 配置SNMP Trap
通过配置生成树协议的Trap功能,可以从主机的网管软件远程监测交换机生成树协议的变化。
以太网交换机的STP系列协议支持两种类型的Trap:newRoot和topologyChange。当从非根交换机变为根交换机时,交换机发送newRoot Trap消息;当交换机检查到拓扑变化时,比如一个非边缘端口从非转发态变为转发态,会发送topologyChange Trap消息。
请注意:
需使用支持Trap接收的网管软件方可接收STP Trap。网管软件需要导入Bridge-MIB集合,OID为1.3.6.1.2.1.17。
在全局配置模式下,通过下面的命令启用STP Trap。
命令
|
目的
|
spanning-tree management trap
[ newroot | topologychange ]
|
启用STP Trap。
不指定Trap类型将同时启用两种Trap。
|
no spanning-tree management trap
|
关闭STP Trap。
|
1.4 配置VLAN的生成树
1.4.1概述
SSTP模式下,整个网络仅有一个生成树实例,交换机端口在生成树中的状态将决定它在所有VLAN中的状态。在网络中存在多个VLAN的情况下,单生成树协议与VLAN拓扑的这种隔离状态可能导致部分网络的正常通信被阻塞。
交换机支持在一定数目的VLAN上运行独立的SSTP,保证端口可以在不同的VLAN中具有不同的状态。同时也可以实现VLAN之间的流量均衡。
需要注意的是,可以独立运行生成树协议的VLAN数目取决于实际版本,超出数目限制的其它VLAN拓扑将不受STP控制。
1.4.2VLAN STP配置任务
在全局配置态下,使用下面的命令配置VLAN中SSTP的属性:
命令
|
目的
|
spanning-tree mode pvst
|
启动按VLAN分配STP的模式。
|
spanning-tree vlan vlan-list
|
为指定VLAN分配STP实例。
vlan-list:VLAN列表(下同)。
|
no spanning-tree vlan vlan-list
|
删除指定VLAN上的生成树实例。
|
spanning-tree vlan vlan-list priority value
|
配置指定VLAN中生成树的优先级。
|
no spanning-tree vlan-list priority
|
恢复VLAN中生成树优先级为默认。
|
spanning-tree vlan vlan-list forward-time value
|
配置指定VLAN的Forward Delay。
|
no spanning-tree vlan vlan-list forward-time
|
恢复指定VLAN的Forward Delay为默认。
|
spanning-tree vlan vlan-list max-age value
|
配置指定VLAN的Max-age。
|
no spanning-tree vlan vlan-list max-age
|
恢复指定VLAN的Max-age为默认。
|
spanning-tree vlan vlan-list hello-time value
|
配置指定VLAN的Hello-time。
|
no spanning-tree vlan vlan-list hello-time
|
恢复指定VLAN的Hello-time为默认。
|
在交换端口配置态下,使用下面的命令配置端口的属性:
命令
|
目的
|
spanning-tree vlan vlan-list cost
|
配置端口在指定VLAN的路径开销。
|
no spanning-tree vlan vlan-list cost
|
恢复端口在VLAN中的路径开销为默认。
|
spanning-tree vlan vlan-list port-priority
|
配置端口在VLAN中的优先级。
|
no spanning-tree vlan vlan-list port-priority
|
恢复端口在VLAN中的优先级为默认。
|
在管理或配置态下,使用下面的命令查看指定VLAN中生成树的状态:
命令
|
目的
|
show spanning-tree vlan vlan-list
|
查看VLAN中生成树状态。
|
show spanning-tree pvst instance-list
|
查看PVST实例与VLAN的对应关系
|
2 配置快速生成树协议(RSTP)
2.1 RSTP 配置任务列表
• 开启/关闭交换机的RSTP
• 配置网桥优先级
• 配置Forward Time
• 配置Hello Time
• 配置Max Age
• 配置端口路径开销
• 配置端口优先级
• 配置边缘端口
• 配置端口连接类型
• 重启协议转换检查
2.2 RSTP配置任务
2.2.1 开启/关闭交换机的RSTP
在全局配置模式下进行下列配置
命令
|
目的
|
spanning-tree mode rstp
|
开启RSTP。
|
no spanning-tree mode
|
关闭交换机的stp功能。
|
2.2.2 配置 网桥优先级
网桥优先级的大小决定了这个网桥是否能够被选择为整个生成树的根网桥,通过配置较小的优先级可以使某个网桥成为生成树的根网桥。
在全局配置模式下进行下列配置
命令
|
目的
|
spanning-tree rstp priority value
|
配置网桥优先级。
|
no spanning-tree rstp priority
|
恢复优先级为默认 。
|
需要注意的是如果整个交换网络中所有网桥的优先级采用相同的值的话,那么MAC地址最小的那个网桥将被选择为根网桥,在RSTP 协议开启的情况下如果网桥的优先级被改变则会引起生成树的重新计算。
缺省情况下网桥的优先级被配置为32768。
2.2.3 配置Forward Time
链路故障会引发网络重新进行生成树结构的计算,不过重新计算得到的新配置消息无法立刻传遍整个网络,如果新选出的根端口和指定端口立刻就开始数据转发的话可能会造成暂时性的路径回环,为此协议采用了一种状态迁移的机制。根端口和指定端口重新开始数据转发之前要经历一个中间状态,中间状态经过Forward Delay 延时后才能进入转发状态,这个延时保证了新的配置消息已经传遍整个网络。网桥的Forward Delay 特性与交换网络的网络直径有关,一般来说网络直径越大Forward Delay 的时间就应该配置得越长。
在全局配置模式下进行下列配置:
命令
|
目的
|
spanning-tree rstp forward-time value
|
配置Forward Delay 。
|
no spanning-tree rstp forward-time
|
恢复Forward Delay为默认值(15s)。
|
需要注意的是如果Forward Delay 配置的过小可能会使网络出现暂时的冗余路径,如果Forward Delay 配置的过大网络则可能会较长时间不能恢复连通,建议用户采用缺省值。
缺省情况下网桥的Forward Delay 为15 秒。
2.2.4 配置Hello Time
合适的Hello Time 时间值可以保证网桥能够及时发现网络中的链路故障又不会占用过多的网络资源。
在全局配置模式下进行下列配置
命令
|
目的
|
spanning-tree rstp hello-time value
|
配置Hello Time 。
|
no spanning-tree rstp hello-time
|
恢复Hello Time为默认值 。
|
需要注意的是过长的Hello Time 值会因为链路丢包而导致网桥长时间收不到Hello报文,那么网桥会认为链路发生了故障并且开始重新计算生成树,如果Hello Time过短则会导致网桥频繁发送配置消息占用网络带宽,增加了网络负担和CPU 负担,建议用户采用缺省值。
缺省情况下网桥的Hello Time 为2秒。
2.2.5 配置Max Age
Max Age 是用来判断配置消息是否过时的参数,用户可以根据实际的网络情况对其进行配置。
在全局配置模式下进行下列配置:
命令
|
目的
|
spanning-tree rstp max-age value
|
配置Max Age。
|
no spanning-tree rstp max-age
|
恢复Max Age为默认值(20s)。
|
链路故障,降低网络自适应能力。建议用户采用缺省值。 需要注意的是如果Max Age 配置的过小,生成树计算就会比较频繁,而且有可能将网络拥塞误认为链路故障,如果Max Age 配置的过大则很可能不能及时发现。
缺省情况下网桥的Max Age 为20 秒。
2.2.6 配置端口 路径开销
以太网端口的路径开销与该端口的链路速率有关,链路速率越大应该将该参数配置的越小,当该参数被配置为缺省值时,RSTP 协议可以自动检测当前以太网端口的链路速率并换算成相应的路径开销。
请在端口配置模式下进行下列配置:
命令
|
目的
|
spanning-tree rstp cost value
|
配置端口的Path Cost值。
|
no spanning-tree rstp cost
|
恢复端口的Path Cost为默认值。
|
需要注意的是配置以太网端口的路径开销会引起生成树重新计算,建议用户采用缺省值,让RSTP 协议自己来计算当前以太网端口的路径开销。
缺省情况下网桥所有以太网端口的Path Cost 在端口速率为10Mbps 时为2000000,在端口速率为100Mbps 时为200000。
2.2.7 配置端口优先级
通过设定端口的优先级可以指定特定的以太网端口包含在生成树内,一般情况下配置的值越小端口的优先级就越高,该以太网端口就越有可能包含在生成树内,如果网桥所有的以太网端口采用相同的优先级参数值,则以太网端口的优先级高低就取决于该以太网端口的索引号。
请在端口配置模式下进行下列配置:
命令
|
目的
|
spanning-tree rstp port-priority value
|
配置端口的优先值。
|
no spanning-tree rstp port-priority
|
恢复端口的优先值为默认值。
|
需要注意的是改变以太网端口的优先级会引起生成树重新计算。
缺省情况下网桥所有以太网端口的优先级为128。
2.2.8 配置边缘端口
边缘端口表示该端口连接着网络上的终端设备,一个强制的边缘端口在Link Up之后会立刻进入转发状态。在端口配置模式下,通过下面的命令配置RSTP的边缘端口:
命令
|
目的
|
spanning-tree rstp edge
|
将端口配置为边缘端口。
|
在协议自动检测模式下,如果端口在一定时间内没有收到过BPDU,则认为该端口是边缘端口。
2.2.9 配置端口连接类型
运行RSTP协议的交换机之间如果是点到点的直接连接,它们可以通过握手机制快速建立拓扑。配置端口连接类型功能允许将端口的连接设置为点到点。
在默认情况下,协议会根据端口的双工属性决定其是不是使用了点到点的连接。如果端口工作在全双工模式,协议就会认为它是点到点的连接;如果端口工作在半双工模式,协议会认为它的连接是共享的。
如果确认端口所连的交换机运行着RSTP或者MSTP协议,可以将端口的连接类型设置为点到点,保证快速握手的进行。
在端口配置模式下,使用下面的命令设置端口的连接类型:
命令
|
目的
|
spanning-tree rstp point-to-point
[ force-true | force-false | auto ]
|
配置点到点端口。
force-true:强制为点到点类型。
force-false:强制为非点到点类型。
auto:协议自动检测端口类型。
|
2.2.10 重启协议转换检查
RSTP协议允许交换机通过一种协议转换机制与传统的802.1D STP交换机协同工作。如果交换机的一个端口接收到STP的配置信息,那么该端口就会转为仅发送STP报文。
一个端口进入STP兼容状态之后,即使该端口不再收到802.1D STP BPDU,该端口也不会恢复为RSTP状态。这时,可以使用spanning-tree rstp migration-check命令,启动端口的协议转换检查过程,将端口恢复为RSTP模式。
在全局配置模式下,使用下面的命令重启RSTP协议转换检查:
命令
|
目的
|
spanning-tree rstp migration-check
|
重启所有端口的协议转换检查过程。
|
在交换端口配置模式下,使用下面的命令对该端口进行协议转换检查:
命令
|
目的
|
spanning-tree rstp migration-check
|
重启当前端口的协议转换检查过程。
|
3 配置多生成树协议(MSTP)
3.1 MSTP简介
3.1.1 概述
MSTP(Multiple Spanning Tree Protocol)多生成树协议,用来在桥接局域网中建立简单而完整的拓扑结构。MSTP可以与早期的STP(Spanning Tree Protocol)和RSTP(Rapid Spanning Tree Protocol)相兼容。
STP和RSTP都只能在网络中建立单独的生成树拓扑,所有VLAN的报文沿着唯一的生成树进行转发。STP收敛过慢,RSTP通过握手机制保证网络拓扑快速稳定。
MSTP继承了RSTP的快速握手机制,同时,在保证网络拓扑快速建立的基础上,MSTP允许将不同的VLAN划分到不同的生成树中去,从而在网络中建立多个树状拓扑。在MSTP建立的网络中,属于不同VLAN的帧可以在不同的路径上转发,实现了VLAN数据的负载均衡。
与按VLAN划分STP(per-VLAN Spanning Tree,PVST)不同的是,MSTP还允许将多个VLAN划分到同一个生成树拓扑中去,这样可以有效减少支持大量VLAN所需的生成树的数目。
3.1.2 多生成树区域
MSTP中,VLAN与生成树的对应关系是通过一个多生成树配置表来描述的。多生成树配置表,连同一个配置名称和一个配置修订号,共同构成了多生成树配置标识(MST Configuration Identifier)。
在网络上,相互连接且具有相同多生成树配置标识的网桥被认为是在同一个多生成树区域(MST Region)中。同一个多生成树区域中的网桥通常也具有相同的VLAN配置,从而保证这些VLAN的帧只在区域内部流动。
3.1.3 IST、CST、CIST和MSTI
如图2.1所示为一个示例MSTP网络,其中包括三个多生成树区域以及一个运行802.1D STP协议的交换机。
图2.1 MSTP拓扑示例
3.1.3.1CIST
Common and Internal Spanning Tree,公共与内部生成树。是指网络中所有单个交换机及其连接的局域网构成的生成树。这些交换机可能分属不同的多生成树区域,也可能是运行传统STP或者RSTP协议的交换机,运行这两种协议的交换机在多生成树网络中被认为是处在仅由其自身组成的区域中。
网络拓扑稳定后,整个CIST会选出一个CIST根桥。每个区域内部也会选出CIST区域内根桥,作为从区域内部到达CIST根的最短路径。
3.1.3.2CST
Common Spanning Tree,公共生成树。如果把每个多生成树区域看作是一个单独的交换机,CST就是连接着所有这些“单独交换机”的生成树。如图2.1所示,区域1、2、3以及STP交换机共同构成了网络的CST。
3.1.3.3IST
Internal Spanning Tree,内部生成树。是指CIST在某个多生成树区域以内的部分。也可以理解为IST与CST共同构成了CIST。
3.1.3.4MSTI
Multiple Spanning Tree Instance,多生成树实例。MSTP协议允许将不同的VLAN划分到不同的生成树中,从而就建立起多个生成树实例。通常情况下,编号为0的生成树实例是指CIST,它可以扩展到整个网络,而从1开始所指的生成树实例,都处在某个区域的内部。每个生成树实例中都可以被分配多个VLAN,初始情况下,所有的VLAN都被分配在CIST中。
多生成树区域中所有的MSTI都是相互独立的,它们可以选出不同的交换机作为各自的根。比如图2.1的区域3中,MSTI01的根桥可能是处在左下角的交换机,而MSTI00,也就是CIST的区域内根桥则可能是处在中间位置的交换机。
3.1.4 端口的角色
MSTP协议具有与RSTP相似的端口角色分配。
3.1.4.1根端口(Root Port)
图2.2 根端口
根端口表示当前交换机到网络根桥的路径,该路径具有最小的根路径开销。
3.1.4.2预备端口(Alternate Port)
图2.3 预备端口
预备端口作为当前交换机到网络根桥路径的备份,当根端口连接失效时,预备端口可以立即转为新的根端口开始工作。
3.1.4.3指派端口(Designated Port)
图2.4 指派端口
指派端口可以连接着下游的交换机或者局域网,作为该局域网到达网络根桥的路径。
3.1.4.4备份端口(Backup Port)
图2.5 备份端口
当交换机的两个端口直接相连或者连接到同一个局域网时,优先级较低的端口会成为备份端口(较高的成为指派端口)。如果指派端口失效,则备份端口转为指派端口开始工作。
3.1.4.5Master端口
图2.6 Master端口
Master端口作为多生成树区域连接CIST根桥的最短路径。Master端口也就是CIST区域内根桥的根端口。
3.1.4.6边界端口(Boundary Port)
边界端口的概念在CIST中与在每个MSTI中稍有不同。在CIST中,边界端口表示连接着另一个多生成树区域的端口;而在MSTI中,边界端口角色表示该生成树实例在这个端口处不再扩展。
3.1.4.7边缘端口(Edge Port)
在RSTP和MSTP协议中,边缘端口表示直接连接到网络主机的端口,这些端口不需要经过等待既可以进入转发状态,且不会在网络上造成环路。
图2.7 边缘端口
在初始情况下,MSTP(包括RSTP)协议会认为所有的端口都是边缘端口,从而可以保证网络拓扑的快速建立。此时如果一个端口收到了来自其它交换机的BPDU,该端口就会从边缘状态恢复为普通状态,如果收到的是802.1D STP BPDU,那么该端口需要等待2倍的Forward Delay时间才能进入转发。
3.1.5 MSTP BPDU
与STP和RSTP协议相同,运行MSTP协议的交换机之间通过BPDU(Bridge Protocol Data Unit)交互信息,CIST以及所有MSTI中的配置信息都可以由BPDU携带。表2.1和表2.2列出了MSTP协议使用的BPDU结构。
表2.1 MSTP BPDU
字段名
|
字节数
|
Protocol Identifier
|
1 – 2
|
Protocol Version Identifier
|
3
|
BPDU Type
|
4
|
CIST Flags
|
5
|
CIST Root Identifier
|
6 – 13
|
CIST External Root Path Cost
|
14 – 17
|
CIST Regional Root Identifier
|
18 – 25
|
CIST Port Identifier
|
26 – 27
|
Message Age
|
28 – 29
|
Max Age
|
30 – 31
|
Hello Time
|
32 – 33
|
Forward Delay
|
34 – 35
|
Version 1 Length
|
36
|
Version 3 Length
|
37 – 38
|
Format Selector
|
39
|
Configuration Name
|
40 – 71
|
Revision
|
72 – 73
|
Configuration Digest
|
74 – 89
|
CIST Internal Root Path Cost
|
90 – 93
|
CIST Bridge Identifier
|
94 – 101
|
CIST Remaining Hops
|
102
|
MSTI Configuration Messages
|
103 ~
|
表2.2 MST配置消息
字段名
|
字节数
|
MSTI FLAGS
|
1
|
MSTI Regional Root Identifier
|
2 – 9
|
MSTI Internal Root Path Cost
|
10 – 13
|
MSTI Bridge Priority
|
14
|
MSTI Port Priority
|
15
|
MSTI Remaining Hops
|
16
|
3.1.6 稳定状态
MSTP交换机根据接收到的BPDU执行计算和比较操作,最终可以使网络达到如下的稳定状态:
(1)一台交换机被选为整个网络的CIST根(CIST Root);
(2)每个交换机和局域网段都会决定出到CIST根的具有最小开销的路径,以保证连接的完整性并防止环路;
(3)每个区域内部都会选出一台交换机作为CIST区域内根(CIST Regional Root),该交换机具有到达CIST根的开销最小的路径;
(4)每个MSTI都会独立的选择出一台交换机作为MSTI区域内根;
(5)区域内部的每台交换机和局域网段都会确定出到达所在MSTI的根的开销最小的路径;
(6)CIST根端口(Root Port)提供经过CIST区域内根(如果该交换机不是CIST区域内根)到达CIST根(如果该交换机不是CIST根)的具有最小开销的路径;
(7)CIST指派端口(Designated Port)为所连接的局域网提供到达CIST根的最小开销路径;
(8)Alternate和Backup端口在交换机、端口或局域网失效或被移除时提供连接;
(9)MSTI根端口(Root Port)提供到达MSTI区域内根的最小开销路径(如果该交换机不是MSTI区域内根桥);
(10)MSTI指派端口(Designated Port)为所连接局域网提供到达MSTI区域内根的最小开销路径;
(11)一个主端口(Master Port)提供区域与区域外CIST根桥的连接。在区域内部,CIST区域内根桥的CIST根端口会作为区域内所有MSTI的Master端口。
3.1.7 跳数
与STP和RSTP不同,MSTP协议不使用BPDU配置消息中的消息生存期(Message Age)和最大生存期(Max Age)来计算网络拓扑,而是使用了跳数属性(Hop Count)。
为了防止旧的信息在网络中无休止的循环而影响新信息的传输,MSTP使传输的信息在每个生成树中都与一个跳数属性相关联。BPDU的跳数属性由CIST区域内根桥或者MSTI区域内根桥指定,并在每个接收端口处被减小。如果跳数在端口处变为了0,该信息会被丢弃同时该端口会成为一个指派端口。
3.1.8 STP兼容性
MSTP协议允许交换机通过一种协议转换机制与传统的STP交换机协同工作。如果交换机的一个端口接收到STP的配置信息,那么该端口就会转为仅发送STP报文。同时,接收到STP信息的端口也会被认为是一个边界端口。
请注意:
一个端口转入STP兼容状态之后,即使不再接收到STP报文,该端口也不会自动恢复为MSTP状态。这种情况下,可以使用spanning-tree mstp migration-check命令清除端口学习到的生成树协议信息,使之恢复为MSTP状态。
运行RSTP协议的交换机可以识别并处理MSTP报文,因此与RSTP交换机协同工作时MSTP交换机不需要发生协议转换。
3.2 MSTP配置任务列表
• MSTP默认配置
• 启动和停止多生成树协议
• 配置多生成树区域
• 配置网络根桥
• 配置次要根桥
• 配置网桥优先级
• 配置生成树协议的时间参数
• 配置网络直径
• 配置最大跳数
• 配置端口优先级
• 配置端口路径开销
• 配置边缘端口
• 配置端口连接类型
• 激活多生成树兼容模式
• 重启协议转换检查
• 配置端口的角色限制
• 配置端口的TCN限制
• 查看多生成树协议信息
3.3 MSTP配置任务
3.3.1 MSTP默认配置
属性
|
默认设置
|
生成树协议模式
|
RSTP(PVST,SSTP和MSTP没有启动)。
|
区域名称
|
交换机MAC地址的字符串形式。
|
区域修订级别
|
0
|
多生成树配置表
|
所有VLAN都映射在CIST(MST00)中。
|
生成树优先级(CIST和所有MSTI)
|
32768
|
生成树端口优先级(CIST和所有MSTI)
|
128
|
生成树端口路径开销(CIST和所有MSTI)
|
1000 Mbps:20000
100 Mbps:200000
10 Mbps:2000000
|
Hello Time
|
2 秒
|
Forward Delay
|
15 秒
|
Maximum-aging Time
|
20 秒
|
最大跳数
|
20
|
3.3.2 启动和停止多生成树协议
生成树协议在默认情况下会以RSTP模式启动,当不需要运行spanning-tree时可以停止其运行。
使用下面的命令将生成树协议设置为MSTP模式:
命令
|
目的
|
spanning-tree
|
启动默认模式的生成树协议。
|
spanning-tree mode mstp
|
启动MSTP多生成树协议。
|
使用下面的命令停止生成树协议运行:
命令
|
目的
|
no spanning-tree
|
禁止生成树协议运行。
|
3.3.3 配置多生成树区域
交换机所处的多生成树区域,由配置名称、修订号以及VLAN与MSTI映射关系这三项属性决定,通过区域配置命令可以分别对其进行设置。需要注意的是,三项属性中任何一项的变化都会导致交换机所处区域的变化。
在初始情况下,多生成树配置名称等于交换机MAC地址的字符串形式,修订号为0,并且所有的VLAN都被映射在CIST(MST00)中。由于不同交换机的MAC地址都是不同的,因此初始情况下所有运行多生成树协议的交换机都是处在不同的区域中。通过执行spanning-tree mstp instance instance-id vlan vlan-list命令,可以创建一个新的MSTI,并将指定的VLAN映射给它;如果该MSTI被删除,这些VLAN会被重新映射到CIST中。
使用下面的命令设置多生成树的区域信息:
命令
|
目的
|
spanning-tree mstp name string
|
设置多生成树配置名称。
string表示配置名称字符串,最多可包含32个字符,大小写敏感。默认值为交换机MAC地址的字符串形式。
|
no spanning-tree mstp name
|
设置多生成树配置名称为默认值。
|
spanning-tree mstp revision value
|
设置多生成树配置修订号。
value表示修订号,范围:0 – 65535,默认值0。
|
no spanning-tree mstp revision
|
设置多生成树修订号为默认值。
|
spanning-tree mstp instance instance-id vlan vlan-list
|
将VLAN映射到MSTI。
instance-id:生成树实例号,表示一个MSTI。
vlan-list:映射到该生成树的VLAN列表。范围 1 – 4094。
instance-id为单独的值,仅表示一个生成树实例;
vlan-list可以表示一组VLAN,比如:”1,2,3”、”1-5”、
“1,2,5-10”等。
|
no spanning-tree mstp instance instance-id
|
取消MSTI的VLAN映射,停止生成树实例。
instance-id:生成树实例号,表示一个MSTI。
|
使用下面的命令查看多生成树协议的区域设置:
命令
|
目的
|
show spanning-tree mstp region
|
显示多生成树协议的区域设置。
|
3.3.4 配置网络根桥
在MSTP协议中,每个生成树实例都有一个网桥标识属性(Bridge ID),网桥标识中包含有该交换机的优先级值以及MAC地址。在网络生成树拓扑建立过程中,网桥标识较小的交换机会被选为网络(或区域)的根。
多生成树协议允许通过配置将交换机设为网络的根。Spanning-tree mstp instance-id root配置命令可以将交换机在某个生成树实例中的优先级从默认的32768设置为一个足够小的值,保证交换机在该生成树实例中成为根。
通常情况下,当执行上述命令后,协议会自动检查当前网络根桥的网桥标识,然后把网桥标识的优先级字段设置为24576,如果这个值可以保证当前交换机成为生成树实例的根。
如果网络根桥的优先级比24576更小,那么协议会自动把当前网桥的生成树优先级设置为比根桥优先级小4096的一个值。需要注意的是,4096是网桥优先级值的步长。
设置根桥时,可以通过diameter子命令设置多生成树网络的网络直径,该关键字仅在生成树实例号为0时有效。设定网络直径以后,为了保证网络收敛的稳定,协议会自动根据这个值来计算合适的生成树协议时间参数,包括:Forward Delay以及Maximum Age。Hello-time子命令可以用来设置新的Hello Time时间,以取代默认设置。
使用下面的命令设置交换机为网络的根:
命令
|
目的
|
spanning-tree mstp instance-id root primary
[ diameter net-diameter [ hello-time seconds ] ]
|
设置交换机在指定生成树实例中为根。
instance-id:生成树实例号;
net-diameter:可选参数,网络直径,当instance-id为0时有效,范围:2 – 7;
seconds:可选参数,Hello Time,范围:1 – 10秒。
|
no spanning-tree mstp instance-id root
|
取消交换机在生成树中的根桥设置。
instance-id:生成树实例号。
|
使用下面的命令查看多生成树协议信息:
命令
|
目的
|
show spanning-tree mstp
[ instance instance-id ]
|
查看多生成树实例的信息。
|
3.3.5 配置次要根桥
为网络配置根桥以后,可以通过spanning-tree mstp instance-id root secondary命令设置一台或多台交换机成为网络的次要根桥(或称备份根桥)。如果根桥因为某些原因不能工作,次要根桥会接替成为网络的根。
与配置主要根桥不同,执行配置次要根桥的命令后,协议会将交换机的生成树优先级直接设置为28672,这样,在网络中其它交换机的优先级都为默认的32768的情况下,当前交换机就可以成为次要根桥。
配置次要根桥时,仍然可以通过diameter和hello-time子命令来更新生成树协议的时间参数。当次要根桥成为主要根桥开始工作后,这些参数将会开始起作用。
使用下面的命令设置交换机为网络的次要根桥:
命令
|
目的
|
spanning-tree mstp instance-id root secondary
[ diameter net-diameter [ hello-time seconds ] ]
|
设置交换机在指定生成树实例中为次要根桥。
instance-id:生成树实例号;
net-diameter:可选参数,网络直径,当instance-id为0时有效,范围:2 – 7;
seconds:可选参数,Hello Time,范围:1 – 10秒。
|
no spanning-tree mstp instance-id root
|
取消交换机在生成树中的根桥设置。
instance-id:生成树实例号。
|
使用下面的命令查看多生成树协议信息:
命令
|
目的
|
show spanning-tree mstp
[ instance instance-id ]
|
查看多生成树实例的信息。
|
3.3.6 配置网桥优先级
配置网桥优先级在某些情况下可以更直接的将交换机设置为网络的根,而不需通过root子命令。交换机在每个生成树实例中的优先级值是相互独立的,可以独立配置。
使用下面的命令设置生成树的优先级:
命令
|
目的
|
spanning-tree mstp instance-id priority value
|
设置交换机的优先级值。
instance-id:生成树实例号;
value:网桥优先级,可为下列值之一:
0, 4096, 8192, 12288, 16384, 20480, 24576, 28672,
32768, 36864, 40960, 45056, 49152, 53248, 57344, 61440。
|
no spanning-tree mstp instance-id priority
|
恢复交换机的网桥优先级为默认值。
instance-id:生成树实例号。
|
3.3.7 配置生成树协议的时间参数
生成树协议的时间参数包括下列几项:
• Hello Time:
交换机作为网络根桥时向指派端口发送配置信息的时间间隔;
• Forward Delay:
STP模式下,端口从Blocking状态到Learning状态,以及从Learning状态到Forwarding状态经历的时间;
• Max Age:
生成树配置信息的最大生存期。
为了减少网络拓扑震荡,时间参数之间应该符合以下条件的要求:
• 2 x (fwd_delay - 1.0) >= max_age
• max_age >= (hello_time + 1) x 2
使用下面的命令配置多生成树协议的时间参数:
命令
|
目的
|
spanning-tree mstp hello-time seconds
|
设置Hello Time参数。
seconds:范围:1 – 10秒,默认值2秒。
|
no spanning-tree mstp hello-time
|
恢复Hello Time参数为默认值。
|
spanning-tree mstp forward-time seconds
|
设置Forward Delay参数。
seconds:范围:4 – 30秒,默认值15秒。
|
no spanning-tree mstp forward-time
|
恢复Forward Delay参数为默认值。
|
spanning-tree mstp max-age seconds
|
设置Max Age参数。
seconds:范围:6 – 40秒,默认值20秒。
|
no spanning-tree mstp max-age
|
恢复Max Age参数为默认值。
|
建议通过设置根桥或者设置网络直径的方法来修改生成树协议的时间参数,以保证其合理性。
即使新设置的时间参数不符合上述公式的要求,仍然会在协议中生效。配置时请注意控制台的提示。
3.3.8 配置网络直径
网络直径表示网络上两台主机之间跨越交换机的最大数目,它反映了网络的规模。
可以通过spanning-tree mstp diameter net-diameter命令设置多生成树协议的网络直径。网络直径参数仅对CIST有效,设置后,生成树协议的三个时间参数会被自动更新为较优的值。
使用下面的命令配置网络直径参数:
命令
|
目的
|
spanning-tree mstp diameter net-diameter
|
设置网络直径参数。
net-diameter:范围:2 – 7,默认值为7。
|
no spanning-tree mstp diameter
|
恢复网络直径为默认值。
|
网络直径参数在交换机中并没有作为一项单独的设置而被保存,只有通过设置网络直径而修改的时间参数才会被保存。
3.3.9 配置最大跳数
使用下面的命令配置最大跳数:
命令
|
目的
|
spanning-tree mstp max-hops hop-count
|
设置最大跳数。
hop-count:范围:1 – 40,默认值为20。
|
no spanning-tree mstp max-hops
|
恢复最大跳数为默认值。
|
3.3.10 配置端口优先级
如果交换机的两个端口之间形成环路,优先级较高的端口会进入Forwarding状态,较低的则被阻塞。如果所有端口的优先级都相同,那么端口号较小的端口将优先进入Forwarding状态。
在端口配置模式下,使用下面的命令设置多生成树协议端口的优先级:
命令
|
目的
|
spanning-tree mstp instance-id port-priority priority
|
设置端口优先级。
instance-id:生成树实例号;
priority:端口优先级,为下列值之一:
0, 16, 32, 48, 64, 80, 96, 112
128, 144, 160, 176, 192, 208, 224, 240。
|
spanning-tree port-priority value
|
设置端口在所有生成树实例中的优先级。
value:端口优先级值,为下列值之一:
0, 16, 32, 48, 64, 80, 96, 112
128, 144, 160, 176, 192, 208, 224, 240。
|
no spanning-tree mstp instance-id port-priority
|
恢复端口优先级为默认值。
|
no spanning-tree port-priority
|
恢复端口在所有生成树实例中的优先级为默认值。
|
3.3.11 配置端口路径开销
MSTP协议中端口路径开销的默认值是根据端口的连接速率计算出来的。如果两台交换机之间形成环路,路径开销较小的端口会进入Forwarding状态,路径开销越小表示端口的速率越高。如果所有端口的路径开销都相同,端口号较小的端口会优先进入转发状态。
在端口配置模式下,使用下面的命令设置端口的路径开销:
命令
|
目的
|
spanning-tree mstp instance-id cost cost
|
设置端口路径开销。
instance-id:生成树实例号;
cost:路径开销值,范围1 – 200000000。
|
spanning-tree cost value
|
设置端口在所有生成树实例中的路径开销。
value:端口路径开销,范围1 – 200000000。
|
no spanning-tree mstp instance-id cost
|
恢复端口路径开销为默认值。
|
no spanning-tree cost
|
恢复端口在所有生成树实例中的路径开销为默认值。
|
3.3.12 配置边缘端口
边缘端口表示该端口连接着网络上的终端设备,一个强制的边缘端口在Link Up之后会立刻进入转发状态。在端口配置模式下,通过下面的命令配置MSTP的边缘端口:
命令
|
目的
|
spanning-tree mstp edge
|
将端口配置为边缘端口。
|
no spanning-tree mstp edge
|
恢复默认的自动检测边缘端口。
|
3.3.13 配置端口连接类型
运行MSTP协议的交换机之间如果是点到点的直接连接,它们可以通过握手机制快速建立拓扑。配置端口连接类型功能允许将端口的连接设置为点到点。
在默认情况下,协议会根据端口的双工属性决定其是不是使用了点到点的连接。如果端口工作在全双工模式,协议就会认为它是点到点的连接;如果端口工作在半双工模式,协议会认为它的连接是共享的。
如果确认端口所连的交换机运行着RSTP或者MSTP协议,可以将端口的连接类型设置为点到点,保证快速握手的进行。
在端口配置模式下,使用下面的命令设置端口的连接类型:
命令
|
目的
|
spanning-tree mstp point-to-point force-true
|
设置端口连接方式为点到点。
|
spanning-tree mstp point-to-point force-false
|
设置端口连接方式为非点到点。
|
spanning-tree mstp point-to-point auto
|
自动检测端口的连接方式(默认)。
|
no spanning-tree mstp point-to-point
|
将端口的连接方式恢复为默认设置。
|
3.3.14 激活多生成树兼容模式
本公司交换机支持的MSTP协议是基于IEEE 802.1Q标准实现的,为了与某些其它的MSTP实现兼容--主要是Cisco交换机在早期支持的MSTP--协议可以工作在多生成树兼容模式。工作在MST兼容模式的交换机可以识别其它多生成树协议的报文结构,检查其中包含的多生成树区域标识信息,并与之建立多生成树区域。
MST兼容模式的工作方式与STP兼容模式相同,都是依赖MSTP的协议转换机制实现的:如果交换机的一个端口收到兼容模式的BPDU,该端口就会自动迁移到该模式运行,发送兼容模式的BPDU。如果希望将端口恢复为标准的多生成树模式,请使用spanning-tree mstp migration-check命令。
在全局配置模式下,使用下面的命令激活或关闭MSTP的兼容模式:
命令
|
目的
|
spanning-tree mstp mst-compatible
|
激活交换机的MST兼容模式。
|
no spanning-tree mstp mst-compatible
|
关闭交换机的MST兼容模式。
|
请注意:
兼容模式的主要作用是使交换机可以与运行其它MSTP协议的交换机建立多生成树区域,在实际组网时,请确保交换机具有相同的配置名称和修订号,并建议将运行其它MSTP协议的交换机配置为CIST的根,以保证交换机可以通过接收报文而进入兼容模式。
如果没有激活MST兼容模式,交换机将不会解析兼容BPDU的全部内容,而是仅将其当作普通的RSTP BPDU对待,这样交换机就不能与相连的兼容MSTP交换机处在同一区域中。
对一个已经处在兼容模式的端口,即使通过全局命令关闭交换机的兼容模式,该端口也不会自动恢复到发送标准的MST BPDU,这时,请使用migration-check命令。
3.3.15 重启协议转换检查
MSTP协议允许交换机通过一种协议转换机制与传统的STP交换机或不同类型的MST交换机协同工作。如果交换机的一个端口接收到STP的配置信息,那么该端口就会转为仅发送STP报文。接受到STP信息的端口也会被认为是一个边界端口。同样,在MST兼容模式下,如果一个端口接收到兼容模式的BPDU,该端口也会转为发送兼容模式的BPDU。
请注意:
一个端口转入STP兼容状态或MST兼容状态之后,即使不再接收到相应模式的报文,该端口也不会自动恢复为MSTP状态。这种情况下,可以使用spanning-tree mstp migration-check命令清除端口学习到的生成树协议信息,使之恢复为MSTP状态。
运行RSTP协议的交换机可以识别并处理MSTP报文,因此与RSTP交换机协同工作时MSTP交换机不需要发生协议转换。
在全局配置模式下,使用下面的命令清除交换机所有端口检测到的生成树协议信息:
命令
|
目的
|
spanning-tree mstp migration-check
|
清除交换机所有端口检测到的生成树协议信息。
|
在端口配置模式下,使用下面的命令清除端口检测到的生成树协议信息:
命令
|
目的
|
spanning-tree mstp migration-check
|
清除端口检测到的生成树协议信息。
|
3.3.16 配置端口的角色限制
配置端口的角色限制可以使端口不被选为根端口。
在端口配置模式下,使用下面的命令配置端口的角色限制:
命令
|
目的
|
spanning-tree mstp restricted-role
|
使端口不被选为根端口
|
3.3.17 配置端口的TCN限制
配置端口的TCN限制可以使端口不传播拓扑变化到其它端口。
在端口配置模式下,使用下面的命令配置端口的TCN限制:
命令
|
目的
|
spanning-tree mstp restricted-tcn
|
使端口不传播拓扑变化到其它端口
|
3.3.18查看多生成树协议信息
在监控模式、全局配置模式以及端口配置模式下,使用下面的命令查看多生成树协议的各种信息:
命令
|
目的
|
show spanning-tree
|
查看生成树协议信息。
(SSTP, PVST, RSTP, MSTP通用)
|
show spanning-tree detail
|
查看生成树协议详细信息。
(SSTP, PVST, RSTP, MSTP通用)
|
show spanning-tree interface interface-type interface-number
|
查看生成树协议端口信息。
(SSTP, PVST, RSTP, MSTP通用)
|
show spanning-tree mstp
|
查看所有多生成树实例。
|
show spanning-tree mstp region
|
查看多生成树区域配置。
|
show spanning-tree mstp instance instance-id
|
查看某一个多生成树实例信息。
|
show spanning-tree mstp detail
|
查看多生成树详细信息。
|
show spanning-tree mstp interface interface-type interface-number
|
查看多生成树端口配置。
|
show spanning-tree mstp protocol-migration
|
查看端口的协议转换状态。
|