STP 实验
实验内容
STP 计算过程
端口状态切换
RSTP 协议的两种工作模式
生成树计算过程
实验目的
帮助读者理解STP 的基本原理和生成树的生成过程
验证STP 端口状态的切换
验证RSTP 协议两种工作模式的互通性
实验环境
Quidway 系列S3026交换机4台,VRP 版本为:
VRP(R)Software,Version3.10(NA),RELEASE0009;
PC 一台,标准网线5根、配置电缆一根;
实验组网图
实验步骤
生成树的计算过程
如上图所示,4台QuidwayS 系列以太网交换机环形互连,2台PC 分别连接到SwitchA 和SwitchB 上。4台交换机MAC 地址分别为:
SwitchA :00e0-fc07-7089
SwicthB :
00e0-fc06-2380
SwitchC :00e0-fc07-7085
SwitchD :00e0-fc06-8200
完成连接一段时间这后,会看到交换机指示灯快速闪烁,说明4台交换机之间转发数据报文,存在环路,可以配置STP 协议避免环路。
STP (SpanningTreeProtocol )是生成树协议的英文缩写。该协议可应用于环路网络,通过一定的算法实现路径冗余,同时将环路网络修剪成无环路的树型网络,从而避免报文在环路网络中的增生和无限循环。
Quidway 以太网交换机所实现的快速生成树协议RSTP (RapidSpanningTreeProtocol )是生成树协议的优化版。其“快速”体现在根端口和指定端口进入转发状态的延时在某种条件下大大缩短,从而缩短了网络拓扑稳定需要的时间。
在Quidway 以太网交换机上启动STP 协议,命令如下:
[SwitchA]stpenable
[SwitchB]stpenable
[SwitchC]stpenable
[SwitchD]stpenable
全网配置RSTP 协议之后,默认情况下,交换机的每一个端口都启用了RSTP 协议。配置完成后,可以看到交换机指示灯不再快速闪烁,说明交换机已经建立了无环路的转发生成树。那么,这棵树到底什么样子呢?我们可以先从理论上来分析,然后我们通过交换机的状态信息来验证我们的理论分析结果。
生成树协议算法实现的具体过程如下:
初始状态
各台交换机的各个端口在初始时会生成以自己为根的配置消息,根路径开销为0,指定交换机ID 为自身交换机ID ,指定端口为本端口。
SwitchA :
端口Ethernet0/1配置消息:
{32768.00e0-fc07-7089,0,32768.00e0-fc07-7089,e0/1}
端口Ethernet0/3配置消息:
{32768.00e0-fc07-7089,0,32768.00e0-fc07-7089,e0/3}
SwitchB :
端口Ethernet0/1配置消息:
{32768.00e0-fc06-2380,0,32768.00e0-fc06-2380,e0/1}
端口Ethernet0/3配置消息:
{32768.00e0-fc06-2380,0,32768.00e0-fc06-2380,e0/3}
SwitchC :
端口Ethernet0/1配置消息:
{32768.00e0-fc07-7085,0,32768.00e0-fc07-7085,e0/1}
端口Ethernet0/3配置消息:
{32768.00e0-fc07-7085,0,32768.00e0-fc07-7085,e0/3}
SwitchD :
端口Ethernet0/1配置消息:
{32768.00e0-fc06-8200,0,32768.00e0-fc06-8200,e0/1}
端口Ethernet0/3配置消息:
{32768.00e0-fc06-8200,0,32768.00e0-fc06-8200,e0/3}
选出最优配置消息,确定根交换机
各台交换机都向外发送自己的配置消息。当某个端口收到比自身的配置消息优先级低的配置消息时,交换机会将接收到的配置消息丢弃,对该端口的配置消息不作任何处理。当端口收到比本端口配置消息优先级高的配置消息的时候,交换机就用接收到的配置消息中的内容替换该端口的配置消息中的内容。然后以太网交换机将该端口的配置消息和交换机上的其它端口的配置消息进行比较,选出最优的配置消息。
配置消息的比较原则是:
树根ID 较小的配置消息优先级高;
若树根ID 相同,则比较根路径开销,比较方法为:用配置消息中的根路径开销加上本端口对应的路径开销之和(设为S ),则S 较小的配置消息优先级较高;
若根路径开销也相同,则依次比较指定交换机ID 、指定端口ID 、接收该配置消息的端口ID 等。
根据比较原则,首先比较各交换机的ID ,由于交换机的ID 由交换机的优先级(缺省值:32768)和交换机的MAC 地址共同组成。起初交换机的优先级都是缺省值。所以,谁的MAC 值最小,谁就是根。很显然,根交换机应该是SwitchB 。可以用以下命令查看配置后的STP 信息:
[SwitchA]displaystp
Protocolmode:IEEERSTP
ThebridgeID(Pri.MAC):32768.00e0-fc07-7089
Thebridgetimes:HelloTime2sec,MaxAge20sec,ForwardDelay15sec
RootbridgeID(Pri.MAC):32768.00e0-fc06-2380
Rootpathcost:200
Bridgebpdu-protection:disabled
[SwitchB]displaystp
Protocolmode:IEEERSTP
ThebridgeID(Pri.MAC):32768.00e0-fc06-2380
Thebridgetimes:HelloTime2sec,MaxAge20sec,ForwardDelay15sec
RootbridgeID(Pri.MAC):32768.00e0-fc06-2380
Rootpathcost:0
Bridgebpdu-protection:disabled
[SwitchC]displaystp
Protocolmode:IEEERSTP
ThebridgeID(Pri.MAC):32768.00e0-fc07-7085
Thebridgetimes:HelloTime2sec,MaxAge20sec,ForwardDelay15sec
RootbridgeID(Pri.MAC):32768.00e0-fc06-2380
Rootpathcost:200
Bridgebpdu-protection:disabled
[SwitchD]displaystp
Protocolmode:IEEERSTP
ThebridgeID(Pri.MAC):32768.00e0-fc06-8200
Thebridgetimes:HelloTime2sec,MaxAge20sec,ForwardDelay15sec
RootbridgeID(Pri.MAC):32768.00e0-fc06-2380
Rootpathcost:400
Bridgebpdu-protection:disabled
我们可以看到,4台交换机都有下面信息:
RootbridgeID(Pri.MAC):32768.00e0-fc06-2380。
所以,根交换机为00e0.fc06.2380,也就是SwitchB ,根交换机默认优先级为32768(默认值,可以配置)。
确定根端口,并阻塞冗余链路,然后更新指定端口的配置消息
交换机接收最优配置消息的那个端口定为根端口,端口配置消息不作改变;其它端口中,如果某端口的配置消息在过程“选出最优配置消息”中更新过,则交换机将此端口阻塞,端口配置消息不变,此端口将不再转发数据,并且只接收但不发送配置消息;如果某端口的配置消息在过程“选出最优配置消息”中没有更新,则交换机就将其定为指定端口,配置消息要作如下改变:树根ID 替换为根端口的配置消息的树
根ID ;根路径开销替换为根端口的配置消息的根路径开销加上根端口对应的路径开销;指定交换机ID 替换为自身交换机的ID ;指定端口ID 替换为自身端口ID 。
本例中各台交换机的比较过程如下:
SwitchA :
端口Ethernet0/1收到SwitchB 的配置消息,SwitchA 发现本端口的配置消息优先级低于接收到的配置消息的优先级,于是更新本端口Ethernet0/1的配置消息。
端口Ethernet0/3收到SwitchD 的配置消息,SwitchA 发现本端口的配置消息优先级高于接收到的配置消息的优先级,就把接收到的配置消息丢弃。
则此时各个端口的配置消息如下:
端口Ethernet0/1配置消息:
{32768.00e0-fc06-2380,200,32768.00e0-fc06-2380,e0/1}
端口Ethernet0/3配置消息:
{32768.00e0-fc07-7089,0,32768.00e0-fc07-7089,e0/3}
SwitchA 对各个端口的配置消息进行比较,选出端口Ethernet0/1的配置消息为最优配置消息,然后将端口Ethernet0/1定为根端口,整台交换机各个端口的配置消息都进行如下更新:
根端口Ethernet0/1配置消息不作改变:{32768.00e0-fc06-2380,200,32768.00e0-fc06-2380,e0/1}。端口Ethernet0/3配置消息中,树根ID 更新为最优配置消息中的树根ID ,根路径开销更新为200,指定交换机ID 更新为本交换机ID ,指定端口ID 更新为本端口ID ,配置消息变为:{32768.00e0-fc06-2380,200,32768.00e0-fc07-7089,e0/3}。然后SwitchA 各个指定端口周期性向外发送自己的配置消息。
[SwitchA]displaystpinterfaceethernet0/1ethernet0/3
Protocolmode:IEEERSTP
ThebridgeID(Pri.MAC):32768.00e0-fc07-7089
Thebridgetimes:HelloTime2sec,MaxAge20sec,ForwardDelay15sec
RootbridgeID(Pri.MAC):32768.00e0-fc06-2380
Rootpathcost:200
Bridgebpdu-protection:disabled
Port1(Ethernet0/1)ofbridgeisForwarding
Portspanningtreeprotocol:enabled
Portrole:RootPort
Portpathcost:200
Portpriority:128
DesignatedbridgeID(Pri.MAC):32768.00e0-fc06-2380
ThePortisanon-edgedport
Connectedtoapoint-to-pointLANsegment
Maximumtransmissionlimitis3Packets/hellotime
Times:HelloTime2sec,MaxAge20sec
ForwardDelay15sec,MessageAge0
BPDUsent:3
TCN:0,RST:3,ConfigBPDU:0
BPDUreceived:681
TCN:0,RST:681,ConfigBPDU:0
Port3(Ethernet0/3)ofbridgeisForwarding
Portspanningtreeprotocol:enabled
Portrole:DesignatedPort
Portpathcost:200
Portpriority:128
DesignatedbridgeID(Pri.MAC):32768.00e0-fc07-7089
ThePortisanon-edgedport
Connectedtoapoint-to-pointLANsegment
Maximumtransmissionlimitis3Packets/hellotime
Times:HelloTime2sec,MaxAge20sec
ForwardDelay15sec,MessageAge1
BPDUsent:670
TCN:0,RST:670,ConfigBPDU:0
BPDUreceived:2
TCN:0,RST:2,ConfigBPDU:0
SwitchB :
端口Ethernet0/1收到SwitchA 的配置消息,SwitchB 发现本端口的配置消息优先级高于接收到的配置消息的优先级,就把接收到的配置消息丢弃。端口Ethernet0/3的配置消息处理过程与端口Ethernet0/1类似。SwitchB 发现自己各个端口的配置消息中树根和指定交换机都是自己,则认为自己是树根,各个端口的配置消息都不作任何修改,以后周期性的向外发送配置消息。此时两个端口的配置消息如下:
端口Ethernet0/1配置消息:{32768.00e0-fc06-2380,0,32768.00e0-fc06-2380,e0/1}
端口Ethernet0/3配置消息:{32768.00e0-fc06-2380,0,32768.00e0-fc06-2380,e0/3}
[SwitchB]displaystpinterfaceethernet0/1ethernet0/3
Protocolmode:IEEERSTP
ThebridgeID(Pri.MAC):32768.00e0-fc06-2380
Thebridgetimes:HelloTime2sec,MaxAge20sec,ForwardDelay15sec
RootbridgeID(Pri.MAC):32768.00e0-fc06-2380
Rootpathcost:0
Bridgebpdu-protection:disabled
Port1(Ethernet0/1)ofbridgeisForwarding
Portspanningtreeprotocol:enabled
Portrole:DesignatedPort
Portpathcost:200
Portpriority:128
DesignatedbridgeID(Pri.MAC):32768.00e0-fc06-2380
ThePortisanon-edgedport
Connectedtoapoint-to-pointLANsegment
Maximumtransmissionlimitis3Packets/hellotime
Times:HelloTime2sec,MaxAge20sec
ForwardDelay15sec,MessageAge0
BPDUsent:927
TCN:0,RST:927,ConfigBPDU:0
BPDUreceived:3
TCN:0,RST:3,ConfigBPDU:0
Port3(Ethernet0/3)ofbridgeisForwarding
Portspanningtreeprotocol:enabled
Portrole:DesignatedPort
Portpathcost:200
Portpriority:128
DesignatedbridgeID(Pri.MAC):32768.00e0-fc06-2380
ThePortisanon-edgedport
Connectedtoapoint-to-pointLANsegment
Maximumtransmissionlimitis3Packets/hellotime
Times:HelloTime2sec,MaxAge20sec
ForwardDelay15sec,MessageAge0
BPDUsent:925
TCN:0,RST:925,ConfigBPDU:0
BPDUreceived:4
TCN:0,RST:4,ConfigBPDU:0
SwitchC :
端口Ethernet0/3收到SwitchB 的配置消息,SwitchC 发现本端口的配置消息优先级低于接收到的配置消息的优先级,于是更新本端口Ethernet0/3的配置消息。
端口Ethernet0/1收到SwitchD 的配置消息,SwitchC 发现本端口的配置消息优先级高于接收到的配置消息的优先级,就把接收到的配置消息丢弃。
则此时各个端口的配置消息如下:
端口Ethernet0/3配置消息:
{32768.00e0-fc06-2380,200,32768.00e0-fc06-2380,e0/3}
端口Ethernet0/1配置消息:
{32768.00e0-fc07-7085,0,32768.00e0-fc07-7085,e0/1}
SwitchC 对各个端口的配置消息进行比较,选出端口Ethernet0/3的配置消息为最优配置消息,然后将端口Ethernet0/3定为根端口,整台交换机各个端口的配置消息都进行如下更新:
根端口Ethernet0/3配置消息不作改变:{32768.00e0-fc06-2380,200,32768.00e0-fc06-2380,e0/3}。端口Ethernet0/1配置消息中,树根ID 更新为最优配置消息中的树根ID ,根路径开销更新为200,指定交换机ID 更新为本交换机ID ,指定端口ID 更新为本端口ID ,配置消息变为:{32768.00e0-fc06-2380,200,32768.00e0-fc07-7085,e0/1}。然后SwitchC 各个指定端口周期性向外发送自己的配置消息。
[SwitchC]displaystpinterfaceethernet0/1ethernet0/3
Protocolmode:IEEERSTP
ThebridgeID(Pri.MAC):32768.00e0-fc07-7085
Thebridgetimes:HelloTime2sec,MaxAge20sec,ForwardDelay15sec
RootbridgeID(Pri.MAC):32768.00e0-fc06-2380
Rootpathcost:200
Bridgebpdu-protection:disabled
Port1(Ethernet0/1)ofbridgeisForwarding
Portspanningtreeprotocol:enabled
Portrole:DesignatedPort
Portpathcost:200
Portpriority:128
DesignatedbridgeID(Pri.MAC):32768.00e0-fc07-7085
ThePortisanon-edgedport
Connectedtoapoint-to-pointLANsegment
Maximumtransmissionlimitis3Packets/hellotime
Times:HelloTime2sec,MaxAge20sec
ForwardDelay15sec,MessageAge1
BPDUsent:1705
TCN:0,RST:1705,ConfigBPDU:0
BPDUreceived:5
TCN:0,RST:5,ConfigBPDU:0
Port3(Ethernet0/3)ofbridgeisForwarding
Portspanningtreeprotocol:enabled
Portrole:RootPort
Portpathcost:200
Portpriority:128
DesignatedbridgeID(Pri.MAC):32768.00e0-fc06-2380
ThePortisanon-edgedport
Connectedtoapoint-to-pointLANsegment
Maximumtransmissionlimitis3Packets/hellotime
Times:HelloTime2sec,MaxAge20sec
ForwardDelay15sec,MessageAge0
BPDUsent:4
TCN:0,RST:4,ConfigBPDU:0
BPDUreceived:1726
TCN:0,RST:1726,ConfigBPDU:0
SwitchD :
端口Ethernet0/3收到SwitchA 的配置消息,SwitchD 发现本端口的配置消息优先级低于接收到的配置消息的优先级,于是更新本端口Ethernet0/3的配置消息:
端口Ethernet0/3配置消息:
{32768.00e0-fc06-2380,400,32768.00e0-fc07-7089,e0/3}
端口Ethernet0/1收到SwitchC 的配置消息,SwitchD 发现本端口的配置消息优先级低于接收到的配置消息的优先级,于是更新本端口Ethernet0/3的配置消息:
端口Ethernet0/1配置消息:
{32768.00e0-fc06-2380,400,32768.00e0-fc07-7085,e0/1}
SwitchD 对各个端口的配置消息进行比较,选出端口Ethernet0/1的配置消息为最优配置消息,然后将端口Ethernet0/1定为根端口,整台交换机各个端口的配置消息都进行如下更新:
根端口Ethernet0/1配置消息不作改变。而端口Ethernet0/3就会被阻塞,端口配置消息也不作改变,同时该端口不接收从SwitchA 转发的数据(不包括STP 的协议报文),直到新的情况发生触发生成树的重新计算,比如从SwitchC 到SwitchD 的链路down 掉,或者端口收到更优的配置消息。
[SwitchD]displaystpinterfaceethernet0/1ethernet0/3
Protocolmode:IEEERSTP
ThebridgeID(Pri.MAC):32768.00e0-fc06-8200
Thebridgetimes:HelloTime2sec,MaxAge20sec,ForwardDelay15sec
RootbridgeID(Pri.MAC):32768.00e0-fc06-2380
Rootpathcost:400
Bridgebpdu-protection:disabled
Port1(Ethernet0/1)ofbridgeisForwarding
Portspanningtreeprotocol:enabled
Portrole:RootPort
Portpathcost:200
Portpriority:128
DesignatedbridgeID(Pri.MAC):32768.00e0-fc07-7085
ThePortisanon-edgedport
Connectedtoapoint-to-pointLANsegment
Maximumtransmissionlimitis3Packets/hellotime
Times:HelloTime2sec,MaxAge20sec
ForwardDelay15sec,MessageAge1
BPDUsent:5
TCN:0,RST:5,ConfigBPDU:0
BPDUreceived:1781
TCN:0,RST:1781,ConfigBPDU:0
Port3(Ethernet0/3)ofbridgeisDiscarding
Portspanningtreeprotocol:enabled
Portrole:AlternatePort
Portpathcost:200
Portpriority:128
DesignatedbridgeID(Pri.MAC):32768.00e0-fc07-7089
ThePortisanon-edgedport
Connectedtoapoint-to-pointLANsegment
Maximumtransmissionlimitis3Packets/hellotime
Times:HelloTime2sec,MaxAge20sec
ForwardDelay15sec,MessageAge1
BPDUsent:3
TCN:0,RST:3,ConfigBPDU:0
BPDUreceived:1781
TCN:0,RST:1781,ConfigBPDU:0
生成树就被确定下来,树根为SwitchB ,树形如下图示:
端口状态切换
如上图所示,生成树稳定状态下,SwitchD 的ethernet0/1处于Forwarding 状态,正常接收BPDU 消息,同时能收发数据包。ethernet0/3处于Discarding 状态,能正常接收BPDU 消息,但是不能收发数据包,下面是相关的端口接发BPDU 消息的情况。
debuggingstppacket
terminaldebugging
%Currentterminaldebuggingison
*0.6680395-RSTP-8-S1-PACKET:
Port3:ReceivedPacket//处于Discarding 状态的端口正常接受BPDU 消息
*0.6680450-RSTP-8-S1-PACKET:
ProtocolIdentifier:0000
ProtocolVersionID:02
BPDUType:02
Flags:2c
RootIdentifier:80.00.00.e0.fc.06.23.80
RootPathCost:00c8
BridgeIdentifier:80.00.00.e0.fc.07.70.89
PortIdentifier:80.03
MessageAge:0100
MaxAge:1400
HelloTime:0200
ForwardDelay:0f00
Version1Length:00
*0.6680979-RSTP-8-S1-PACKET:Port1:ReceivedPacket;处于Forwarding 状态的端口正常接受BPDU 消息
*0.6681040-RSTP-8-S1-PACKET:
ProtocolIdentifier:0000
ProtocolVersionID:02
BPDUType:02
Flags:2c
RootIdentifier:80.00.00.e0.fc.06.23.80
RootPathCost:00c8
BridgeIdentifier:80.00.00.e0.fc.07.70.85
PortIdentifier:80.01
MessageAge:0100
MaxAge:1400
HelloTime:0200
ForwardDelay:0f00
Version1Length:00
*0.6682421-RSTP-8-S1-PACKET:
现在,断开SwitchC 和SwitchD 之间的连线,这样SwitchD 的ethernet0/1端口会down 下来,端口ethernet0/3的状态将会从Discarding 状态转换到Forwarding 状态,承担起数据收发的工作。
以太网交换机所实现的快速生成树协议RSTP (RapidSpanningTreeProtocol )是生成树协议的优化版。其“快速”体现在根端口和指定端口进入转发状态的延时在某种条件下大大缩短,从而缩短了网络拓扑稳定需要的时间。
根端口状态快速迁移的条件是:本交换机上旧的根端口已经停止转发数据,而且上游指定端口已经开始转发数据。
SwitchD 的ethernet0/1端口停止转发数据,上游指定端口SwitchA 的ethernet0/3一直处于转发状态。符合快速转发的条件。SwitchD 的端口ethernet0/3将快速迁移到Forwarding 状态。Debugging 信息如下:
debuggingstppacket
terminaldebugging
Port3:SentPacket
*0.9060586-RSTP-8-S1-PACKET:
ProtocolIdentifier:0000
ProtocolVersionID:02
BPDUType:02
Flags:69
RootIdentifier:80.00.00.e0.fc.06.23.80
RootPathCost:00c8
BridgeIdentifier:80.00.00.e0.fc.07.70.89
PortIdentifier:80.03
MessageAge:0100
MaxAge:1400
HelloTime:0200
ForwardDelay:0f00
Version1Length:00
*0.9061688-RSTP-8-S1-PACKET:
SwitchD 的端口显示信息如下:
displaystpinterfaceethernet0/1ethernet0/3
Protocolmode:IEEERSTP
ThebridgeID(Pri.MAC):32768.00e0-fc06-8200
Thebridgetimes:HelloTime2sec,MaxAge20sec,ForwardDelay15sec
RootbridgeID(Pri.MAC):32768.00e0-fc06-2380
Rootpathcost:400
Bridgebpdu-protection:disabled
Port1(Ethernet0/1)ofbridgeisDOWN;此端口被断开
Portspanningtreeprotocol:enabled
Portrole:DisabledPort
Portpathcost:200000
Portpriority:128
DesignatedbridgeID(Pri.MAC):32768.00e0-fc06-8200
ThePortisanon-edgedport
Connectedtoapoint-to-pointLANsegment
Maximumtransmissionlimitis3Packets/hellotime
Times:HelloTime2sec,MaxAge20sec
ForwardDelay15sec,MessageAge2
BPDUsent:23
TCN:0,RST:23,ConfigBPDU:0
BPDUreceived:4197
TCN:0,RST:4197,ConfigBPDU:0Port3(Ethernet0/3)ofbridgeisForwarding//转换为Forwarding 状态 Portspanningtreeprotocol:enabled
Portrole:RootPort
Portpathcost:200
Portpriority:128
DesignatedbridgeID(Pri.MAC):32768.00e0-fc07-7089
ThePortisanon-edgedport
Connectedtoapoint-to-pointLANsegment
Maximumtransmissionlimitis3Packets/hellotime
Times:HelloTime2sec,MaxAge20sec
ForwardDelay15sec,MessageAge1
BPDUsent:28
TCN:0,RST:28,ConfigBPDU:0
BPDUreceived:4555
TCN:0,RST:4555,ConfigBPDU:0
再次连接好,SwitchD 和SwitchC ,SwitchD 的端口ethernet0/1将再次转换为Forwarding 状态,SwitchD 的端口ethernet0/3也将再次被堵塞。
RSTP 的两种工作模式
以太网交换机所实现的快速生成树协议RSTP (RapidSpanningTreeProtocol )是生成树协议的优化版。RSTP 的工作模式包括两种:RSTP 模式、STP 兼容模式。缺省情况下,RSTP 的工作模式是RSTP 模式,当网络中存在运行STP 的网络设备时,
网络中所有网络设备都运行RSTP 的情况下,运行RSTP 的交换机将工作在RSTP 模式下;如果网络中既存在运行STP 的网络设备同时又存在运行RSTP 的网络设备,则最好将运行RSTP 的交换机设置为工作在STP 兼容模式下。
修改SwitchD 的配置,使其工作在STP 兼容模式下,命令如下:
[SwitchD]stpmodestp
显示SwitchD 的端口信息,验证STP 工作模式和RSTP 工作模式的互通性。
查看STP 信息:
displaystpinterfaceethernet0/1ethernet0/3
Protocolmode:IEEEcompatibleSTP
ThebridgeID(Pri.MAC):32768.00e0-fc06-8200
Thebridgetimes:HelloTime2sec,MaxAge20sec,ForwardDelay15sec
RootbridgeID(Pri.MAC):32768.00e0-fc06-2380;根交换机还是SwitchB 。
Rootpathcost:400
Bridgebpdu-protection:disabled
Port1(Ethernet0/1)ofbridgeisForwarding
Portspanningtreeprotocol:enabled
Portrole:RootPort
Portpathcost:200
Portpriority:128
DesignatedbridgeID(Pri.MAC):32768.00e0-fc07-7085
ThePortisanon-edgedport
Connectedtoapoint-to-pointLANsegment
Maximumtransmissionlimitis3Packets/hellotime
Times:HelloTime2sec,MaxAge20sec
ForwardDelay15sec,MessageAge1
BPDUsent:26
TCN:0,RST:26,ConfigBPDU:0
BPDUreceived:5859
TCN:0,RST:5859,ConfigBPDU:0
Port3(Ethernet0/3)ofbridgeisDiscarding
Portspanningtreeprotocol:enabled
Portrole:AlternatePort
Portpathcost:200
Portpriority:128
DesignatedbridgeID(Pri.MAC):32768.00e0-fc07-7089
ThePortisanon-edgedport
Connectedtoapoint-to-pointLANsegment
Maximumtransmissionlimitis3Packets/hellotime
Times:HelloTime2sec,MaxAge20sec
ForwardDelay15sec,MessageAge1
BPDUsent:28
TCN:0,RST:28,ConfigBPDU:0
BPDUreceived:6870
TCN:0,RST:6870,ConfigBPDU:0
从显示的信息看,根交换机还是SwitchB ,生成树的形状也没有发生变化,SwitchD 的端口ethernet0/1依然处于Forwarding 状态,ethernet0/3依然处于Discarding 状态。
其他配置
最后,关于STP 的一些重要参数,如:可以使用命令:stppriority bridge-priority 修改交换机的优先级,从而控制根交换机的选举,甚至干脆使用命令:stprootprimary 和stprootsecondary 指定根交换机和备份根交换机。可以使用命令:stpcost cost 修改端口的cost 值,从而影响生成树的根端口的选择。也可以使用命令:stpedged-port{enable|disable}配置边缘端口,在生成树的重新计算过程中,边缘端口可以直接迁移到转发状态,减少不必要的迁移时间。
QuidwayS 系列交换机实现的STP 还包括其他很多参数,通过这些参数的适当配置,可以更好地发挥交换机的性能,提高网络稳定性。学员可以在实验中体会,不再详述。
STP 实验
实验内容
STP 计算过程
端口状态切换
RSTP 协议的两种工作模式
生成树计算过程
实验目的
帮助读者理解STP 的基本原理和生成树的生成过程
验证STP 端口状态的切换
验证RSTP 协议两种工作模式的互通性
实验环境
Quidway 系列S3026交换机4台,VRP 版本为:
VRP(R)Software,Version3.10(NA),RELEASE0009;
PC 一台,标准网线5根、配置电缆一根;
实验组网图
实验步骤
生成树的计算过程
如上图所示,4台QuidwayS 系列以太网交换机环形互连,2台PC 分别连接到SwitchA 和SwitchB 上。4台交换机MAC 地址分别为:
SwitchA :00e0-fc07-7089
SwicthB :
00e0-fc06-2380
SwitchC :00e0-fc07-7085
SwitchD :00e0-fc06-8200
完成连接一段时间这后,会看到交换机指示灯快速闪烁,说明4台交换机之间转发数据报文,存在环路,可以配置STP 协议避免环路。
STP (SpanningTreeProtocol )是生成树协议的英文缩写。该协议可应用于环路网络,通过一定的算法实现路径冗余,同时将环路网络修剪成无环路的树型网络,从而避免报文在环路网络中的增生和无限循环。
Quidway 以太网交换机所实现的快速生成树协议RSTP (RapidSpanningTreeProtocol )是生成树协议的优化版。其“快速”体现在根端口和指定端口进入转发状态的延时在某种条件下大大缩短,从而缩短了网络拓扑稳定需要的时间。
在Quidway 以太网交换机上启动STP 协议,命令如下:
[SwitchA]stpenable
[SwitchB]stpenable
[SwitchC]stpenable
[SwitchD]stpenable
全网配置RSTP 协议之后,默认情况下,交换机的每一个端口都启用了RSTP 协议。配置完成后,可以看到交换机指示灯不再快速闪烁,说明交换机已经建立了无环路的转发生成树。那么,这棵树到底什么样子呢?我们可以先从理论上来分析,然后我们通过交换机的状态信息来验证我们的理论分析结果。
生成树协议算法实现的具体过程如下:
初始状态
各台交换机的各个端口在初始时会生成以自己为根的配置消息,根路径开销为0,指定交换机ID 为自身交换机ID ,指定端口为本端口。
SwitchA :
端口Ethernet0/1配置消息:
{32768.00e0-fc07-7089,0,32768.00e0-fc07-7089,e0/1}
端口Ethernet0/3配置消息:
{32768.00e0-fc07-7089,0,32768.00e0-fc07-7089,e0/3}
SwitchB :
端口Ethernet0/1配置消息:
{32768.00e0-fc06-2380,0,32768.00e0-fc06-2380,e0/1}
端口Ethernet0/3配置消息:
{32768.00e0-fc06-2380,0,32768.00e0-fc06-2380,e0/3}
SwitchC :
端口Ethernet0/1配置消息:
{32768.00e0-fc07-7085,0,32768.00e0-fc07-7085,e0/1}
端口Ethernet0/3配置消息:
{32768.00e0-fc07-7085,0,32768.00e0-fc07-7085,e0/3}
SwitchD :
端口Ethernet0/1配置消息:
{32768.00e0-fc06-8200,0,32768.00e0-fc06-8200,e0/1}
端口Ethernet0/3配置消息:
{32768.00e0-fc06-8200,0,32768.00e0-fc06-8200,e0/3}
选出最优配置消息,确定根交换机
各台交换机都向外发送自己的配置消息。当某个端口收到比自身的配置消息优先级低的配置消息时,交换机会将接收到的配置消息丢弃,对该端口的配置消息不作任何处理。当端口收到比本端口配置消息优先级高的配置消息的时候,交换机就用接收到的配置消息中的内容替换该端口的配置消息中的内容。然后以太网交换机将该端口的配置消息和交换机上的其它端口的配置消息进行比较,选出最优的配置消息。
配置消息的比较原则是:
树根ID 较小的配置消息优先级高;
若树根ID 相同,则比较根路径开销,比较方法为:用配置消息中的根路径开销加上本端口对应的路径开销之和(设为S ),则S 较小的配置消息优先级较高;
若根路径开销也相同,则依次比较指定交换机ID 、指定端口ID 、接收该配置消息的端口ID 等。
根据比较原则,首先比较各交换机的ID ,由于交换机的ID 由交换机的优先级(缺省值:32768)和交换机的MAC 地址共同组成。起初交换机的优先级都是缺省值。所以,谁的MAC 值最小,谁就是根。很显然,根交换机应该是SwitchB 。可以用以下命令查看配置后的STP 信息:
[SwitchA]displaystp
Protocolmode:IEEERSTP
ThebridgeID(Pri.MAC):32768.00e0-fc07-7089
Thebridgetimes:HelloTime2sec,MaxAge20sec,ForwardDelay15sec
RootbridgeID(Pri.MAC):32768.00e0-fc06-2380
Rootpathcost:200
Bridgebpdu-protection:disabled
[SwitchB]displaystp
Protocolmode:IEEERSTP
ThebridgeID(Pri.MAC):32768.00e0-fc06-2380
Thebridgetimes:HelloTime2sec,MaxAge20sec,ForwardDelay15sec
RootbridgeID(Pri.MAC):32768.00e0-fc06-2380
Rootpathcost:0
Bridgebpdu-protection:disabled
[SwitchC]displaystp
Protocolmode:IEEERSTP
ThebridgeID(Pri.MAC):32768.00e0-fc07-7085
Thebridgetimes:HelloTime2sec,MaxAge20sec,ForwardDelay15sec
RootbridgeID(Pri.MAC):32768.00e0-fc06-2380
Rootpathcost:200
Bridgebpdu-protection:disabled
[SwitchD]displaystp
Protocolmode:IEEERSTP
ThebridgeID(Pri.MAC):32768.00e0-fc06-8200
Thebridgetimes:HelloTime2sec,MaxAge20sec,ForwardDelay15sec
RootbridgeID(Pri.MAC):32768.00e0-fc06-2380
Rootpathcost:400
Bridgebpdu-protection:disabled
我们可以看到,4台交换机都有下面信息:
RootbridgeID(Pri.MAC):32768.00e0-fc06-2380。
所以,根交换机为00e0.fc06.2380,也就是SwitchB ,根交换机默认优先级为32768(默认值,可以配置)。
确定根端口,并阻塞冗余链路,然后更新指定端口的配置消息
交换机接收最优配置消息的那个端口定为根端口,端口配置消息不作改变;其它端口中,如果某端口的配置消息在过程“选出最优配置消息”中更新过,则交换机将此端口阻塞,端口配置消息不变,此端口将不再转发数据,并且只接收但不发送配置消息;如果某端口的配置消息在过程“选出最优配置消息”中没有更新,则交换机就将其定为指定端口,配置消息要作如下改变:树根ID 替换为根端口的配置消息的树
根ID ;根路径开销替换为根端口的配置消息的根路径开销加上根端口对应的路径开销;指定交换机ID 替换为自身交换机的ID ;指定端口ID 替换为自身端口ID 。
本例中各台交换机的比较过程如下:
SwitchA :
端口Ethernet0/1收到SwitchB 的配置消息,SwitchA 发现本端口的配置消息优先级低于接收到的配置消息的优先级,于是更新本端口Ethernet0/1的配置消息。
端口Ethernet0/3收到SwitchD 的配置消息,SwitchA 发现本端口的配置消息优先级高于接收到的配置消息的优先级,就把接收到的配置消息丢弃。
则此时各个端口的配置消息如下:
端口Ethernet0/1配置消息:
{32768.00e0-fc06-2380,200,32768.00e0-fc06-2380,e0/1}
端口Ethernet0/3配置消息:
{32768.00e0-fc07-7089,0,32768.00e0-fc07-7089,e0/3}
SwitchA 对各个端口的配置消息进行比较,选出端口Ethernet0/1的配置消息为最优配置消息,然后将端口Ethernet0/1定为根端口,整台交换机各个端口的配置消息都进行如下更新:
根端口Ethernet0/1配置消息不作改变:{32768.00e0-fc06-2380,200,32768.00e0-fc06-2380,e0/1}。端口Ethernet0/3配置消息中,树根ID 更新为最优配置消息中的树根ID ,根路径开销更新为200,指定交换机ID 更新为本交换机ID ,指定端口ID 更新为本端口ID ,配置消息变为:{32768.00e0-fc06-2380,200,32768.00e0-fc07-7089,e0/3}。然后SwitchA 各个指定端口周期性向外发送自己的配置消息。
[SwitchA]displaystpinterfaceethernet0/1ethernet0/3
Protocolmode:IEEERSTP
ThebridgeID(Pri.MAC):32768.00e0-fc07-7089
Thebridgetimes:HelloTime2sec,MaxAge20sec,ForwardDelay15sec
RootbridgeID(Pri.MAC):32768.00e0-fc06-2380
Rootpathcost:200
Bridgebpdu-protection:disabled
Port1(Ethernet0/1)ofbridgeisForwarding
Portspanningtreeprotocol:enabled
Portrole:RootPort
Portpathcost:200
Portpriority:128
DesignatedbridgeID(Pri.MAC):32768.00e0-fc06-2380
ThePortisanon-edgedport
Connectedtoapoint-to-pointLANsegment
Maximumtransmissionlimitis3Packets/hellotime
Times:HelloTime2sec,MaxAge20sec
ForwardDelay15sec,MessageAge0
BPDUsent:3
TCN:0,RST:3,ConfigBPDU:0
BPDUreceived:681
TCN:0,RST:681,ConfigBPDU:0
Port3(Ethernet0/3)ofbridgeisForwarding
Portspanningtreeprotocol:enabled
Portrole:DesignatedPort
Portpathcost:200
Portpriority:128
DesignatedbridgeID(Pri.MAC):32768.00e0-fc07-7089
ThePortisanon-edgedport
Connectedtoapoint-to-pointLANsegment
Maximumtransmissionlimitis3Packets/hellotime
Times:HelloTime2sec,MaxAge20sec
ForwardDelay15sec,MessageAge1
BPDUsent:670
TCN:0,RST:670,ConfigBPDU:0
BPDUreceived:2
TCN:0,RST:2,ConfigBPDU:0
SwitchB :
端口Ethernet0/1收到SwitchA 的配置消息,SwitchB 发现本端口的配置消息优先级高于接收到的配置消息的优先级,就把接收到的配置消息丢弃。端口Ethernet0/3的配置消息处理过程与端口Ethernet0/1类似。SwitchB 发现自己各个端口的配置消息中树根和指定交换机都是自己,则认为自己是树根,各个端口的配置消息都不作任何修改,以后周期性的向外发送配置消息。此时两个端口的配置消息如下:
端口Ethernet0/1配置消息:{32768.00e0-fc06-2380,0,32768.00e0-fc06-2380,e0/1}
端口Ethernet0/3配置消息:{32768.00e0-fc06-2380,0,32768.00e0-fc06-2380,e0/3}
[SwitchB]displaystpinterfaceethernet0/1ethernet0/3
Protocolmode:IEEERSTP
ThebridgeID(Pri.MAC):32768.00e0-fc06-2380
Thebridgetimes:HelloTime2sec,MaxAge20sec,ForwardDelay15sec
RootbridgeID(Pri.MAC):32768.00e0-fc06-2380
Rootpathcost:0
Bridgebpdu-protection:disabled
Port1(Ethernet0/1)ofbridgeisForwarding
Portspanningtreeprotocol:enabled
Portrole:DesignatedPort
Portpathcost:200
Portpriority:128
DesignatedbridgeID(Pri.MAC):32768.00e0-fc06-2380
ThePortisanon-edgedport
Connectedtoapoint-to-pointLANsegment
Maximumtransmissionlimitis3Packets/hellotime
Times:HelloTime2sec,MaxAge20sec
ForwardDelay15sec,MessageAge0
BPDUsent:927
TCN:0,RST:927,ConfigBPDU:0
BPDUreceived:3
TCN:0,RST:3,ConfigBPDU:0
Port3(Ethernet0/3)ofbridgeisForwarding
Portspanningtreeprotocol:enabled
Portrole:DesignatedPort
Portpathcost:200
Portpriority:128
DesignatedbridgeID(Pri.MAC):32768.00e0-fc06-2380
ThePortisanon-edgedport
Connectedtoapoint-to-pointLANsegment
Maximumtransmissionlimitis3Packets/hellotime
Times:HelloTime2sec,MaxAge20sec
ForwardDelay15sec,MessageAge0
BPDUsent:925
TCN:0,RST:925,ConfigBPDU:0
BPDUreceived:4
TCN:0,RST:4,ConfigBPDU:0
SwitchC :
端口Ethernet0/3收到SwitchB 的配置消息,SwitchC 发现本端口的配置消息优先级低于接收到的配置消息的优先级,于是更新本端口Ethernet0/3的配置消息。
端口Ethernet0/1收到SwitchD 的配置消息,SwitchC 发现本端口的配置消息优先级高于接收到的配置消息的优先级,就把接收到的配置消息丢弃。
则此时各个端口的配置消息如下:
端口Ethernet0/3配置消息:
{32768.00e0-fc06-2380,200,32768.00e0-fc06-2380,e0/3}
端口Ethernet0/1配置消息:
{32768.00e0-fc07-7085,0,32768.00e0-fc07-7085,e0/1}
SwitchC 对各个端口的配置消息进行比较,选出端口Ethernet0/3的配置消息为最优配置消息,然后将端口Ethernet0/3定为根端口,整台交换机各个端口的配置消息都进行如下更新:
根端口Ethernet0/3配置消息不作改变:{32768.00e0-fc06-2380,200,32768.00e0-fc06-2380,e0/3}。端口Ethernet0/1配置消息中,树根ID 更新为最优配置消息中的树根ID ,根路径开销更新为200,指定交换机ID 更新为本交换机ID ,指定端口ID 更新为本端口ID ,配置消息变为:{32768.00e0-fc06-2380,200,32768.00e0-fc07-7085,e0/1}。然后SwitchC 各个指定端口周期性向外发送自己的配置消息。
[SwitchC]displaystpinterfaceethernet0/1ethernet0/3
Protocolmode:IEEERSTP
ThebridgeID(Pri.MAC):32768.00e0-fc07-7085
Thebridgetimes:HelloTime2sec,MaxAge20sec,ForwardDelay15sec
RootbridgeID(Pri.MAC):32768.00e0-fc06-2380
Rootpathcost:200
Bridgebpdu-protection:disabled
Port1(Ethernet0/1)ofbridgeisForwarding
Portspanningtreeprotocol:enabled
Portrole:DesignatedPort
Portpathcost:200
Portpriority:128
DesignatedbridgeID(Pri.MAC):32768.00e0-fc07-7085
ThePortisanon-edgedport
Connectedtoapoint-to-pointLANsegment
Maximumtransmissionlimitis3Packets/hellotime
Times:HelloTime2sec,MaxAge20sec
ForwardDelay15sec,MessageAge1
BPDUsent:1705
TCN:0,RST:1705,ConfigBPDU:0
BPDUreceived:5
TCN:0,RST:5,ConfigBPDU:0
Port3(Ethernet0/3)ofbridgeisForwarding
Portspanningtreeprotocol:enabled
Portrole:RootPort
Portpathcost:200
Portpriority:128
DesignatedbridgeID(Pri.MAC):32768.00e0-fc06-2380
ThePortisanon-edgedport
Connectedtoapoint-to-pointLANsegment
Maximumtransmissionlimitis3Packets/hellotime
Times:HelloTime2sec,MaxAge20sec
ForwardDelay15sec,MessageAge0
BPDUsent:4
TCN:0,RST:4,ConfigBPDU:0
BPDUreceived:1726
TCN:0,RST:1726,ConfigBPDU:0
SwitchD :
端口Ethernet0/3收到SwitchA 的配置消息,SwitchD 发现本端口的配置消息优先级低于接收到的配置消息的优先级,于是更新本端口Ethernet0/3的配置消息:
端口Ethernet0/3配置消息:
{32768.00e0-fc06-2380,400,32768.00e0-fc07-7089,e0/3}
端口Ethernet0/1收到SwitchC 的配置消息,SwitchD 发现本端口的配置消息优先级低于接收到的配置消息的优先级,于是更新本端口Ethernet0/3的配置消息:
端口Ethernet0/1配置消息:
{32768.00e0-fc06-2380,400,32768.00e0-fc07-7085,e0/1}
SwitchD 对各个端口的配置消息进行比较,选出端口Ethernet0/1的配置消息为最优配置消息,然后将端口Ethernet0/1定为根端口,整台交换机各个端口的配置消息都进行如下更新:
根端口Ethernet0/1配置消息不作改变。而端口Ethernet0/3就会被阻塞,端口配置消息也不作改变,同时该端口不接收从SwitchA 转发的数据(不包括STP 的协议报文),直到新的情况发生触发生成树的重新计算,比如从SwitchC 到SwitchD 的链路down 掉,或者端口收到更优的配置消息。
[SwitchD]displaystpinterfaceethernet0/1ethernet0/3
Protocolmode:IEEERSTP
ThebridgeID(Pri.MAC):32768.00e0-fc06-8200
Thebridgetimes:HelloTime2sec,MaxAge20sec,ForwardDelay15sec
RootbridgeID(Pri.MAC):32768.00e0-fc06-2380
Rootpathcost:400
Bridgebpdu-protection:disabled
Port1(Ethernet0/1)ofbridgeisForwarding
Portspanningtreeprotocol:enabled
Portrole:RootPort
Portpathcost:200
Portpriority:128
DesignatedbridgeID(Pri.MAC):32768.00e0-fc07-7085
ThePortisanon-edgedport
Connectedtoapoint-to-pointLANsegment
Maximumtransmissionlimitis3Packets/hellotime
Times:HelloTime2sec,MaxAge20sec
ForwardDelay15sec,MessageAge1
BPDUsent:5
TCN:0,RST:5,ConfigBPDU:0
BPDUreceived:1781
TCN:0,RST:1781,ConfigBPDU:0
Port3(Ethernet0/3)ofbridgeisDiscarding
Portspanningtreeprotocol:enabled
Portrole:AlternatePort
Portpathcost:200
Portpriority:128
DesignatedbridgeID(Pri.MAC):32768.00e0-fc07-7089
ThePortisanon-edgedport
Connectedtoapoint-to-pointLANsegment
Maximumtransmissionlimitis3Packets/hellotime
Times:HelloTime2sec,MaxAge20sec
ForwardDelay15sec,MessageAge1
BPDUsent:3
TCN:0,RST:3,ConfigBPDU:0
BPDUreceived:1781
TCN:0,RST:1781,ConfigBPDU:0
生成树就被确定下来,树根为SwitchB ,树形如下图示:
端口状态切换
如上图所示,生成树稳定状态下,SwitchD 的ethernet0/1处于Forwarding 状态,正常接收BPDU 消息,同时能收发数据包。ethernet0/3处于Discarding 状态,能正常接收BPDU 消息,但是不能收发数据包,下面是相关的端口接发BPDU 消息的情况。
debuggingstppacket
terminaldebugging
%Currentterminaldebuggingison
*0.6680395-RSTP-8-S1-PACKET:
Port3:ReceivedPacket//处于Discarding 状态的端口正常接受BPDU 消息
*0.6680450-RSTP-8-S1-PACKET:
ProtocolIdentifier:0000
ProtocolVersionID:02
BPDUType:02
Flags:2c
RootIdentifier:80.00.00.e0.fc.06.23.80
RootPathCost:00c8
BridgeIdentifier:80.00.00.e0.fc.07.70.89
PortIdentifier:80.03
MessageAge:0100
MaxAge:1400
HelloTime:0200
ForwardDelay:0f00
Version1Length:00
*0.6680979-RSTP-8-S1-PACKET:Port1:ReceivedPacket;处于Forwarding 状态的端口正常接受BPDU 消息
*0.6681040-RSTP-8-S1-PACKET:
ProtocolIdentifier:0000
ProtocolVersionID:02
BPDUType:02
Flags:2c
RootIdentifier:80.00.00.e0.fc.06.23.80
RootPathCost:00c8
BridgeIdentifier:80.00.00.e0.fc.07.70.85
PortIdentifier:80.01
MessageAge:0100
MaxAge:1400
HelloTime:0200
ForwardDelay:0f00
Version1Length:00
*0.6682421-RSTP-8-S1-PACKET:
现在,断开SwitchC 和SwitchD 之间的连线,这样SwitchD 的ethernet0/1端口会down 下来,端口ethernet0/3的状态将会从Discarding 状态转换到Forwarding 状态,承担起数据收发的工作。
以太网交换机所实现的快速生成树协议RSTP (RapidSpanningTreeProtocol )是生成树协议的优化版。其“快速”体现在根端口和指定端口进入转发状态的延时在某种条件下大大缩短,从而缩短了网络拓扑稳定需要的时间。
根端口状态快速迁移的条件是:本交换机上旧的根端口已经停止转发数据,而且上游指定端口已经开始转发数据。
SwitchD 的ethernet0/1端口停止转发数据,上游指定端口SwitchA 的ethernet0/3一直处于转发状态。符合快速转发的条件。SwitchD 的端口ethernet0/3将快速迁移到Forwarding 状态。Debugging 信息如下:
debuggingstppacket
terminaldebugging
Port3:SentPacket
*0.9060586-RSTP-8-S1-PACKET:
ProtocolIdentifier:0000
ProtocolVersionID:02
BPDUType:02
Flags:69
RootIdentifier:80.00.00.e0.fc.06.23.80
RootPathCost:00c8
BridgeIdentifier:80.00.00.e0.fc.07.70.89
PortIdentifier:80.03
MessageAge:0100
MaxAge:1400
HelloTime:0200
ForwardDelay:0f00
Version1Length:00
*0.9061688-RSTP-8-S1-PACKET:
SwitchD 的端口显示信息如下:
displaystpinterfaceethernet0/1ethernet0/3
Protocolmode:IEEERSTP
ThebridgeID(Pri.MAC):32768.00e0-fc06-8200
Thebridgetimes:HelloTime2sec,MaxAge20sec,ForwardDelay15sec
RootbridgeID(Pri.MAC):32768.00e0-fc06-2380
Rootpathcost:400
Bridgebpdu-protection:disabled
Port1(Ethernet0/1)ofbridgeisDOWN;此端口被断开
Portspanningtreeprotocol:enabled
Portrole:DisabledPort
Portpathcost:200000
Portpriority:128
DesignatedbridgeID(Pri.MAC):32768.00e0-fc06-8200
ThePortisanon-edgedport
Connectedtoapoint-to-pointLANsegment
Maximumtransmissionlimitis3Packets/hellotime
Times:HelloTime2sec,MaxAge20sec
ForwardDelay15sec,MessageAge2
BPDUsent:23
TCN:0,RST:23,ConfigBPDU:0
BPDUreceived:4197
TCN:0,RST:4197,ConfigBPDU:0Port3(Ethernet0/3)ofbridgeisForwarding//转换为Forwarding 状态 Portspanningtreeprotocol:enabled
Portrole:RootPort
Portpathcost:200
Portpriority:128
DesignatedbridgeID(Pri.MAC):32768.00e0-fc07-7089
ThePortisanon-edgedport
Connectedtoapoint-to-pointLANsegment
Maximumtransmissionlimitis3Packets/hellotime
Times:HelloTime2sec,MaxAge20sec
ForwardDelay15sec,MessageAge1
BPDUsent:28
TCN:0,RST:28,ConfigBPDU:0
BPDUreceived:4555
TCN:0,RST:4555,ConfigBPDU:0
再次连接好,SwitchD 和SwitchC ,SwitchD 的端口ethernet0/1将再次转换为Forwarding 状态,SwitchD 的端口ethernet0/3也将再次被堵塞。
RSTP 的两种工作模式
以太网交换机所实现的快速生成树协议RSTP (RapidSpanningTreeProtocol )是生成树协议的优化版。RSTP 的工作模式包括两种:RSTP 模式、STP 兼容模式。缺省情况下,RSTP 的工作模式是RSTP 模式,当网络中存在运行STP 的网络设备时,
网络中所有网络设备都运行RSTP 的情况下,运行RSTP 的交换机将工作在RSTP 模式下;如果网络中既存在运行STP 的网络设备同时又存在运行RSTP 的网络设备,则最好将运行RSTP 的交换机设置为工作在STP 兼容模式下。
修改SwitchD 的配置,使其工作在STP 兼容模式下,命令如下:
[SwitchD]stpmodestp
显示SwitchD 的端口信息,验证STP 工作模式和RSTP 工作模式的互通性。
查看STP 信息:
displaystpinterfaceethernet0/1ethernet0/3
Protocolmode:IEEEcompatibleSTP
ThebridgeID(Pri.MAC):32768.00e0-fc06-8200
Thebridgetimes:HelloTime2sec,MaxAge20sec,ForwardDelay15sec
RootbridgeID(Pri.MAC):32768.00e0-fc06-2380;根交换机还是SwitchB 。
Rootpathcost:400
Bridgebpdu-protection:disabled
Port1(Ethernet0/1)ofbridgeisForwarding
Portspanningtreeprotocol:enabled
Portrole:RootPort
Portpathcost:200
Portpriority:128
DesignatedbridgeID(Pri.MAC):32768.00e0-fc07-7085
ThePortisanon-edgedport
Connectedtoapoint-to-pointLANsegment
Maximumtransmissionlimitis3Packets/hellotime
Times:HelloTime2sec,MaxAge20sec
ForwardDelay15sec,MessageAge1
BPDUsent:26
TCN:0,RST:26,ConfigBPDU:0
BPDUreceived:5859
TCN:0,RST:5859,ConfigBPDU:0
Port3(Ethernet0/3)ofbridgeisDiscarding
Portspanningtreeprotocol:enabled
Portrole:AlternatePort
Portpathcost:200
Portpriority:128
DesignatedbridgeID(Pri.MAC):32768.00e0-fc07-7089
ThePortisanon-edgedport
Connectedtoapoint-to-pointLANsegment
Maximumtransmissionlimitis3Packets/hellotime
Times:HelloTime2sec,MaxAge20sec
ForwardDelay15sec,MessageAge1
BPDUsent:28
TCN:0,RST:28,ConfigBPDU:0
BPDUreceived:6870
TCN:0,RST:6870,ConfigBPDU:0
从显示的信息看,根交换机还是SwitchB ,生成树的形状也没有发生变化,SwitchD 的端口ethernet0/1依然处于Forwarding 状态,ethernet0/3依然处于Discarding 状态。
其他配置
最后,关于STP 的一些重要参数,如:可以使用命令:stppriority bridge-priority 修改交换机的优先级,从而控制根交换机的选举,甚至干脆使用命令:stprootprimary 和stprootsecondary 指定根交换机和备份根交换机。可以使用命令:stpcost cost 修改端口的cost 值,从而影响生成树的根端口的选择。也可以使用命令:stpedged-port{enable|disable}配置边缘端口,在生成树的重新计算过程中,边缘端口可以直接迁移到转发状态,减少不必要的迁移时间。
QuidwayS 系列交换机实现的STP 还包括其他很多参数,通过这些参数的适当配置,可以更好地发挥交换机的性能,提高网络稳定性。学员可以在实验中体会,不再详述。