计算机网络(九)——STP原理
交换网络中通常会使用冗余链路来提高网络的可靠性。然而,冗余链路会给交换网络带来环路风险,并导致广播风暴以及MAC地址表不稳定等问题,进而会影响到用户的通信质量。
生成树协议STP(Spanning Tree Protocol)是可以用来解决冗余链路所带来的问题。
冗余链路解决了单条链路出现故障导致业务中断问题,虽然增强了网络的可靠性,但是也会产生环路,而环路会带来一系列的问题,继而导致通信质量下降和通信业务中断等问题。
1、环路引发的问题
1.1 广播风暴
广播帧在有环路的交换网络中会被无限转发,网络中的主机接受到大量的重复数据帧,这种情况称之为网络风暴。造成的影响:
|
![]() |
本例中,假设此单播帧的目的MAC地址在网络中所有交换机的MAC地址表中都暂时不存在。 主机A向外发送了一个单播帧,将其转发到SWA和SWC,SWA和SWC也会将此帧转发到除了接收此帧的其他所有端口,结果此帧又会被再次转发给SWB,这种循环会一直持续,于是便产生了广播风暴。 |
1.2 MAC地址表震荡
MAC地址表震荡就是,同一个交换机有两个或两个以上接口可以接收到同一个MAC地址,导致MAC地址与交换机端口的对应关系经常发生变化。 |
![]() |
交换机是根据所接收到的数据帧的源地址和接收端口生成MAC地址表项的。假设此单播帧的目的MAC地址在网络中所有交换机的MAC地址表中都暂时不存在。
此过程会不断重复,从而导致MAC地址表震荡。 |
2、STP生成树协议
2.1 STP的主要作用:(无用时阻断冗余链路,需要时启用)
- 消除环路:通过阻塞端口来消除网络中可能存在的环路。
- 链路备份:当活动路径发生故障时,激活备份链路,及时恢复网络连通性。
2.2 STP工作方式
![]() |
每个STP网络中,都会有且只有一个根桥(根交换机),其他交换机为非根桥。 根桥或者根交换机位于整个逻辑树的根部,是STP网络的逻辑中心;非根桥是根桥的下游设备。当现有根桥产生故障时,非根桥之间会交互信息并重新选举根桥,交互的这种信息被称为BPDU。BPDU中包含交换机在参加生成树计算时的各种参数信息。 STP中定义了三种端口角色:指定端口,根端口、预备端口(阻塞端口)。
|
2.3 根桥选举(根桥的产生方式)
|
STP中根桥的选举依据的是桥ID,STP中的每个交换机都会有一个桥ID(Bridge ID) 。桥ID=16位的桥优先级+48位的MAC地址。 在STP网络中,桥优先级的取值范围是0~65535,默认值为32768。优先级最高的设备(数值越小越优先)会被选举为根桥。如果优先级相同,则会比较MAC地址,MAC地址越小则越优先。 交换机启动后就自动开始进行生成树收敛计算(桥ID比较)。 默认情况下,所有启动STP的交换机启动时都认为自己是根桥,自己的所有端口都为指定端口,这样BPDU报文(桥协议数据单元)就可以通过所有端口转发。当某一个端口收到自己发送的BPDU报文后,会阻塞掉该端口;而对端交换机收到BPDU报文后,会比较BPDU中的根桥ID和自己的桥ID。
最后会在整个网络中会有一个桥ID最小的交换机,这个交换机就是整个网络的根桥。 |
2.4 根端口选举(通往根桥最优端口的选举)
![]() |
非根交换机在选举根端口时分别依据该端口的根路径开销、对端BID(Bridge ID)、对端PID(Port ID)和自身本端PID。 端口开销:交换机端口的一个参数,表示该端口在STP中的开销值。参数大小与端口的带宽有关,带宽越高,开销越小。 路径开销:非根桥到根桥的路径上所有接收BPDU的端口的端口开销总和(即BPDU的入方向端口),称为路径开销。 根路径开销:非根桥通过对比多条路径的路径开销,到达根桥的最短路径,这条路径的路径开销被称为RPC(Root Path Cost,根路径开销),并生成无环树状网络。根桥的根路径开销是0。 对端桥PID:运行STP交换机的每个端口都有一个端口ID,端口ID由端口优先级和端口号构成。端口优先级取值范围是0到240,步长为16,即取值必须为16的整数倍。越小越优先。缺省情况下,端口优先级是128。端口ID(Port ID)可以用来确定端口角色。 对端桥BID:每个非根桥都要选举一个根端口。根端口是距离根桥最近的端口,这个最近的衡量标准是靠路径开销来判定的,即路径开销最小的端口就是根端口。端口收到一个BPDU报文后,抽取该BPDU报文中根路径开销字段的值,加上该端口本身的端口开销即为本端口路径开销。如果有两个或两个以上的端口计算得到的累计路径开销相同,那么选择收到发送者BID最小的那个端口作为根端口。 本机PID:如果两个或两个以上的端口连接到同一台交换机上,则选择发送者PID最小的那个端口作为根端口。如果两个或两个以上的端口通过Hub连接到同一台交换机的同一个接口上,则选择本交换机的这些端口中的PID最小的作为根端口。 |
2.5 指定端口选举(用于转发BPDU报文的端口选举)
![]() |
非根交换机在选举指定端口时分别依据根路径开销、本机BID、PID。未被选举为根端口或指定端口的端口为预备端口,将会被阻塞。 在网段上抑制其他端口(无论是自己的还是其他设备的)发送BPDU报文的端口,就是该网段的指定端口。每个网段都应该有一个指定端口,根桥的所有端口都是指定端口(除非根桥在物理上存在环路)。 指定端口的选举也是首先比较累计路径开销,累计路径开销最小的端口就是指定端口。——》如果累计路径开销相同,则比较端口所在交换机的桥ID,所在桥ID最小的端口被选举为指定端口。——》如果通过累计路径开销和所在桥ID选举不出来,则比较端口ID,端口ID最小的被选举为指定端口。 网络收敛后,只有指定端口和根端口可以转发数据。其他端口为预备端口,被阻塞,不能转发数据,只能够从所连网段的指定交换机接收到BPDU报文,并以此来监视链路的状态。 |
2.6 端口状态转换
运行STP协议的设备上端口状态有5种:https://www.cnblogs.com/lkztrovo-lsh/p/15292158.html
2.7 BPDU报文
BPDU报文详解:https://www.cnblogs.com/lkztrovo-lsh/p/15249806.html
2.8 STP拓扑变化
STP的拓扑变化:https://www.cnblogs.com/lkztrovo-lsh/p/15292599.html
2.9 设备上的配置
1.STP配置交换机的生成树协议模式的命令:stp mode { mstp | stp | rstp }。缺省情况下,在MSTP模式。在使用STP前,STP模式必须重新配置。 | |
2.STP配置设备优先级值命令:stp priority priority值。priority值为整数,取值范围为0到61440,步长为4096。缺省情况下,交换设备的优先级取值是32768。 可以通过stp root primary命令指定生成树里的根桥,确定网络中的数据流量使用最优路径转发。 |
|
3.配置指定交换机上路径开销值标准de命令:stp pathcost-standard { dot1d-1998 | dot1t | legacy }
手动设置端口路径开销值的命令:stp cost cost值。 缺省情况下,路径开销标准为IEEE 802.1t。
|
|
4.检查当前交换机的STP配置的命令:display stp。 |
|
|
命令输出中信息介绍如下:
|
5.显示交换机上指定端口信息的命令:display stp interface 接口(g0/0/1) |