一、為什么要用STP
為了提高網絡可靠性,交換網絡中通常會使用冗余鏈路。然而,冗余鏈路會給交換網絡帶來環路風險,并導致廣播風暴以及MAC地址表不穩定等問題,進而會影響到用戶的通信質量。生成樹協議STP(Spanning Tree Protocol)可以在提高可靠性的同時又能避免環路帶來的各種問題。a)Stp通過阻塞端口來消除環路,并能夠實現鏈路備份目的

-
根橋:生成樹里面的‘老大’,橋id最小
-
備份根橋:生成樹里面的“二把手”,老大掛了的時候,我當老大,橋ID第二小。
-
非根交換機:干活的小弟,都有一個根端口
-
根端口:離根橋最近的端口
-
指定端口:根橋所有參與生成樹選舉的端口,都一定是指定端口
-
非根非指定端口:被阻塞的端口---備用鏈路的端口
-
路徑開銷:是端口Cost值,可以用來選擇最優的路徑,值越小越優。根路徑開銷是端口到達根橋的過程中累計的路徑開銷。
-
BID:橋ID:是由橋優先級和橋MAC地址構成,橋優先級為高16位,MAC地址是低48位。
-
PID:端口ID:是由端口優先級和端口號構成,端口優先級為高4位,端口號
2.根端口,指定端口,非根非指定端口(阻塞端口/預備端口)2.第二種端口選舉因素:路徑開銷>橋ID>對端端口ID>本端端口ID3.如果我們要改變根橋直連端口的接口屬性,要修改 路徑開銷。2.根橋所有參與生成樹選舉的端口,都一定是指定端口3.根橋交換機指定端口直連的交換機端口,都一定是指定端口 4.根橋:在參與生成樹選舉的網絡里面 橋id肯定是最小的5.備份根橋:在參與生成樹選舉的網絡里面 橋id肯定是次優的存在影響根橋選舉的因素:
1)優先級(交換機默認優先級是32768)越小越優先,0的優先級最高。 2)優先級一樣,看MAC地址表,最小的就是根橋。
3)兩種方式:優先級最小、MAC地址最小
1.非根交換機在選舉根端口時分別依據該端口的根路徑開銷、橋ID、對端PID和本端PID(接了hub的情況才會用到本端PID)1.disable(端口未啟用狀態或初始狀態,端口不處理任何數據端口狀態為down)3.listening(監聽狀態,參與生成樹計算,接受并發送BPDU報文維持15秒)4.learning(學習狀態,端口不轉發用戶流量,學習MAC表,參與生成樹計算,接受并發送BPDU報文,防止環路維持15秒)

a)Hello Time:指允許STP的設備發送BPDU的時間間隔。當網絡拓撲穩定之后,若要修改該定時器,只有在根橋修改才能生效。b)Forward Delay:指接口進行狀態更換的延遲時間。也就是在處于Listening和Learning的持續時間,缺省值為15秒。c)Max Age: 指接口的BPDU老化時間。BPDU從根橋被發出的時候,Message Age值為0,每經過一個橋設備,其值加1。當非根橋設備收到BPDU后,會比較Message Age和Max Age的大小。如果前者小于等于后者,該非根橋設備繼續轉發該BPDU;如果前者大于后者,該BPDU將被丟棄,此時可以認為網絡直徑過大,根橋連接失敗。在同一個拓撲中,Max Age是相同的,可在根橋上修改該值。1. 根橋故障恢復時間是max age+2*forwading Delay=20+15*2=50s(發送TCPBDU)2.直連鏈路故障回復時間是2*forwading Delay=15*2=30s3.間接鏈路故障恢復時間是max age+2*forwading Delay=20+15*2=50s2.技術層面,交換機不能拒接廣播,當收到廣播時,會進行泛洪

為了計算生成樹,交換機之間需要交換相關的信息和參數,這些信息和參數被封裝在BPDU ( Bridge Protocol Data Unit )中。
BPDU 有兩種類型:配置 BPDU 和 TCN BPDU 。 配置BPDU 包含了橋 ID 、路徑開銷和端口 ID 等參數。STP 協議通過在交換機之間傳遞配置 BPDU 來選舉根交換機,以及確定每個交換機端口的角色和狀態。在初始化過程中,每個橋都主動發送配置 BPDU 。在網絡拓撲穩定以后,只有根橋主動發送配置 BPDU ,其他交換機在收到上游傳來的配置 BPDU 后,才會發送自己的配置 BPDU 。 TCN BPDU是指下游交換機感知到拓撲發生變化時向上游發送的拓撲變化通知。

注意:想要一個交換機一定為根橋,修改優先級,優先級可以為0。在后面加入新設備時,要使原根橋不變可以增大加入的新設備的優先級。交換機默認情況下直連的路徑開銷最小,但人工修改后則修改的可以為最小。