STP基本配置

簡介

STP(生成樹協議 SpanningTreepProtocol)能夠提供路徑冗餘,使用STP可以使兩個終端中只有一條有效路徑。在實際的網絡環境中,物理環路可以提高網絡的可靠性,當一條線路斷掉的時候,另一條鏈路仍然可以傳輸數據。但是,在交換網絡中,當交換機接收到一個未知目的地址的數據幀時,交換機的操作是將這個數據幀廣播出去,這樣,在存在物理的交換網絡中,就會產生一個雙向的廣播環,甚至產生廣播風暴,導致交換機死機。如何既有物理冗餘鏈路保證網絡的可靠性,又能避免冗餘環路所產生的廣播風暴呢?STP協議是在邏輯上斷開網絡的環路,防止廣播風暴的產生,而一旦正在用的線路出現故障,邏輯上被斷開的線路又被連通,繼續傳輸數據。

交換網絡環路

交換網絡環路會帶來3個問題:廣播風暴、同一幀的多個拷貝和交換機CAM表不穩定。

交換網絡環路的產生:

STP基本配置

PC1和PC2通過交換機相連。網絡初始狀態時,PC1與PC2通信過程如下:

1.在網絡通信最初,PC1的ARP條目中沒有PC2的MAC地址,PC1首先會向SW1發送一個ARP廣播請求PC2的MAC地址;2.當SW1收到ARP的廣播請求後,SW1會將廣播幀從除接收端口之外的所有端口轉發出去即會從F0/1和F0/2發出;3.SW2收到廣播後,會將廣播幀從F0/2和連接PC2的端口轉發,同樣SW3收到廣播後,將其從F0/2端口轉發;
4.SW2收到SW3的廣播後,將其從F0/1和連接PC2的端口轉發,SW3收到SW2的廣播後將其從F0/1端口轉發;
5.SW1分別從SW2、SW3收到廣播幀,然後將從SW2收到的廣播幀轉發給SW3,而將從SW3收到的廣播幀發給SW2。SW1、SW2和SW3會將廣播幀相互轉發。這時網絡就形成了一個環路,而交換機並不知道,這將導致廣播幀在這個環路中永遠循環下去。

 

STP工作原理

STP運行STA(生成樹算法 Spanning Tree Algorithm)。STA算法很複雜,但是其過程可以歸納爲以下三個步驟:
1.選擇根網橋(Root Bridge);

  1>網橋ID最小。

2.選擇根端口(Root Ports);

  1>到根路徑成本最低;

  2>最小的直連發送方網橋ID;

  3>最小的發送方端口ID。

3.選擇指定端口(Designated Ports)。

  1>根路徑成本最低;

  2>所在交換機的網橋ID最小;

  3>所在交換機的端口ID最小。

特別注意:選擇根端口:比較接收的BPDU!!!;選擇指定端口:比較發送的BPDU!!!。

選擇根網橋

網橋ID最小:選擇根網橋的依據是網橋ID的大小。在選擇根網橋的時候,比較的方法是看哪臺交換機的網橋ID的值最小,優先級小的被選擇爲根網橋;在優先級相同的情況下,MAC地址小的爲根網橋。
網橋ID:是一個8Byte的字段,前面2Byte的十進制數稱爲網橋優先級,後6Byte是網橋的MAC地址。

STP基本配置

網橋優先級:用於衡量網橋在生成樹算法中優先級的十進制數,取值範圍爲0-65535,默認值是32768。

網橋的MAC地址:交換機自身的MAC地址,可以使用命令show version查看。

示例:

STP基本配置


選擇根端口

選出了根網橋之後,網絡中的每臺交換機必須和根網橋建立關聯,因此STP將開始選擇根端口。每個非根網橋上存在一個根端口,因此需要在每個非根網橋上選擇一個根端口。選擇根端口的依據有三個:
到根路徑成本最低的端口:路徑成本是兩個網橋間的路徑上所有鏈路的成本之和,根路徑成本也就是一個網橋到達根網橋的中間所有鏈路的路徑成本之和,路徑成本用來代表一條鏈路帶寬的大小,一條鏈路的帶寬越大,它的傳輸數據的成本也就越低。

STP基本配置

最小的直連發送方網橋ID:BPDU幀是從根網橋發向根端口的,則當端口的根路徑成本相同時,以收到發來BPDU直連的網橋ID最小(端口的對端端口,即本地端口)爲根端口。
最小的發送方端口ID:當直連發送方網橋ID大小相同時,也就是說有幾個位於同一交換機上的端口時,比較最小的發送方端口ID。端口ID是一個二字節的STP參數,由一個字節的端口優先級和一個字節的端口編號組成。端口優先級是一個可配置的STP參數,在基於IOS的交換機上,端口優先級的十進制取值範圍是0-255,默認值是128。端口編號是catalyst用於列舉各個端口的數字標識符,在基於IOS的交換機上,可以支256個端口。

說明:端口編號不是端口號,但是端口號低的端口,端口編號值(端口 ID)也較小。

端口ID:

STP基本配置

示例:

STP基本配置

選擇指定端口

選擇完根網橋和每臺交換機的根端口後, 一個樹形結構已初步形成,但是,所有鏈路仍連接在一起,並可以都處於活動狀態,最後導致形成環路。爲了消除環路形成的可能,STP進行最後的計算,在每一個網段上選擇一個指定端口。選擇指定端口的依據有三個:

根路徑成本最低;

所在交換機的網橋ID最小;

所在交換機的端口ID最小。

注意:根網橋上的接口都是指定端口,因爲根網橋上端口的根路徑成本爲0。

示例:

STP基本配置

說明:如果端口既不是根端口,也不是指定端口,那麼這個端口被阻塞(BLOCK)稱爲阻塞端口。被阻塞的端口不能傳輸數據,即該鏈路成爲備份鏈路。

 

BPDU(Bridge Protocol Data Unit 橋協議數據單元)

STP在交換機互相通信時進行操作,數據報文以橋協議數據單元(BPDU)的形式進行交換。每隔2秒,BPDU報文便向所有的交換機端口發送一次,以便交換機(或網橋)能交換當前最新的拓撲信息,並迅速識別和檢測其中的環路。
BPDU的兩種類型

正常情況下,交換機只會從它的Root Port上接收configuration BPDU包,但不會主動發送configuration BPDU包給Root Bridge。第二種類型的BPDU包是Topology Change Notification(TCN) BPDU,當一臺交換機檢測到拓撲變化後,它就可以發送TCN給Root Bridge,注意TCN是通過Root Port向Root Bridge方向發出的。當交換機從它的designate port接收到TCN類BPDU時,它必須爲其做轉發,從它自已的root port上發送出去TCN類型的BPDU包,這樣一級一級地傳到root bridge後,TCN的任務纔算完成。

BPDU報文主要字段

STP基本配置

協議ID:該值總爲0。

版本號:STP的版本(爲IEEE 802.1d時值爲0)。

報文類型:BPDU類型(配置BPDU=0,TCN BPDU=80)。

標記域:LSB(最低有效位)=TCN標誌;MSB(最高有效位)=TCA標誌。

根網橋ID:根信息由2字節優先級和6字節ID組成。這個信息組合標明已經被選定爲根網橋的設備標識。
根路徑成本:路徑成本爲到達根網橋交換機的STP開銷。表明這個BPDU從根網橋傳輸了多遠,成本是多少。這個

     字段的值用來決定哪些端口將進行轉發,哪些端口將被阻斷。
發送網絡橋ID:發送該BPDU的網橋信息。由網橋的優先級和網橋ID組成。

端口ID:發送該BPDU的網橋端口ID。
計時器:計時器用於說明生成樹用多長時間完成它的每項功能。這些功能包括報文老化時間、最大老化時間、

        訪問時間和轉發延遲。

最大老化時間:根網橋發送BPDU後的秒數,每經過一個網橋都會遞減1,所以它的本質是到達根網橋的跳計數。

訪問時間:根網橋連續發送BPDU的時間間隔。

轉發延遲:網橋在監聽學習狀態所停留的時間。

STP利用BPDU選擇根網橋的過程

1.當一臺交換機第一次啓動時,假定自己是根網橋在BPDU報文中的根網橋字段填入自己的網橋ID,向外發送。

2.交換機比較接收到的BPDU報文中根網橋ID與自己的網橋ID的值哪個更小,如果接收到的BPDU中的根網橋ID值小

  於自己的網橋ID,則用接收到的根網橋ID替換現有的根網橋ID,並向外轉發。如此不斷反覆,最終能夠選擇出

  全網公認的唯一一個根網橋。

3.收斂以後,如果又一臺新的交換機加入進來,則繼續比較更網橋ID,選出新的根網橋。

STP利用BPDU確定端口的跟路徑成本
1.根網橋發送一個根路徑成本爲0的BPDU報文。

2.當離根網橋最近的下一級交換機收到BPDU報文時,就把BPDU所到達的那個端口的路徑成本值與根網橋的根路徑

  成本值相加。

3.鄰接交換機再以這個新的累加值作爲根路徑成本,然後發送出包含此值的BPDU報文。
4.當鄰接交換機下的每一臺交換機都收到這個BPDU報文時,再把隨後的交換機端口路徑成本與這個值相加,依次

  類推。
生成樹端口的狀態

STP基本配置

禁用:強制關閉(實際並不屬於端口正常的STP狀態的一部分)。

轉發:可以發送和接收數據幀,也可以收集MAC地址加入到它的地址表,還可以發送BPDU報文。

學習:延遲時間15s,轉發BPDU報文的同時,學習新的MAC地址,並添加到交換機的地址列表中。

偵聽:延遲時間15s,爲了使該端口加入生成樹的拓撲過程,允許接收或發送BPDU報文。

阻塞:老化時間20s,以便能偵聽到其他鄰接交換機的信息。

 

生成樹協議的發展歷程

IEEE生成樹發展史:STP/802.1D ——> RSTP/802.1W ——> MISTP/MSTP/802.1S:

STP/802.1D:STP(生成樹協議/單生成樹協議 Spanning Tree Protocol)在IEEE 802.1D中定義。該協議的的原

     理是按照樹的結構來構造網絡拓撲,消除網絡中的環路,避免由於環路的存在而造成廣播風暴問題。

     缺點:

     1.拓撲收斂慢,當網絡拓撲發生改變的時候,生成樹協議需要50秒的時間才能完成拓撲收斂;

     2.不能提供負載均衡的功能,當網絡中出現環路的時候,生成樹協議簡單的將環路進行Block,這樣改鏈路

       就不能進行數據包的轉發,浪費網絡資源。

     CST:CST(公共生成樹 Common Spanning Tree)在IEEE 802.1Q中定義的?是IEEE 802.1D對於VLAN和STP的

          解決方案。CST在生成樹收斂的時候,不考慮網絡中VLAN的存在,只在網絡中生成和維護單個生成

          樹;所有CST的BPDU作爲不帶標記的幀通過本地VLAN進行傳輸。

         特點:

          1.交換機CPU負載較低,只需要計算一個生成樹實例;

          2.網絡中的STP無法按照VLAN的需求,爲VLAN創建最優的STP路徑,可能導致某些VLAN存在次優路徑;

          3.冗餘的端口被阻塞掉之後,在每個VLAN中就無法轉發數據,會導致無法實現網絡流量的負載均衡。

RSTP/802.1W:RSTP(快速生成樹協議 Rapid Spaning Tree Protocol)在IEEE 802.1W中定義,802.1D發展而

     來這種協議進一步處理了網絡臨時失去連通性的問題,在網絡結構發生變化時能更快的收斂網絡。實際

     上它是把減少STP收斂時間的一些措施融合在802.1D中形成新的協。它比802.1D多了種端口類型:預備

     口類型(Alternate Port)和備份端口類型(Backup Port),將PortFastUplinkFastBackboneFast等問題

     都解決了,我們要做的只是打開802.1W協議。RSTP協議可以向下兼容802.1D,但是如果它們共存時802.1W

     所擁有的內在的快速收斂功能將失效。

     RSTP相對於STP的改進:

    1.STP沒有明確區分端口狀態與端口角色,收斂時主要依賴於端口狀態的切換,RSTP比較明確的區分了端口

       狀態與端口角色,爲根端口和指定端口設置了快速切換用的替換端口和備份端口兩種角色,且其收斂時

       更多的是依賴於端口角色的切換;

    2.STP端口狀態的切換必須被動的等待時間的超時,而RSTP端口狀態的切換卻是一種主動的協商;

    3.STP中的非根網橋只能被動的中繼BPDU,而RSTP中的非根網橋對BPDU的中繼具有一定的主動性。

     優點:

     1.集成了IEEE 802.1D的很多增強技術,這些增強功能不需要額外配置;

     2.RSTP使用第2類和第2版BPDU,能夠與IEEE 802.1D兼容;

     3.RSTP能夠主動確認端口是否能安全轉換到轉發狀態,而不需要依靠任何計時器來做出判斷。

     缺點:

     1.仍是單生成樹結構,不能做負載均衡,鏈路被阻塞後不承載任何流量造成了帶寬浪費;

     2.收斂速度仍無法應對大型網絡。

MISTP/802.1S:不常用不作介紹。

MSTP/802.1S:MSTP(多實例生成樹協議 Multiple Spanning Tree Protocol)將環路網絡修剪成爲一個無環的

     樹型網絡,避免報文在環路網絡中的增生和無限循環,同時還提供了數據轉發的多個冗餘路徑,在數據轉

     發過程中實現VLAN數據的負載均衡。MSTP兼容STP和RSTP,並且可以彌補STP和RSTP的缺陷。它既可以快速

     收斂,也能使不同VLAN的流量沿各自的路徑分發,從而爲冗餘鏈路提供了更好的負載分擔機制。

     優點:

    1.MSTP設置VLAN映射表(VLAN和生成樹的對應關係表),把VLAN和生成樹聯繫起來,通過增加“實例”(將多

       個VLAN整合到一個集合中)這個概念,將多個VLAN捆綁到一個實例中,以節省通信開銷和資源佔用率;

    2.MSTP把一個交換網絡劃分成多個域,每個域內形成多棵生成樹,生成樹之間彼此獨立;

    3.MSTP將環路網絡修剪成爲一個無環的樹型網絡,避免報文在環路網絡中的增生和無限循環,同時還提供

       了數據轉發的多個冗餘路徑,在數據轉發過程中實現VLAN數據的負載分擔;

     4.MSTP兼容STP和RSTP。

     MST:MST(多生成樹 Multiple Spanning Tree)由IEEE 802.1S定義,是把802.1W的RST算法擴展而得到

          的,MST提出了域的概念,在域的內部可以生成多個生成樹實例,並將VLAN關聯到相應的實例中,每

          個VLAN只能關聯到一個實例中。這樣在域內部每個生成樹實例就形成一個邏輯上的樹拓撲結構,在

          域與域之間由CIST實例將各個域連成一個大的生成樹。具有相同的MST配置信息,並且具有完全一致

          的VLAN-實例映射關同時運行MSTP協議的橋組成一個域。每個域的內部有一個主實例成爲IST,域和

          之間有CST連接,樣整個網絡拓撲就有CST和IST功能組成了一個樹形拓撲,這個樹就是CIST。

          個VLAN內的數據在不同的生成樹實例內進行發,這樣就提供了負載均衡功能。

     CIST:CIST(公共和內部生成樹 Common and Internal Spanning Tree)是連接一個交換網絡內所有交換機

          的單生成樹,由IST和CST共同構成。CIST是每個MST區域的IST實例、互連MST區域的CST實例和802.1D

          單生成樹橋的一個集合。CIST與MST區域內的IST實例是一致的,並與MST區域外部的CST也是一致的。

     IST:IST(內部生成樹 Internal Spanning Tree)是MST區域內的一棵生成樹。IST和CST共同構成整個交換

          機網絡的生成樹CIST。

     CST:CST(公共生成樹 Common Spanning Tree)見上。

說明:實例就是多個VLAN的集合,通過多個VLAN捆綁到一個實例中去的方法可以節省通信開銷和資源佔用率。

Cisco生成樹發展史:PVST ——> PVST+

PVST:PVST(每VLAN生成樹 Per VLAN Spanning Tree)爲每個VLAN構建一棵單獨的生成樹實例,可以獨立地爲每

     個VLAN控制哪些端口要轉發數據,從而能實現對每個VLAN作二層負載平衡,進而確保能夠使用所有的鏈

     路,而不會過度使用某條鏈路。一般情況下PVST要求在交換機之間的中繼鏈路上運行Cisco的ISL,並允許

     一個VLAN中繼當被其它VLANs的阻塞時將一些VLANs轉發。PVST不兼容STP、RSTP。
PVST+:PVST+(增強的每VLAN生成樹 Per VLAN Spanning Tree Plus)對PVST做了改進,它允許在相同網絡中同

     時存在CST和PVST,使CST可以將信息傳給PVST,以便兼容其它廠商的生成樹協議。 具體做法是在Vlan 1

     運CST,在其他VLAN上運行PVST。VLANPVST+的每個實例都有單獨的根橋,這個根橋向網絡中的所有其

     它交換機傳播與該VLAN相關的生成樹信息。PVST+也是每個VLAN一棵STP,也可以實現第二層的負載均衡

     PVST+可以使用802.1Q封裝,並在Catalyst 802.1Q的Trunks鏈路上是自動啓動的。PVST+將區域分成三種類

     型PVST區域、PVST+區域、單生成樹區域。Cisco交換機默認是運行該協議的。

   優點:

   1.支持ISL和IEEE802.1Q中繼 ;

     2.兼容STP、RSTP;

   3.支持Cisco專有的STP擴展,並添加了BPDU防護和根防護增強功能。

PVST和PVST+的缺點:

1.由於每個VLAN都需要生成一棵樹,PVST BPDU的通信量將正比於Trunk的VLAN個數。

2.在VLAN個數比較多的時候,維護多棵生成樹的計算量和資源佔用量將急劇增長。特別是當Trunk了很多VLAN的

  接口狀態變化的時候,所有生成樹的狀態都要重新計算,CPU將不堪重負。所以,Cisco交換機限制了VLAN的使

  用個數,同時不建議在一個端口上Trunk很多VLAN。

3.由於協議的私有性,PVST和PVST+不能像STP和RSTP一樣得到廣泛的支持,不同廠家的設備並不能在這種模式下

  直接互通,只能通過一些變通的方式實現,例如Foundry的IronSpan。IronSpan默認情況下運行的是STP協議,

  當某個端口收到PVST BPDU時,該端口的生成樹模式會自動切換成PVST與PVST+兼容模式。一般情況下,網絡的

  拓撲結構不會頻繁變化,所以PVST/PVST+的這些缺點並不會很致命。但是,端口Trunk大量VLAN這種需求還是

  存在的。

總結:

1.STP/RSTP是基於端口的,PVST/PVST+是基於VLAN的,MSTP是基於實例的。

2.第一代生成樹協議:STP/RSTP,沒有VLAN認知能力,不支持二層負載均衡;

  1>STP/IEEE 802.1D版本最爲流行;

  2>RSTP/IEEE 802.1W向下兼容STP。

  第二代生成樹協議:PVST/PVST+具有VLAN認知能力,支持二層負載均衡;
  1>PVST不兼容STP/RSTP協議;

  2>PVST+爲PVST的改進版,兼容STP/RSTP。

  第三代生成樹協議:MSTP/MISTP。

  1>MSTP/IEEE 802.1S具有VLAN認知能力,可以實現負載均衡,可以實現類似RSTP的端口狀態快速切換,可以捆

    綁多個VLAN到一個實例中以降低資源佔用率MSTP可以很好地向下兼容STP/RSTP協議。

3.實際應用中多使用:PVST、PVRST、MSTP;Cisco默認開啓PVST+,而PVRST、MSTP則需要另外打開。

簡單地說:

CST是公共生成樹協議,由IEEE 802.1Q定義?該標準規定所有的VLAN只有單個STP,減少了交換機性能的消耗。

PVST是Cisco私有,作用是一個VLAN有一個STP。優點可以做負載平衡等;缺點不能和使用CST的設備交換BPDU。

PVST+就可以使PVST和CST之間交換BPDU,其他方面跟PVST一樣。

MST是多生成樹。每個VLAN一個STP,如果有很多VLAN,則會有很多STP,這樣會消耗交換機的性能。然而其中許

  多的STP實際上是可以共用的,MST就是把多個VLAN集合起來,從而使用一個STP實例。避免STP太多或者太少。

  

實驗

RSTP

命令:

sw1(config)#spanning-tree mode rapid-pvst        //啓用RSTP模式生成樹

sw1 (config-if-range)#duplex full        //設置鏈路爲全雙工模式

sw1(config-if-range)#spanning-tree link-type point-to-point      //設置生成樹鏈路類型爲點到點

sw3(config-if-range)#spanning-tree portfast        //啓用速端口

說明:試驗中交換機之間是Trunk鏈路,自動協商爲全雙工,RSTP會自動把它們的鏈路類型標識爲點到點類型,

      我們在這裏手動強制配置了一遍。

STP基本配置

sw1(config)#spanning-tree mode rapid-pvst

sw1(config)#int range f0/14 - 15

sw1(config-if-range)#switchport mode trunk

sw1 (config-if-range)#duplex full

sw1(config-if-range)#spanning-tree link-type point-to-point

sw2 (config)#spanning-tree mode rapid-pvst

sw2(config)#int range f0/14 - 15

sw2(config-if-range)#switchport mode trunk

sw2 (config-if-range)#duplex full

sw2(config-if-range)#spanning-tree link-type point-to-point

sw3 (config)#spanning-tree mode rapid-pvst

sw3(config)#int range f0/13 - 14

sw3(config-if)#switchport mode trunk

sw3 (config-if-range)#duplex full

sw3(config-if-range)#spanning-tree link-type point-to-point

sw3(config)#int range f0/1 - 2

sw3(config-if)#switchport mode access

sw3(config-if)#switchport access vlan 1

sw3(config-if-range)#spanning-tree portfast

實驗調試

sw1#show spanning-tree vlan 1        //查看生成樹的配置

sw1#show spanning-tree vlan 1 int f0/14 detail        //查看該接口Vlan 1生成樹詳細信息

sw1#show spanning-tree summary

sw1#show spanning-tree root

RSTP的接口類型:

邊界接口(Edge Port):如果接口上啓用Portfast,該接口就是邊界接口;

     命令:sw1 (config-if)#spanning-tree portfast

點到點接口(Point-to-Point Port):如果接口是全雙工,該接口就是點到點接口;

     命令:sw1 (config-if)#duplex full

           sw1(config-if)#spanning-tree link-type point-to-point

共享接口(Share Port):如果接口是半雙工,該接口就是共享接口;

     命令:sw1 (config-if)#duplex half

           sw1(config-if)#spanning-tree link-type shared

說明:雖然RSTP會自動識別鏈路類型,但是在接口上手動指明鏈路類型和接口類型有利於RSTP的運行。

PVST 和 STP保護

命令:

sw1(config)#spanning-tree mode pvst        //啓用PVST模式生成樹

sw1(config)#spanning-tree vlan 1 root primary        //設置sw1爲Vlan 1的主根橋

sw1(config)#spanning-tree vlan 2 root secondary        //設置sw1爲Vlan 2的次根橋

sw3(config-if-range)#spanning-tree portfast        //配置速端口

sw3(config)#spanning-tree uplinkfast        //配置上行速鏈路

sw3(config)#spanning-tree backbonefast        //配置快速主幹

sw3(config-if)#spanning-tree vlan 1 cost 18        //設置鏈路開銷

sw3(config-if)#spanning-tree vlan 1 port-priority 112        //設置端口優先級

sw1(config-if)#spanning-tree guard root        //配置Guard Root

sw3(config-if)#spanning-tree bpduguard enable        //配置BPDU Guard

說明:

①“spanning-tree vlan 1 root primary”和“spanning-tree vlan 1 root secondary”命令實際上是宏

  令,執行該命令時交換機會先取出當前根橋的優先級,然後把本交換機的優先級設置爲比當前根橋優先級大或

  者小4096的值;使用“show running-config”命令時,在配置文件中是看不到該命令的。

②設置鏈路開銷和端口優先級時,注意根據SPA算法配置在正確的交換機上。

配置Guard Root後,如果該端口收到比現有根橋更優的BPDU幀,爲了保護現有根橋,該端口將進入Blocking;

④配置BPDU Guard後,如果該端口收到BPDU幀,爲了保護現有網絡,該端口將會立即關閉,要重新開啓端口需要

  先移除BPDU源,在端口下執行“shutdown”和“no shutdown”命令。

STP基本配置

sw1(config)#vtp domain PVST

sw1(config)#vlan 2

sw1(config)#int range f0/14 - 15

sw1(config-if-range)#switchport mode trunk

sw1(config)#spanning-tree mode pvst

sw1(config)#spanning-tree vlan 1 root primary

sw1(config)#spanning-tree vlan 2 root secondary

sw1(config)#spanning-tree backbonefast

sw1(config)#int f0/14

sw1(config-if)#spanning-tree guard root

sw2(config)#int range f0/14 - 15

sw2(config-if-range)#switchport mode trunk

sw2(config)#spanning-tree mode pvst

sw2(config)#spanning-tree vlan 2 root primary

sw2(config)#spanning-tree vlan 1 root secondary

sw2(config)#spanning-tree backbonefast

sw2(config)#int f0/14

sw2(config-if)#spanning-tree guard root

sw3(config)#int range f0/13 - 14

sw3(config-if-range)#switchport mode trunk

sw3(config)#spanning-tree mode pvst

sw3(config)#int range f0/1 - 2

sw3(config-if)#switchport mode access

sw3(config-if)#switchport access vlan 1

sw3(config-if-range)#spanning-tree portfast

sw3(config-if)#spanning-tree bpduguard enable

sw3(config)#int range f0/3 - 4

sw3(config-if)#switchport mode access

sw3(config-if)#switchport access vlan 2

sw3(config-if-range)#spanning-tree portfast

sw3(config-if)#spanning-tree bpduguard enable

sw3(config)#spanning-tree uplinkfast

sw3(config)#spanning-tree backbonefast

sw3(config)#int f0/13

sw3(config-if)#spanning-tree vlan 1 cost 18

sw3(config-if)#spanning-tree vlan 1 port-priority 112

說明:

①網橋優先級必須是4096的倍數,默認爲32768,相當於“spanning-tree vlan 1 priority 32768”命令;

②百兆鏈路成本默認爲19,相當於“spanning-tree vlan 1 cost 19”;

③端口優先級必須是16的倍數,默認爲128,相當於“spanning-tree vlan 1 port-priority 112”命令;

④每個VLAN的優先級又有所不同,爲“優先級 + VLAN ID”;

⑤執行“spanning-tree vlan 1 root primary”命令後,優先級設置爲24576,該命令相當於“spanning-tree

  vlan 1 priority 24576”命令,當不同交換機輪換使用“root primary”參數時,優先級設置爲當前主根橋

  優先級遞減4096,到0爲止;

⑥執行“spanning-tree vlan 1 root secondary”命令後,優先級設置爲28672,該命令相當於“spanning-

  tree vlan 1 priority 28672”命令,不同交換機輪換使用“root secondary”參數時,優先級不變。

如果sw3強制成爲根橋,那麼sw2sw1F0/14端口將進入阻塞狀態;

如果sw3的F0/1 - 4端口接收到BPDU幀,些端口將被立即關閉。

實驗調試

sw3#show spanning-tree vlan 1

STP基本配置

 

sw1#show spanning-tree

sw1#debug spanning-tree bpdu        //查看STP發送和接收的BPDU幀情況

sw1#debug spanning-tree events        //查看STP事件

注意:

①在實際中,當要顯式控制根橋和根口等時,不要利用交換機的MAC地址來控制,如果交換機更換或者網絡中加

  入新的交換機,由於這些交換機的MAC地址並不能事先知道,可能導致STP和我們預想的不一致。

②沒有環路時可以使用“no spanning-tree vlan 1”命令關閉某個VLAN的STP;但是建議不要做此動作,因爲

  STP對交換機的壓力通常是可以忍受的。

PortFast、UplinkFast和BackboneFast:

PortFast(速端口):用於接入層交換機或連接到路由器接口的配置;作用主要用在以太網接口一但有設備入,

   端口立即進入Forwarding狀態,不必經過Listening、Learning的30s。

   配置要求:通常用於Access接口,該接口不能用於接入交換機,只能接入計算機或路由器等。

   配置命令:sw3(config)#int range f0/1 - 2

              sw3(config-if-range)#spanning-tree portfast

在通常情況下接口先進入Listening,然後經過Learning最後才成爲Forwarding,這期間需要30秒。這對於某些場合是不能忍受的(如DHCP自動獲取時,如果端口啓動時間過長將導致客戶端得不到IP地址),配置PortFast特性後,一旦有設備接入端口立即進入Forwarding狀態,端口不參與STP計算,但依然運行STP協議,如果檢測到環路也能夠將Forwarding轉換爲Blocking。

說明:確定網絡沒有環路時,Trunk接口也可以配置PortFast,使用“spanning-tree portfast trunk”命令。

UplinkFast(上行速鏈路):用於接入層交換機的配置;作用主要用在接入層交換機到主幹交換機的主鏈路故障

   時,能立即切換到備份鏈路的Forwarding,不必經過最大老化時間、Listening、Learning的50s或者30s。

   配置要求:必須用於接入層交換機,該交換機至少有一個端口處於blocking,鏈路失效必須發生在根端口時

              纔有意義。

   配置命令:sw3(config)#spanning-tree uplinkfast

沒有配置UplinkFast時,交換機如果能直接檢測到主鏈路故障,那麼另外的備份鏈路接口會先進入Listening,然後經過Learning最後才成爲Forwarding,這期間需要30秒。然而如果到上行交換機的主鏈路上存在一個Hub,那麼當對端端口故障時,無法直接檢測到故障,需要等待10個週期沒有收到對端的BPDU(每個週期2s),20s後才能進入Listening、然後經過Learning最後才成爲Forwarding,這樣總共50s才能進入Forwarding。所以,STP重新收斂的時間通常需要30-50s。配置UplinkFast後會把優先級增加到49152,端口開銷增加3000,如果主鏈路故障,那麼備份鏈路能很快進入Forwarding。由於配置後提高了交換機上所有端口的路徑開銷,所以交換機不適合作爲根網橋。             

注意:該命令只能用於接入層,不能配置在匯聚和核心層;Catalyst交換機不支持以VLAN爲基礎配置該命令。

BackboneFast(快速骨幹):用於所有交換機的配置;可以在不是相鄰網絡的故障中縮短網絡收斂的時間,即

   省去了由Blocking到Listening的20s的最大老化時間。

   配置要求:需要在所有交換機上都進行配置。

   配置命令:sw3(config)#spanning-tree backbonefast

BackboneFast是對UplinkFast的一種補充,UplinkFast能夠檢測直連鏈路的失效,BackboneFast是用來檢測間接鏈路的失效。當啓用了BackboneFast的交換機檢測到間接鏈路失效後,會使阻塞端口立即直接進入Listening,而不經過20s的最大老化時間,然後經過Learning最後成爲Forwarding,只需要30s就進入Forwarding,比之前的50s少了20s。 

總結:PVST+爲每一個VLAN生成一棵生成樹,在默認情況下,所有生成樹的根橋都是同一交換機。設置主次根橋爲了優化交換網絡實現負載均衡;配置速端口爲了使接入終端的端口快速進入轉發狀態;配置上行速鏈路爲了實現備份的上行鏈路快速恢復;配置快速主幹可以縮短不相鄰網絡的故障的收斂時間。

Root Guard

配置Guard Root功能是爲了防止用戶擅自在網絡中接入交換機併成爲新的根橋,從而破壞了原有的STP樹。該功能通常在接入層上對外開放的接口下配置,這些接口將拒絕接收比現有根橋更優的BPDU幀。

Bpdu Gard

配置BPDU Guard功能是爲了防止在那些已經配置PortFast命令的端口上接入交換機,從而導致環路的產生。因爲PortFast端口通常用於接入計算機,這些端口一但激活就立即進入Forwarding,配置BPDU Guard功能後可以防止這些端口收到BPDU幀。

端口恢復:

可以配置端口自動恢復,來恢因BPDU Guard而關閉的端口。

sw3(config)#errdisable recovery cause bpduguard

sw3(config)#errdisable recovery interval 60

MST

命令:

sw1(config)#spanning-tree mode mst        //啓用MST生成樹模式

sw1(config)#spanning-tree mst configuration        //進入MST配置模式

sw1(config-mst)#name MST        /命名MST名字

sw1(config-mst)#revision 1        //配置MST的Revision號

sw1(config-mst)#instance 1 vlan 1 – 2        //把vlan 1、2的生成樹映射到實例1

sw1(config-mst)#instance 2 vlan 3 – 4        //把vlan 3、4的生成樹映射到實例2

sw1(config-mst)#exit        //退出配置才能生效

sw1(config)#spanning-tree mst 1 priority 8192        //配置sw1爲MST實例1的主根橋

sw1(config)#spanning-tree mst 2 priority 12288        //配置sw1爲MST實例2的次根橋

說明:

①只有MST的名字和Revision號相同的交換機纔是在同一個MST區域;

②實例0是默認的實例,默認時所有的VLAN都映射到該實例上。

STP基本配置

sw1(config)#vtp domain PVST

sw1(config)#vlan 2

sw1(config)#vlan 3

sw1(config)#vlan 4

sw1(config)#int range f0/14 - 15

sw1(config-if-range)#switchport mode trunk

sw1(config)#spanning-tree mode mst

sw1(config)#spanning-tree mst configuration

sw1(config-mst)#name MST

sw1(config-mst)#revision 1

sw1(config-mst)#instance 1 vlan 1 – 2

sw1(config-mst)#instance 2 vlan 3 – 4

sw1(config-mst)#exit

sw1(config)#spanning-tree mst 1 priority 8192

sw1(config)#spanning-tree mst 2 priority 12288

sw2(config)#int range f0/14 - 15

sw2(config-if-range)#switchport mode trunk

sw2(config)#spanning-tree mode mst

sw2(config)#spanning-tree mst configuration

sw2(config-mst)#name MST

sw2(config-mst)#revision 1

sw2(config-mst)#instance 1 vlan 1 – 2

sw2(config-mst)#instance 2 vlan 3 – 4

sw2(config-mst)#exit

sw2(config)#spanning-tree mst 2 priority 8192

sw2(config)#spanning-tree mst 1 priority 12288

sw3(config)#int range f0/13 - 14

sw3(config-if-range)#switchport mode trunk

sw3(config)#spanning-tree mode mst

sw(3config)#spanning-tree mst configuration

sw3(config-mst)#name MST

sw3(config-mst)#revision 1

sw3(config-mst)#instance 1 vlan 1 – 2

sw3(config-mst)#instance 2 vlan 3 – 4

sw3(config-mst)#exit

sw3(config)#int range f0/1 - 2

sw3(config-if)#switchport mode access

sw3(config-if)#switchport access vlan 1

sw3(config)#int range f0/3 - 4

sw3(config-if)#switchport mode access

sw3(config-if)#switchport access vlan 2

sw3(config)#int range f0/5 – 6

sw3(config-if)#switchport mode access

sw3(config-if)#switchport access vlan 3

sw3(config)#int range f0/7 – 8

sw3(config-if)#switchport mode access

sw3(config-if)#switchport access vlan 4

實驗調試

sw1#show spanning-tree

sw1#show spanning-tree mst configuration        //查看MST的配置


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