STP协议
0x0 背景二层环路的出现以及现象
- 出现原因
- 在二层链路中,为了对交换机做冗余,或者人工错误,很容易产生环路。
- 现象
- 广播风暴:广播帧再环路被 无限循环 -> a.带宽堵塞 b.交换机性能下降 c.广播帧冲击PC和路由器
- mac地址不稳定:交换机的mac地址表中的:mac和端口的映射关系一直在切换
- 链路产生环路的可靠证据?
- mac地址表一直再变化
0x1 如何破环?
- 物理破环:拔线
- STP,交换BPDU来破环,逻辑上阻塞接口
0x2 为啥要使用STP(why)?
- stp的作用
- 逻辑上阻塞端口,破环
- 主链路故障,激活冗余链路,保证可靠性
0x3 STP的选举过程(how)?
- 重点概念
- 只有根网桥才会产生BPDU
- 一个局域网只有一个根网桥
- 根网桥上都是指定端口
- 每个非根网桥都只有一个根端口
- 选举顺序:
- 在选举结束前,数据帧无法在交换机中传播
- 先选出根网桥
- 再选出根端口
- 选出指定端口
- 在选举结束前,数据帧无法在交换机中传播
- 选举依据是什么?
- 按照BPDU中的字段顺序来进行选举
- 首先比较BPDU中的根桥ID越小越优先(16位+48位)(优先级+mac地址)
- 再比较BPDU中开销越小越优先(由链路上的带宽决定)
- 再比较BPDU中发送者网桥ID越小越优先(16位+48位)(优先级+mac地址)
- 最后比较BPDU中发送者端口ID越小越优先(8位+8位)(优先级+端/接口号)
- 按照BPDU中的字段顺序来进行选举
- 大致流程
- 根桥选举
- 在选举开始时,所有的交换机都会认为自己是根交换机,所以刚开始的都会产生BPDU
- 直到选举完成后,选出一个根网桥才会进行根端口的选举
- 选出根网桥后,就进行根端口的选举。
- 此时的所有非根桥交换机都在转发根网桥的BPDU
- 一个非根网桥的多个接口会收到根网桥的BPDU
- 通过比较各个接口收到BPDU的优劣(一般比较链路开销),来选举出根端口
- 选出根根端口后,进行指定端口的选举。
- 根桥交换机上都是指定端口
- 此时的两个端口都会发送BPDU和接收到BPDU,通过比较接受到和发送的BPDU优劣(一般比较发送者网桥ID)来找出指定端口,另外一个口设为阻塞端口
- 根桥选举
0x4 5种端口状态?
- 如果再选举过程中发现自己是堵塞端口,就会从监听/学习状态回退成阻塞状态
0x5 直接收敛和间接收敛?
- 直接收敛(30s)
- 拥有阻塞端口的的交换机可以直接感知到网络拓扑的变化,例如拔线。
- 间接收敛(50s)
- 拥有阻塞端口的的交换机不可以直接感知到网络拓扑的变化,只能通过BPDU的改变来判断网络拓扑。
- SW2在链路断前,属于非根桥交换机,只负责转发根桥发送的BPDU ——- 老大还没死,我不能篡位
- 当链路断开后,SW2中还存有根网桥的BPDU,但这个BPDU存在最大老化时间20s ——– 老大还能活20s,我还不能篡位
- 当SW2中的根桥BPDU老化后,就会认为自己是根交换机,开始产生BPDU ——– 老大终于死了,我是老大了
- 此时SW3开始收到了不同的BPDU,就感受到了拓扑的变化,于是阻塞端口会变更状态,经过30秒变成转发状态;再这30秒内整个拓扑再重新进行根桥选举,根端口,指定端口的选举。(解释存疑) —— 小弟SW3发现有个人想当老大,不行,我得把老大的信息告诉他,让他认识到自己是什么身份。
- 拥有阻塞端口的的交换机不可以直接感知到网络拓扑的变化,只能通过BPDU的改变来判断网络拓扑。