STP 生成树
一、STP概述
STP用于防止网络中因存在冗余路径导致的环路问题,STP会选举出一个根桥,并在网络中选择最佳路径,将多余的链路阻塞,形成一个无环的树形结构,通过定期发送BPDU报文,确保网络的稳定性和安全性。
二、BPDU 桥协议数据单元
1、BPDU概述
1.BPDU桥协议数据单元是STP协议中用于交换信息的协议报文,交换机之间通过BPDU报文交换信息,以确定网络拓扑结构和根桥的位置,BPDU主要有两种类型:配置BPDU和拓扑变更通知BPDU。
2.每个交换机端口根据接收到的BPDU信息决定自身的角色,包括根端口、指定端口等。
3.拓扑变更处理:当网络拓扑发生变化时,非根交换机会通过根端口发送TCN BPDU通知根桥,根桥会发送带有TC标志的BPDU,以通知整个网络拓扑结构发生变化。
2、BPDU中各字段
BPDU报文中包含了一系列字段,用以承载生成树协议所需的信息。
1.根ID Root ID:由优先级和MAC地址组成,优先级越小,该桥成为根桥的概率越大,通过比较BPDU中的根ID,STP协议选出网络中桥ID最小的交换机作为根桥。
2…路径开销 Cost of Path:路径开销反映了从一个端口到根桥的总开销,通常与链路的带宽成反比,Cost与端口的带宽有关。带宽越大,Cost越小。
3…Bridge ID 桥ID:桥ID由桥优先级和MAC地址组成的,用于标识发送BPDU的交换机。
4…Port ID 端口ID:端口ID表示发出BPDU的端口,有助于识别网络中特定的端口,Port ID总共16bit。
5.Message Age:Message Age记录了BPDU自发送以来的时间,用于计算BPDU的新鲜度。
6.Max Age:Max Age指定了BPDU在网络中被认为是有效的最长时间或老化时间,默认值通常是20秒,当一个端口在Max Age时间内没有收到任何BPDU报文时,该端口会认为与其相连的网络出现了故障,进而触发生成树的重计算,开始进入侦听和学习状态。
7.Hello Time:Hello Time指定了根桥发送BPDU的时间间隔,用于保持网络拓扑的稳定性,默认值通常是2秒,即在运行STP的网络中,交换机会每隔2秒钟发送一次BPDU。
三、根端口、指定端口、阻塞端口
1、根端口
1.每个非根交换机上通往根桥路径代价最小的端口,这是该交换机通往根桥的最佳路径,
2.选举过程基于到达根桥的总成本Cost,成本最小的端口被选为根端口,如果成本相同,则比较发送方的桥ID和端口ID,选择最小的作为根端口(比较顺序Cost、桥ID、端口ID)。
2、指定端口
1.DP指定端口是STP算法选定的端口,用于在不与根桥直接连接的网段上转发配置消息BPDU,同一网段中只有一个端口会成为指定端口,而其他的端口则会被阻塞,以防止环路的形成。
2.指定端口负责向本地网段上的其他交换机端口传播BPDU,确保整个网段上的交换机都能接收到来自根桥的BPDU。
3.每条链路都会有一个指定端口,根交换机上的端口不一定是指定端口。
4.通过调整端口优先级和桥ID来影响指定端口的选举过程,可以通过降低端口的路径成本或桥ID来增加其成为指定端口的概率。
5.根路径成本(Root Path Cost):指端口到根桥的距离,即路径成本越低的端口越有可能成为指定端口。
6.发送者的桥ID(Sending Bridge ID):比较端口所连接的交换机的桥ID,桥ID越小的交换机更有可能成为指定端口。
7.发送端口的端口ID(Sending Port ID):比较端口所连接的交换机的端口ID,端口ID越小的端口更有可能成为指定端口。
3、阻塞端口
1.不被选为根端口或指定端口的其他端口将被阻塞,阻塞端口不参与数据传输。
2.阻塞端口是为了防止环路的形成,一旦网络拓扑发生变化,STP会重新计算生成树,可能会解除某些阻塞端口的状态,使其能够转发数据。
禁用状态(Disabled)、阻塞状态(Blocking)、侦听状态(Listening)、学习状态(Learning)、转发状态(Forwarding)。
四、根桥选举、备份根桥选举
1、根桥选举
1.交换机通过比较桥ID选举根桥以及其他端口角色,根桥是STP网络的中心,所有的交换机通过BPDU报文进行通信,并最终选举出一个具有最低桥ID的交换机作为根桥,所有交换机初始时都认为自己是根桥,并通过BPDU报文交换信息,最终选出根桥。
2.桥ID由优先级和MAC地址组成,桥ID=桥优先级+MAC,且根桥的选举,只和桥优先级+MAC这两个因素有关,桥优先级的默认值取值是32768,且必须是4096的倍数,取值范围是0-65535。如果优先级相同,则会比较MAC地址,最小的MAC地址将被选为根桥。根桥的优先级越小越优先,不一定为 0,只需要比其他交换设备小即可。若运行STP的交换机上所显示的所有端口均处于转发状态,则该交换机为根桥交换机。
2、备份根桥选举
1.通过配置stp root secondary命令来指定一个交换机作为备份根桥,如果根桥发生故障,备份根桥将会接替根桥角色,继续维持网络的稳定运行。
2.stp root secondary命令会将设备的优先级自动设置为4096,这个值是一个相对较高的优先级,因此备份根桥不会成为普通的STP环境中的根桥,只有在原根桥失效的情况下才会提升为根桥。
五、禁用/阻塞/侦听/学习/转发五种端口状态
1.禁用状态(Disabled):端口不处理、不转发BPDU报文,也不转发用户流量。
2.阻塞状态(Blocking):端口仅能接收并处理BPDU,不能转发BPDU或用户流量。
3.侦听状态(Listening):端口可以接收和发送BPDU,但不转发用户流量。
4.学习状态(Learning):端口可以接收和发送BPDU,开始构建MAC地址表,但不转发用户流量,Learning状态下,端口接收数据帧并构建 MAC 地址表,然后进入转发状态Forwarding,Learning状态转变为Forwarding状态时,不经过Forward Delay转发延迟时间,只有替代端口变为根端口才有转发延迟。
5.转发状态(Forwarding):端口可以接收、处理和发送BPDU,并转发用户流量。
六、Forward Delay 转发延迟时间
1.Forward Delay的存在是为了确保网络在拓扑发生变化时能够稳定,避免因过快的端口状态转变导致的临时环路问题。
2.Forward Delay转发延迟时间决定了端口从Blocking阻塞状态转移到Forwarding转发状态所需的时间,只有从替代端口变为根端口才有转发延迟。
3.当端口从Blocking阻塞状态转变为Forwarding转发状态时,总共经历30秒,首先是进入监听Listening状态,这是端口开始接收并发送BPDU报文,但不转发用户流量的阶段,这个过程持续15秒;随后是学习Learning状态,端口在这一状态下学习MAC地址,但仍然不转发用户流量,这个过程持续15秒;最后是转发Forwarding状态,端口开始转发用户流量并继续学习MAC地址。