IP : IP スイッチング

ネットワークに最適なルータ スイッチング パスの選択方法

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

目次


概要

各種のシスコ製ルータおよび Cisco IOS リリースで使用可能なスイッチング パスには、非常に多くの種類があります。使用しているネットワークに最適なのはどのスイッチング パスで、それがどのようにその動作するのでしょうか。この解説書では、次に示す各種のスイッチング パスについて説明し、使用中のネットワークに最適なスイッチング パスを決定できるようにします。

最初に転送プロセスについて説明します。ルータを経由してパケットを転送する方法は、3 段階の手順で成り立っています。

  1. パケットの宛先に到達できることを判定する。

  2. 宛先への経路のネクストホップと、そのホップへ到達できるインターフェイスを判別する。

  3. パケットの Media Access Control(MAC; メディア アクセス制御)ヘッダーを書き換え、ネクストホップに正しく到達できるようにする。
これらの各手順は、パケットが宛先に到達するために必須の項目です。

:この文書の全体を通して、IP スイッチング パスを例として使用します。ここで説明する情報は、他のプロトコルの同様のスイッチング パスがある場合でも適用できます。


プロセススイッチング

プロセススイッチングは、スイッチング パスの中では最も一般的に広まっているものであり、各バージョンの IOS および各種プラットフォームで、スイッチングの対象になるあらゆる種類のトラフィックをサポートしています。プロセススイッチングは、次の 2 つの重要な概念によって定義されています。

  • パケット上の MAC ヘッダーを書き換えるために使用されるフォワーディングの判断と情報は、ルーティング テーブル(ルーティング情報ベース、または RIB)と Address Resolution Protocol(ARP; アドレス解決プロトコル)キャッシュ、あるいは、そのルータに直接接続されている各ホストの IP アドレスにマップされた MAC ヘッダー情報を含む他のテーブルから得られます。

  • パケットは、IOS 内で実行されている通常のプロセスによって交換されます。すなわち、フォワーディングの判断は、IOS スケジューラでスケジュールされたプロセスによって行われ、ルーティング プロトコルのようにルータ上の他のプロセスと同等のものとして実行されます。ルータ上で実行されている通常のプロセスは、パケットの交換のために中断されることはありません。
次の図では、プロセススイッチングの処理経路について説明しています。

ネットワーク

この図を詳しく説明します。

  1. ネットワークメディア上にパケットがあることがインターフェイス プロセッサによって最初に検出され、このパケットがルータの入出力メモリ(I/Oメモリ)に転送されます。

  2. インターフェイス プロセッサにより、受信割り込みが生成されます。この割り込みの間に、中央のプロセッサによって、このパケットの種類(ここでは IP パケットと仮定します)が判定され、必要に応じてプロセッサ メモリにコピーされます(この判定はプラットフォームによって変わります)。最終的にプロセッサによってパケットが適切なプロセスの入力キューに配置され、割り込みが解除されます。

  3. 次にスケジューラが実行されるとき、ip_input の入力キューにあるパケットが確認され、このプロセスが実行されるようスケジュールされます。

  4. ip_input の実行時には、RIB を参考にしてネクストホップと出力インターフェイスが決定されます。さらに、ARP キャッシュを参考にして、ネクストホップの正確な物理層レイヤのアドレスが決定されます。

  5. 次に ip_input によりパケットの MAC ヘッダーが書き換えられ、このパケットが正しい送信インターフェイスの出力キューに配置されます。

  6. 送信インターフェイスの出力キューから送信用インターフェイスの送信キューにパケットがコピーされます。送信に関する QOS は、この 2 つのキューの間で行われます。

  7. 出力インターフェイス プロセッサによって送信キュー上のパケットが検出され、ネットワーク メディアへパケットが送信されます。

Network Address Translation(NAT; ネットワーク アドレス変換)やポリシールーティングなど、パケット交換に影響を与える機能のほとんどは、プロセススイッチングで登場しました。割り込みコンテキスト スイッチングでも、これらの実証済みで最適化された機能の一部を活用しています。

割り込みコンテキスト スイッチング

割り込みコンテキスト スイッチングは、シスコのルータで 2 番目によく使用されているスイッチング方法です。割り込みコンテキスト スイッチングとプロセススイッチングの主な違いは次のとおりです。

  • プロセッサ上で動作しているプロセスは、パケットの交換のために中断される。パケットはip_input プロセスがスケジュールされたときに交換されるのではなく、要求があった時点で交換される。

  • プロセッサは、いくつかのルート キャッシュの形式を使用して、パケットの交換に必要な全情報を収集する。
次の図に、割り込みコンテキスト スイッチングについて示します。

network

この図をより詳細に見ていきます。

  1. ネットワークメディア上にパケットがあることがインターフェイス プロセッサによって最初に検出され、このパケットがルータの入出力メモリに転送されます。

  2. インターフェイス プロセッサにより、受信割り込みが生成されます。この割り込みの間に、中央のプロセッサによってパケットのタイプが判断され(ここでは IP パケットとして仮定します)、パケットの交換が開始されます。

  3. プロセッサによってルート キャッシュが検索されます。これにより、パケットの宛先が到達可能かどうかが判断され、選択する出力インターフェイス、この宛先へ送るためのネクストホップ、そして最後にパケットをネクストホップへ正確に送るための MAC ヘッダーが決定されます。プロセッサはこの情報でパケットの MAC ヘッダーを書き換えます。

  4. この時点で、パケットが送信用インターフェイスの送信キューまたは出力キューのいずれかにコピーされます(各種の要素によって決まります)。受信割り込みが返され、割り込みが発生する前にプロセッサ上で動作していたプロセスの実行が継続されます。

  5. 出力インターフェイス プロセッサによって送信キュー上のパケットが検出され、ネットワーク メディアにパケットが送信されます。

この説明を読んだ後に最初に浮かぶ疑問は、「キャッシュの内容は何か」です。これらは 3つ可能性のありますが、割り込みコンテキスト スイッチングのタイプによって異なります。

これらの各ルート キャッシュのタイプ(あるいはスイッチング パス)を一つずつ見ていきます。

ファストスイッチング

ファストスイッチングでは、フォワーディング情報と MAC ヘッダーの書き換え文字列を蓄積し、高速に検索および参照できるようにバイナリ ツリーの形式を採用しています。次の図では、バイナリ ツリーの例を示しています。

バイナリ ツリー

ファストスイッチングでは、到達可能性に関する情報が、そのパケットの宛先に対するバイナリ ツリーにノードがあることで示されます。各宛先に対する MACヘッダーと送信インターフェイスは、ノード情報の一部としてツリー内に保存されます。バイナリ ツリーには、実際には 32 段階までのレベルを作ることができますが、簡潔に図示するために、上の図では省略してあります。

バイナリ ツリーを検索するには、探す数値(2進数)の単純に左側(最上位の桁)から開始し、その数値に基づいて右側または左側に枝分かれしていきます。例えば、このツリー内の 4 番に関連する情報を探しているとします。2 進数の最初の桁が 1 であるため、まず右側に枝分かれして進みます。2 進数の次の桁を見ながら、最後の桁になるまでツリーを下っていきます。

ファストスイッチングの特性

ファストスイッチングは、バイナリ ツリーの構造に、ツリーのノードの一部として MAC ヘッダーの書き換え情報を保管するため、いくつかの特性があります。

  • ルーティング テーブルとファストキャッシュの内容(MAC ヘッダーの書き換えなど)には相関関係がないため、キャッシュ エントリの構築にはプロセススイッチングの手順で行われるすべてのプロセスが関連します。したがって、ファストキャッシュのエントリは、パケットがプロセススイッチングされた時点で構築されます。
  • ARP キャッシュの MAC ヘッダー(書き換えに使用)とファストキャッシュの構造には相関関係がないため、ARP テーブルが変更されたときには、ファストキャッシュの一部が無効になります(パケットの交換プロセスを通して再構築されます)。
  • ファストキャッシュでは、ルーティング テーブルにある特定の宛先に対して、1 階層(1 プレフィクス長)にだけエントリが構築されます。
  • ファストキャッシュ内であるエントリから他のエントリを指し示す方法がないため(ノード内には MACヘッダーと送信インターフェイス情報がある)、ルーティングの再帰はファストキャッシュのエントリが構築されている間にすべて解決される必要があります。すなわち、再帰的なルートはファストキャッシュの中では解決できません。

ファストスイッチングのエントリのエージング

ファストスイッチングのエントリからルーティング テーブルや ARP キャッシュとの同期が失われないようにするため、および、ファストキャッシュ内の使用されていないエントリがルータのメモリを過度に浪費しないようにするために、ファストキャッシュの内容が毎分 20 分の 1 ずつランダムに無効化されます。ルータのメモリが非常に低い許容以下になった場合は、ファストキャッシュのエントリが毎分 5 分の 1 ずつ無効化されます。

ファストスイッチングのプレフィクス長

全ての宛先に対して 1 プレフィクス長でのみエントリが構築できる場合、ファストスイッチングではどのようなプレフィクス長でエントリを構築するでしょうか。ファストスイッチングでは、宛先はルーティング テーブルまたは主要なネットワークにある単一の到達可能な宛先を示します。キャッシュ エントリを構築するプレフィクス長を決定するためのルールは次のとおりです。

  • ファースト ポリシー エントリを構築する場合は、常に /32 にキャッシュ

  • Multiprotocol over ATM virtual circuit(MPOA VC; MPOA バーチャル サーキット)のエントリを構築する場合には、常に /32 にキャッシュ
  • ネットワークがサブネット化されていない場合(メジャー ネットワークのエントリの場合):
    • 直接接続の場合は、/32 を使用
    • そうでない場合は、そのメジャー ネット マスクを使用


  • スーパーネットの場合、そのスーパーネットのマスクを使用
  • ネットワークがサブネット化されている場合:
    • 直接接続の場合は、/32 を使用
    • サブネットへの複数の経路がある場合は、/32 を使用
    • 他のすべてのケースでは、メジャー ネットでの最長のプレフィクス長を使用

ロード シェアリング

ファストスイッチングは完全に宛先ベースであるため、ロード シェアリングは宛先ごとに発生します。ある宛先ネットワークに対して、複数の等コスト パスがある場合、ファストキャッシュではそのネットワーク内にある到達可能なホストごとに 1 つのエントリがありますが、あるホストに向けたトラフィックはすべて 1 つのリンクを辿ります。 

最適なスイッチング

最適なスイッチングでは、フォワーディング情報と MAC ヘッダーの書き換え情報を、256 way multiway tree(256 way mtree)に蓄積します。mtree を使用することで、次の図に示すようにプレフィクスを調べる際に必要となる手順の数が少なくなります。

256 way mtree

各オクテットは、ツリーの各レベルで 256 本のブランチのどれを選ぶかを決定するために使用されます。このことは、宛先を見つける場合に最高で 4 回の検索が行われることを意味しています。プレフィクス長が短い場合は、検索は 1〜3 回のみ必要とされます。MACヘッダーの書き換えと出力インターフェイス情報は、ツリーのノードの一部として保存されるため、ファストスイッチングと同様にキャッシュの無効化やエージングも依然として発生します。

最適なスイッチングでは、ファストスイッチングと同様の方法で、各キャッシュ エントリに対するプレフィクス長を決定します。

Cisco Express Forwarding

Cisco Express Forwarding(CEF)でも、256 とおりのデータ構造を使用してフォワーディング情報と MAC ヘッダーの書き換え情報を保存しますが、ツリーは使用しません。CEF では trie を使用します。これは、検索されている実際の情報がデータ構造の中にないことを意味します。その代わり、データは別のデータ構造内に保存されており、trie は単にその場所を指し示しています。 言い換えれば、CEF ではツリー自体の中に送信インターフェイスや MAC ヘッダー書き換え情報を保存するのではなく、隣接関係テーブルと呼ばれる別のデータ構造内にこの情報を保存します。

到達可能性に関する情報(CEF テーブル)とフォワーディング情報(隣接関係テーブル)を分けることによる利点がいくつかあります。

  • 隣接関係テーブルは CEF テーブルとは別に構築できるため、パケットをプロセススイッチングすることなく両方を構築できます。

  • パケットのフォワーディングに使用される MAC ヘッダー書き換え情報は、キャッシュ エントリに保存されません。したがって、MAC ヘッダー書き換え文字列の変更に際してキャッシュ エントリの無効化は必要ありません。
  • 再帰的なルートは、フォワーディング情報を直接ポイントするのではなく、再帰化されたネクストホップをポイントすることで解決できます。

この仕組みではキャッシュのエージングが根本的に除外され、キャッシュはルーティング テーブルと ARP キャッシュにある情報に基づいて事前に構築されます。この方法では、キャッシュ エントリの構築のためにパケットをプロセススイッチングする必要がありません。

隣接関係テーブルのその他のエントリ

隣接関係テーブルには、MAC ヘッダー書き換え文字列や送信インターフェイス情報以外のエントリも含めることができます。隣接関係テーブルに含めることのできる各種のエントリには次のものがあります。

  • キャッシュ ある隣接ホストまたはルータに到達するために使用される、MACヘッダー書き換え文字列および送信インターフェイス。

  • 受信 この IP アドレスに宛てられたパケットは、ルータによって受信される。この情報には、ブロードキャスト アドレスとルータ自体に設定されたアドレスが含まれる。

  • ドロップ この IP アドレスに宛てられたパケットはドロップする。この情報は、アクセス リストによって拒否されたり、NULL インターフェイスに送られたトラフィック用に使用される場合がある。

  • パント CEFではこのパケットを交換できないため、次の最適なスイッチング方式(一般的にはファストスイッチング)で処理されるように転送する。

  • グリーニング ネクストホップは直接接続されているが、現在使用できる MAC ヘッダー書き換え文字列がない。

グリーニング隣接関係

グリーニング隣接関係のエントリは、ある特定のネクストホップが直接接続されていても、使用可能な MAC ヘッダー書き換え情報がないことを示します。 これらの情報はどのように構築され、使用されるのでしょうか。次の図で示すように、CEF を実行し、ブロードキャスト ネットワークに接続されたルータは、デフォルトでいくつかの隣接関係テーブルを構築しています。 

デフォルトで作成される 4 つの隣接関係テーブルのエントリは次のとおりです。

10.1.1.0/24, version 17, attached, connected

 0 packets, 0 bytes

   via Ethernet2/0, 0 dependencies

     valid glean adjacency

 10.1.1.0/32, version 4, receive

 10.1.1.1/32, version 3, receive

 10.1.1.255/32, version 5, receive

ここでは、4 つのエントリがあることに注意してください。3 つの受信と 1 つのグリーニングです。各受信エントリは、ブロードキャスト アドレスまたはルータ上で設定されたアドレスを表しています。一方グリーニング エントリでは、接続されたネットワークのアドレス空間の空きを示しています。ホスト 10.1.1.50 宛のパケットが受信されると、ルータはこれを交換しようと試み、パケットがグリーニング隣接関係に決定されていることを発見します。その後、ARP キャッシュ エントリが 10.1.1.50 のために必要とされていること、ARP プロセスから ARP パケットが送信されたこと、そして適切な隣接関係テーブルのエントリが新しい ARP キャッシュ情報から構築されたことが CEF から通知されます。この手順が完了すると、隣接関係テーブルには 10.1.1.50 に関するエントリが作られます。

10.1.1.0/24, version 17, attached, connected

 0 packets, 0 bytes

   via Ethernet2/0, 0 dependencies

     valid glean adjacency

 10.1.1.0/32, version 4, receive

 10.1.1.1/32, version 3, receive

 10.1.1.50/32, version 12, cached adjacency 208.0.3.2

 0 packets, 0 bytes

   via 208.0.3.2, Ethernet2/0, 1 dependency

     next hop 208.0.3.2, Ethernet2/0

     valid cached adjacency

 10.1.1.255/32, version 5, receive

次にルータが受信する 10.1.1.50 宛のパケットは、この新しい隣接関係を使って交換されます。

ロード シェアリング

CEF では、CEF テーブルと隣接関係テーブルの分離を使用して、他の割り込みコンテキスト スイッチング モードよりも優れた方式のロード シェアリングも提供しています。ロードシェア テーブルは、次の図で示すように、CEF テーブルと隣接関係テーブルの中間に挿入されます。

CEF テーブルからこのロードシェア テーブルがポイントされます。ロードシェア テーブルには、同時並行で使用できるパス向けに各種の隣接関係テーブルのエントリへのポインタが記述されています。発信元と宛先のアドレスはハッシュ アルゴリズムを介して渡され、各パケットにどのロードシェア テーブルのエントリを使用するかが決定されます。各パケットが異なるロードシェア テーブルのエントリを使用する場合は、パケットごとにロード シェアリングが設定される場合があります。

それぞれのロードシェア テーブルには 16 のエントリがあります。その中では使用できるパスがルーティング テーブルのトラフィック シェア カウンタに基づいて分類されています。ルーティング テーブルにあるトラフィック シェア カウンタがすべて 1 になっている場合(等コスト パスが複数ある場合)、対象となりうるそれぞれのネクストホップでは、ロードシェア テーブルから同じ番号のポインタを受け取ります。使用可能なパスの数を 16 に均等に分けられない場合は(ロードシェア テーブルのエントリは 16 あるため)、パスによっては他のパスよりもエントリが多くなります。

IOS 12.0 からは、ロードシェア テーブル内のエントリ数は減らされて、ロードシェア テーブルのエントリの数がパスごとに適切になります。たとえば、ルーティング テーブルに等コスト パスが 3 つある場合、ロードシェア テーブルは 15 だけ使用されます。


最適スイッチング パス

割り込みコンテキストでのスイッチングはプロセスレベルのスイッチングよりも非常に高速であるため、可能であれば常にルータの割り込みコンテキストを使用してスイッチングしようと考えるでしょう。CEF スイッチングは、他のいずれのスイッチング モードよりも高速かつ高品質です。使用中のプロトコルと IOS が CEF をサポートしていれば、CEF の使用をお勧めします。トラフィックがロードシェアされるパラレル リンクが複数ある場合は特に有効です。



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

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


関連情報


Document ID: 13706