生成树协议是一种二层管理协议,它的主要功能是阻塞网络中的冗余链路来消除二层环路,在链路故障时启用备份链路。
随着网络的发展不断更新,生成树协议已有多种版本。本设备同时支持STP协议(Spanning Tree Protocol,生成树协议),RSTP协议(Rapid Spanning Tree Protocol,快速生成树协议)和MSTP协议(Multiple SpanningTree Protocol,多生成树协议)。
为了避免单点故障,二层设备通过增加冗余线路,提高线路可靠性。其中最经济的方式是添加环路;但是环路可能导致广播风暴和MAC地址漂移,因此产生了STP协议。
STP协议可以通过计算,生成局域网的最佳无环树型拓扑,若发现故障则自行恢复,自动更新拓扑。
STP不能快速进入转发状态,一般需要50秒才能完成拓扑收敛。局域网内所有VLAN共享一棵生成树,所有VLAN的报文都沿这棵生成树进行转发,浪费了冗余线路带宽。因为VLAN间的数据可二层隔离,在某些情况下并不存在二层环路;但是STP不能识别VLAN,可能出现同一个VLAN内的接口被阻塞端口拦截,导致无法通信的情况。
RSTP协议向下兼容STP协议,除了和传统的STP协议一样具有破除环路、恢复备份链路的功能外,还解决了快速进入转发状态的问题。如果局域网内的网桥都支持RSTP协议,且配置得当,一旦网络拓扑改变,只需要不超过1秒的时间,就能重新生成拓扑树。
RSTP虽然可以快速收敛,但是和STP一样不能识别VLAN。
MSTP可以弥补STP和RSTP的缺陷,既可以快速收敛,也能使不同VLAN的流量沿各自的路径转发,为冗余链路提供了更好的负载分担机制。STP/RSTP是基于端口的,MSTP是基于实例的。实例是多个VLAN的集合,将多个VLAN捆绑到一个实例中可以节省通信开销,提高资源占用率。MSTP可实现功能:
线路正常时,破除环路,避免广播风暴和MAC地址漂移,确保正常二层通信。
线路故障时,启用备份链路,增加链路可靠性;并且可快速收敛,增强链路及时性。
按VLAN实例生成多棵生成树,实现流量负载均衡。
STP(Spanning Tree Protocol,生成树协议)由IEEE 802.1D标准定义,在局域网中用来破除数据链路层物理环路,避免广播风暴,实现链路冗余备份。
二层设备如果采用单线路连接,线路和设备都没有冗余性,其中任何一个单点发生故障都会导致设备间的连接中断,线路可靠性很低。增加一条冗余线路形成二层环路,可以解决单点故障的问题。
但是增加冗余线路带来了两个新问题:
二层环路中一旦出现广播帧,将被二层设备不断泛洪,从而造成广播风暴,严重消耗设备资源及网络带宽。
在环路拓扑中,二层设备可能从两条路径的两个端口收到同一个源MAC,导致MAC地址漂移,设备无法正常工作。
因此对二层以太网来说,两个LAN间只能有一条转发数据的有效通路。理想情况下,在网络中存在二层环路时,阻塞特定端口让冗余链路失效从而打破环路;在网络出现故障时,开启端口让冗余链路恢复有效状态。手工控制难以实现此理想效果,因此产生了STP协议用于自动完成此项工作:
开启STP协议的设备会交互特定的STP协议报文,即BPDU(Bridge Protocol Data Units,网桥协议数据单元);通过BPDU关键信息选举出设备角色(根桥和非根桥)和端口角色(根端口、指定端口和阻塞端口);不同端口角色具有不同端口状态,对应不同功能,在局域网内构成生成树拓扑。
通过协议报文监控线路状态,维持生成树拓扑;发现故障并进行恢复,自动更新生成树拓扑。
STP协议包括两种协议报文:配置BPDU(Configuration BPDU)和TCN BPDU(Topology Change Notification BPDU,拓扑改变通知BPDU)。
配置BPDU
报文长度为35字节,包含用于计算生成树拓扑的相关信息:根桥ID、根路径开销、指定桥ID和指定端口ID;维护生成树的相关信息:Message Age、Max Age、Hello Time和Forward Delay。若端口开启STP功能且为指定端口,则会每隔一个Hello Time发送一个配置BPDU报文。当设备从根端口上收到配置BPDU时,会给本设备的每个指定端口同步一份,指定端口据此生成本端口的BPDU。如果指定端口从线路上收到的配置BPDU比本端口产生的BPDU优先级低(请参考1.1.3 3. BPDU关键信息),会向下游设备发送本端口的BPDU。
TCN BPDU
报文长度为4字节。在至少存在一个指定端口的网桥上,当本设备上有端口迁移到Forwarding或Blocking状态时,说明网络拓扑发生了变化,此时网桥会发送TCN BPDU报文通知上游设备网络拓扑改变。上游设备从指定端口收到TCN BPDU后,将配置BPDU中的TCA置1,告知下游停止发送TCN BPDU;并且复制一份TCN BPDU向本设备的上游传播,直到根桥。根桥通过将配置BPDU中的TC标志位置位来通知生成树中的所有网桥,网络拓扑发生了变化,请清空端口动态MAC地址表项并重新学习MAC地址。使用较短的MAC地址老化时间有助于拓扑快速收敛。
BPDU报文封装在802.3 LLC(Logical Link Control,逻辑链路控制)以太网帧中,和其它以太网帧的报文格式区别如图1-1所示。
如图1-2为一个实际的STP配置BPDU报文。
802.3以太头部共14个字节,分3个字段,字段含义如表1-1所示。
字段 |
字节 |
含义 |
---|---|---|
DMAC |
6 |
目的MAC地址。按协议规定,封装BPDU报文的以太网帧,其目的地址固定为组播地址0180.c200.0000,设备收到这种帧,不会正常转发 |
SMAC |
6 |
发送BPDU的设备的源MAC地址。示例中的值为00-d0-f8-22-35-4a |
Length |
2 |
值为0x0026,表示报文长度为38字节(LLC头部3字节,BPDU报文35字节) |
LLC头部共3个字节,分3个字段,字段含义如表1-2所示。
字段 |
字节 |
含义 |
---|---|---|
DSAP |
1 |
Destination Service Access Point,目的服务接入点,值为0x42 |
SSAP |
1 |
Source Service Access Point,源服务接入点,值为0x42 |
Control |
1 |
控制信息。用于存放各种控制信息,并识别LLC帧的类型,值为0x03 |
LLC头部后面是BPDU报文。STP、RSTP和MSTP的BPDU报文总共有4种类型,通过PVID和BPDU Type值的不同来标注。STP的配置BPDU报文有35字节,分12个字段,字段含义如表1-3所示。最后为8字节填充和4字节CRC,组成64字节的以太网帧。
字段 |
字节 |
含义 |
---|---|---|
PID |
2 |
Protocol Identifier,协议ID,值为0x0000 |
PVID |
1 |
Protocol Version Identifier,协议版本。0x00表示STP报文 |
BPDU Type |
1 |
BPDU报文类型。0x00表示STP的配置BPDU报文 |
Flags |
1 |
示例中值为0x00。STP的Configuration BPDU报文只使用Bit7和Bit0,其它Bit不使用 Bit7:TCA(Topology Change Acknowledgment,拓扑改变响应),上游把配置BPDU报文中该位置1后发送,通知下游设备,本设备已知拓扑变化,停止发送TCN BPDU Bit0:TC(Topology Change,拓扑改变)。根桥把配置BPDU报文中的该位置1后发送,通知下游设备,直接删除桥MAC地址表项 |
Root ID |
8 |
Root Identifier,本设备认可的根桥ID。由2字节桥优先级,加6字节桥MAC地址组成 示例中优先级值为0x8000,表示32768;桥MAC地址为00-d0-f8-22-35-4a |
RPC |
4 |
Root Path Cost,根路径开销,本端口累计到根桥的开销。示例中值为0x00-00-00-00 |
Bridge ID |
8 |
Bridge Identifier,本设备的桥ID。由2个字节桥优先级,加6字节桥MAC地址组成 示例中值为0x8000,表示32768;桥MAC地址为00-d0-f8-22-35-4a |
Port ID |
2 |
Port Identifier,发送该BPDU的端口ID。由1个字节优先级,加1字节端口号组成 示例中优先级值为0x80,表示128;端口号值为1c |
Message Age |
2 |
该BPDU消息的年龄,表示报文已在网络中存活的时间,示例中值为0x0000 |
Max Age |
2 |
BPDU消息老化年龄。若非根设备到Max Age还没有收到根的BPDU信息,则认为根桥或通向根桥的链路发生了故障。示例中值为0x1400(低字节在前),表示20秒 |
Hello Time |
2 |
发送两个相邻BPDU间的时间间隔。根桥以Hello Timer为时间间隔发送配置BPDU,非根交换设备在收到上游的配置BPDU后,才会发出配置BPDU。示例中值为0x0200(低字节在前),表示2秒 |
FWD Delay |
2 |
Forward Delay,时间参数,控制Listening和Learning状态的持续时间 示例中值为0x0f00(低字节在前),表示15秒 |
TCN BPDU报文有4个字节,只有PID、PVID和BPDU Type字段。报文格式如表1-4所示。
字段 |
字节 |
含义 |
---|---|---|
PID |
2 |
Protocol Identifier,协议ID为0x0000 |
PVID |
1 |
Protocol Version Identifier,协议版本。0x00表示STP报文 |
BPDU Type |
1 |
BPDU报文类型 0x80表示STP的TCN BPDU报文。当下游网络拓扑发生变化时,用来通知上游设备,网络拓扑发生了变化。端口收到TCN BPDU报文后,会复制并且向上游转发,一直到根 |
网桥之间通过交换BPDU帧来获得信息,生成一个稳定的最佳树型拓扑。信息中最基本的要素如下。
Root ID:本网桥认可的根桥ID,由根的桥优先级和Mac地址组合而成。根桥ID是根的Bridge ID。
Root Path Cost:本网桥到根桥的路径开销,以下简称根路径开销。
Bridge ID:每个网桥拥有的唯一的桥ID,由桥优先级和Mac地址组合而成。
Port ID:每个端口的ID,由端口优先级和端口号组合而成。
这些关键要素组成一个优先级向量< Root ID,Root Path Cost,Bridge ID,Port ID >。网桥通过依次比较向量中优先级要素的大小,确定BPDU的优先级。优先级要素值越小,优先级越高。网桥的某一个端口如果收到比本端口高优先级的BPDU则保存下来,同时向所有端口传播此BPDU;如果收到比本端口低优先级的BPDU,STP协议将直接丢弃,RSTP和MSTP协议则发送Proposal BPDU报文,请求对方认可本设备为上游设备。该机制可以确保高优先级的BPDU信息在整个网络中传播开来。
Bridge ID
IEEE 802.1W标准规定,用Root ID标识生成树中的根桥(Root Bridge),用Bridge ID标识每一个网桥(Bridge)。设备刚运行生成树协议时采用本设备的Bridge ID作为Root ID,生成树算法通过比较Root ID来选举根桥。Bridge ID由8个字节组成,前面2个字节为桥优先级,后6个字节为该桥的MAC地址。在根桥选举的时候,设备会先比较桥优先级,再比较MAC地址,数值越小优先级越高。
桥优先级:为了网络的可靠性,建议在规划网络的时候规定桥优先级,避免让设备通过比较MAC地址选举根桥。在2字节的桥优先级中,bit1~bit12是System ID,为扩展协议而用,在RSTP中该值为0;bit13~bit16是优先级(Priority),可进行配置。若优先级配置为0001 0000 0000 0000,等于十进制的4096,因此网桥优先级是4096的倍数;bit13~bit16可以表示0000~1111共15个数,因此优先级的十进制值为4096*0~4096*15。
桥优先级字段(2字节)
- |
Priority |
System ID |
||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Bit |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
Value |
32768 |
16384 |
8192 |
4096 |
2048 |
1024 |
512 |
256 |
128 |
64 |
32 |
16 |
8 |
4 |
2 |
1 |
- |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Port ID
每个参与生成树计算的端口,都要有Port ID,即设备的端口ID。
格式:Port ID由2个字节组成,第1个字节为端口优先级,第2个字节为端口号。
端口优先级缺省128,范围0~255。端口编号范围0~255,比如GigabitEthernet 0/0的编号0比GigabitEthernet 0/1的编号1小。
Root Path Cost
本端口累计到根桥的路径开销。两个直连端口之间的链路称为一个“段”,一段链路的网络带宽越高,端口路径开销(Path Cost)越小,累加端口到根的必经线路上所有端口的路径开销,计算出总的开销值,就是累计到根桥的路径开销(Root Path Cost)。不同协议对应的开销值如表1-6所示。本设备对路径开销值的定义如表1-11所示。
带宽 |
802.1t协议RPC |
802.1d协议的RPC |
---|---|---|
10Mbps |
2000000 |
100 |
100Mbps |
200000 |
19 |
1Gbps |
20000 |
4 |
10Gbps |
2000 |
2 |
开启STP协议的设备通过交流BPDU报文,比较Root ID选举出设备角色。
Root Bridge(根桥):每颗生成树都有唯一的根。
Designated Bridge(指定桥):本设备与根桥之间的最短路径上的设备,即本设备的上游设备。
Bridge(桥):一般指本设备,为指定桥的下游设备。Designated Bridge和Bridge可合称为非根桥。
根桥和非根桥通过交流BPDU报文,选举出不同的端口角色。
Root Port(根端口):非根桥到根桥路径最短的端口。
Designated Port(指定端口):根桥的每个端口都是指定端口,根桥通过指定端口连接非根桥的根端口,指定桥连接下游设备的端口也是指定端口。
Disable Port(阻塞端口):也叫Blocking Port。非根桥上处于阻塞状态或Down状态的接口。
端口角色按照协议工作在不同端口状态,执行不同功能,端口状态对应的功能如表1-7所示。
STP协议定义了5种端口状态:Disabled(禁用)、Blocking(阻塞)、Listening(侦听)、Learning(学习)和Forwarding(转发)。RSTP简化为3种端口状态:Discarding(废弃)、Learning(学习)和Forwarding(转发);MSTP沿用RSTP的端口状态。
STP/RSTP/MSTP协议端口角色、端口状态和功能对应表
注:本表格中R=Root Port,D=Designated Port,A=Alternate Port,B=Backup Port,Blk=Blocking Port。
STP |
RSTP和MSTP |
功能 |
||||||
---|---|---|---|---|---|---|---|---|
端口角色 |
端口状态 |
端口角色 |
端口状态 |
收BPDU |
发BPDU |
地址学习 |
接收数据 |
转发数据 |
Disable |
Disabled |
Disable |
Discarding |
No |
No |
No |
No |
No |
Blk |
Blocking |
A,B |
Discarding |
Blk,A,B |
No |
No |
No |
No |
R,D |
Listening |
R,D |
Discarding |
R,D |
D |
No |
No |
No |
Learning |
Learning |
R,D |
D |
R,D |
No |
No |
||
Forwarding |
Forwarding |
R,D |
D |
R,D |
R,D |
R,D |
在拓扑稳定后只有根端口和指定端口处于Forwarding状态,可以收发数据;其它端口都处于Blocking状态,只能收BPDU。不同端口角色在同样的端口状态下存在不同功能,例如根端口在Fowarding状态下不能发只能收BPDU,而指定端口在Fowarding状态既可以发也可以收BPDU。
端口状态会根据规则进行迁移,迁移规则如图1-3所示。
(1)端口初始化或Enable后进入Blocking(阻塞)状态。
(2)生成树协议刚运行时,设备上的所有端口作为指定端口进入Listening(侦听)状态,收发BPDU以便进行选举;在生成树稳定期,若阻塞端口在MAX Age内没有收到BPDU报文,则转变为指定端口,从Blocking(阻塞)状态进入Listening(侦听)状态,收发BPDU重新进行选举。
(3)经过选举后,端口若被选为根端口则只接收不发送BPDU。
(4)若根端口在MAX Age内没有收到BPDU报文,则认为根发生了故障,转变为指定端口并发送BPDU。
(5)端口被选举为根端口或指定端口后,等待一个Forward Delay,从Listening(侦听)迁移到Learning(学习)状态,开始学习MAC地址。
(6)再等待一个Forward Delay,端口从Learning(学习)迁移到Forwarding(转发)状态,开始收发报文。
(7)若端口不再是根端口或指定端口,则返回Blocking(阻塞)状态。
(8)若端口被关闭或者链路故障,则返回Disable(禁用)状态。
局域网根据用户配置的一组网桥参数自动计算构成生成树拓扑,只有配置合理才能得到稳定快速的拓扑。STP构成生成拓扑树的步骤如下。
网络刚开始运作STP协议时,各交换设备都会认为本设备是根桥,本设备的所有端口都是指定端口。所有端口进入Listening状态,广播配置BPDU并且接收网络上的BPDU报文。此时各交换设备BPDU报文中的Root ID是本设备的Bridge ID。
每个广播域选择一个根桥(Root Bridge)。各交换设备会收到其它交换设备的BPDU报文,报文中包含优先级向量< Root ID,Root Path Cost,Bridge ID,Port ID >,按照值越小越优先的准则,依次比较BPDU中的Root ID(刚开始Root ID为本设备的Bridge ID)。当某一个端口收到更小的Root ID时,会更新到本设备所有端口存储的配置BPDU的Root ID字段中,并向外发送。经过不断交互,优先级最高的设备,它的Bridge ID被大家记录为Root ID,即表示它被选举为根桥(Root Bridge)。
根桥上所有端口都为指定端口(Designated Port)。等待一个Forward Delay后,指定端口从Listening(侦听)迁移到Learning(学习)状态,学习MAC地址。再等待一个Forward Delay后,指定端口从Learning(学习)迁移到Forwarding(转发)状态,开始收发报文。
每个非根桥比较端口到根的累计路径开销,最小的被选为根端口(Root Port)。根端口只接收指定端口的配置BPDU报文,不再发送配置BPDU报文。等待一个Forward Delay后,根端口从Listening(侦听)迁移到Learning(学习)状态,学习MAC地址。再等待一个Forward Delay后,根端口从Learning(学习)迁移到Forwarding(转发)状态,开始收发报文。
两个直连交换设备之间的链路称为一个“段”,通过依次比较优先级向量< Root ID,Root Path Cost,Bridge ID,Port ID>,在每个段选择一个指定端口(Designated Port)。等待一个Forward Delay后,指定端口从Listening(侦听)迁移到Learning(学习)状态,学习MAC地址。再等待一个Forward Delay后,指定端口从Learning(学习)迁移到Forwarding(转发)状态,开始收发报文。
最后剩下为非指定端口,进行阻塞。端口返回Blocking状态,只接收BPDU。如果阻塞端口在MAX Age内收到高优先级的BPDU,说明对端设备目前到根的线路更优,阻塞端口就保持在阻塞状态;如果阻塞端口在MAX Age内没有收到高优先级BPDU,说明对端设备到根的线路更差甚至存在故障,阻塞端口就迁移到Listening(侦听)状态,发送本端口保存的配置BPDU,告知对端设备经过本端口的通信线路更佳。
说明
STP和RSTP功能中同一台设备的Bridge ID是一样的,同一个端口的Port ID是一样的。
MSTP功能中可以基于实例给同一台设备配置不同的Bridge ID,给同一个端口配置不同的Port ID。
生成树拓扑稳定后,只有指定端口和根端口处于转发状态,其它端口都处于Blocking状态。根桥继续以Hello Time为时间间隔,发送配置BPDU报文。下游非根桥将从根端口收到的最优配置BPDU报文保存在设备中,并且将根桥的Bridge ID填到Root ID中,通过指定端口向再下游发送配置BPDU。若下游设备在1个Max Age时间间隔内收到了来自上游的、优先级更高的BPDU,则网络拓扑维持不变。
以图1-4为例,描述生成树拓扑更新的过程。接口发送的配置BPDU报文中的优先级向量用< RID,Cost,BID,PID >表示,接口保存的配置BPDU报文中的优先级向量用(RID,Cost,BID,PID)表示。定义Device A的BID为1,Device B的BID为2,Device C的BID为3;端口GigabitEthernet 0/1的PID为1,GigabitEthernet 0/2的PID为2;线路都为千兆链路,每段线路的路径开销Cost为4。
如果根桥A故障,在1个Max Age时间间隔内Device B没有收到根的BPDU<1,0,1,1>,Device C无法收到根的BPDU<1,0,1,2>,B和C都认为本设备是根。B的GigabitEthernet 0/2发送BPDU<2,0,2,2>;C的GigabitEthernet 0/2变为指定端口,发送BPDU<3,0,3,2>。<2,0,2,2>优于<3,0,3,2>,Device B被选为根桥,Device C的GigabitEthernet 0/2变为根端口。
如果根桥A的GigabitEthernet 0/2口或根桥A到Device C的链路发生了故障,下游Device C在1个Max Age内无法从原来的根端口GigabitEthernet 0/1上收到根桥A的BPDU<1,0,1,2>,则识别出根桥A发生了故障,重新认为Device C是根。Device C原本阻塞(只收BPDU,不发BPDU)的端口GigabitEthernet 0/2切换为指定端口,端口状态从Blocking迁移到Listening并发送BPDU<3,0,3,2>;C的GigabitEthernet 0/2收到B的指定端口GigabitEthernet 0/2发送的BPDU报文<1,4,2,2>,发现Root ID优于本端口。Device C再次认Device A为根,并更新生成树拓扑,将GigabitEthernet 0/2设为根端口。经过一个Forward Delay后,GigabitEthernet 0/2迁移到Learning状态,学习MAC地址。再经过一个Forward Delay后,GigabitEthernet 0/2迁移到Forwarding状态转发数据,实现链路的自恢复。可见,这种情况下,链路恢复需要Max Age+2*FWD Time,缺省为20+2*15=50秒。
如果根桥A的GigabitEthernet 0/1口或根桥A到Device B的链路发生了故障,下游Device B在1个Max Age内无法从原来的根端口GigabitEthernet 0/1上收到根桥A的BPDU<1,0,1,1>,则识别出根桥A发生了故障,重新认为Device B是根。Device B的GigabitEthernet 0/2发送的BPDU从故障前的<1,4,2,2>变为<2,0,2,2>。Device C的阻塞端口GigabitEthernet 0/2发现Device B的GigabitEthernet 0/2发送的BPDU优先级低于阻塞端口保存的配置BPDU(1,4,3,2),则丢弃B的BPDU。如果Device C的阻塞端口GigabitEthernet 0/2在1个Max Age内都没有收到优于阻塞端口的BPDU,则变为指定端口,将阻塞端口保存的配置BPDU<1,4,3,2>发送给B。Device B发现BPDU<1,4,3,2>优于本端口的BPDU<2,0,2,2>,判断Device A为根,将GigabitEthernet 0/2切换为根端口;过2个Forward Delay后GigabitEthernet 0/2迁移到Forwarding状态转发数据,实现生成树网络中链路自恢复。
如果下游设备某一个端口的状态切换为Down,该设备将向上游发送TCN BPDU报文,告知拓扑发生变化。上游设备收到下游的TCN BPDU后,将配置BPDU报文中Flags字段的Bit7,即TCA(Topology Change Acknowledgment,拓扑改变响应)置1,发送给下游,表示上游已经知晓拓扑变化,请下游停止发送TCN BPDU。注意:只有上游设备的指定端口会处理TCN BPDU报文,非指定端口收到TCN BPDU则会直接丢弃。上游设备复制一份TCN BPDU报文,通过根端口转发给本设备的上游,逐段转发直到根桥。根桥收到下游的TCN BPDU后,将配置BPDU报文中Flags字段的Bit7,TCA(Topology Change Acknowledgment,拓扑改变响应)置1,发送给下游,表示上游已经知晓拓扑变化,请下游停止发送TCN BPDU;并且将配置BPDU报文中Flags字段的Bit0,TC(Topology Change,拓扑改变)置1,通知所有下游设备,因拓扑变化,请清空端口动态MAC地址表项,重新学习MAC地址。
如果在网络中增加一台Device D挂接到Device B下,Device B的端口状态变为Up,Device B也会通告拓扑变化。Device D会发送BPDU,也会接收BPDU。如果Device D的桥优先级比原来的根Device A更高,可能导致生成树发生大的变化。可见STP协议并不稳定。
拓扑收敛速度慢。STP协议在完成端口角色选举后,会等待2倍Forward Delay(缺省15秒)再进入转发状态,即需要等待2*15=30秒。每当拓扑发生变化后,网桥要间隔MAX Age(缺省20秒)开始重新选举根端口和指定端口,再经过2倍Forward Delay后进入转发状态,形成稳定拓扑大约需要20+2*15=50秒。STP协议要求根桥主动发出配置BPDU,其它设备进行转发,此机制导致网络收敛慢。
如果网络中的拓扑结构变化频繁,网络会频繁的失去连通性,这样用户将无法忍受。
RSTP(Rapid Spanning Tree Protocol,快速生成树协议)由IEEE 802.1W标准定义。RSTP协议由STP发展而来,向下兼容802.1D STP协议。RSTP具有传统STP协议全部的功能,能避免回路,提供冗余链路。相对STP,RSTP减少了网络拓扑收敛的耗时;如果一个局域网内的网桥都支持RSTP协议且用户配置得当,一旦网络拓扑改变,RSTP重新生成拓扑树的时间不超过1秒,而STP大约为50秒。
RSTP协议只有一种协议报文:配置BPDU。报文格式和STP略有不同,也可以叫RST BPDU(Rapid Spanning Tree BPDU)以示区分。
当拓扑改变时,RSTP不再使用TCN BPDU通告拓扑变化,而是将RST BPDU的Flags字段中的TC位置1,通过RST BPDU泛洪,快速通知到整个网络。
如图1-5所示,Length字段为0x0027,表示报文长度为39字节,其中包括3字节的LLC头部和36字节的RST BPDU报文。RST BPDU报文字段含义如表1-8所示。最后为7字节填充和4字节CRC,组成64字节的以太网帧。
字段 |
字节 |
含义 |
---|---|---|
PID |
2 |
Protocol Identifier,协议ID,其值为0x0000 |
PVID |
1 |
Protocol Version Identifier,协议版本,其值为0x02,表示RSTP报文 运行STP的设备收到RST BPDU时会丢弃 |
BPDU Type |
1 |
BPDU报文类型。其值为0x02,表示RST BPDU |
Flags |
1 |
RST BPDU报文使用全部8个bit。示例中,值为0x7c,即0111 1100 Bit7:TCA,置1表示已知拓扑变化 Bit6:Agreement,1表示Agreemet,同意状态切换 Bit5:Forwarding,1表示Forwarding,可以转发 Bit4:Learning,1表示Learning,可以学习 Bit3和Bit2:表示端口角色 00:未知 01:根端口 10:Alternate / Backup 11:指定端口 Bit1:Proposal,置1表示发送Proposal,请求状态切换 Bit0:TC,置1通告拓扑变化 |
Root ID |
8 |
Root Identifier,本设备认可的根桥ID。由2字节桥优先级,加6字节桥MAC地址组成 |
RPC |
4 |
Root Path Cost,根路径开销,本端口累计到根桥的开销 |
Bridge ID |
8 |
Bridge Identifier,本设备的桥ID。由2个字节桥优先级,加6字节桥MAC地址组成 |
Port ID |
2 |
Port Identifier,发送该BPDU的端口ID。由1个字节优先级,加1字节端口号组成 |
Message Age |
2 |
该BPDU消息的年龄,表示报文已在网络中存活的时间 |
Max Age |
2 |
BPDU消息老化年龄 |
Hello Time |
2 |
发送两个相邻BPDU间的时间间隔。RSTP拓扑稳定后,非根交换设备会自主地以Hello Timer为时间间隔发送配置BPDU,无论是否收到根桥传来的配置BPDU报文。若非根设备在超时因子Time-factor × Hello Time内,还没有收到根的BPDU信息,将认为根桥或通向根桥的链路发生了故障。Time-factor为Hello Time的倍数,可以进行配置 |
FWD Delay |
2 |
Forward Delay,时间参数,控制Listening和Learning状态的持续时间 |
Ver 1 Length |
1 |
值为0x00,表示本BPDU中不包含Version 1内容。STP无此字段 |
RSTP用替换端口和备份端口代替阻塞端口,并增加了边缘端口(Edge Port)自动识别功能。如此,RSTP一共有6种端口。
Root Port(根端口):到根桥(Root Bridge)路径最短的接口。
Alternate Port(替换端口):根端口的备份接口。一旦根端口失效,替换端口立即转变为根端口。
Designated Port(指定端口):根桥或上游桥上连接下游设备的接口。
Backup Port(备份端口):指定端口的备份接口。当根桥或上游桥上有两个接口连接同一个下游桥时,高优先级的接口为指定端口,低优先级的接口为备份端口;一旦指定端口失效,备份端口立即转变为指定端口。
Edge Port(边缘端口):和终端相连的接口。边缘端口不参与生成树计算,不需要等待2倍Forward Delay,可快速进入转发状态;边缘端口若收到BPDU,会自动切换为非边缘端口。
Disable Port(阻塞端口):状态为Down的端口被分配为此角色。
改进效果:
替换端口和备份端口的工作机制使得设备发现拓扑改变到恢复连通性只需几毫秒,并且无需传递配置消息。
边缘端口的状态变化不会影响网络连通性,也不会造成环路,边缘端口可无延时进入转发状态。
如图1-6为各个端口角色的示意图,在没有特殊说明情况下,端口优先级根端口>指定端口>替换端口>备份端口。
RSTP协议中,设备对BPDU的处理方式发生了变化。
独立Hello:在STP拓扑稳定后,根桥以Hello Timer为时间间隔发送配置BPDU,非根交换设备在收到上游的配置BPDU后才会发出配置BPDU,导致拓扑变化收敛时间长。而在RSTP拓扑稳定后,无论是否收到根桥传来的配置BPDU报文,非根交换设备都会自动以Hello Timer为时间间隔发送配置BPDU。
快速发现故障:在STP协议中,非根交换设备若在1个MAX Age时间间隔内未收到上游的BPDU,则认为上游发生了故障。而在RSTP协议中,非根交换设备若连续3个Hello Time未收到上游的BPDU,则认为上游发生了故障。MAX Age配置范围是6~40秒,缺省为20秒,发现上游故障最短需要6秒;Hello Time配置范围是1~10秒,缺省为2秒,发现上游故障最短只需3秒;可见RSTP协议可以配置更短的故障发现时间。
快速收敛:在STP协议中,所有端口收到低优先级的BPDU报文都会直接丢弃;若阻塞端口在1个MAX Age时间间隔内未收到高优先级BPDU则会迁移到指定端口,发送本端口的BPDU给对端。而在RSTP协议中,当下游收到上游的BPDU报文并发现上游BPDU报文的优先级低于本端口保存的BPDU时,则会立刻将本端口保存的BPDU发送给上游;上游收到BPDU后进行比对,更新本端口保存的BPDU,这种机制可以加快拓扑收敛。
在STP协议中,端口从Listening到Learning再到Forwarding状态需要等待2个Forward Delay。Forward Delay配置范围是4~30秒,缺省为15秒,即一共需要30秒。而在RSTP协议中,端口完成角色选举后会先进入Discarding状态,再通过与相连网桥进行一次Proposal和Agree握手,快速进入转发状态。以图1-7为例,步骤如下。
(1)Proposal:若Device B的根端口在3个Hello Time内未收到上游的BPDU,则认为上游发生了故障。Device B回到初始状态,将本设备作为根,将所有端口切换为指定端口(状态为Discarding)发送RST BPDU报文。Device A在替换端口(若Device A不是根)或备份端口(若Device A是根)上收到Device B的RST BPDU报文,若Device B的RST BPDU优先级低于本端口,则将本端口切换为指定端口(状态为Discarding),将本端口配置BPDU中的Proposal位置1,向Device B发送Proposal BPDU报文,请求B将A的根作为根桥。
(2)Agree:Device B收到Device A的Proposal BPDU,若Device A的BPDU优先级比Device B高,则将Device A的根作为根桥(Device A可能为根,也可能是B到根的中间设备)。Device B上收到Proposal BPDU报文的端口成为根端口,根端口停止发送RST BPDU。在端口切换到转发状态前,Device B需要先阻塞非边缘指定端口,避免产生环路。因为各端口切换为Discarding的速度可能存在差异,设备内用一组同步变量来表示端口状态切换是否完成。Device B先将所有端口的Sync变量置位;待所有端口进入Discarding状态后,各端口的Synced变量置位;之后根端口的Synced置位,表示各端口都已切换到正确状态。根端口将从Device A收到的Proposal BPDU中的Proposal位清0,Agreement位置1,其它BPDU的内容不变,构成Agreement BPDU报文,从根端口发往Device A。
(3)Forwarding:Device A的指定端口收到Agreement BPDU报文后进入转发状态,每隔Hello Time发送Forwarding位置1的RST BPDU报文。Device B的根端口收到此报文后进入转发状态。
(4)展开Proposal:Device B的指定端口向下游发送Proposal和Agree字段都置1的Proposal BPDU报文,请求下游设备认可Device B为上游,依次将生成树展开。理论上,RSTP能够在网络拓扑发生变化的一瞬间恢复网络树型结构,完成快速收敛。
改进效果:主动阻塞非边缘指定端口,不必等待Forward Delay,加快收敛速度。网络连通性可以在交换两个握手BPDU的时间内恢复,握手导致的延时不超过1秒。
注意
以上的“握手”过程必须满足一个条件:端口间必须处于点对点(Point-to-Point)连接状态,否则端口之间无法进行握手,无法实现快速收敛。为了让支持RSTP的设备发挥应有的功效,建议设备间通过点对点方式连接。
点对点和非点对点连接范例
RSTP在整个交换网络只生成一棵生成树,不能解决网络规模增大带来的性能降低问题;因此在使用RSTP时,建议网络中任意两节点间的设备数量请勿超过7。
RSTP只能实现冗余备份,无法按照VLAN流量来进行负载均衡。
STP和RSTP以设备(节点)为基本单位计算生成树拓扑,不考虑VLAN的影响。在特定拓扑结构下,可能出现同一个VLAN中的端口被阻塞端口拦截而无法通信的情况,在MSTP小节详细描述此问题及解决方案。
MSTP(Multiple SpanningTree Protocol,多生成树协议),由IEEE制定的802.1s标准定义,它可以弥补STP、RSTP(整机生成一棵生成树)和PVST(Per-VLAN Spanning Tree,每个VLAN一棵生成树)的缺陷。
部署MSTP生成树协议后,如果网络中出现环路,MSTP生成树协议通过拓扑计算,可通过阻塞冗余链路,消除网络中可能存在的环路。
当前活动的路径发生故障时,激活冗余备份链路,恢复网络连通性。
MSTP可以快速收敛。
能使不同VLAN的流量沿各自的生成树转发,从而为冗余链路提供了更好的负载分担机制。
传统STP和RSTP协议具有如下两个问题,为了解决这两个问题产生了MSTP协议。
STP和RSTP生成树协议会阻塞掉冗余线路,将流量集中在活跃链路上,这就导致冗余链路的带宽被浪费,活跃链路流量压力大,流量不均衡。
如图1-9,假设每段链路的速率为1Gbps。若在Device A、B和C上运行STP协议,STP算法先根据Bridge ID选举A为根。非根桥B上依次比较<Root Path Cost,Bridge ID,Port ID>,根据到根路径开销,选举GigabitEthernet 0/1口为指定端口,C同理。C和B之间的直连网段上端口到根路径开销相同,则根据Bridge ID,选出B的GigabitEthernet 0/2为指定端口,阻塞C的GigabitEthernet 0/2。可见端口GigabitEthernet 0/2因为STP协议的阻塞无法通信,只能在C上配置GigabitEthernet 0/1许可VLAN 1~100;无法在C上配置GigabitEthernet 0/1许可VLAN 1~50,GigabitEthernet 0/2许可VLAN 51~100,实现流量分担。
特殊情况下,STP和RSTP协议可能会阻塞掉同一个VLAN之间的链路,导致同一VLAN内的接口无法通信。
如图1-10,Device A和Device B在VLAN 1内,DeviceC和Device D在VLAN 2内。假如STP协议计算的拓扑树如图,A上的FastEthernet 0/2被阻塞,则A和B间的链路处于阻塞状态;由于C和D不包含VLAN 1,无法转发VLAN 1的报文,导致A的VLAN 1无法与B的VLAN 1进行通讯。
在一台设备中,将由一个或多个VLAN组成的一个集合称为一个MSTI(Multiple Spanning Tree Instance,多生成树实例),简称Instance(实例)。若设备最多支持65个实例,则实例0默认存在且不可删除,实例1~64可自行创建或删除。用户按需分配1~4094个VLAN属于不同的实例,未分配的VLAN缺省属于实例0。MSTI和VLAN的对应关系叫实例映射,如表1-9所示。
Instance |
Vlans Mapped |
---|---|
0 |
1~2,4,11~4094 |
1 |
3,5~7 |
2 |
8~10 |
说明
建议先关闭MSTP功能再配置MSTI和VLAN实例映射,配置完成后再开启MSTP,以保证网络拓扑稳定收敛。
运行MSTP协议,具有相同域名、修正值和实例映射的设备组成一个MST Region(Multiple Spanning Tree Region,多生成树域)。域名、修正值和实例映射记录在MST BPDU报文的MST CFG ID(MST Configuration Identifier,MST配置标识)字段,可进行配置。
域名(Configuration Name):32字节长的字符串,用来标识MST Region。
修正值(Revision Number):2字节非负整数,用来标识MST Region。
实例映射:MSTI和VLAN的对应关系加密成16字节摘要,一个MST Region可包含多个MSTI。
多生成树域之间是相互独立的,若端口收到MST配置标识和本设备一致的MST BPDU,则认为对端设备和本设备属于同一个多生成树域,否则认为对端设备属于另外一个多生成树域。配置多设备于同一个多生成树域中,才能体现MSTP负载分担的优势;因此需合理划分MST Region,确保域内设备的MST配置标识相同。
每个实例可以生成一棵实例生成树。每个实例根据MST BPDU里的MST配置信息(MSTI Configuration Messages)计算产生实例生成树,MST配置信息包含的内容如表1-10所示。
若设备上只有一个实例或多个实例的MST配置信息相同,则生成相同的实例生成树,此时对于流量分担没有作用。若将VLAN分配到不同实例中形成多个VLAN组,并且为不同实例配置不同的桥优先级和端口优先级,则多个实例可以在域内生成多棵不同的实例生成树,起到VLAN流量分担的作用。每个实例的生成树不受其它实例生成树的影响。
注意
需要人为修改实例的“MST配置信息”,使得每个实例的生成树不同,即选出的根不同,指定端口不同,阻塞端口不同,活跃链路也不同,才能起到VLAN流量分担的作用。
MSTP每个实例的拓扑计算方式和RSTP相同。每个实例先通过比较Root ID选出根桥,根桥上的端口全部为指定端口;再在非根桥上依次比较优先级向量< Root ID,Root Path Cost,Bridge ID,Port ID >中的关键要素选出根端口;之后比较各直连网段的两个端口,优先高的为指定端口,优先级低的为替换端口。设备经MST BPDU交互和计算产生多个实例生成树,每个实例都为实例中的VLAN组提供了一条单一的、不含环路的网络拓扑,且不同VLAN组的拓扑互不相同。
如图1-9在运行MSTP多生成树协议后,算出拓扑如图1-11所示。
Instance 1中,各设备比较Root ID(此时等于本设备Bridge ID)选举A为根;比较到根路径开销选举B的GigabitEthernet 0/1口和C的GigabitEthernet 0/1口为根端口;在C和B之间的直连网段,因为C和B此时Root ID(0.MAC A)相同,根据B的Bridge ID小于C选举B的GigabitEthernet 0/2为指定端口,C的GigabitEthernet 0/2为替换端口;当C的GigabitEthernet 0/1口故障时,GigabitEthernet 0/2立即变为根端口。
Instance 2中,各设备比较Root ID(此时等于本设备Bridge ID)选举B为根;比较到根路径开销选举A的GigabitEthernet 0/2口和C的GigabitEthernet 0/2口为根端口。在A和C之间的直连网段,因为A和C此时Root ID(0.MAC B)相同,根据A的Bridge ID小于C选举A的GigabitEthernet 0/1为指定端口,C的GigabitEthernet 0/1为替换端口;当C的GigabitEthernet 0/2口故障时,GigabitEthernet 0/1立即变为根端口。
可见,Instance 1和Instance 2因Bridge ID配置不同计算出了不同的生成树,使得VLAN 1~50中的报文按Instance 1的实例生成树转发,VLAN 51~100的报文按Instance 2的实例生成树转发,实现了VLAN流量分担。
用户可根据实际需求,配置不同的实例对应不同VLAN组,基于实例配置桥和端口优先级,配置端口路径开销,给不同实例设计不同的生成树,规划VLAN组从不同的路径转发流量。
具有不同实例和VLAN映射配置的设备不在同一个多生成树域中,每个多生成树域是一个整体;可以将一个多生成树域看做一个节点,节点之间按STP协议计算出来的生成树叫CST(Common Spanning Tree,公共生成树)。不同多生成树域中可以同时存在编号相同的实例,例如两个域中都存在实例1;虽然实例编号相同,但是它们独立生成域内实例生成树,相互之间没有关联,和公共生成树也没有关联。如图1-10的拓扑,若配置两个多生成树域,在运行MSTP多生成树协议后,算出拓扑如图1-12所示。
Device A(Instance 1 VLAN 1)和B(Instance 1 VLAN 1)具有相同的实例映射,在MST Region 1内没有环路,因此没有端口被阻塞。
Device C(Instance 1 VLAN 2)和D(Instance 1 VLAN 2)具有相同的实例映射,在MST Region 2内没有环路,因此没有端口被阻塞。
MST Region 1和MST Region 2相当于两个节点,两节点间存在环路,因此根据配置阻断一条链路避免环路产生,并且保证同VLAN内的通讯不受影响。
如图1-13拓扑中存在3个MST Region。每个MST Region中的每个实例都会生成一棵实例生成树;如图1-14所示,Region 2内的实例0生成一棵实例0生成树,实例1生成一棵实例1生成树,实例2生成一棵实例2生成树;MSTP协议规定实例0生成树作为本域的代表,称为IST(Internal Spanning-tree,内部生成树)。
把每个MST Region看做一个节点,节点之间按STP协议计算出一棵生成树,称为CST(Common Spanning Tree,公共生成树)。如图1-13所示,蓝线为本域的内部生成树,橙线为域间的公共生成树。
IST和CST组成CIST(Common and Internal Spanning Tree,公共和内部生成树)。
总根:CIST的根叫总根,即CIST Root;它同时是CST的根,即CST Root。在计算公共生成树CST时,选举Bridge ID最小的设备作为总根。如图1-13中,假设Device A的Bridge ID最小,则A被选举为总根。
域根:IST中距离总根路径开销最小的设备被选举为IST的域根,即Region Root,也叫Master Bridge(主桥)。总根A同时也是Region1的域根Region Root。如图1-13中,假设在Region 2中,Device B到A的根路径开销最小,则B被选举为Region2内的域根。Device B不一定和A直接相连,B可以通过Region1内的其它设备连接到A。同理在Region 3中选举Device C为域根。
Region 2的域根是Device B,假设Region 2内的3个实例算出了3棵生成树,根都是Device B,Device B上距离总根路径开销最短的端口为Master端口。因此MSTP相比RSTP新增了2种端口角色,即Master口和域边缘端口。
注意
在MSTP报文中,有个字段为CIST Regional Root(公共和内部生成树域根),简称Region Root(域根),它不是CIST Root(总根)。
域根(CIST Regional Root)不一定是Region内Bridge ID最小的那台设备,它是该Region内到总根(CST Root)路径开销(Root Path Cost)最小的设备。
为了使拓扑更稳定,建议Region内不同实例生成树对总根的“出口”在该Region的同一台设备上。例如图1-14,Region 2 MSTI1、Region 2 MSTI2和Region 2 MSTI3对总根的“出口”都在Device B上。
MSTP协议在域根上引入了一个新的端口角色Master端口,Master端口为域内距离总根路径开销最短的端口。Master端口是域内所有实例对外的“出口”,所有实例都可通过Master端口转发数据。
Root Port(根端口):到根桥(Root Bridge)路径最短的端口。
Designated Port(指定端口):每个局域网通过该口连接到根桥。
Alternate Port(替换端口):替换端口作为根端口的备份;一旦根端口失效,替换端口立即转变为根端口。
Backup Port(备份端口):备份端口作为指定端口的备份;当一个网桥有两个端口连在一个局域网中时,高优先级的接口为指定端口,低优先级的接口为备份端口;一旦指定端口失效,备份端口立即变为指定端口。
Edge Port(边缘端口):和终端相连的端口,不参与生成树计算。
Disable Port(阻塞端口):状态为Down的端口被分配为此角色。
Master Port:Master端口是距离总根路径开销最短的端口,是MST Region域内所有MSTI对外的“出口”。
域边缘端口:和其它MST Region域直接相连的端口。Master端口是一种特殊的域边缘端口。
MSTP使用多生成树桥协议数据单元MST BPDU(Multiple Spanning Tree Bridge Protocol Data Unit)作为生成树计算的依据。MST BPDU报文可用来:计算生成树拓扑、维护网络拓扑,以及传达拓扑变化记录。
如图1-15所示,Length字段为0x0069,表示该示例中报文长度为105字节,包括3字节的LLC头部和102字节的MST BPDU报文,此为MST BPDU的最短长度。无论是域内还是域间MST BPDU,前36个字节和RST BPDU相同,从第37个字节开始是MSTP专有字段,末尾的MSTI配置信息字段由MSTI配置信息连缀组成。字段含义如表1-10所示。
字段 |
字节 |
含义 |
---|---|---|
PID |
2 |
Protocol Identifier,协议ID为0x0000 |
PVID |
1 |
Protocol Version Identifier,协议版本。0x03表示报文协议为MSTP |
BPDU Type |
1 |
BPDU报文类型。MSTP该字段为0x02 0x02表示BPDU类型为MST BPDU(Multiple Spanning-Tree BPDU) |
CIST Flags |
1 |
MSTP的配置BPDU报文使用全部8个bit。示例中,值为0x7c,即 0111 1100 Bit7:TCA,上游把配置BPDU报文中该位置1后发送,通知下游设备本设备已知拓扑变化,停止发送TCN BPDU Bit6:Agreement,1表示Agreemet,同意状态切换 Bit5:Forwarding,1表示Forwarding,进入转发状态 Bit4:Learning,1表示Learning,进入学习状态 Bit3和Bit2:表示端口角色 00:未知 01:根端口 10:Alternate/Backup 11:指定端口 Bit1:Proposal,置1表示发送Proposal,请求状态切换 Bit0:TC,根桥把配置BPDU报文中的该位置1后发送,通知下游设备删除MAC地址表项 |
CIST Root ID |
8 |
Common Instance Spanning Tree Root Identifier,CIST总根的桥ID,由2个字节根优先级和6字节根MAC地址组成 示例中优先级值为0x8000,表示32768;桥MAC地址为00-d0-f8-22-35-4a |
CIST External Path Cost |
4 |
CIST外部路径开销,指从本设备所属的MST Region到CIST总根的累计路径开销。CIST外部路径开销根据链路带宽计算,示例中为0x00 00 00 00 |
CIST Regional Root ID |
8 |
CIST Regional Root Identifier,CIST的域根ID,即IST Master的桥ID。如果总根在本域内,那么域根桥ID就是总根桥ID 示例中优先级值为0x8000,表示32768;桥MAC地址为00-d0-f8-22-35-4a |
CIST Port ID |
2 |
本端口在IST中的指定端口ID。示例中优先级值为0x80,表示128;端口号值为1c |
Message Age |
2 |
BPDU消息的年龄,报文已存活时间。示例中值为0x0000 |
Max Age |
2 |
BPDU报文的最大生存期,超时则认为到根交换设备的链路故障。示例中值为0x1400(低字节在前),表示20秒 |
Hello Time |
2 |
Hello定时器,发送两个相邻BPDU间的时间间隔。缺省为2秒。示例中值为0x0200(低字节在前),表示2秒 |
FWD Delay |
2 |
Forward Delay定时器,缺省为15秒。控制Listening和Learning状态的持续时间。示例中值为0x0f00(低字节在前),表示15秒 |
Ver 1 Length |
1 |
Version1 BPDU的长度,值固定为0x00 |
Ver 3 Length |
2 |
Version3 BPDU的长度。示例中值为0x0040 |
MST CFG ID |
51 |
MST Configuration Identifier,MST配置标识;MST域标签信息,包含4个字段;互联并且MST CFG ID中4个字段完全相同的设备属于同一个域 (1字节)Configuration Identifier Format Selector:固定为0x00 (32字节)Configuration Name:域名;32字节长字符串,缺省为全0 (2字节)Revision Level:修正值;2字节非负整数,值为0x0000 (16字节)Configuration Digest:MSTI-VLAN实例映射表;利用HMAC-MD5算法,将域中实例和VLAN的映射关系加密成16字节的摘要 |
CIST Internal RPC |
4 |
CIST Internal Root Path Cost,CIST内部路径开销指从本端口到IST Master交换设备的累计路径开销。CIST内部路径开销根据链路带宽计算。示例中值为0x 00-00-00-00 |
CIST Bridge ID |
8 |
CIST的指定交换设备ID,由2个字节桥优先级,加6字节桥MAC地址组成。示例中优先级值为0x8000,表示32768;桥MAC地址为00-d0-f8-22-35-4a |
CIST R Hops |
1 |
CIST Remaining Hops,BPDU报文在CIST中的剩余跳数。值为0x14,表示20跳(缺省值) |
MSTI Configuration Messages (may be absent) |
16 |
MSTI配置信息。每个MSTI的配置信息占16字节,如果有n个MSTI就占用n×16字节。单个MSTI Configuration Messages的字段说明如下: (1字节)MSTI Flags:MSTI标志 (8字节)MSTI Regional Root Identifier:MSTI域根ID (4字节)MSTI Internal Root Path Cost:MSTI内部路径开销指从本端口到MSTI域根交换设备的累计路径开销。MSTI内部路径开销根据链路带宽计算 (1字节)MSTI Bridge Priority:本设备在MSTI中的桥优先级 (1字节)MSTI Port Priority:本设备在MSTI中的端口优先级 (1字节)MSTI Remaining Hops:BPDU报文在MSTI中的剩余跳数 |
IEEE 802.1D:Standard for Local and Metropolitan Area Networks:Media Access Control (MAC) Bridges
IEEE 802.1w:IEEE Standard for Information Technology -Telecommunications and Information Exchange Between Systems - Local and Metropolitan Area Networks - Common Specifications - Part 3: Media Access Control (MAC) Bridges:Amendment 2:Rapid Reconfiguration
IEEE 802.1s:IEEE Standards for Local and Metropolitan Area Networks - Amendment to 802.1Q Virtual Bridged Local Area Networks:Amendment 3: Multiple Spanning Trees
MSTP功能只在二层以太网接口和二层聚合接口上生效。
可使用show interface switchport命令查看接口类型:若接口对应的Switchport字段为“enabled”,表示该接口为二层接口;若接口对应的Switchport字段为“disabled”,表示该接口为三层接口。
使用switchport命令可以将接口配置为二层接口。先使用no switchport mode命令恢复二层接口的模式为缺省值,再使用no switchport命令可以将二层接口配置为三层接口。当修改接口的二层/三层模式时,接口的所有属性恢复为该类型接口的缺省值。
STP基本配置任务如下:
配置生成树模式
(1)(可选)配置桥和端口优先级
(2)(可选)配置端口路径开销。请至少选择其中一项配置。
a、配置端口路径开销计算方法
b、配置端口路径开销指定值
(3)(可选)配置生成树时间参数
(4)开启生成树功能
RSTP基本配置任务如下:
(1)配置生成树模式
(2)(可选)配置桥和端口优先级
(3)(可选)配置端口路径开销。请至少选择其中一项配置。
a、配置端口路径开销计算方法
b、配置端口路径开销指定值
(4)(可选)配置生成树时间参数
(5)(可选)配置生成树快速收敛
(6)(可选)开启协议迁移
(7)开启生成树功能
MSTP基本配置任务如下:
(1)配置生成树模式
(2)配置多生成树域
(3)配置桥和端口优先级
(4)(可选)配置端口路径开销。请至少选择其中一项配置。
a、配置端口路径开销计算方法
b、配置端口路径开销指定值
(5)(可选)配置生成树时间参数
(6)(可选)配置BPDU最大跳数
(7)(可选)配置生成树快速收敛
(8)(可选)配置接口生成树兼容
(9)开启生成树功能
生成树高级功能配置任务如下。这些功能用来在组网应用中,根据网络的拓扑结构和应用特点,增加协议运行的稳定性、健壮性和抗功击性,满足协议在不同用户场景的应用需求。以下配置任务均为可选,当进行如下配置时,需要先完成配置,再开启生成树协议。
开启V-STP功能
配置端口保护
配置根保护
配置环路保护
配置BPDU源MAC检查
配置边缘端口
配置边缘端口自动识别
配置边缘端口属性
配置BPDU保护或拦截
配置BPDU保护
配置BPDU拦截
配置防TC攻击相关功能
配置TC保护
配置TC传播限制
配置TC过滤
当设备未开启STP/RSTP/MSTP协议时,若需要与之互连的设备之间生成树计算正常,则需配置BPDU透传功能来透传BPDU帧。
配置BPDU透传
按802.1相关协议标准,STP、RSTP和MSTP版本的生成树协议无须用户多做设置,版本间自会互相兼容。但考虑到可能存在厂家未按标准实现,导致兼容性问题,因此提供本功能配置生成树模式,以供用户在发现其它厂家的设备与本设备不兼容时,切换到低版本的生成树模式以实现兼容。
mstp表示Multiple spanning tree protocol(IEEE 802.1s)。
rstp表示Rapid spanning tree protocol(IEEE 802.1w)。
stp表示Spanning tree protocol(IEEE 802.1d)。
若将STP模式切换为RSTP模式,第一次拓扑变化的收敛时间为STP协议的收敛时间,第二次开始拓扑变化的收敛时间为RSTP协议的收敛时间。
进入特权模式。
enable
进入全局配置模式。
configure terminal
配置生成树模式。
spanning-tree mode { mstp | rstp | stp }
缺省情况下,生成树模式为MSTP。
通过配置多生成树域(MST Region)可以改变MST Region的设备成员,从而影响生成树拓扑。
若要让多台设备处于同一个MST Region中,则需为设备配置相同的域名、修正值和实例映射关系。
一个VLAN只能属于一个实例。缺省情况下,所有的VLAN都在实例0中。在MST配置模式下,可以通过instance instance-id vlan vlan-range命令将VLAN vlan-range移动到实例instance-id中。instance-id表示生成树实例编号,取值范围为0~64;vlan-range表示VLAN ID列表,取值范围为1~4094。
可以通过no instance instance-id或default instance instance-id命令,删除一个实例(非实例0)并将实例(非实例0)中的所有VLAN移到实例0中。instance-id不可为0,即取值范围为1~64。
可以通过no instance instance-id vlan vlan-range命令(携带参数vlan vlan-range)将实例(非实例0)中的VLAN移到实例0中。instance-id不可为0,即取值范围为1~64。若指定实例中存在多个VLAN,可以使用带参数的命令,将某些VLAN移到实例0中,某些VLAN保留在指定实例中;若将指定实例中的所有VLAN都移到实例0中,指定实例将被自动删除。
name表示MST配置名称,缺省为空字符串,最多可以有32个字节。
version表示MST Revision Number,缺省值为0,可配置范围为0~65535。
只有MSTP支持实例配置,若生成树模式不为MSTP,需先用spanning-tree mode mstp命令配置生成树模式为MSTP。
建议在生成树协议关闭的情况下配置实例和VLAN的对应关系,以保证网络拓扑的稳定和收敛。若STP已开启,用命令no spanning-tree关闭。实例和VLAN的对应关系配置完成后,再开启生成树协议。
创建VLAN。
进入特权模式。
enable
进入全局配置模式。
configure terminal
创建一组VLAN。
vlan { vlan-id | range vlan-range }
缺省情况下,只存在VLAN 1。
退回全局配置模式。
exit
配置实例和VLAN的对应关系。
进入MST配置模式。
spanning-tree mst configuration
创建一个实例并将VLAN从原实例中移到该实例中。
instance instance-id vlan vlan-range
缺省情况下,只存在实例0,所有VLAN都在实例0中。
(可选)配置多生成树域的域名。
name name
缺省情况下,多生成树域的域名为空字符串。
(可选)配置多生成树域的修正值。
revision version
缺省情况下,多生成树域的修正值为0。
桥优先级关系到根桥的选举,关系到整个网络的拓扑结构,当用户需要改变网络的根或网络拓扑结构时进行配置。
端口优先级关系到端口角色的选举,关系到进入转发状态的端口,在Region内形成环路时,优先选择高优先级的端口处于转发状态;优先级相同时,选择接口号较小的端口处于转发状态。当用户需要改变进入转发状态的端口时进行配置。
mst instance-id中,实例号的取值范围为0~64,缺省值为0。当生成树工作在STP/RSTP模式时,实例号只能为0。
桥优先级priority的取值有16个,均为4096的倍数,取值范围为0、4096、8192、12288、16384、20480、24576、28672、32768、36864、40960、45056、49152、53248、57344和61440,缺省值为32768。为了整网稳定,建议用户为核心设备配置较小的桥优先级。可以为不同实例分配不同的桥优先级,各个实例可根据配置运行独立的生成树协议。不同Region的设备仅关心实例0的优先级。
端口优先级port-priority的取值有16个,均为16的倍数,取值范围为0、16、32、48、64、80、96、112、128、144、160、176、192、208、224和240,缺省值为128。在同一个端口上可以为不同实例分配不同的端口优先级,各实例可据此生成独立的生成树。只有在指定端口修改端口优先级才起作用。
配置接口为二层接口。
进入特权模式。
enable
进入全局配置模式。
configure terminal
配置桥优先级。
spanning-tree [ mst instance-id ] priority priority
缺省情况下,桥优先级为32768。
进入接口配置模式。
进入二层以太网接口配置模式。
interface { ethernet-type interface-number | range ethernet-type interface-range }
进入二层聚合接口配置模式。
interface { aggregateport interface-number | range aggregateport interface-range }
配置端口优先级。
spanning-tree [ mst instance-id ] port-priority port-priority
缺省情况下,端口的优先级为128。
端口路径开销(Path Cost)关系到设备根端口的选举,设备选举到根桥路径开销(Root Path Cost)最小的接口为根端口,Root Path Cost为设备到根的路径上所有端口Path Cost之和。
端口路径开销还影响BPDU优先级,从而影响整网拓扑结构。当设备之间进行BPDU优先级比较时,若Root ID和Bridge ID相同,则比较Root Path Cost。
用户可通过配置端口路径开销,决定报文优先经过的端口或路径。
配置任务如下:
配置端口路径开销计算方法
配置端口路径开销指定值
缺省情况下,设备根据物理接口速率,按照规范中的计算方法(如表1-11),自动计算端口路径开销;速率高的链路开销小,速率低的链路开销大,此计算方式可计算出最优生成树拓扑。
在整个网络内端口路径开销标准必须统一,因此在必要时用户可以修改设备自动计算端口路径开销的方法。
IEEE 802.1d Short:端口路径开销范围为1~65535,聚合口Cost=物理口Cost x 95%。
IEEE 802.1t Long:端口路径开销范围为1~200000000,聚合口Cost=物理口Cost x 95%。
IEEE 802.1t Long Standard:端口路径开销范围是1~200000000,聚合口的Cost=物理口Cost÷Linkupcnt。此时聚合口的Cost值会随着成员口数量的变化而变化,从而导致网络拓扑发生变化。聚合口和LACP(Link Aggregation Control Protocol,链路聚合控制协议)的配置请参见“接口配置指南”中的“链路聚合口”。
当聚合口为静态聚合口时,Linkupcnt为处于Link Up状态的成员口个数;
当聚合口为LACP聚合口时,Linkupcnt为参与聚合口数据转发的成员口个数;
当聚合口内无任何成员口处于Link Up状态或进行数据转发时,Linkupcnt为1。
端口速率 |
端口 |
IEEE 802.1d Short |
IEEE 802.1t Long |
IEEE 802.1t Long Standard |
---|---|---|---|---|
10M |
普通口 |
100 |
2000000 |
2000000 |
聚合口 |
95 |
1900000 |
2000000÷Linkupcnt |
|
100M |
普通口 |
19 |
200000 |
200000 |
聚合口 |
18 |
190000 |
200000÷Linkupcnt |
|
1000M |
普通口 |
4 |
20000 |
20000 |
聚合口 |
3 |
19000 |
20000÷Linkupcnt |
|
10000M |
普通口 |
2 |
2000 |
2000 |
聚合口 |
1 |
1900 |
20000÷Linkupcnt |
进入特权模式。
enable
进入全局配置模式。
configure terminal
配置端口路径开销计算方法。
spanning-tree pathcost method { long | long standard | short }
缺省情况下,端口路径开销计算方法为long。
当用户需要忽略物理接口速率的影响,严格控制生成树计算结果时,可配置端口路径开销为指定值。配置后,设备不再根据物理接口速率计算端口路径开销。
在MSTP的应用中,可以在一个接口上针对不同实例配置不同路径开销,以便各实例据此生成不同的实例生成树,起到负载分担的作用。
mst instance-id:实例编号,取值范围为0~64,缺省值为0。
cost cost:路径开销值,取值范围为1~200000000,cost值越大表明路径开销越大。
配置接口为二层接口。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入接口配置模式。
进入二层以太网接口配置模式。
interface { ethernet-type interface-number | range ethernet-type interface-range }
进入二层聚合接口配置模式。
interface { aggregateport interface-number | range aggregateport interface-range }
配置端口路径开销指定值。
spanning-tree [ mst instance-id ] cost cost
缺省情况下,端口路径开销根据接口链路速率自动计算。
生成树协议中的定时器影响生成树选举和恢复的性能。
可使用spanning-tree命令配置如下时间参数。每条配置命令中只能携带一个参数。
端口状态改变的时间间隔(Forward Time)
发送BPDU的周期(Hello Time)
BPDU报文失效年龄(Max Age)
每秒发送BPDU报文的个数(Tx Hold Count)
生成树超时因子(Factor)
forward-time forward:端口状态改变的时间间隔。当运行STP协议,或者RSTP协议以兼容STP协议模式运行时,端口从Listening转变向Learning,或者从Learning转向Forwarding状态的时间间隔。表示端口状态改变的时间延迟,取值范围为4~30秒,缺省值为15秒。如果Forward Delay过小,可能产生临时环路;如果Forward Delay过大,可能导致网络恢复时间过长。
hello-time hello:表示设备定时发送BPDU报文的时间间隔,取值范围为1~10秒,缺省值为2秒。Hello Time过小可能增加设备和网络的资源消耗;过大可能导致下游设备误以为上游链路故障,特别是偶尔丢包的时候。
max-age age:表示BPDU报文消息生存的最长时间,当超出本时间,报文消息将被丢弃。取值范围为6-40秒,缺省值为20秒。Max Age过小,可能导致误将链路拥塞判断为链路故障,生成树计算过于频繁;过大,可能导致链路故障时不能及时发现,自恢复能力差。
每台运行STP或RSTP协议的设备都是单独的一个Region,不与任何其它设备组成同一个Region。MSTP虽然使用Hop Count机制表示BPDU的生命周期,但是为了和Region外的STP、RSTP兼容,依然保留Message Age和Max Age的机制。
forward-time、hello-time、max-age三个值的范围是相关的,修改了其中一个会影响到其它两个的值范围。制约关系为:2×(Hello Time+1秒)≤Max Age≤2×(Forward Delay�C1秒),配置的参数必须满足此条件,否则可能导致拓扑不稳定。另外,这三个参数,需要和网络规模相匹配,网络直径越大,参数越大。建议采用协议自动计算,避免手动配置。
tx-hold-count count:表示配置每秒最多发送BPDU的个数,取值范围为1~10个,缺省值为3。
timer-factor factor:配置协议收包超时的超时因子。超时时间=超时因子factor×Hello Time。如果设备在超时时间内没有收到上游设备发送的BPDU,则生成树会重新进行计算,取值范围为1~30,缺省值为20。
进入特权模式。
enable
进入全局配置模式。
configure terminal
配置生成树端口状态改变的时间间隔。
spanning-tree forward-time forward
缺省情况下,端口状态改变的时间间隔为15秒。
配置生成树端口发送BPDU报文的时间间隔。
spanning-tree hello-time hello
缺省情况下,发送BPDU的周期为2秒。
配置生成树端口每秒最多发送BPDU的个数。
spanning-tree tx-hold-count count
缺省情况下,每秒发送BPDU报文的个数为3。
配置生成树BPDU报文消息生存的最长时间,也是超时时间。
spanning-tree max-age age
缺省情况下,BPDU报文失效年龄为20秒。
配置生成树超时因子。
spanning-tree timer-factor factor
缺省情况下,生成树超时因子为20。
多生成树域不使用Message Age和Max Age来计算BPDU是否超时,而是使用最大跳数(Maximum-Hop Count)来进行计算。最大跳数机制类似于IP报文TTL。BPDU最大跳数会影响BPDU的生命期,从而影响网络拓扑。
在多生成树域内,从域根开始每经过一个设备BPDU跳数减1,直到剩余跳数为0表示该BPDU信息超时,设备收到跳数为0的BPDU则丢弃。
BPDU最大跳数缺省值为20;网络规模小于20跳时无需修改;网络拓扑规模超过20跳则建议修改以匹配实际网络情况。改变最大跳数将影响到所有实例。
hop-count:BPDU在被丢弃之前可以经过设备的次数,取值范围为1~40,缺省值为20。
进入特权模式。
enable
进入全局配置模式。
configure terminal
配置BPDU最大跳数。
spanning-tree max-hops hop-count
缺省情况下,BPDU最大跳数为20。
在全双工点到点链路上,支持RSTP协议的接口在完成端口角色选举后会先进入Discarding(废弃)状态,再通过与相连网桥进行一次Proposal和Agree握手,快速进入Forwarding(转发)状态。
只有连接状态为Point-to-Point(点到点)的端口支持快速收敛,连接状态为Shared(非点到点)的端口不支持快速收敛。请参见1.1.4 5. RSTP快速收敛。
当用户不配置该值时,设备会根据接口双工状态来自动设置接口连接类型。接口类型为全双工时该接口的连接类型为Point-to-Point(点到点);接口类型为半双工时该接口的连接类型为Shared(非点到点)。
可以强制配置接口连接状态,参数point-to-point强制配置接口的连接类型为Point-to-Point;参数shared强制配置接口的连接类型为Shared。
可使用show spanning-tree [ mst instance-id ] { port-index | interface interface-type interface-number [ link-type ] }命令查看配置结果。
配置接口为二层接口。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入接口配置模式。
进入二层以太网接口配置模式。
interface { ethernet-type interface-number | range ethernet-type interface-range }
进入二层聚合接口配置模式。
interface { aggregateport interface-number | range aggregateport interface-range }
配置生成树快速收敛。
spanning-tree link-type { point-to-point | shared }
缺省情况下,全双工接口连接类型为Point-to-Point;半双工接口连接类型为Shared。
运行STP协议的设备若收到RST BPDU或MST BPDU,则会将其忽略与丢弃,这导致运行STP协议的设备和其它运行RSTP或MSTP协议的设备不兼容。
但是运行RSTP或MSTP的设备可以识别并处理来自其它设备的STP协议报文;RSTP和MSTP会根据收到的BPDU版本号,自动判断与之相连的网桥支持的协议类型;若判断对端支持STP协议,则按STP的状态迁移机制,在端口角色选举完成后,等待2倍Forwad Delay(30秒)再进入转发状态。
RSTP协议会处理MST BPDU的CIST部分,所以MSTP不必专门发RST BPDU来兼容RSTP。
每台运行STP或RSTP协议的设备都是一个单独的Region,不与其它任何设备在同一个Region内。
RSTP和STP混用可能遇到如图1-16所示问题:Device A支持RSTP协议,Device B只支持STP协议,两台设备互相连接;Device A判断对端设备仅支持STP,则发送STP的BPDU报文来兼容对端设备;若将Device B更换为支持RSTP协议的Device C,Device A仍运行STP协议并向对端发送STP的BPDU报文,则Device C会误判Device A只支持STP生成树协议;最终两台设备均运行在STP协议上,生成树收敛速度显著降低。因此,产生了协议迁移(Protocol-migration)功能。
在Device C开启协议迁移功能会清除原协议,强制Device C发送RST BPDU,Device A发现与之互连的网桥支持RSTP便切换为RSTP模式,之后两台设备都以RSTP协议运行。
用户发现对端设备可支持RSTP协议时,可开启此功能,强制本设备发送RST BPDU以实现本端和对端设备的协议迁移。
进入特权模式。
enable
清除原协议,强制设备迁移到RSTP协议。
clear spanning-tree detected-protocols [ interface interface-type interface-number ]
开启接口生成树兼容功能后,生成树协议会根据接口所属VLAN以及VLAN和实例的映射关系,计算出接口是否参与指定实例的计算;在该接口发送BPDU时,只携带参与计算之实例的MST配置信息(即MSTI Configuration Messages),以兼容其它设备。
例如,设备上存在实例0(缺省存在)、实例1和实例2,GigabitEthernet 0/1只属于VLAN 10,VLAN 10属于实例1;若在GigabitEthernet 0/1上开启接口生成树兼容模式,GigabitEthernet 0/1发送的BPDU只携带实例0(默认参与计算)和实例1的信息,不携带实例2的信息。
配置接口为二层接口。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入接口配置模式。
进入二层以太网接口配置模式。
interface { ethernet-type interface-number | range ethernet-type interface-range }
进入二层聚合接口配置模式。
interface { aggregateport interface-number | range aggregateport interface-range }
配置接口生成树兼容功能。
spanning-tree compatible enable
缺省情况下,接口生成树兼容功能处于关闭状态。
若无特殊要求,应在每台设备上启动生成树协议。
生成树协议与数据中心的TRILL协议功能互斥。
进入特权模式。
enable
进入全局配置模式。
configure terminal
开启生成树功能。
spanning-tree
缺省情况下,生成树功能处于关闭状态。
M-LAG(M-LAG,Multichassis Link Aggregation Group)是一种跨设备链路聚合的虚拟化技术。M-LAG系统由两台独立设备组成,任何支持链路聚合的接入设备都可通过聚合端口接入该系统,将两台设备虚拟为一台逻辑设备,从而将可靠性从链路级提升到了设备级。M-LAG仅实现二层虚拟化,两台设备仍然是独立设备,设备可独立升级且不影响另外一台设备的正常工作。
V-STP不是一种协议,而是一种将多台M-LAG设备虚拟化成一个网桥,参与生成树计算的技术,不影响原本STP、RSTP、MSTP协议本身的实现。协议报文、接口状态等取决于生成树工作模式STP、RSTP或MSTP。
V-STP专门应用于M-LAG场景中,可满足单级和多级M-LAG场景下的二层防环需求。使用spanning-tree v-stp enable命令开启V-STP(Virtual-Spanning Tree Protocol,虚拟化生成树)功能。
M-LAG的基本拓扑如图1-17所示。
域编号
域编号(Domain ID)是M-LAG系统的唯一标识符,用来区分不同的M-LAG。M-LAG中的两台设备首先通过互相同步和比较域编号来完成配对,若两台设备的域编号相同,则组成一个M-LAG系统。
VAP(Virtual Aggregation Port,虚拟聚合接口)
Device A和Device B与同一接入设备Device C连接的一对聚合接口组成一对虚拟AP组,也称为VAP成员口,用于接入设备双归接入。只有二层聚合接口可以加入虚拟AP组;不同接入设备接入不同的虚拟组。对于Device C而言,Device A和Device B逻辑上为同一台设备。
Peer Link链路
Device A和Device B之间的链路称为Peer Link链路,用于同步数据及传输部分流量。Peer Link链路两端直连的接口称为Peer Link接口,Peer Link接口必须配置为聚合接口。为增强M-LAG设备间数据传输的可靠性,使用TCP传输设备间的同步数据,因此需要在Peer Link链路上配置SVI口,并配置M-LAG主从设备间三层可达。
主设备和备设备
M-LAG系统中的设备通过识别域编号配对成功后,通过同步及比较M-LAG优先级、设备MAC地址,协商产生主设备和备设备。优先选择M-LAG优先级高的设备作为主设备;若M-LAG优先级一致,则选择MAC地址小的设备作为主设备。
若M-LAG主备设备都开启V-STP功能,则主备设备会虚拟成一台网桥,参与M-LAG域外互联设备的生成树计算,从而达到生成树虚拟化的目的,阻断场景中存在的二层环路。
V-STP功能可在STP、RSTP和MSTP模式下开启。为了使V-STP功能正常生效,需满足如下前提条件:
在开启M-LAG功能的网桥设备上开启生成树功能和V-STP功能。
M-LAG成员设备间能成功建立连接;详细配置要求请参见“可靠性配置指南”中的“M-LAG”。
M-LAG成员设备的生成树配置需相同,即MST配置信息、桥优先级、VAP组的端口优先级和端口路径开销需相同,否则V-STP功能无法正常生效。
开启V-STP功能的M-LAG主备设备作为一台虚拟网桥对外发送一致的BPDU报文,称为V-STP BPDU。此报文和普通BPDU报文一样,包含优先级向量< Root ID,Root Path Cost,Bridge ID,Port ID >,M-LAG域外互联设备通过依次比较向量中优先级要素的大小,确定V-STP BPDU的优先级。
M-LAG主备设备具有相同的桥优先级;例如图1-17中,Device A和B的桥优先级需相同且高于Device C。当M-LAG设备成功建立连接并完成主备协商后,系统从M-LAG主备设备中选择较小的MAC地址作为虚拟网桥MAC地址,结合桥优先级生成Bridge ID,对外参与生成树计算。
VAP组的端口优先级相同(可采用缺省值),系统选择较小的端口编号用来生成Port ID。
VAP组的端口路径开销相同(可采用缺省值),因此主备设备上计算出的到根路径开销(Root Path Cost)相同。
主备设备分别计算生成树,之后将本设备算出的生成树结果周期性地同步给对端M-LAG成员设备,最后通过比较本设备和对端M-LAG成员的生成树计算结果,选择路径开销较小的设备作为转发路径,阻塞掉冗余链路。
在全局配置模式下使用spanning-tree v-stp enable命令开启V-STP功能;使用no spanning-tree v-stp enable命令关闭V-STP功能。
进入特权模式。
enable
进入全局配置模式。
configure terminal
开启V-STP功能。
spanning-tree v-stp enable
缺省情况下,V-STP功能处于关闭状态。
根桥可能因为错误配置或网络中非法报文的恶意攻击收到优先级更高的配置BPDU,从而失去当前根桥的角色,引起网络拓扑错误的变动。为防止此情况发生,可在根桥的指定端口上配置根保护(Root Guard)功能。
非根桥上的根端口、Master端口和替换端口若周期性收到上游网桥发送的高优先级BPDU,则保持生成树拓扑不变;若接收不到上游网桥发送的高优先级BPDU,则判断上游发生了故障,将本设备作为根并且将设备上的所有端口转变为指定端口,从而引起环路。为防止此情况发生,可在上述端口上配置环路保护(Loop Guard)功能,提高设备的稳定性。
一台设备不可能同时是根桥和非根桥,因此端口的根保护功能和环路保护功能在同一时刻同一台设备上只能有一个生效。
端口保护配置任务如下,以下配置任务互斥,请选择其中一项进行配置:
配置根保护
配置环路保护
在网络设计中,常常将根桥和备份根桥划分在同一个域内,由于错误配置或恶意攻击,根桥的指定端口(Designated Port)有可能收到优先级更高的配置BPDU,从而失去当前根桥的位置,引起网络拓扑错误的变动。为防止此种情况发送,可在根桥的指定端口上配置根保护(Root Guard)功能。
开启根保护功能后,设备接口在所有实例上均为指定端口;端口若收到高优先级BPDU,则因根不一致(Root-Inconsistent)而进入阻塞状态;端口若在足够长的时间内没有收到高优先级BPDU,则恢复正常状态。
当端口因根保护而处于阻塞状态时,可使用两种方法手动将端口恢复为正常状态:
使用no spanning-tree guard root命令关闭接口的根保护功能。
使用spanning-tree guard none命令关闭接口的保护功能。
注意
当在非指定端口上配置根保护功能时,本功能会强制非指定端口为指定端口,按网络设计此端口必然会收到高优先级BPDU,端口将因根不一致而进入阻塞状态。因此,在非指定端口上配置根保护功能会导致设备无法正常通信。
若端口在实例上收到更高优先级的BPDU,则在该实例中进入阻塞状态;若端口在实例0上收到更高优先级的BPDU,则端口在所有实例中进入阻塞状态。
在二层以太网接口配置模式或二层聚合接口配置模式下使用spanning-tree guard root命令开启本接口的根保护功能;使用no spanning-tree guard root命令关闭本接口的根保护功能。
当端口因根保护而处于阻塞状态时,可以在二层以太网接口配置模式或二层聚合接口配置模式下使用spanning-tree guard none命令关闭根保护功能,让端口恢复正常状态。
配置接口为二层接口。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入接口配置模式。
进入二层以太网接口配置模式。
interface { ethernet-type interface-number | range ethernet-type interface-range }
进入二层聚合接口配置模式。
interface { aggregateport interface-number | range aggregateport interface-range }
开启根保护功能。
spanning-tree guard root
缺省情况下,接口的根保护功能处于关闭状态。
非根桥的根端口(Root Port)或替换端口(Alternate Port)可能因为单向链路故障收不到BPDU,从而变成指定端口并进入转发状态,导致网络中产生环路。为防止此种情况,可在非根桥上配置环路保护(Loop Guard)功能。
若开启环路保护功能,当根端口或替换端口因收不到BPDU迁移为指定端口时,端口状态将一直保持Discarding(废弃)状态,直到重新收到BPDU进行生成树计算。
注意
若MSTP进程重启前,端口已进入环路保护阻塞状态;当MSTP进程重启后,如果端口仍然接收不到BPDU,则端口将转变成指定端口并进入转发状态,导致网络中产生环路。因此,建议在重启MSTP进程前,检查端口进入环路保护阻塞状态的原因并及时解决,避免进程重启后,生成树拓扑仍然出现异常。
可以在全局配置模式下或接口配置模式下开启环路保护功能。请选择其中一项进行配置。
在全局配置模式下,使用spanning-tree loopguard default命令开启所有二层以太网接口和二层聚合接口的环路保护功能;使用no spanning-tree loopguard default命令关闭所有二层以太网接口和二层聚合接口的环路保护功能。
在二层以太网接口配置模式或二层聚合接口配置模式下,使用spanning-tree guard loop命令开启本接口的环路保护功能;使用no spanning-tree guard loop命令关闭本接口的环路保护功能。
配置接口为二层接口。
进入特权模式。
enable
进入全局配置模式。
configure terminal
开启所有二层以太网接口和二层聚合接口的环路保护功能。
spanning-tree loopguard default
缺省情况下,接口的环路保护功能处于关闭状态。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入接口配置模式。
进入二层以太网接口配置模式。
interface { ethernet-type interface-number | range ethernet-type interface-range }
进入二层聚合接口配置模式。
interface { aggregateport interface-number | range aggregateport interface-range }
开启本接口的环路保护功能。
spanning-tree guard loop
缺省情况下,接口的环路保护功能处于关闭状态。
为防止BPDU攻击,可以开启BPDU源MAC检查功能。开启BPDU源MAC检查后,设备只接受源MAC地址为指定MAC的BPDU帧,过滤掉其它接收的BPDU帧。
若对端设备与本设备处于点对点连接状态,且可以确定对端设备的MAC地址,则可配置BPDU源MAC地址检查功能。本功能开启后,设备只接收源MAC地址匹配的BPDU帧,丢弃所有其它BPDU帧;因此,当设备受到BPDU报文攻击时,非法BPDU报文可以被识别出来并丢弃,从而防止攻击导致设备的MSTP功能异常。
BPDU的以太网长度字段超过1500时,该BPDU帧将被丢弃,以防止收到非法BPDU报文。
在二层以太网接口配置模式或二层聚合接口配置模式下,使用bpdu src-mac-check mac-address命令开启接口的BPDU源MAC检查功能;使用no bpdu src-mac-check命令关闭接口的BPDU源MAC检查功能。
mac-address表示只接收源MAC地址为该地址的BPDU帧。一个接口只允许配置一个过滤MAC地址。
若配置BPDU源MAC检查的地址有错,可能导致丢弃正常的BPDU帧。
配置接口为二层接口。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入接口配置模式。
进入二层以太网接口配置模式。
interface { ethernet-type interface-number | range ethernet-type interface-range }
进入二层聚合接口配置模式。
interface { aggregateport interface-number | range aggregateport interface-range }
开启BPDU源MAC检查,只接收源MAC地址mac-address的BPDU报文。
bpdu src-mac-check mac-address
缺省情况下,接口的BPDU源MAC检查功能处于关闭状态。
生成树角色选举完成后,指定端口需等待2倍Forward Delay(2*15=30秒)才能进入Forwarding(转发)状态。可通过自动识别或手工配置将指定端口转变为边缘端口。边缘端口不必等待2倍Forward Delay,可以快速进入转发状态;边缘端口若收到BPDU,其快速转发状态将变为Disabled,恢复为非边缘端口加入正常生成树计算。
边缘端口自动识别
若在指定端口上开启边缘端口自动识别(Autoedge)功能,当该端口在一定时间范围内(3秒)收不到下游发送的BPDU时,则判断与本端口相连的是一台网络终端;指定端口转变为边缘端口并快速进入转发状态。
手工配置边缘端口
若确定指定端口直连着网络终端,可不必依赖边缘端口自动识别,直接手工配置边缘端口(即Port Fast)。手工配置的边缘端口无需等待2倍Forward Delay,快速进入转发状态。
当边缘端口自动识别功能与手工配置产生的边缘端口冲突时,以手工配置为准。
一般情况下请勿关闭边缘端口自动识别功能。
可使用show spanning-tree [ mst instance-id ] { port-index | interface interface-type interface-number [ portfast ] }命令查看配置结果。
配置任务如下:
配置边缘端口自动识别
配置边缘端口属性
生成树角色选举完成后,指定端口需等待2倍Forward Delay(2*15=30秒)才能进入Forwarding(转发)状态。若在指定端口上开启了边缘端口自动识别(Autoedge)功能,当该端口在一定的时间范围内(3秒)收不到下游发送的BPDU时,则判断与本端口相连的是一台网络终端;指定端口转变为边缘端口并直接进入Forwarding(转发)状态。边缘端口若收到BPDU,其快速转发状态将变为Disabled,恢复为非边缘端口加入正常生成树计算。
注意
STP协议不支持该功能。
本功能只适用于指定端口,并且只在指定端口与下游端口进行快速协商的过程中生效,此时端口未进入Forwarding(转发)状态。如果指定端口已经处于Forwarding(转发)状态,边缘端口自动识别功能不生效;例如先在端口上开启了BPDU拦截功能,该端口已跳转至Forwarding状态,边缘端口自动识别功能不生效;只有待指定端口重新进行快速协商时(例如拔插网线),边缘端口自动识别功能才生效。
使用spanning-tree autoedge disabled命令可关闭边缘端口自动识别功能。
配置接口为二层接口。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入接口配置模式。
进入二层以太网接口配置模式。
interface { ethernet-type interface-number | range ethernet-type interface-range }
进入二层聚合接口配置模式。
interface { aggregateport interface-number | range aggregateport interface-range }
配置边缘端口自动识别功能。
spanning-tree autoedge [ disabled ]
缺省情况下,边缘端口自动识别功能处于开启状态。
生成树角色选举完成后,指定端口需等待2倍Forward Delay(2*15=30秒)才能进入Forwarding(转发)状态。缺省情况下,指定端口上的边缘端口自动识别功能处于开启状态,该端口在一定的时间范围内(3秒)收不到下游发送的BPDU则被自动识别为边缘端口。如果网络状况不佳,丢包或收发报文延迟问题可能导致指定端口超时未收到BPDU,设备误判该指定端口连接到网络终端,将该端口自动识别为边缘端口。在此种网络状况下,建议关闭边缘端口自动识别功能,根据网络规划信息手工配置连接终端的接口为边缘端口。当确定指定端口直连着网络终端时,也可不必依赖边缘端口自动识别,直接手工配置边缘端口(即Port Fast)属性。手工配置的边缘端口无需等待2倍Forward Delay,直接进入转发状态。边缘端口若收到BPDU,其快速转发状态将变为Disabled,恢复为非边缘端口加入正常生成树计算。
边缘端口的位置
只有二层以太网接口和二层聚合接口可以被配置为边缘端口。
可以在全局配置模式下,使用spanning-tree portfast default命令配置所有二层以太网接口和二层聚合接口为边缘端口,使用no spanning-tree portfast default命令恢复所有二层以太网接口和二层聚合接口为非边缘端口。
可以在二层以太网接口配置模式或二层聚合接口配置模式下,使用spanning-tree portfast命令配置本接口为边缘端口,使用spanning-tree portfast disabled命令恢复本接口为非边缘端口。
配置接口为二层接口。
进入特权模式。
enable
进入全局配置模式。
configure terminal
配置所有二层以太网接口和二层聚合接口为边缘端口。
spanning-tree portfast default
缺省情况下,接口为非边缘端口。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入接口配置模式。
进入二层以太网接口配置模式。
interface { ethernet-type interface-number | range ethernet-type interface-range }
进入二层聚合接口配置模式。
interface { aggregateport interface-number | range aggregateport interface-range }
配置本接口为边缘端口。
spanning-tree portfast
缺省情况下,接口为非边缘端口。
如果设备接口直连着网络终端,为了防止非法接入、BPDU攻击或下联出现环路,可以在接口上配置BPDU保护(BPDU Guard)或BPDU拦截(BPDU Filter)功能。BPDU保护和拦截功能可以全局开启并只对边缘端口生效;也可以针对特定接口开启和生效。
BPDU拦截功能的优先级高于BPDU保护功能,若接口上同时配置了BPDU拦截和BPDU保护功能,只有BPDU拦截功能生效。
可使用show spanning-tree [ mst instance-id ] { port-index | interface interface-type interface-number [ bpdufilter | bpduguard ] }命令查看配置结果。
配置任务如下:
配置BPDU保护
配置BPDU拦截
正常情况下边缘端口不应该收到BPDU,但若边缘端口遭到伪造BPDU报文的攻击,或网络中非法增加了网络设备,则边缘端口会收到BPDU,并转变为非边缘端口参与生成树计算,从而引起网络震荡。
BPDU保护(BPDU Guard)功能可用来防止BPDU报文攻击和非法接入。若本功能开启,端口收到BPDU时则会进入Error Disabled(端口违例)状态,表示端口异常。之后设备关闭该端口,只能通过端口违例恢复功能将其恢复为正常状态。
BPDU保护功能既能全局开启,也能针对特定接口开启。全局BPDU保护功能仅在边缘端口上生效。接口BPDU保护功能直接在接口上生效,无论该接口是否为边缘端口。
在全局配置命令中no参数用于关闭全局BPDU保护功能。
在接口配置命令中disabled参数用于关闭接口BPDU保护功能。
处于违例状态的端口可通过自动或手动方式恢复。errdisable recovery [ interval seconds ]命令用来配置自动恢复的间隔时间,取值范围为30~86400,单位为秒,缺省情况下端口违例恢复功能处于关闭状态,也不存在恢复时间间隔。手动恢复即执行一次errdisable recovery命令恢复。详细请参见“接口配置指南”中的“以太网接口”。
配置接口为二层接口。
进入特权模式。
enable
进入全局配置模式。
configure terminal
开启全局BPDU保护功能,仅在边缘端口上生效。
spanning-tree portfast bpduguard default
缺省情况下,全局BPDU保护功能处于关闭状态。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入接口配置模式。
进入二层以太网接口配置模式。
interface { ethernet-type interface-number | range ethernet-type interface-range }
进入二层聚合接口配置模式。
interface { aggregateport interface-number | range aggregateport interface-range }
开启接口BPDU保护功能。
spanning-tree bpduguard enabled
缺省情况下,接口BPDU保护功能处于关闭状态。
BPDU拦截(BPDU Filter)是防止BPDU攻击的一种方式。当本功能开启后,端口会既不发送也不接收BPDU,直接进入Forwarding(转发)状态。若端口收到BPDU,其快速转发状态将变为Disabled,且BPDU拦截功能自动失效,端口参与生成树计算。
BPDU拦截功能既能全局开启,也能针对特定接口开启。全局BPDU拦截功能仅在边缘端口上生效。接口BPDU拦截功能在接口上直接生效,无论该接口是否为边缘端口。
在全局配置命令中no参数用于关闭全局BPDU拦截功能。
在接口配置命令中enabled参数用于开启接口BPDU拦截功能,disabled参数用于关闭接口BPDU拦截功能。
配置接口为二层接口。
进入特权模式。
enable
进入全局配置模式。
configure terminal
开启全局BPDU拦截功能,仅在边缘端口上生效。
spanning-tree portfast bpdufilter default
缺省情况下,全局BPDU拦截功能处于关闭状态。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入接口配置模式。
进入二层以太网接口配置模式。
interface { ethernet-type interface-number | range ethernet-type interface-range }
进入二层聚合接口配置模式。
interface { aggregateport interface-number | range aggregateport interface-range }
开启接口BPDU拦截功能。
spanning-tree bpdufilter enabled
缺省情况下,接口BPDU拦截功能处于关闭状态。
当端口转发状态发生变化时(例如从Blocking到Forwarding的转变),端口会产生并发送TC报文(即TCN BPDU,参见表1-4),用来通知上游设备生成树发生了变化。端口收到TCN BPDU报文后,会复制并且向上游转发,直至根桥,这种现象称为TC扩散。设备收到TC报文后会删除学习到的动态MAC地址和ARP信息,三层设备还会重启快转模块,改变ARP表项的端口状态。
若设备遭遇伪造TC报文攻击,则会频繁进行删除操作导致过多占用设备资源,使设备负荷过重。TC报文攻击扩散到整个网络后,会对全网的设备性能造成影响,影响网络稳定。为了解决此问题,产生了TC保护、TC传播限制和TC过滤功能。
在开启相应功能时,收到TC报文后的一定时间内(一般为4秒),只进行一次删除操作,同时监控该时间段内是否收到TC报文。如果在该时间段内收到了TC报文,则设备在间隔时间超时后再进行一次删除操作,避免频繁的删除MAC地址表项和ARP表项。
TC保护功能虽可以减少删除动态MAC地址和ARP的频率,但在遇到TC报文攻击时还是会产生很多删除操作影响设备正常工作,并且TC报文仍然在网络中扩散从而影响整个网络,因此产生了TC传播限制功能。
若端口开启TC传播限制功能,本端口产生和本端口收到的来自其它端口的TC报文,均不会被转发扩散到本设备其它参与生成树计算的端口上。因此,TC传播限制功能可有效控制网络中可能存在的TC攻击,保持网络的稳定;尤其是在三层设备上,该功能可有效避免接入层设备振荡引起核心路由中断的问题。
TC传播限制功能会阻止所有TC报文扩散,当发生拓扑变化时正常的TC报文也无法扩散,导致网络中的设备无法感知拓扑变化,不能及时清除相应端口的MAC地址和ARP表项,导致转发数据出错,因此产生了TC过滤功能。
TC过滤是指对于端口收到的来自其它端口的TC报文不处理;对于本端口正常拓扑变化产生的TC报文进行处理。
本功能解决了未配置Port Fast的端口频繁切换Up/Down状态引起的清地址问题和核心路由中断的问题,又能保证发生拓扑变化时,核心路由表项可以得到及时的更新。
建议仅当网络中存在TC报文攻击时开启防TC攻击功能。
配置任务如下:
配置TC保护
配置TC传播限制
配置TC过滤
开启TC保护(TC Protection)功能时,收到TC BPDU报文后的一定时间内(一般为4秒),只进行一次删除操作。这样可以避免频繁的删除MAC地址表项和ARP表项。
TC保护功能只支持全局开启或关闭,对所有二层以太网接口和二层聚合接口生效。
使用spanning-tree tc-protection命令开启TC保护功能;使用no spanning-tree tc-protection命令关闭TC保护功能。
配置接口为二层接口。
进入特权模式。
enable
进入全局配置模式。
configure terminal
开启所有二层以太网接口和二层聚合接口的TC保护功能。
spanning-tree tc-protection
缺省情况下,全局TC保护功能处于关闭状态。
开启TC传播限制(TC Guard)功能后,当一个端口收到TC报文时,该端口将屏蔽掉接收的和本端口产生的TC报文,使TC报文不会扩散到其它端口,从而有效控制网络中可能存在的TC攻击,保持网络稳定。
TC传播限制功能分为全局TC传播限制和接口TC传播限制功能两种。
在全局配置模式下开启TC传播限制功能对所有二层以太网接口和二层聚合接口生效,此时所有端口都不会对外扩散TC报文,适合在桌面接入设备上开启全局TC传播限制功能。
在二层以太网接口配置模式或二层聚合接口配置模式下开启TC传播限制功能只对本接口生效,此时本接口不会对外扩散TC报文,适合在上链口尤其是汇聚设备连接核心设备的接口上开启接口TC传播限制功能。
在全局配置模式下,使用spanning-tree tc-protection tc-guard命令开启全局TC传播限制功能;使用no spanning-tree tc-protection tc-guard命令关闭全局TC传播限制功能。
在二层以太网接口配置模式或二层聚合接口配置模式下,使用spanning-tree tc-guard命令开启本接口TC传播限制功能;使用no spanning-tree tc-guard命令关闭本接口TC传播限制功能。
开启TC传播限制功能也会限制正常TC报文的传播,当生成树网络发生拓扑改变时,设备无法获得拓扑改变信息,不能及时清除MAC地址,可能导致报文转发出错;拓扑不能自动恢复可能引起通讯中断。因此建议仅当网络中存在非法TC报文攻击时开启此功能。
配置接口为二层接口。
进入特权模式。
enable
进入全局配置模式。
configure terminal
开启所有二层以太网接口和二层聚合接口的TC传播限制功能。
spanning-tree tc-protection tc-guard
缺省情况下,全局TC传播限制功能处于关闭状态。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入接口配置模式。
进入二层以太网接口配置模式。
interface { ethernet-type interface-number | range ethernet-type interface-range }
进入二层聚合接口配置模式。
interface { aggregateport interface-number | range aggregateport interface-range }
开启本接口的TC传播限制功能。
spanning-tree tc-guard
缺省情况下,接口TC传播限制功能处于关闭状态。
TC过滤(TC Filter)是指对于端口收到的TC报文不处理,只处理本端口拓扑变化产生的TC报文。
TC过滤功能只支持在接口上开启或关闭,对本接口生效。
在二层以太网接口配置模式或二层聚合接口配置模式下使用spanning-tree ignore tc命令开启TC过滤功能;使用no spanning-tree ignore tc命令关闭TC过滤功能。
配置接口为二层接口。
进入特权模式。
enable
进入全局配置模式。
configure terminal
进入接口配置模式。
进入二层以太网接口配置模式。
interface { ethernet-type interface-number | range ethernet-type interface-range }
进入二层聚合接口配置模式。
interface { aggregateport interface-number | range aggregateport interface-range }
开启本接口的TC过滤功能。
spanning-tree ignore tc
缺省情况下,接口TC过滤功能处于关闭状态。
IEEE 802.1Q标准规定BPDU报文采用0180.c200.0000作为目的MAC地址。支持IEEE 802.1Q标准的设备接收到目的地址为0180.c200.0000的帧时,会将其识别为BPDU并不再进行转发。
然而在实际网络部署中存在需要设备透明传输BPDU帧的情况。例如设备A未开启STP协议,但是通过设备A互联的设备B和C开启了STP协议;此时需要设备A透明传输BPDU帧,使设备B和C之间可以正常计算并构成生成树。
BPDU透传功能只在STP协议关闭时才起作用。当STP协议打开时,设备不透传BPDU帧。如果运营商设备开启了STP协议,又想要传输用户网络的BPDU报文且不影响运营商网络生成树,请使用BPDU隧道功能。
在全局配置模式下,使用bridge-frame forwarding protocol bpdu命令开启BPDU透传功能;使用no bridge-frame forwarding protocol bpdu命令关闭BPDU透传。
进入特权模式。
enable
进入全局配置模式。
configure terminal
开启BPDU透传功能。
bridge-frame forwarding protocol bpdu
缺省情况下,BPDU透传功能处于关闭状态。
可以通过show命令行查看功能配置后的运行情况以验证配置效果。
可以通过debug命令行列举输出的各种调试信息。
注意
debug命令输出调试信息,会占用系统资源。使用完毕后,请立即关闭调试功能。
可以通过执行clear命令来清除各类信息。
注意
在设备运行过程中执行clear命令,可能因为重要信息丢失而导致业务中断。
监视与维护
作用 |
命令 |
---|---|
查看生成树全局配置信息 |
show spanning-tree [ forward-time | hello-time | max-age | max-hops | mst instance-id | pathcost method | tx-hold-count ] |
查看生成树收发包统计信息 |
show spanning-tree counters |
查看因根保护或环路保护而阻塞的端口 |
show spanning-tree inconsistentports |
查看生成树拓扑及端口转发状态 |
show spanning-tree summary |
查看V-STP功能相关信息 |
show spanning-tree v-stp information |
用接口类型和编号查看接口的生成树配置和状态信息 |
show spanning-tree [ mst instance-id ] interface interface-type interface-number [ bpdufilter | bpduguard | link-type | portfast ] |
用接口编号查看接口的生成树配置和状态信息 |
show spanning-tree [ mst instance-id ] port-index |
查看多生成树域的配置信息 |
show spanning-tree mst configuration |
查看指定实例中的接口的拓扑改变信息 |
show spanning-tree mst instance-id topochange record |
打开生成树所有调试功能 |
debug mstp all |
打开生成树GR的调试功能 |
debug mstp gr |
打开接收BPDU报文的调试功能 |
debug mstp rx |
打开发送BPDU报文的调试功能 |
debug mstp tx |
打开生成树事件调试功能 |
debug mstp event |
打开生成树环路保护特性调试功能 |
debug mstp loopguard |
打开生成树根保护特性调试功能 |
debug mstp rootguard |
打开Bridge Detect状态机调试功能 |
debug mstp bridgedetect |
打开Port Information状态机调试功能 |
debug mstp portinfo |
打开Port Protocol Migration状态机调试功能 |
debug mstp protomigrat |
打开生成树拓扑变化的调试功能 |
debug mstp topochange |
打开生成树接收状态机调试功能 |
debug mstp receive |
打开Port Role Transitions状态机调试功能 |
debug mstp roletran |
打开Port State Transition状态机调试功能 |
debug mstp statetran |
打开生成树发送状态机调试功能 |
debug mstp transmit |
清除端口的收发包统计信息 |
clear spanning-tree counters [ interface interface-type interface-number ] |
清除STP的拓扑改变信息 |
clear spanning-tree mst instance-id topochange record |
如图1-19的两层拓扑结构,核心层设备为Device A和Device B,接入层设备为Device C,Device C连接内网终端。内网存在4个VLAN,配置MSTP功能满足如下需求:
VLAN 10和VLAN 30的生成树根桥为Device A,并且从Device C的GigabitEthernet 0/1转发数据。
VLAN 20和VLAN 40的生成树根桥为Device B,并且从Device C的GigabitEthernet 0/2转发数据。
在Device C的根端口上开启环路保护功能。在Device C连接终端的边缘端口上开启BPDU保护功能。
在Devcie A、B和C上创建相同的VLAN,配置相同的实例映射:实例1映射VLAN 10和30;实例2映射VLAN 20和40。实例0包含其它未创建的VLAN。
设备通过比较优先级向量< Root Identifier,Root Path Cost,Bridge ID,Port ID >选举出生成树中的设备角色和端口角色,配置实例的桥优先级和端口路径开销,以便算出组网需求中要求的拓扑。为便于管理,实例0配置和实例1同样的生成树。
实例0和1:
Device A的桥优先级配置为4096,Device B的桥优先级配置为8192,Device C的桥优先级采用缺省值32768(无需配置),使Device A成为根。
在Device B上,配置GigabitEthernet 0/2端口路径开销为1,GigabitEthernet 0/1端口路径开销为4,使得GigabitEthernet 0/2成为Device B的根端口。
在Device C上,配置GigabitEthernet 0/1端口路径开销为1,GigabitEthernet 0/2端口路径开销为4,使得GigabitEthernet 0/1成为Device C的根端口。
Device B的桥优先级8192高于Device C的桥优先级32768,Device B的GigabitEthernet 0/1成为指定端口,Device C的GigabitEthernet 0/2成为替换端口。
实例2:
Device B的桥优先级配置为4096,Device A的桥优先级配置为8192,Device C的桥优先级采用缺省值32768(无需配置),使Device B成为根。
在Device A上,配置GigabitEthernet 0/2端口路径开销为1,GigabitEthernet 0/1端口路径开销为4,使得GigabitEthernet 0/2成为Device A的根端口。
在Device C上,配置GigabitEthernet 0/2端口路径开销为1,GigabitEthernet 0/1端口路径开销为4,使得GigabitEthernet 0/2成为Device C的根端口。
Device A的桥优先级8192高于Device C的桥优先级32768,Device A的GigabitEthernet 0/1成为指定端口,Device C的GigabitEthernet 0/1成为替换端口。
在Device C的GigabitEthernet 0/1~0/2上配置MSTP环路保护,当根端口或备份口因收不到BPDU迁移为指定端口时,端口状态将一直保持Discarding(废弃)状态,直到重新收到BPDU进行生成树计算。
配置Device C连接终端的接口GigabitEthernet 0/3~0/6为边缘端口。在缺省情况下边缘端口自动识别功能处于开启状态,若GigabitEthernet 0/3~0/6被选举为指定端口后3秒内未接收到BPDU,则被自动识别为边缘端口并立即进入转发状态。若网络中存在丢包或收发报文延迟的现象,可能影响边缘端口自动识别功能。因此,关闭边缘端口自动识别功能,手工配置其为边缘端口,并开启BPDU保护功能。
在Devcie A、B和C上全局开启生成树功能,缺省为MSTP模式。
配置Devcie A、B和C的互联端口为Trunk口,许可所有VLAN通过。配置Device C连接终端的接口加入所在VLAN。
配置Device A。
# 创建VLAN,配置实例映射。
DeviceA>enable
DeviceA# configure terminal
DeviceA(config)# vlan range 10,20,30,40
DeviceA(config-vlan-range)# exit
DeviceA(config)# spanning-tree mst configuration
DeviceA(config-mst)# instance 1 vlan 10,30
DeviceA(config-mst)# instance 2 vlan 20,40
# 配置实例0和1的桥优先级为4094,实例2的桥优先级为8192。
DeviceA(config-mst)# spanning-tree mst 0 priority 4096
DeviceA(config)# spanning-tree mst configuration
DeviceA(config-mst)# spanning-tree mst 1 priority 4096
DeviceA(config)# spanning-tree mst configuration
DeviceA(config-mst)# spanning-tree mst 2 priority 8192
# 配置GigabitEthernet 0/2为Trunk口。在实例2中,配置端口路径开销为1。
DeviceA(config)# interface gigabitethernet 0/2
DeviceA(config-if-GigabitEthernet 0/2)# switchport
DeviceA(config-if-GigabitEthernet 0/2)# switchport mode trunk
DeviceA(config-if-GigabitEthernet 0/2)# switchport trunk native vlan 1
DeviceA(config-if-GigabitEthernet 0/2)# switchport trunk allowed vlan all
DeviceA(config-if-GigabitEthernet 0/2)# spanning-tree mst 2 cost 1
DeviceA(config-if-GigabitEthernet 0/2)# exit
# 配置GigabitEthernet 0/1为Trunk口。在实例2中,配置端口路径开销为4。
DeviceA(config)# interface gigabitethernet 0/1
DeviceA(config-if-GigabitEthernet 0/1)# switchport
DeviceA(config-if-GigabitEthernet 0/1)# switchport mode trunk
DeviceA(config-if-GigabitEthernet 0/1)# switchport trunk native vlan 1
DeviceA(config-if-GigabitEthernet 0/1)# switchport trunk allowed vlan all
DeviceA(config-if-GigabitEthernet 0/1)# spanning-tree mst 2 cost 4
DeviceA(config-if-GigabitEthernet 0/1)# exit
# 全局开启生成树功能。
DeviceA(config)# spanning-tree
DeviceA(config)# end
DeviceA# write
配置Device B。
# 创建VLAN,配置实例映射。
DeviceB> enable
DeviceB# configure terminal
DeviceB(config)# vlan range 10,20,30,40
DeviceB(config-vlan-range)# exit
DeviceB(config)# spanning-tree mst configuration
DeviceB(config-mst)# instance 1 vlan 10,30
DeviceB(config-mst)# instance 2 vlan 20,40
# 配置实例2的优先级为4094,实例0和1的桥优先级为8192。
DeviceB(config-mst)# spanning-tree mst 0 priority 8192
DeviceB(config)# spanning-tree mst configuration
DeviceB(config-mst)# spanning-tree mst 1 priority 8192
DeviceB(config)# spanning-tree mst configuration
DeviceB(config-mst)# spanning-tree mst 2 priority 4096
# 配置GigabitEthernet 0/2为Trunk口。在实例0和1中,配置端口路径开销为1。
DeviceB(config)# interface gigabitethernet 0/2
DeviceB(config-if-GigabitEthernet 0/2)# switchport
DeviceB(config-if-GigabitEthernet 0/2)# switchport mode trunk
DeviceB(config-if-GigabitEthernet 0/2)# switchport trunk native vlan 1
DeviceB(config-if-GigabitEthernet 0/2)# switchport trunk allowed vlan all
DeviceB(config-if-GigabitEthernet 0/2)# spanning-tree mst 0 cost 1
DeviceB(config-if-GigabitEthernet 0/2)# spanning-tree mst 1 cost 1
DeviceB(config-if-GigabitEthernet 0/2)# exit
# 配置GigabitEthernet 0/1为Trunk口。在实例0和1中,配置端口路径开销为4。
DeviceB(config)# interface gigabitethernet 0/1
DeviceB(config-if-GigabitEthernet 0/1)# switchport
DeviceB(config-if-GigabitEthernet 0/1)# switchport mode trunk
DeviceB(config-if-GigabitEthernet 0/1)# switchport trunk native vlan 1
DeviceB(config-if-GigabitEthernet 0/1)# switchport trunk allowed vlan all
DeviceB(config-if-GigabitEthernet 0/1)# spanning-tree mst 0 cost 4
DeviceB(config-if-GigabitEthernet 0/1)# spanning-tree mst 1 cost 4
DeviceB(config-if-GigabitEthernet 0/1)# exit
# 全局开启生成树功能。
DeviceB(config)# spanning-tree
DeviceB(config)# end
DeviceB# write
配置Device C。
# 创建VLAN,配置实例映射。
DeviceC> enable
DeviceC# configure terminal
DeviceC(config)# vlan range 10,20,30,40
DeviceC(config-vlan-range)# exit
DeviceC(config)# spanning-tree mst configuration
DeviceC(config-mst)# instance 1 vlan 10,30
DeviceC(config-mst)# instance 2 vlan 20,40
DeviceC(config-mst)# exit
# 配置上联口GigabitEthernet 0/1为Trunk口。在实例0和1中配置端口路径开销为1,在实例2中配置端口路径开销为4。配置端口环路保护。
DeviceC(config)# interface gigabitethernet 0/1
DeviceC(config-if-GigabitEthernet 0/1)# switchport
DeviceC(config-if-GigabitEthernet 0/1)# switchport mode trunk
DeviceC(config-if-GigabitEthernet 0/1)# switchport trunk native vlan 1
DeviceC(config-if-GigabitEthernet 0/1)# switchport trunk allowed vlan all
DeviceC(config-if-GigabitEthernet 0/1)# spanning-tree mst 0 cost 1
DeviceC(config-if-GigabitEthernet 0/1)# spanning-tree mst 1 cost 1
DeviceC(config-if-GigabitEthernet 0/1)# spanning-tree mst 2 cost 4
DeviceC(config-if-GigabitEthernet 0/1)# spanning-tree guard loop
DeviceC(config-if-GigabitEthernet 0/1)# exit
# 配置上联口GigabitEthernet 0/2为Trunk口。在实例2中配置端口路径开销为1,在实例0和1中配置端口路径开销为4。配置端口环路保护。
DeviceC(config)# interface gigabitethernet 0/2
DeviceC(config-if-GigabitEthernet 0/2)# switchport
DeviceC(config-if-GigabitEthernet 0/2)# switchport mode trunk
DeviceC(config-if-GigabitEthernet 0/2)# switchport trunk native vlan 1
DeviceC(config-if-GigabitEthernet 0/2)# switchport trunk allowed vlan all
DeviceC(config-if-GigabitEthernet 0/2)# spanning-tree mst 0 cost 4
DeviceC(config-if-GigabitEthernet 0/2)# spanning-tree mst 1 cost 4
DeviceC(config-if-GigabitEthernet 0/2)# spanning-tree mst 2 cost 1
DeviceC(config-if-GigabitEthernet 0/2)# spanning-tree guard loop
DeviceC(config-if-GigabitEthernet 0/2)# exit
# 配置下联口GigabitEthernet 0/3~0/6加入指定VLAN。配置接口为边缘端口,配置BPDU保护功能。
DeviceC(config)# interface gigabitethernet 0/3
DeviceC(config-if-GigabitEthernet 0/3)# switchport
DeviceC(config-if-GigabitEthernet 0/3)# switchport mode access
DeviceC(config-if-GigabitEthernet 0/3)# switchport access vlan 10
DeviceC(config-if-GigabitEthernet 0/3)# spanning-tree autoedge disabled
DeviceC(config-if-GigabitEthernet 0/3)# spanning-tree portfast
DeviceC(config-if-GigabitEthernet 0/3)# spanning-tree bpduguard enable
DeviceC(config-if-GigabitEthernet 0/3)# exit
DeviceC(config)# interface gigabitethernet 0/4
DeviceC(config-if-GigabitEthernet 0/4)# switchport
DeviceC(config-if-GigabitEthernet 0/4)# switchport mode access
DeviceC(config-if-GigabitEthernet 0/4)# switchport access vlan 20
DeviceC(config-if-GigabitEthernet 0/4)# spanning-tree autoedge disabled
DeviceC(config-if-GigabitEthernet 0/4)# spanning-tree portfast
DeviceC(config-if-GigabitEthernet 0/4)# spanning-tree bpduguard enable
DeviceC(config-if-GigabitEthernet 0/4)# exit
DeviceC(config)# interface gigabitethernet 0/5
DeviceC(config-if-GigabitEthernet 0/5)# switchport
DeviceC(config-if-GigabitEthernet 0/5)# switchport mode access
DeviceC(config-if-GigabitEthernet 0/5)# switchport access vlan 30
DeviceC(config-if-GigabitEthernet 0/5)# spanning-tree autoedge disabled
DeviceC(config-if-GigabitEthernet 0/5)# spanning-tree portfast
DeviceC(config-if-GigabitEthernet 0/5)# spanning-tree bpduguard enable
DeviceC(config-if-GigabitEthernet 0/5)# exit
DeviceC(config)# interface gigabitethernet 0/6
DeviceC(config-if-GigabitEthernet 0/6)# switchport
DeviceC(config-if-GigabitEthernet 0/6)# switchport mode access
DeviceC(config-if-GigabitEthernet 0/6)# switchport access vlan 40
DeviceC(config-if-GigabitEthernet 0/6)# spanning-tree autoedge disabled
DeviceC(config-if-GigabitEthernet 0/6)# spanning-tree portfast
DeviceC(config-if-GigabitEthernet 0/6)# spanning-tree bpduguard enable
DeviceC(config-if-GigabitEthernet 0/6)# exit
# 全局开启生成树功能。
DeviceC(config)# spanning-tree
DeviceC(config)# end
DeviceC# write
查看各设备上的实例映射关系相同。
# 查看Device A上的实例映射关系。
DeviceA# show spanning-tree mst configuration
Multi spanning tree protocol : Enable
Name :
Revision : 0
Instance Vlans Mapped
-------- --------------------------------------------
0 : 1-9, 11-19, 21-29, 31-39, 41-4094
1 : 10, 30
2 : 20, 40
-----------------------------------------------------
# 查看Device B上的实例映射关系。
DeviceB# show spanning-tree mst configuration
Multi spanning tree protocol : Enable
Name :
Revision : 0
Instance Vlans Mapped
-------- --------------------------------------------
0 : 1-9, 11-19, 21-29, 31-39, 41-4094
1 : 10, 30
2 : 20, 40
-----------------------------------------------------
# 查看Device C上的实例映射关系。
DeviceC# show spanning-tree mst configuration
Multi spanning tree protocol : Enable
Name :
Revision : 0
Instance Vlans Mapped
-------- --------------------------------------------
0 : 1-9, 11-19, 21-29, 31-39, 41-4094
1 : 10, 30
2 : 20, 40
-----------------------------------------------------
在Device A上查看实例生成树拓扑及端口转发状态。
# 在实例0和1中,Device A(0074.9cee.f49e)为根。Device A的GigabitEthernet 0/1~0/2为指定端口(Desg);端口均处于转发状态(FWD)。
DeviceA# show spanning-tree summary
Spanning tree enabled protocol mstp
MST 0 vlans map : 1-9, 11-19, 21-29, 31-39, 41-4094
Root ID Priority 4096
Address 0074.9cee.f49e
this bridge is root
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Bridge ID Priority 4096
Address 0074.9cee.f49e
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/1 Desg FWD 200000 128 False P2p
Gi0/2 Desg FWD 20000 128 False P2p
MST 1 vlans map : 10, 30
Region Root Priority 4096
Address 0074.9cee.f49e
this bridge is region root
Bridge ID Priority 4096
Address 0074.9cee.f49e
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/1 Desg FWD 200000 128 False P2p
Gi0/2 Desg FWD 20000 128 False P2p
# 在实例2中,Device B(00d0.f8ee.8c1e)为的根。Device A的GigabitEthernet 0/2为根端口(Root),端口路径开销(Cost)为1;Device A的GigabitEthernet 0/1为指定端口(Desg),端口路径开销为4;端口均处于转发状态(FWD)。
MST 2 vlans map : 20, 40
Region Root Priority 4096
Address 00d0.f8ee.8c1e
this bridge is region root
Bridge ID Priority 8192
Address 0074.9cee.f49e
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/1 Desg FWD 4 128 False P2p
Gi0/2 Root FWD 1 128 False P2p
在Device B上查看实例生成树拓扑及端口转发状态。
# 在实例0和1中,Device A(0074.9cee.f49e)为的根。Device B的GigabitEthernet 0/1的为根端口(Root),端口路径开销(Cost)为1;Device B的GigabitEthernet 0/2为指定端口(Desg),端口路径开销为4;端口均处于转发状态(FWD)。
DeviceB# show spanning-tree summary
Spanning tree enabled protocol mstp
MST 0 vlans map : 1-9, 11-19, 21-29, 31-39, 41-4094
Root ID Priority 4096
Address 0074.9cee.f49e
this bridge is root
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Bridge ID Priority 8192
Address 00d0.f8ee.8c1e
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/1 Root FWD 1 128 False P2p
Gi0/2 Desg FWD 4 128 False P2p
MST 1 vlans map : 10, 30
Region Root Priority 4096
Address 0074.9cee.f49e
this bridge is region root
Bridge ID Priority 8192
Address 00d0.f8ee.8c1e
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/1 Root FWD 1 128 False P2p
Gi0/2 Desg FWD 4 128 False P2p
# 在实例2中,Device B(00d0.f8ee.8c1e)为的根。Device B的GigabitEthernet 0/1~0/2为指定端口(Desg);端口均处于转发状态(FWD)。
MST 2 vlans map : 20, 40
Region Root Priority 4096
Address 00d0.f8ee.8c1e
this bridge is region root
Bridge ID Priority 4096
Address 00d0.f8ee.8c1e
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/1 Desg FWD 20000 128 False P2p
Gi0/2 Desg FWD 20000 128 False P2p
在Device C上查看实例生成树拓扑及端口转发状态。
# 在实例0和1中,Device A(0074.9cee.f49e)为的根。Device C的GigabitEthernet 0/1的为根端口(Root),端口路径开销(Cost)为1,端口处于转发状态(FWD)。Device C的GigabitEthernet 0/2为替换端口(Altn),端口路径开销为4,端口处于阻塞状态(BLK)。Device C的GigabitEthernet 0/3~0/6为边缘端口(OperEdge),端口均处于转发状态(FWD)。
DeviceC# show spanning-tree summary
Spanning tree enabled protocol mstp
MST 0 vlans map : 1-9, 11-19, 21-29, 31-39, 41-4094
Root ID Priority 4096
Address 0074.9cee.f49e
this bridge is root
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Bridge ID Priority 32768
Address 0074.9cee.53ca
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/1 Root FWD 1 128 False P2p
Gi0/2 Altn BLK 4 128 False P2p
Gi0/3 Desg FWD 20000 128 True P2p
Gi0/4 Desg FWD 20000 128 True P2p
Gi0/5 Desg FWD 20000 128 True P2p
Gi0/6 Desg FWD 20000 128 True P2p
MST 1 vlans map : 10, 30
Region Root Priority 4096
Address 0074.9cee.f49e
this bridge is region root
Bridge ID Priority 32768
Address 0074.9cee.53ca
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/1 Root FWD 1 128 False P2p
Gi0/2 Altn BLK 4 128 False P2p
Gi0/3 Desg FWD 20000 128 True P2p
Gi0/4 Desg FWD 20000 128 True P2p
Gi0/5 Desg FWD 20000 128 True P2p
Gi0/6 Desg FWD 20000 128 True P2p
# 在实例2中,Device B(00d0.f8ee.8c1e)为的根。Device C的GigabitEthernet 0/2的为根端口(Root),端口路径开销(Cost)为1,端口处于转发状态(FWD)。Device C的GigabitEthernet 0/1为替换端口(Altn),端口路径开销为4,端口处于阻塞状态(BLK)。Device C的GigabitEthernet 0/3~0/6为边缘端口(OperEdge),端口均处于转发状态(FWD)。
MST 2 vlans map : 20, 40
Region Root Priority 4096
Address 00d0.f8ee.8c1e
this bridge is region root
Bridge ID Priority 32768
Address 0074.9cee.53ca
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/1 Altn BLK 4 128 False P2p
Gi0/2 Root FWD 1 128 False P2p
Gi0/3 Desg FWD 20000 128 True P2p
Gi0/4 Desg FWD 20000 128 True P2p
Gi0/5 Desg FWD 20000 128 True P2p
Gi0/6 Desg FWD 20000 128 True P2p
查看实例1中各设备的根(DesignatedRoot)、根端口(RootPort)和到根路径开销(RootCost)。实例0和2的查看方式类似,过程略。
# Device A为根,到根路径开销为0。
DeviceA# show spanning-tree mst 1
###### MST 1 vlans mapped : 10, 30
BridgeAddr : 0074.9cee.f49e
Priority: 4096
TimeSinceTopologyChange : 0d:0h:16m:29s
TopologyChanges : 7
DesignatedRoot : 4097.0074.9cee.f49e
RootCost : 0
RootPort : 0
# Device B通过根端口GigabitEthernet 0/2到根(4097.0074.9cee.f49e)的路径开销(RootCost)为1。
DeviceB# show spanning-tree mst 1
###### MST 1 vlans mapped : 10, 30
BridgeAddr : 00d0.f8ee.8c1e
Priority: 8192
TimeSinceTopologyChange : 0d:0h:16m:27s
TopologyChanges : 7
DesignatedRoot : 4097.0074.9cee.f49e
RootCost : 1
RootPort : GigabitEthernet 0/2
# Device C通过根端口GigabitEthernet 0/1到根(4097.0074.9cee.f49e)的路径开销(RootCost)为1。
DeviceC# show spanning-tree mst 1
###### MST 1 vlans mapped : 10, 30
BridgeAddr : 0074.9cee.53ca
Priority: 32768
TimeSinceTopologyChange : 0d:0h:19m:48s
TopologyChanges : 5
DesignatedRoot : 4097.0074.9cee.f49e
RootCost : 1
RootPort : GigabitEthernet 0/1
查看Device C上联口GigabitEthernet 0/1~0/2的环路保护功能(PortGuardmode:Guard loop)处于开启状态,如下以GigabitEthernet 0/1为例。
DeviceC# show spanning-tree interface gigabitethernet 0/1
PortAdminPortFast : Disabled
PortOperPortFast : Disabled
PortAdminAutoEdge : Enabled
PortOperAutoEdge : Disabled
PortAdminLinkType : auto
PortOperLinkType : point-to-point
PortBPDUGuard : Disabled
PortBPDUFilter : Disabled
PortGuardmode : Guard loop
###### MST 0 vlans mapped :1-9, 11-19, 21-29, 31-39, 41-4094
PortState : forwarding
PortPriority : 128
PortDesignatedRoot : 4096.0074.9cee.f49e
PortDesignatedCost : 0
PortDesignatedBridge :4096.0074.9cee.f49e
PortDesignatedPortPriority : 128
PortDesignatedPort : 1
PortForwardTransitions : 1
PortAdminPathCost : 1
PortOperPathCost : 1
Inconsistent states : normal
PortRole : rootPort
###### MST 1 vlans mapped :10, 30
PortState : forwarding
PortPriority : 128
PortDesignatedRoot : 4097.0074.9cee.f49e
PortDesignatedCost : 0
PortDesignatedBridge :4097.0074.9cee.f49e
PortDesignatedPortPriority : 128
PortDesignatedPort : 1
PortForwardTransitions : 1
PortAdminPathCost : 1
PortOperPathCost : 1
Inconsistent states : normal
PortRole : rootPort
###### MST 2 vlans mapped :20, 40
PortState : discarding
PortPriority : 128
PortDesignatedRoot : 4098.00d0.f8ee.8c1e
PortDesignatedCost : 0
PortDesignatedBridge :8194.0074.9cee.f49e
PortDesignatedPortPriority : 128
PortDesignatedPort : 1
PortForwardTransitions : 3
PortAdminPathCost : 4
PortOperPathCost : 4
Inconsistent states : normal
PortRole : alternatePort
查看Device C下联口GigabitEthernet 0/3~0/6的手动配置为边缘端口(PortAdminPortFast : Enabled),工作在边缘端口状态(PortOperPortFast : Enabled),BPDU保护功能处于开启状态(PortBPDUGuard : Enabled),如下以GigabitEthernet 0/3为例。
DeviceC# show spanning-tree interface gigabitethernet 0/3
PortAdminPortFast : Enabled
PortOperPortFast : Enabled
PortAdminAutoEdge : Disabled
PortOperAutoEdge : Enabled
PortAdminLinkType : auto
PortOperLinkType : point-to-point
PortBPDUGuard : Enabled
PortBPDUFilter : Disabled
PortGuardmode : None
###### MST 0 vlans mapped :1-9, 11-19, 21-29, 31-39, 41-4094
PortState : forwarding
PortPriority : 128
PortDesignatedRoot : 4096.0074.9cee.f49e
PortDesignatedCost : 0
PortDesignatedBridge :32768.0074.9cee.53ca
PortDesignatedPortPriority : 128
PortDesignatedPort : 1
PortForwardTransitions : 1
PortAdminPathCost : 20000
PortOperPathCost : 20000
Inconsistent states : normal
PortRole : designatedPort
###### MST 1 vlans mapped :10, 30
PortState : forwarding
PortPriority : 128
PortDesignatedRoot : 4097.0074.9cee.f49e
PortDesignatedCost : 0
PortDesignatedBridge :32769.0074.9cee.53ca
PortDesignatedPortPriority : 128
PortDesignatedPort : 1
PortForwardTransitions : 1
PortAdminPathCost : 20000
PortOperPathCost : 20000
Inconsistent states : normal
PortRole : designatedPort
###### MST 2 vlans mapped :20, 40
PortState : forwarding
PortPriority : 128
PortDesignatedRoot : 4098.00d0.f8ee.8c1e
PortDesignatedCost : 0
PortDesignatedBridge :32770.0074.9cee.53ca
PortDesignatedPortPriority : 128
PortDesignatedPort : 1
PortForwardTransitions : 1
PortAdminPathCost : 20000
PortOperPathCost : 20000
Inconsistent states : normal
PortRole : designatedPort
Device A的配置文件
spanning-tree mst configuration
instance 0 vlan 1-9, 11-19, 21-29, 31-39, 41-4094
instance 1 vlan 10, 30
instance 2 vlan 20, 40
!
spanning-tree mst 0 priority 4096
spanning-tree mst 1 priority 4096
spanning-tree mst 2 priority 8192
spanning-tree
!
sysmac 0074.9cee.f49e
!
vlan range 1,10,20,30,40
!
interface GigabitEthernet 0/1
switchport
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
spanning-tree mst 2 cost 4
!
interface GigabitEthernet 0/2
switchport
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
spanning-tree mst 2 cost 1
Device B的配置文件
spanning-tree mst configuration
instance 0 vlan 1-9, 11-19, 21-29, 31-39, 41-4094
instance 1 vlan 10, 30
instance 2 vlan 20, 40
!
spanning-tree mst 0 priority 8192
spanning-tree mst 1 priority 8192
spanning-tree mst 2 priority 4096
spanning-tree
!
sysmac 00d0.f8ee.8c1e
!
vlan range 1,10,20,30,40
!
interface GigabitEthernet 0/1
switchport
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
spanning-tree mst 1 cost 4
spanning-tree mst 0 cost 4
!
interface GigabitEthernet 0/2
switchport
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
spanning-tree mst 1 cost 1
spanning-tree mst 0 cost 1
Device C的配置文件
spanning-tree mst configuration
instance 0 vlan 1-9, 11-19, 21-29, 31-39, 41-4094
instance 1 vlan 10, 30
instance 2 vlan 20, 40
!
spanning-tree
!
sysmac 0074.9cee.53ca
!
vlan range 1,10,20,30,40
!
interface GigabitEthernet 0/1
switchport
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
spanning-tree guard loop
spanning-tree mst 2 cost 4
spanning-tree mst 1 cost 1
spanning-tree mst 0 cost 1
!
interface GigabitEthernet 0/2
switchport
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
spanning-tree guard loop
spanning-tree mst 2 cost 1
spanning-tree mst 1 cost 4
spanning-tree mst 0 cost 4
!
interface GigabitEthernet 0/3
switchport
switchport mode access
switchport access vlan 10
spanning-tree bpduguard enable
spanning-tree portfast
spanning-tree autoedge disabled
!
interface GigabitEthernet 0/4
switchport
switchport mode access
switchport access vlan 20
spanning-tree bpduguard enable
spanning-tree portfast
spanning-tree autoedge disabled
!
interface GigabitEthernet 0/5
switchport
switchport mode access
switchport access vlan 30
spanning-tree bpduguard enable
spanning-tree portfast
spanning-tree autoedge disabled
!
interface GigabitEthernet 0/6
switchport
switchport mode access
switchport access vlan 40
spanning-tree bpduguard enable
spanning-tree portfast
spanning-tree autoedge disabled
当设备非根时,若未配置低于根且高于接入设备的桥优先级,在生成树计算中,非根核心设备和接入设备将通过比较MAC地址确认上游设备,可能导致计算结果不符合组网需求。
当设备非根时,若未配置端口路径开销,因为链路情况的不同,可能导致生成树计算结果不符合组网需求。
将根保护功能配置在根端口、Master端口或替换端口,可能会错误地将端口阻塞。
MSTP+VRRP双核心应用方案为MSTP协议的一个典型应用场景。该方案采用层次化网络架构,使用MSTP+VRRP协议实现冗余备份和VLAN负载均衡,提高网络系统可用性。此架构的主要优点在于结构的层次化;每一层网络设备的容量指标、特点和功能,都可针对其网络位置和作用进行优化,以加强系统稳定性和可靠性。该方案通常采用三层(核心层、汇聚层和接入层)或二层(核心层和接入层)架构,如图1-20采用二层架构,组网需求如下。
核心层:配置MSTP多实例达到负载均衡的效果。创建实例1和实例2。实例1映射VLAN 10和30;实例2映射VLAN 20和40。Device A为实例0和1的根桥(实例0默认存在),同时为VLAN 10和30的VRRP主设备。Device B为实例2根桥,同时为VLAN 20和40的VRRP主设备。
接入层:将直连终端(PC或服务器)的端口配置成边缘端口,同时配置BPDU保护功能,防止用户私自接入非法的设备。
配置MSTP:
配置生成树模式为MSTP。缺省情况下,生成树模式为MSTP,不必配置。
配置MST Region,在Device A、B、C和D上配置实例1映射VLAN 10和30;实例2映射VLAN 20和40。
配置实例0和1在Device A上的桥优先级为4096,在Device B上的桥优先级为8192,使Device A成为实例0和1的根桥。
配置实例2在Device A上的桥优先级为8192,在Device B上的桥优先级为4096,使Device B成为实例2的根桥。
在接入设备Device C和D上,实例0、1和2的桥优先级采用缺省值32768,将连接用户的端口配置为边缘端口,不参与生成树计算,并开启BPDU保护功能。
配置VRRP组的监视端口:将Master设备的上链口配置为对应VLAN的监视接口。Device A的GigabitEthernet 0/5监视VLAN10和30;Device B的GigabitEthernet 0/5监视VLAN20和40。
在上链口的接口配置模式下使用no switchport命令,把监视端口配置为三层接口,并配置接口的IP地址。三层接口不参与生成树计算。
在VLAN的SVI接口配置模式下,使用vrrp group-id track interface-type interface-number [ priority decrement ]命令,配置VRRP组group-id的监视端口interface-type interface-number,配置VRRP优先级改变值priority decrement。当被监视接口链路状态变化或IP路由可达状态变化时,VRRP优先级将会变化,变化值为decrement;链路断开时,减少优先级,链路恢复时,还原优先级;取值范围为1~255,缺省值为10。
优先级参数的配置:VRRP优先级改变值需要和VRRP优先级结合在一起考虑。在VLAN的SVI接口配置模式下,使用命令vrrp group-id priority priority配置VRRP优先级,priority取值范围为1~254,缺省值为100。因为priority decrement缺省值为10,当监视端口Down掉时,对应VRRP优先级降低为100-10=90。
在本例中,将VLAN 10和30在其Master设备Device A上的VRRP优先级抬高到120,Device B上采用默认优先级100,并配置priority decrement为30。当Device A的监视端口GigabitEthernet 0/5因故障Down掉时,VLAN 10和30的VRRP优先级默认减30,变成90;低于它们在Device B上的默认优先级100,VLAN 10和30数据将通过Device B传输。当Device A的监视端口GigabitEthernet 0/5恢复通信时,VRRP优先级为90+30=120,大于Device B上的优先级,VLAN 10和30数据恢复到Device A上传输。如此,VLAN 10和30则将Device A作为VRRP Master设备,Device B作为VRRP Backup设备。
同理,将VLAN 20和40在Device B上的VRRP优先级抬高到120,Device A上采用默认优先级100。
配置VRRP:将VLAN的SVI加入VRRP组,同时配置VRRP组的虚拟IP地址。
配置SVI地址需要注意,如果监视端口Down掉,VRRP优先级降低后,出现优先级相等的情况,将比较VLAN在两台设备上的SVI地址,IP越大优先级越高。所以建议VLAN 10和VLAN 30在Master设备Device A上的IP地址配置得比Device B大。其它VLAN同理。
核心设备之间需要配置聚合链路。核心设备下联口和接入设备上联口需要配置为Trunk口。接入设备上连接用户的端口需要配置为Access口,并加入VLAN。
配置MSTP功能。
# 配置核心设备Device A的MSTP功能。创建VLAN,实例1映射VLAN 10和30;实例2映射VLAN 20和40。配置实例0和1的桥优先级为4096,实例2的桥优先级为8192,使Device A成为实例0和1的根桥。开启MSTP。
DeviceA> enable
DeviceA# configure terminal
DeviceA(config)# vlan range 10,20,30,40
DeviceA(config-vlan-range)# exit
DeviceA(config)# spanning-tree mode mstp
DeviceA(config)# spanning-tree mst configuration
DeviceA(config-mst)# instance 1 vlan 10,30
DeviceA(config-mst)# instance 2 vlan 20,40
DeviceA(config-mst)# exit
DeviceA(config)# spanning-tree mst 0 priority 4096
DeviceA(config)# spanning-tree mst 1 priority 4096
DeviceA(config)# spanning-tree mst 2 priority 8192
DeviceA(config)# spanning-tree
# 配置核心设备Device B的MSTP功能。创建VLAN,实例1映射VLAN 10和30;实例2映射VLAN 20和40。配置实例0和1的桥优先级为8192,实例2的桥优先级为4096,使Device B成为实例2的根桥。开启MSTP。
DeviceB> enable
DeviceB# configure terminal
DeviceB(config)# vlan range 10,20,30,40
DeviceB(config-vlan-range)# exit
DeviceB(config)# spanning-tree mode mstp
DeviceB(config)# spanning-tree mst configuration
DeviceB(config-mst)# instance 1 vlan 10,30
DeviceB(config-mst)# instance 2 vlan 20,40
DeviceB(config-mst)# exit
DeviceB(config)# spanning-tree mst 0 priority 8192
DeviceB(config)# spanning-tree mst 1 priority 8192
DeviceB(config)# spanning-tree mst 2 priority 4096
DeviceB(config)# spanning-tree
# 配置接入设备Device C和Device D的MSTP功能。接入设备上不需要配置桥优先级。配置直连用户的端口为边缘端口,同时启用BPDU保护。Device D和Device C配置类似,下面仅以Device C为例。
DeviceC> enable
DeviceC# configure terminal
DeviceC(config)# vlan range 10,20,30,40
DeviceC(config-vlan-range)# exit
DeviceC(config)# spanning-tree mode mstp
DeviceC(config)# spanning-tree mst configuration
DeviceC(config-mst)# instance 1 vlan 10,30
DeviceC(config-mst)# instance 2 vlan 20,40
DeviceC(config-mst)# exit
DeviceC(config)# spanning-tree
DeviceC(config)# interface range gigabitethernet 0/3-6
DeviceC(config-if-range)# spanning-tree portfast
DeviceC(config-if-range)# spanning-tree bpduguard enable
DeviceC(config-if-range)# exit
配置VRRP组的监视端口。
# 配置Device A的GigabitEthernet 0/5为三层接口,并配置IP地址为10.10.1.1/24。以便作为VLAN10和30的监视端口。
DeviceA(config)# interface gigabitethernet 0/5
DeviceA(config-if-GigabitEthernet 0/5)# no switchport
DeviceA(config-if-GigabitEthernet 0/5)# ip address 10.10.1.1 255.255.255.0
DeviceA(config-if-GigabitEthernet 0/5)# exit
# 配置Device B的GigabitEthernet 0/5为三层接口,并配置IP地址为10.10.2.1/24。以便作为VLAN20和40的监视端口。
DeviceB(config)# interface gigabitethernet 0/5
DeviceB(config-if-GigabitEthernet 0/5)# no switchport
DeviceB(config-if-GigabitEthernet 0/5)# ip address 10.10.2.1 255.255.255.0
DeviceB(config-if-GigabitEthernet 0/5)# exit
配置核心设备上VLAN10和30的VRRP。
# 配置Master设备Device A。进入SVI接口,配置SVI地址。配置SVI加入对应的VRRP组,同时配置VRRP组的虚网关IP地址。抬高VRRP优先级为120,配置监视端口GigabitEthernet 0/5,并配置priority decrement为30。
DeviceA(config)# interface vlan 10
DeviceA(config-if-VLAN 10)# ip address 192.168.10.3 255.255.255.0
DeviceA(config-if-VLAN 10)# vrrp 10 ip 192.168.10.1
DeviceA(config-if-VLAN 10)# vrrp 10 priority 120
DeviceA(config-if-VLAN 10)# vrrp 10 track gigabitethernet 0/5 30
DeviceA(config-if-VLAN 10)# exit
DeviceA(config)# interface vlan 30
DeviceA(config-if-VLAN 30)# ip address 192.168.30.3 255.255.255.0
DeviceA(config-if-VLAN 30)# vrrp 30 ip 192.168.30.1
DeviceA(config-if-VLAN 30)# vrrp 30 priority 120
DeviceA(config-if-VLAN 30)# vrrp 30 track gigabitethernet 0/5 30
DeviceA(config-if-VLAN 30)# exit
# 配置Backup设备Device B。进入SVI接口,配置SVI地址。配置SVI加入对应的VRRP组,同时配置VRRP组的虚网关IP地址。在Backup设备上采用默认VRRP优先级100,不需要配置监视端口。
DeviceB(config)# interface vlan 10
DeviceB(config-if-VLAN 10)# ip address 192.168.10.2 255.255.255.0
DeviceB(config-if-VLAN 10)# vrrp 10 ip 192.168.10.1
DeviceB(config-if-VLAN 10)# exit
DeviceB(config)# interface vlan 30
DeviceB(config-if-VLAN 30)# ip address 192.168.30.2 255.255.255.0
DeviceB(config-if-VLAN 30)# vrrp 30 ip 192.168.30.1
DeviceB(config-if-VLAN 30)# exit
配置核心设备上VLAN20和40的VRRP。
# 配置Master设备Device B。进入SVI接口,配置SVI地址。配置SVI加入对应的VRRP组,同时配置VRRP组的虚网关IP地址。抬高VRRP优先级为120,配置监视端口GigabitEthernet 0/5,并配置priority decrement为30。
DeviceB(config)# interface vlan 20
DeviceB(config-if-VLAN 20)# ip address 192.168.20.3 255.255.255.0
DeviceB(config-if-VLAN 20)# vrrp 20 ip 192.168.20.1
DeviceB(config-if-VLAN 20)# vrrp 20 priority 120
DeviceB(config-if-VLAN 20)# vrrp 20 track gigabitethernet 0/5 30
DeviceB(config-if-VLAN 20)# exit
DeviceB(config)# interface vlan 40
DeviceB(config-if-VLAN 40)# ip address 192.168.40.3 255.255.255.0
DeviceB(config-if-VLAN 40)# vrrp 40 ip 192.168.40.1
DeviceB(config-if-VLAN 40)# vrrp 40 priority 120
DeviceB(config-if-VLAN 40)# vrrp 40 track gigabitethernet 0/5 30
DeviceB(config-if-VLAN 40)# exit
# 配置Backup设备Device A。进入SVI接口,配置SVI地址。配置SVI加入对应的VRRP组,同时配置VRRP组的虚网关IP地址。在Backup设备上采用默认VRRP优先级100,不需要配置监视端口。
DeviceA(config)# interface vlan 20
DeviceA(config-if-VLAN 20)# ip address 192.168.20.2 255.255.255.0
DeviceA(config-if-VLAN 20)# vrrp 20 ip 192.168.20.1
DeviceA(config-if-VLAN 20)# exit
DeviceA(config)# interface vlan 40
DeviceA(config-if-VLAN 40)# ip address 192.168.40.2 255.255.255.0
DeviceA(config-if-VLAN 40)# vrrp 40 ip 192.168.40.1
DeviceA(config-if-VLAN 40)# exit
配置VRRP核心设备之间的聚合链路。
# 在Device A上配置GigabitEthernet 0/3和0/4聚合为AggregatePort 1,配置聚合口为Trunk模式。
DeviceA(config)# interface range gigabitethernet 0/3-4
DeviceA(config-if-range)# port-group 1
DeviceA(config-if-range)# exit
DeviceA(config)# interface aggregateport 1
DeviceA(config-if-AggregatePort 1)# switchport
DeviceA(config-if-AggregatePort 1)# switchport mode trunk
DeviceA(config-if-AggregatePort 1)# switchport trunk native vlan 1
DeviceA(config-if-AggregatePort 1)# switchport trunk allowed vlan all
DeviceA(config-if-AggregatePort 1)# exit
# 在Device B上配置GigabitEthernet 0/3和0/4聚合为AggregatePort 1,配置聚合口为Trunk模式。
DeviceB(config)# interface range gigabitethernet 0/3-4
DeviceB(config-if-range)# port-group 1
DeviceB(config-if-range)# exit
DeviceB(config)# interface aggregateport 1
DeviceB(config-if-AggregatePort 1)# switchport
DeviceB(config-if-AggregatePort 1)# switchport mode trunk
DeviceB(config-if-AggregatePort 1)# switchport trunk native vlan 1
DeviceB(config-if-AggregatePort 1)# switchport trunk allowed vlan all
DeviceB(config-if-AggregatePort 1)# exit
配置核心设备下联口和接入设备上联口为Trunk口。
# 配置Device A下联口GigabitEthernet 0/1~0/2为Trunk口。
DeviceA(config)# interface range gigabitethernet 0/1-2
DeviceA(config-if-range)# switchport
DeviceA(config-if-range)# switchport mode trunk
DeviceA(config-if-range)# switchport trunk native vlan 1
DeviceA(config-if-range)# switchport trunk allowed vlan all
DeviceA(config-if-range)# end
DeviceA# write
# 配置Device B下联口GigabitEthernet 0/1~0/2为Trunk口。
DeviceB(config)# interface range gigabitethernet 0/1-2
DeviceB(config-if-range)# switchport
DeviceB(config-if-range)# switchport mode trunk
DeviceB(config-if-range)# switchport trunk native vlan 1
DeviceB(config-if-range)# switchport trunk allowed vlan all
DeviceB(config-if-range)# end
DeviceB# write
# 配置Device C上联口GigabitEthernet 0/1~0/2为Trunk口。
DeviceC(config)# interface range gigabitethernet 0/1-2
DeviceC(config-if-range)# switchport
DeviceC(config-if-range)# switchport mode trunk
DeviceC(config-if-range)# switchport trunk native vlan 1
DeviceC(config-if-range)# switchport trunk allowed vlan all
DeviceC(config-if-range)# exit
# 配置Device D上联口GigabitEthernet 0/1~0/2为Trunk口。
DeviceD(config)# interface range gigabitethernet 0/1-2
DeviceD(config-if-range)# switchport
DeviceD(config-if-range)# switchport mode trunk
DeviceD(config-if-range)# switchport trunk native vlan 1
DeviceD(config-if-range)# switchport trunk allowed vlan all
DeviceD(config-if-range)# exit
配置接入设备用户端口为Access模式,并加入VLAN。
# 配置Device C。
DeviceC(config)# interface gigabitethernet 0/3
DeviceC(config-if-GigabitEthernet 0/3)# switchport
DeviceC(config-if-GigabitEthernet 0/3)# switchport mode access
DeviceC(config-if-GigabitEthernet 0/3)# switchport access vlan 10
DeviceC(config-if-GigabitEthernet 0/3)# exit
DeviceC(config)# interface gigabitethernet 0/4
DeviceC(config-if-GigabitEthernet 0/4)# switchport
DeviceC(config-if-GigabitEthernet 0/4)# switchport mode access
DeviceC(config-if-GigabitEthernet 0/4)# switchport access vlan 20
DeviceC(config-if-GigabitEthernet 0/4)# exit
DeviceC(config)# interface gigabitethernet 0/5
DeviceC(config-if-GigabitEthernet 0/5)# switchport
DeviceC(config-if-GigabitEthernet 0/5)# switchport mode access
DeviceC(config-if-GigabitEthernet 0/5)# switchport access vlan 30
DeviceC(config-if-GigabitEthernet 0/5)# exit
DeviceC(config)# interface gigabitethernet 0/6
DeviceC(config-if-GigabitEthernet 0/6)# switchport
DeviceC(config-if-GigabitEthernet 0/6)# switchport mode access
DeviceC(config-if-GigabitEthernet 0/6)# switchport access vlan 40
DeviceC(config-if-GigabitEthernet 0/6)# end
DeviceC# write
# 配置Device D。
DeviceD(config)# interface gigabitethernet 0/3
DeviceD(config-if-GigabitEthernet 0/3)# switchport
DeviceD(config-if-GigabitEthernet 0/3)# switchport mode access
DeviceD(config-if-GigabitEthernet 0/3)# switchport access vlan 10
DeviceD(config-if-GigabitEthernet 0/3)# exit
DeviceD(config)# interface gigabitethernet 0/4
DeviceD(config-if-GigabitEthernet 0/4)# switchport
DeviceD(config-if-GigabitEthernet 0/4)# switchport mode access
DeviceD(config-if-GigabitEthernet 0/4)# switchport access vlan 20
DeviceD(config-if-GigabitEthernet 0/4)# exit
DeviceD(config)# interface gigabitethernet 0/5
DeviceD(config-if-GigabitEthernet 0/5)# switchport
DeviceD(config-if-GigabitEthernet 0/5)# switchport mode access
DeviceD(config-if-GigabitEthernet 0/5)# switchport access vlan 30
DeviceD(config-if-GigabitEthernet 0/5)# exit
DeviceD(config)# interface gigabitethernet 0/6
DeviceD(config-if-GigabitEthernet 0/6)# switchport
DeviceD(config-if-GigabitEthernet 0/6)# switchport mode access
DeviceD(config-if-GigabitEthernet 0/6)# switchport access vlan 40
DeviceD(config-if-GigabitEthernet 0/6)# end
DeviceD# write
通过show spanning-tree summary查看生成树拓扑。
# 在Device A上查看生成树拓扑。Device A(00d0.f822.3344)为根。
DeviceA# show spanning-tree summary
Spanning tree enabled protocol mstp
MST 0 vlans map : 1-9, 11-19, 21-29, 31-39, 41-4094
Root ID Priority 4096
Address 00d0.f822.3344
this bridge is root
Hello Time 4 sec Forward Delay 18 sec Max Age 25 sec
Bridge ID Priority 4096
Address 00d0.f822.3344
Hello Time 4 sec Forward Delay 18 sec Max Age 25 sec
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Ag1 Desg FWD 19000 128 False P2p
Gi0/1 Desg FWD 200000 128 False P2p
Gi0/2 Desg FWD 200000 128 False P2p
MST 1 vlans map : 10,30
Region Root Priority 4096
Address 00d0.f822.3344
this bridge is region root
Bridge ID Priority 4096
Address 00d0.f822.3344
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Ag1 Desg FWD 19000 128 False P2p
Gi0/1 Desg FWD 200000 128 False P2p
Gi0/2 Desg FWD 200000 128 False P2p
MST 2 vlans map : 20,40
Region Root Priority 4096
Address 001a.a917.78cc
this bridge is region root
Bridge ID Priority 8192
Address 00d0.f822.3344
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Ag1 Root FWD 19000 128 False P2p
Gi0/1 Desg FWD 200000 128 False P2p
Gi0/2 Desg FWD 200000 128 False P2p
# 在Device B上查看生成树拓扑。Device A(00d0.f822.3344)为根。
DeviceB# show spanning-tree summary
Spanning tree enabled protocol mstp
MST 0 vlans map : 1-9, 11-19, 21-29, 31-39, 41-4094
Root ID Priority 4096
Address 00d0.f822.3344
this bridge is root
Hello Time 4 sec Forward Delay 18 sec Max Age 25 sec
Bridge ID Priority 8192
Address 001a.a917.78cc
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Ag1 Root FWD 19000 128 False P2p
Gi0/1 Desg FWD 200000 128 False P2p
Gi0/2 Desg FWD 200000 128 False P2p
MST 1 vlans map : 10,30
Region Root Priority 4096
Address 00d0.f822.3344
this bridge is region root
Bridge ID Priority 8192
Address 001a.a917.78cc
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Ag1 Root FWD 19000 128 False P2p
Gi0/1 Desg FWD 200000 128 False P2p
Gi0/2 Desg FWD 200000 128 False P2p
MST 2 vlans map : 20,40
Region Root Priority 4096
Address 001a.a917.78cc
this bridge is region root
Bridge ID Priority 4096
Address 001a.a917.78cc
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Ag1 Desg FWD 19000 128 False P2p
Gi0/1 Desg FWD 200000 128 False P2p
Gi0/2 Desg FWD 200000 128 False P2p
# 在Device C和D上查看生成树拓扑,以Device C为例。Device A(00d0.f822.3344)为根。
DeviceC# show spanning-tree summary
Spanning tree enabled protocol mstp
MST 0 vlans map : 1-9, 11-19, 21-29, 31-39, 41-4094
Root ID Priority 4096
Address 00d0.f822.3344
this bridge is root
Hello Time 4 sec Forward Delay 18 sec Max Age 25 sec
Bridge ID Priority 32768
Address 001a.a979.00ea
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Interface Role Sts Cost Prio Type OperEdge
---------------- ---- --- ---------- -------- ----- ---------------
Gi0/2 Altn BLK 200000 128 P2p False
Gi0/1 Root FWD 200000 128 P2p False
MST 1 vlans map : 10,30
Region Root Priority 4096
Address 00d0.f822.3344
this bridge is region root
Bridge ID Priority 32768
Address 001a.a979.00ea
Interface Role Sts Cost Prio Type OperEdge
---------------- ---- --- ---------- -------- ----- ---------------
Gi0/2 Altn BLK 200000 128 P2p False
Gi0/1 Root FWD 200000 128 P2p False
MST 2 vlans map : 20,40
Region Root Priority 4096
Address 001a.a917.78cc
this bridge is region root
Bridge ID Priority 32768
Address 001a.a979.00ea
Interface Role Sts Cost Prio Type OperEdge
---------------- ---- --- ---------- -------- ----- ---------------
Gi0/2 Root FWD 200000 128 P2p False
Gi0/1 Altn BLK 200000 128 P2p False
通过show vrrp brief查看VRRP主备建立是否成功。VLAN 10和30以Device A为主设备,以Device B为备份设备;VLAN 20和40以Device B为主设备,以Device A为备份设备。
# 在Device A上通过show vrrp brief查看VRRP主备建立成功。
DeviceA# show vrrp brief
Interface Grp Pri timer Own Pre State Master addr Group addr
VLAN 10 10 120 3 - P Master 192.168.10.3 192.168.10.1
VLAN 20 20 100 3 - P Backup 192.168.20.2 192.168.20.1
VLAN 30 30 120 3 - P Master 192.168.30.3 192.168.30.1
VLAN 40 40 100 3 - P Backup 192.168.40.2 192.168.40.1
# 在Device B上通过show vrrp brief查看VRRP主备建立成功。
DeviceB# show vrrp brief
Interface Grp Pri timer Own Pre State Master addr Group addr
VLAN 10 10 100 3 - P Backup 192.168.10.2 192.168.10.1
VLAN 20 20 120 3 - P Master 192.168.20.3 192.168.20.1
VLAN 30 30 100 3 - P Backup 192.168.30.2 192.168.30.1
VLAN 40 40 120 3 - P Master 192.168.40.3 192.168.40.1
断开Device A的上行链路GigabitEthernet 0/5,VLAN 10和30以Device B为主设备,Device A为备份设备。
# 在Device A上通过show vrrp brief查看VRRP状态变化。
DeviceA#show vrrp brief
Interface Grp Pri timer Own Pre State Master addr Group addr
VLAN 10 10 90 3 - P Backup 192.168.10.3 192.168.10.1
VLAN 20 20 100 3 - P Backup 192.168.20.2 192.168.20.1
VLAN 30 30 90 3 - P Backup 192.168.30.3 192.168.30.1
VLAN 40 40 100 3 - P Backup 192.168.40.2 192.168.40.1
# 在Device B上通过show vrrp brief查看VRRP状态变化。
DeviceB# show vrrp brief
Interface Grp Pri timer Own Pre State Master addr Group addr
VLAN 10 10 100 3 - P Master 192.168.10.2 192.168.10.1
VLAN 20 20 120 3 - P Master 192.168.20.3 192.168.20.1
VLAN 30 30 100 3 - P Master 192.168.30.2 192.168.30.1
VLAN 40 40 120 3 - P Master 192.168.40.3 192.168.40.1
断开Device B的上行链路GigabitEthernet 0/5,VLAN 20和40以Device A为主设备,Device B为备份设备。
# 在Device A上通过show vrrp brief查看VRRP状态变化。
DeviceA# show vrrp brief
Interface Grp Pri timer Own Pre State Master addr Group addr
VLAN 10 10 120 3 - P Master 192.168.10.3 192.168.10.1
VLAN 20 20 100 3 - P Master 192.168.20.2 192.168.20.1
VLAN 30 30 120 3 - P Master 192.168.30.3 192.168.30.1
VLAN 40 40 100 3 - P Master 192.168.40.2 192.168.40.1
# 在Device B上通过show vrrp brief查看VRRP状态变化。
DeviceB# show vrrp brief
Interface Grp Pri timer Own Pre State Master addr Group addr
VLAN 10 10 100 3 - P Backup 192.168.10.2 192.168.10.1
VLAN 20 20 90 3 - P Backup 192.168.20.3 192.168.20.1
VLAN 30 30 100 3 - P Backup 192.168.30.2 192.168.30.1
VLAN 40 40 90 3 - P Backup 192.168.40.3 192.168.40.1
Device A的配置文件
hostname DeviceA
spanning-tree mst configuration
instance 0 vlan 1-9, 11-19, 21-29, 31-39, 41-4094
instance 1 vlan 10, 30
instance 2 vlan 20, 40
!
spanning-tree mst 0 priority 4096
spanning-tree mst 1 priority 4096
spanning-tree mst 2 priority 8192
spanning-tree
!
sysmac 00d0.f822.3344
!
vlan range 1,10,20,30,40
!
interface GigabitEthernet 0/1
switchport
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
!
interface GigabitEthernet 0/2
switchport
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
!
interface GigabitEthernet 0/3
port-group 1
!
interface GigabitEthernet 0/4
port-group 1
!
interface AggregatePort 1
switchport
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
!
interface gigabitethernet 0/5
no switchport
ip address 10.10.1.1 255.255.255.0
!
interface vlan 10
ip address 192.168.10.3 255.255.255.0
vrrp 10 ip 192.168.10.1
vrrp 10 priority 120
vrrp 10 track gigabitethernet 0/5 30
!
interface vlan 20
ip address 192.168.20.2 255.255.255.0
vrrp 20 ip 192.168.20.1
!
interface vlan 30
ip address 192.168.30.3 255.255.255.0
vrrp 30 ip 192.168.30.1
vrrp 30 priority 120
vrrp 30 track gigabitethernet 0/5 30
!
interface vlan 40
ip address 192.168.40.2 255.255.255.0
vrrp 40 ip 192.168.40.1
Device B的配置文件
hostname DeviceB
spanning-tree mst configuration
instance 0 vlan 1-9, 11-19, 21-29, 31-39, 41-4094
instance 1 vlan 10, 30
instance 2 vlan 20, 40
!
spanning-tree mst 0 priority 8192
spanning-tree mst 1 priority 8192
spanning-tree mst 2 priority 4096
spanning-tree
!
sysmac 001a.a917.78cc
!
vlan range 1,10,20,30,40
!
interface GigabitEthernet 0/1
switchport
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
!
interface GigabitEthernet 0/2
switchport
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
!
interface GigabitEthernet 0/3
port-group 1
!
interface GigabitEthernet 0/4
port-group 1
!
interface AggregatePort 1
switchport
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
!
interface gigabitethernet 0/5
no switchport
ip address 10.10.2.1 255.255.255.0
!
interface vlan 10
ip address 192.168.10.2 255.255.255.0
vrrp 10 ip 192.168.10.1
!
interface vlan 20
ip address 192.168.20.3 255.255.255.0
vrrp 20 ip 192.168.20.1
vrrp 20 priority 120
vrrp 20 track gigabitethernet 0/5 30
!
interface vlan 30
ip address 192.168.30.2 255.255.255.0
vrrp 30 ip 192.168.30.1
!
interface vlan 40
ip address 192.168.40.3 255.255.255.0
vrrp 40 ip 192.168.40.1
vrrp 40 priority 120
vrrp 40 track gigabitethernet 0/5 30
Device C和Device D的配置文件
spanning-tree mst configuration
instance 0 vlan 1-9, 11-19, 21-29, 31-39, 41-4094
instance 1 vlan 10, 30
instance 2 vlan 20, 40
!
spanning-tree
!
vlan range 1,10,20,30,40
!
interface GigabitEthernet 0/1
switchport
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
!
interface GigabitEthernet 0/2
switchport
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
!
interface GigabitEthernet 0/3
switchport
switchport mode access
switchport access vlan 10
spanning-tree bpduguard enable
spanning-tree portfast
!
interface GigabitEthernet 0/4
switchport
switchport mode access
switchport access vlan 20
spanning-tree bpduguard enable
spanning-tree portfast
!
interface GigabitEthernet 0/5
switchport
switchport mode access
switchport access vlan 30
spanning-tree bpduguard enable
spanning-tree portfast
!
interface GigabitEthernet 0/6
switchport
switchport mode access
switchport access vlan 40
spanning-tree bpduguard enable
spanning-tree portfast
在MSTP+VRRP拓扑中,不同设备上的MST域配置不一致。
配置实例和VLAN的映射关系时未提前创建VLAN。
在MSTP+VRRP拓扑中,若某些设备运行的是STP或RSTP协议,则该设备将被当做不同MST域来进行生成树计算,此时计算出的生成树将与预期不同。
在图1-21所示拓扑,在Device A和B上开启MSTP协议,并配置相同的实例映射:配置实例1关联VLAN 10,GigabitEthernet 0/1属于VLAN 10;配置实例2关联VLAN 20,GigabitEthernet 0/2属于VLAN 20。配置接口生成树兼容,使接口发送的BPDU只携带所在VLAN对应的实例信息。
Device A和B可以采用相同配置,如下以Device A为例。
创建VLAN 10和20,创建实例1和2,实例1关联VLAN 10,实例2关联VLAN 20。再配置GigabitEthernet 0/1属于VLAN 10,GigabitEthernet 0/2属于VLAN 20,配置接口生成树兼容。最后开启生成树。
创建VLAN 10和20,创建实例1和2。实例1关联VLAN 10,实例2关联VLAN 20。
DeviceA> enable
DeviceA# configure terminal
DeviceA(config)# vlan range 10,20
DeviceA(config-vlan-range)# exit
DeviceA(config)# spanning-tree mst configuration
DeviceA(config-mst)# instance 1 vlan 10
DeviceA(config-mst)# instance 2 vlan 20
DeviceA(config-mst)# exit
配置GigabitEthernet 0/1属于VLAN 10;GigabitEthernet 0/2属于VLAN 20;配置接口生成树兼容。
DeviceA(config)# interface gigabitethernet 0/1
DeviceA(config-if-GigabitEthernet 0/1)# switchport
DeviceA(config-if-GigabitEthernet 0/1)# switchport mode access
DeviceA(config-if-GigabitEthernet 0/1)# switchport access vlan 10
DeviceA(config-if-GigabitEthernet 0/1)# spanning-tree compatible enable
DeviceA(config-if-GigabitEthernet 0/1)# exit
DeviceA(config)# interface gigabitethernet 0/2
DeviceA(config-if-GigabitEthernet 0/2)# switchport
DeviceA(config-if-GigabitEthernet 0/2)# switchport mode access
DeviceA(config-if-GigabitEthernet 0/2)# switchport access vlan 20
DeviceA(config-if-GigabitEthernet 0/2)# spanning-tree compatible enable
DeviceA(config-if-GigabitEthernet 0/2)# exit
开启生成树。
DeviceA(config)# spanning-tree
DeviceA(config)# end
DeviceA# write
若未配置接口生成树兼容的情况下,查看生成树如下。
# Device A因桥ID较小成为Device B的根。Device A的GigabitEthernet 0/1和GigabitEthernet 0/2在各实例中均为指定端口。
DeviceA# show spanning-tree summary
Spanning tree enabled protocol mstp
MST 0 vlans map : 1-9, 11-19, 21-4094
Root ID Priority 32768
Address 0074.9cee.53ca
this bridge is root
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Bridge ID Priority 32768
Address 0074.9cee.53ca
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/1 Desg FWD 20000 128 False P2p
Gi0/2 Desg FWD 20000 128 False P2p
MST 1 vlans map : 10
Region Root Priority 32768
Address 0074.9cee.53ca
this bridge is region root
Bridge ID Priority 32768
Address 0074.9cee.53ca
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/1 Desg FWD 20000 128 False P2p
Gi0/2 Desg FWD 20000 128 False P2p
MST 2 vlans map : 20
Region Root Priority 32768
Address 0074.9cee.53ca
this bridge is region root
Bridge ID Priority 32768
Address 0074.9cee.53ca
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/1 Desg FWD 20000 128 False P2p
Gi0/2 Desg FWD 20000 128 False P2p
# 查看Devcie B。在实例1生成树中,属于VLAN 10的GigabitEthernet 0/1为根端口,属于VLAN 20的GigabitEthernet 0/2为替换端口;但是因GigabitEthernet 0/2不许可VLAN 10通过,替换端口并不能起到替换作用。在实例2生成树中,属于VLAN 20的GigabitEthernet 0/2为根端口,属于VLAN 10的GigabitEthernet 0/1为替换端口;但是因GigabitEthernet 0/1不许可VLAN 20通过,替换端口并不能起到替换作用。
DeviceB# show spanning-tree summary
Spanning tree enabled protocol mstp
MST 0 vlans map : 1-9, 11-19, 21-4094
Root ID Priority 32768
Address 0074.9cee.53ca
this bridge is root
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Bridge ID Priority 32768
Address 0074.9cee.f49e
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/1 Root FWD 20000 128 False P2p
Gi0/2 Altn BLK 20000 128 False P2p
MST 1 vlans map : 10
Region Root Priority 32768
Address 0074.9cee.53ca
this bridge is region root
Bridge ID Priority 32768
Address 0074.9cee.f49e
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/1 Root FWD 20000 128 False P2p
Gi0/2 Altn BLK 20000 128 False P2p
MST 2 vlans map : 20
Region Root Priority 32768
Address 0074.9cee.53ca
this bridge is region root
Bridge ID Priority 32768
Address 0074.9cee.f49e
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/1 Altn BLK 20000 128 False P2p
Gi0/2 Root FWD 20000 128 False P2p
配置接口生成树兼容功能后,在Device A上查看生成树拓扑。Device A因桥ID较小成为Device B的根。
# 实例0未进行生成树裁剪,GigabitEthernet 0/1和GigabitEthernet 0/2为指定端口。
DeviceA# show spanning-tree summary
Spanning tree enabled protocol mstp
MST 0 vlans map : 1-9, 11-19, 21-4094
Root ID Priority 32768
Address 0074.9cee.53ca
this bridge is root
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Bridge ID Priority 32768
Address 0074.9cee.53ca
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/1 Desg FWD 20000 128 False P2p
Gi0/2 Desg FWD 20000 128 False P2p
# 实例1进行了生成树裁剪,只有属于VLAN 10的GigabitEthernet 0/1为指定端口。
MST 1 vlans map : 10
Region Root Priority 32768
Address 0074.9cee.53ca
this bridge is region root
Bridge ID Priority 32768
Address 0074.9cee.53ca
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/1 Desg FWD 20000 128 False P2p
# 实例2进行了生成树裁剪,只有属于VLAN 20的GigabitEthernet 0/2为指定端口。
MST 2 vlans map : 20
Region Root Priority 32768
Address 0074.9cee.53ca
this bridge is region root
Bridge ID Priority 32768
Address 0074.9cee.53ca
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/2 Desg FWD 20000 128 False P2p
在DeviceB上查看生成树拓扑。Device A因桥ID较小成为Device B的根。
# 实例0未进行生成树裁剪,GigabitEthernet 0/1为根端口,GigabitEthernet 0/2为替换端口。
DeviceB# show spanning-tree summary
Spanning tree enabled protocol mstp
MST 0 vlans map : 1-9, 11-19, 21-4094
Root ID Priority 32768
Address 0074.9cee.53ca
this bridge is root
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Bridge ID Priority 32768
Address 0074.9cee.f49e
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/1 Root FWD 20000 128 False P2p
Gi0/2 Altn BLK 20000 128 False P2p
# 实例1进行了生成树裁剪,只有属于VLAN 10的GigabitEthernet 0/1为根端口,不存在替换端口。
MST 1 vlans map : 10
Region Root Priority 32768
Address 0074.9cee.53ca
this bridge is region root
Bridge ID Priority 32768
Address 0074.9cee.f49e
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/1 Root FWD 20000 128 False P2p
# 实例2进行了生成树裁剪,只有属于VLAN 20的GigabitEthernet 0/2为根端口,不存在替换端口。
MST 2 vlans map : 20
Region Root Priority 32768
Address 0074.9cee.53ca
this bridge is region root
Bridge ID Priority 32768
Address 0074.9cee.f49e
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/2 Root FWD 20000 128 False P2p
Device A和Device B的配置文件
spanning-tree mst configuration
instance 0 vlan 1-9, 11-19, 21-4094
instance 1 vlan 10
instance 2 vlan 20
!
spanning-tree
!
vlan range 1,10,20
!
interface GigabitEthernet 0/1
switchport
switchport mode access
switchport access vlan 10
spanning-tree compatible enable
!
interface GigabitEthernet 0/2
switchport
switchport mode access
switchport access vlan 20
spanning-tree compatible enable
若链路两端接口VLAN列表不一致,当接口生成树兼容功能对VLAN进行裁剪后,可能导致通信异常。
若未配置不同的实例,或接口许可所有VLAN通过,则生成树兼容功能无法基于实例进行生成树裁剪,也没有必要配置生成树兼容功能。
如图1-22 QinQ网络典型拓扑,上部为运营商网络,下部为用户网络。运营商网络包括边缘设备PE 1和PE 2。Customer Network A和Customer Network B为同一用户在不同地域的两个站点,CE 1和CE 2为用户网络到运营商网络的接入设备,分别通过PE 1和PE 2接入运营商网络。
配置二层协议隧道,将用户网络中的二层协议报文从一端用户网络透明传输到另一端用户网络,使用户网络和运营商网络的二层协议分开计算,互不干扰。根据用户需要配置STP协议隧道功能,实现用户网络的BPDU报文在服务商网络进行隧道传输,使跨地域的用户网络跨越服务商网络统一生成树计算。
在PE 1和PE 2上配置MSTP生成树。通过配置桥优先级,使PE 1成为实例0和1的根,PE 2成为实例2的根,开启生成树协议。
在PE 1和PE 2上以基本QinQ为例配置QinQ封装方式。配置VLAN 10为Dot1q-tunnel口的Native VLAN,并且属于Dot1q-tunnel口的Untagged VLAN许可列表。采用VLAN 10为公网传输通道,先为用户数据报文封装一层VLAN 10 Tag,再在公网中转发数据报文。配置GigabitEthernet 0/1为Dot1q-tunnel口并开启STP协议隧道功能。开启全局STP协议隧道功能。
配置PE 1和PE 2上联口为Uplink口。
在CE 1和CE 2上配置STP生成树。配置CE 1桥优先级为0,配置定时器参数,开启生成树协议。
配置CE 1和CE 2的上联口和下联口为Trunk口。
在PE 1和PE 2上配置MSTP生成树协议。
# 在PE 1上配置实例0和1的桥优先级为4094,实例2的桥优先级为8192。
PE1> enable
PE1# configure terminal
PE1(config)# vlan range 10,20,30,40
PE1(config-vlan-range)# exit
PE1(config)# spanning-tree mst configuration
PE1(config-mst)# instance 1 vlan 10,30
PE1(config-mst)# instance 2 vlan 20,40
PE1(config-mst)# spanning-tree mst 0 priority 4096
PE1(config)# spanning-tree mst configuration
PE1(config-mst)# spanning-tree mst 1 priority 4096
PE1(config)# spanning-tree mst configuration
PE1(config-mst)# spanning-tree mst 2 priority 8192
PE1(config)# spanning-tree
# 在PE 2上配置实例2的优先级为4094,实例0和1的桥优先级为8192。
PE2> enable
PE2# configure terminal
PE2(config)# vlan range 10,20,30,40
PE2(config-vlan-range)# exit
PE2(config)# spanning-tree mst configuration
PE2(config-mst)# instance 1 vlan 10,30
PE2(config-mst)# instance 2 vlan 20,40
PE2(config-mst)# spanning-tree mst 0 priority 8192
PE2(config)# spanning-tree mst configuration
PE2(config-mst)# spanning-tree mst 1 priority 8192
PE2(config)# spanning-tree mst configuration
PE2(config-mst)# spanning-tree mst 2 priority 4096
PE2(config)# spanning-tree
在PE 1和PE 2上配置基本QinQ传输通道VLAN 10。开启接口和全局STP协议隧道功能。PE 1和PE 2配置相同,以PE 1为例。
PE1(config)# interface gigabitethernet 0/1
PE1(config-if-GigabitEthernet 0/1)# switchport
PE1(config-if-GigabitEthernet 0/1)# switchport mode dot1q-tunnel
PE1(config-if-GigabitEthernet 0/1)# switchport dot1q-tunnel native vlan 10
PE1(config-if-GigabitEthernet 0/1)# switchport dot1q-tunnel allowed vlan add untagged 10
PE1(config-if-GigabitEthernet 0/1)# exit
PE1(config)# l2protocol-tunnel stp
配置PE 1和PE 2的上联口为Uplink口。PE 1和PE 2配置相同,以PE 1为例。
PE1(config)# interface gigabitethernet 0/5
PE1(config-if-GigabitEthernet 0/5)# switchport
PE1(config-if-GigabitEthernet 0/5)# switchport mode uplink
PE1(config-if-GigabitEthernet 0/5)# switchport trunk native vlan 1
PE1(config-if-GigabitEthernet 0/5)# switchport trunk allowed vlan all
PE1(config-if-GigabitEthernet 0/5)# end
PE1# write
在CE 1和CE 2上配置STP生成树协议。
# 配置CE 1生成树协议模式为STP,配置桥优先级为0,配置定时器参数,开启生成树协议。
CE1> enable
CE1# configure terminal
CE1(config)# spanning-tree mode stp
CE1(config)# spanning-tree priority 0
CE1(config)# spanning-tree hello-time 4
CE1(config)# spanning-tree max-age 25
CE1(config)# spanning-tree forward-time 18
CE1(config)# spanning-tree
# 配置CE 2生成树协议模式为STP协议,开启生成树协议。
CE2> enable
CE2# configure terminal
CE2(config)# spanning-tree mode stp
CE2(config)# spanning-tree
配置CE 1和CE 2的上联口和下联口为Trunk口。CE 1和CE 2配置相同,以CE 1为例。
CE1(config)# interface range gigabitethernet 0/1-2
CE1(config-if-range)# switchport
CE1(config-if-range)# switchport mode trunk
CE1(config-if-range)# switchport trunk native vlan 1
CE1(config-if-range)# switchport trunk allowed vlan all
CE1(config-if-range)# end
CE1# write
查看PE 1和PE 2的Dot1q-tunnel口配置。PE 1和PE 2配置相同,以PE 1为例。
PE1# show interfaces dot1q-tunnel
========Interface Gi0/1========
Native vlan: 10
Allowed vlan list:1,10,
Tagged vlan list:
查看PE 1和PE 2具有独立的生成树拓扑。
# 查看PE 1上的生成树拓扑。对于实例0和1,PE 1为PE 2的根,GigaibtEthernet 0/5为指定端口。对于实例2,PE 2为PE 1的根,GigaibtEthernet 0/5为根端口。连接用户网络CE 1的GigaibtEthernet 0/1不在PE 1和PE 2的生成树拓扑中。PE 1的生成树时间参数(Hello Time 2 sec,Forward Delay 15 sec,Max Age 20 sec)为缺省值,并没有被CE 1的配置影响。
PE1# show spanning-tree summary
Spanning tree enabled protocol mstp
MST 0 vlans map : 1-9, 11-19, 21-29, 31-39, 41-4094
Root ID Priority 4096
Address 0074.9cee.f49e
this bridge is root
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Bridge ID Priority 4096
Address 0074.9cee.f49e
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/5 Desg FWD 20000 128 False P2p
MST 1 vlans map : 10, 30
Region Root Priority 4096
Address 0074.9cee.f49e
this bridge is region root
Bridge ID Priority 4096
Address 0074.9cee.f49e
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/5 Desg FWD 20000 128 False P2p
MST 2 vlans map : 20, 40
Region Root Priority 4096
Address 00d0.f8ee.8c1e
this bridge is region root
Bridge ID Priority 8192
Address 0074.9cee.f49e
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/5 Root FWD 20000 128 False P2p
# 查看PE 2上的生成树拓扑。对于实例0和1,PE 1为PE 2的根,GigaibtEthernet 0/5为根端口。对于实例2,PE 2为PE 1的根,GigaibtEthernet 0/5为指定端口。连接用户网络CE 2的GigaibtEthernet 0/1不在PE 1和PE 2的生成树拓扑中。PE 2的生成树时间参数(Hello Time 2 sec,Forward Delay 15 sec,Max Age 20 sec)为缺省值,并没有被CE 1的配置影响。
PE2# show spanning-tree summary
Spanning tree enabled protocol mstp
MST 0 vlans map : 1-9, 11-19, 21-29, 31-39, 41-4094
Root ID Priority 4096
Address 0074.9cee.f49e
this bridge is root
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Bridge ID Priority 8192
Address 00d0.f8ee.8c1e
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/5 Root FWD 20000 128 False P2p
MST 1 vlans map : 10, 30
Region Root Priority 4096
Address 0074.9cee.f49e
this bridge is region root
Bridge ID Priority 8192
Address 00d0.f8ee.8c1e
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/5 Root FWD 20000 128 False P2p
MST 2 vlans map : 20, 40
Region Root Priority 4096
Address 00d0.f8ee.8c1e
this bridge is region root
Bridge ID Priority 4096
Address 00d0.f8ee.8c1e
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/5 Desg FWD 20000 128 False P2p
查看CE 1和CE 2具有独立的生成树拓扑。
# 查看CE 1上的生成树拓扑。CE 1为CE 2的根,CE 1的GigabitEthernet 0/1为指定端口。CE 1的生成树时间参数(Hello Time 4 sec,Forward Delay 18 sec,Max Age 25 sec)为配置值。
CE1# show spanning-tree summary
Spanning tree enabled protocol stp
Root ID Priority 0
Address 0074.9cee.53ca
this bridge is root
Hello Time 4 sec Forward Delay 18 sec Max Age 25 sec
Bridge ID Priority 0
Address 0074.9cee.53ca
Hello Time 4 sec Forward Delay 18 sec Max Age 25 sec
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/1 Desg FWD 20000 128 False P2p
Gi0/2 Desg FWD 20000 128 False P2p
# 查看CE 2上的生成树拓扑。CE 1为CE 2的根,CE 2的GigabitEthernet 0/1为根端口。CE 2的生成树时间参数(Hello Time 4 sec,Forward Delay 18 sec,Max Age 25 sec)为根CE 1的配置值。
CE2# show spanning-tree summary
Spanning tree enabled protocol stp
Root ID Priority 0
Address 0074.9cee.53ca
this bridge is root
Hello Time 4 sec Forward Delay 18 sec Max Age 25 sec
Bridge ID Priority 32768
Address 0074.9c11.c9e6
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/1 Root FWD 20000 128 False P2p Bound(STP)
Gi0/2 Desg FWD 20000 128 False P2p
PE 1的配置文件
l2protocol-tunnel stp
spanning-tree mst configuration
instance 0 vlan 1-9, 11-19, 21-29, 31-39, 41-4094
instance 1 vlan 10, 30
instance 2 vlan 20, 40
!
spanning-tree mst 0 priority 4096
spanning-tree mst 1 priority 4096
spanning-tree mst 2 priority 8192
spanning-tree
!
sysmac 0074.9cee.f49e
!
vlan range 1,10,20,30,40
!
interface GigabitEthernet 0/1
switchport
switchport mode dot1q-tunnel
switchport dot1q-tunnel allowed vlan add untagged 10
switchport dot1q-tunnel native vlan 10
!
interface GigabitEthernet 0/5
switchport
switchport mode uplink
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
PE 2的配置文件
l2protocol-tunnel stp
spanning-tree mst configuration
instance 0 vlan 1-9, 11-19, 21-29, 31-39, 41-4094
instance 1 vlan 10, 30
instance 2 vlan 20, 40
!
spanning-tree mst 0 priority 8192
spanning-tree mst 1 priority 8192
spanning-tree mst 2 priority 4096
spanning-tree
!
sysmac 00d0.f8ee.8c1e
!
vlan range 1,10,20,30,40
!
interface GigabitEthernet 0/1
switchport
switchport mode dot1q-tunnel
switchport dot1q-tunnel allowed vlan add untagged 10
switchport dot1q-tunnel native vlan 10
!
interface GigabitEthernet 0/5
switchport
switchport mode uplink
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
CE 1的配置文件
spanning-tree max-age 25
spanning-tree forward-time 18
spanning-tree hello-time 4
spanning-tree mode stp
spanning-tree mst 0 priority 0
spanning-tree
!
sysmac 0074.9cee.53ca
!
interface GigabitEthernet 0/1
switchport
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
!
interface GigabitEthernet 0/2
switchport
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
CE 2的配置文件
spanning-tree mode stp
spanning-tree
!
sysmac 0074.9c11.c9e6
!
interface GigabitEthernet 0/1
switchport
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
!
interface GigabitEthernet 0/2
switchport
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
未同时在全局和接口上开启二层协议隧道功能,导致BPDU隧道功能不生效。
运营商网络中配置的BPDU隧道地址不一致,导致无法正确传输用户网络的BPDU帧。
如图1-23拓扑所示,原本Device A和B互联并且开启MSTP生成树协议,Device A为Device B的根。在Device A和B之间增加一台未开启生成树协议的Device C。在Device C上配置BPDU透传功能传输Device A和B的生成树报文,使Device A和B之间仍然可以构成生成树。
在Device A上配置生成树协议,配置Device A的桥优先级为0(小于缺省值32768),GigabitEthernet 0/2的端口优先级为16(小于缺省值128),使Device A成为Device B的根桥,并且Device B的GigabitEthernet 0/2成为根端口。
在Device B上开启生成树协议。
在Device C上配置BPDU透传功能。
互联端口均配置为Trunk口。
在Device A上将互联端口配置为Trunk口。配置设备优先级和端口优先级,开启生成树功能。
DeviceA(config)# spanning-tree mst 0 priority 0
DeviceA(config)# interface gigabitethernet 0/1
DeviceA(config-if-GigabitEthernet 0/1)# switchport
DeviceA(config-if-GigabitEthernet 0/1)# switchport mode trunk
DeviceA(config-if-GigabitEthernet 0/1)# switchport trunk native vlan 1
DeviceA(config-if-GigabitEthernet 0/1)# switchport trunk allowed vlan all
DeviceA(config-if-GigabitEthernet 0/1)# exit
DeviceA(config)# interface gigabitethernet 0/2
DeviceA(config-if-GigabitEthernet 0/2)# switchport
DeviceA(config-if-GigabitEthernet 0/2)# switchport mode trunk
DeviceA(config-if-GigabitEthernet 0/2)# switchport trunk native vlan 1
DeviceA(config-if-GigabitEthernet 0/2)# switchport trunk allowed vlan all
DeviceA(config-if-GigabitEthernet 0/2)# spanning-tree mst 0 port-priority 16
DeviceA(config-if-GigabitEthernet 0/2)# exit
DeviceA(config)# spanning-tree
在Device B上开启生成树功能,将互联端口配置为Trunk口。
DeviceB> enable
DeviceB# configure terminal
DeviceB(config)# spanning-tree
DeviceB(config)# interface gigabitethernet 0/1
DeviceB(config-if-GigabitEthernet 0/1)# switchport
DeviceB(config-if-GigabitEthernet 0/1)# switchport mode trunk
DeviceB(config-if-GigabitEthernet 0/1)# switchport trunk native vlan 1
DeviceB(config-if-GigabitEthernet 0/1)# switchport trunk allowed vlan all
DeviceB(config-if-GigabitEthernet 0/1)# exit
DeviceB(config)# interface gigabitethernet 0/2
DeviceB(config-if-GigabitEthernet 0/2)# switchport
DeviceB(config-if-GigabitEthernet 0/2)# switchport mode trunk
DeviceB(config-if-GigabitEthernet 0/2)# switchport trunk native vlan 1
DeviceB(config-if-GigabitEthernet 0/2)# switchport trunk allowed vlan all
在Device C上配置BPDU透传功能,将互联端口配置为Trunk口。
DeviceC> enable
DeviceC# configure terminal
DeviceC(config)# no spanning-tree
DeviceC(config)# bridge-frame forwarding protocol bpdu
DeviceC(config)# interface range gigabitethernet 0/1-4
DeviceC(config-if-rang)# switchport
DeviceC(config-if-rang)# switchport mode trunk
DeviceC(config-if-rang)# switchport trunk native vlan 1
DeviceC(config-if-rang)# switchport trunk allowed vlan all
# 查看Device A的生成树拓扑。Device A为根。
DeviceA# show spanning-tree summary
Spanning tree enabled protocol mstp
MST 0 vlans map : ALL
Root ID Priority 0
Address 0074.9cee.53ca
this bridge is root
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Bridge ID Priority 0
Address 0074.9cee.53ca
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/1 Desg FWD 20000 128 False P2p
Gi0/2 Desg FWD 20000 16 False P2p
# 查看Device B的生成树拓扑。Device A为Device B的根。因为Device A上修改了端口优先级,Device B的GigabitEthernet 0/2成为根端口,GigabitEthernet 0/1成为替换端口。
DeviceB# show spanning-tree summary
Spanning tree enabled protocol mstp
MST 0 vlans map : ALL
Root ID Priority 0
Address 0074.9cee.53ca
this bridge is root
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Bridge ID Priority 8192
Address 00d0.f8ee.8c1e
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/1 Altn BLK 20000 128 False P2p
Gi0/2 Root FWD 20000 128 False P2p
当Device C接入拓扑后,查看生成树拓扑。
# 在Device A上查看生成树拓扑,Device A的生成树拓扑无变化。
DeviceA# show spanning-tree summary
Spanning tree enabled protocol mstp
MST 0 vlans map : ALL
Root ID Priority 0
Address 0074.9cee.53ca
this bridge is root
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Bridge ID Priority 0
Address 0074.9cee.53ca
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/1 Desg FWD 20000 128 False P2p
Gi0/2 Desg FWD 20000 16 False P2p
# 在Device B上查看生成树拓扑。Device A仍然为Device B的根,但是Device B的GigabitEthernet 0/1成为了根端口,GigabitEthernet 0/2成为了替换端口。因为采用Device C透传生成树报文后,Device B的GigabitEthernet 0/1和0/2口都可以收到Device A的GigabitEthernet 0/2发送的BPDU报文,所以无法通过端口优先级来选举根端口,Device B的GigabitEthernet 0/1因为端口ID更小被选举为根端口。
DeviceB# show spanning-tree summary
Spanning tree enabled protocol mstp
MST 0 vlans map : ALL
Root ID Priority 0
Address 0074.9cee.53ca
this bridge is root
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Bridge ID Priority 8192
Address 00d0.f8ee.8c1e
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/1 Root FWD 20000 128 False P2p
Gi0/2 Altn BLK 20000 128 False P2p
Device A的配置文件
spanning-tree mst 0 priority 0
spanning-tree
!
interface GigabitEthernet 0/1
switchport
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
!
interface GigabitEthernet 0/2
switchport
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
spanning-tree mst 0 port-priority 16
Device B的配置文件
spanning-tree
interface GigabitEthernet 0/1
switchport
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
!
interface GigabitEthernet 0/2
switchport
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
Device C的配置文件
bridge-frame forwarding protocol bpdu
!
interface GigabitEthernet 0/1
switchport
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
!
interface GigabitEthernet 0/2
switchport
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
!
interface GigabitEthernet 0/3
switchport
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
!
interface GigabitEthernet 0/4
switchport
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
如图1-24拓扑所示,Device A和B组成M-LAG Domain 1。
GigabitEthernet 0/3和0/4加入AggregatePort 3,AggregatePort 3作为M-LAG的Peer Link用来同步数据及传输部分流量。
GigabitEthernet 0/5作为Device A和B的双主检测链路,当Peer Link链路故障时用来检测M-LAG设备的双主状态。
下联Device C的两个GigabitEthernet 0/1接口加入AggregatePort 1,作为M-LAG的VAP 1。
下联Device D的两个GigabitEthernet 0/2接口加入AggregatePort 2,作为M-LAG的VAP 2。
Device C的上联口GigabitEthernet 0/1和0/2加入AggregatePort 1。
Device D的上联口GigabitEthernet 0/1和0/2加入AggregatePort 2。
为避免产生二层环路,配置Device A和B的桥优先级为4094,在Device A和B开启V-STP虚拟生成树功能,使Device A和B虚拟化为M-LAG Domain 1加入生成树计算。在Device C和D上开启普通生成树功能。
配置Device A的M-LAG功能。
# 创建聚合端口AggregatePort 3,并配置其为Peer Link口。配置GigabitEthernet 0/3和0/4为聚合端口AggregatePort 3的成员端口。
DeviceA> enable
DeviceA# configure terminal
DeviceA(config)# interface aggregateport 3
DeviceA(config-if-AggregatePort 3)# switchport
DeviceA(config-if-AggregatePort 3)# switchport mode trunk
DeviceA(config-if-AggregatePort 3)# switchport trunk native vlan 1
DeviceA(config-if-AggregatePort 3)# switchport trunk allowed vlan all
DeviceA(config-if-AggregatePort 3)# peer-link
DeviceA(config-if-AggregatePort 3)# exit
DeviceA(config)# interface gigabitethernet 0/3
DeviceA(config-if-GigabitEthernet 0/3)# description link-to-DeviceB-G0/3-peerlink
DeviceA(config-if-GigabitEthernet 0/3)# port-group 3 mode active
DeviceA(config-if-GigabitEthernet 0/3)# exit
DeviceA(config)# interface gigabitethernet 0/4
DeviceA(config-if-GigabitEthernet 0/4)# description link-to-DeviceB-G0/4-peerlink
DeviceA(config-if-GigabitEthernet 0/4)# port-group 3 mode active
DeviceA(config-if-GigabitEthernet 0/4)# exit
# 配置Peer Link链路三层SVI口IP地址为20.20.20.1/24。
DeviceA(config)# interface vlan 1
DeviceA(config-if-VLAN 1)# ip address 20.20.20.1/24
DeviceA(config-if-VLAN 1)# exit
# 配置双主检测通道本端端口GigabitEthernet 0/5的IP地址为192.168.3.1/24。
DeviceA(config)# interface gigabitethernet 0/5
DeviceA(config-if-GigabitEthernet 0/5)# description link-to-DeviceB-G0/5
DeviceA(config-if-GigabitEthernet 0/5)# no switchport
DeviceA(config-if-GigabitEthernet 0/5)# ip address 192.168.3.1/24
DeviceA(config-if-GigabitEthernet 0/5)# exit
# 配置VAP域编号为1,进入M-LAG配置模式。配置数据同步通道的本端IP地址为20.20.20.1,对端IP地址为20.20.20.2。配置双主检测通道的本端IP地址为192.168.3.1,对端IP地址为192.168.3.2。
DeviceA(config)# vap domain 1
DeviceA(config-vap-domain)# data-sync local 20.20.20.1 peer 20.20.20.2
DeviceA(config-vap-domain)# peer-keepalive local 192.168.3.1 peer 192.168.3.2
DeviceA(config-vap-domain)# exit
# 配置VAP 1:创建聚合端口AggregatePort 1并加入VAP 1。配置下联Device C的接口GigabitEthernet 0/1为聚合端口AggregatePort 1的成员端口。
DeviceA(config)# interface aggregateport 1
DeviceA(config-if-AggregatePort 1)# switchport
DeviceA(config-if-AggregatePort 1)# switchport mode trunk
DeviceA(config-if-AggregatePort 1)# switchport trunk native vlan 1
DeviceA(config-if-AggregatePort 1)# switchport trunk allowed vlan all
DeviceA(config-if-AggregatePort 1)# vap 1
DeviceA(config)# interface gigabitethernet 0/1
DeviceA(config-if-GigabitEthernet 0/1)# description link-to-DeviceC-G0/1
DeviceA(config-if-GigabitEthernet 0/1)# port-group 1 mode active
DeviceA(config-if-GigabitEthernet 0/1)# exit
# 配置VAP 2:创建聚合端口AggregatePort 2并加入VAP 2。配置下联Device D的接口GigabitEthernet 0/2为聚合端口AggregatePort 2的成员端口。
DeviceA(config)# interface aggregateport 2
DeviceA(config-if-AggregatePort 2)# switchport
DeviceA(config-if-AggregatePort 2)# switchport mode trunk
DeviceA(config-if-AggregatePort 2)# switchport trunk native vlan 1
DeviceA(config-if-AggregatePort 2)# switchport trunk allowed vlan all
DeviceA(config-if-AggregatePort 2)# vap 2
DeviceA(config)# interface gigabitethernet 0/2
DeviceA(config-if-GigabitEthernet 0/2)# description link-to-DeviceD-G0/2
DeviceA(config-if-GigabitEthernet 0/2)# port-group 2 mode active
DeviceA(config-if-GigabitEthernet 0/2)# exit
配置Device B的M-LAG功能。
# 创建聚合端口AggregatePort 3,并配置其为Peer Link口。配置GigabitEthernet 0/3和0/4为聚合端口AggregatePort 3的成员端口。
DeviceB> enable
DeviceB# configure terminal
DeviceB(config)# interface aggregateport 3
DeviceB(config-if-AggregatePort 3)# switchport
DeviceB(config-if-AggregatePort 3)# switchport mode trunk
DeviceB(config-if-AggregatePort 3)# switchport trunk native vlan 1
DeviceB(config-if-AggregatePort 3)# switchport trunk allowed vlan all
DeviceB(config-if-AggregatePort 3)# peer-link
DeviceB(config-if-AggregatePort 3)# exit
DeviceB(config)# interface gigabitethernet 0/3
DeviceB(config-if-GigabitEthernet 0/3)# description link-to-DeviceA-G0/3-peerlink
DeviceB(config-if-GigabitEthernet 0/3)# port-group 3 mode active
DeviceB(config-if-GigabitEthernet 0/3)# exit
DeviceB(config)# interface gigabitethernet 0/4
DeviceB(config-if-GigabitEthernet 0/4)# description link-to-DeviceA-G0/4-peerlink
DeviceB(config-if-GigabitEthernet 0/4)# port-group 3 mode active
DeviceB(config-if-GigabitEthernet 0/4)# exit
# 配置Peer Link链路三层SVI口IP地址为20.20.20.2/24。
DeviceB(config)# interface vlan 1
DeviceB(config-if-VLAN 1)# ip address 20.20.20.1/24
DeviceB(config-if-VLAN 1)# exit
# 配置双主检测通道本端端口GigabitEthernet 0/5的IP地址为192.168.3.2/24。
DeviceB(config)# interface gigabitethernet 0/5
DeviceB(config-if-GigabitEthernet 0/5)# description link-to-DeviceA-G0/5
DeviceB(config-if-GigabitEthernet 0/5)# no switchport
DeviceB(config-if-GigabitEthernet 0/5)# ip address 192.168.3.2/24
# 配置VAP域编号为1,进入M-LAG配置模式。配置数据同步通道的本端IP地址为20.20.20.2,对端IP地址为20.20.20.1。配置双主检测通道的本端IP地址为192.168.3.2,对端IP地址为192.168.3.1。
DeviceB(config)# vap domain 1
DeviceB(config-vap-domain)# data-sync local 20.20.20.2 peer 20.20.20.1
DeviceB(config-vap-domain)# peer-keepalive local 192.168.3.2 peer 192.168.3.1
DeviceB(config-vap-domain)# exit
# 配置VAP 1:创建聚合端口AggregatePort 1并加入VAP 1。配置下联Device C的接口GigabitEthernet 0/1为聚合端口AggregatePort 1的成员端口。
DeviceB(config)# interface aggregateport 1
DeviceB(config-if-AggregatePort 1)# switchport
DeviceB(config-if-AggregatePort 1)# switchport mode trunk
DeviceB(config-if-AggregatePort 1)# switchport trunk native vlan 1
DeviceB(config-if-AggregatePort 1)# switchport trunk allowed vlan all
DeviceB(config-if-AggregatePort 1)# vap 1
DeviceB(config)# interface gigabitethernet 0/1
DeviceB(config-if-GigabitEthernet 0/1)# description link-to-DeviceC-G0/2
DeviceB(config-if-GigabitEthernet 0/1)# port-group 1 mode active
DeviceB(config-if-GigabitEthernet 0/1)# exit
# 配置VAP 2:创建聚合端口AggregatePort 2并加入VAP 2。配置下联Device D的接口GigabitEthernet 0/2为聚合端口AggregatePort 2的成员端口。
DeviceB(config)# interface aggregateport 2
DeviceB(config-if-AggregatePort 2)# switchport
DeviceB(config-if-AggregatePort 2)# switchport mode trunk
DeviceB(config-if-AggregatePort 2)# switchport trunk native vlan 1
DeviceB(config-if-AggregatePort 2)# switchport trunk allowed vlan all
DeviceB(config-if-AggregatePort 2)# vap 2
DeviceB(config)# interface gigabitethernet 0/2
DeviceB(config-if-GigabitEthernet 0/2)# description link-to-DeviceD-G0/1
DeviceB(config-if-GigabitEthernet 0/2)# port-group 2 mode active
DeviceB(config-if-GigabitEthernet 0/2)# exit
在Device C上创建聚合端口AggregatePort 1,配置上联接口GigabitEthernet 0/1和0/2为AggregatePort 1的成员端口。
DeviceC> enable
DeviceC# configure terminal
DeviceC(config)# interface aggregateport 1
DeviceC(config-if-AggregatePort 1)# switchport
DeviceC(config-if-AggregatePort 1)# switchport mode trunk
DeviceC(config-if-AggregatePort 1)# switchport trunk native vlan 1
DeviceC(config-if-AggregatePort 1)# switchport trunk allowed vlan all
DeviceC(config-if-AggregatePort 1)# exit
DeviceC(config)# interface gigabitethernet 0/1
DeviceC(config-if-GigabitEthernet 0/1)# description link-to-DeviceA-G0/1
DeviceC(config-if-GigabitEthernet 0/1)# switchport
DeviceC(config-if-GigabitEthernet 0/1)# port-group 1 mode active
DeviceC(config-if-GigabitEthernet 0/1)# exit
DeviceC(config)# interface gigabitethernet 0/2
DeviceC(config-if-GigabitEthernet 0/2)# description link-to-DeviceB-G0/1
DeviceC(config-if-GigabitEthernet 0/2)# switchport
DeviceC(config-if-GigabitEthernet 0/2)# port-group 1 mode active
DeviceC(config-if-GigabitEthernet 0/2)# exit
在Device D上创建聚合端口AggregatePort 2,配置上联接口GigabitEthernet 0/1和0/2为AggregatePort 2的成员端口。
DeviceD> enable
DeviceD# configure terminal
DeviceD(config)# interface aggregateport 2
DeviceD(config-if-AggregatePort 2)# switchport
DeviceD(config-if-AggregatePort 2)# switchport mode trunk
DeviceD(config-if-AggregatePort 2)# switchport trunk native vlan 1
DeviceD(config-if-AggregatePort 2)# switchport trunk allowed vlan all
DeviceD(config-if-AggregatePort 2)# exit
DeviceD(config)# interface gigabitethernet 0/1
DeviceD(config-if-GigabitEthernet 0/1)# description link-to-DeviceB-G0/2
DeviceD(config-if-GigabitEthernet 0/1)# switchport
DeviceD(config-if-GigabitEthernet 0/1)# port-group 2 mode active
DeviceD(config-if-GigabitEthernet 0/1)# exit
DeviceD(config)# interface gigabitethernet 0/2
DeviceD(config-if-GigabitEthernet 0/2)# description link-to-DeviceA-G0/2
DeviceD(config-if-GigabitEthernet 0/2)# switchport
DeviceD(config-if-GigabitEthernet 0/2)# port-group 2 mode active
DeviceD(config-if-GigabitEthernet 0/2)# exit
在Device A和B上配置虚拟生成树。采用缺省模式MSTP,并在Device A和B上保持生成树配置一致。
# 在Decive A上配置桥优先级为4096,开启V-STP生成树功能。
DeviceA(config)# spanning-tree priority 4096
DeviceA(config)# spanning-tree
DeviceA(config)# spanning-tree v-stp enable
# 在Decive B上配置桥优先级为4096,开启V-STP生成树功能。
DeviceB(config)# spanning-tree priority 4096
DeviceB(config)# spanning-tree
DeviceB(config)# spanning-tree v-stp enable
在Decive C和D上开启普通生成树功能。
# 在Decive C上开启生成树功能。
DeviceC(config)# spanning-tree
# 在Decive D上开启生成树功能。
DeviceD(config)# spanning-tree
使用show vap summary命令查看M-LAG成功建立。
# 查看Device A上M-LAG成功建立。Device A为Master;Peer-link链路AggregatePort 3处于UP状态;下联通道AggregatePort 1和AggregatePort 2处于UP状态。
DeviceA# show vap summary
M-LAG domain : 1
M-LAG role : Master
Local address : 20.20.20.1
Peer address : 20.20.20.2
Negotiation status : ok
Peer keepalive status : alive
Consistency check mode : disable
Peer-link Status
-----------------------------
Ag3 UP
Group ID VAP Port Local-Status Peer-Status
-----------------------------------------------
1 Ag1 UP UP
2 Ag2 UP UP
# 查看Device B上M-LAG成功建立。Device B为Slave;Peer-link链路AggregatePort 3处于UP状态;下联通道AggregatePort 1和AggregatePort 2处于UP状态。
DeviceB# show vap summary
M-LAG domain : 1
M-LAG role : Slave
Local address : 20.20.20.2
Peer address : 20.20.20.1
Negotiation status : ok
Peer keepalive status : alive
Consistency check mode : disable
Peer-link Status
-----------------------------
Ag3 UP
Group ID VAP Port Local-Status Peer-Status
-----------------------------------------------
1 Ag1 UP UP
2 Ag2 UP UP
使用show spanning-tree v-stp information命令查看V-STP功能处于开启状态。
# 查看Device A上的V-STP功能处于开启状态。Local bridge mac表示本地桥地址为00d0.f822.363c,Selected bridge mac字段表示虚拟化网桥的MAC地址为00d0.f822.363c。
DeviceA# show spanning-tree v-stp information
V-STP status : enable
Local bridge mac : 00d0.f822.363c
Selected bridge mac : 00d0.f822.363c
Peerlink Port : AggregatePort3
Calculate Virtrual Index : 0
Mlag Remote device connected : Y
MST 0 Root Port : None
# 查看Device B上的V-STP功能处于开启状态。Local bridge mac表示本地桥地址为8005.8822.b170,Selected bridge mac字段表示虚拟化网桥的MAC地址为00d0.f822.363c。
DeviceB# show spanning-tree v-stp information
V-STP status : enable
Local bridge mac : 8005.8822.b170
Selected bridge mac : 00d0.f822.363c
Peerlink Port : AggregatePort 3
Calculate Virtrual Index : 4095
Mlag Remote device connected : Y
MST 0 Root Port : None
使用命令show spanning-tree summary查看生成树计算结果。
# 查看Device A的生成树计算结果。Device A(00d0.f822.363c)为根,本设备Bridge ID中的MAC地址为00d0.f822.363c。Devcie A的AggregatePort 1和AggregatePort 2为指定端口(Desg);端口均处于转发状态(FWD)。
DeviceA# show spanning-tree summary
Spanning tree enabled protocol mstp
MST 0 vlans map : ALL
Root ID Priority 4096
Address 00d0.f822.363c
this bridge is root
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Bridge ID Priority 4096
Address 00d0.f822.363c
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Ag1 Desg FWD 19000 128 False P2p
Ag2 Desg FWD 19000 128 False P2p
# 查看Device B的生成树计算结果。Device A(00d0.f822.363c)为根,本设备Bridge ID中的MAC地址为00d0.f822.363c,而非Device B的MAC地址8005.8822.b467,说明V-STP功能将M-LAG主备成功虚拟成一台网桥设备M-LAG Domain 1(00d0.f822.363c)为根进行计算;因为Device A的MAC地址00d0.f822.363c比Device B的MAC地址8005.8822.b467小,所以采用Device A的MAC地址构成M-LAG Domain 1的Bridge ID。Devcie B的AggregatePort 1和AggregatePort 2也为指定端口(Desg);端口均处于转发状态(FWD)。
DeviceB#show spanning-tree summary
Spanning tree enabled protocol mstp
MST 0 vlans map : ALL
Root ID Priority 4096
Address 00d0.f822.363c
this bridge is root
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Bridge ID Priority 4096
Address 00d0.f822.363c
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Ag1 Desg FWD 19000 128 True P2p
Ag2 Desg FWD 19000 128 False P2p
# 查看Device C的生成树计算结果。Device A和B构成的M-LAG Domain 1(00d0.f822.363c)为根,Devcie C的AggregatePort 1为根端口(Root),GigabitEthernet 0/3为指定端口(Desg);端口均处于转发状态(FWD)。
DeviceC# show spanning-tree summary
Spanning tree enabled protocol mstp
MST 0 vlans map : ALL
Root ID Priority 4096
Address 00d0.f822.363c
this bridge is root
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Bridge ID Priority 32768
Address 0074.9cee.53ca
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/3 Desg FWD 20000 128 False P2p
Ag1 Root FWD 19000 128 False P2p
# 查看Device D的生成树计算结果。Device A和B构成的M-LAG Domain 1(00d0.f822.363c)为根。Devcie D的AggregatePort 2为根端口(Root),端口均处于转发状态(FWD)。GigabitEthernet 0/3为替换端口(Altn),端口处于阻塞状态(BLK)。
DeviceD# show spanning-tree summary
Spanning tree enabled protocol mstp
MST 0 vlans map : ALL
Root ID Priority 4096
Address 00d0.f822.363c
this bridge is root
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Bridge ID Priority 32768
Address 00d0.f822.358c
Hello Time 2 sec Forward Delay 15 sec Max Age 20 sec
Interface Role Sts Cost Prio OperEdge Type
---------------- ---- --- ---------- -------- -------- ----------------
Gi0/3 Altn BLK 20000 128 False P2p
Ag2 Root FWD 19000 128 False P2p
Device A的配置文件
hostname DeviceA
spanning-tree mst 0 priority 4096
spanning-tree v-stp enable
spanning-tree
sysmac 00d0.f822.363c
vlan 1
!
interface GigabitEthernet0/1
description link-to-DeviceC-G0/1
switchport
port-group 1 mode active
!
interface GigabitEthernet0/2
description link-to-DeviceD-G0/2
switchport
port-group 2 mode active
!
interface GigabitEthernet0/3
description link-to-DeviceB-G0/3-peerlink
switchport
port-group 3 mode active
!
interface GigabitEthernet0/4
description link-to-DeviceB-G0/4-peerlink
switchport
port-group 3 mode active
!
interface GigabitEthernet0/5
no switchport
description link-to-DeviceB-G0/5
ip address 192.168.3.1 255.255.255.0
!
interface AggregatePort1
switchport
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
vap 1
!
interface AggregatePort2
switchport
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
vap 2
!
interface AggregatePort3
no mac-address-learning
switchport
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
peer-link
!
interface VLAN1
ip address 20.20.20.1 255.255.255.0
!
vap domain 1
data-sync local 20.20.20.1 peer 20.20.20.2
peer-keepalive local 192.168.3.1 peer 192.168.3.2
Device B的配置文件
hostname DeviceB
spanning-tree mst 0 priority 4096
spanning-tree v-stp enable
spanning-tree
sysmac 8005.8822.b467
vlan 1
!
interface GigabitEthernet 0/1
description link-to-DeviceC-G0/2
switchport
port-group 1 mode active
!
interface GigabitEthernet 0/2
description link-to-DeviceD-G0/1
switchport
port-group 2 mode active
!
interface GigabitEthernet 0/3
description link-to-DeviceA-G0/3-peerlink
switchport
port-group 3 mode active
!
interface GigabitEthernet 0/4
description link-to-DeviceA-G0/4-peerlink
switchport
port-group 3 mode active
!
interface GigabitEthernet 0/5
no switchport
description link-to-DeviceA-G0/5
ip address 192.168.3.2 255.255.255.0
!
interface AggregatePort 1
switchport
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
vap 1
!
interface AggregatePort 2
switchport
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
vap 2
!
interface AggregatePort 3
no mac-address-learning
switchport
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
peer-link
!
interface VLAN 1
ip address 20.20.20.2 255.255.255.0
!
vap domain 1
data-sync local 20.20.20.2 peer 20.20.20.1
peer-keepalive local 192.168.3.2 peer 192.168.3.1
Device C的配置文件
hostname DeviceC
spanning-tree
sysmac 0074.9cee.53ca
vlan 1
!
interface GigabitEthernet 0/1
description link-to-DeviceA-G0/1
switchport
port-group 1 mode active
!
interface GigabitEthernet 0/2
description link-to-DeviceB-G0/1
switchport
port-group 1 mode active
!
interface AggregatePort 1
switchport
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
Device D的配置文件
hostname DeviceD
spanning-tree
sysmac 00d0.f822.358c
vlan 1
!
interface GigabitEthernet 0/1
description link-to-DeviceB-G0/2
switchport
port-group 2 mode active
!
interface GigabitEthernet 0/2
description link-to-DeviceA-G0/2
switchport
port-group 2 mode active
!
interface AggregatePort 2
switchport
switchport mode trunk
switchport trunk native vlan 1
switchport trunk allowed vlan only 1-4094
M-LAG成员设备间未成功建联,会导致生成树无法成功虚拟化。此时先检查M-LAG聚合接口的状态是否正确,接口配置是否正确。
M-LAG场景里某台M-LAG成员设备V-STP功能未开启可能会导致V-STP计算错误。
M-LAG成员设备上生成树的桥优先级、MSTP域配置、加入同个VAP组的AP聚合口上的端口开销和端口优先级配置不一致,会导致V-STP计算错误。