このドキュメントでは、トランク間の VLAN ロード バランシングの背景理論を説明し、CatOS と統合 IOS が稼働しているスイッチの設定例を紹介します。
ドキュメント表記の詳細は、『シスコ テクニカル ティップスの表記法』を参照してください。
このドキュメントに関しては個別の前提条件はありません。
このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。
この文書内で使用するコマンドは、CatOS が動作する Catalyst 4000、5000、および 6000 ファミリで使用します。この文書の理論に関するセクションは、Spanning-Tree Protocol(STP; スパニングツリー プロトコル)に関連しており、プラットフォームには依存しません。
次に示す図 1 では、2 つのスイッチが複数のトランクを経由して直接接続されていますが、これは冗長性を確保する場合によくある設定です。2 つのリンクのいずれかに障害が発生しても、もう 1 つのリンクを使用してトラフィックを伝送できます。両方のリンクが稼動している場合は、2 つのスイッチ間でブリッジ ループが発生するのを避けるために、Spanning-Tree Algorithm(STA; スパニングツリー アルゴリズム)によってどちらかのリンクが無効になります。
上の図 1 の設定では、Catalyst R と Catalyst D をリンクする 2 つのファーストイーサネット トランクを使用して、設定されたすべての VLAN に対して STP で同じブロッキング ポートが選択されています。この場合、Catalyst R がルート ブリッジとなり、VLAN 1 と VLAN 2 の両方に対して Catalyst D がポート D2 をブロックします。この設計の主な問題点は、リンク R2-D2 が犠牲となり、2 つのスイッチ間で 100 Mb/秒しか使用できないことです。両方のリンクを利用するには、VLAN 1 をリンク R1-D1 専用に、VLAN 2 をリンク R2-D2 専用にそれぞれ使用できるよう設定を変更します。
図 2 に示す変更後のネットワークでは、冗長性が失われています。これで、両方のリンクは同時にフォワーディングとなり、2 つのスイッチ間で 200 Mb/秒を実際に使用できるようになります。ただし、1 つのリンクに障害が発生すると、1 つの VLAN の接続性が完全に失われてしまいます。図 3 に、この問題の理想的な解決方法を示します。
図 3 では、2 つのスイッチ間のトランクは保持されていますが、ポート D1 は VLAN 1 をブロックし、VLAN 2 を転送します。ポートD2はVLAN 2をブロックし、VLAN 1を転送しています。この設計では、図1と図2の最善の機能を維持します。
両方のリンクがフォワーディングとなり、2 つのスイッチ間に 200 Mb/秒の接続性を提供します。
いずれかのリンクで障害が発生しても、残りのリンクが対応する VLAN のブロックを解除し、スイッチ間で両方の VLAN の接続性を維持します。
この文書では、STP 操作について簡単に触れた後で、このような設定のしかたを説明します。
STA の動作の詳細については、このドキュメントの対象外です。ただし、ここではポートがブロックするのか転送するのかを決定するアルゴリズムについて簡単に説明します。また、1 つの VLAN のみを使用する最も単純な設定に絞り込んで説明します。この VLAN では Catalyst R がルート ブリッジであり、Catalyst D から Catalyst R までは複数の冗長接続があります。Catalyst D は Catalyst R へのルート ポート以外のすべてのポートをブロックします。Catalyst D はルート ポートをどのように選択するのでしょうか。STA が動作するブリッジでは、リンク間で Bridge Protocol Data Unit(BPDU; ブリッジ プロトコル データ ユニット)が交換され、BPDU はその内容によって厳密に分類できます。ある BPDU は、次の場合に他の BPDU よりも優先されます。
ルート ブリッジ ID が低い。
ルートへのパス コストが低い。
発信元ブリッジ ID が低い。
発信元ポート ID が低い。
上記の 4 つのパラメータは順に評価されます。つまり、比較する 2 つの BPDU でパラメータ 1 が同じ場合は、パラメータ 2 のみが関係します。Catalyst D でルート ポートとして選択されたポートは、最優先BPDU を受信するポートになります。
このような場合、図 4 に示すように、Catalyst R によって送信されるすべての BPDU は、同じルート ブリッジ ID、ルートへの同じパス コスト、同じ発信元ブリッジ ID を持っています。このとき、残りのパラメータの中で最良の選択肢は発信元ポート ID のみです。発信元ポート ID は 16 ビットのパラメータで、ポート プライオリティとポート インデックスの 2 つのフィールドに分割されます。ポート プライオリティのデフォルト値は 32 で、ポート インデックスはスイッチ上のポートごとに固有の値になります。
ポートの優先度 | ポート インデックス | |
---|---|---|
ビット単位でのサイズ | 6 | 10 |
デフォルト値 | 32 | 固有の固定値 |
図 4 に、BPDU のポート ID パラメータを示します。この場合、ポートインデックスR2がR1より劣っているため、Catalyst DはポートD1をルートポートとして選択します。D2を最終的に転送するには、Rootポートとして強制的に使用する必要があります。この唯一の方法は、R2 のポート プライオリティ値を下げる(あるいは R1 のポート プライオリティ値を上げる)ことです。 図 5 に、この操作を示します。
次に、2 つのトランク間でロード バランシングを実現するために、Catalyst R で VLAN ごとにポート プライオリティを調整します。
次に、Catalyst R での現在の STP 状態を示します。これは、VLAN 1 と VLAN 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 では、VLAN 1 および 2 の両方に対してポート 5/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 で、ポート 5/1(ポート プライオリティ値は 32 のまま)で送信された BPDU よりも優先度の高い BPDU が受信されるようになります。
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> (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 のプライオリティには 2 つの値のみが設定可能で、そのうちの 1 つのみを portvlanpri コマンドで設定できます。これは、トランクに次の 2 組の VLAN のグループが存在することを意味します。
「グローバル」ポート プライオリティ値(デフォルト値は 32)を持つもの
portvlanpri コマンドで入力した「カスタム」値を持つもの
次に例を挙げて明確にします。前述の例に 3 つ目の 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のプライオリティが、VLAN 3だけでなく8に変更されていることに注目してください。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)
このコマンドには、もう 1 つ制約があり、「グローバル」グループに割り当てられた値は、「カスタム」グループに設定したものより大きくなければなりません。
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 コマンドで設定される。 |
「グローバル」グループに設定したプライオリティ値は、「カスタム」グループに設定したものより大きくなければならない。 | clear spantree portvlanpri コマンドを使用して、このグループから他のグループに VLAN を戻すことができる。 |
注:この設定例は、IOS(Catalyst 2900/3500XL、Catalyst 2950、Catalyst 3550、Catalyst 4000スーパーバイザIII/IV、およびCatalyst 6000を実行しているスイッチに適用されます。
次に、Catalyst R での現在の STP 状態を示します。これは、VLAN 1 と VLAN 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 では、VLAN 1 および 2 の両方に対してポート 5/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 で、ポート 5/1(ポート プライオリティ値は 128 のまま)で送信された BPDU よりも優先度の高い BPDU が受信されるようになります。
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#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 ポートのプライオリティを定義する方法には 2 種類あります。
「グローバル」ポート プライオリティ値(デフォルト値は 128)は、port-priority コマンドで、インターフェイスごとに変更できます。
「VLAN ごとの」のポート プライオリティ値は、VLAN port-priority コマンドで、インターフェイスごとに、および VLAN ごとに変更できます。
次に例を挙げて明確にします。次の例に 3 つ目の 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 ロード バランシングをこのように設定すると、2 つの Catalyst 間で冗長トランクの使用が最適化されます。
STP のデフォルト値を保持することにより、2 つの Catalyst 間の冗長リンクがすべてブロッキング モードになります。STP プライオリティを調整すると、異なる VLAN に対して複数のリンクを同時に使用することができます。これにより、2 つのデバイス間で使用できる全体の帯域幅が増加します。リンクで障害が発生すると、STP により、再コンバージの際に残りのトランクに VLAN が再度ディスパッチされます。
この設計に残された唯一の欠点は、トラフィックのロード バランシングを VLAN 単位でしか行えないことです。前記の例では、理論上は Catalyst R と Catalyst D の間で 200 Mbps のトラフィック フローを達成するはずですが、VLAN 1 のトラフィック フローは 130 Mbps で、VLAN 2 ではわずか 10 Mbps のトラフィックしかなく、VLAN 1 でパケットがドロップされています。このような場合は、EtherChanneling 機能を使用して、パケットごとに複数のリンク間のロード バランシングを行います。ハードウェアでサポートされている場合は、この文書で説明した設定ではなく FastEtherchannel(または GigabitEtherChannel)を使用してください。
改定 | 発行日 | コメント |
---|---|---|
1.0 |
02-Dec-2013 |
初版 |