当我们需要增加网络的可靠性,就需要增加设备的链路连接,比如两条网线,如果一条坏了,另一条还可以起作用!但是问题来了如果两条线,在两台交换机之间广播数据循环转发,就会形成网络风暴,直至设备瘫痪!这时候我们就需要用到STP,来保证两条线既能实现冗余,又能实现保证数据及设备的正常运转!
什么是STP?
STP(Spanning Tree Protocol)是解决以太网交换网络中冗余链路产生的环路,防止引发广播风暴以及MAC地址表不稳定等故障现象,提高网络可靠性。
运行STP协议的设备通过彼此交互信息发现网络中的环路,并有选择的对某个端口进行阻塞,最终将环形网络结构修剪成无环路的树形网络结构,从而防止报文在环形网络中不断循环,避免设备由于重复接收相同的报文造成处理能力下降。
那么为什么又叫做生成树协议,这是因为STP的算法,就像大树的根持续往下生长,每个方向的个不会产生交集,保证的数据的单向流动性!
比如底下的两台设备,开始了生成树。
STP
我们来查看一下结果:
LSW1:
LSW2:
通过查看两台的设备stp状态,我们发现明显LSW1的设备E0/0/2端口为DISCARDING状态,也就是不能转发,直到当地一条链路出现故障,STP才会将开启转发!
STP的目的
在以太网交换网中部署生成树协议后,如果网络中出现环路,生成树协议通过拓扑计算,可实现:
- 消除环路:通过阻塞冗余链路消除网络中可能存在的网络通信环路。
- 链路备份:当前活动的路径发生故障时,激活冗余备份链路,恢复网络连通性。
STP的根桥
上面说了,STP像树根一样向下发展,也就决定了整个网络只会存在一个根桥!既然只有一个根桥,那就需要在整个网络选举出根桥!
根桥的选举:生成树的生成计算有两大基本度量依据:ID和路径开销。
ID
ID又分为:BID(Bridge ID)和PID(Port ID)。
BID:桥ID
BID是由16位的桥优先级(Bridge Priority)与桥MAC地址构成。BID桥优先级占据高16位,其余的低48位是MAC地址。
在STP网络中,桥ID最小的设备会被选举为根桥。
PID:端口ID
PID由两部分构成的,高4位是端口优先级,低12位是端口号。
PID只在某些情况下对选择指定端口有作用。
路径开销
路径开销(Path Cost)是一个端口变量,是STP协议用于选择链路的参考值。STP协议通过计算路径开销,选择较为“强壮”的链路,阻塞多余的链路,将网络修剪成无环路的树形网络结构。
在一个STP网络中,某端口到根桥的路径开销就是所经过的各个桥上的各端口的路径开销累加而成,这个值叫做根路径开销(Root Path Cost)。
三要素选举
**从环形网络拓扑结构到树形结构,总体来说有三个要素:根桥、根端口和指定端口。**以下结合图介绍三要素。
STP网络结构
根桥RB(Root Bridge) 根桥就是网桥ID最小的桥,通过交互配置BPDU协议报文选出最小的BID。
根端口RP(Root Port) 所谓根端口就是去往根桥路径开销最小的端口,根端口负责向根桥方向转发数据,这个端口的选择标准是依据根路径开销判定。很显然,在一个运行STP协议的设备上根端口有且只有一个,根桥上没有根端口。
指定端口DP(Designated Port)
四个比较原则
**STP选举有四个比较原则,构成消息优先级向量:根桥ID,根路径开销,发送设备BID,发送端口PID **。
配置BPDU中携带本端口的主要信息如下
- 根桥ID:每个STP网络中有且仅有一个根。
- 根路径开销:发送配置BPDU的端口到根桥的距离,决定了到根桥的路径开销。
- 发送设备BID:发送配置BPDU的设备的BID。
- 发送端口PID:发出配置BPDU的端口的PID。
五种端口状态
五种端口状态
端口的状态流程
端口状态的流程
我们以地下的案例介绍:
stp案例
整个网络目前只是配置了二层VLAN,并未配置三层数据,大家在看的时候可以忽略IP的地址和三层功能!
我们先看看核心的两台设备的stp状态:
core1
core2
通过查看两台核心设备的STP状态发现所有的端口都是转发状态,也许是因为在使用模拟器模拟创建设备的时候先创建的设备ID等相关参数小的原因,核心设备都会变为根桥,下面的接入设备肯定会有一条处于堵塞状态,但是这样不影响上面的网络环境,或者也是我们需要的结果!
接入交换机acc1
接入交换机acc3
上面连个分别有一条被堵塞,因为本身两条就是用于冗余,日常只需要一条同行即可!但是很多的时候在核心设备上面有堵塞,或者为了设备稳定型我们会手动指定根桥!
手动指定根桥和备份桥 指定core1设备为根桥
[core1]stp root primary
缺省情况下,交换设备不作为任何生成树的根桥。配置后该设备优先级数值自动为0,并且不能更改设备优先级。
指定core2设备为备份根桥
[core2]stp root secondary
缺省情况下,交换设备不作为任何生成树的备份根桥。配置后该设备优先级数值为4096,并且不能更改设备优先级。
如果自己想要转发的端口是堵塞状态,那么可以通过调整端口路径的开销值来改变端口状态!
端口路径开销值取值范围由路径开销计算方法决定,当确定路径开销计算方法后,如果端口所处链路的速率值越大,则建议将该端口的路径开销值在指定范围内设置越小。
以华为计算方法为例,不同速率的端口路径开销的缺省值不同
存在环路的网络环境中,对于链路速率值相对较小的端口,建议将其路径开销值配置相对较大,以使其在生成树算法中被选举成为阻塞端口,阻塞其所在链路。
评论区