生成樹協議(STP)基本知識及實驗(使用eNSP)


1、基本知識--摘至《網絡之路--交換專題》

(1)生成樹的作用:在鏈路層消除環路上可能出現的廣播風暴。

(2)生成樹的工作由三部分組成:選舉過程、拓撲計算、端口行為確定。

選舉過程:在二層網絡中選舉一個網橋作為根橋,用於指揮整網設備協同工作。根橋只是負責統一計算的規則。

根橋統一網絡中所有網橋的行為准則的原理:通過在某個恰當位置阻塞端口來阻止環路的發生。從一台網橋的角度來說,它通過這樣的法則進行判斷,如果到達網絡中的某一網橋只有一條路徑,那么必定不存在環路;如果到達某一網橋的路徑有兩條或者多條,那么這兩台網橋之間存在環路,只能保持一條通路。

(3)根橋的選舉方式

根橋是通過網絡中所有網橋間相互比較產生的。根橋只能由網絡中橋ID最小者擔當。一開始時把自己當作根橋,根橋ID就是自己的橋ID,然后通過BPDU和自己的鄰居交換拓撲信息,如果鄰居的根橋ID小於自己的橋ID,則把鄰居當作自己的根橋,然后向其他鄰居通告這個新的根橋信息,直到網絡中所有網橋的根橋ID都一樣時,根橋就被選舉了出來。

橋ID有8個字節,由兩部分組成,分別是2字節的橋優先級字段和6字節的橋MAC字段。橋優先級字段可手工設置,默認為0x8000;橋MAC即網橋的物理MAC。

(4)使網絡中的網橋和根橋保持統一的方式

通過一個獨特的消息機制實現,當根橋被選舉出來后,根橋會周期性的向所有鄰居發送BPDU報文,這個周期被稱為Hello Time,默認設置為2s。鄰居收到根橋發送來的BPDU時,會更新自己的狀態和定時器,然后轉發出去。在生成樹協議中(STP)只有根橋有主動發送BPDU的權力。快速生成樹協議(RSTP)中所有網橋都會按照Hello Time的時間間隔主動從指定端口發送BPDU。

生成樹協議中的BPDU報文有兩種,一個被稱為配置BPDU(Configuration BPDU),一種被稱為拓撲變化通知BPDU(Topology Change Notification BPDU 或叫 TCN BPDU)

配置BPDU報文格式如下:

 

端口ID占2個字節,和橋ID類似分為兩個部分,前8bits為優先級,默認值為0x80,可手工修改,后8bits為端口號,由設備指定,保證每個端口都不一樣。

TCN BPDU報文只有前三個字段,其中前兩個字段和配置BPDU一樣,BPDU Type字段的值為0x80。

Root Path Cost(根橋路徑開銷)代表了這個網橋到根橋的距離,對根橋而言,這個值被設置為0。當網橋收到一個BPDU,其中的根橋ID比自己當前的根橋ID小時,這個網橋會將BPDU中的Root Paath Cost加上接收到這個BPDU的端口的Cost值作為自己的Root Path Cost。

Message Age是用來衡量當前網橋所收到的BPDU在網絡內傳播時間的一個參數,根橋在構造發送BPDU的時候,會將這個字段設置為0,但下游網橋在傳遞從根橋發來的BPDU時,會在BPDU報文的Message Age字段中把這一跳轉發過程中可能引入的時延上限加到里面。

Max Age是一個預先設定的值,這個值可以看作是一個門限,用來配合Message Age定時器。

Message Age和Max Age是生成樹協議用於判斷拓撲是否變化的重要指標。網橋在根端口上設置了一個定時器,如果通往根橋的路徑完好,根端口會定時收到BPDU,並更新這個定時器。如果一直不能收到BPDU,每過1s定時器就自動加1,但這個定時器超過某一門限(Max Age)之后,網橋會認為原根端口通往根橋的路徑已經出現了故障,拓撲發生了變化。

(5)連接到一個LAN的端口的優先級比較

每個網橋都各自存儲着一套信息,包括當前的根橋ID、Root Path Cost和自己的橋ID,每個端口還存儲着自己的端口ID。

當端口收到BPDU后,先判斷根橋ID,如果相同繼續比較根橋路徑開銷,再相同則比較橋ID,如果再相同,則比較端口ID。比較之后,比較失敗的端口停止向LAN中轉發BPDU。這樣比較之后,最終獲勝的端口成為這個LAN的指定端口。

在同一台網橋中,網橋會從在優先級比較中失敗的端口中選擇一個開銷最小的端口作為自己的根端口,作為網橋通往根橋的唯一出口,其他端口成為Alternate端口進入Blocking狀態,既不接收或轉發數據報文,也不轉發BPDU。根端口的選擇方式是依次比較Root Path Cost(要先加上端口自身的cost)、橋ID和端口ID、本身的端口ID。

(6)生成樹協議中端口的五種狀態

分別為:Disable、Blocking、Listening、Learning、Forwarding。當端口沒有連接上或被shutdown時,處於Disable狀態,一旦up起來后就進入Blocking狀態,如果沒有收到優先級更高的BPDU或本身被網橋選舉為根端口,會進入Listening狀態,然后等待一個Forward Delay的時間,進入Learning狀態,再等待一個Forward Delay的時間,如果端口沒有因為新的選擇過程而成為Alternate的話,進入Forwarding狀態。

Blocking狀態下的端口不會轉發任何報文,或者學習MAC地址;端口在Listening狀態時即不轉發數據報文,也不會根據監聽到的數據報文學習MAC地址; 在Learning狀態時不轉發數據報文,但會學習MAC地址;在Forwarding狀態時即學習MAC,也轉發數據報文。

端口狀態 目的 說明
Forwarding   端口既轉發用戶流量也處理BPDU報文 只有根端口或指定端口才能進入Forwarding狀態
Learning  設備會根據收到的用戶流量構建MAC地址表,但不轉發用戶流量   過渡狀態
Listening  確認端口角色,將選舉根橋、根端口和指定端口 指定端口
Blocking  端口僅僅接收並處理BPDU,不轉發用戶流量 阻塞端口的最終狀態

2、實驗

參考鏈接:https://blog.csdn.net/flyfish5/article/details/50224537

實驗拓撲結構如下:

下面進行簡單的配置說明:

1.將LSW1、LSW2、LSW3、LSW4都設置為stp模式(默認為MSTP)

[Huawei]stp mode stp 

 2.使用display stp brief 命令查看每個網橋的端口模式

LSW1:

LSW2:

LSW3:

LSW4:

 

對以上幾種接口角色進行一下簡單的說明:有4種接口角色:

  • Root Port(ROOT):根端口,就是去往根橋路徑開銷最小的端口,該端口可以正常轉發流量。

  • Designated Port(DESI):指定端口,就是負責轉發BPDU報文的端口,根橋上的端口都是指定端口,該端口可以正常轉發流量。

  • Alternate Port(ALTE):阻塞端口,就是禁止轉發流量的端口。

  • Backup Port:暫時不清楚。

可以看出上面的拓撲中把LSW3當作了根橋。LWS1的根端口為Eth 0/0/3、LSW2的根端口為Eth 0/0/2、LSW4的根端口為Eth 0/0/2。

在LSW3的Eth 0/0/3端口抓取STP報文的格式如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM