STP
局域网中物理环路通常有两种产生的原因:一种是基于可靠性的考虑,为交换机之间提供冗余连接;另一种是由于错误的网络设置导致环路的产生。两种情况会导致广播风暴和mac地址学习错误。
STP生成树协议就是用于消除环路中的一种。
STP在IEEE制定的IEEE802.1D标准中定义,用于在局域网中消除数据链路层环路,STP可以通过计算,动态地阻断冗余链路,而当活动链路发生故障时,STP又可以激活冗余链路,恢复网络的连通,避免网络中断。
-
运行STP的设备依据一定的准则选举一个树根节点作为网络中的根桥,其他节点为非树根几点。
-
每一个非树根节点,会选择最优的路径和根桥相连,非树根节点上位于最优路劲的端口,为该节点的根端口。
基本概念
桥和端口的角色
两种特殊的网桥:
- 根桥:整个生成树的根节点,由所有网桥中优先级最高的桥担任
- 指定桥:负责一个Physical Segment(物理段)上数据转发任务的桥,由这个Physical Segment上优先级最高的桥担任。
根端口(Root Port)、指定端口(Designate Port)和候补端口(Alternate Port)
根端口指距离根桥最近的端口。根桥没有根端口,每一个非根桥有且仅有一个根端口
指定端口属于指定桥上的端口。根桥是所有网桥中优先级最高的,它在其所连接的所有Physical Segment上都是指定桥,所有通常情况下根桥的所有端口都是指定端口。
Alternate端口既不是根端也不是指定端口,它是用来为根端口或指定端口做备份的。从Alternate端口出发到达根桥的路径,是网桥到达根桥的备用路径,即最终需要阻塞的路径。
桥ID
STP中每一个网桥都具有一个桥ID(Bridge ID),用于在网络中唯一标识一个桥。根桥选择的依据就是桥ID,具有由最小桥ID的网桥即为网络中的根桥。
在进行桥ID比较时,先比较桥优先级优先级数值小为优在比较桥MAC地址,MAC地址小为优
路径开销
f非根桥需要确定根端口,根端口的选择取决于端口到达根桥距离的远近,网桥上到达根桥距离最近的端口为根端口,衡量距离远近,依据的是路径开销(Path Cost)。
默认的路径开销取决于所遵循的路径开销标准和链路的带宽。
BPDU
BPDU:桥协议数据单元来交互协议信息
BPDU分为如下两类:
- 配置BPDU:是用来进行生成树计算和维护生成树形拓扑的报文
- TCN BPDU:是当拓扑结构改变时,用来通知其他设备网络拓扑发生改变的报文
Protocol identifier: 固定为0x0000,表示是生成树协议。
Protocol Version ID: 协议版本号,目前生成树有三个版本,STP协议版本号为0x00.
BPDU type: 配置BPDU类型为0x00,TCN BPDU类型为0x80.
Flags:由8位组成。最低位(0位)为TC标志位,最高位(7位)为TCA标志位,其他6位保留
Root ID: 根桥ID,由两字节的优先级和6字节MAC地址构成
Root path cost: 根路径开销
Bridge ID: 桥ID,表示发送BPDU的桥的ID,由2字节优先级和6字节MAC地址构成
Port ID: 端口ID,标识发出BPDU的端口
Message age: 从根桥生成配置BPDU开始,到当前时间为止配置BPDU的存活时间。
Maximum age: 当前BPDU的老化时间,即端口保存BPDU的最长时间
Hello time: 根桥发送BPDU的周期,默认2秒
Forward delay: 表示在拓扑改变后,交换机在发送数据包前维持在监听和学习状态的时间,配置BPDU传播到全网的最大时延,默认为15秒。
STP计算过程
STP计算过程
同时进行的两个任务:
- 选举根桥
- 确定端口角色
根桥选举
每一个网桥都还没有收到其他网桥发送的配置BPDU,此时每一个网桥都认为自己是网络中的根桥,并向外发送以自己为根桥的配置BPDU。
由于此时每个网桥都认为自身是根桥,所以每一个网桥都会发送配置bpdu,同时也会收到对端网桥发送的配置BPDU,每一个网桥都将自身认为的Root BRidge ID和接收到的配置BPDU中的Root Bridge ID进行比较,选择Root Bridge ID 较小的作为网络中的根桥。
确定端口角色
根端口的确定需要比较RPC。当网桥从一个端口收到配置BPDU后,首先获取其中的RPC ,和接收端口的链路开销相加,得到此端口的PRC&#x