目錄

簡介

開始之前

慣例

必要條件

採用元件

中繼之間的VLAN負載平衡簡介

STP如何決定阻塞哪個埠

在執行CatOS的Catalyst交換器上設定VLAN負載平衡

portvlanpri命令的詳細資訊

在執行整合IOS的Catalyst交換器上設定VLAN負載平衡

port-priority和vlan port-priority命令的詳細資訊

結論

相關資訊

簡介

本檔案將提供主幹之間VLAN負載平衡的理論，以及執行CatOS和整合IOS的交換器的組態範例。

開始之前

慣例

如需文件慣例的詳細資訊，請參閱思科技術提示慣例。

必要條件

本文件沒有特定先決條件。

採用元件

本文件所述內容不限於特定軟體和硬體版本。

中繼之間的VLAN負載平衡簡介

執行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操作簡要說明後實現這樣的配置。

STP如何決定阻塞哪個埠

STA工作方式的詳細描述不在本檔案的範圍之內。不過，本章簡要總結了該演算法如何決定埠阻塞還是轉發。它側重於僅使用一個VLAN的最簡單配置；Catalyst R是此VLAN中的根網橋，並且Catalyst D具有到Catalyst R的多個冗餘連線。Catalyst D會阻塞其到Catalyst R的所有埠，但阻塞其根埠。Catalyst D如何選擇其根埠？跨鏈路運行STA的網橋交換網橋協定資料單元(BPDU)，這些BPDU可以根據其內容進行嚴格分類。如果BPDU具有以下特性，則它優於另一個：

1. 較低的根網橋ID。

2. 到根的路徑開銷更低。

3. 較低的傳送網橋ID。

4. 較低的傳送埠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上的埠優先順序。

在執行CatOS的Catalyst交換器上設定VLAN負載平衡

實驗圖

顯示Catalyst R上的當前STP狀態

以下是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上的當前STP狀態

在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)

調整Catalyst R上的連線埠優先順序

您將降低埠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)

檢查Catalyst R上的結果

您可以檢查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上的結果

在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)

portvlanpri命令的詳細資訊

每個主幹的連線埠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交換器上設定VLAN負載平衡

註：此組態範例適用於執行IOS的交換器 — Catalyst 2900/3500XL、Catalyst 2950、Catalyst 3550、Catalyst 4000 Supervisor III/IV和Catalyst 6000。

實驗圖

顯示Catalyst R上的當前STP狀態

以下是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上的當前STP狀態

在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

調整Catalyst R上的連線埠優先順序

您將降低埠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#

檢查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上的結果

在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

port-priority和vlan port-priority命令的詳細資訊

定義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），而不是本檔案所述的組態。

相關資訊

- 生成樹通訊協定支援頁面

- 交換器產品支援

- LAN 交換技術支援

- 技術支援與文件 - Cisco Systems