STP是用来避免数据链路层出现逻辑环路的协议,运行STP协议的设备通过交互信息发现环路,并通过阻塞特定端口,最终将网络结构修剪成无环路的树形结构。在网络出现故障的时候,STP能快速发现链路故障,并尽快找出另外一条路径进行数据传输。
交换机上运行的STP通过BPDU信息的交互,选举根交换机,然后每台非根交换机选择用来与根交换机通信的根端口,之后每个网段选择用来转发数据至根交换机的指定端口,最后剩余端口则被阻塞。
配置思路
启用STP协议--->配置STP模式--->配置根桥和备份根桥--->配置指定端口
由于默认情况下,运行STP协议的网络中,根交换机、根端口、指定端口选择可能基于交换机的MAC地址的大小,因此带来了不确性,极可能由此产生网络隐患。通过手动配置根交换机、根端口、指定端口更能保障网络稳定性。
示例配置
SW1作为主根交换机,SW2作为SW1的备份根交换机。同时对于S4交换机,E0/0/1接口应该作为根端口。对于S2和S3之间的链路,应该保证S2的E0/0/3接口作为指定端口。同时在交换机S3上,存在两个接口E 0/0/10、E0/0/11连接到测试PC,测试PC经常上下线网络,需要将交换机S3与之相连的对应端口定义为边缘端口,避免测试电脑上下线对网络产生的影响。
网络拓扑图
每台交换机启用STP协议和配置STP模式,配置代码如下:
<Huawei>system-view
[Huawei]sysname SW1
[SW1]stp enable //启用STP协议
[SW1]stp mode stp //配置STP模式为STP
<Huawei>system-view
[Huawei]sysname SW2
[SW2]stp enable
[SW2]stp mode stp
<Huawei>system-view
[Huawei]sysname SW3
[SW3]stp enable
[SW3]stp mode stp
<Huawei>system-view
[Huawei]sysname SW4
[SW4]stp enable
[SW4]stp mode stp
<Huawei>system-view
[Huawei]sysname SW5
[SW5]stp enable
[SW5]stp mode stp
查看每台交换机的stp简要信息:
从上图看出,默认情况下,SW3被选举为根交换机,SW1的根端口为GE 0/0/1,SW2的根端口为GE 0/0/1,SW4的根端口为GE 0/0/1,SW5的根端口为E 0/0/1。但实际上,SW1和SW2交换机性能要优于SW3,应当选举SW1或者SW2为根桥,并设置其中1个交换机为备用根桥,这样网络整体性能更好。
手动配置SW1为根桥,SW2交换机为备用根桥,配置代码如下:
[SW1]stp priority 4096 //设置SW1交换机的stp优先级为4096
[SW2]stp priority 8192 //设置SW2交换机的stp优先级为8192
根交换机在网络中的位置是非常重要的,如果选择了一台性能较差的交换机,或者是部署在接入层的交换机作为根交换机,会影响到整个网络的通信质量及数据传输。所以确定根交换机的位置极为重要。
默认情况下STP交换机的stp优先级为32768
SW1交换机已经被设置为根桥
如上图所示,还有一种方法设置SW1交换机为根桥,即通过命令 stp root primary直接指定SW1为根桥。使用此命令后,设备的桥优先级值会被自动设为 0,并且不能通过命令 stp priority priority来更改该设备的桥优先级。
如上图所示,还有一种方法设置SW2为备份根桥,当SW1发生故障时可以接替SW1成为新的根桥。在设备上执行 stp root secondary命令后,设备的桥优先级的值会被自动设为 4 096,并且不能通过命令 stp priority priority来更改该设备的桥优先级。
SW2的根端口为GE 0/0/3,SW3的根端口为GE 0/0/1,SW4的根端口为GE 0/0/1,SW5的根端口为E 0/0/1。
手动设置SW5的E 0/0/2端口为根端口,配置代码如下:
[SW5-Ethernet0/0/2]stp cost 100000 //设置SW5的E 0/0/2端口开销为100000
SW5的E 0/0/2端口开销默认为200000
生成树在选举出根交换机之后,将在每台非根交换机上选举根端口。选举时首先比较该交换机上每个端口到达根交换机的根路径开销,路径开销最小的端口将成为根端口。如果根路径开销值相同,则比较每个端口所在链路上的上行交换机ID,如果该交换机ID也相同,则比较每个端口所在链路上的上行端口ID。每台交换机上只能拥有一个根端口。
SW5的GE 0/0/2端口已经被设置为根端口
手动设置SW3的GE 0/0/2端口为指定端口,配置代码如下:
[SW3-GigabitEthernet0/0/1]stp cost 10000 //设置SW3的GE 0/0/1端口开销为10000
SW3的GE 0/0/1端口开销默认为20000
修改SW3的GE 0/0/1端口开销为10000,SW3的GE 0/0/2端口根路径开销为10000,小于SW2的GE 0/0/1端口根路径开销20000,则SW3的GE 0/0/2端口为指定端口。
stp边缘端口设置
华为交换机STP里面,如果某一个指定端口位于整个网络的边缘,即不再与其他交换设备连接,而是直接与终端设备直连,这种端口叫做边缘端口。边缘端口一般接pc或终端,主要目的是提升用户体验感,终端可以比较快获取到地址。
SW5的GE 0/0/3端口和SW5的GE 0/0/4端口设置为边缘端口,配置代码如下:
[SW5-Ethernet0/0/3]stp edged-port enable
[SW5-Ethernet0/0/4]stp edged-port enable //使能边缘端口