1. 程式人生 > >STP--二層路由器的生成樹協議

STP--二層路由器的生成樹協議

轉自:http://blog.51cto.com/13402236/1973112

 

為什麼要有生成樹協議(spanning-tree protocol)?

   在傳統的交換網路中會產生故障(單點故障),導致主機通訊失敗。

wKioL1nknNrg4VcRAADYMP2j5Xo591.png

例如:sw3 Fas0/23 埠故障,則PC1/PC2 無法與PC3 通訊

 

   單點故障如何解決?

   1.增加冗餘鏈路

   2.增加冗餘裝置

wKioL1nknMbykeHcAADclKWeuHA638.png

 

例如:增加冗餘鏈路(sw1與sw3 相連)

      即使sw3 fas0/23 埠故障,SW2傳送的廣播包也可通過sw1進行轉發,從而轉發給sw3,即可實現PC1/PC2/PC3 之間的主機通訊。

 

   增加冗餘鏈路的情況下,會產生什麼問題?

     在增加冗餘鏈路的情況下,產生環路的資料(即廣播風暴),會不斷的在網路中進行傳輸,從而消耗網路中鏈路資源和裝置資源。

 

wKioL1nknQXiveWKAADclKWeuHA007.png

  如圖,假設所有的埠均無故障,增加冗餘鏈路(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地址) 

                  以上都是越小越好!!!

 

wKioL1nkpiqjNvLQAADt4YoPO-g131.png

 

例如:如圖,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狀態)