本文已参与「新人创作礼」活动,一起开启掘金创作之路。
STP
生成树协议,用于解决二层交换网络环路的协议,在二层交换网络一旦出现环路就会造成报文在环路中不断循环和增生,进而产生广播风暴(详情看下面实验),随后在它的基础上又出现了RSTP(快速生成树)协议、PVST(每个生成树)协议和MSTP(多生成树协议)
修改生成树模式
STP生成树顾名思义就是生成一棵树,从而避免环路,STP中定义了根桥、根端口、指定端口、替代端口、路径开销等,其目的就在于使用生成树算法构造一棵树达到裁剪冗余环路,同时实现链路备份和路径优化
STP的选举
根桥选举
交换机初始化启动之后都会默认自己为根桥,之后相互发送BPDU包,BPDU包中都会标识自己为根桥,相互交换之后,通过比较桥ID,确定根桥(先比优先级再比MAC地址)
根端口选举
STP协议通过比较根路径开销来选举根端口
选举步骤:
1、比较BPDU包中的根桥ID(RID),优选RID小的(在一个网络中只能存在一个根桥,所以RID都是一致的)
2、如果RID一致比较到达根桥的累计路径开销(RPC),优选RPC小的(RPC=BPDU包中通报的RPC值+接收端口的PC的值)(PC:路径开销,根据端口速率来计算)
3、如果到达根桥的RPC一致,比较BPDU包中的发送者的桥ID(BID),优选BID小的
4、如果BID一致,比较BPDU包中发送者的端口ID,优选小的
5、如果端口ID一致,比较BPDU包接收者的本地端口ID,优选小的
指定端口选举
根端口保证了非根桥端口到根桥路径的唯一性和最优性,为了防止环路还需要再选举指定端口(根桥的所有端口都是指定端口)
选举方式与根端口选举方式类似
替代端口选举
如果一个端口既不是根端口也不是指定端口,那么这个端口就会被阻塞掉,变成替换端口,它是根端口的备份,一旦根端口出现故障,它会立马变成根端口
边缘端口的选举
将交换机连接终端的端口配置为边缘端口,可以减少端口的转发延时。
STP的端口状态
STP协议有5种端口状态:Disable(禁用)、Listening(侦听)、Learning(学习)、Forwarding(转发)、Blocking(阻塞)
Disable(禁用):端口不处理和转发BPDU包,不转发数据帧
Listening(侦听):端口可以接收和转发BPDU包,但不转发数据帧
Learning(学习):端口接收数据帧并创建MAC地址,但不转发数据帧
Forwarding(转发):端口既可以转发数据帧也可以转发BPDU包,只有根端口和指定端口才可以
Blocking(阻塞):端口仅能接收并处理BPDU包,但不转发BPDU包和数据帧。
测试
实验拓扑图
实验流程
1、给两天PC机配置IP地址
2、清空两个交换机的MAC地址表 undo mac-address all
3、关闭STP生成树协议 stp disable(开启 stp enable,交换机的stp默认开机自启动)
使用 dis stp 查看stp信息
4、在PC1上ping测试PC2
在上图的E0/0/1 和 E 0/0/2抓包,在没有生成树协议的情况下,从PC1端发送到LSW1的数据帧,首先查询MAC地址表发现为空,使用泛洪转发行为向除该口外的其他口进行转发,此时数据将发送至LSW1的E0/0/2口,到达LSW2,继续查询MAC地址表,此时表中为空,也使用泛洪方式转发数据帧至LSW2的E0/0/1和E0/0/3,到达E0/0/3的没问题,但是到达E0/0/1的又会回到LSW1继续前面的步骤,即形成环路。
5、重启交换机
此时STP协议已经开始工作,一段时间后,网络联通,避免环路
\