STP协议(生成树协议)逻辑上断开环路,防止二层网络的广播风暴的产生。
为什么需要STP协议?
假设有这样一个拓扑:
现在PC1ping
网关192.168.1.3
,而这个网关是不存在的,同时在LSW2上进行抓包。
可以看到这个网络里现在充斥着大量的重复包,形成了广播风暴,这种时候交换机的性能急剧下降,因为从PC1出去的包在LSW2上没有找到目标地址的MAC地址,这时交换机会将这个单播帧向除了源端口之外的其它端口转发,转发到其它交换机上,其它的交换机又会重复这个步骤,使得这个网络形成了环路,导致广播风暴,这时就引入了STP协议。
STP的作用
- 消除环路,通过阻断冗余链路来消除网络中可能存在的环路。
- 链路备份:当活动路径发生故障时,激活备份链路,即使恢复网络的连通性。
根桥选举
在STP网络中,会存在一个交换机为根桥,其他的交换机为非根桥,根桥是STP网络的逻辑中心,当根桥出现故障时,非根桥之间会交互BPDU信息并重新选举根桥。
在STP中有三种端口角色:根端口、指定端口、预备端口。
根端口:非根桥去往根桥路径最短的端口。
指定端口:是指所连网络转发配置BDPU的端口,根桥的每个端口都是指定端口。
预备端口:一个端口不是跟端口也不是指定端口,俺么这个端口就是预备端口,预备端口是被阻塞的。
根桥选举的依据是桥ID,桥ID是由桥优先级和MAC地址构成的,默认的桥优先级是32768,优先级的数值越小越优先也最容易被选举为根桥,如果优先级相同那么就比较MAC地址,MAC地址有效越优先。
默认情况下,每个交换机默认自己是根桥,然后通过指定端口向外发送BPDU报文,然后收到BPDU报文的交换机会将报文里的桥ID与自己的比较,相互比较之后选举出根桥。
根端口选举
每个非根桥都要选举一个根端口,即距离根桥最近的那个端口。选举根端口的过程是:
- 非根交换机到根桥的链路开销。
- 如果开销一样,比较上一级发送者的桥ID,选出发送者桥ID最小的对应端口。
- 如果上一级发送者桥ID一样就比较发送端口的优先级,选出优先级最小的对应端口。
- 如果发送端口的优先级也一样,再比较发送端口的端口号。
指定端口选举
指定端口就是发送BPDU报文的端口,指定端口的选举是这样的:
- 首先比较路径开销,开销最小的为指定端口。
- 如果开销相同比较端口所在交换机的桥ID,桥ID最新的端口选举为指定端口。
- 如果桥ID比较不出来接着比较端口ID,端口ID最小的选举为指定端口。
原文:https://www.cnblogs.com/Timesi/p/9347659.html