STP--二層路由器的生成樹協議
轉自:http://blog.51cto.com/13402236/1973112
為什麼要有生成樹協議(spanning-tree protocol)?
在傳統的交換網路中會產生故障(單點故障),導致主機通訊失敗。
例如:sw3 Fas0/23 埠故障,則PC1/PC2 無法與PC3 通訊
單點故障如何解決?
1.增加冗餘鏈路
2.增加冗餘裝置
例如:增加冗餘鏈路(sw1與sw3 相連)
即使sw3 fas0/23 埠故障,SW2傳送的廣播包也可通過sw1進行轉發,從而轉發給sw3,即可實現PC1/PC2/PC3 之間的主機通訊。
增加冗餘鏈路的情況下,會產生什麼問題?
在增加冗餘鏈路的情況下,產生環路的資料(即廣播風暴),會不斷的在網路中進行傳輸,從而消耗網路中鏈路資源和裝置資源。
如圖,假設所有的埠均無故障,增加冗餘鏈路(sw1與sw3相連),sw1在發出廣播後,sw2(sw3)收到並轉發給sw3(sw2),sw3(sw2)收到並轉發給sw1,從而形成環路(廣播風暴),消耗網路鏈路中的資源。
如何解決這個問題?
STP(spanning-tree protocol)---生成協議
作用----存在冗餘鏈路的情況下,實現環路保護,(即線路故障時,阻塞埠開啟,恢復資料通訊)
實現----BPDU(網橋協議資料單元)
分類----PVST/RSTP/MSTP
工作過程
1.確定交換機的角色
分類:
根交換機(只有一個)
非根交換機(除根交換機以外的交換機)
原則:
比較每個交換機的BID(橋ID),越小越好
組成:優先順序+MAC地址(基MAC)
優先順序:預設是32768
MAC地址:交換機主機板MAC地址
sw#show version
2.確定埠角色
分類:
根埠---在非根交換機上距離根交換機最近的埠
指定埠---每一個衝突域中,距離根交換機最近的埠
(衝突域---交換機埠互聯形成)---根交換機上的埠均為指定埠
非指定埠---除根埠及指定埠以外的交換機埠
判斷思路----首先判斷根埠----->再判斷指定埠------>最後判斷非指定埠
如何表示上文中“最近“這個距離?
在STP中,通過cost 表示一個路徑的距離
對於某些鏈路,均有預設的cost值:
10 M --- cost 100
100M --- cost 19
1000M(1G) ---- cost 4
10000M(10G) ---- cost 2
通過什麼來判斷埠所屬角色?
BPDU--橋協議資料單元
root-id //表示根交換機是誰
cost //表示傳送該BPDU協議的交換機到達根交換的距離
BID //表示傳送該BPDU的交換機的名字
Port-id //表示傳送方交換機是在那個埠傳送出來的
(組成--優先順序(預設128)+MAC地址)
以上都是越小越好!!!
例如:如圖,sw2為根交換機(RootSwitch),sw1,sw3為非根交換機,
判斷sw1上兩個埠哪個是根埠,根據 BPDU-橋協議資料單元,root-id 都為sw2,fas0/11的cost值為19(路徑--sw1--sw2),fas0/13的cost值為38(路徑--sw1-sw3-sw2),則 fas0/11為根埠。
sw3上的兩個埠哪個是根埠:根據 BPDU-橋協議資料單元,root-id 都為sw2,fas0/23的cost值19(路徑--sw3--sw2),fas0/13的cost值為38(路徑--sw3-sw1-sw2),則fas0/23為根埠。
sw4 上的兩個埠哪個是根埠:根據 BPDU-橋協議資料單元,root-id 都為sw2,fas0/16的cost值38(路徑--sw4--sw3--sw2),fas0/15的cost值為38(路徑--sw4-sw3- sw2),繼續判斷BID,都是SW4,相同,繼續判斷Port-id(傳送方交換機是在哪個埠傳送進來的)
即sw3 fas0/11---->sw4 fas0/16
sw3 fas0/12---->sw4 fas0/15
由於是sw3 傳送BPDU 給sw4,則看sw3上連線sw4的兩個埠離根交換機的遠近。 sw3上 fas0/11 和fas0/12的root-id,cost值(sw3-sw2--19)BID(優先順序+基MAC)相同,最後看Port-id(優先順序+埠號)
優先順序都預設為128,埠號fas0/11 小於fas0/12,則根埠為sw3 fas0/11埠所對應的sw4 fas0/16埠。
再判斷指定埠:指定埠---每一個衝突域中,距離根交換機最近的埠
根交換機上的埠都是指定埠。即sw2上 fas0/12 fas0/13為指定埠
在sw1 fas0/13 和sw3 fas0/13 埠連線形成衝突域中,sw1 fas0/13 sw3 fas0/13 的root-id 都為sw2
cost值都為19(sw1-->sw2/sw3-->sw2)則比較BID,優先順序都是32768,基MAC 不同,由於sw1基MAC小於sw3基MAC,則sw1的fas0/13為指定埠。
sw#show spanning-tree
....
3.確定埠狀態
disable //相當於shutdown,此時埠不能使用;
listening //偵聽,該狀態偵聽的是BPDU,用於確定埠角色(15s)
learning //學習,該狀態學習的是MAC,形成MAC地址表(15s)
forwarding //轉發,即埠的最終轉發狀態;(根埠,指定埠最終都是forwarding狀態)
block //阻塞,此時埠是不可以傳送資料的;(非指定埠都是block狀態)