天天看點

MSTP CIST選舉原理過程

感興趣的同學可以到本頁最後直接下載下傳附件word原版.~~~~高清大圖~~~呵呵.

MSTP中端口的角色: 

在 MSTP的計算過程中,端口的角色有指定端口、根端口、Master端口、Alternate端口、Backup端口等。

■RP,根端口是負責向樹根方向轉發資料的端口; 

■DP,指定端口是負責向下遊網段或交換機轉發資料的端口; 

■Master端口位于整個域到總根的最短路徑上,它是連接配接域到總根的端口; (實際上,我自己的了解應該說是整個域的域内IST的根橋到總根橋最小cost耗費的路徑接口).

■Alternate端口不僅僅是 Master端口的備份端口,也是域内根端口的備份端口。如果 Master端口被阻塞後,Alternate端口将成為新的 Master端口; 

當同一台交換機的兩個端口互相連接配接時就存在一個環路,此時交換機會将其中一個端口阻塞,Backup端口是被阻塞的那個端口。

Instance 0 對于MSTP的意義:

MSTP的執行個體0具有特殊的作用,稱為CIST(Common Internal Spanning Tree),即公共與内部生成樹,其他的執行個體稱為MSTI(Multiple Spanning Tree Instance),即多生成樹執行個體。CIST由通過STP/RSTP計算得到的單生成樹和MSTP計算得到的域組成,是為了保證在所有橋接的區域網路是簡單的和全連接配接的。CST(Common Spanning Tree)是STP/RSTP也是MSTP計算出的用于連接配接MST域的單生成樹。IST(Internal Spanning Tree)是在一個給定的MST域内由CIST提供的連通性。如圖 1 MSTP基本概念示意圖所示,如果把每個MST域看作是一個“交換機”,CST就是這些“交換機”通過STP/RSTP或者MSTP協定計算生成的一棵生成樹。IST是CIST在MST域内的片段,是一個特殊的多生成樹執行個體。

總根和域根

與STP和RSTP相比,MSTP中引入了總根和域根的概念。總根是一個全局概念,對于所有互連的運作STP/RSTP/MSTP的交換機隻能有一個總根,也即是CIST的根;而域根是一個局部概念,是相對于某個域的某個執行個體而言的。

CIST生成樹的計算

網絡中的裝置發送接受BPDU封包,在經過比較配置消息後,在整個網絡中選擇一個優先級最高的交換機作為CIST的樹根。在每個MST域内MSTP通過計算生成IST;同時MSTP将每個MST域作為單台交換機對待,通過計算在MST域間生成CST。如前所述,CST和IST構成了整個交換機網絡的CIST。

1, 實驗拓撲圖:

<a href="http://361531.blog.51cto.com/attachment/201312/13/351531_1386946935qLCr.png"></a>

2, 實驗原理和步驟:

在拓撲圖中,有三個區域,分别是區域A,B,C,每個區域有兩個Instance, 0和1,0是除1以外所有的的VLAN映射.

第一部分,會說明三個域内的選舉,然後再說域間的選舉.

在區域内選舉根橋,DP, RP等的時候遵循下列原則:

1, 首先進行比較每個交換機的橋ID, 橋ID= priority+裝置的MAC位址. 首先比較priority,交換機的預設優先級為32768, 越小越優先,如果橋ID不進行設定,那麼就比較交換機的MAC位址,越小越優先. 最後優先級最小或者是優先級一樣MAC位址最小的選舉為根橋.

2, 第二是比較鍊路的cost, 

3, 比較sender ID. sender ID=priority(預設32768)+ 裝置的MAC位址.

哪個小,那麼剩下的那個sender的非Root port的端口會被block掉.

4, 如果sender ID也一樣,(這種情況隻會發生在兩台交換機中間用兩根鍊路進行組環連接配接),那麼每個交換機的端口還有端口優先級. 同樣,越小越優先。

對于上面的選舉原則,下面會用Region A和Region B來進行解釋:

Region A Internal election:

<a href="http://361531.blog.51cto.com/attachment/201312/13/351531_1386946946cPVP.png"></a>

上面是區域A的情況,對于Instance 1來說,在區域A裡面, 設計原則是:Switch-1是根橋,switch-3的port 0/0/22被block掉。

就這個需求,需要在交換機switch-1上面,配置下面的參數:

spanning-tree mst configuration

 region-name A

 revision-level 1

 instance 1 vlan 200-300

 exit

spanning-tree mst instance 0 priority 4096

spanning-tree mst instance 1 priority 4096

spanning-tree enable

在交換機switch-1上面,Instance1的優先級修改為4096,而其他兩個交換機的橋優先級是預設的32768沒有進行修改,是以,switch-1選舉為Region A的根橋.

從下面交換機2和3上面show的結果可以看到,switch-1是根橋:

<a href="http://361531.blog.51cto.com/attachment/201312/13/351531_1386946953ywrm.png"></a>

<a href="http://361531.blog.51cto.com/attachment/201312/13/351531_1386946954losP.png"></a>

截圖中高亮部分是switch-1的系統mac位址:0001.7a58.f2d0.

根橋選舉好以後,接下來比較的是鍊路cost。

Switch-2到switch-1(根橋)的cost是20000(1000M鍊路),而switch-3到switch-1的cost一樣,也是1000M鍊路,cost為2W.

接下來是比較發送者sender ID.

Switch-2對于instance 1來說,sender ID=20480:0001.7a58.ebe8(我在交換機2上面設定好了Instance1的priority=20480,而switch-3的sender ID=32768:0001.7a58.be0c,這裡直接比較prority,switch-2優于switch-3. 是以最後switch-2的port 0/0/21為指定端口,狀态為FWD,swtich-3的port 0/0/20為Alternate port, 會被block掉,隻接收BPDU封包,不負責轉發資料流量。當端口收到BPDU攜帶TCP(topology change)字段的時候再進行打開端口.

最後對于Instance 1來說,形成的樹如下:

<a href="http://361531.blog.51cto.com/attachment/201312/13/351531_1386946958P1Tb.png"></a>

Region B Internal election:

<a href="http://361531.blog.51cto.com/attachment/201312/13/351531_1386946967cK9a.png"></a>

對于region B來說,希望能達到下面的設計初衷:

Switch-5為Instance 1的根橋,對于switch-4來說,port 0/2為alternate port,被block掉。

對于實作來說,隻需要在switch-5上面将instance1的優先級從預設的32768降低即可:

Switch-5的部配置設定置:

 region-name B

 revision-level 2

spanning-tree mst instance 1 priority 8192

這裡可以看到,在switch-5上面有意把instance 1的橋優先級降低為8192.

而switch-4的預設優先級32768沒有進行修改。

是以swtich-5是根橋。

而swtich-5的兩個端口port 0/0/24和port 0/0/25為指定端口DP,對于switch-4來說,到達根橋switch-5的cost一樣的,而sender ID也一樣,因為是同一台交換機的MAC位址。

最後比較的就是端口ID,在圖中已經标示出來,swtich-4的port 0/1端口ID是128.02,而port 0/2的端口ID是128.03,這個是系統自動預設配置設定的,也可以進行手動修改。

最後128.02小于128.03,是以swtich-4的port 0/2最後被block掉。

最終形成了下面的樹:

<a href="http://361531.blog.51cto.com/attachment/201312/13/351531_1386946974kYXA.png"></a>

最後看輸出結果:

<a href="http://361531.blog.51cto.com/attachment/201312/13/351531_1386946982gEY0.png"></a>

而Region C和Region B是一樣的。這裡就不贅述了。

我們先不看CIST域間破環的原理,光看IST内部的情況如下:(三個region已經都在内部進行了端口的block動作了.)

<a href="http://361531.blog.51cto.com/attachment/201312/13/351531_1386946992FzvN.png"></a>

CIST選舉的原則:

<a href="http://361531.blog.51cto.com/attachment/201312/13/351531_1386947005ey2N.png"></a>

現在,将Region A/B/C分别看成一個交換機.

實際上就是三台交換機組成了一個簡單的環網了。

每個region為一個機關.

這裡又會涉及到一個新術語叫Master 端口,前面已經提過:

那麼,到底是怎麼選舉出來的呢?

這裡要回歸到我們并沒有配置的instance 0。

Instance 0就是CIST選舉的根本。

在Region A裡面,實際上我是有意将switch-1的instance 0的優先級也降成最低了的:

Switch-1:

這樣配置以後,swtich-1不僅僅是Region A裡面的内部根橋,而且還是CIST的總根橋(并沒有說總根橋和IST内部根橋一定要在同一個交換機上面,這裡我是為了圖友善).

對于region B和region C來說,switch-4的port 0/5和switch-6的port0/5都是寫商城100M的鍊路,cost=2W. 是以,這兩個端口,一定都是Master 端口的角色,因為這兩個端口到根橋的耗費是一樣的。

注意:CIST選舉的時候,一定是隻算域間隔cost,而不會計算域内的cost.這一點一定要注意.

下面來看哪個端口會被block掉。

對于Region B來說,switch-5是根橋,switch-5到總根橋的耗費是:

200000+200000+20000=42W.

而對于region C來說,switch-6是根橋,switch-6到總根橋的耗費是:20W+2W=22W.

是以Region C這台交換機的NDP端口(非Master端口為port 0/0/22.最後的角色是DP(FWD).   

是以region B的switch-5的port 0/0/26為Alternate port(DIS).

下面是顯示的結果:

Switch-7-3900

#show spanning-tree mst 

MST Mode MSTP 

MST Instance 00         vlans mapped:  1-199,301-4094

 Bridge                address 0001.7a58.bdf8 priority 32768

 Region root           address 0001.7a4f.4a07 priority 32768

                        root: 32789, rpc: 200000, epc: 200000, hop: 19

 Operational  hello time 2, forward time 15, max age 20

 Configured   hello time 2, forward time 15, max age 20, max hops 20, hold count 6

 Flap guard : admin false, max count 5, detect period 10s, recovery period 30s

                Port  Role  Sts      Cost  Prio.Nbr Type                      

-------------------- ----- ---- --------- --------- --------------------------

port 0/0/20           Root  FWD    200000    128.021 P2P 

port 0/0/21           Alte  DIS    200000    128.022 P2P 

port 0/0/22           Desg  FWD     20000    128.023 P2P

MST Instance 01         vlans mapped:  200-300

 Bridge ID             address 0001.7a58.bdf8 priority 32769/32768

 Designated root       address 0001.7a4f.4a07 priority 12289

                        root: 32789, rpc: 200000, hop: 19

Switch-6-3400

 Bridge                address 0001.7a4f.4a07 priority 32768

                        root: 32774, rpc: 0, epc: 200000, hop: 20

 Configured   hello time 2, forward time 15, max age 20, max hops: 20

port 0/0              Desg  FWD    200000    128.01 P2P 

port 0/1              Desg  FWD    200000    128.02 P2P 

port 0/5              Root  FWD    200000    128.06 P2P

 Bridge ID             address 0001.7a4f.4a07 priority 12289/12288

                        root: 0, rpc: 0, hop: 20

port 0/5              Mast  FWD    200000    128.06 P2P

swtich-5-4100

 Bridge                address 0022.1512.070c priority 32768

 Region root           address 0001.7a58.0037 priority 32768

                        root: 32793, rpc: 200000, epc: 200000, hop: 19

port 0/0/24           Root  FWD    200000    128.25 P2P 

port 0/0/25           Alte  DIS    200000    128.26 P2P 

port 0/0/26           Alte  DIS     20000    128.27 P2P 

 Bridge ID             address 0022.1512.070c priority 8193/8192

 Designated root       address 0022.1512.070c priority 8193

port 0/0/24           Desg  FWD    200000    128.25 P2P 

port 0/0/25           Desg  FWD    200000    128.26 P2P 

port 0/0/26           Alte  DIS     20000    128.27 P2P

Switch-4-3400

 Bridge                address 0001.7a58.0037 priority 32768

port 0/2              Desg  FWD    200000    128.03 P2P 

 Bridge ID             address 0001.7a58.0037 priority 32769/32768

                        root: 32770, rpc: 200000, hop: 19

port 0/1              Root  FWD    200000    128.02 P2P 

port 0/2              Alte  DIS    200000    128.03 P2P 

最後形成了下面的CIST樹:

<a href="http://361531.blog.51cto.com/attachment/201312/13/351531_138694701747S6.png"></a>

下面再來做一個簡單的實驗,現在假設客戶的需求是,CIST block的端口是Region C的switch-6的port0/5.

對于這個需求,實際上,最簡單的做法就是把Region C裡面的switch-6 port 0/5接口下面把cost修改為一個無窮大的耗費…這樣最終一定是這個接口給discarding掉。

下面,我在regionC的switch-6 port0/5下面進行下面的配置:(cost值是在端口的入方向生效)

<a href="http://361531.blog.51cto.com/attachment/201312/13/351531_1386947029uLoP.png"></a>

在Region C的switch-6 port 0/5的配置如下:

port 0/5

 port-type nni

 port mode trunk

 port trunk allowed vlan all

 port trunk pvid vlan 1

spanning-tree mst instance 0 cost 150000000

這樣一來,Region C一共有兩條鍊路通往總根switch-1,一條是直連的switch-6 port 0/5上聯,另外一條鍊路是switch-7 port 0/0/22連接配接Region B的鍊路。

但是switch-6的port 0/5上聯cost無窮大,是以該鍊路是最次鍊路,所有其他鍊路到總跟的和都不會有該鍊路的cost大,是以switch-6的port 0/5理應被block掉,角色為alternate port. 狀态是DIsccarding的。

在說Region C的switch-7, port 0/0/22那條鍊路是到總跟最短的鍊路,是以該接口的角色應該是Master 口 for instance 1, 對于Region B來說,switch-4 port 0/5到總跟switch-1的鍊路耗費22W,而交換機 switch-5 port0/0/26到總根swtich-1的耗費為2W+20W+1.5Y~~~~

最終switch-5的port 0/0/25實際角色應該是NDP. 但是狀态依然是FWD的狀态.

對于Instance 0-來說,所有的選舉和IST内部選舉一樣,是以角色的指令不會攜帶Master這樣的角色. .

好了,下面來看看結果是否和下圖一緻:

<a href="http://361531.blog.51cto.com/attachment/201312/13/351531_1386947043PFfS.png"></a>

Swtich-2-3900

 Bridge                address 0001.7a58.ebe8 priority 32768

 Region root           address 0001.7a58.f2d0 priority 4096

                        root: 32789, rpc: 20000, epc: 0, hop: 19

port 0/0/20           Root  FWD     20000    128.021 P2P 

port 0/0/21           Alte  DIS     20000    128.022 P2P 

port 0/0/22           Desg  FWD    200000    128.023 P2P 

 Bridge ID             address 0001.7a58.ebe8 priority 20481/20480

 Designated root       address 0001.7a58.f2d0 priority 4097

                        root: 32789, rpc: 20000, hop: 19

port 0/0/21           Desg  FWD     20000    128.022 P2P 

port 0/0/22           Desg  FWD    200000    128.023 P2P

Switch-3-3900

 Bridge                address 0001.7a58.be0c priority 32768

                        root: 32790, rpc: 20000, epc: 0, hop: 19

port 0/0/20           Desg  FWD     20000    128.021 P2P 

port 0/0/21           Root  FWD     20000    128.022 P2P 

 Bridge ID             address 0001.7a58.be0c priority 32769/32768

                        root: 32790, rpc: 20000, hop: 19

port 0/0/20           Alte  DIS     20000    128.021 P2P 

#show spanning-tree mst  

port 0/5              Root  FWD    200000    128.06 P2P 

Swtich-5-4100

port 0/0/26           Desg  FWD     20000    128.27 P2P 

port 0/0/26           Desg  FWD     20000    128.27 P2P

 Region root           address 0001.7a58.bdf8 priority 32768

                        root: 32791, rpc: 0, epc: 220000, hop: 20

port 0/0/20           Desg  FWD    200000    128.021 P2P 

port 0/0/21           Desg  FWD    200000    128.022 P2P 

port 0/0/22           Root  FWD     20000    128.023 P2P 

port 0/0/22           Mast  FWD     20000    128.023 P2P

重頭戲來了,Region C的switch-6:

                        root: 32769, rpc: 200000, epc: 220000, hop: 19

port 0/0              Root  FWD    200000    128.01 P2P 

port 0/1              Alte  DIS    200000    128.02 P2P 

port 0/5              Alte  DIS 150000000    128.06 P2P 

port 0/5              Alte  DIS    200000    128.06 P2P

<a href="http://down.51cto.com/data/2363865" target="_blank">附件:http://down.51cto.com/data/2363865</a>

本文轉自 hny2000 51CTO部落格,原文連結:http://blog.51cto.com/361531/1340467

繼續閱讀