はじめに
このドキュメントでは、ロードバランシングがルータソフトウェアおよびプラットフォームの機能でどのように機能するかについて説明します。
前提条件
要件
このドキュメントに関する固有の要件はありません。
使用するコンポーネント
このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
表記法
ドキュメントの表記法の詳細は、「シスコ テクニカル ティップスの表記法」を参照してください。
背景説明
ロードバランシングはCisco IOS®ルータソフトウェアの標準機能で、すべてのルータプラットフォームで使用できます。
これはルータでの転送プロセス固有の機能で、ルーティング テーブルに宛先への複数のパスがある場合に自動的に起動されます。
これは、次のような標準ルーティングプロトコルに基づいています
- Routing Information Protocol(RIP)
- RIPv2
- Enhanced Interior Gateway Routing Protocol(EIGRP)
- Open Shortest Path First(OSPF)
- Interior Gateway Routing Protocol(IGRP)
または、静的に設定されたルートとパケット転送メカニズムから取得されます。これにより、ルータではパケットを転送する際に宛先への複数のルートを使用できます。
ロード バランシング
ルータでは、複数のルーティング プロセス(あるいは RIP、RIPv2、IGRP、EIGRP、OSPF などのルーティング プロトコル)経由での特定のネットワークへの複数のルートのラーニングが行われると、ルーティング テーブル内でのアドミニストレーティブ ディスタンスが最短のルートがインストールされます。
詳細については、『Cisco ルータにおけるルートの選択』を参照してください。
場合によっては、ルータは同じルーティングプロセスを通じて学習された多くのルートの中から、同じアドミニストレーティブディスタンスを持つルートを選択する必要があります。この場合、ルータはその宛先へのコスト(またはメトリック)が最も低いパスを選択します。
各ルーティングプロセスではコストの計算方法が異なるため、ロードバランシングを実現するためにコストの操作が必要になる場合があります。
ルータが宛先までのアドミニストレーティブディスタンスとコストが同じ複数のパスを受信してインストールすると、ロードバランシングが発生する可能性があります。
使用されるパスの数は、ルーティング プロトコルによりルーティング テーブルに置かれたエントリの数により制限されます。
Cisco IOSでは、ほとんどのIPルーティングプロトコルで4つのエントリがデフォルトになっています。ただし、Border Gateway Protocol(BGP;ボーダーゲートウェイプロトコル)では、1つのエントリがデフォルトです。
6 つの異なるパスの設定が最大数になります。
IGRPおよびEIGRPルーティングプロセスでは、不等コストロードバランシングもサポートされています。IGRPおよびEIGRPでvarianceコマンドを使用すると、不等コストロードバランシングを実現できます。
プロトコルに対して設定された値に基づいてインストール可能なルートの数を判別するには、maximum-paths コマンドを発行します。
ルーティング テーブルを 1 エントリに設定すると、ロード バランシングはディセーブルになります。
バリアンスについての詳細は、『IGRPおよびEIGRPにおける不等コストパスの負荷バランシング(バリアンス)』を参照してください。
等コスト ルートを見つけるには、通常、show ip route コマンドを使用できます。次の例は、複数のルートがある特定のサブネットに対するshow ip routeコマンドの出力です。
ルーティング記述子ブロックが 2 つあることに注目してください。各ブロックが、1 つの経路を示します。横にアスタリスク(*)がついたブロック エントリがありますが、これは新しいトラフィックに使用されるアクティブなルートを表しています。
「新しいトラフィック」という用語は、設定されているスイッチングのタイプに基づいて、単一のパケットまたは宛先へのフロー全体を指します。
アスタリスク(*)の位置は、パケット/フローが処理されるたびに等コストパス間で循環し続けます。
M2515-B#show ip route 10.0.0.0
Routing entry for 10.0.0.0/8
Known via "rip", distance 120, metric 1
Redistributing via rip
Advertised by rip (self originated)
Last update from 192.168.75.7 on Serial1, 00:00:00 ago
Routing Descriptor Blocks:
* 192.168.57.7, from 192.168.57.7, 00:00:18 ago, via Serial0
Route metric is 1, traffic share count is 1
192.168.75.7, from 192.168.75.7, 00:00:00 ago, via Serial1
Route metric is 1, traffic share count is 1
宛先別ロード バランシングとパケット別ロード バランシング
ロードバランシングは、宛先ごとまたはパケットごとに機能するように設定できます。
宛先単位のロードバランシングとは、ルータが宛先アドレスに基づいてパケットを分散することを意味します。
同じネットワークへのパスが 2 つあるとすると、このネットワークの宛先 1 へ宛てたすべてのパケットは 1 番めのパスを通り、このネットワークの宛先 2 に宛てたすべてのパケットは 2 番めのパスを通るというように配信が行われます。
この場合、パケットの順序は確保されますが、リンクの使用率が不均等になる可能性があります。あるホストがトラフィックの大多数を受信する場合、すべてのパケットが 1 つのリンクを使用するため、他のリンクの帯域幅は未使用のままになります。
宛先アドレスの数が増えるほど、リンクの使用率が均等になります。リンクをより均等に使用するには、Cisco IOSソフトウェアを使用して、単一のパスのみが存在する場合のように、すべての宛先ネットワークではなく、すべての宛先アドレスに対してルートキャッシュエントリを構築します。
したがって、同じ宛先ネットワーク上の異なるホストのトラフィックが異なるパスを使用する可能性があります。このアプローチの欠点は、何千もの宛先ホストへのトラフィックを伝送するコアバックボーンルータの場合、キャッシュを維持するためのメモリと処理要件が課題になることです。
パケット単位のロードバランシングとは、ルータがdestination1に対して1つのパケットを最初のパス経由で送信し、(同じ)destination1に対して2番目のパケットを2番目のパス経由で送信するというものです。
パケット単位のロード バランシングでは、すべてのリンクにわたるロード バランシングが確実に行われます。ただし、ネットワーク内に遅延差が存在する可能性があるため、パケットが宛先で順不同で到着する可能性があります。
Cisco IOS ソフトウェアでは、リリース 11.1CC を除き、ルート キャッシュ情報に発信インターフェイスが含まれるため、パケット別ロード バランシングではルート キャッシュによる転送アクセラレーションがディセーブルにされます。
パケット単位のロードバランシングでは、転送プロセスは、ルートテーブルを検索して最も使用率の低いインターフェイスを選択する際に、各パケットの発信インターフェイスを決定します。
これにより、リンクの均等な使用率が保証されますが、プロセッサに負荷がかかるタスクであり、全体的な転送パフォーマンスに影響します。この形式のパケット別ロード バランシングは、比較的高速なインターフェイスには不適切です。
宛先単位またはパケット単位のロードバランシングは、IPパケットに使用されるスイッチング方式のタイプによって異なります。ほとんどのシスコ ルータでは、デフォルトとして、ファースト スイッチングがインターフェイスに対してイネーブルされています。
これは、宛先単位のロードバランシングを行うデマンドキャッシングスキームです。
パケット別ロード バランシングを設定するには、プロセス スイッチングをイネーブル(あるいはファースト スイッチングをディセーブル)にして、次のコマンドを使用します。
Router#configure terminal
Router(config)#interface Ethernet 0
Router(config-if)#no ip route-cache
Router(config-if)#^Z
これで、ルータの CPU が個々のパケットを調べて、その宛先のためのルーティング テーブル内のルートの数でロード バランシングを行います。この時 CPU がすべての処理を行うため、これによりローエンドのルータはクラッシュする可能性があります。
ファースト スイッチングを再びイネーブルにするには、次のコマンドを使用します。
Router#configure terminal
Router(config)#interface Ethernet 0
Router(config-if)#ip route-cache
Router(config-if)#^Z
Cisco Express Forwarding(CEF)のような新しいスイッチング方式では、パケット別と宛先別のロード バランシングがさらに高速で実行できます。
ただし、これはCEFエントリと隣接関係を維持するための追加のリソースがあることを意味します。
CEFを使用する場合、次の質問を行うことができます。ロードバランシングを行うのは誰か、CEFを使用するのは誰か、またはルーティングプロトコルを使用するのは誰か。
CEF の動作方式では、CEF は EIGRP のようなルーティング プロトコルが作成しているルーティング テーブルを基にしてパケットのスイッチングを行っています。つまり、ルーティング プロトコル テーブルが計算されていれば、CEF によりロード バランシングが行われるということになります。
CEF のロード バランシングについての詳細は、「Cisco Express Forwarding(CEF)を使用したパラレル リンクでのロード バランシングに関するトラブルシューティング」および「CEF によるロード バランシング」を参照してください。
次のドキュメントでは、さまざまなプロトコルによるベストパスの選択方法、特定の宛先へのコストの計算方法、および適用時のロードバランシングの実行方法について詳しく説明します。
関連情報