學習日記Day19:STP(生成樹協議)

一、爲什麼要使用STP。

1、二層交換機網絡的冗餘性與環路。

                                在這裏插入圖片描述
        隨着局域網規模的不斷擴大,越來越多的交換機被用來實現主機之間的互連。如圖,接入層交換機單鏈路上聯,則存在單鏈路故障,也就是如果這根上聯鏈路發生故障,交換機下聯用戶就斷網了。另一個問題的單點故障,也就是交換機如果宕機,交換機下聯用戶也就斷網了。
                        在這裏插入圖片描述
        爲了解決此類問題,交換機在互連時一般都會使用冗餘鏈路來實現備份。冗餘鏈路雖然增強了網絡的可靠性,但是也會產生環路,而環路會帶來一系列的問題,繼而導致通信質量下降和通信業務中斷等問題。

2、人爲導致的環路。

                        在這裏插入圖片描述
       在現實中,一些二層環路可能是由於人爲的疏忽導致的,例如錯誤地連接設備之間的互聯線纜等。
                        在這裏插入圖片描述
       另一些二層環路可能是由於人爲的配置錯誤導致的,在本例中,網絡管理員未將SW1與SW2之間的鏈路綁定到一個邏輯鏈路(聚合鏈路)上,從而引入了二層環路。

3、二層環路帶來的問題。
3.1、廣播風暴。

               在這裏插入圖片描述        根據交換機的轉發原則,如果交換機從一個端口上接收到的是一個廣播幀,或者是一個目的MAC地址未知的單播幀,則會將這個幀向除源端口之外的所有其他端口轉發。如果交換網絡中有環路,則這個幀會被無限轉發,此時便會形成廣播風暴,網絡中也會充斥着重複的數據幀。
       本例中,SW3收到了一個廣播幀將其進行泛洪,SW1和SW2也會將此幀轉發到除了接收此幀的其他所有端口,結果此幀又會被再次轉發給SW3,這種循環會一直持續,於是便產生了廣播風暴。交換機性能會因此急速下降,並會導致業務中斷。下面是抓包圖:
在這裏插入圖片描述
       可以看到大量的廣播幀和未知單播幀在鏈路中泛洪,導致通信受阻。
在這裏插入圖片描述

3.2、MAC地址漂移。

               在這裏插入圖片描述
        交換機是根據所接收到的數據幀的源地址和接收端口生成MAC地址表項的。本例中,SW3收到一個廣播幀泛洪,SW1從GE0/0/3接口接收到廣播幀後學習且泛洪,形成MAC地址5489-98EE-788A與GE0/0/3的映射;SW2收到廣播幀後學習且泛洪,SW1再次從GE0/0/2收到源MAC地址爲5489-98EE-788A的廣播幀並進行學習,5489-98EE-788A會不斷地在GE0/0/1與GE0/0/2接口之間來回切換,這被稱爲MAC地址漂移現象。如下圖:
在這裏插入圖片描述

4、初識生成樹。

        在網絡中部署生成樹後,交換機之間會進行生成樹協議報文的交互並進行無環拓撲計算,最終將網絡中的某個(或某些)接口進行阻塞(Block),從而打破環路。
在這裏插入圖片描述
        STP通過構造一棵樹來消除交換網絡中的環路。運行STP算法,判斷網絡中存在環路的地方並阻斷冗餘鏈路,將環路網絡修剪成無環路的樹型網絡,從而避免了數據幀在環路網絡中的增生和無窮循環。
        生成樹還能夠動態響應網絡拓撲變化調整阻塞接口,交換機上運行的生成樹協議會持續監控網絡的拓撲結構,當網絡拓撲結構發生變化時,生成樹能感知到這些變化,並且自動做出調整。因此,生成樹既能解決二層環路問題,也能爲網絡的冗餘性提供一種方案。
在這裏插入圖片描述
        如上圖,交換機上運行STP協議,會通過報文監控網絡的拓撲結構,正常情況下是將SW3上的一個接口進行阻塞(Block),從而打破環路,當監控到SW1與SW3之間出現鏈路故障,則恢復阻塞端口進入轉發狀態。

二、STP的基本概念。

1、橋ID(BID)。

       在STP中,每一臺交換機都有一個標示符,叫做BID或者橋ID,IEEE 802.1D標準中規定BID由橋優先級(Bridge Priority)與橋MAC地址構成。每一臺運行STP的交換機都擁有一個唯一的BID。BID橋優先級佔據高16bit,其餘的低48bit是橋MAC地址。在STP網絡中,BID最小的設備會被選舉爲根橋。
              在這裏插入圖片描述
       華爲設備默認的橋優先級是32768,查看BID的方法如下圖:
在這裏插入圖片描述

2、根橋。

       STP的主要作用之一是在整個交換網絡中計算出一棵無環的“樹”(STP樹)。根橋是一個STP交換網絡中的“樹根”。STP開始工作後,會在交換網絡中選舉一個根橋,根橋是生成樹進行拓撲計算的重要“參考點”,是STP計算得出的無環拓撲的“樹根”。在STP網絡中,橋ID最小的設備會被選舉爲根橋。在BID的比較過程中,首先比較橋優先級,優先級的值越小,則越優先,擁有最小優先級值的交換機會成爲根橋;如果優先級相等,那麼再比較MAC地址,擁有最小MAC地址的交換機會成爲根橋。
              在這裏插入圖片描述
       對於一個STP網絡,根橋在全網中只有一個,它是整個網絡的邏輯中心,但不一定是物理中心。根橋會根據網絡拓撲的變化而動態變化,即根橋具備搶奪性。網絡收斂後,根橋會按照一定的時間間隔產生並向外發送配置BPDU,其他設備僅對該報文進行處理,傳達拓撲變化記錄,從而保證拓撲的穩定。

3、開銷(Cost)。

       每一個激活了STP的接口都維護着一個Cost值,接口的Cost主要用於計算根路徑開銷,也就是到達根的開銷。接口的缺省Cost除了與其速率、工作模式有關,還與交換機使用的STP Cost計算方法有關。接口帶寬越大,則Cost值越小。用戶也可以根據需要通過命令調整接口的Cost。
              在這裏插入圖片描述
       關於Cost的計算方法有三種標準:IEEE 802.1d-1998標準、IEEE 802.1t標準、華爲計算方法。華爲交換機支持多種STP的路徑開銷計算標準,提供多廠商場景下最大程度的兼容性。缺省情況下,華爲交換機使用IEEE 802.1t標準來計算路徑開銷。三種標準的詳細計算數據見下表:
在這裏插入圖片描述
        在一個STP網絡中所有的交換機的Cost計算標準應該保持一致。兩臺交換機的對端接口的Cost值建議保持一致。 下圖是在華爲交換機上查看接口開銷和計算標準:
在這裏插入圖片描述

4、根路徑開銷(RPC)。

       在STP的拓撲計算過程中,一個非常重要的環節就是“丈量”交換機某個接口到根橋的“成本”,也即RPC。一臺設備從某個接口到達根橋的RPC等於從根橋到該設備沿途所有入方向接口的Cost累加。在下例中,SW3從GE0/0/1接口到達根橋的RPC等於接口1的Cost加上接口2的Cost。
              在這裏插入圖片描述
下圖是在華爲交換機上查看設備RPC,可以看到此設備到根橋的RPC爲0,這表示自己就是根橋:
在這裏插入圖片描述

5、接口ID(PID)。

       運行STP的交換機使用接口ID來標識每個接口,接口ID主要用於在特定場景下選舉指定接口。接口ID由兩部分構成的,高4 bit是接口優先級,低12 bit是接口編號。激活STP的接口會維護一個缺省的接口優先級,在華爲交換機上,該值爲128。用戶可以根據實際需要,通過命令修改該優先級。端口優先級取值範圍是0到240,步長爲16,即取值必須爲16的整數倍。
              在這裏插入圖片描述
       下圖是在華爲交換機上查看設備PID,從上到下依次是接口編號和接口優先級:
在這裏插入圖片描述

6、橋接協議數據單元(BPDU)。

       BPDU是STP能夠正常工作的根本。BPDU是STP的協議報文。STP交換機之間會交互BPDU報文,這些BPDU報文攜帶着一些重要信息,正是基於這些信息,STP才能夠順利工作。BPDU分爲兩種類型:

  • 配置BPDU(Configuration BPDU)
  • TCN BPDU(Topology Change Notification BPDU)

       配置BPDU是STP進行拓撲計算的關鍵,在一個穩定的網絡中你只能抓到配置BPDU;TCN BPDU只在網絡拓撲發生變更時纔會被觸發,網絡拓撲發生改變時纔會抓到TCN BPDU。下表是配置BPDU的報文格式及其字段含義:

PID PVI BPDU Type Flags Root ID RPC Bridge ID Port ID Message Age Max Age Hello Time Forward Delay
子節 字段 描述
2 PID 協議ID ,對於STP而言,該字段的值總爲0
1 PVI 協議版本ID,對於STP而言,該字段的值總爲0
1 BPDU Type 指示本BPDU的類型,若值爲0x00,則表示本報文爲配置BPDU;若值爲0x80,則爲TCN BPDU
1 Flags 標誌,STP只使用了該字段的最高及最低兩個比特位,最低位是TC(Topology Change,拓撲變更)標誌,最高位是TCA(Topology Change Acknowledgment,拓撲變更確認)標誌
8 Root ID 根網橋的橋ID
4 RPC 根路徑開銷,到達根橋的STP Cost
8 Bridge ID BPDU發送橋的ID
2 Port ID BPDU發送網橋的接口ID(優先級+接口號)
2 Message Age 消息壽命,從根網橋發出BPDU之後的秒數,每經過一個網橋都加1,所以它本質上是到達根橋的跳數
2 Max Age 最大壽命,當一段時間未收到任何BPDU,生存期到達最大壽命時,網橋認爲該接口連接的鏈路發生故障。默認20s
2 Hello Time 根網橋連續發送的BPDU之間的時間間隔,默認2s
2 Forward Delay 轉發延遲,在偵聽和學習狀態所停留的時間間隔,默認15s

下面是對應的抓包圖:
在這裏插入圖片描述
       關於STP中Max Age的處理:當非根橋收到根橋的BPDU後,將BPDU中的Message Age+1後,如果等於Max Age直接忽略此BPDU,並且不會在轉發此BPDU,通過Max Age配置可以控制STP網絡的規模。

三、STP的工作原理。

1、端口角色。

       STP中定義了三種端口角色:

  • 指定端口(DP):負責在鏈路上轉發根橋的最好BPDU的端口,一般情況下根橋的所有端口都是DP。在每條鏈路(每個衝突域)上都會選舉一個DP。
  • 根端口(RP):接收來自根橋最優BPDU的端口,根橋,根橋上沒有根端口。在每個非根橋設備上都會選舉一個RP。
  • 預備/阻塞端口(AP):既不是非根橋的RP,也不是鏈路的DP,則該端口爲block port即阻塞端口。
2、最優的BPDU。

       對於STP而言,最重要的工作就是在交換網絡中計算出一個無環拓撲。在拓撲計算的過程中,一個非常重要的內容就是配置BPDU的比較。在配置BPDU中,有四個字段非常關鍵,它們是“根橋ID”、“根路徑開銷”、“網橋ID”以及“接口ID”,這四個字段便是交換機進行配置BPDU比較的關鍵內容。STP按照如下順序選擇最優的配置BPDU:

字段 比較規則
根橋ID 最小的根橋ID
根路徑開銷(RPC) 最小的RPC
網橋ID 最小的網橋ID
接口ID 最小的接口ID

       在這四條原則中(每條原則都對應配置BPDU中的相應字段),第一條原則主要用於在網絡中選舉根橋,後面的原則主要用於選舉根接口及指定接口。

3、STP的計算過程舉例。

       使用人的思維,快速確定去下面拓撲的端口角色。在開始分析之前先將S1、S2、S3、S4四臺交換機的橋優先級依次修改爲0、4096、8192、32768。
在這裏插入圖片描述

3.1、選舉根橋。

       交換機在剛啓動時都認爲自己是根橋,互相發送配置BPDU進行STP運算。最後發現橋優先級最的是S1所以S1成爲根橋。

3.2、選舉RP。

       以S2爲例,因爲RP是接收來自根橋最優BPDU的端口,所以首先列出S2兩個接口接收的BPDU的關鍵四字段的值。如下圖:
在這裏插入圖片描述
       S2的兩個接口接收的BPDU分別是S1和S4發送。因爲S2的G0/0/1接口接收的是根橋S1的G0/0/1接口直接發送給他的BPDU,所以RPC等於0,BID等於0,PID等於128.1。S2的G0/0/2接口接收的是,根橋S1的G0/0/2接口發送給S2又轉發給S4,S4的G0/0/24接口直接發送給它的BPDU,所以RPC需要做一個累加20000+20000=40000,BID等於S4的值爲32768,PID等於128.24。
       然後再根據上面的四個字段依次比較:RID相同都是0,RPC G0/0/1接口接收到的爲0,G0/0/2接口接收到的爲40000。G0/0/1 < G0/0/2,G0/0/1成爲RP。根據這個規則可以快速選舉去其餘非根橋交換機的RP。
在這裏插入圖片描述
       值得注意的S4在進行RP選舉的時候兩個接口上接收的BPDU的RPC都是20000,RPC相同接着比較BID。G0/0/24接口接收BPDU的BID是S2的4096,G0/0/22接口接收的BPDU的BID是S3的8192。所以G0/0/24的更小成爲RP。

3.3、選舉DP。

       以S1和S2這條鏈路爲例,因爲DP是負責在鏈路上轉發根橋的最好BPDU的端口。首先列出S1和S2這條鏈路上兩個接口發送的BPDU的關鍵四字段的值。
       在這裏插入圖片描述
       和選舉RP相同的道理,因爲S1是根橋所以它的G0/0/1接口直接發送BPDU,它的RPC等於0,BID等於0,PID等於128.1。S2的G0/0/1接口發送的的BPDU是,根橋S1的G0/0/2接口發送給S2又轉發給S4,S4發送給它,它再發送。所以RPC需要做一個累加20000+20000+20000=60000,BID等於自己的值爲4096,PID等於128.1。所以很容易比較出S1的G0/0/1接口是DP。根據這個規則可以快速選舉去其餘非根橋交換機的DP。
       在這裏插入圖片描述

3.4、選舉AP。

       S4的G0/0/22端口自動成爲AP。查看交換價端口角色,驗證推算。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
       推算正確,至此S3和S4之間的鏈路堵塞,環路被打破。

4、STP的接口狀態和狀態遷移。

       STP有五種接口狀態如下表:

狀態名稱 狀態描述
禁用(Disable) 該接口不能收發BPDU,也不能收發業務數據幀,例如接口爲down
阻塞(Blocking) 該接口被STP阻塞。處於阻塞狀態的接口不能發送BPDU,但是會持續偵聽BPDU,而且不能收發業務數據幀,也不會進行MAC地址學習
偵聽(Listening) 當接口處於該狀態時,表明STP初步認定該接口爲根接口或指定接口,但接口依然處於STP計算的過程中,此時接口可以收發BPDU,但是不能收發業務數據幀,也不會進行MAC地址學習
學習(Learning) 當接口處於該狀態時,會偵聽業務數據幀(但是不能轉發業務數據幀),並且在收到業務數據幀後進行MAC地址學習
轉發(Forwarding) 處於該狀態的接口可以正常地收發業務數據幀,也會進行BPDU處理。接口的角色需是根接口或指定接口才能進入轉發狀態

       關於接口狀態的遷移參考下圖:
在這裏插入圖片描述
       接口從阻塞狀態進入到偵聽狀態的時間可以忽略不記,從偵聽狀態進入到學習狀態需要15s,從學習狀態到轉發狀態需要15s,所以一個接口如果需要從阻塞狀態到轉發狀態需大概30s。從偵聽、學習、轉發狀態進入到阻塞狀態的時間也是忽略不計。

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