STP原理
STP是用来避免数据链路层出现逻辑环路的协议,使用BPDU传递网络信息计算出一根无环的树状网络结构,并阻塞特定端口。在网络出现故障的时候,STP能快速发现链路故障,并尽快找出另外一条路径进行数据传输。
交换机上运行的STP通过BPDU信息的交互,选举根交换机,然后每台非根交换机选择用来与根交换机通信的根端口,之后每个网段选择用来转发数据至根交换机的指定端口,最后剩余端口被阻塞。
选举过程
1.选举根交换机,依据根交换机ID。
根交换机ID由交换机优先级和MAC地址组成。首先比较交换机优先级,数值最低的为根交换机;如果优先级一样,则比较MAC地址,数值最低的选举为根交换机。
2.选举根端口
每台交换机上只能拥有一个根端口。生成树在选举出根交换机后,将在每台非根交换机上选举根端口。选举时首先比较该交换机上每个端口到达根交换机的根路径开销,路径开销最小的端口将成为根端口。如果根路径开销值相同,则比较每个端口所在链路上的上行交换机ID,如果交换机ID也相同,则比较每个端口所在链路上的上行端口ID。
3.选举指定端口
生成树在每台非根交换机选举出根端口之后,将在每个网段上选举指定端口,选举的比较规则和选举根端口类似。
实验内容
公司购置了4台交换机组建网络。考虑到网络的可靠性,将4台交换机如图所示拓扑搭建。由于默认情况下,交换机之间运行STP后,根交换机、根端口、指定端口的选择将基于交换机的MAC地址的大小,因此带来了不确定性,极可能由此产生隐患。
公司网络规划,需要S1作为主根交换机,S2作为S1的备份根交换机。同时对于S4交换机,E0/0/1接口应该作为根端口。对于S2和S3之间的链路,应该保证S2的E0/0/3接口作为指定端口。同时在交换机S3上,存在两个接口E0/0/10、E0/0/11连接到测试PC,测试PC经常上下线网络,需要将交换机S3与之相连的对应端口定义为边缘端口,避免测试电脑上下线对网络产生的影响。
实验拓扑
实验步骤
1.基本配置
在交换机上启用STP(华为交换机默认启用MSTP),将交换机的STP模式更改为普通生成树STP。
[S1]stp enable
[S1]stp mode stp
S2、S3、S4同样配置命令
配置完成后,默认情况下需要等待30s生成树重新计算时间(15s Forward Delay+15s Learning状态时间)。可使用display stp命令查看S1的生成树状态。
[S1]display stp
-------[CIST Global Info][Mode STP]-------
CIST Bridge :32768.4c1f-cc4e-0696
......
Last TC occurred :Ethernet0/0/1
----[Port1(Ethernet0/0/1)][FORWARDING]----
Port Protocol :Enabled
Port Role :Root Port
......
或者使用display stp brief命令查看摘要信息。
[S1]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/1 ROOT FORWARDING NONE
0 Ethernet0/0/2 ALTE DISCARDING NONE
2.配置网络中的根交换机
根交换机在网络中的位置是非常重要的,如果选择了一台性能较差的交换机,或者是部署在接入层的交换机作为根交换机,会影响到整个网络的通信质量及数据传输。所以确定根交换机的位置极为重要。根交换机选举依据是根交换机ID,值越小越优先,交换机默认的优先级为32768。
配置S1为主根交换机,S2为备份根交换机,将S1的优先级改为0,S2的优先级改为4096。
[S1]stp priority 0
[S2]stp priority 4096
配置完成查看S1和S2的STP状态信息
[S1]dis stp
-------[CIST Global Info][Mode STP]-------
CIST Bridge :0 .4c1f-cc4e-0696
Config Times :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
Active Times :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
CIST Root/ERPC :0 .4c1f-cc4e-0696 / 0
CIST RegRoot/IRPC :0 .4c1f-cc4e-0696 / 0
......
[S2]dis stp
-------[CIST Global Info][Mode STP]-------
CIST Bridge :4096 .4c1f-cca7-093f
Config Times :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
Active Times :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
CIST Root/ERPC :0 .4c1f-cc4e-0696 / 200000
CIST RegRoot/IRPC :4096 .4c1f-cca7-093f / 0
......
通过观察发现S1的优先级变为了0,为根交换机;而S2的优先级变为了4096,为备份根交换机。
还可以使用另外一种方式配置主根交换机和备份根交换机。首先删除交换机上配置的优先级,使用stp root primary/secondary命令配置主根交换机或备份根交换机
[S1]undo stp priority
[S1]stp root primary
[S2]undo stp priority
[S2]stp root secondary
3.配置S4的根端口
查看S4上生成树信息
[S4]dis stp br
MSTID Port Role STP State Protection
0 Ethernet0/0/1 ALTE DISCARDING NONE
0 Ethernet0/0/2 ROOT FORWARDING NONE
可以观察到,S4的E0/0/2为根端口,状态为转发状态。S4在选举根端口时,首先比较根路径开销,由于拓扑中所有链路都是相同的百兆以太网链路,开销值相同;接下来比较S4的两台上行交换机ID(优先级+MAC),S2交换机优先级为4096,S3默认优先级32768,所以与S2连接的E0/0/2接口被选为根端口。
查看S4的E0/0/2接口开销值
----[Port2(Ethernet0/0/2)][FORWARDING]----
Port Protocol :Enabled
Port Role :Root Port
Port Priority :128
Port Cost(Dot1T ) :Config=auto / Active=200000
Designated Bridge/Port :4096.4c1f-cca7-093f / 128.2
......
可以观察到,接口路径开销采用的是Dot1T的计算方法,Config是指手工配置的路径开销,Active是实际使用的路径开销,开销值为200000。
配置S4的E0/0/2接口的开销值为300000
[S4]int e0/0/2
[S4-Ethernet0/0/2]stp cost 300000
查看S4的E0/0/2开销值及STP状态摘要信息
[S4-Ethernet0/0/2]dis stp interface e0/0/2
----[Port2(Ethernet0/0/2)][DISCARDING]----
Port Protocol :Enabled
Port Role :Alternate Port
Port Priority :128
Port Cost(Dot1T ) :Config=300000 / Active=300000
......
[S4-Ethernet0/0/2]dis stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/1 ROOT FORWARDING NONE
0 Ethernet0/0/2 ALTE DISCARDING NONE
此时,E0/0/1端口称为了根端口,这是由于将E0/0/2开销修改为300000之后,在选举根端口时,其到根路径开销大于E0/0/1的根路径开销。
4.配置指定端口
修改S3的E0/0/2接口的开销值,将该增增大,即增大该端口上的根路径开销,确保让S2的E0/0/3接口成为指定端口。
[S3]int e0/0/2
[S3-Ethernet0/0/2]stp cost 200001
查看S2的STP状态摘要信息
[S2]dis stp br
MSTID Port Role STP State Protection
0 Ethernet0/0/1 ROOT FORWARDING NONE
0 Ethernet0/0/2 DESI FORWARDING NONE
0 Ethernet0/0/3 DESI FORWARDING NONE
为了验证现在能够确保S2的E0/0/3接口成为指定端口,下面将S3的优先级调整为4096,并查看。
[S3]stp priority 4096
[S3]dis stp
-------[CIST Global Info][Mode STP]-------
CIST Bridge :4096 .4c1f-cced-4404
......
再次查看S2和S3的STP状态。
[S2]dis stp br
MSTID Port Role STP State Protection
0 Ethernet0/0/1 ROOT FORWARDING NONE
0 Ethernet0/0/2 DESI FORWARDING NONE
0 Ethernet0/0/3 DESI LEARNING NONE
[S3]dis stp br
MSTID Port Role STP State Protection
0 Ethernet0/0/1 DESI FORWARDING NONE
0 Ethernet0/0/2 ROOT FORWARDING NONE
0 Ethernet0/0/3 ALTE DISCARDING NONE
可以观察到,即使将S3的优先级修改得比S2的优先级更低,但是S2的E0/0/3接口仍然为指定端口,而S3的E0/0/3接口还是Alternate端口,再次验证了在选举指定端口时首先比较根路径开销的规则。
来源:CSDN
作者:蒋慧慧
链接:https://blog.csdn.net/weixin_43957217/article/details/103612762