IP : IP ルーティング

ロード バランシングの機能のしくみ

2008 年 7 月 23 日 - ライター翻訳版
その他のバージョン: PDFpdf | 機械翻訳版 (2013 年 8 月 21 日) | 英語版 (2005 年 8 月 10 日) | フィードバック

目次

概要
前提条件
      要件
      使用するコンポーネント
      表記法
ロード バランシング
      宛先別ロード バランシングとパケット別ロード バランシング
関連するシスコ サポート コミュニティ ディスカッション
関連情報

概要

ロード バランシングは Cisco IOS(R) ルータ ソフトウェアの標準の機能で、すべてのルータ プラットフォームで使用できます。これはルータでの転送プロセス固有の機能で、ルーティング テーブルに宛先への複数のパスがある場合に自動的に起動されます。これは 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 ルータにおけるルートの選択』を参照してください。

ルータは、アドミニストレーティブ ディスタンスが同じで、同じルーティング プロセスを経由してラーニングされた多数のルートの中から、1 つのルートを選択する必要がある場合があります。この場合、ルータはその宛先へのコスト(またはメトリック)が最も低いパスを選択します。各ルーティング プロセスはコストをそれぞれの方法で計算します。コストは、ロード バランシングを実現するために処理が必要なこともあります。

アドミニストレーティブ ディスタンスと宛先へのコストが同じ複数のパスをルータが受信してインストールすると、ロード バランシングが生じます。使用されるパスの数は、ルーティング プロトコルによりルーティング テーブルに置かれたエントリの数により制限されます。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 1.0.0.0
Routing entry for 1.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 つのリンクを使用するため、他のリンクの帯域幅は未使用のままになります。宛先アドレスの数が増えるほど、リンクの使用率が均等になります。リンクの使用率をさらに均等にするには、IOS ソフトウェアを使用して、単一のパスだけが存在する場合のように、各宛先ネットワーク用ではなく各宛先アドレス用にルートキャッシュ エントリを構築します。これにより、同じ宛先ネットワーク上のさまざまなホストに対するトラフィックが、さまざまなパスを使用できます。このアプローチの下流側は、数千の宛先ホストに対するトラフィックを搬送するコア バックボーン ルータのためのもので、キャッシュを維持するためのメモリ要件と処理能力要件がさらに求められます。

パケット別のロード バランシングとは、ルータは宛先 1 への 1 つのパケットを最初のパスで送信し、(同じ)宛先 1 への 2 つめのパケットを 2 つめのパスで送信し、以後同様に送信が続くことを意味します。パケット単位のロード バランシングでは、すべてのリンクにわたるロード バランシングが確実に行われます。ところが、ネットワーク内に遅延差が存在する場合があるため、宛先でのパケットの到着順序が乱れる可能性があります。Cisco IOS ソフトウェアでは、リリース 11.1CC を除き、ルート キャッシュ情報に発信インターフェイスが含まれるため、パケット別ロード バランシングではルート キャッシュによる転送アクセラレーションがディセーブルにされます。パケット別ロード バランシングの場合、転送プロセスでは、ルート テーブルの検索と使用率の最も低いインターフェイスの選択により、各パケットに使用する発信インターフェイスが決定されます。これにより、リンクの均等な使用率が保証されますが、プロセッサにタスクが集中して、全体の転送パフォーマンスに悪影響がおよびます。この形式のパケット別ロード バランシングは、比較的高速なインターフェイスには不適切です。

ロード バランシングが宛先別かパケット別かのどちらを選ぶかは、IP パケットに使用するスイッチング方式のタイプによって決まります。ほとんどのシスコ ルータでは、デフォルトとして、ファースト スイッチングがインターフェイスに対してイネーブルされています。宛先別のロード バランシングを行うデマンド キャッシング スキームを次に示します。パケット別ロード バランシングを設定するには、プロセス スイッチングをイネーブル(あるいはファースト スイッチングをディセーブル)にして、次のコマンドを使用します。

Router# config t
Router(config)# interface Ethernet 0
Router(config-if)# no ip route-cache
Router(config-if)# ^Z

これで、ルータの CPU が個々のパケットを調べて、その宛先のためのルーティング テーブル内のルートの数でロード バランシングを行います。この時 CPU がすべての処理を行うため、これによりローエンドのルータはクラッシュする可能性があります。ファースト スイッチングを再びイネーブルにするには、次のコマンドを使用します。

Router# config t
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 によるロード バランシング』を参照してください。

下記のドキュメントでは、さまざまなプロトコルが最適パスを選択し、特定の宛先へのコストを算出する方法、さらに適用時にロード バランシングを実行する方法についての詳細が説明されています。


関連するシスコ サポート コミュニティ ディスカッション

シスコ サポート コミュニティは、どなたでも投稿や回答ができる情報交換スペースです。


関連情報


Document ID: 5212