802.1D STP Port States

  • 共5种状态,唯一一种有5个状态的生成树协议
    • Disabled —— 掉线
    • BLocking —— 初始化状态,BPDU可以接收
    • Listening —— BPDU 可以转发,可以接收
    • Learning —— 在Listening的基础上学习MAC
    • Forward ——

802.1D Timer

  • 不同状态之间转换的
  • 3个Timer
    • Hello : 2s,根桥发送BPDU的频率
    • Forward Delay : 15s,listening 到 learning等15s,从 learning 到 Forwarding 等 15s
    • Max Age :20s,从Blocking 到 Listening 之间的间隔
      • 没有收到BPDU,或者收到和之前不同的BPDU,就等20s,然后进入Listening
      • 另1种说法,保存BPDU 20s,发现差异时触发生成树的重新计算
  • 从端口接入 到可以正常转发 需要等待 20 + 15 + 15 = 50s
  • 从 Blocking 到 Forwarding的过程,就叫 Converge

802.1D STP Converge

  • 50s case : A到B线路断掉 —— 疑问:是能等同于B到C的线路断掉吗
  • 30s case : A到C线路断掉,Blocking 就不需要再等20s —— C发现自己的RP所在线路断掉

05 802.1D Port States and Converge - 图1

5 Minutes Down Time

  • 802.1D 最快可以在30s 重新生成
  • 但是并不代表30s 就可以恢复网络通信,因为MAC Table的有效期(缓存)是300s
  • 但是 MAC Table 不可以随便修改

STP Topology Change Mechanism

  • 在STP 拓扑发生变化后,通知MAC Table 调整有效期,形成联动机制
    • 交换机检测到拓扑变化时,将其广播到整个网络
    • 其他交换机随后减少MAC Table有效时间到 forward-delay 默认15s,并持续一定时间(默认 MAX_AGE + Forway_Delay, 20+15=35s)
    • 在这种机制下,最快可以实现30s 收敛完成可以通信
  • 拓扑变化
    • 端口从 forward 变为 block
    • 端口变为 forward 同时 该 Bridge 拥有1个 Designated Port
  • 如何通知拓扑变化,通过TCN BPDU来实现
    • Case1
      • 非Root Bridge 发送 TCN BPDU, 通知 Root Bridge
      • Root Bridge 将Configuration BPDU 中的TC bit 标志位置位, 将其广播
    • Case2
      • Root Bridge 发现自己直连的线路变化时,会自己侦测到,并向外发送TC,而不是死等300s 的MAC Aging
  • Configuration BPDU 只有 Root 生成
  • TCN BPDU 非 Root 也能生成
  • 疑问:TCN 的发送路径,只走Root Port ???

TCN Flood

  • Root Bridge 对外发送走的是广播
  • 如何避免TCN Flood,要走Rapid