1、STP简介

STP (Spanning Tree Protocol,生成树协议)能够提供路径冗余,使用STP可以使两个终端中只有一条有效路径。在实际的网络环境中,物理环路可以提高网络的可靠性,当一条链路断掉的时候,另条链路仍然可以传输数据。 但是,在交换网络中, 当交换机接收到一个未知目的地址的数据帧时,交换机的操作是将这个数据帧广播出去,这样,在存在物理的交换网络中,就会产生一个双向的广播环,甚至产生广播风暴,导致交换机死机。那么,如何既有物理冗余链路保证网络的可靠性,又能避免冗余环路所产生的广播风暴呢?STP 协议是在逻辑上断开网络的环路,防止广播风暴的产生,而一且正在用的线路出现故障,逻辑上被断开的线路又被连通,继续传输数据。

2、STP工作原理

STP运行STA (Saming Tee Aporitim, 生成树算法)。STA算法很复杂,但是其过程可以归纳为以下三个步骤:

(1) 选择根网桥( Root Bridge)

网桥ID最小。

(2)选择根端口( Roo Ports)

①到根路径成本最低;

②最小的直连发送方网桥ID;

③最小的发送方端口ID。

(3)选择指定端口( Designated Ports)

①根路径成本最低;

②所在交换机的网桥ID最小;

③所在交换机的端口ID最小。

3、具体过程

(1)选择根网桥

网桥ID最小:选择根网桥的依据是网桥ID的大小。在选择根网桥的时候,常用的方法是看哪台交换机的网桥ID的值最小,优先级小的被选择为根网桥;在优先级相同的情况下MAC地址小的为根网桥。

网桥ID:是一个8B的字段,前面2B的十进制数称为网桥优先级,后面6B是网格的MAC地址,如下图所示。

网桥优先级:用于衡量网桥在生成树算法中优先级的十进制数,取值范围为0~65535,默认值是32 768。

网桥的MAC地址:交换机自身的MAC地址,可以使用命令show version查看。

(2) 选择根端口

选出了根网桥之后,网络中的每台交换机必须和根网桥建立关联,因此STP将开始选择根端口。每个非根网桥上存在一个根端口, 因此需要在每个非根网桥上选择一个根端口。选择根端口的依据有三个:

①端口到根网桥路径开销大小;

②发送方的网桥ID;

③发送方网桥的端口ID。

到根路经成本最低的端口:路径成本是两个网桥间的路径上所有链路的成本之和,根路经成本也就是一个网桥到达根网桥的中间所有链路的路径成本之和。路径成本用来代表一条链路带宽的大小,一条链路的带宽越大, 它的传输数据的成本也就越低,如下图所示:

(3)选择指定端口

选择了根网桥和每台交换机的根端口后,一个树形结构已初步形成,但是,所有链路仍链接在一起,并可以都处于活动状态,最后形成环路。为了消除环路形成的可能,STP进行最后的计算,在每一个网段 上选择一个指定端口。 选择指定端口的依据有:

①根路径成本最低。

②所在交换机的网桥ID最小;

③所在交换机的端口ID最小。

根网桥上的接口都是指定端口,因为根网桥上端口的根路径成本为0。

(4)阻塞端口

如果端口既不是根端口,也不是指定端口,那么这个端口被阻塞,称为阻塞端口。被阻暴的端口不能传输数据,即该链路成为备份链路。

(5)生成树端口状态

状态用途
转发(Forwarding)发送和接收用户数据
学习(Learning)构建网桥表
侦听(Listening)构建“活动”拓扑
阻塞(Blocking)只接收BPDU

(6)STP配置

进入全局配置模式

Switch#configgure terminal

开启生成树协议

Switch(config)#spanning-tree

设置生成树模式为STP(802.1D)

Switch(config)#spanning-tree mode stp

设置交换机优先级,阈值为4096,最大值为32768

Switch(config)#spanning-tree priority[priority-number]