0x0 背景二层环路的出现以及现象

  • 出现原因
    • 在二层链路中,为了对交换机做冗余,或者人工错误,很容易产生环路。
  • 现象
    • 广播风暴:广播帧再环路被 无限循环 -> a.带宽堵塞 b.交换机性能下降 c.广播帧冲击PC和路由器
    • mac地址不稳定:交换机的mac地址表中的:mac和端口的映射关系一直在切换
  • 链路产生环路的可靠证据?
    • mac地址表一直再变化

0x1 如何破环?

  • 物理破环:拔线
  • STP,交换BPDU来破环,逻辑上阻塞接口

0x2 为啥要使用STP(why)?

  • stp的作用
    1. 逻辑上阻塞端口,破环
    2. 主链路故障,激活冗余链路,保证可靠性

0x3 STP的选举过程(how)?

  • 重点概念
    1. 只有根网桥才会产生BPDU
    2. 一个局域网只有一个根网桥
    3. 根网桥上都是指定端口
    4. 每个非根网桥都只有一个根端口
  • 选举顺序:
    • 在选举结束前,数据帧无法在交换机中传播
      1. 先选出根网桥
      2. 再选出根端口
      3. 选出指定端口
  • 选举依据是什么?
    • 按照BPDU中的字段顺序来进行选举
      1. 首先比较BPDU中的根桥ID越小越优先(16位+48位)(优先级+mac地址)
      2. 再比较BPDU中开销越小越优先(由链路上的带宽决定)
      3. 再比较BPDU中发送者网桥ID越小越优先(16位+48位)(优先级+mac地址)
      4. 最后比较BPDU中发送者端口ID越小越优先(8位+8位)(优先级+端/接口号)
  • 大致流程
    • 根桥选举
      • 在选举开始时,所有的交换机都会认为自己是根交换机,所以刚开始的都会产生BPDU
      • 直到选举完成后,选出一个根网桥才会进行根端口的选举
    • 选出根网桥后,就进行根端口的选举。
      • 此时的所有非根桥交换机都在转发根网桥的BPDU
      • 一个非根网桥的多个接口会收到根网桥的BPDU
      • 通过比较各个接口收到BPDU的优劣(一般比较链路开销),来选举出根端口
    • 选出根根端口后,进行指定端口的选举。
      • 根桥交换机上都是指定端口
      • 此时的两个端口都会发送BPDU和接收到BPDU,通过比较接受到和发送的BPDU优劣(一般比较发送者网桥ID)来找出指定端口,另外一个口设为阻塞端口

0x4 5种端口状态?

  • 如果再选举过程中发现自己是堵塞端口,就会从监听/学习状态回退成阻塞状态

0x5 直接收敛和间接收敛?

  • 直接收敛(30s)
    • 拥有阻塞端口的的交换机可以直接感知到网络拓扑的变化,例如拔线。
  • 间接收敛(50s)
    • 拥有阻塞端口的的交换机不可以直接感知到网络拓扑的变化,只能通过BPDU的改变来判断网络拓扑。
      1. SW2在链路断前,属于非根桥交换机,只负责转发根桥发送的BPDU ——- 老大还没死,我不能篡位
      2. 当链路断开后,SW2中还存有根网桥的BPDU,但这个BPDU存在最大老化时间20s ——– 老大还能活20s,我还不能篡位
      3. 当SW2中的根桥BPDU老化后,就会认为自己是根交换机,开始产生BPDU ——– 老大终于死了,我是老大了
      4. 此时SW3开始收到了不同的BPDU,就感受到了拓扑的变化,于是阻塞端口会变更状态,经过30秒变成转发状态;再这30秒内整个拓扑再重新进行根桥选举,根端口,指定端口的选举。(解释存疑) —— 小弟SW3发现有个人想当老大,不行,我得把老大的信息告诉他,让他认识到自己是什么身份。