分散型シスコ エクスプレス フォワーディングおよび CEF トラフィック用のロードバランシングスキーム
ここでは、分散型シスコ エクスプレス フォワーディング(CEF)および CEF トラフィック用のロードバランシングスキームについて説明します。
CEFトラフィック用のロードバランシングスキームの設定に関する制約事項
-
デバイスまたはデバイススタックメンバのロードバランシングを同じように、グローバルに設定する必要があります。
-
CEF トラフィックのパケットごとのロードバランシングはサポートされていません。
シスコ エクスプレス フォワーディングに関する情報
シスコ エクスプレス フォワーディング(CEF)は、ネットワーク パフォーマンスを最適化するために使用されるレイヤ 3 IP スイッチング技術です。CEF には高度な IP 検索および転送アルゴリズムが実装されているため、レイヤ 3 スイッチングのパフォーマンスを最大化できます。高速スイッチング ルート キャッシュよりも CPU にかかる負担が少ないため、CEF はより多くの CPU 処理能力をパケット転送に割り当てることができます。スイッチ スタックでは、ハードウェアによって distributed CEF(dCEF)が使用されます。動的なネットワークでは、ルーティングの変更によって、高速スイッチング キャッシュ エントリが頻繁に無効になります。高速スイッチング キャッシュ エントリが無効になると、トラフィックがルート キャッシュによって高速スイッチングされずに、ルーティング テーブルによってプロセス スイッチングされることがあります。CEF および dCEF は転送情報ベース(FIB)検索テーブルを使用して、宛先ベースの IP パケット スイッチングを実行します。
CEF および dCEF での 2 つの主要なコンポーネントは、分散 FIB と分散隣接テーブルです。
-
FIB はルーティング テーブルや情報ベースと同様、IP ルーティング テーブルに転送情報のミラー イメージが保持されます。ネットワーク内でルーティングまたはトポロジが変更されると、IP ルーティング テーブルがアップデートされ、これらの変更が FIB に反映されます。FIB には、IP ルーティング テーブル内の情報に基づいて、ネクストホップのアドレス情報が保持されます。FIB にはルーティング テーブル内の既知のルートがすべて格納されているため、CEF はルート キャッシュをメンテナンスする必要がなく、トラフィックのスイッチングがより効率化され、トラフィック パターンの影響も受けません。
-
リンク層上でネットワーク内のノードが 1 ホップで相互に到達可能な場合、これらのノードは隣接関係にあると見なされます。CEF は隣接テーブルを使用し、レイヤ 2 アドレッシング情報を付加します。隣接テーブルには、すべての FIB エントリに対する、レイヤ 2 のネクストホップのアドレスが保持されます。
スイッチまたはスイッチスタックは、ギガビット速度の回線レート IP トラフィックを達成するため特定用途向け集積回路(ASIC)を使用しているので、CEF または dCEF 転送はソフトウェア転送パス(CPU により転送されるトラフィック)にだけ適用されます。
CEF ロード バランシングの概要
CEF のロードバランシングを行うと、トラフィックを複数のパスに分散することにより、リソースを最適化することができます。CEF のロードバランシングは、送信元と宛先のパケット情報の組み合わせに基づいて動作します。
ロードバランシングは宛先単位で設定できます。ロード バランシングの判断はアウトバウンド インターフェイス上で行われるため、ロード バランシングは、アウトバウンド インターフェイスで設定する必要があります。
CEF トラフィックに対する宛先別ロードバランシング
宛先単位のロードバランシングにより、デバイスは、複数のパスを使用して、複数の発信元と宛先ホストのペアにわたって負荷を共有することができます。指定された発信元と宛先ホストのペアは、複数のパスを使用可能な場合であっても、同じパスを使用することが保証されています。異なるペアを宛先とするトラフィック ストリームは、異なるパスを使用します。
CEF がイネーブルの場合、宛先別ロード バランシングはデフォルトでイネーブルです。CEF をイネーブルにした場合、宛先単位のロードバランシングを使用するための追加タスクはありません。多くの状況では、ロード バランシングの方法として宛先単位を使用します。
宛先単位のロード バランシングはトラフィックの統計的な分散に依存しているため、発信元と宛先ホストのペア数が増大すると、ロード シェアリングがさらに有効になります。
宛先単位のロード バランシングを使用することにより、個々のホスト ペアのパケットが順に到達することが保証されます。特定のホスト ペアに宛てられたすべてのパケットは、(複数の場合も)同じリンクを介して転送されます。
CEF トラフィックに対するロード バランシング アルゴリズム
CEF トラフィックで使用するために、次のロード バランシング アルゴリズムが用意されています。ロード バランシング アルゴリズムは、ip cef load-sharing algorithm コマンドで選択します。
-
オリジナルアルゴリズム:オリジナルのロード バランシング アルゴリズムでは、すべてのデバイスで同じアルゴリズムが使用されるため、複数のデバイスにわたるロードシェアリングで歪みが発生します。ネットワーク環境に応じて、アルゴリズムを選択する必要があります。
-
ユニバーサルアルゴリズム:ユニバーサル ロード バランシング アルゴリズムでは、ネットワーク上の各デバイスは、発信元と宛先の各アドレスペアに対して異なるロードシェアリングの判断を行うことができます。これにより、ロードシェアリングの不均衡が解決されます。デバイスは、デフォルトではユニバーサル ロード シェアリングを実行するよう設定されています。
シスコ エクスプレス フォワーディングの設定方法
デフォルトで、CEF または dCEF はグローバルにイネーブルに設定されています。何らかの理由でこれが無効になった場合は、ip cef または ip cef distributed グローバル コンフィギュレーション コマンドを使用し、再度有効に設定できます。
手順
コマンドまたはアクション | 目的 | |||
---|---|---|---|---|
ステップ 1 |
configure terminal 例:
|
グローバル コンフィギュレーション モードを開始します。 |
||
ステップ 2 |
ip cef 例:
|
非スタッキング スイッチで CEF の動作をイネーブルにします。 ステップ 4 に進みます。 |
||
ステップ 3 |
ip cef distributed 例:
|
アクティブ スイッチで CEF の動作をイネーブルにします。 |
||
ステップ 4 |
interface interface-id 例:
|
インターフェイス コンフィギュレーション モードを開始し、設定するレイヤ 3 インターフェイスを指定します。 |
||
ステップ 5 |
ip route-cache cef 例:
|
ソフトウェア転送トラフィック用のインターフェイスで CEF をイネーブルにします。
|
||
ステップ 6 |
end 例:
|
特権 EXEC モードに戻ります。 |
||
ステップ 7 |
show ip cef 例:
|
すべてのインターフェイスの CEF ステータスを表示します。 |
||
ステップ 8 |
show cef linecard [detail] 例:
|
(任意)非スタッキング スイッチの CEF 関連インターフェイス情報を表示します。 |
||
ステップ 9 |
show cef linecard [slot-number] [detail] 例:
|
(任意)スタック内のすべてのスイッチ、または指定されたスイッチに対して、スイッチの CEF 関連インターフェイス情報をスタック メンバ別に表示します。 (任意)slot-number には、スタック メンバーのスイッチ番号を入力します。 |
||
ステップ 10 |
show cef interface [interface-id] 例:
|
すべてのインターフェイスまたは指定されたインターフェイスの詳細な CEF 情報を表示します。 |
||
ステップ 11 |
show adjacency 例:
|
CEF の隣接テーブル情報を表示します。 |
||
ステップ 12 |
copy running-config startup-config 例:
|
(任意)コンフィギュレーション ファイルに設定を保存します。 |
CEF トラフィックに対するロードバランシングの設定方法
ここでは、CEF トラフィックに対するロードバランシングの設定について説明します。
CEF の宛先別ロードバランシングの有効化または無効化
CEF の宛先単位のロードバランシングを有効または無効にするには、次の手順を実行します。
手順
コマンドまたはアクション | 目的 | |
---|---|---|
ステップ 1 |
enable 例:
|
グローバル コンフィギュレーション モードを開始します。 |
ステップ 2 |
configure terminal 例:
|
グローバル コンフィギュレーション モードを開始します。 |
ステップ 3 |
interface interface-id 例:
|
インターフェイス コンフィギュレーション モードを開始し、設定するレイヤ 3 インターフェイスを指定します。 |
ステップ 4 |
[no] ip load-sharing per-destination 例:
|
インターフェイスで CEF の宛先別ロードバランシングを有効にします。 no ip load-sharing per-destination コマンドを使用すると、インターフェイスで CEF の宛先別ロードバランシングが無効になります。 |
ステップ 5 |
end 例:
|
インターフェイス コンフィギュレーション モードを終了し、特権 EXEC モードに戻ります。 |
CEF トラフィックに対するトンネル ロードバランシング アルゴリズムの選択
ネットワーク環境に少数の発信元と宛先のペアしか存在しない場合には、トンネル アルゴリズムを選択します。デバイスは、デフォルトではユニバーサル ロード シェアリングを実行するよう設定されています。
CEF トラフィック用にトンネル ロード バランシング アルゴリズムを選択するには、次の手順を実行します。
手順
コマンドまたはアクション | 目的 | |
---|---|---|
ステップ 1 |
enable 例:
|
グローバル コンフィギュレーション モードを開始します。 |
ステップ 2 |
configure terminal 例:
|
グローバル コンフィギュレーション モードを開始します。 |
ステップ 3 |
ip cef load-sharing algorithm {original | universal [id] } 例:
|
CEF のロードバランシング アルゴリズムを選択します。
|
ステップ 4 |
end 例:
|
特権 EXEC モードに戻ります。 |
例:CEF の宛先別ロードバランシングの有効化または無効化
CEF がイネーブルの場合、宛先別ロード バランシングはデフォルトでイネーブルです。次の例は、宛先単位のロード バランシングをディセーブルにする方法を示しています。
Device> enable
Device# configure terminal
Device(config)# interface Ethernet1/0/1
Device(config-if)# no ip load-sharing per-destination
Device(config-if)# end