生成樹協議STP


昨天的延續:


1、華爲設備上的 “鏈路捆綁” - 動態



   # 在華爲設備,批量配置端口

          port-group  group-member gi0/0/1 to gi0/0/3 

    ->同時進入 gi0/0/1 , gi0/0/2 , gi0/0/3 端口;


 

   # 在鏈路上使用 LACP 協議的時候,基於平臺和使用的軟件有關係,

     有些端口是無法明確的指定端口 Active 或 passive 狀態,

那麼此時,每個參與 LACP 協議中的端口,默認都是 active 狀態。

 

   # 在通過 LACP 動態協商形成 eth-trunk 互聯設備中,設備之間是有

     主從關係。從設備對成員鏈路的選擇,完全是跟隨主設備的決定的;

 主從關係的確定,是通過比較 LACP 交換機上的以下信息:

 系統優先級和系統ID

    系統優先級默認是   32768 ,取值範圍是 0 --- 65535

    系統ID是 MAC 地址的形式,其實是 eth-trunk(20) 端口的 MAC 地址。

 比較原則是:

     #首先比較優先級,越小越好;

 #如果相同,則比較 MAC地址,越小越好。

   

   # 當設備之間的成員鏈路數據量多餘“活動鏈路數量”時,那“主設備”會

     在所有的成員鏈路中,選擇“比較好”的成員鏈路,作爲活動鏈路使用。

選擇原則是:

     #首先比較每個端口的優先級,默認是 32768,值越小越好;

 #如果端口優先級相同,則比較端口的 PortNo 參數;值越小越好;


配置命令如下:

    -修改交換機的額 LACP 優先級

   [SW1]lacp priority  0 -->

    -修改端口的 LACP 優先級 

    [SW1]interface gi0/0/1 

[SW1-gi0/0/1] lacp priority  40000

-啓用 Eth-trunk 上的“搶佔功能" (建議都開啓)

    [SW1]interface eth-trunk 20

[SW1-eth-trunk] lacp preempt enable  --> 開啓;默認是關閉的;

[SW1-eth-trunk] lacp preempt delay 10 --> 默認是30s


驗證命令: 

     display eth-trunk

display trunkmembership eth-trunk 20 


==============================================================


STP: spanning tree protocol  - 生成樹協議

   

   -where

       交換網絡中,即所謂的交換機上;也就是,該技術是一個2層技術。

   -why

       因爲在傳統的交換網絡中,存在“單點故障”的問題,

  所以爲了解決該問題,我們引入了“備份鏈路/設備“解決方案,

  但是,帶來了新的問題 - 2層數據環路,

  所以,爲了解決該問題,我們提出了 STP 解決方案。


   -環路形成:

         演示過程 - 自己畫圖,理解。

 

環路現象 -

    交換機上會提示以下信息:

     MAC A flapping between Fas0/1  and  Fas0/2 

通過查看交換機上的端口的 LED 指示燈查看:

     瘋狂閃爍

   -作用:

       在交換網絡中,存在備份鏈路的情況,防止2層數據轉發環路的發生。


   -實現:

       -報文 

      BPDU - bridge protocol  data   unit 

          橋接    協議    數據   單元

       -類型

      config BPDU  : 配置BPDU

  TCN    BPDU  :拓撲變更通知 BPDU 

   -原理

       1、確定交換機的角色

          根交換機

  非根交換機

      選舉依據:BID - bridge ID , 橋ID

            優先級   +    MAC地址 

 2Byte         6Byte

      選舉原則:

       1、首先比較 BID 的優先級,越小越好;

     默認是32768

2、如果優先級相同,則比較 MAC 地址,越小越好。

     本質上是交換機的“基MAC地址”,也就是

 交換機的主板的MAC地址 - show version 

  

  2、確定端口的角色

    (root-port)          根端口 :在每一個非根交換機上,有且只有一個,距離根交換機,最近的端口

(designated-port)    指定端口:在每一個網段(衝突域),有且只有一個,距離根交換機,最近的端口

(non-designated-port)非指定端口:其他所有端口,都稱之爲非指定端口。

   在 STP 中,如何表示“距離”?

    - cost :開銷

    表示的是去往根交換機的距離

      距離的大小與端口帶寬有關係。

   帶寬    cost(默認的對應關係)

   10M  -- 100

100M -- 19

1G   -- 4

  3、確定端口狀態

           down/disable:表示端口是關閉的,掛掉的;

listening:表示的是偵聽狀態,該狀態是不能收發用戶數據的

learning :表示的是學習狀態,該狀態是不能收發用戶數據的

forwarding:表示的是轉發狀態,該狀態可以正常收發(最終狀態)

blocking:表示的是阻塞狀態,該狀態不能收發使用戶數據(最終狀態)


驗證命令:

    show spanning-tree  // 查看交換機上的 STP 信息。 

  

--------------------------------------------------------------


BPDU報文結構:

    Root-ID   //表示的是根交換機的 ID (優先級+base-MAC)

Cost      //表示的是發送這個BPDU的交換機到根交換機的距離;

BID       //表示的是發送這個BPDU的交換機的名字;

Port-ID   //表示的是發送這個BPDU的交換機的出端口

hello-time  //表示的是發送BPDU的週期,默認是2s;

forward-delay //表示的是轉發延遲,默認是15s;

max-age       //表示的是最大存活時間,默認是20s;


注意:

   STP在工作過程中,選擇交換機角色、端口角色時,是通過比較BPDU的

以上的前面的4個字段來進行確定的。

   如果 root-id相同,則比較下一個,

   cost值越小越好,如果相同,則比較一下個

   BID越小越好,如果相同,則比較下一個

   Port-id越小越好,不可能相同。

    -port-id的組成:

    port-優先級   +  port-號

  默認是128       


STP收斂時間

    -收斂

  所謂的收斂,指的是當網絡出現故障時,到再次恢復聯通所需要的時間。

-時間

  30s---50s     


隨着網絡的發展,基礎網絡對網絡收斂時間的要求越來越高,

故30-50的時間太長了,所以我們開發了新的公有標準協議 - RSTP , 

快速生成樹。

  

----------------------------------------------------------------

STP的類型:


公有標準                              私有協議(cisco)

IEEE 802.1d(STP)   -生成樹                 PVST

IEEE 802.1w(RSTP)  -快速生成樹             PV-RSTP

IEEE 802.1s(MSTP)  -多生成樹               MIST


RSTP的工作過程與傳統的 STP 相似,


但是能夠提高收斂速度的原因,包含以下幾個方面:



1、發現問題的效率提高了:

   在傳統的STP中,一個交換機如果發現一個鏈路出現故障,則會產生

   一個 TCN BPDU ,爲的是告訴根交換機,然後根交換機,重新產生

   一個新的 配置BPDU,然後下發給其他的所有的非根交換機。

   

   在 RSTP 中,一個交換機如果發現一個鏈路出現故障的話,則會產生

   一個新的 TCN BPDU ,直接發送給與其相連的所有的交換機



2、 解決問題的效率提高了

        細化端口角色:

           根端口

      指定端口 

      替代端口 - 是根端口的替代者;

      備份端口 - 是指定端口的備份者;

        精簡端口狀態:

            learning   -> 學習(該狀態學習的MAC地址表)

       forwarding -> 轉發

       discarding -> 丟棄

              (相當於STP中的 down / listening / blocking)



----------------------------------------------------------   

#交換機默認情況下開啓了 STP 功能,是可以關閉的;

#交換機默認情況下運行的 STP 模式,是 RSTP(不同產品,模式不同)

#STP 模式查看:

    SW1#show spanning-tree summary

#STP 模式轉變:

    SW1(config)# spanning-tree mode ? ->就可以看到該設備支持的STP其他模式         


注意:

   在企業項目中,對 STP 最多的操作,也就是僅僅配置一個主根交換機

   和輔根交換機的身份。

   一般將其配置到具備高性能轉發的交換機上面。

   

   SW1:VLAN10 的主根,VLAN 20 的輔根;

       spanning-tree vlan 10 priority 0 

  spanning-tree vlan 20 priority 4096

   SW2:VLAN20 的主根,VLAN 10 的輔根;

       spanning-tree vlan 20 priority 0 

  spanning-tree vlan 10 priority 4096 


我們在配置交換機的 STP 優先級的時候,所配置的數值必須是

  4096的倍數。因爲在 BID 的2個字節的優先級中,其實表示

  優先級本身的,僅僅是4個bit,後面的12bit,表示的sys-id-ext

  ,即擴展系統ID,其實數值本身爲 VLAN號。主要的目的,就是爲了

  引入以VLAN爲基礎而運行的 STP ,比如 PVST。

  

基於VLAN 設計 STP(PVST) ,可以讓我們在多個交換機之間,以 VLAN 爲基礎

進行流量的負載均衡,從而可以提高設備的利用率。   

--------------------------------------------------------------

STP特性

    快速收斂

 portfast

    -該特性可以將端口的狀態,直接從 down 跳轉到 forwarding,

 從而略過 listening 和 learning 狀態,節省了 30s ; 

-一般該特性都是配置在連接終端的 access 鏈路上。

-配置命令:

      access鏈路: 

      interface fas0/1

     spanning-tree portfast 

  trunk 鏈路: 

       interface fas0/23 

  spanning-tree portfast trunk 

     [一般不建議在交換機之間的trunk鏈路上使用 port-fast]

 [因爲會導致一個臨時的環路,最終還是會阻止環路的]

 [但是在單臂的 trunk 鏈路上,強烈建議使用該特性]

 

    -驗證命令: 

     show spanning-tree interface fas0/2 portfast 

-------------------------------------------------------------  

 uplink-fast(由原來的50s,降低到 30s,節省了20s)

       默認情況下,當交換機收到一個次級BPDU的時候,會默默的

承受20s,該計時器過了以後,交換機就會將自己本地保存的

根交換機的 BPDU 發送給對方是設備,對方收到真正的根的

BPDU以後,就會進行交換機角色的確定,成爲非根交換機,

隨後會進行端口角色的轉變,由之前的盲目自信狀態下確定的

指定端口,變成根端口,然後再進行端口狀態的轉變,經歷

偵聽、學習狀態,到達轉發,又經過了30s。所以,默認情況下

總共需要花費50s的時間。

但是,

 

如果我們使用了 uplink-fast 特性,那麼交換機在收到次級BPDU

的時候,該交換機爲了確保安全,會主動的發送一個 BPDU報文給

根交換機,問一下根交換機是否還活着,如果能得到根交換機的

回覆,則說明根交換機是沒問題的。此時,該交換機會立刻將真實

根交換機的信息,發送給對方。那麼虛擬的根交換機,就會立刻進行

交換機角色的轉變,變成非根交換機,然後進行端口角色的轉變,

最後進行端口狀態的轉變,經歷了2個15s,  共30s . 

所以,使用了 uplink-fast ,可以保證在交換機的上行鏈路出現

故障的時候,將鏈路的切換時間,由原來的50,,減少到 30s .

即加速了20s 。 

 

安全特性

  bpduguard

       -bpdu保護

  啓用該功能的端口,不能接收BPDU,如果收到,

  則會將端口直接轉換爲 err-disable 狀態, 

  該狀態的端口相當於 shutdown;

-在什麼端口應用?

   在access端口上使用。

因爲該端口連接的是終端設備,而默認情況下,終端設備

是不支持發送BPDU,所以正常情況,Acess端口是不會收到

BPDU。如果收到了,只能說明存在“惡意***”,所以纔會

啓動該功能,讓收到BPDU的端口,進入到err-disable狀態

       -配置命令: 

   interface fas0/1  --> 連接終端設備的 Access 

  spanning-tree bpduguard enable 

-恢復 err-disable 端口: 

  #手動恢復

interface fas0/1 

  shutdown 

  no shutdown 

  #自動恢復

     SW1(config)#err-disable recovery cause bpduguard  

                  //指定 錯誤自動恢復的原因是 BPDU 防護;

 SW1(config)#err-disable recovery interval 60(單位是s)

                  //指定 錯誤自動恢復的時間間隔是 60s,默認是 300s ; 

 SW1(config)#err-disable detected cause bpduguard   

  

  bpdufilter

         - BPDU過濾

   表示啓用該功能的端口,不能收,也不能發;

如果真的收到了,就直接丟棄;

     -應用端口: 

    連接重要設備的 access ,比如連接網絡設備的端口

或者是連接服務器的端口,或者是連接老闆的端口。

 -配置命令:

     SW1(config)#interface fas0/1 

 SW1(config-if)#spanning-tree bpdufilter enable 

  root-guard

        -根交換機保護功能

 表示啓用該功能的端口,永遠是指定端口。

 那麼如果在該端口,收到一個比自己本身保存的BPDU

 還牛的BPDU,則將該端口轉換到 “端口非一致” 狀態,

 相當於 disable 狀態。


              如果對方設備更改了自己本身的 STP 配置,BPDU趕不上

              該端口保存的好了,那麼端口會自動恢復到 forwarding 

            -配置端口: 

               該功能,不一定非得配置在“根交換機”上。

               一般將該特性配置在交換機的“邊緣”端口上,從而可以防止

               外部接入的交換機,對原有交換網絡的根的身份造影響。

               該端口可以是 access端口,也可以是 trunk 端口。   

            -配置命令:

                interface fas0/1 

                   spanning-tree guard root 

            -驗證命令:

 show spanning-tree inconsistenports // 查看設備上的非一致的端口。

---------------------------------------------------------------


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章