STP:Spanning Tree Protocol。
以太网交换网络上为了进行链路备份,通常会使用冗余链路,但是使用冗余链路会在交换网络上生成环路,并导致广播风暴以及MAC地址表不稳定等故障现象。
STP运行于以太网交换机上,为解决交换网络中的环路问题在网络上修剪出一棵无环的树,并在主链路故障后,自动启用备份链路,使网络工作正常。
最新的STP标准由1998年发布的IEEE802.1D标准文档定义。
描述生成树基本计算过程;
描述配置BPDU在计算过程中的作用,理解交换机如何选择最优的配置BPDU,以及如何设置端口状态;
描述拓扑结构改变信息的泛洪过程,理解拓扑结构改变信息的作用。
如果交换机从一个端口上接收到的是一个广播数据帧,则向所有其它端口转发,而且交换机在转发数据帧的时候,对数据帧不做任何修改,因此,如果交换网络中有环路,则广播帧会被无限期的转发,形成广播风暴。
环路可以引起MAC地址表不稳定,广播风暴,数据丢失
为了计算生成树,交换机之间需要交换相关信息和参数,这些信息和参数被封装在配置BPDU(Configuration Bridge Protocol Data Unit)中,在交换机之间传递。
BPDU是指桥接协议数据单元,泛指交换机之间运行的协议交互信息时使用的数据单元。配置BPDU是BPDU的一种。
一、生成树计算的第一步是选举根交换机
根交换机的选举基于交换机标识(Bridge ID)。(越小越优先)
交换机标识由两部分组成:两字节长度的交换机优先级和六字节长度的MAC地址。
交换机优先级是可以配置的,取值范围是0~65535,默认值为32768
二、STP为每个非根交换机选举根端口(Root Port)。
交换机的每个端口都有一个端口开销(Port Cost)的参数,此参数表示数据从该端口发送时的开销值,也即出端口的开销。STP认为从一个端口接收数据是没有开销的。端口的开销和端口的带宽有关,带宽越高,开销越小,VRP平台中,百兆端口的开销值为200。从一个非根交换机到达根交换机的路径可能有多条,每一条路径都有一个总的开销值,此开销值是该路径上所有出端口的端口开销总和。
根端口是指从一个非根交换机到根交换机总开销最小的路径所经过的本地端口。这个最小的总开销值称为交换机的根路径开销(Root Path Cost)。如果这样的端口有多个,则比较端口上所连接的上行交换机的交换机标识,越小越优先,如果端口上所连接的上行交换机的交换机标识相同,则比较端口上所连接的上行端口的端口标识(Port Identifier),越小越优先。端口标识由两部分组成:一字节长度的端口优先级和一字节长度的端口号。一字节长度的端口优先级是可配置的,默认为128。本例中,假设所有端口都是百兆端口,使用相同的开销值200。
三、为每个网段选指定口(Designated Port)
指定端口为每个网段转发发往根交换机方向的数据,并且转发由根交换机方向发往该网段的数据。指定端口所在的交换机称为该网段的指定交换机。
为每个网段选举指定端口和指定交换机的时候,首先比较该网段所连接的端口所属交换机的根路径开销,越小越优先;
如果根路径开销相同,则比较所连接的端口所属交换机的交换机标识,越小越优先;
如果根路径开销相同,交换机标识也相同,则比较所连接的端口的端口标识,越小越优先。
对于根交换机来说,所有端口都是所连网段的指定端口。因此LANA和LANB的指定端口都在SWA上。
LAND和LANE都只连接了一个交换机端口,此端口即为指定端口。
对于LANC来说,同时连接到两个交换机端口,并且两个交换机的根路径开销相同,因此需要比较两个端口所在交换机的交换机标识,由于SWB的交换机标识比SWC小(二者交换机优先级一致,但SWB的MAC地址更小),因此LANC的指定端口在SWB上。
既不是根端口也不是指定端口的交换机端口称为
Alternate Port
(预备端口),预备端口不转发数据,处于阻塞状态
当端口正常启用之后,端口首先进入Listening状态,开始生成树的计算过程。
如果经过计算,端口角色需要设置为预备端口(Alternate Port),则端口状态立即进入Blocking;
如果经过计算,端口角色需要设置为根端口(Root Port)或指定端口(Designated Port),则端口状态在等待Forward Delay之后从Listening状态进入Learning状态,然后继续等待Forward Delay之后,从Learning状态进入Forwarding状态,正常转发数据帧。