目录
STP定义
STP(Spanning Tree Protocol)是一种用于网络交换机的协议,旨在防止网络中的环路,并确保数据包能够在网络中有效地传输。
每个交换机通过BPDU来交换信息,包括自己的标识、端口状态、路径成本以及其他与STP运行相关的参数。通过BPDU交换,交换机可以建立和维护网络拓扑信息,计算出最佳路径,并防止环路的发生。
STP收敛过程就是网络结构变成稳态的过程,STP达到收敛代表所有端口都处于转发状态或者阻塞状态。
BPDU交换时间
BPDU(Bridge Protocol Data Unit)交换时间是指在STP(Spanning Tree Protocol)中,交换机之间发送和接收BPDU的时间间隔。这些时间间隔包括以下几个关键点:
Hello Time:
是指交换机发送BPDU的时间间隔。默认情况下,Hello Time为2秒。交换机在每个Hello Time周期内都会发送一个BPDU,以确保网络中的所有设备能够及时了解网络拓扑的变化。
Forward Delay:
是指在某个端口状态从阻塞(Blocking)转变为转发(Forwarding)状态之间的时间间隔。默认情况下,Forward Delay为15秒。在这段时间内,交换机会在端口上发送BPDU,确保网络拓扑变化被及时传播,并且在确定无环路后再开始转发数据。
Max Age:
是指BPDU在网络中允许存在的最大时限。默认情况下,Max Age为20秒。如果一个交换机在这段时间内没有收到来自某个端口的BPDU,则会假设该端口已经断开连接,开始进行端口状态的重新计算和路径选择。
STP接口状态
状态 | 用途 |
禁用状态(Disabled) | 不发送或接收任何数据帧,不参与STP |
阻塞状态(Blocking) | 不转发数据帧,但会接收BPDU,并根据收到的BPDU信息计算网络拓扑。 |
监听状态(Listening) | 准备好开始学习网络拓扑信息,但仍然不转发数据帧。 |
学习状态(Learning) | 开始学习MAC地址和源地址,并建立MAC地址表,但仍然不转发数据帧。 |
转发状态(Forwarding) | 开始正常转发数据帧,这是正常工作状态,允许数据帧在网络中传输。 |
状态转换说明:
Disabled -> Blocking: 当端口启用时,进入阻塞状态。
Blocking -> Listening(20s): 当端口接收到新的BPDU时,可能会转入监听状态。
Listening -> Learning(15s): 在监听状态结束后,端口进入学习状态。
Learning -> Forwarding(15s): 在学习状态结束后,端口进入转发状态,开始正常转发数据帧。
备注:接口完成整个STP协议过程需要50S
STP几个重要要素
根交换机(Root Switch)
根交换机是STP计算出的网络拓扑中的中心交换机,它被视为整个网络的起点。STP计算的过程中,交换机通过比较优先级(Priority)和MAC地址来决定哪个交换机将成为根交换机。
每台交换机都有一个唯一的网桥 ID(BID),最小值 BID的交换机作为根交换机。
BID=2字节优先级字段+6字节MAC地址
优先级(值越小优先级越大)
范围:0-65535
步长:4096
默认值:32768
MAC地址(交换机的MAC地址,值越小优先级越大)
主路径(Root Path)
主路径是从根交换机到达网络中每个交换机和网络段(LAN)的路径。主路径是STP选择的唯一路径,它确保了没有环路的出现,使得数据包能够在网络中正确传输。
不同带宽速率的成本值:
链路带宽 | 成本值 |
4Mb/s | 250 |
10Mb/s | 100 |
16Mb/s | 62 |
100Mb/s | 19 |
1Gb/s | 4 |
10Gb/s | 2 |
端口角色
在STP运行过程中,每个交换机上的端口被分配不同的角色,包括:
端口角色 | 定义 |
根端口 (Root Port) | 每个非根交换机上距离根交换机路径最短的端口称为根端口,用于发送数据包到根交换机。 |
指定端口 (Designated Port) | 每个网络段(LAN)上的交换机端口中,STP选举出的用于发送数据包的端口称为指定端口。 |
阻塞端口 (Blocking Port) | 在STP计算后,决定的冗余路径或可能形成环路的端口会被置为阻塞状态,从而防止数据包循环传输,确保网络稳定性。 |
收敛时间(Convergence Time)
收敛时间是STP在网络拓扑发生变化时重新计算和调整的时间。虽然STP能够有效地防止环路和确保网络稳定,但是在网络拓扑发生变化时,可能需要一定的时间来重新计算主路径和端口角色,以确保网络正常运行。
STP选举过程
下图为生成树选举步骤:
STP选举过程示例
网络拓扑规划如下:
设备的优先级32768+MAC地址
端口的优先级128+端口
分析过程
选举根交换机
1、比较全部交换机的优先级,都为32768,相同进一步比较MAC地址
2、MAC地址从左侧开始比较,数值越小,网桥ID (BID) 就小,根交换机为A
选举根端口
根端口RP用于接收根交换机发来的BPDU报文,也用于转发普通流量
1、比较路径开销(到根交换机A)
设备 | GE 0/1 | GE 0/2 | GE 0/3 | F 0/1 | F 0/2 | 根端口 |
B | 4 | 4+4=8 | 4+4+4=16 | - | - | GE 0/1 |
C | 4 | 4+4=8 | 4+4+4=16 | - | - | GE 0/1 |
D | 4+4=8 | 4+4=8 | - | - | - | 一致,需进一步比较 |
E | - | - | - | 4+4+19=27 | 4+4+19=27 | 一致,需进一步比较 |
2、比较对端设备的BID
D设备的G 0/2对端设备C的BID 较小,G 0/2为根端口
E 设备两个端口对端设备为同一个无法比较,进一步比较对端设备端口号谁较小
3、比较对端设备端口号
E 设备F 0/1对端端口号较小,F0/1为根端口
选举指定端口
1、根交换机所有端口都为指定端口
所以A设备的G 0/1和G 0/2为指定端口
2、根端口对端为指定端口
所以C设备的G 0/0/3为指定端口、D设备F 0/1为指定端口
3、比较路径开销
(还剩下B-C\B-D\D-E网段未确定指定端口)
分析 B设备G 0/2和C设备 G 0/2到达根网桥的开销都为 4,无法得出结论
分析B-D网段可得出,B设备 G 0/3到A设备的开销为4、D设备 G 0/1到A设备的开销为8,B设备 G 0/3为指定端口;
分析D-E网段,D设备的F 0/2到A设备的开销为8、E设备 F 0/2到A设备的开销为27,D设备F 0/2为指定端口
4、比较端口所在的BID,C设备的BID更小,C设备的 G 0/2为指定端口