交换网络中通常会使用冗余链路来提高网络的可靠性。然而,冗余链路会给交换网络带来环路风险,并导致广播风暴以及MAC地址表不稳定等问题,进而会影响到用户的通信质量。
生成树协议STP(Spanning Tree Protocol)是可以用来解决冗余链路所带来的问题。
冗余链路解决了单条链路出现故障导致业务中断问题,虽然增强了网络的可靠性,但是也会产生环路,而环路会带来一系列的问题,继而导致通信质量下降和通信业务中断等问题。
1、环路引发的问题
1.1 广播风暴
广播帧在有环路的交换网络中会被无限转发,网络中的主机接受到大量的重复数据帧,这种情况称之为网络风暴。造成的影响:
网络中充满了广播数据帧;
转发和处理这些无用的数据帧会浪费交换机和网络主机的性能;
交换机地址表震荡会造成数据转发错误;
本例中,假设此单播帧的目的MAC地址在网络中所有交换机的MAC地址表中都暂时不存在。
主机A向外发送了一个单播帧,将其转发到SWA和SWC,SWA和SWC也会将此帧转发到除了接收此帧的其他所有端口,结果此帧又会被再次转发给SWB,这种循环会一直持续,于是便产生了广播风暴。
1.2 MAC地址表震荡
MAC地址表震荡就是,同一个交换机有两个或两个以上接口可以接收到同一个MAC地址,导致MAC地址与交换机端口的对应关系经常发生变化。
交换机是根据所接收到的数//代码效果参考:http://www.jhylw.com.cn/132239375.html
据帧的源地址和接收端口生成MAC地址表项的。假设此单播帧的目的MAC地址在网络中所有交换机的MAC地址表中都暂时不存在。主机A向外发送一个单播帧。SWB收到此数据帧之后,在MAC地址表中生成一个MAC地址表项,00-01-02-03-04-AA,对应端口为G0/0/3,并将其从G0/0/1和G0/0/2端口转发。此例仅以SWB从G0/0/1端口转发此帧为例进行说明。
SWA接收到此帧后,由于MAC地址表中没有对应此帧目的MAC地址的表项,所以SWA会将此帧从G0/0/2转发出去。
SWC接收到此帧后,由于MAC地址表中也没有对应此帧目的MAC地址的表项,所以SWC会将此帧从G0/0/2端口发送回SWB,也会发给主机B。
SWB从G0/0/2接口接收到此数据帧之后,生成一个新的表项,00-01-02-03-04-AA,覆盖原有的MAC地址表。对应端口为G0/0/2。
此过程会不断重复,从而导致MAC地址表震荡。
2、STP生成树协议
2.1 STP的主要作用:(无用时阻断冗余链路,需要时启用)
消除环路:通过阻塞端口来消除网络中可能存在的环路。
链路备份:当活动路径发生故障时,激活备份链路,及时恢复网络连通性。
2.2 STP工作方式
每个STP网络中,都会有且只有一个根桥(根交换机),其他交换机为非根桥。
根桥或者根交换机位于整个逻辑树的根部,是STP网络的逻辑中心;非根桥是根桥的下游设备。当现有根桥产生故障时,非根桥之间会交互信息并重新选举根桥,交互的这种信息被称为BPDU。BPDU中包含交换机在参加生成树计算时的各种参数信息。
STP中定义了三种端口角色:指定端口,根端口、预备端口(阻塞端口)。
根端口是非根交换机去往根桥路径最优的端口。在一个运行STP协议的交换机上最多只有一个根端口,但根桥上没有根端口。(非根交换机上有)
指定端口是交换机向所连网段转发配置BPDU的端口,每个网段有且只能有一个指定端口。一般情况下,根桥的每个端口都是指定端口。(所有交换机都有)
如果一个端口既不是指定端口也不是根端口,则此端口为预备端口。预备端口将被阻塞。
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。
如果收到的BPDU报文中的桥ID优先级低,接收交换机会继续通告自己的配置BPDU报文给邻居交换机。
如果收到的BPDU报文中的桥ID优先级高,则交换机会修改自己的BPDU报文的根桥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种:
2.7 BPDU报文
BPDU报文详解:
2.8 STP拓扑变化
STP的拓扑变化:
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 }
dot1d-1998 IEEE 802.1D-1998
dot1t IEEE 802.1T
legacy Legacy
手动设置端口路径开销值的命令:stp cost cost值。 缺省情况下,路径开销标准为IEEE 802.1t。
使用华为的私有计算方法时,cost取值范围是1~200000。
使用IEEE 802.1d标准方法时,cost取值范围是1~65535。
使用IEEE 802.1t标准方法时,cost取值范围是1~200000000。
4.检查当前交换机的STP配置的命令:display stp。
命令输出中信息介绍如下:
CIST Bridge参数标识指定交换机当前桥ID,包含交换机的优先级和MAC地址。
Bridge Times参数标识Hello定时器、Forward Delay定时器、Max Age定时器的值。
CIST Root/ERPC参数标识根桥ID以及此交换机到根桥的根路径开销。
5.显示交换机上指定端口信息的命令:display //代码效果参考:http://www.jhylw.com.cn/400239287.html
stp interface 接口(g0/0/1)