Cisco网络技术学习笔记|STP 1 - Spanning Tree Protocol and BPDU packets - 生成树协议和 BPDU 数据包


STP - Spanning Tree Protocol 生成树协议 // IEEE 802.1D
BPDU - Bridge Packet Data Unit

生成树协议用于建立一个没有环路的拓扑。基本概念就是利用交换机之间互相交换BPDU数据包,使之甄别出冗余链接。
基本来讲,要经过几个程序:
1. Root Bridge Election - 选择根桥,以此为前提来分析之后的拓扑 // smaller priority <<< smaller MAC address
2. Root Port Election - 非根桥端口选择根端口 (拥有到达根桥的最优路径 & 根桥 root path cost = 0)
3. Designated Port Election - 非根桥之间的连接,选择Designated port // maller root path cost <<< smaller BPDU sender bridge ID // all rest port will be in blocked

STP定义了五种不同的端口状态:

  • disabled
  • listening
  • learning
  • blocking
  • forwarding
STP (802.1D) Port State RSTP (802.1w) Port State Is Port Included in Active Topology? Is Port Learning MAC Addresses?
Disabled Discarding No No
Blocking Discarding No No
Listening Discarding Yes No
Learning Learning Yes Yes
Forwarding Forwarding Yes Yes

要点:
1 - root bridge has no root port, only designated port
2 - once converaged, root bridge generates BPDU, no-root bridge receive BPDU, then update info ( Bridge ID, path cost) then forward out via designated port.
3 - when topology change, non-bridge switch send TCN to root, then root update BPDU data field and send out BPDU to notify other switch topoloy has been changed.
================
在网上看到有人提问还有很清晰的回答,也解释了我的一些疑问。
Ques:
1- Does only Root bridge generate BPDU packet for whole stp domain or another swtiches in stp domain generate BPDU?
In 802.1d Spanning-Tree, only the Root Bridge was responsible creating/generating fresh BPDUs every Hello-Time (2-seconds by default).The Root Bridge would then transmit those new BPDUs on all of its Designated Ports.A downstream bridge that was directly-connected to the Root Bridge would receive those BPDUs on a port that might be either a Root Port or Blocking Port (if that downstream switch had an alternative path to the Root with a lower cumulative Cost).

----a. If a downstream bridge received those BPDUs on a Blocked Port, it would process the BPDU and then drop it.It could NOT forward that BPDU any further.
----b. If a downstream bridge received those BPDUs on a Root Port, it would process that BPDU, change the Sending Bridge-ID to it's own ID, update the "Root Cost" field, and then forward that BPDU out any Designated Ports it had.

2- Do Designated ports and Root ports on other switches recieve BPDU from peer switches ?

In 802.1d, if the Root Bridge temporarily stopped sending BPDUs for a few seconds (maybe because it's CPU was spiked at 100%, or it was having memory shortage issues, yada, yada, yada) then you would notice that there were NO BPDUs anywhere in the switched topology for that duration of time. In other words, if you (as a non-Root bridge) didn't receive a BPDU, you had nothing to send to anyone else.



3. Does any change(included disconnect cable or port shutdown) on switches of one STP domain result in STP process from scratch for election of root bridge and all phases for convergence of STP,as same as creating STP for first time ?
Ans: Root Bridge election will happen only when the existing root goes down. Any link disconnect / port shutdown will not trigger the election of root bridge again.



4. what does one switch do after receiving BPDU on portfast port?
Ans: It depends on where you have enabled portfast. when portfast is enabled globally, that port will lose its portfast status and would start operating as normal STP port. But when the portfast is enabled on the interface mode, then since LIS/LRN stages are bypassed on the portfast enabled port, you may be at a risk of causing loop.




5. what is minimum and maximum of STP convergence time ? Is it based on number of switch in STP domain?
Ans: Well this depends on the time of failure.. generally , STP convergence will start from disabled -> Listening -> Learning -> Forwarding / Blocking.
Listening is 15 sec, Learning is 15 sec.so convergence time is 30 seconds for a link to come in forwarding state. but this depends on the type of failure as well.
if it is an indirect link failure, it could be Max age (20)sec + Lis (15) sec + lear (15 ) sec = 50 sec delay.

When a link goes down / comes up, the switch generates TCN and send it on its root port towards the root bridge. all the switches towards the root will relay this towards the root bridge.

when the root bridge receives this , it sets the TCN Flag on its BPDU to "Yes" and send it across to all the switches downstream. so all the switches will set the CAM table aging timeout to forward delay (for the vlan's in which the failure was detected) and starts learning the CAM table again.

更多细节可见:
http://www.cisco.com/c/en/us/support/docs/lan-switching/spanning-tree-protocol/24062-146.html

【Cisco网络技术学习笔记|STP 1 - Spanning Tree Protocol and BPDU packets - 生成树协议和 BPDU 数据包】

    推荐阅读