07-生成树配置
本章节下载: 07-生成树配置 (762.83 KB)
生成树协议是一种二层管理协议,它通过选择性地阻塞网络中的冗余链路来消除二层环路,同时还具备链路备份的功能。
与众多协议的发展过程一样,生成树协议也是随着网络的发展而不断更新的,从最初的STP(Spanning Tree Protocol,生成树协议)到RSTP(Rapid Spanning Tree Protocol,快速生成树协议),再到最新的MSTP(Multiple Spanning Tree Protocol,多生成树协议)。本文将对STP、RSTP和MSTP各自的特点及其相互间的关系进行介绍。
STP由IEEE制定的802.1D标准定义,用于在局域网中消除数据链路层物理环路的协议。运行该协议的设备通过彼此交互信息发现网络中的环路,并有选择的对某些端口进行阻塞,最终将环路网络结构修剪成无环路的树型网络结构,从而防止报文在环路网络中不断增生和无限循环,避免设备由于重复接收相同的报文造成的报文处理能力下降的问题发生。
STP包含了两个含义,狭义的STP是指IEEE 802.1D中定义的STP协议,广义的STP是指包括IEEE 802.1D定义的STP协议以及各种在它的基础上经过改进的生成树协议。
STP采用的协议报文是BPDU(Bridge Protocol Data Unit,桥协议数据单元),也称为配置消息。本文中将把生成树协议的协议报文均简称为BPDU。
STP通过在设备之间传递BPDU来确定网络的拓扑结构。BPDU中包含了足够的信息来保证设备完成生成树的计算过程。STP协议的BPDU分为以下两类:
· 配置BPDU(Configuration BPDU):用来进行生成树计算和维护生成树拓扑的报文。
· TCN BPDU(Topology Change Notification BPDU,拓扑变化通知BPDU):当拓扑结构发生变化时,用来通知相关设备网络拓扑结构发生变化的报文。
BPDU中包含有足够的信息来保证设备完成生成树的计算过程,其中包括:
· 根桥ID:由根桥的优先级和MAC地址组成;
· 根路径开销:到根桥的路径开销;
· 指定桥ID:由指定桥的优先级和MAC地址组成;
· 指定端口ID:由指定端口的优先级和该端口的全局编号组成;
· Message Age:BPDU在网络中传播的生存期;
· Max Age:BPDU在设备中的最大生存期;
· Hello Time:BPDU的发送周期;
· Forward Delay:端口状态迁移的延迟时间。
(1) 根桥
树形的网络结构必须有树根,于是STP引入了根桥(Root Bridge)的概念。根桥在全网中有且只有一个,其他设备则称为叶子节点。根桥会根据网络拓扑的变化而改变,因此根桥并不是固定的。
在网络初始化过程中,所有设备都视自己为根桥,生成各自的配置BPDU并周期性地向外发送;但当网络拓扑稳定以后,只有根桥设备才会向外发送配置BPDU,其他设备则对其进行转发。
(2) 根端口
所谓根端口,是指非根桥设备上离根桥最近的端口。根端口负责与根桥进行通信。非根桥设备上有且只有一个根端口,根桥上没有根端口。
(3) 指定桥与指定端口
有关指定桥与指定端口的含义,请参见表1-1的说明。
分类 |
指定桥 |
指定端口 |
对于一台设备而言 |
与本机直接相连并且负责向本机转发BPDU的设备 |
指定桥向本机转发BPDU的端口 |
对于一个局域网而言 |
负责向本网段转发BPDU的设备 |
指定桥向本网段转发BPDU的端口 |
如图1-1所示,Device B和Device C与LAN直接相连。如果Device A通过Port A1向Device B转发BPDU,则Device B的指定桥就是Device A,指定端口就是Device A上的Port A1;如果Device B负责向LAN转发BPDU,则LAN的指定桥就是Device B,指定端口就是Device B上的Port B2。
(4) 路径开销
路径开销是STP协议用于选择链路的参考值。STP协议通过计算路径开销,选择较为“强壮”的链路,阻塞多余的链路,将网络修剪成无环路的树型网络结构。
STP算法实现的基本过程如下:
(1) 初始状态
各设备的各端口在初始时会生成以本设备为根桥的BPDU,根路径开销为0,指定桥ID为自身设备ID,指定端口为本端口。
(2) 选择根桥
网络初始化时,网络中所有的STP设备都认为自己是“根桥”,根桥ID为自身的设备ID。通过交换BPDU,设备之间比较根桥ID,网络中根桥ID最小的设备被选为根桥。
(3) 选择根端口和指定端口
根端口和指定端口的选择过程如表1-2所示。
表1-2 根端口和指定端口的选择过程
步骤 |
内容 |
1 |
非根桥设备将接收最优BPDU(最优BPDU的选择过程如表1-3所示)的那个端口定为根端口 |
2 |
设备根据根端口的BPDU和根端口的路径开销,为每个端口计算一个指定端口BPDU: · 根桥ID替换为根端口的BPDU的根桥ID; · 根路径开销替换为根端口BPDU的根路径开销加上根端口对应的路径开销; · 指定桥ID替换为自身设备的ID; · 指定端口ID替换为自身端口ID。 |
3 |
设备将计算出的BPDU与角色待定端口自己的BPDU进行比较: · 如果计算出的BPDU更优,则该端口被确定为指定端口,其BPDU也被计算出的BPDU替换,并周期性地向外发送; · 如果该端口自己的BPDU更优,则不更新该端口的BPDU并将该端口阻塞。该端口将不再转发数据,且只接收不发送BPDU。 |
当拓扑处于稳定状态时,只有根端口和指定端口在转发用户流量。其他端口都处于阻塞状态,只接收STP协议报文而不转发用户流量。
表1-3 最优BPDU的选择过程
步骤 |
内容 |
1 |
每个端口将收到的BPDU与自己的BPDU进行比较: · 如果收到的BPDU优先级较低,则将其直接丢弃,对自己的BPDU不进行任何处理; · 如果收到的BPDU优先级较高,则用该BPDU的内容将自己BPDU的内容替换掉。 |
2 |
设备将所有端口的BPDU进行比较,选出最优的BPDU |
BPDU优先级的比较规则如下:
· 根桥ID较小的BPDU优先级较高;
· 若根桥ID相同,则比较根路径开销:将BPDU中的根路径开销与本端口对应的路径开销相加,二者之和较小的BPDU优先级较高;
· 若根路径开销也相同,则依次比较指定桥ID、指定端口ID、接收该BPDU的端口ID等,上述值较小的BPDU优先级较高。
一旦根桥、根端口和指定端口选举成功,整个树形拓扑就建立完毕了。下面结合例子说明STP算法实现的具体过程。
图1-2 STP算法实现过程组网图
如图1-2所示,Device A、Device B和Device C的优先级分别为0、1和2,Device A与Device B之间、Device A与Device C之间以及Device B与Device C之间链路的路径开销分别为5、10和4。
(1) 各设备的初始状态
各设备的初始状态如表1-4所示。
设备 |
端口名称 |
端口的BPDU |
Device A |
Port A1 |
{0,0,0,Port A1} |
Port A2 |
{0,0,0,Port A2} |
|
Device B |
Port B1 |
{1,0,1,Port B1} |
Port B2 |
{1,0,1,Port B2} |
|
Device C |
Port C1 |
{2,0,2,Port C1} |
Port C2 |
{2,0,2,Port C2} |
表1-4中BPDU各项的具体含义为:{根桥ID,根路径开销,指定桥ID,指定端口ID}。
(2) 各设备的比较过程及结果
各设备的比较过程及结果如表1-5所示。
设备 |
比较过程 |
比较后端口的BPDU |
Device A |
· Port A1收到Port B1的BPDU {1,0,1,Port B1},发现自己的BPDU {0,0,0,Port A1}更优,于是将其丢弃。 · Port A2收到Port C1的BPDU {2,0,2,Port C1},发现自己的BPDU {0,0,0,Port A2}更优,于是将其丢弃。 · Device A发现自己各端口的BPDU中的根桥和指定桥都是自己,于是认为自己就是根桥,各端口的BPDU都不作任何修改,此后便周期性地向外发送BPDU。 |
· Port A1: {0,0,0,Port A1} · Port A2: {0,0,0,Port A2} |
Device B |
· Port B1收到Port A1的BPDU {0,0,0,Port A1},发现其比自己的BPDU {1,0,1,Port B1}更优,于是更新自己的BPDU。 · Port B2收到Port C2的BPDU {2,0,2,Port C2},发现自己的BPDU {1,0,1,Port B2}更优,于是将其丢弃。 |
· Port B1: {0,0,0,Port A1} · Port B2: {1,0,1,Port B2} |
· Device B比较自己各端口的BPDU,发现Port B1的BPDU最优,于是该端口被确定为根端口,其BPDU不变。 · Device B根据根端口的BPDU和路径开销,为Port B2计算出指定端口的BPDU {0,5,1,Port B2},然后与Port B2本身的BPDU {1,0,1,Port B2}进行比较,发现计算出的BPDU更优,于是Port B2被确定为指定端口,其BPDU也被替换为计算出的BPDU,并周期性地向外发送。 |
· 根端口Port B1: {0,0,0,Port A1} · 指定端口Port B2: {0,5,1,Port B2} |
|
Device C |
· Port C1收到Port A2的BPDU {0,0,0,Port A2},发现其比自己的BPDU {2,0,2,Port C1}更优,于是更新自己的BPDU。 · Port C2收到Port B2更新前的BPDU {1,0,1,Port B2},发现其比自己的BPDU {2,0,2,Port C2}更优,于是更新自己的BPDU。 |
· Port C1: {0,0,0,Port A2} · Port C2: {1,0,1,Port B2} |
· Device C比较自己各端口的BPDU,发现Port C1的BPDU最优,于是该端口被确定为根端口,其BPDU不变。 · Device C根据根端口的BPDU和路径开销,为Port C2计算出指定端口的BPDU {0,10,2,Port C2},然后与Port C2本身的BPDU {1,0,1,Port B2}进行比较,发现计算出的BPDU更优,于是Port C2被确定为指定端口,其BPDU也被替换为计算出的BPDU。 |
· 根端口Port C1: {0,0,0,Port A2} · 指定端口Port C2: {0,10,2,Port C2} |
|
· Port C2收到Port B2更新后的BPDU {0,5,1,Port B2},发现其比自己的BPDU {0,10,2,Port C2}更优,于是更新自己的BPDU。 · Port C1收到Port A2周期性发来的BPDU {0,0,0,Port A2},发现其与自己的BPDU一样,于是将其丢弃。 |
· Port C1: {0,0,0,Port A2} · Port C2: {0,5,1,Port B2} |
|
· Device C比较Port C1的根路径开销10(收到的BPDU中的根路径开销0+本端口所在链路的路径开销10)与Port C2的根路径开销9(收到的BPDU中的根路径开销5+本端口所在链路的路径开销4),发现后者更小,因此Port C2的BPDU更优,于是Port C2被确定为根端口,其BPDU不变。 · Device C根据根端口的BPDU和路径开销,为Port C1计算出指定端口的BPDU {0,9,2,Port C1},然后与Port C1本身的BPDU {0,0,0,Port A2}进行比较,发现本身的BPDU更优,于是Port C1被阻塞,其BPDU不变。从此,Port C1不再转发数据,直至有触发生成树计算的新情况出现,譬如Device B与Device C之间的链路down掉。 |
· 阻塞端口Port C1: {0,0,0,Port A2} · 根端口Port C2: {0,5,1,Port B2} |
表1-5中BPDU各项的具体含义为:{根桥ID,根路径开销,指定桥ID,指定端口ID}。
经过上述比较过程之后,以Device A为根桥的生成树就确定下来了,其拓扑如图1-3所示。
为了便于描述,本例简化了生成树的计算过程,实际的过程要更加复杂。
STP的BPDU传递机制如下:
· 当网络初始化时,所有的设备都将自己作为根桥,生成以自己为根的BPDU,并以Hello Time为周期定时向外发送。
· 接收到BPDU的端口如果是根端口,且接收的BPDU比该端口的BPDU优,则设备将BPDU中携带的Message Age按照一定的原则递增,并启动定时器为这条BPDU计时,同时将此BPDU从设备的指定端口转发出去。
· 如果指定端口收到的BPDU比本端口的BPDU优先级低时,会立刻发出自己的更好的BPDU进行回应。
· 如果某条路径发生故障,则这条路径上的根端口不会再收到新的BPDU,旧的BPDU将会因为超时而被丢弃,设备重新生成以自己为根的BPDU并向外发送,从而引发生成树的重新计算,得到一条新的通路替代发生故障的链路,恢复网络连通性。
不过,重新计算得到的新BPDU不会立刻就传遍整个网络,因此旧的根端口和指定端口由于没有发现网络拓扑变化,将仍按原来的路径继续转发数据。如果新选出的根端口和指定端口立刻就开始数据转发的话,可能会造成暂时性的环路。
在STP的计算过程中,用到了以下三个重要的时间参数:
· Forward Delay:用于确定状态迁移的延迟时间。链路故障会引发网络重新进行生成树的计算,生成树的结构将发生相应的变化。不过重新计算得到的新BPDU无法立刻传遍整个网络,如果新选出的根端口和指定端口立刻就开始数据转发的话,可能会造成暂时性的环路。为此,STP采用了一种状态迁移的机制,新选出的根端口和指定端口要经过2倍的Forward Delay延时后才能进入转发状态,这个延时保证了新的BPDU已经传遍整个网络。
· Hello Time:用于设备检测链路是否存在故障。设备每隔Hello Time时间会向周围的设备发送hello报文,以确认链路是否存在故障。
· Max Age:用于判断BPDU在设备内的保存时间是否“过时”,设备会将过时的BPDU丢弃。
RSTP由IEEE制定的802.1w标准定义,它在STP基础上进行了改进,实现了网络拓扑的快速收敛。其“快速”体现在,当一个端口被选为根端口和指定端口后,其进入转发状态的延时将大大缩短,从而缩短了网络最终达到拓扑稳定所需要的时间。
在RSTP中,根端口的端口状态快速迁移的条件是:本设备上旧的根端口已经停止转发数据,而且上游指定端口已经开始转发数据。
在RSTP中,指定端口的端口状态快速迁移的条件是:指定端口是边缘端口(即该端口直接与用户终端相连,而没有连接到其他设备或共享网段上)或者指定端口与点对点链路(即两台设备直接相连的链路)相连。如果指定端口是边缘端口,则指定端口可以直接进入转发状态;如果指定端口连接着点对点链路,则设备可以通过与下游设备握手,得到响应后即刻进入转发状态。
(1) STP和RSTP存在的不足
STP不能快速迁移,即使是在点对点链路或边缘端口,也必须等待两倍的Forward Delay的时间延迟,端口才能迁移到转发状态。
RSTP可以快速收敛,但和STP一样还存在如下缺陷:由于局域网内所有VLAN都共享一棵生成树,因此所有VLAN的报文都沿这棵生成树进行转发,不能按VLAN阻塞冗余链路,也无法在VLAN间实现数据流量的负载均衡。
(2) MSTP的特点
MSTP由IEEE制定的802.1s标准定义,它可以弥补STP和RSTP的缺陷,既可以快速收敛,也能使不同VLAN的流量沿各自的路径转发,从而为冗余链路提供了更好的负载分担机制。MSTP的特点如下:
· MSTP把一个交换网络划分成多个域,每个域内形成多棵生成树,生成树之间彼此独立。
· MSTP通过设置VLAN与生成树的对应关系表(即VLAN映射表),将VLAN与生成树联系起来。并通过“实例”的概念,将多个VLAN捆绑到一个实例中,从而达到了节省通信开销和降低资源占用率的目的。
· MSTP将环路网络修剪成为一个无环的树型网络,避免报文在环路网络中的增生和无限循环,同时还提供了数据转发的多个冗余路径,在数据转发过程中实现VLAN数据的负载分担。
· MSTP兼容STP和RSTP。
图1-4 MSTP的基本概念示意图
图1-5 MST域3详图
在如图1-4所示的交换网络中有四个MST域,每个MST域都由四台设备构成,所有设备都运行MSTP;为了看清MST域内的情形,我们以MST域3为例放大来看,如图1-5所示。下面就结合这两张图来介绍一些MSTP中的基本概念:
(1) MST域
MST域(Multiple Spanning Tree Regions,多生成树域)是由交换网络中的多台设备以及它们之间的网段所构成。这些设备具有下列特点:
· 都使能了生成树协议;
· 域名相同;
· VLAN与MSTI间映射关系的配置相同;
· MSTP修订级别的配置相同;
· 这些设备之间有物理链路连通。
一个交换网络中可以存在多个MST域,用户可以通过配置将多台设备划分在一个MST域内。如在图1-4所示的网络中就有MST域1~MST域4这四个MST域,每个域内的所有设备都具有相同的MST域配置。
(2) MSTI
一个MST域内可以通过MSTP生成多棵生成树,各生成树之间彼此独立并分别与相应的VLAN对应,每棵生成树都称为一个MSTI(Multiple Spanning Tree Instance,多生成树实例)。如在图1-5所示的MST域3中,包含有三个MSTI:MSTI 1、MSTI 2和MSTI 0。
(3) VLAN映射表
VLAN映射表是MST域的一个属性,用来描述VLAN与MSTI间的映射关系。如图1-5中MST域3的VLAN映射表就是:VLAN 1映射到MSTI 1,VLAN 2和VLAN 3映射到MSTI 2,其余VLAN映射到MSTI 0。MSTP就是根据VLAN映射表来实现负载分担的。
(4) CST
CST(Common Spanning Tree,公共生成树)是一棵连接交换网络中所有MST域的单生成树。如果把每个MST域都看作一台“设备”,CST就是这些“设备”通过STP协议、RSTP协议计算生成的一棵生成树。如图1-4中的蓝色线条描绘的就是CST。
(5) IST
IST(Internal Spanning Tree,内部生成树)是MST域内的一棵生成树,它是一个特殊的MSTI,通常也称为MSTI 0,所有VLAN缺省都映射到MSTI 0上。如图1-5中的MSTI 0就是MST域3内的IST。
(6) CIST
CIST(Common and Internal Spanning Tree,公共和内部生成树)是一棵连接交换网络内所有设备的单生成树,所有MST域的IST再加上CST就共同构成了整个交换网络的一棵完整的单生成树,即CIST。如图1-4中各MST域内的IST(即MSTI 0)再加上MST域间的CST就构成了整个网络的CIST。
(7) 域根
域根(Regional Root)就是MST域内IST或MSTI的根桥。MST域内各生成树的拓扑不同,域根也可能不同。如在图1-5所示的MST域3中,MSTI 1的域根为Device B,MSTI 2的域根为Device C,而MSTI 0(即IST)的域根则为Device A。
(8) 总根
总根(Common Root Bridge)就是CIST的根桥。如图1-4中CIST的总根就是MST域1中的某台设备。
(9) 端口角色
端口在不同的MSTI中可以担任不同的角色。如图1-6所示,在由Device A、Device B、Device C和Device D共同构成的MST域中,Device A的端口Port A1和Port A2连向总根方向,Device B的端口Port B2和Port B3相连而构成环路,Device C的端口Port C3和Port C4连向其他MST域,Device D的端口Port D3直接连接用户主机。
如图1-6所示,MSTP计算过程中涉及到的主要端口角色有以下几种:
· 根端口(Root Port):在非根桥上负责向根桥方向转发数据的端口就称为根端口,根桥上没有根端口。
· 指定端口(Designated Port):负责向下游网段或设备转发数据的端口就称为指定端口。
· 替换端口(Alternate Port):是根端口和主端口的备份端口。当根端口或主端口被阻塞后,替换端口将成为新的根端口或主端口。
· 备份端口(Backup Port):是指定端口的备份端口。当指定端口失效后,备份端口将转换为新的指定端口。当使能了生成树协议的同一台设备上的两个端口互相连接而形成环路时,设备会将其中一个端口阻塞,该端口就是备份端口。
· 边缘端口(Edge Port):不与其他设备或网段连接的端口就称为边缘端口,边缘端口一般与用户终端设备直接相连。
· 主端口(Master Port):是将MST域连接到总根的端口(主端口不一定在域根上),位于整个域到总根的最短路径上。主端口是MST域中的报文去往总根的必经之路。主端口在IST/CIST上的角色是根端口,而在其他MSTI上的角色则是主端口。
· 域边界端口(Boundary Port):是位于MST域的边缘、并连接其他MST域或MST域与运行STP/RSTP的区域的端口。主端口同时也是域边界端口。在进行MSTP计算时,域边界端口在MSTI上的角色与CIST的角色一致,但主端口除外——主端口在CIST上的角色为根端口,在其他MSTI上的角色才是主端口。
(10) 端口状态
MSTP中的端口状态可分为三种,如表1-6所示。同一端口在不同的MSTI中的端口状态可以不同。
表1-6 MSTP的端口状态
状态 |
描述 |
Forwarding |
该状态下的端口可以接收和发送BPDU,也转发用户流量 |
Learning |
是一种过渡状态,该状态下的端口可以接收和发送BPDU,但不转发用户流量 |
Discarding |
该状态下的端口可以接收和发送BPDU,但不转发用户流量 |
端口状态和端口角色是没有必然联系的,表1-7给出了各种端口角色能够具有的端口状态(“√”表示此端口角色能够具有此端口状态;“-”表示此端口角色不能具有此端口状态)。
端口角色 端口状态 |
根端口/主端口 |
指定端口 |
替换端口 |
备份端口 |
Forwarding |
√ |
√ |
- |
- |
Learning |
√ |
√ |
- |
- |
Discarding |
√ |
√ |
√ |
√ |
MSTP将整个二层网络划分为多个MST域,各域之间通过计算生成CST;域内则通过计算生成多棵生成树,每棵生成树都被称为是一个MSTI,其中的MSTI 0也称为IST。MSTP同STP一样,使用BPDU进行生成树的计算,只是BPDU中携带的是设备上MSTP的配置信息。
(1) CIST生成树的计算
通过比较BPDU后,在整个网络中选择一个优先级最高的设备作为CIST的根桥。在每个MST域内MSTP通过计算生成IST;同时MSTP将每个MST域作为单台设备对待,通过计算在域间生成CST。CST和IST构成了整个网络的CIST。
(2) MSTI的计算
在MST域内,MSTP根据VLAN与MSTI的映射关系,针对不同的VLAN生成不同的MSTI。每棵生成树独立进行计算,计算过程与STP计算生成树的过程类似,请参见“1.1.1 3. STP的基本原理”。
MSTP中,一个VLAN报文将沿着如下路径进行转发:
· 在MST域内,沿着其对应的MSTI转发;
· 在MST域间,沿着CST转发。
MSTP同时兼容STP和RSTP。STP和RSTP的协议报文都可以被运行MSTP协议的设备识别并应用于生成树计算。设备除了提供MSTP的基本功能外,还从用户的角度出发,提供了如下便于管理的特殊功能:
· 根桥保持;
· 根桥备份;
· 根保护功能;
· BPDU保护功能;
· 环路保护功能;
· 防TC-BPDU攻击保护功能;
· 端口角色限制功能;
· TC-BPDU传播限制功能;
· 支持接口板的热插拔。
与生成树相关的协议规范有:
· IEEE 802.1D:Media Access Control (MAC) Bridges
· IEEE 802.1w:Part 3: Media Access Control (MAC) Bridges—Amendment 2: Rapid Reconfiguration
· IEEE 802.1s:Virtual Bridged Local Area Networks—Amendment 3: Multiple Spanning Trees
· IEEE 802.1Q-REV/D1.3:Media Access Control (MAC) Bridges and Virtual Bridged Local Area Networks —Clause 13: Spanning tree Protocols
生成树协议包括STP、RSTP和MSTP三种类型。在配置生成树之前,首先需明确要使用的生成树协议类型,并规划好各设备在其中的角色(根桥或叶子节点);然后根据所选择的协议类型及规划好的设备角色,依照本节中的表格进行配置。配置时,请注意以下几点:
· 生成树协议与业务环回功能互斥。
· 系统视图下的配置全局生效;二层以太网接口视图下的配置只对当前端口生效;二层聚合接口视图下的配置只对当前接口生效;聚合成员端口上的配置,只有当成员端口退出聚合组后才能生效。
· 在二层聚合接口上使能生成树协议后,生成树的相关计算只在二层聚合接口上进行,聚合成员端口不再参与生成树计算。二层聚合接口的所有选中成员端口上生成树协议的使能/关闭状态以及端口转发状态与二层聚合接口保持一致。尽管聚合成员端口不参与生成树计算,但端口上的生成树相关配置仍然保留,当端口退出聚合组时,该端口将采用这些配置参与生成树计算。
表1-8 STP配置任务简介
配置任务 |
说明 |
详细配置 |
|
配置根桥 |
配置生成树的工作模式 |
必选 通过本配置将生成树的工作模式配置为STP模式 |
|
配置根桥和备份根桥 |
可选 |
||
配置设备的优先级 |
可选 |
||
配置交换网络的网络直径 |
可选 |
||
配置生成树的时间参数 |
可选 |
||
配置超时时间因子 |
可选 |
||
配置端口发送BPDU的速率 |
可选 |
||
打开端口状态变化信息显示开关 |
可选 |
||
使能生成树协议 |
必选 |
||
配置叶子节点 |
配置生成树的工作模式 |
必选 通过本配置将生成树的工作模式配置为STP模式 |
|
配置设备的优先级 |
可选 |
||
配置超时时间因子 |
可选 |
||
配置端口发送BPDU的速率 |
可选 |
||
配置端口的路径开销 |
可选 |
||
配置端口的优先级 |
可选 |
||
打开端口状态变化信息显示开关 |
可选 |
||
使能生成树协议 |
必选 |
||
配置生成树保护功能 |
可选 |
表1-9 RSTP配置任务简介
配置任务 |
说明 |
详细配置 |
|
配置根桥 |
配置生成树的工作模式 |
必选 通过本配置将生成树的工作模式配置为RSTP模式 |
|
配置根桥和备份根桥 |
可选 |
||
配置设备的优先级 |
可选 |
||
配置交换网络的网络直径 |
可选 |
||
配置生成树的时间参数 |
可选 |
||
配置超时时间因子 |
可选 |
||
配置端口发送BPDU的速率 |
可选 |
||
配置端口为边缘端口 |
可选 |
||
配置端口的链路类型 |
可选 |
||
打开端口状态变化信息显示开关 |
可选 |
||
使能生成树协议 |
必选 |
||
配置叶子节点 |
配置生成树的工作模式 |
必选 通过本配置将生成树的工作模式配置为RSTP模式 |
|
配置设备的优先级 |
可选 |
||
配置超时时间因子 |
可选 |
||
配置端口发送BPDU的速率 |
可选 |
||
配置端口为边缘端口 |
可选 |
||
配置端口的路径开销 |
可选 |
||
配置端口的优先级 |
可选 |
||
配置端口的链路类型 |
可选 |
||
打开端口状态变化信息显示开关 |
可选 |
||
使能生成树协议 |
必选 |
||
执行mCheck操作 |
可选 |
||
配置生成树保护功能 |
可选 |
表1-10 MSTP配置任务简介
配置任务 |
说明 |
详细配置 |
|
配置根桥 |
配置生成树的工作模式 |
必选 通过本配置将生成树的工作模式配置为MSTP模式 |
|
配置MST域 |
必选 |
||
配置根桥和备份根桥 |
可选 |
||
配置设备的优先级 |
可选 |
||
配置MST域的最大跳数 |
可选 |
||
配置交换网络的网络直径 |
可选 |
||
配置生成树的时间参数 |
可选 |
||
配置超时时间因子 |
可选 |
||
配置端口发送BPDU的速率 |
可选 |
||
配置端口为边缘端口 |
可选 |
||
配置端口的链路类型 |
可选 |
||
配置端口收发的MSTP报文格式 |
可选 |
||
打开端口状态变化信息显示开关 |
可选 |
||
使能生成树协议 |
必选 |
||
配置叶子节点 |
配置生成树的工作模式 |
必选 通过本配置将生成树的工作模式配置为MSTP模式 |
|
配置MST域 |
必选 |
||
配置设备的优先级 |
可选 |
||
配置超时时间因子 |
可选 |
||
配置端口发送BPDU的速率 |
可选 |
||
配置端口为边缘端口 |
可选 |
||
配置端口的路径开销 |
可选 |
||
配置端口的优先级 |
可选 |
||
配置端口的链路类型 |
可选 |
||
配置端口收发的MSTP报文格式 |
可选 |
||
打开端口状态变化信息显示开关 |
可选 |
||
使能生成树协议 |
必选 |
||
执行mCheck操作 |
可选 |
||
配置摘要侦听功能 |
可选 |
||
配置No Agreement Check功能 |
可选 |
||
配置生成树保护功能 |
可选 |
生成树的工作模式有以下几种:
· STP模式:设备的所有端口都将向外发送STP BPDU。如果端口的对端设备只支持STP,可选择此模式。
· RSTP模式:设备的所有端口都向外发送RSTP BPDU。当端口收到对端设备发来的STP BPDU时,会自动迁移到STP模式;如果收到的是MSTP BPDU,则不会进行迁移。
· MSTP模式:设备的所有端口都向外发送MSTP BPDU。当端口收到对端设备发来的STP BPDU时,会自动迁移到STP模式;如果收到的是RSTP BPDU,则不会进行迁移。
MSTP模式兼容RSTP模式,RSTP模式兼容STP模式。
表1-11 配置生成树的工作模式
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置生成树的工作模式 |
stp mode { mstp | rstp | stp } |
缺省情况下,生成树的工作模式为MSTP模式 |
在各工作模式下进行配置时,对是否需要指定MSTI的要求不同:
· 在STP模式或RSTP模式下无需指定MSTI,若指定了MSTI则该配置无效。
· 在MSTP模式下,若指定了MSTI则表示针对该MSTI进行配置,若未指定MSTI则表示针对CIST进行配置。
两台或多台使能了生成树协议的设备若要属于同一个MST域,必须同时满足以下两个条件:第一是选择因子(取值为0,不可配)、域名、修订级别和VLAN映射表的配置都相同;第二是这些设备之间的链路相通。
在配置MST域的相关参数(特别是VLAN映射表)时,会引发生成树的重新计算,从而引起网络拓扑的振荡。为了减少网络振荡,新配置的MST域参数并不会马上生效,而是在使用active region-configuration命令激活,或使用命令stp global enable全局使能生成树协议后才会生效。
表1-12 配置MST域
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入MST域视图 |
stp region-configuration |
- |
配置MST域的域名 |
region-name name |
缺省情况下,MST域的域名为设备的MAC地址 |
配置VLAN映射表 |
instance instance-id vlan vlan-list |
二者选其一 缺省情况下,所有VLAN都映射到CIST(即MSTI 0)上 |
vlan-mapping modulo modulo |
||
配置MSTP的修订级别 |
revision-level level |
缺省情况下,MSTP的修订级别为0 |
(可选)显示MST域的预配置信息 |
check region-configuration |
- |
激活MST域的配置 |
active region-configuration |
- |
(可选)显示当前生效的MST域配置信息 |
display stp region-configuration |
display命令可以在任意视图执行 |
可以通过计算来自动确定生成树的根桥,用户也可以手工将设备配置为指定生成树的根桥或备份根桥:
· 设备在各生成树中的角色互相独立,在作为一棵生成树的根桥或备份根桥的同时,也可以作为其他生成树的根桥或备份根桥;但在同一棵生成树中,一台设备不能既作为根桥,又作为备份根桥。
· 在一棵生成树中,生效的根桥只有一个;当两台或两台以上的设备被指定为同一棵生成树的根桥时,系统将选择MAC地址最小的设备作为根桥。
· 可以在每棵生成树中指定多个备份根桥。当根桥出现故障或被关机时,备份根桥可以取代根桥成为指定生成树的根桥;但此时若配置了新的根桥,则备份根桥将不会成为根桥。如果配置了多个备份根桥,则MAC地址最小的备份根桥将成为指定生成树的根桥。
· 用户可以为每棵生成树指定一个根桥,而无需关心设备的优先级配置。当设备一旦被配置为根桥或者备份根桥之后,便不能再修改该设备的优先级。也可以通过配置设备的优先级为0来实现将当前设备指定为根桥的目的。有关设备优先级的配置,请参见“1.3.4 ”。
请在欲配置为根桥的设备上进行如下配置。
表1-13 配置根桥
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置当前设备为根桥(STP/RSTP模式) |
stp root primary |
缺省情况下,设备不是根桥 |
配置当前设备为根桥(MSTP模式) |
stp [ instance instance-list ] root primary |
请在欲配置为备份根桥的设备上进行如下配置。
表1-14 配置备份根桥
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置当前设备为备份根桥(STP/RSTP模式) |
stp root secondary |
缺省情况下,设备不是备份根桥 |
配置当前设备为备份根桥(MSTP模式) |
stp [ instance instance-list ] root secondary |
设备的优先级参与生成树计算,其大小决定了该设备是否能够被选作生成树的根桥。数值越小表示优先级越高,通过配置较小的优先级,可以达到指定某台设备成为生成树根桥的目的。可以在不同的生成树中为设备配置不同的优先级。如果设备的优先级相同,则MAC地址最小的设备将被选择为根。当指定设备为根桥或者备份根桥之后,不允许再修改该设备的优先级。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置设备的优先级(STP/RSTP模式) |
stp priority priority |
缺省情况下,设备的优先级为32768 |
配置设备的优先级(MSTP模式) |
stp [ instance instance-list ] priority priority |
MST域的最大跳数限制了MST域的规模,在域根上配置的最大跳数将作为该MST域的最大跳数。
从MST域内的生成树的根桥开始,域内的BPDU每经过一台设备的转发,跳数就被减1;设备将丢弃跳数为0的BPDU,以使处于最大跳数外的设备无法参与生成树的计算,从而限制了MST域的规模。
本配置只需在根桥设备上进行,非根桥设备将采用根桥设备的配置值。
表1-16 配置MST域的最大跳数
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置MST域的最大跳数 |
stp max-hops hops |
缺省情况下,MST域的最大跳数为20 |
交换网络中任意两台终端设备都通过特定路径彼此相连,这些路径由一系列的设备构成。网络直径就是指交换网络中任意两台终端设备间的最大设备数。网络直径越大,说明网络的规模越大。
在配置了网络直径之后,系统会通过计算自动将设备的Hello Time、 Forward Delay和Max Age三个时间参数设置为最优值。每个MST域将被视为一台设备,且网络直径配置只对CIST有效(即只能在总根上生效),而对MSTI无效。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置交换网络的网络直径 |
stp bridge-diameter diameter |
缺省情况下,交换网络的网络直径为7 |
在生成树的计算过程中,用到了以下三个时间参数:
(1) Forward Delay:用于确定状态迁移的延迟时间。为了防止产生临时环路,生成树协议在端口由Discarding状态向Forwarding状态迁移的过程中设置了Learning状态作为过渡,并规定状态迁移需要等待Forward Delay时间,以保持与远端的设备状态切换同步。
(2) Hello Time:用于检测链路是否存在故障。生成树协议每隔Hello Time时间会发送BPDU,以确认链路是否存在故障。如果设备在超时时间(超时时间=超时时间因子×3×Hello Time)内没有收到BPDU,则会由于消息超时而重新计算生成树。
(3) Max Age:用于确定BPDU是否超时。在MSTP的CIST上,设备根据Max Age时间来确定端口收到的BPDU是否超时。如果端口收到的BPDU超时,则需要对该MSTI重新计算。Max Age时间对MSTP的MSTI无效。
上述三个时间参数之间应满足以下关系,否则会引起网络的频繁震荡:
(1) 2×(Forward Delay-1秒)≥Max Age
(2) Max Age≥2×(Hello Time+1秒)
通常情况下,不建议通过本配置直接调整上述三个时间参数。由于这三个时间参数的取值与网络规模有关,因此建议通过调整网络直径,使生成树协议自动调整这三个时间参数的值。当网络直径取缺省值时,这三个时间参数也分别取其各自的缺省值。
配置生成树时间参数时,请注意:
· Forward Delay的长短与交换网络的网络直径有关。一般来说,网络直径越大,Forward Delay就应该越长。如果Forward Delay过短,可能引入临时的冗余路径;如果Forward Delay过长,网络可能较长时间不能恢复连通。建议用户采用缺省值。
· 合适的Hello Time可以保证设备能够及时发现网络中的链路故障,又不会占用过多的网络资源。如果Hello Time过长,在链路发生丢包时,设备会误以为链路出现了故障,从而引发设备重新计算生成树;如果Hello Time过短,设备将频繁发送重复的BPDU,增加了设备的负担,浪费了网络资源。建议用户采用缺省值。
· 如果Max Age过短,设备会频繁地计算生成树,而且有可能将网络拥塞误认成链路故障;如果Max Age过长,设备很可能不能及时发现链路故障,不能及时重新计算生成树,从而降低网络的自适应能力。建议用户采用缺省值。
本配置只需在根桥设备上进行,整个交换网络中的所有设备都将采用根桥设备的配置值。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置Forward Delay时间参数 |
stp timer forward-delay time |
缺省情况下,Forward Delay为15秒 |
配置Hello Time时间参数 |
stp timer hello time |
缺省情况下,Hello Time为2秒 |
配置Max Age时间参数 |
stp timer max-age time |
缺省情况下,Max Age为20秒 |
超时时间因子用来确定设备的超时时间:超时时间=超时时间因子×3×Hello Time。
当网络拓扑结构稳定后,非根桥设备会每隔Hello Time时间向周围相连设备转发根桥发出的BPDU以确认链路是否存在故障。通常如果设备在9倍的Hello Time时间内没有收到上游设备发来的BPDU,就会认为上游设备已经故障,从而重新进行生成树的计算。
对于以下情况,建议将设备的超时时间因子配置为5~7。
· 有时本端设备在较长时间内收不到对端设备发来的BPDU,可能是由于对端设备的繁忙导致的(例如,对端设备配置了大量二层接口时),在这种情况下一般不应重新进行生成树的计算,需要延长本端设备的超时时间。
· 稳定的网络中,可以通过延长超时时间来减少网络资源的浪费。
表1-19 配置超时时间因子
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置设备的超时时间因子 |
stp timer-factor factor |
缺省情况下,设备的超时时间因子为3 |
每Hello Time时间内端口能够发送的BPDU最大数目 = 端口发送BPDU的速率 + Hello Time时间值。端口发送BPDU的速率与端口的物理状态和网络结构有关,用户可以根据实际的网络情况对其进行配置。
端口发送BPDU的速率越高,每个Hello Time内可发送的BPDU数量就越多,占用的系统资源也越多。适当配置发送速率一方面可以限制端口发送BPDU的速度,另一方面还可以防止在网络拓扑动荡时,生成树协议占用过多的带宽资源。建议用户采用缺省配置。
表1-20 配置端口的最大发送速率
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入二层以太网或二层聚合接口视图 |
interface interface-type interface-number |
- |
配置端口发送BPDU的速率 |
stp transmit-limit limit |
缺省情况下,端口发送BPDU的速率为10 |
当端口直接与用户终端相连,而没有连接到其他设备或共享网段上,则该端口被认为是边缘端口。网络拓扑变化时,边缘端口不会产生临时环路。
由于设备无法知道端口是否直接与终端相连,所以需要用户手工将端口配置为边缘端口。如果用户将某个端口配置为边缘端口,那么当该端口由阻塞状态向转发状态迁移时,这个端口可以实现快速迁移,而无需等待延迟时间。
对于直接与终端相连的端口,请将该端口设置为边缘端口,同时使能BPDU保护功能。这样既能够使该端口快速迁移到转发状态,也可以保证网络的安全。
在同一个端口上,不允许同时配置边缘端口和环路保护功能。
表1-21 配置端口为边缘端口
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入二层以太网或二层聚合接口视图 |
interface interface-type interface-number |
- |
配置当前端口为边缘端口 |
stp edged-port |
缺省情况下,端口为非边缘端口 |
· 在设备没有使能BPDU保护的情况下,如果被设置为边缘端口的端口上收到来自其他端口的BPDU,则该端口会重新变为非边缘端口。此时,只有重启端口才能将该端口恢复为边缘端口。
路径开销(Path Cost)是与端口相连的链路速率相关的参数。在支持生成树协议的设备上,端口在不同的MSTI中可以拥有不同的路径开销。设置合适的路径开销可以使不同VLAN的流量沿不同的物理链路转发,从而实现按VLAN负载分担的功能。
设备可以自动计算端口的缺省路径开销,用户也可以直接配置端口的路径开销。
缺省路径开销的计算标准有以下三种,用户可以通过本配置来改变设备自动计算端口的缺省路径开销时所采用的计算标准:
· dot1d-1998:表示按照IEEE 802.1D-1998标准来计算缺省路径开销。
· dot1t:表示按照IEEE 802.1t标准来计算缺省路径开销。
· legacy:表示按照私有标准来计算缺省路径开销。
改变缺省路径开销的计算标准,将使端口的路径开销值恢复为缺省值。
表1-22 配置缺省路径开销的计算标准
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置缺省路径开销的计算标准 |
stp pathcost-standard { dot1d-1998 | dot1t | legacy } |
缺省情况下,缺省路径开销的计算标准为legacy |
链路速率与路径开销值的对应关系如表1-23所示。
链路速率 |
端口类型 |
端口的路径开销值 |
||
IEEE 802.1D-1998 |
IEEE 802.1t |
私有标准 |
||
0 |
- |
65535 |
200,000,000 |
200,000 |
10Mbps |
单个端口 |
100 |
2,000,000 |
2,000 |
聚合接口(含两个选中端口) |
1,000,000 |
1,800 |
||
聚合接口(含三个选中端口) |
666,666 |
1,600 |
||
聚合接口(含四个选中端口) |
500,000 |
1,400 |
||
100Mbps |
单个端口 |
19 |
200,000 |
200 |
聚合接口(含两个选中端口) |
100,000 |
180 |
||
聚合接口(含三个选中端口) |
66,666 |
160 |
||
聚合接口(含四个选中端口) |
50,000 |
140 |
||
1000Mbps |
单个端口 |
4 |
20,000 |
20 |
聚合接口(含两个选中端口) |
10,000 |
18 |
||
聚合接口(含三个选中端口) |
6,666 |
16 |
||
聚合接口(含四个选中端口) |
5,000 |
14 |
||
10Gbps |
单个端口 |
2 |
2,000 |
2 |
聚合接口(含两个选中端口) |
1,000 |
1 |
||
聚合接口(含三个选中端口) |
666 |
1 |
||
聚合接口(含四个选中端口) |
500 |
1 |
· 在计算聚合接口的路径开销时,IEEE 802.1D-1998标准不考虑聚合接口所对应聚合组内选中端口的数量;而IEEE 802.1t标准则对此予以考虑,其计算公式为:端口的路径开销=200000000÷链路速率(单位为100Kbps),其中链路速率为聚合接口所对应聚合组内选中端口的速率之和。
· 当端口的链路速率大于10Gbps、且缺省路径开销的计算标准为IEEE 802.1D-1998或私有标准时,单个端口和聚合接口的路径开销值都会取所选标准规定的最小值,这将影响转发路径选择的合理性。在这种情况下,建议将缺省路径开销的计算标准配置为IEEE 802.1t,或手工配置端口的路径开销(请参见“1.3.11 2. 配置端口的路径开销”)。
表1-24 配置端口的路径开销
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入二层以太网或二层聚合接口视图 |
interface interface-type interface-number |
- |
配置端口的路径开销(STP/RSTP模式) |
stp cost cost |
缺省情况下,自动按照相应的标准计算各生成树上的路径开销 |
配置端口的路径开销(MSTP模式) |
stp [ instance instance-list ] cost cost |
当端口的路径开销值改变时,系统将重新计算端口的角色并进行状态迁移。
# 在MSTP模式下,配置按照IEEE 802.1D-1998标准来计算缺省路径开销,并配置端口FortyGigE1/0/3在MSTI 2上的路径开销值为200。
<Sysname> system-view
[Sysname] stp pathcost-standard dot1d-1998
Cost of every port will be reset and automatically re-calculated after you change the current pathcost standard. Continue?[Y/N]:y
Cost of every port has been re-calculated.
[Sysname] interface fortygige 1/0/3
[Sysname-FortyGigE1/0/3] stp instance 2 cost 200
端口优先级是确定该端口是否会被选为根端口的重要依据,同等条件下优先级高的端口将被选为根端口。在支持生成树协议的设备上,端口可以在不同的生成树中拥有不同的优先级,同一端口可以在不同的生成树中担任不同的角色,从而使不同VLAN的数据沿不同的物理路径传播,实现按VLAN进行负载分担的功能。用户可以根据组网的实际需要来设置端口的优先级。
表1-25 配置端口的优先级
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入二层以太网或二层聚合接口视图 |
interface interface-type interface-number |
- |
配置端口的优先级(STP/RSTP模式) |
stp port priority priority |
缺省情况下,端口的优先级为128 |
配置端口的优先级(MSTP模式) |
stp [ instance instance-list ] port priority priority |
当端口的优先级改变时,系统将重新计算端口的角色并进行状态迁移。
点对点链路是两台设备之间直接连接的链路。与点对点链路相连的两个端口如果为根端口或者指定端口,则端口可以通过传送同步报文(Proposal报文和Agreement报文)快速迁移到转发状态,减少了不必要的转发延迟时间。
如果某端口是二层聚合接口或其工作在全双工模式下,则可以将该端口配置为与点对点链路相连。通常建议使用缺省配置,由系统进行自动检测。
在MSTP模式下,如果某端口被配置为与点对点链路(或非点对点链路)相连,那么该配置对该端口所属的所有MSTI都有效。
如果某端口被配置为与点对点链路相连,但与该端口实际相连的物理链路不是点对点链路,则有可能引入临时回路。
表1-26 配置端口的链路类型
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入二层以太网或二层聚合接口视图 |
interface interface-type interface-number |
- |
配置端口的链路类型 |
stp point-to-point { auto | force-false | force-true } |
缺省情况下,端口的链路类型为auto,即由系统自动检测与本端口相连的链路是否为点对点链路 |
端口可以收发的MSTP报文格式有两种:
· dot1s:符合802.1s协议的标准格式;
· legacy:与非标准格式兼容的格式。
如果当前配置的MSTI大于48,端口将只发送802.1s标准的MSTP报文。
端口默认配置为自动识别方式(auto),即可以自动识别这两种格式的MSTP报文,并根据识别结果确定发送报文的格式,从而实现与对端设备的互通。
用户也可以通过配置改变端口发送的MSTP报文格式,使端口只发送与所配格式相符的MSTP报文,实现与对端只识别特定格式报文的设备互通。
当端口处于auto模式时,默认发送802.1s标准的报文。在此模式下,为避免因收到不同格式的MSTP报文而导致端口发送的报文格式频繁变化,端口一旦收到私有格式报文就将一直以该格式发送报文。若想使该端口恢复发送802.1s标准的报文,可对其依次执行关闭/开启操作。
表1-27 配置端口收发的MSTP报文格式
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入二层以太网或二层聚合接口视图 |
interface interface-type interface-number |
- |
配置端口收发的MSTP报文格式 |
stp compliance { auto | dot1s | legacy } |
缺省情况下,端口会自动识别收到的MSTP报文格式并根据识别结果确定发送的报文格式 |
在使能了生成树协议的大型网络中,用户可以通过打开端口状态变化信息显示开关,使系统输出端口状态变化的相关信息,方便用户对端口状态进行实时监控。
表1-28 打开端口状态变化信息显示开关
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
打开端口状态变化信息显示开关(STP/RSTP模式) |
stp port-log instance 0 |
缺省情况下,端口状态变化信息显示开关处于关闭状态 |
打开端口状态变化信息显示开关(MSTP模式) |
stp port-log { all | instance instance-list } |
只有使能了生成树协议,生成树的其他配置才会生效。必须保证全局和端口上的生成树协议均处于使能状态。
表1-29 使能生成树协议
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
全局使能生成树协议 |
stp global enable |
缺省情况下: · 空配置启动时,使用软件功能缺省值,全局生成树协议处于关闭状态 · 出厂配置启动时,使用软件功能出厂值,全局生成树协议处于开启状态 |
进入二层以太网或二层聚合接口视图 |
interface interface-type interface-number |
- |
在端口上使能生成树协议 |
stp enable |
缺省情况下,所有端口上的生成树协议均处于使能状态 |
可以通过undo stp enable命令关闭特定端口的生成树协议,使其不参与生成树计算,以节省设备的CPU资源。
只有当生成树的工作模式为MSTP模式或RSTP模式时执行mCheck操作才有效。
生成树的工作模式有STP模式、RSTP模式和MSTP模式三种。在运行MSTP或RSTP的设备上,若某端口连接着运行STP协议的设备,该端口收到STP报文后会自动迁移到STP模式;但当对端运行STP协议的设备关机或撤走,而该端口又无法感知的情况下,该端口将无法自动迁移回原有模式,此时需要通过执行mCheck操作将其手工迁移回原有模式。
当运行STP的设备A、未使能生成树协议的设备B和运行RSTP/MSTP的设备C三者顺次相连时,设备B将透传STP报文,设备C上连接设备B的端口将迁移到STP模式。在设备B上使能生成树协议后,若想使设备B与设备C之间运行RSTP/MSTP协议,除了要在设备B上配置生成树的工作模式为RSTP/MSTP外,还要在设备B与设备C相连的端口上都执行mCheck操作。
表1-30 全局执行mCheck操作
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
全局执行mCheck操作 |
stp global mcheck |
- |
表1-31 在端口上执行mCheck操作
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入二层以太网或二层聚合接口视图 |
interface interface-type interface-number |
- |
在端口上执行mCheck操作 |
stp mcheck |
- |
根据IEEE 802.1s规定,只有在MST域配置(包括域名、修订级别和VLAN映射关系)完全一致的情况下,相连的设备才被认为是在同一个域内。当设备使能了生成树协议以后,设备之间通过识别BPDU数据报文内的配置ID来判断相连的设备是否与自己处于相同的MST域内;配置ID包含域名、修订级别、配置摘要等内容,其中配置摘要长16字节,是由HMAC-MD5算法将VLAN与MSTI的映射关系加密计算而成。
在网络中,由于一些厂商的设备在对生成树协议的实现上存在差异,即用加密算法计算配置摘要时采用私有的密钥,从而导致即使MST域配置相同,不同厂商的设备之间也不能实现在MST域内的互通。
通过在我方设备与对生成树协议的实现存在差异的第三方厂商设备相连的端口上使能摘要侦听功能,可以实现我方设备与这些厂商设备在MST域内的完全互通。
· 摘要侦听功能在端口生效后,由于不再通过配置摘要的比较计算来判断是否在同一个域内,因此需要保证互连设备的域配置中VLAN与MSTI映射关系的配置相同。
· 全局使能摘要侦听功能后,如果要修改VLAN与MSTI间的映射关系,或执行undo stp region-configuration命令取消当前域配置,均可能因与邻接设备的VLAN和MSTI映射关系不一致而导致环路或流量中断,因此请谨慎操作。
· 只有当全局和端口上都使能了摘要侦听功能后,该功能才能生效。使能摘要侦听功能时,建议先在所有与第三方厂商设备相连的端口上使能该功能,再全局使能该功能,以一次性让所有端口的配置生效,从而减少对网络的冲击。
· 请不要在MST域的边界端口上使能摘要侦听功能,否则可能会导致环路。
· 建议配置完摘要侦听功能后再使能生成树协议。在网络稳定的情况下不要进行摘要侦听功能的配置,以免造成临时的流量中断。
我方设备与第三方厂商设备相连,网络配置正确,生成树协议正常运行。
只有当我方设备与对生成树协议的实现存在差异的第三方厂商设备(即采用私有密钥来计算配置摘要)互连时,才有必要配置本功能。
表1-32 配置摘要侦听功能
配置步骤 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入二层以太网或二层聚合接口视图 |
interface interface-type interface-number |
- |
在端口上使能摘要侦听功能 |
stp config-digest-snooping |
缺省情况下,端口上的摘要侦听功能处于关闭状态 |
退回系统视图 |
quit |
- |
全局使能摘要侦听功能 |
stp global config-digest-snooping |
缺省情况下,摘要侦听功能处于全局关闭状态 |
(1) 组网需求
· Device A和Device B分别与对生成树协议的实现存在差异的第三方厂商设备Device C相连并配置在同一域内。
· 分别在Device A和Device B各自与Device C相连的端口上使能摘要侦听功能,实现Device A、Device B和Device C在MST域内的互通。
(2) 组网图
图1-7 摘要侦听功能配置组网图
(3) 配置步骤
# 在Device A的端口FortyGigE1/0/1上使能摘要侦听功能,并全局使能摘要侦听功能。
<DeviceA> system-view
[DeviceA] interface fortygige 1/0/1
[DeviceA-FortyGigE1/0/1] stp config-digest-snooping
[DeviceA-FortyGigE1/0/1] quit
[DeviceA] stp global config-digest-snooping
# 在Device B的端口FortyGigE1/0/1上使能摘要侦听功能,并全局使能摘要侦听功能。
<DeviceB> system-view
[DeviceB] interface fortygige 1/0/1
[DeviceB-FortyGigE1/0/1] stp config-digest-snooping
[DeviceB-FortyGigE1/0/1] quit
[DeviceB] stp global config-digest-snooping
RSTP和MSTP的指定端口快速迁移机制使用两种协议报文:
· Proposal报文:指定端口请求快速迁移的报文。
· Agreement报文:同意对端进行快速迁移的报文。
RSTP和MSTP均要求上游设备的指定端口在接收到下游设备的Agreement报文后才能进行快速迁移。不同之处如下:
· 对于MSTP,上游设备先向下游设备发送Agreement报文,而下游设备的根端口只有在收到了上游设备的Agreement报文后才会向上游设备回应Agreement报文。
· 对于RSTP,下游设备无需等待上游设备发送Agreement报文就可向上游设备发送Agreement报文。
如图1-8所示,是MSTP的指定端口快速迁移机制。
图1-8 MSTP指定端口快速迁移机制
如图1-9所示,是RSTP的指定端口快速迁移机制。
图1-9 RSTP指定端口快速迁移机制
当我方设备与作为上游设备且与对生成树协议的实现存在差异的第三方厂商设备互联时,二者在快速迁移的配合上可能会存在一定的限制。例如:上游设备指定端口的状态迁移实现机制与RSTP类似;而下游设备运行MSTP并且不工作在RSTP模式时,由于下游设备的根端口接收不到上游设备的Agreement报文,它不会向上游设备发Agreement报文,所以上游设备的指定端口无法实现状态的快速迁移,只能在2倍的Forward Delay延时后变成转发状态。
通过在我方设备与对生成树协议的实现存在私有性差异的上游第三方厂商设备相连的端口上使能No Agreement Check功能,可避免这种情况的出现,使得上游的第三方厂商设备的指定端口能够进行状态的快速迁移。
· 设备与作为上游设备且支持生成树协议的第三方厂商设备互连,并且端口之间为点对点链路。
· 为我方设备与第三方厂商设备配置相同的域名、域配置修订级别和VLAN与MSTI的映射关系,以确保它们在同一个域内。
请在设备的根端口上进行如下配置,且本功能只有在根端口上配置才会生效。
表1-33 配置No Agreement Check功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入二层以太网或二层聚合接口视图 |
interface interface-type interface-number |
- |
使能No Agreement Check功能 |
stp no-agreement-check |
缺省情况下,No Agreement Check功能处于关闭状态 |
(1) 组网需求
· Device A与对生成树协议的实现存在差异的第三方厂商设备Device B互连并配置在同一域内。
· Device B作为域根,Device A作为下游设备。
(2) 组网图
图1-10 No Agreement Check功能配置组网图
(3) 配置步骤
# 在Device A的端口FortyGigE1/0/1上使能No Agreement Check功能。
<DeviceA> system-view
[DeviceA] interface fortygige 1/0/1
[DeviceA-FortyGigE1/0/1] stp no-agreement-check
生成树保护功能包括以下几种:
· BPDU保护功能
· 根保护功能
· 环路保护功能
· 端口角色限制功能
· TC-BPDU传播限制功能
· 防TC-BPDU攻击保护功能
· Dispute保护功能
对于接入层设备,接入端口一般直接与用户终端(如PC)或文件服务器相连,此时接入端口被设置为边缘端口以实现这些端口的快速迁移;当这些端口接收到BPDU时系统会自动将这些端口设置为非边缘端口,重新计算生成树,引起网络拓扑结构的变化。这些端口正常情况下应该不会收到STP的BPDU。如果有人伪造BPDU恶意攻击设备,就会引起网络震荡。
生成树协议提供了BPDU保护功能来防止这种攻击:设备上使能了BPDU保护功能后,如果边缘端口收到了BPDU,系统就将这些端口关闭,同时通知网管这些端口已被生成树协议关闭。被关闭的端口在经过一定时间间隔之后将被重新激活,这个时间间隔就是定时检测时间间隔。有关定时检测时间间隔的详细介绍,请参见“基础配置指导”中的“设备管理”。
请在有边缘端口的设备上进行如下配置。
BPDU保护功能对使能了环回测试功能的端口无效。有关环回测试功能的相关介绍,请参见“二层技术-以太网交换配置指导”中的“以太网接口”。
表1-34 配置BPDU保护功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能BPDU保护功能 |
stp bpdu-protection |
缺省情况下,BPDU保护功能处于关闭状态 |
生成树的根桥和备份根桥应该处于同一个域内,特别是对于CIST的根桥和备份根桥,网络设计时一般会把CIST的根桥和备份根桥放在一个高带宽的核心域内。但是,由于维护人员的错误配置或网络中的恶意攻击,网络中的合法根桥有可能会收到优先级更高的BPDU,这样当前合法根桥会失去根桥的地位,引起网络拓扑结构的错误变动。这种不合法的变动,会导致原来应该通过高速链路的流量被牵引到低速链路上,导致网络拥塞。
为了防止这种情况发生,生成树协议提供了根保护功能:对于使能了根保护功能的端口,其在所有MSTI上的端口角色只能为指定端口。一旦该端口收到某MSTI优先级更高的BPDU,立即将该MSTI端口设置为侦听状态,不再转发报文(相当于将此端口相连的链路断开)。当在2倍的Forward Delay时间内没有收到更优的BPDU时,端口会恢复原来的正常状态。
请在设备的指定端口上进行如下配置。
在同一个端口上,不允许同时配置根保护功能和环路保护功能。
表1-35 配置根保护功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入二层以太网或二层聚合接口视图 |
interface interface-type interface-number |
- |
使能端口的根保护功能 |
stp root-protection |
缺省情况下,端口上的根保护功能处于关闭状态 |
依靠不断接收上游设备发送的BPDU,设备可以维持根端口和其他阻塞端口的状态。但是由于链路拥塞或者单向链路故障,这些端口会收不到上游设备的BPDU,此时下游设备会重新选择端口角色,收不到BPDU的下游设备端口会转变为指定端口,而阻塞端口会迁移到转发状态,从而交换网络中会产生环路。环路保护功能会抑制这种环路的产生。
在使能了环路保护功能的端口上,其所有MSTI的初始状态均为Discarding状态:如果该端口收到了BPDU,这些MSTI可以进行正常的状态迁移;否则,这些MSTI将一直处于Discarding状态以避免环路的产生。
请在设备的根端口和替换端口上进行如下配置。
· 请不要在与用户终端相连的端口上使能环路保护功能,否则该端口会因收不到BPDU而导致其所有MSTI将一直处于Discarding状态。
· 在同一个端口上,不允许同时配置边缘端口和环路保护功能,或者同时配置根保护功能和环路保护功能。
表1-36 配置环路保护功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入二层以太网或二层聚合接口视图 |
interface interface-type interface-number |
- |
使能端口的环路保护功能 |
stp loop-protection |
缺省情况下,端口的环路保护功能处于关闭状态 |
用户接入网络中设备桥ID的变化会引起核心网络生成树拓扑的改变。为了避免这种情况,可以在端口上使能端口角色限制功能,此后当该端口收到最优根消息时将不再当选为根端口,而是成为替换端口。
请在与用户接入网络相连的端口上进行如下配置。
使能端口角色限制功能后可能影响生成树拓扑的连通性,请慎重配置。
表1-37 配置端口角色限制功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入二层以太网或二层聚合接口视图 |
interface interface-type interface-number |
- |
使能端口角色限制功能 |
stp role-restriction |
缺省情况下,端口角色限制功能处于关闭状态 |
用户接入网络的拓扑改变会引起核心网络的转发地址更新,当用户接入网络的拓扑因某种原因而不稳定时,就会对核心网络形成冲击。为了避免这种情况,可以在端口上使能TC-BPDU传播限制功能,此后当该端口收到TC-BPDU时,不会再向其他端口传播。
请在与用户接入网络相连的端口上进行如下配置。
使能TC-BPDU传播限制功能后,当拓扑改变时原有转发地址表项可能无法更新,请慎重配置。
表1-38 配置TC-BPDU传播限制功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入二层以太网或二层聚合接口视图 |
interface interface-type interface-number |
- |
使能TC-BPDU传播限制功能 |
stp tc-restriction |
缺省情况下,TC-BPDU传播限制功能处于关闭状态 |
设备在收到TC-BPDU后,会执行转发地址表项的刷新操作。在有人伪造TC-BPDU恶意攻击设备时,设备短时间内会收到很多的TC-BPDU,频繁的刷新操作给设备带来很大负担,给网络的稳定带来很大隐患。而通过在设备上使能防TC-BPDU攻击保护功能,就可以避免转发地址表项的频繁刷新。
当使能了防TC-BPDU攻击保护功能后,如果设备在单位时间(固定为十秒)内收到TC-BPDU的次数大于stp tc-protection threshold命令所指定的最高次数(假设为N次),那么该设备在这段时间之内将只进行N次刷新转发地址表项的操作,而对于超出N次的那些TC-BPDU,设备会在这段时间过后再统一进行一次地址表项刷新的操作,这样就可以避免频繁地刷新转发地址表项。
建议不要关闭防TC-BPDU攻击保护功能。
表1-39 配置防TC-BPDU攻击保护功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
使能防TC-BPDU攻击保护功能 |
stp tc-protection |
缺省情况下,防TC-BPDU攻击保护功能处于使能状态 |
(可选)配置在单位时间(固定为十秒)内,设备收到TC-BPDU后立即刷新转发地址表项的最高次数 |
stp tc-protection threshold number |
缺省情况下,在单位时间(固定为十秒)内,设备收到TC-BPDU后立即刷新转发地址表项的最高次数为6 |
当端口收到指定端口发出的低优先级消息,且发送端口处于Forwarding或Learning状态时,会触发Dispute保护,阻塞端口以防止环路。
Dispute保护功能是设备默认启用的特性,不需要配置。
如图1-11所示,正常情况下,Device A是根桥,经过生成树计算后,Port B1被阻塞。如果Port A1发生单通故障,即Port A1不能发送报文,只能接收报文。Port B1在一定时间内未收到Port A1发送的BPDU,则Device B认为自己是根桥,由Port B1发送低优先级BPDU到Port A1。此时,Port A2和Port B2之间链路正常,Device B会接收到自己发送BPDU,导致产生环路。因此当链路出现单通故障后,会触发Dispute保护功能,阻塞端口,防止环路。
图1-11 Dispute保护触发场景
在完成上述配置后,在任意视图下执行display命令都可以显示配置后生成树的运行情况,通过查看显示信息验证配置的效果。
在用户视图下执行reset命令可以清除生成树的统计信息。
操作 |
命令 |
显示被生成树保护功能阻塞的端口信息 |
display stp abnormal-port |
显示端口上的BPDU统计信息 |
display stp bpdu-statistics [ interface interface-type interface-number [ instance instance-list ] ] |
显示被生成树保护功能down掉的端口信息 |
display stp down-port |
显示生成树端口角色计算的历史信息(独立运行模式) |
display stp [ instance instance-list ] history [ slot slot-number ] |
显示生成树端口角色计算的历史信息(IRF模式) |
display stp [ instance instance-list ] history [ chassis chassis-number slot slot-number ] |
显示生成树所有端口收发的TC或TCN报文数(独立运行模式) |
display stp [ instance instance-list ] tc [ slot slot-number ] |
显示生成树所有端口收发的TC或TCN报文数(IRF模式) |
display stp [ instance instance-list ] tc [ chassis chassis-number slot slot-number ] |
显示生成树的状态和统计信息(独立运行模式) |
display stp [ instance instance-list ] [ interface interface-list | slot slot-number ] [ brief ] |
显示生成树的状态和统计信息(IRF模式) |
display stp [ instance instance-list ] [ interface interface-list | chassis chassis-number slot slot-number ] [ brief ] |
显示当前生效的MST域配置信息 |
display stp region-configuration |
显示所有生成树的根桥信息 |
display stp root |
清除生成树的统计信息 |
reset stp [ interface interface-list ] |
· 网络中所有设备都属于同一个MST域。Device A和Device B为汇聚层设备,Device C和Device D为接入层设备。
· 通过配置MSTP,使不同VLAN的报文按照不同的MSTI转发:VLAN 10的报文沿MSTI 1转发,VLAN 30沿MSTI 3转发,VLAN 40沿MSTI 4转发,VLAN 20沿MSTI 0转发。
· 由于VLAN 10和VLAN 30在汇聚层设备终结、VLAN 40在接入层设备终结,因此配置MSTI 1和MSTI 3的根桥分别为Device A和Device B,MSTI 4的根桥为Device C。
图1-12 MSTP典型配置组网图
(1) 配置VLAN和端口
请按照图1-12在Device A和Device B上分别创建VLAN 10、20和30,在Device C上创建VLAN 10、20和40,在Device D上创建VLAN 20、30和40;将各设备的各端口配置为Trunk端口并允许相应的VLAN通过,具体配置过程略。
(2) 配置Device A
# 配置MST域的域名为example,将VLAN 10、30、40分别映射到MSTI 1、3、4上,并配置MSTP的修订级别为0。
<DeviceA> system-view
[DeviceA] stp region-configuration
[DeviceA-mst-region] region-name example
[DeviceA-mst-region] instance 1 vlan 10
[DeviceA-mst-region] instance 3 vlan 30
[DeviceA-mst-region] instance 4 vlan 40
[DeviceA-mst-region] revision-level 0
# 激活MST域的配置。
[DeviceA-mst-region] active region-configuration
[DeviceA-mst-region] quit
# 配置本设备为MSTI 1的根桥。
[DeviceA] stp instance 1 root primary
# 全局使能生成树协议。
[DeviceA] stp global enable
(3) 配置Device B
# 配置MST域的域名为example,将VLAN 10、30、40分别映射到MSTI 1、3、4上,并配置MSTP的修订级别为0。
<DeviceB> system-view
[DeviceB] stp region-configuration
[DeviceB-mst-region] region-name example
[DeviceB-mst-region] instance 1 vlan 10
[DeviceB-mst-region] instance 3 vlan 30
[DeviceB-mst-region] instance 4 vlan 40
[DeviceB-mst-region] revision-level 0
# 激活MST域的配置。
[DeviceB-mst-region] active region-configuration
[DeviceB-mst-region] quit
# 配置本设备为MSTI 3的根桥。
[DeviceB] stp instance 3 root primary
# 全局使能生成树协议。
[DeviceB] stp global enable
(4) 配置Device C
# 配置MST域的域名为example,将VLAN 10、30、40分别映射到MSTI 1、3、4上,并配置MSTP的修订级别为0。
<DeviceC> system-view
[DeviceC] stp region-configuration
[DeviceC-mst-region] region-name example
[DeviceC-mst-region] instance 1 vlan 10
[DeviceC-mst-region] instance 3 vlan 30
[DeviceC-mst-region] instance 4 vlan 40
[DeviceC-mst-region] revision-level 0
# 激活MST域的配置。
[DeviceC-mst-region] active region-configuration
[DeviceC-mst-region] quit
# 配置本设备为MSTI 4的根桥。
[DeviceC] stp instance 4 root primary
# 全局使能生成树协议。
[DeviceC] stp global enable
(5) 配置Device D
# 配置MST域的域名为example,将VLAN 10、30、40分别映射到MSTI 1、3、4上,并配置MSTP的修订级别为0。
<DeviceD> system-view
[DeviceD] stp region-configuration
[DeviceD-mst-region] region-name example
[DeviceD-mst-region] instance 1 vlan 10
[DeviceD-mst-region] instance 3 vlan 30
[DeviceD-mst-region] instance 4 vlan 40
[DeviceD-mst-region] revision-level 0
# 激活MST域的配置。
[DeviceD-mst-region] active region-configuration
[DeviceD-mst-region] quit
# 全局使能生成树协议。
[DeviceD] stp global enable
在本例中,假定Device B的根桥ID最小,因此该设备将在MSTI 0中被选举为根桥。
当网络拓扑稳定后,通过使用display stp brief命令可以查看各设备上生成树的简要信息。例如:
# 查看Device A上生成树的简要信息。
[DeviceA] display stp brief
MSTID Port Role STP State Protection
0 FortyGigE1/0/1 ALTE DISCARDING NONE
0 FortyGigE1/0/2 DESI FORWARDING NONE
0 FortyGigE1/0/3 ROOT FORWARDING NONE
1 FortyGigE1/0/1 DESI FORWARDING NONE
1 FortyGigE1/0/3 DESI FORWARDING NONE
3 FortyGigE1/0/2 DESI FORWARDING NONE
3 FortyGigE1/0/3 ROOT FORWARDING NONE
# 查看Device B上生成树的简要信息。
[DeviceB] display stp brief
MSTID Port Role STP State Protection
0 FortyGigE1/0/1 DESI FORWARDING NONE
0 FortyGigE1/0/2 DESI FORWARDING NONE
0 FortyGigE1/0/3 DESI FORWARDING NONE
1 FortyGigE1/0/2 DESI FORWARDING NONE
1 FortyGigE1/0/3 ROOT FORWARDING NONE
3 FortyGigE1/0/1 DESI FORWARDING NONE
3 FortyGigE1/0/3 DESI FORWARDING NONE
# 查看Device C上生成树的简要信息。
[DeviceC] display stp brief
MSTID Port Role STP State Protection
0 FortyGigE1/0/1 DESI FORWARDING NONE
0 FortyGigE1/0/2 ROOT FORWARDING NONE
0 FortyGigE1/0/3 DESI FORWARDING NONE
1 FortyGigE1/0/1 ROOT FORWARDING NONE
1 FortyGigE1/0/2 ALTE DISCARDING NONE
4 FortyGigE1/0/3 DESI FORWARDING NONE
# 查看Device D上生成树的简要信息。
[DeviceD] display stp brief
MSTID Port Role STP State Protection
0 FortyGigE1/0/1 ROOT FORWARDING NONE
0 FortyGigE1/0/2 ALTE DISCARDING NONE
0 FortyGigE1/0/3 ALTE DISCARDING NONE
3 FortyGigE1/0/1 ROOT FORWARDING NONE
3 FortyGigE1/0/2 ALTE DISCARDING NONE
4 FortyGigE1/0/3 ROOT FORWARDING NONE
根据上述显示信息,可以绘出各VLAN所对应MSTI的拓扑,如图1-13所示。
图1-13 各VLAN所对应MSTI的拓扑图
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!