内容

概要

前提条件

要件

使用するコンポーネント

表記法

プロセス

関連情報

概要

このドキュメントでは、パケットの一生について説明します。

前提条件

要件

このドキュメントに特有の要件はありません。

使用するコンポーネント

このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。

このマニュアルの情報は、特定のラボ環境に置かれたデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期（デフォルト）設定の状態から起動しています。実稼動中のネットワークで作業をしている場合、実際にコマンドを使用する前に、その潜在的な影響について理解しておく必要があります。

表記法

ドキュメントの表記法の詳細は、「シスコ テクニカル ティップスの表記法」を参照してください。

プロセス

シスコのローエンド ルータには、1xxx、25xx、26xx、3600、3800、4000、4500、および4700シリーズがあります。これらのルータでは、送信したメッセージは、別のシステムのコントローラで受信されます。このコントローラは、ほとんどのシステムで、受信したパケットをバッファ メモリに直接保管します。メッセージを完全に受信すると、コントローラは入力側ドライバがそのメッセージを見つけられるように、何らかのポインタ情報を保管してから、受信割り込みを生成します。

注：コントローラにメッセージを格納するバッファがない場合、この時点で「無視」が記録され、メッセージは受信されません。

その後、（通常、ミリ秒で計測される）ある一定の時点で、ドライバがアクティブになります。ドライバは最初に送信キューをチェックし、次に受信キューをチェックします。ここでは、受信キューの処理に限って説明します。ドライバはキューに関する必要なチェックを行い、メッセージがあると判断し、キューからそのメッセージを取り出したあと、コントローラの受信キュー リストを補充します。次に、IPやInternet Packet Exchange(IPX)などのフォワーダがメッセージを渡すことを決定します。

以下の説明では、メッセージがIPメッセージであると想定します。ドライバは、このIPメッセージを設定済みのIPファスト パスに渡さなければなりません。まず、メッセージからリンク レイヤ ヘッダーを取り除き、入力インターフェイスにファスト パスが設定されているかどうかを調べます。設定されていない場合、パケットは" input hold queue "に入れられ（マークされ）、カウンタが調べられます。カウンタがゼロであれば、"input hold queue"は使い尽くされているので、パケットはドロップされます。カウンタがゼロ以外であれば、カウンタが減分され、メッセージはプロセス パスのキューに入れられます。

注：「input hold queue」は文字通りキューではありません。インターフェイスで受信され、（出力インターフェイスへのメッセージの転送、またはバッファの解放によって）完全には処理されていないパケットの集合です。 ただし、設定済みのファスト パスがあれば（通常はあります）、そのメッセージはファスト パスに渡されます。

次にファスト パスがメッセージの有効性をチェックし、まだルーティングされていないメッセージに対して何らかの機能を適用します。このステップには、暗号解除または圧縮解除（必要な場合、その両方）、Network Addresses Translation　(NAT;ネットワーク アドレス変換）、入力Committed Access Rate（CAR）テストの適用、ポリシー ルーティング テストの適用などがあります。

ポリシー ルーティングを使用する場合、それによって実際の出力インターフェイスが選択されます。ポリシー ルーティングを使用しない場合、次のステップとして、ルート キャッシュ内の宛先アドレスが検索されます（「パケット スイッチング」と呼ばれるプロセスです）。 このキャッシュの構造および内容は、ファスト スイッチング モードによって異なります。標準のファスト スイッチングでは、このキャッシュには、最近使用された宛先プレフィクス ルートまたは宛先ホスト ルートが含まれていますが、キャッシュ エントリが含まれていない場合もあります。後者の場合、メッセージはプロセス レベルに押し戻され、再び"input hold queue"としてマークされます。 Cisco Express Forwarding（CEF）スイッチングでは、このキャッシュ（Forwarding Information Base [FIB;転送情報ベース]と呼ばれる）は完全なルート テーブルであるため、このプロセスは発生しません。

ルートが見つかった場合、ルート キャッシュ エントリ（CEFでは「隣接関係」）によって、ソフトウェア、 もしくはハードウェア出力インターフェイス、およびメッセージに付けるヘッダー（該当するネクスト ホップ）が示されます。 多重化されたインターフェイスの場合、これは該当する次の仮想回線または仮想チャネルです。

このソフトウェア インターフェイス上では、いくつかの問題が関与する場合があります。たとえば、メッセージのサイズよりも小さい最大伝送ユニット(MTU)をインターフェイスに設定したとします。高速パスにはフラグメントがないため、この特定のイベントはプロセスレベルに「バンプ」する理由になります。さらに、インターフェイスにNAT処理、出力CARなどが設定されている場合があります。こういった機能は、メッセージ処理のこの段階で適用されます。そして最後に、出力インターフェイスのリンク レイヤ ヘッダーがメッセージに付加され、メッセージが出力ドライバに渡されます。

メッセージがドライバのファスト送信ルーチンに渡されると、次の処理が行われます。

1. ドライバは、いくつかの判断（たとえば、「メッセージを新しいバッファにコピーしてから送信する必要があるか?」）を行います。

2. ドライバは、トラフィック シェーピングがアクティブかどうかを判別します。トラフィック シェーピングがアクティブであれば、指定されたクラスのメッセージについて、メッセージの着信レートと送信レートを比較します。サブインターフェイスにシェーピング キューが形成されている場合、またはキューは存在しないがレートを超過している場合には、ソフトウェア インターフェイスのキューにメッセージを入れます。

3. トラフィック シェーピングがアクティブでない場合や このメッセージにはトラフィック シェーピングが適用外である場合、またはレートが超過していない場合には、ドライバは、出力コントローラの送信キューの深さがtx-queue-limit値未満であるかどうかを判別します。この値未満であれば、ドライバはメッセージを送信のためにキューイングします。このパスをたどったメッセージは、入力側でファスト スイッチングされ、出力側でファスト スイッチングされたものと見なされます。

4. ファスト スイッチングが不可能な場合、ドライバはメッセージをソフトウェア キュー（一般に"output hold queue"と呼ばれる）に転送します。 このようなホールド キューの例としては、First In, First Out（FIFO）キューイング、プライオリティ キューイング、カスタム キューイング、およびWeighted Fair Queuing（WFQ;均等化キューイング）があります。

プロセス パスが使用するメッセージの宛先と同じ なので、このようなメッセージは、入力側でファスト スイッチングされ、出力側ではプロセス スイッチングされたものと見なされます。しかしこれらのメッセージは、実際にはプロセス スイッチングされているわけではありません。スイッチングの決定は、パケットがファスト パスでスイッチングされる際に行われます。ただし、メッセージはプロセス パスと共有のキューに転送されています。その後メッセージがホールド キューから取り除かれ、送信コントローラのキューに入れられる時点で、メッセージはプロセス スイッチングされたものと見なされます。

プロセス スイッチングは、メッセージをファスト パスで送信できない場合に発生します。これは、メッセージがこのシステムに送信され、最終的（理想的）にルーティング プロセス、リンク メンテナンス プロセス、ネットワーク管理プロセスなどで消費されることを意味します。ただし、Link Fragmentation and Interleaving(LFI)を使用してジャンボグラムのセグメント間で音声をインターリーブするトラフィック、X.25トラフィック、フラグメンテーションが必要なトラフィック、ファストパスルートエントリが存在しないトラフィックなど、一部のトラフィックは実際にプロセスパスです。プロセス パス上での処理は、概念的にはファスト パスと同じですが、さまざまな理由で実装が異なります。相違点の１つは、出力側で"input hold queue"フラグがクリアされ、入力インターフェイスのカウンタが増分され（input hold queueからのメッセージの削除）、メッセージがoutput hold queueに入れられる点です。そのあと、割り込みがシミュレートされ、それによって出力インターフェイスでのメッセージ送信がトリガされる場合があります。プロセスオーバーヘッドが原因で、ファーストスイッチングよりも低速になります。このようなメッセージを受信すると、他のプロセスが実行される可能性があり、さらに複雑なデータ構造を処理する必要があります。

関連情報

- IP ルーティング プロトコルに関するサポート ページ

- IP ルーティングに関するサポート ページ

- テクニカルサポート - Cisco Systems