本檔案將提供主幹之間VLAN負載平衡的理論,以及執行CatOS和整合IOS的交換器的組態範例。
如需文件慣例的詳細資訊,請參閱思科技術提示慣例。
本文件沒有特定先決條件。
本文件所述內容不限於特定軟體和硬體版本。
執行CatOS和整合IOS的Catalyst 4000、5000和6000系列提供本文中使用的命令。本文的理論部分與生成樹協定(STP)相關,並且與平台無關。
下圖1所示的配置(其中兩台交換機通過多個中繼直接連線)非常常見,用於冗餘目的。如果兩條鏈路之一發生故障,第二條鏈路很快可用於傳輸流量。當兩條連結均開啟時,跨距樹狀目錄演演算法(STA)會停用其中一條連結,以避免兩台交換器之間的橋接回圈。
在上面圖1的配置中,如果兩條快速乙太網中繼連結Catalyst R和Catalyst D,則STP會為所配置的所有VLAN選擇相同的阻塞埠。在此案例中,Catalyst R是根網橋,Catalyst D決定為VLAN 1和VLAN 2阻塞埠D2。此設計的主要問題是鏈路R2-D2被簡單地丟棄,並且兩台交換機之間只有100 Mb/s可用。要利用兩條鏈路,您可以更改配置並僅允許鏈路R1-D1上的VLAN 1,以及僅允許鏈路R2-D2上的VLAN 2。
如圖2所示,生成的網路丟失了冗餘。現在,兩條鏈路可同時轉發,而且實際上兩台交換機之間可以使用200 Mb/s。但是,如果一條鏈路發生故障,就會完全斷開一個VLAN的連線。理想的解決方案如圖3所示:
在圖3中,您保留兩台交換機之間的中繼,但埠D1阻塞了VLAN 1並轉發了VLAN 2;埠D2阻塞VLAN 2並轉發VLAN 1。此設計保留了圖1和圖2的最佳功能:
兩條鏈路都是轉發鏈路,在兩台交換機之間提供200 Mb/s的聚合連線。
如果一條鏈路發生故障,其餘一條鏈路將解除對應VLAN的阻塞,並在交換機之間保持兩個VLAN的連線。
本文說明如何在STP操作簡要說明後實現這樣的配置。
STA工作方式的詳細描述不在本檔案的範圍之內。不過,本章簡要總結了該演算法如何決定埠阻塞還是轉發。它側重於僅使用一個VLAN的最簡單配置;Catalyst R是此VLAN中的根網橋,並且Catalyst D具有到Catalyst R的多個冗餘連線。Catalyst D會阻塞其到Catalyst R的所有埠,但阻塞其根埠。Catalyst D如何選擇其根埠?跨鏈路運行STA的網橋交換網橋協定資料單元(BPDU),這些BPDU可以根據其內容進行嚴格分類。如果BPDU具有以下特性,則它優於另一個:
較低的根網橋ID。
到根的路徑開銷更低。
較低的傳送網橋ID。
較低的傳送埠ID。
按順序檢查這四個引數,即,如果在您比較的兩個BPDU中引數1相同,則您只關注引數2。在Catalyst D上被選為根埠的埠是接收最佳BPDU的埠。
在此特定情況下(圖4),Catalyst R傳送的所有BPDU具有相同的根網橋ID、到達根的相同路徑開銷和相同的傳送網橋ID。唯一剩下的選擇最佳引數的引數是傳送埠ID。傳送埠ID是一個16位引數,分為兩個欄位:埠優先順序和埠索引。連線埠優先順序的預設值為32,且連線埠索引對交換器上的每個連線埠都是唯一的。
連線埠優先順序 | 連線埠索引 | |
---|---|---|
大小(以位為單位) | 6 | 10 |
預設值 | 32 | 固定唯一值 |
圖4表示BPDU中的埠ID引數。在這種情況下,Catalyst D選擇埠D1作為其根埠,因為埠索引R2不如R1。如果希望D2最終轉發,需要強制它作為根埠。實現此目標的唯一方法是降低R2埠優先順序值(或增加R1埠優先順序值)。 這是圖5中執行的操作。
為了在兩個中繼之間實現負載平衡,您需要根據VLAN調整Catalyst R上的埠優先順序。
以下是Catalyst R上的當前STP狀態。它是VLAN 1和2的根,因此其所有埠都在轉發。
Catalyst_R> (enable) show spantree 3/1 Port Vlan Port-State Cost Priority Portfast Channel_id ------------------------ ---- ------------- ----- -------- ---------- ---------- 3/1 1 forwarding 19 32 disabled 0 3/1 2 forwarding 19 32 disabled 0 Catalyst_R> (enable) show spantree 3/2 Port Vlan Port-State Cost Priority Portfast Channel_id ------------------------ ---- ------------- ----- -------- ---------- ---------- 3/2 1 forwarding 19 32 disabled 0 3/2 2 forwarding 19 32 disabled 0 Catalyst_R> (enable)
在Catalyst D上,如預期的那樣,連線埠5/2會被VLAN 1和2封鎖。
Catalyst_D> (enable) show spantree 5/1 Port Vlan Port-State Cost Priority Fast-Start Group-Method --------- ---- ------------- ----- -------- ---------- ------------ 5/1 1 forwarding 19 32 disabled 5/1 2 forwarding 19 32 disabled Catalyst_D> (enable) show spantree 5/2 Port Vlan Port-State Cost Priority Fast-Start Group-Method --------- ---- ------------- ----- -------- ---------- ------------ 5/2 1 blocking 19 32 disabled 5/2 2 blocking 19 32 disabled Catalyst_D> (enable)
您將降低埠3/2上VLAN 1的埠優先順序值。這樣,Catalyst D上相應的埠5/2收到的BPDU比埠5/1上傳送的BPDU要好(埠優先順序值仍為32)。
Catalyst_R> (enable) set spantree portvlanpri 3/2 16 1 Port 3/2 vlans 1 using portpri 16. Port 3/2 vlans 2-1004 using portpri 32. Port 3/2 vlans 1005 using portpri 4. Catalyst_R> (enable)
您可以檢查VLAN 1的連線埠優先順序值是否已變更:
Catalyst_R> (enable) show spantree 3/1 Port Vlan Port-State Cost Priority Portfast Channel_id ------------------------ ---- ------------- ----- -------- ---------- ---------- 3/1 1 forwarding 19 32 disabled 0 3/1 2 forwarding 19 32 disabled 0 Catalyst_R> (enable) show spantree 3/2 Port Vlan Port-State Cost Priority Portfast Channel_id ------------------------ ---- ------------- ----- -------- ---------- ---------- 3/2 1 forwarding 19 16 disabled 0 3/2 2 forwarding 19 32 disabled 0 Catalyst_R> (enable)
在Catalyst D上您可以看到,對於VLAN 1,連線埠5/1現在阻塞,而連線埠5/2正在轉送,一如預期。
Catalyst_D> (enable) show spantree 5/1 Port Vlan Port-State Cost Priority Fast-Start Group-Method --------- ---- ------------- ----- -------- ---------- ------------ 5/1 1 blocking 19 32 disabled 5/1 2 forwarding 19 32 disabled Catalyst_D> (enable) show spantree 5/2 Port Vlan Port-State Cost Priority Fast-Start Group-Method --------- ---- ------------- ----- -------- ---------- ------------ 5/2 1 forwarding 19 32 disabled 5/2 2 blocking 19 32 disabled Catalyst_D> (enable)
每個主幹的連線埠VLAN優先順序只有兩個可能的值,且只能使用portvlanpri命令設定其中一個。這表示在指定的主幹上,有兩組VLAN:
具有「全域」連線埠優先順序值(預設為32)的。
具有使用portvlanpri命令輸入的「自定義」值的值。
一個例子說明了這一點。請考慮在範例中新增第三個VLAN。預設情況下,此VLAN屬於具有全域連線埠優先順序值的群組(預設值為32)。
Catalyst_R> (enable) set vlan 3 Vlan 3 configuration successful Catalyst_R> (enable) show spantree 3/2 Port Vlan Port-State Cost Priority Portfast Channel_id ------------------------ ---- ------------- ----- -------- ---------- ---------- 3/2 1 forwarding 19 16 disabled 0 3/2 2 forwarding 19 32 disabled 0 3/2 3 forwarding 19 32 disabled 0 Catalyst_R> (enable)
使用set spantree portpri 命令更改埠的全域性優先順序:
Catalyst_R> (enable) set spantree portpri 3/2 48 Bridge port 3/2 port priority set to 48. Catalyst_R> (enable) show spantree 3/2 Port Vlan Port-State Cost Priority Portfast Channel_id ------------------------ ---- ------------- ----- -------- ---------- ---------- 3/2 1 forwarding 19 16 disabled 0 3/2 2 forwarding 19 48 disabled 0 3/2 3 forwarding 19 48 disabled 0 Catalyst_R> (enable)
請注意,屬於「全域性」組的所有VLAN的優先順序均更改為48。現在將VLAN 3分配給另一個「自定義」的VLAN組,使用portvlanpri 命令為其賦值8:
Catalyst_R> (enable) set spantree portvlanpri 3/2 8 3 Port 3/2 vlans 1,3 using portpri 8. Port 3/2 vlans 2,4-1004 using portpri 48. Port 3/2 vlans 1005 using portpri 4. Catalyst_R> (enable) show spantree 3/2 Port Vlan Port-State Cost Priority Portfast Channel_id ------------------------ ---- ------------- ----- -------- ---------- ---------- 3/2 1 forwarding 19 8 disabled 0 3/2 2 forwarding 19 48 disabled 0 3/2 3 forwarding 19 8 disabled 0 Catalyst_R> (enable)
請注意,「自定義」組中的所有VLAN都已將其優先順序更改為8,而不僅僅是VLAN 3。要將VLAN 3放回預設組,請使用clear spantree portvlanpri 命令:
Catalyst_R> (enable) clear spantree portvlanpri 3/2 3 Port 3/2 vlans 1 using portpri 8. Port 3/2 vlans 2-1004 using portpri 48. Port 3/2 vlans 1005 using portpri 4. Catalyst_R> (enable) show spantree 3/2 Port Vlan Port-State Cost Priority Portfast Channel_id ------------------------ ---- ------------- ----- -------- ---------- ---------- 3/2 1 forwarding 19 8 disabled 0 3/2 2 forwarding 19 48 disabled 0 3/2 3 forwarding 19 48 disabled 0 Catalyst_R> (enable)
此命令有最後一個限制。分配給「global」組的值必須高於「custom」組上配置的值。
Catalyst_R> (enable) set spantree portvlanpri 3/2 62 3 Portvlanpri must be less than portpri. Portpri for 3/2 is 48.
總結一下:
「全域性」組 | 「自定義」組 |
---|---|
預設情況下,所有VLAN都屬於此組。 | 使用set spantree portvlanpri命令選擇的VLAN屬於此組。 |
這些VLAN的優先順序是使用set spantree port priority命令設定的。 | 所有這些VLAN的優先順序值都由set spantree portvlanpri命令設定。 |
為「global」組配置的優先順序值必須高於為「custom」組配置的優先順序值。 | clear spantree portvlanpri允許您將VLAN從該組放回另一個組。 |
註:此組態範例適用於執行IOS的交換器 — Catalyst 2900/3500XL、Catalyst 2950、Catalyst 3550、Catalyst 4000 Supervisor III/IV和Catalyst 6000。
以下是Catalyst R上的當前STP狀態。它是VLAN 1和2的根,因此其所有埠都在轉發。
Catalyst_R#show spanning-tree interface FastEthernet 3/1 Vlan Role Sts Cost Prio.Nbr Type ---------------- ---- --- --------- -------- -------------------------------- VLAN0001 Desg FWD 19 128.129 P2p VLAN0002 Desg FWD 19 128.129 P2p Catalyst_R#show spanning-tree interface FastEthernet 3/2 Vlan Role Sts Cost Prio.Nbr Type ---------------- ---- --- --------- -------- -------------------------------- VLAN0001 Desg FWD 19 128.130 P2p VLAN0002 Desg FWD 19 128.130 P2p
在Catalyst D上,如預期的那樣,連線埠5/2會被VLAN 1和2封鎖。
Catalyst_D#show spanning-tree interface FastEthernet 5/1 Vlan Role Sts Cost Prio.Nbr Type ---------------- ---- --- --------- -------- -------------------------------- VLAN0001 Root FWD 19 128.129 P2p VLAN0002 Root FWD 19 128.129 P2p Catalyst_D#show spanning-tree interface FastEthernet 5/2 Vlan Role Sts Cost Prio.Nbr Type ---------------- ---- --- --------- -------- -------------------------------- VLAN0001 Altn BLK 19 128.130 P2p VLAN0002 Altn BLK 19 128.130 P2p
您將降低埠3/2上VLAN 1的埠優先順序值。這樣,Catalyst D上相應的埠5/2收到的BPDU比埠5/1上傳送的BPDU要好(埠優先順序值仍為128)。
Catalyst_R#config terminal Catalyst_R(config)#interface FastEthernet 3/2 Catalyst_R(config-if)#spanning-tree vlan 1 port-priority 64 Catalyst_R(config-if)#end Catalyst_R#
您可以檢查VLAN 1的連線埠優先順序值是否已變更:
Catalyst_R#show spanning-tree interface FastEthernet 3/1 Vlan Role Sts Cost Prio.Nbr Type ---------------- ---- --- --------- -------- -------------------------------- VLAN0001 Desg FWD 19 128.129 P2p VLAN0002 Desg FWD 19 128.129 P2p Catalyst_R#show spanning-tree interface FastEthernet 3/2 Vlan Role Sts Cost Prio.Nbr Type ---------------- ---- --- --------- -------- -------------------------------- VLAN0001 Desg FWD 19 64.130 P2p VLAN0002 Desg FWD 19 128.130 P2p
在Catalyst D上您可以看到,對於VLAN 1,連線埠5/1現在阻塞,而連線埠5/2正在轉送,一如預期。
Catalyst_D#show spanning-tree interface FastEthernet 5/1 Vlan Role Sts Cost Prio.Nbr Type ---------------- ---- --- --------- -------- -------------------------------- VLAN0001 Altn BLK 19 128.129 P2p VLAN0002 Root FWD 19 128.129 P2p Catalyst_D#show spanning-tree interface FastEthernet 5/2 Vlan Role Sts Cost Prio.Nbr Type ---------------- ---- --- --------- -------- -------------------------------- VLAN0001 Root FWD 19 128.130 P2p VLAN0002 Altn BLK 19 128.130 P2p
定義VLAN連線埠優先順序的方法有兩種:
port-priority 命令可修改每個介面的「全域」連線埠優先順序值(預設為128)
「每個VLAN」埠優先順序值,可以通過VLAN port-priority命令為每個介面和每個VLAN修改
一個例子說明了這一點。請考慮在本範例中新增第三個VLAN。預設情況下,此VLAN屬於具有全域連線埠優先順序值的群組(預設值為128)。
Catalyst_R#show spanning-tree interface FastEthernet 3/2 Vlan Role Sts Cost Prio.Nbr Type ---------------- ---- --- --------- -------- -------------------------------- VLAN0001 Desg FWD 19 64.130 P2p VLAN0002 Desg FWD 19 128.130 P2p VLAN0003 Desg FWD 19 128.130 P2p
使用spanning-tree port-priority 介面配置命令更改埠的全域性優先順序:
Catalyst_R(config)#interface FastEthernet 3/2 Catalyst_R(config-if)#spanning-tree port-priority 160 Catalyst_R# Catalyst_R#show spanning-tree interface FastEthernet 3/2 Vlan Role Sts Cost Prio.Nbr Type ---------------- ---- --- --------- -------- -------------------------------- VLAN0001 Desg FWD 19 64.130 P2p VLAN0002 Desg FWD 19 160.130 P2p VLAN0003 Desg FWD 19 160.130 P2p
請注意,屬於「全域性」組的所有VLAN的優先順序均更改為160。現在使用spanning-tree vlan port-priority 介面命令將VLAN 3分配其自己的優先順序48:
Catalyst_R(config)#interface FastEthernet 3/2 Catalyst_R(config-if)#spanning-tree vlan 3 port-priority 48 Catalyst_R# Catalyst_R#show spanning-tree interface FastEthernet 3/2 Vlan Role Sts Cost Prio.Nbr Type ---------------- ---- --- --------- -------- -------------------------------- VLAN0001 Desg FWD 19 64.130 P2p VLAN0002 Desg FWD 19 160.130 P2p VLAN0003 Desg FWD 19 48.130 P2p
請注意,只有VLAN 3將其優先順序更改為48。要將VLAN 3放回預設組,請使用no spanning-tree vlan port-priority 介面命令:
Catalyst_R(config)#interface FastEthernet 3/2 Catalyst_R(config-if)#no spanning-tree vlan 3 port-priority Catalyst_R# Catalyst_R#show spanning-tree interface FastEthernet 3/2 Vlan Role Sts Cost Prio.Nbr Type ---------------- ---- --- --------- -------- -------------------------------- VLAN0001 Desg FWD 19 64.130 P2p VLAN0002 Desg FWD 19 160.130 P2p VLAN0003 Desg FWD 19 160.130 P2p
剛剛完成的VLAN負載均衡配置可最佳化兩個Catalyst之間冗餘中繼的使用。
保留預設STP值會導致兩個Catalyst之間的所有冗餘鏈路最終處於阻塞模式。通過調整STP優先順序,可以為不同的VLAN同時使用多條鏈路。這會增加兩台裝置之間的整體可用頻寬。如果鏈路發生故障,STP會在重新收斂時將這些VLAN重新分配給其餘的中繼。
此設計剩下的唯一缺點是,它只能在VLAN的基礎上對流量進行負載均衡。如果在上一個範例中,您有130 Mb/s流量流經VLAN 1,而VLAN 2上只有10 Mb/s流量,則您仍會丟棄VLAN 1上的封包,即使您在Catalyst R和Catalyst D之間理論上有200 Mb/s的封包。EtherChannel功能可解決此問題,它以資料包為單位提供多個鏈路之間的負載均衡。如果您的硬體支援此功能,請使用FastEtherchannel(或GigabitEtherChannel),而不是本檔案所述的組態。
修訂 | 發佈日期 | 意見 |
---|---|---|
1.0 |
02-Dec-2013 |
初始版本 |