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与自己的比较,相互比较之后选举出根桥。
根端口选举
每个非根桥都要选举一个根端口,即距离根桥最近的那个端口。选举根端口的过程是:
指定端口选举
指定端口就是发送BPDU报文的端口,指定端口的选举是这样的: