文章目錄
- CCNP2交換:生成樹:STP(802.1D)、PVST、PVST+、RSTP/RPVST、802.1W、MSTP
-
- 一、線路備援導緻的問題:
-
- 1、廣播風暴
- 2、MAC位址表翻滾:
- 3、同一資料幀的重複拷貝:
- 二、STP生成樹:
-
- 1、STP概述:
- 2、STP的資料幀:BPDU
- 3、IEEE802.1D算法:
-
- (1)IEEE802.1D工作過程:
- (2)IEEE802.1D角色選舉算法:
- (3)IEEE802.1D算法小實驗:
- (4)IEEE802.1D的狀态:
- (4)IEEE802.1D的收斂:
- 三、PVST:
-
- 1、PVST的特點:
- 2、幹涉根網橋的選舉:
- 四、PVST+:
-
- 1、特點:
- 2、PVST部分的加速:
-
- (1)端口加速:
- (2)上行鍊路加速(慎用):
- (3)骨幹加速:
- 五、快速生成樹 RSTP/RPVST、802.1W(1-2s收斂完成):
- 六、MSTP/802.1S(多生成樹、組生成樹):
- 七、生成樹總結:
CCNP2交換:生成樹:STP(802.1D)、PVST、PVST+、RSTP/RPVST、802.1W、MSTP
一、線路備援導緻的問題:
在沒有一些協定的發明前,交換機是不敢連成圈的。因為連成圈就會導緻交換機出環,導緻交換機的累死,重新開機。如果将它們連成環,必然會導緻以下3個問題。
1、廣播風暴
在介紹有關協定前,先講一下廣播風暴:
我們知道交換機不向路由器可以自己算路由,它的工作機制是:流量到達交換機後,交換機會先看流量來的MAC,再看流量進的接口。交換機檢視自己的MAC、接口表,如果認識就轉發;但如果目标MAC不認識,該交換機就會洪泛。
在一些協定沒有發明前,如果有3台交換機連成下面這樣,當一台交換機将資料包進行洪泛後,收到該包的交換機由于也不認識MAC,它也會洪泛,3台交換機連接配接在一起。就導緻自己洪泛出去的包,自己又收到了,又因為不認識該包,就又會洪泛。
由于二層交換機沒有TTL,是以不停地洪泛下去,直到交換機的CPU達到最大值超負荷之後,裝置就會癱瘓重新開機。
2、MAC位址表翻滾:
還是拿上圖說吧。
當産生廣播風暴時:一個逆時針的廣播,還有一個順時針的廣播,這兩個廣播的原MAC都是相同的,這樣就會導緻交換機再上一時間點認為流量是從1号口進來,然後又馬上接到另一個方向的2号口的流量,使MAC位址表不停的進行删除前一MAC所對應的接口,不斷的翻滾。
3、同一資料幀的重複拷貝:
我們知道,正常交換機在所有接口上隻洪泛一次,當出現廣播風暴之後,就會将一個資料幀不停的洪泛,導緻同一資料幀的重複拷貝。
為了解決上述問題出現了一個非常偉大的協定:STP(IEEE802.1D)生成樹協定。
二、STP生成樹:
一般的協定都是由私有轉為公有,而生成樹最早的協定是公有的 802.1D,接着Cisco提出了PVST、PVST+,在後來有了 802.1W 、 802.1S
1、STP概述:
如果3台交換機連在了一起,導緻了出環,若要人為的破環。我們有什麼辦法?
其實就是拔根線,這樣就破環了。生成樹STP(spanning tree protocol)就是這個邏輯,它用于實作二層的線路備援,在網絡中邏輯的阻塞部分接口,來實作從根(交換機)到目标僅擁有唯一路徑;當最佳路徑故障時,阻塞端口自動工作來實作備份的作用。
上面的那張我用Packet Tracer畫的圖,我們可以看到其中有兩台交換機之間有一個接口是黃顔色的,那就是邏輯堵塞。
所謂生成樹,其實就是在二層的網絡中建構一個樹形結構,它的特點就是:唯一、最短、星型拓撲
2、STP的資料幀:BPDU
PDU我們都知道,它是協定資料單元。而 BPDU橋協定資料單元,跨層封裝至二層,我們可以了解為交換機之間用來通訊的幀。
跨層封裝至二層,就不能用以太網第二代幀作為二層,就需要用以太網第一代幀了,以太網第一代幀分為 LLC邏輯鍊路控制層(提供對資料進行分片,程序區分的功能),MAC媒體通路控制層(對實體層控制,包括提供MAC位址)
BPDU所含的字段如下:
BPDU類型 | 注解 |
---|---|
配置BPDU | 隻有根網橋可以發出,在最初無根網橋時,所有交換機均發出; |
次優BPDU | TCN:拓撲變更消息 |
注意:BPDU的保活時間:Hello time 2s hold time 20s,超過20s後,生成樹将重新收斂。
3、IEEE802.1D算法:
我們拿四個交換機連成環說事吧:
(1)IEEE802.1D工作過程:
STP工作過程: |
---|
每台交換機剛開始都發送BPDU,當每台交換機都收到其它交換機的資訊後,它們會從所有的BPDU中選取一個最好的BPDU我們把這個最好的BPDU叫它配置BPDU。 |
發送該BPDU的交換機成為根網橋(根交換機),我們可以了解為老大。接着其它交換機不再發送BPDU,然後由根網橋判斷哪個接口好,哪個接口不好,該堵塞哪個接口。 |
之後根網橋發送BPDU進行生成樹。生成樹收斂好之後,根網橋每2秒發送一次BPDU進行保活,其它交換機收到之後隻進行轉發,對于12s沒有回複的交換機,生成樹将重新收斂。 |
阻塞端口隻接收不發送,用于接收次優BPDU。開啟的阻塞端口,隻轉發根網橋的配置BPDU。 |
但是當它們的連接配接出現問題之後,生成樹将重新收斂,比如說下面這樣:
(2)IEEE802.1D角色選舉算法:
角色選舉是生成樹的核心,通過該算法将成網狀等結構的交換機拓撲轉化為具有星型結構的樹狀結構。要想生成這棵樹,就要從樹根開始,選舉的步驟是這樣的:
Ⅰ、根網橋的選舉:
關于生成樹協定的幹涉,至少必須關注根網橋的位置,最合适的位置為彙聚層裝置
通過上面我們知道,根網橋的選舉靠的的是BPDU的優劣,那什麼才是最好的BPDU呢?
選取最好的BPDU就是選出根網橋。根網橋:在一顆生成樹執行個體中有且僅有一台,對整個樹進行計算、指揮、管理和部署,通過發送BPDU來進行指揮和維護,周期發送BPDU。
Ⅱ、根端口的選舉:
有了根網橋,那麼每台交換機上就得有一個端口專門連接配接上一級,用于組建樹形結構。
根端口(一個接口):在每台非根網橋上有且僅有有一個必須是根端口,它是非根網橋上離根網橋最近的接口(星型拓撲最佳路徑),該接口可以用于 接收 來自根網橋的BPDU,轉發使用者的流量。
選舉規則如下:
i、比較根網橋到該裝置各入接口的最小cost(開銷)值,最小的成為根端口。
從上面我們就可以看出來交換機是如何通過開銷值選取根端口了,它會比較兩邊開銷值,開銷值小的将成為根端口。
但是我們從上圖中還可以看到,根網橋到Switch3的兩個端口的cost值相同。這就有了第二條選舉規則:
ii、若入口的cost值相同,便比較該接口對端的交換機BID,最小的成為根端口。
也就是比較上一個圖中的Switch1、Switch2它們之間的BID。
iii、若對端的BID相同,便比較該接口對端接口的PID,先比較PID中的優先級,最小的成為根端口。若優先級相同比較編号
對端BID相同,說明它們是同一台交換機,那麼這個圖長得就是這樣:
Switch5的兩個接口連着根網橋,它們的BID相同,接口優先級是預設的,由于 F0/2 的接口編号小,那麼Switch5的F0/1口便成為了根端口,F0/3作為阻塞端口。
ⅳ、若接口對端的PID相同,比較本地的PID,最小的成為根端口。
這種情況是什麼呢?連唯一的接口編号都一樣了,我們想到的隻有這種裝置了:集線器,一個接口下通過集線器又通過兩根線連接配接了1台交換機。
我們也确實可以看到本地Switch5編号較小的接口 F0/1 成為了根端口,F0/2口邏輯阻塞。
Ⅲ、指定端口的選舉:
指定端口(一個接口):在每段實體鍊路有且僅有一個;指定端口 轉發 來自網橋的BPDU。以及 轉發 使用者的流量。
首先:預設根網橋所有端口均為指定端口。
然後進行接下來的比較:
i、比較接口的出向cost值,最小的成為指定端口
ii、若出向cost值相同,比較本地的BID,最小的成為指定端口
iii、若本地的BID相同,再比較本地的PID,最小的成為指定端口
當這種情況出現的情況的時候,就出環了:
ⅳ、若本地PID相同,該接口直接阻塞,最小的成為指定端口
Ⅳ、非指定端口(阻塞狀态)的選舉:
阻塞狀态:邏輯阻塞,能接收流量,但不向任何接口進行轉發。
選舉規則:當一個網絡中将以上三種角色均選舉完成後,剩餘所有未配置設定任何角色的接口成為非指定端口。
(3)IEEE802.1D算法小實驗:
已知交換機A、B、C、D、E、F,其MAC分别是全A、全B、全C、全D、全E、全F,所有接口的優先級都是預設的。有下面三種圖,其端口數值模拟其端口編号的大小。
标出所有端口的狀态。
答案如下:
通過上面實驗我們發現,根網橋就是整個網絡的中心,所有的通訊必須經過它。
注意:若最底層的交換機中連接配接着電腦,該電腦也會參與生成樹的選舉,因為生成樹隻有發出BPDU,才知道其底層連接配接的是交換機還是電腦。
(4)IEEE802.1D的狀态:
狀态 | 注解 |
---|---|
Down 關閉 | 預設所有交換機接口初始狀态,訓示燈 不顯示 ,一旦雙up,向外發出BPDU,然後進入下一狀态。 |
Listening 偵聽 15s | 訓示燈為橙色,此時進行生成樹的選舉,各個接口角色的生成。若接口角色為根端口或指定端口那麼進入下一狀态,若接口角色定義為非指定端口,狀态直接切換為阻塞,訓示燈保持橙色。 |
Learning 學習15s | 訓示燈為橙色,學習PC發出的資料包中的源MAC位址,生成MAC位址表,學習完成後,進入下一狀态。 |
Forward 轉發 | 訓示燈為綠色,此時便可以轉發使用者的流量。 |
BLK 阻塞 | 訓示燈為橙色,非指定端口的狀态 |
注意:任何接口在選舉未完成前,均不能轉發使用者的流量
(4)IEEE802.1D的收斂:
Ⅰ、初始收斂:30s
Ⅱ、結構突變:
i、30s直連檢測前提下,本地阻塞端口啟用需要15s偵聽+15s學習
接着Switch5打開阻塞接口,進行15s的偵聽、15s的學習,總計30s。
ii、50s非直連檢測的前提下,阻塞端口需要20s hold time + 30s 的選舉時間
IEEE802.1D算法的缺點 |
---|
1、收斂速度慢:原因是因為當年網橋開始的時候,處理速度慢。 |
2、鍊路使用率低:指阻塞端口那根線是處于閑置狀态的, |
三、PVST:
Cisco公司發現公有協定走到了它的前面,是以Cisco就針對生成樹發明了一種新協定,專門針對STP存在的缺點,提出了PVST技術。
1、PVST的特點:
PVST(Per Vlan Spanning Tree 生成樹):Cisco私有,基于VLAN的生成樹協定,每個VLAN一顆樹。
優點:徹底解決了鍊路使用率低的問題,将不同VLAN的根網橋放置于不同的彙聚層裝置上, 然後實作流量的分擔,提高了了鍊路的使用率。
缺點:收斂速度慢、樹形結構多、僅支援trunk幹道的ISL的封裝技術(Cisco私有)。
特點:同IEEE802.1D完全一緻的算法,但每個VLAN獨立使用一顆生成樹,僅能基于ISL的trunk幹道封裝技術進行工作。
2、幹涉根網橋的選舉:
SW1#show spanning-tree
基于每個VLAN發出不同的BPDU,各自進行各自的選舉,選舉規則為IEEE802.1D規則。預設所有VLAN發出的BPDU中網橋優先級為32768+VLAN的ID。
管理者手工修改網橋優先級,隻能修改32768的部分,且該部分的修改必須以4096的倍數來進行。
(1)幹涉根網橋的位置,修改網橋優先級:
SW1(config)#spanning-tree vlan 3 priority 28672
(2)直接幹涉根網橋的位置:
sw1(config)#spanning-tree vlan 2 root primary 本地成為vlan2的根網橋
sw1(config)#spanning-tree vlan 3 root secondary 本地成為vlan3的備份根
原理:修改為根,本地自動将網橋優先級下調2倍的4096
修改為備份根的優先級下調1倍的4096
(3)修改接口的優先級預設128(範圍0-240):
SW1(config)#interface fastEthernet 0/24
SW1(config-if)#spanning-tree vlan 2 port-priority 16 修改時必須為 16 的倍數。
(4)修改接口的cost值:
CORE(config)#interface f0/1
CORE(config-if)#spanning-tree vlan 2 cost ?
<1-200000000> Change an interface's per VLAN spanning tree path cost
我這裡用的是Packet Tracer 模拟器,它預設使用的生成樹就是PVST協定。我們連接配接一個拓撲,然後使用上述指令檢視一下這張表:
怎樣證明你有VLAN的使用者呢?可以使用下面兩種辦法。
(1)得有一個接口,該接口必須劃分到VLAN2、狀态是雙UP
(2)擁有trunk幹道:我本地雖然沒有VLAN2的人,但是我的鄰居有,可以通過trunk幹道通路該VLAN的使用者
是以:一台裝置希望存在某個VLAN的生成樹,必須存在該VLAN,同時存在該VLAN的使用者或者存在trunk幹道。
四、PVST+:
從上面我們知道,Cisco公司隻解決了部分的問題,但是收斂速度慢的問題是始終沒解決。為了解決整個問題,它們提出了PVST+。
現在Cisco的裝置預設支援的就是PVST+、802.1Q的封裝。
1、特點:
PVST+:其工作原理同PVST完全一緻,但可以基于ISL、802.1Q工作,可以實作部分的加速,幹涉PVST+的生成樹選舉指令。
2、PVST部分的加速:
(1)端口加速:
端口加速用于在連接配接PC的access端口(配置位置)上實作端口加速,端口加速之後,電腦不需要進行生成樹的選舉(不用再等待30s的生成樹)直接進入轉發狀态。
定義接口為host接口時:接口預設為access,同時portfast功能激活。
SW1(config)#interface f0/1
SW1(config-if)#switchport host
激活portfast功能:
SW1(config)#in f0/1
SW1(config-if)#spanning-tree portfast
(2)上行鍊路加速(慎用):
上行鍊路加速:接入層交換機(配置位置)在存在直連檢測的前提下,本地阻塞端口需要15s偵聽,15s學習才能進入轉發狀态,開啟上行鍊路加速後,該接口将直接成為根端口進入轉發狀态。
SW1(config)#spanning-tree uplinkfast 該指令隻用于接入層裝置
由于上行鍊路加速讓阻塞端口直接成為根端口進入轉發狀态,是以該加速萬不可用于彙聚層交換機,它更适合于存在阻塞端口的接入層裝置,當uplinkfast開啟後,該裝置的網橋優先級和cost值将成倍增加,被強制固定為非根裝置。
(3)骨幹加速:
骨幹加速:交換機在沒有直連檢測的前提下,需要20s的hold+30s的收斂才能轉發流量。開啟骨幹加速後,可以省略20s的hold但剩餘30s,必須正常進行。接收到次優BPDU後,骨幹加速的裝置可以省略20s的 hold time。
它的思路就是:我都收到對端的次優BPDU,那說明拓撲發生了變化,那就直接重新收斂吧。
所有的交換機(配置位置)
SW1(config)#spanning-tree backbonefast
優點 | ①可以将不同VLAN的根網橋放置于不同的彙聚層裝置上,然後實作流量的分擔,提高了鍊路的使用率 ②可以部分的加速 ③相容802.1Q |
---|---|
缺點 | ①收斂速度慢:加速不夠徹底 ②樹形結構多 |
對于PVST+總結一下它實作了哪些加速:
狀态 | 是否加速 |
---|---|
首先初次收斂30s | 否 |
連接配接PC的接口 | 是(減少30s的選舉時間) |
直連檢測 | 是(減少30s的選舉時間) |
非直連檢測 | 是(減少20s的維持時間) |
五、快速生成樹 RSTP/RPVST、802.1W(1-2s收斂完成):
通過分析上面的PVST+協定,我們發現,它的加速并不完全,依然存在很多問題。是以兩類協定都進行了改進:
公有 | 私有 |
---|---|
802.1D ==> 802.1W | PVST+ ==> RSTP/RPVST |
雖然進行了改進,但是其主體特點保持不變:
①RSTP又叫做RPVST為私有協定基于每個VLAN一顆生成樹,選舉算法同PVST+一緻;
②802.1W為公有協定,整個交換網絡為一棵樹
修改生成樹的模式(建議所有交換模式一緻):
sw1(config)#spanning-tree mode ?
mst Multiple spanning tree mode
pvst Per-Vlan spanning tree mode
rapid-pvst Per-Vlan rapid spanning tree mode
注意:不是所有的實體接口均支援RSTP
當接口為 100M的時候鍊路類型為全雙工,為P2P(點到點)
當接口為 10M的時候鍊路類型為半雙工,為Shr(共享型鍊路)
對于10M帶寬的鍊路類型,預設是不支援快速生成樹的,我們可以修改它的鍊路類型:
SW2(config)#int range e0/0-1
SW2(config-if-range)#spanning-tree link-type point-to-point
上面的收斂速度慢的問題解決了,但是對于公有協定隻有一顆樹,對于私有協定樹多。為了解決這個問題出現了新的生成樹:MSTP
六、MSTP/802.1S(多生成樹、組生成樹):
這個協定是最早由Cisco研發出來,最後捐出來,成為公有的協定了。
MSTP/802.1S:首先它也是快速生成樹,特點如下:
①基于一個組一顆生成樹,一個組中可以放置多個VLAN
②快速收斂:同802.1W機理一緻,故半雙工接口需要修改鍊路類型
修改模式為MST
SW1(config)#spanning-tree mode mst 所有交換機上修改
SW1#show spanning-tree mst 0 檢視mst組0
MSTP分組的方式預設存在0号組,所有VLAN均在該組中
配置
(1)進行組配置:
SW1(config)#spanning-tree mst configuration
SW1(config-mst)#instance 1 vlan 6-10,115 建立組号1,同時定義該組的VLAN
SW1(config-mst)#instance 2 vlan 16-20
(2)修改根網橋的位置
SW1(config)#spanning-tree mst 1 root ?
primary Configure this switch as primary root for this spanning tree
secondary Configure switch as secondary root
(3)修改網橋優先級
SW1(config)#spanning-tree mst 1 priority ?
<0-61440> bridge priority in increments of 4096
(4)修改接口優先級,或cost值
SW1(config-if)#spanning-tree mst 1 ?
cost Change the interface spanning tree path cost for an instance
port-priority Change the spanning tree port priority for an instance
七、生成樹總結:
協定 | 特點 | 優點 | 缺點 |
---|---|---|---|
STP 802.1D | 初次收斂:30s 結構變化:直連檢測:30s 非直連檢測:20s hold time + 30s收斂 | 慢 鍊路使用率低 | |
PVST Cisco私有 | 基于VLAN的樹,一個VLAN一顆樹 | 分流 | 慢 樹多 僅支援ISL |
PVST+ Cisco私有 | PVST的基礎上部分加速,支援802.1Q | 分流 部分加速 支援802.1Q | 加速不夠徹底 樹多 |
公有:802.1W Cisco:RSTP/RPVST | 半雙工:Shr,慢速 全雙工:P2p,快速 | 加速徹底 | 樹多 |
MST/802.1S | 半雙工:Shr,慢速 全雙工:P2p,快速 基于組的快速生成樹,預設均在組0 | 加速徹底 組生成樹 |