生成樹簡介及STP原理詳解

 

爲何要使用生成樹協議數據庫

   生成樹協議是二層鏈路上的協議。網絡

如上圖所示,在二層網絡中,交換機起到了很重要的做用,若是有一臺交換機出現故障會影響網絡的使用,爲了不存在單點故障,在實際的二層鏈路中會採用鏈路冗餘,也就是採用交換設備之間多條聯絡鏈接,即多臺交換機之間都有鏈接,這樣即便一臺交換機故障了,也可使用其餘交換機。這就是鏈路冗餘ide

這種作法雖然很好,可是會產生一個致命的問題各個交換機設備之間都有鏈路鏈接,數據報到達目的主機的路線會增多,從而使數據報在交換機之間不斷的被轉發,造成一個環路。性能

多鏈路造成環路的致命問題學習

1. 造成廣播風暴:  數據報在環路在不斷的被廣播轉發造成廣播風暴。spa

2. 多重複幀複製: 交換機在接受到不肯定單播幀時,將執行泛洪操做,這意味着,在環路中一個單播幀在傳輸中被複製爲多個複本。3d

3. MAC地址表不穩定: 若是交換機在不一樣的端口收到同一個幀,它的MAC數據庫將會變得不穩定。blog

   以上三種狀況不管是哪種,都將會使二層網絡鏈路發生崩潰。ci

解決問題分析 get

   咱們知道之全部發生這種狀況的緣由是二層鏈路造成了環路,爲何造成環路呢?是由於數據幀爲到達目的主機會在各個相連的交換機之間互相複製轉發和傳輸造成環路。

   若是咱們能給各個數據幀指定一條到達目的主機的最短路徑,那麼就不會造成環路了,由於數據幀是沿着咱們給定的路線傳輸。這樣就解決了因數據幀胡亂傳輸而造成的環路問題,進而解決了以上的種種問題,並且還能是實現鏈路冗餘的目的。那麼這條指定的最短路徑要怎麼指定呢?能夠在鏈路中加上一個協議,這個協議就是生成樹協議 



生成樹協議有哪些



   IEEE協會經過了IEEE802.1d協議,即開天闢地的第一代生成樹協議STP,這個協議和其餘協議同樣,都是隨着網絡的不斷髮展而不斷更新換代的。到如今爲止,該協議一共有三代;

 

 


     第一代 STP/RSTP 

     第二代PVST/PVST+(思科特有)

     第三代 MTSTP/MSTP

咱們只對STPRSTPMSTP進行講解

救世主STP802.1d)又叫 生成樹協議

在這種環路肆虐的時候,如同救世主般的STP來到了咱們身邊。呵呵     

  STP的主要功能是經過一系列的運算來解決因爲備份鏈接所產生的環路問題。

注意單純標準的802.1d STP協議並不能實現真正的冗餘和負載分擔。

STP運行原理簡介:

   經過阻斷冗餘鏈路將一個有環路的橋接網絡修剪成一個無環路的樹形拓撲結構,即:可以確保數據幀在某一時刻從一個源出發,到達網絡中任何一個目標的路徑只有一條,而其餘的路徑都處於非激活狀態(不能進行轉發),若是在網絡中發現某條正在使用的鏈路出現故障時,網絡中開啓了STP技術的交換機會將非激活狀態的阻塞端口打開,恢復曾經斷開的鏈路,確保網絡的連通性。

 如上圖所示:從PC0到達PC1的數據幀會通過中間由三臺交換機組成的環路,STP協議會選擇一條最短的路徑讓數據幀從PC0到達PC1。假如,STP協議經過計算,認爲走2路——3路到達PC1是最短路徑,那麼1路就會處於非激活狀態,即1路上有關的端口會處於堵塞狀態。若是交換機S1出現了故障致使2路和3路不能走了,那麼STP就會激活1路,確保數據幀可以到達PC1.

STP原理----順序四步走:

  1.選擇根橋(根交換機)RB

       在網路中須要選擇一臺根交換機RB,選擇RB就須要交換機們本身選擇,須要交換機們通訊,這些信息被稱爲BPDU(橋協議數據單元),每2秒發送一次,BPDU中包含的信息較多,可是RB的選擇只比較BID(橋ID),BID最小的就是根交換機

      BID=橋優先級+MAC地址。先比較橋優先級,而後再比較橋MAC地址的優先級,通常來講,橋優先級都是同樣的,都是32768,因此通常只比較橋MAC地址,MAC地址最小(也就是BID最小)的做爲RB

      例如SW1Default優先級 32768   MAC 0c0011111111      

            SW2Default優先級 32768   MAC 0c0022222222

  很明顯,在優先級相等的狀況下,MAC地址SW2的小,因此SW2爲根交換機。

2.選擇根端口RP(要從離根橋最近的端口選)

     對於每臺非根橋,要選擇一個端口用來鏈接到根橋,這就是根端口

      注意:根端口只能在非根交換機上選取的。

      當非根橋有多個端口能夠鏈接到根橋時,應該選擇性能比較好的端口做爲根端口,選擇的依據是: 首先比較開銷Q,其次比較PID(端口ID

   好比:以下圖所示;                                             

 

根據根橋的選取,能夠判斷SwitchZ爲根橋,也就是根交換機。那麼SwitchXSwitchY爲非根橋,非根橋SwitchX須要選擇一個端口(只能選擇一個端口)用來鏈接SwitchZ(根橋),首先比較的是開銷Q


帶寬 

IEEE802.1d(STP)

IEEE802.1w(RSTP)

10Mb/s

100

2000000

100Mb/s

19 200000

1000Mb/s

4 20000

 經過Port0鏈接到根橋,Q=19. 

  經過Port1鏈接到根橋,Q=100+19=119.

 很明顯經過Port0鏈接到根橋的開銷Q小,因此選擇SwitchXSwitchYPort0爲根端口。

    可是假設Q相同的話,就須要比較PID了,PID=端口優先級+端口號,通常來講端口優先級是默認的,因此,端口號越小的端口,將成爲根端口。

 注意: 先比較開銷,再比較PID

3.選擇指定端口DP

在每個交換機之間的鏈路上選擇一個端口,做爲指定端口。

   例如:以下圖所示:

 

上圖中共有3個網段,X-YY-ZX-Y,其中前兩個網段的指定端口都是SwitchZ(根橋)上的端口,由於根橋沒有根端口,有的只是指定端口,而X-Y(紅線網段)的指定端口須要選擇,依據以下:

X到達根橋的開銷Q=19

Y到達根橋的開銷Q=19

因爲Q相同,須要比較BID(指定端口ID),SwitchXBID小,因此位於SwitchX上的port1將成爲該網段的指定端口。

 4.RP、DP設置轉發狀態,其餘端口設爲阻塞狀態

      選出來的RPDP將設爲轉發狀態,既不是根端口也不是指定端口的其餘端口將被Block

 經過上述四部走,就能夠造成無環路的網絡。

STP計時器

  一共有3個:

   1. Hello Time:  根橋發送BPDU之間的時間間隔,也是網絡初始化的時候,每一個網橋發送各自的BPDU的時間間隔。

  2.Forwarding Time : 指一個端口ListeningLearning的各自時間,默認爲15s,爲了保證BPDU在全網中的轉發,因此作如此設定,這個值是能夠配置的,因爲Forwarding Time 的限制,通常建議網絡的直徑應小於7

3. Max Age : 存儲BPDU最長的時間,超過這個時間端口接受不到BPDU,就會採起相應的措施。這個時間默認爲20s.

注意: 這三個時間在拓撲穩定後都是由根橋發出的,由根橋在全網統一計時器,在根橋修改纔有效。

STP端口狀態概述

  當協議信息BPDU經過一個交換網絡時。可能發生傳播延時,那麼交換網絡的拓撲結構就可能會發生改變。

   每個使用STP的二層LAN端口存在如下5種狀態:

  1.  阻塞(Blocking10s 端口不能參與幀的轉發發

  2.  偵聽(Listening15s 這是端口自阻塞狀態後的第一個過渡狀態。STP認爲這種狀態的二層LAN端口應當參與幀的轉發

  3. 學習(Learning15s 處於準備參與幀轉發狀態

  4.轉發(Forwarding:端口能夠正式轉發幀了

  5. 禁止(Disabled):端口不參與STP,不轉發幀。

STP端口拓撲變化:

 當啓用STP後,設備開啓電源後,每一個端口和網絡都要經歷阻塞、偵聽、學習這類的過渡狀態。如上圖所示。

   1.阻塞狀態端口變化: 網絡設備在交換BPDU以前,都是假設本身爲根的,而且端口在初始化時,老是先置於阻塞狀態。交換BPDU後就能夠肯定哪一個設備做爲根橋。

處於阻塞狀態的端口執行如下任務:

     丟棄從所在網段中接收的幀; 

     丟棄與其餘轉發端×××換的幀

     不把終點位置添加到地址數據庫中。

     接收BPDU,而且把它們直接傳到系統模塊中。

     不傳輸從系統模塊中接收到的BPDU

   2. 偵聽狀態端口變化: STP肯定這個二層LAN端口應當參與幀轉發時,進就進入到了偵聽狀態

處於偵聽狀態的端口執行如下任務:

      丟棄從所在網段中接收的幀; 

     丟棄與其餘轉發端×××換的幀

     不把終點位置添加到地址數據庫中。

     接收BPDU,而且把它們直接傳到系統模塊中。

         接收、處理和傳輸從系統模塊中接收到的BPDU

3.學習狀態:從偵聽狀態進入到學習狀態:

 處於學習狀態將執行如下任務:

     丟棄從所在網段中接收的幀; 

     丟棄與其餘轉發端×××換的幀

     把終點位置添加到地址數據庫中。

     接收BPDU,而且把它們直接傳到系統模塊中。

         接收、處理和傳輸從系統模塊中接收到的BPDU

4.轉發狀態端口變化 處於轉發狀態的端口能夠正式轉發幀了。


處於偵聽狀態的端口執行如下任務:

     轉發從所在網段中接收的幀; 

     轉發與其餘轉發端×××換的幀

     把終點位置添加到地址數據庫中。

     接收BPDU,而且把它們直接傳到系統模塊中。

         處理和傳輸從系統模塊中接收到的BPDU

5.禁用狀態的端口變化處於禁用狀態的端口不參與幀轉發或者STP

         注意: 這種把二層端口置於禁用狀態的行爲是不建議的,由於這至關於一宗浪費

 

處於偵聽狀態的端口執行如下任務:

     丟棄從所在網段中接收的幀; 

     丟棄與其餘轉發端×××換的幀

     不把終點位置添加到地址數據庫中。

     不接收BPDU,而且把它們直接傳到系統模塊中。

這就是整個網絡中交換機拓撲端口的變化,直到最後網絡穩定。


 


總結---STP運行過程梳理


假設S1爲根交換機

   當網絡穩定後,這種穩定狀態下,根交換機S1 向網絡中以2s一次的頻率發送BPDU報文,非根交換機S2經過根端口接受BPDU,而後經過指定端口向S3發送BPDU報文。經過這種方式,BPDU報文能夠順利的擴散到網絡的每臺交換機。 

可是當網絡拓撲發生變化時,交換機會向根交換機方向發送TCN BPDU報文,這兒的變化有如下幾種狀況:(當出現如下幾種狀況後,當事交換機就會發送TCN BPDU

     1. 處於轉發狀態或者監聽狀態的端口過渡到阻塞狀態,這個狀態一般是鏈路故障

      2. 處於未啓用狀態的端口進入轉發狀態,這個狀態一般是增長了新的鏈路

     3. 交換機從指定端口收到TCNBPDU報文。

假設S3出現了以上狀況中的一種,那麼交換機就認爲網絡拓撲發生了變化,將執行步驟1S3從根端口向根交換機的方向發送TCN BPDU報文(這兒的方向是向S2),S2經過指定端口接受TCN BPDU ,執行步驟2,而後發送給S3 一個TCA,同時執行步驟3,向根交換機的方向發送TCN BPDU報文,S1(根交換機)收到TCN BPDU報文後執行步驟4,向S2發送TC BPDUS2接受到TC BPDU後再轉發給S3。接受到TC BPDU報文後的交換機S2S3將本身的MAC地址表老化時間(生存時間)設置爲15s,開始學習新的轉發路徑,達到網絡的穩定。


   在端口的變化中,從阻塞到偵聽狀態,須要10s的時間,從偵聽到學習須要15s,從學習到轉發須要15s

    這個時間在如今高速發展的網絡中是不能接受,由於太慢了,有沒有一種能夠收斂這些時間的生成樹協議呢?

    答案是有的,那就是RSTP---快速生成樹協議。咱們的下一篇文章再來探討,看看RSTP到底快在什麼地方。

相關文章
相關標籤/搜索