在二层网络中,为了提高网络的可靠性,会在交换机之间建立多条链路,但通过这种方式建立的链路有一个致命问题,会生成环路。
在一个网络中存在环路则会产生广播风暴和MAC地址震荡:
广播风暴: 如果交换机从接收到了一个广播帧,或者是一个目的MAC地址未知的单播帧,则会将这个帧向除源端口之外的所有其他端口转发。如果交换网络中有环路,则这个帧会被无限转发,此时便会形成广播风暴。
如图,SWA、SWB和SWC将收到数据包循环转发在网络中。
MAC地址表震荡: 交换机是根据所接收到的数据帧的源地址和接收端口生成MAC地址表项的。如果网络中存在环路,交换机经过转发会从多个接口收到同一个数据帧,则交换机内的MAC表同一频繁在多个接口切换。
如图,SWB收到G0/0/3的广播数据帧,则将对应MAC条目(00-05-06-07-08-AA G0/0/3)写入MAC表,且将数据帧洪泛出去,经过SWA、SWC的转发,从G0/0/2收到此数据帧,接收端口为G0/0/2,MAC地址00-05-06-07-08-AA对应接口会在G0/0/2、G0/0/3中不断切换,也就是MAC地址表震荡。
STP生成树协议
STP生成树协议就是通过阻塞端口来消除环路,并实现链路备份的目的。
如下图所示,网络中存在环路,STP协议使用通过算法,选择将SWC的某个端口堵塞,使之无法进行数据传输,环路消除:
STP工作过程
名词解释:
-
BPDU:为了计算生成树,交换机之间需要交换相关的信息和参数则将信息封装在BPDU中,包括桥ID、路径开销和端口ID等参数。
-
桥ID(BID):桥ID由16位的桥优先级和48位的MAC地址构成。桥优先级默认为32768,可人工设置(0-65535),MAC地址是唯一的。
-
接口ID(PID):运行STP交换机的每个端口都有一个端口ID,端口ID由端口优先级和端口号构成(0-240)。
-
指定端口:交换机向所连网段转发配置BPDU的端口,一个网段只能有一个指定端口,根桥的每个端口总是指定端口。
-
根端口:非根交换机去往根桥路径最优的端口,在一个运行STP协议的交换机上最多有一个该端口。
-
预备端口:不是根端口也不是指定端口,会被阻塞的端口。
如图所示:
图中:
D:指定端口
A:预备端口
R:根端口
第一步,选举根桥:
根桥的角色相当于“树”的根,是核心部分。
① 每一台交换机启动STP后,都认为自己是根桥,并在发送给其他交换机的BPDU中,宣告自己为根桥。此时BPDU中的根桥ID为各自设备的网桥ID。
② 各交换机收到网络中其他设备发送来的BPDU后,会比较BPDU中的根桥ID和自己的 BID。
③ 交换机不断交互BPDU,同时对BID进行比较,最终选举一台BID最小的交换机作为根桥,其他的则为非根桥。
第二步,给非根桥交换机选举根端口:
① 交换机各端口会收到BPDU报文,里面包含路径开销、BID、PID等信息
② 先比较路径开销,越小越优,优则为根端口
③ 若路径开销相同,比较上行交换机的BID(也就是发送BPDU交换机的BID),越小越优,优则为根端口
④ 若上行交换机的BID相同,则比较上行交换机的PID,越小越优,优则为根端口
若上行交换机的PID相同,则比较本地各端口的PID,越小越优,优则为根端口
第三步,给每个网段选举指定端口:
① 交换机各端口会收到BPDU报文,里面包含路径开销、BID、PID等信息
② 先比较路径开销,越小越优,优则为指定端口
③ 若路径开销相等,则比较链路两端交换机的BID,越小越优,优则为指定端口
④ 若链路两端交换机的BID相等,则比较链路两端端口PID,越小越优,优则为指定端口
第四步,阻塞预备端口:
① 交换机会阻塞那些非根端口,非指定端口,这些端口不能转发由终端计算机产生并发送的帧。
② 阻塞端口后,STP生成树形成。
STP实验验证
实验拓扑如下:
(1)华为交换机默认开启STP功能,交换机刚开启STP协议时,默认自己为根桥,其各端口为指定端口,STP信息如图:
(2)交换机会向网络中其他交换机宣告自己是根桥,发送BPDU。使用Wires hark抓包软件,在LSW1接口Eth0/0/1上进行数据抓包,详细信息如图:
(3)交换机LSW2上STP详细信息如图:
(4)在交换机LSW2接口Eth0/0/1上抓包数据如下:
(5)交换机LSW3上STP详细信息如图:
由图可知,根据STP算法堵塞了LSW3的Eth0/0/2接口。
总结:
STP协议通过阻塞端口实现消除环路,在选举端口角色时,主要依靠各交换机发送的BPDU。
另外精心整理了一些【STP协议–思维导图/ 视频分析/ 实验配置】,来进一步巩固你的基础;
如果大家想入手以上相关的学习资料,私信 “ 学习 ” 免费领取哦!