ルータ : Cisco 12000 シリーズ ルータ

Cisco 12000 シリーズ インターネット ルータのアーキテクチャ:パケット交換

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

目次

概要
前提条件
      要件
      使用するコンポーネント
      表記法
背景説明
パケット交換:概要
パケット交換:エンジン 0 および エンジン 1 のラインカード
パケット交換:エンジン 2 のラインカード
パケット交換:ファブリックを通したセルの交換
パケット交換:パケットの送信
パケット フローの要約
関連するシスコ サポート コミュニティ ディスカッション
関連情報

概要

この文書では、Cisco 12000 シリーズ インターネット ルータの最も重要なアーキテクチャ上の要素であるパケットの交換について検証します。 パケットの交換は、Cisco の共有メモリやバスベース アーキテクチャとは根本的に異なります。 Cisco 12000 では、クロスバー ファブリックを使用することによって、広い帯域幅と高いスケーラビリティを提供しています。 また、12000 では仮想出力キューを使用することによって、スイッチ ファブリック内における行頭ブロッキングをなくします。

前提条件

要件

この文書に関する特別な要件はありません。

使用するコンポーネント

この文書の情報は、次のハードウェアに基いています。

  • Cisco 12000 シリーズ インターネット ルータ

この文書の情報は、特定のラボ環境にあるデバイスに基づいて作成されています。 この文書で使用するすべてのデバイスは、クリアな状態(デフォルト)から設定作業を始めています。 対象のネットワークが実稼動中である場合には、すべてのコマンドによる潜在的な影響について確実に理解しておく必要があります。

表記法

文書表記の詳細は、『シスコ テクニカル ティップスの表記法』を参照してください。

背景説明

Cisco 12000 では、スイッチングの決定は Line Card(LC; ラインカード)によって行われます。 一部の LC では、実際のパケット交換は専用の Application-Specific Integrated Circuit(ASIC; 特定用途集積回路)によって行われます。 使用可能な唯一のスイッチング方式は、distributed Cisco Express Forwarding(dCEF; 分散 CEF)です。

備考: エンジン 0、1、および 2 は、シスコによって開発されたエンジンの中では最新のエンジンではありません。 その他、エンジン 3、4、および 4+ などのラインカードがあります。 エンジン 3 のラインカードは、ライン レートでエッジ機能を実行できます。 レイヤ 3 エンジンがより高速になるほど、より多くのパケットをハードウェアで交換できます。 Cisco 12000 シリーズ ルータで使用可能な各種ラインカードとこれらのラインカードがベースとするエンジンの詳細は、『Cisco 12000 シリーズ インターネット ルータ:FAQ』を参照してください。

パケット交換:概要

パケットは、常に、入力 Line Card(LC; ラインカード)によって転送されます。 出力 LC は、キューに依存した発信 QOS(たとえば、Weighted Random Early Detection(WRED; 重み付けランダム早期検出)または Committed Access Rate(CAR; 専用アクセス レート))だけを実行します。 ほとんどのパケットは、distributed Cisco Express Forwarding(dCEF; 分散 CEF)を使用する LC によって交換されます。 制御パケット(ルーティング更新など)だけが Gigabit Route Processor(GRP; ギガビット ルート プロセッサ)に送信され、処理されます。 パケット交換のパスは、LC で使用されるスイッチング エンジンのタイプによって異なります。

次に、パケットが着信したときの処理を示します。

  1. パケットが Physical Layer Interface Module(PLIM; 物理層インターフェイス モジュール)に着信します。 この場合、次のことが行われます。

    • トランシーバが光信号を電気信号に変換します(ほとんどの CSR ラインカードにはファイバ コネクタが搭載されている)。

    • L2 ファーミングが削除されます(SANE、Asynchronous Transfer Mode(ATM; 非同期転送モード)、イーサネット、High-Level Data Link Control(HDLC; 高レベル データリンク制御)/Point-to-Point Protocol(PPP; ポイントツーポイント プロトコル))

    • ATM セルが再構成されます

    • Cyclic Redundancy Check(CRC; 巡回冗長検査)に失敗したパケットが廃棄されます

  2. パケットが受信されて処理されると、「First In, First Out(FIFO; 先入れ先出し)バースト メモリ」と呼ばれる小さなメモリ(およそ 2 x Maximum Transmission Unit(MTU; 最大伝送ユニット)のバッファ)にダイレクト メモリ アクセスによって転送されます。 このメモリ量は LC のタイプによって異なります(128 KB 〜 1 MB)。

  3. パケット全体が FIFO メモリに格納されると、PLIM 上の Application-Specific Integrated Circuit(ASIC; 特定用途集積回路)が Buffer Management ASIC(BMA; バッファ管理 ASIC)にコンタクトをとり、パケットを格納するためのバッファを要求します。 BMA はパケットのサイズを通知され、それに応じてバッファを割り当てます。 BMA が適正なサイズのバッファを取得できなかった場合、パケットは廃棄され、着信インターフェイスの 「ignore」 カウンタが増分されます。 他の一部のプラットフォームとは異なり、フォールバック メカニズムはありません。 この処理が行われている間、PLIM の FIFO バースト メモリが別のパケットを受信することがあります。FIFO バースト メモリのサイズが 2 x MTU であるのはこのためです。

  4. 適切なキューに使用可能な空きバッファがある場合、パケットは、BMA によって該当するサイズのフリー キュー リストに格納されます。 このバッファは raw キューに置かれます。raw キューは Salsa ASIC または R5K CPU によって検査されます。 R5K CPU は、パケットの送信先を決定するために、Dynamic RAM(DRAM)のローカル dCEF テーブルに問い合せ、バッファを raw キューから宛先スロットに対応する ToFabric キューに移動します。

    送信先が CEF テーブルに登録されていない場合、パケットは廃棄されます。 パケットが制御パケット(ルーティング更新など)の場合は GRP のキューにキュイングされ、GRP によって処理されます。 17 個の ToFab キューがあります(ユニキャスト用に 16 個とマルチキャスト用に 1 個)。 ToFab キューはラインカードごとに 1 つずつあります(これには RP も含まれる)。 これらのキューは「仮想出力キュー」と呼ばれ、行頭ブロッキングを防止するために重要です。

  5. ToFab BMA はパケットを 44 バイトの断片に切り分けます。これらの断片は「シスコ セル」のためのペイロードです。 これらのセルには、frFab BMA によって 8 バイトのヘッダーと 4 バイトのバッファ ヘッダーが付加され(この時点の合計データ サイズは 56 バイト)、適切な ToFab キューにキューイングされます(この時点で、バッファが属するプールの #Qelem カウンタは 1 つ減り、ToFab キュー カウンタは 1 つ増えます)。

    「処理を決定する要因」は、スイッチング エンジンのタイプによって異なります。

    エンジン 2+ カードの場合、パケットのスイッチング方式を改善するために特別な ASIC が使用されています。 通常のパケット(IP/タグ、オプションなし、チェックサム)は、Packet Switching ASIC(PSA; パケット交換 ASIC)によって直接処理され、raw キューと CPU と Salsa の組み合せをバイパスして ToFab キューに直接キューイングされます。 パケットの最初の 64 バイトだけがパケット交換 ASIC を通過します。 PSA がパケットを交換できない場合、パケットは RawQ にキューイングされ、すでに説明したように LC の CPU で処理されます。

    この時点で、スイッチングの決定が完了し、パケットは適切な ToFab 出力キューにキューイングされています。

  6. ToFab BMA がパケットのセルを、Fabric Interface ASIC(FIA; ファブリック インターフェイス ASIC)の小さな FIFO バッファに DMA(ダイレクト メモリ アクセス)転送します。 17 個の FIFO バッファがあります(ToFab キューごとに 1 つずつ)。 FIA は、toFab BMA からセルを取得すると、8 バイトの CRC(合計セル サイズは 64 バイト。そのうちペイロードが 44 バイト、セル ヘッダーが 8 バイト、バッファ ヘッダーが 4 バイト)を付加します。 FIA には Serial Line Interface(SLI; シリアル ライン インターフェイス)ASIC が搭載されているため、セルの 8B/10B 符号化(Fiber Distributed Data Interface(FDDI; ファイバ分散データ インターフェイス)4B/5B など)を実行し、ファブリックを通して送信する準備を行います。 この処理には非常にオーバーヘッド(44 バイトのデータがファブリックでは 80 バイトになる)がかかるように見えますが、ファブリックにはそれに応じたキャパシティが設定されているため、問題にはなりません。

  7. FIA の送信準備が完了し、FIA は現在アクティブな Card Scheduler And Clock(CSC; カード スケジューラとクロック)からファブリックに対するアクセス要求を出します。CSC は複雑な公平アルゴリズムに従って動作します。 これは、LC が他のカードの発信帯域幅を独占できないという概念に基づいています。LC が LC 自身のポートからデータを送信する場合でも、ファブリックを通して送信する必要があります。 ファブリックを通して送信しない場合、LC 上の 1 つのポート が同じ LC 上の特定のポートのすべての帯域幅を独占する可能性があるため、このことは重要です。 また、スイッチングの設計も複雑になります。 FIA はスイッチ ファブリックを通して発信 LC(スイッチング エンジンによって設定されたシスコ セル ヘッダーのデータで指定される)にセルを送信します。

    また、公平アルゴリズムは最適な照合が行われるように設計されています。カード 1 がカード 2 に、カード 3 がカード 4 に同時に送信しようとしている場合、この 2 つの処理は並行して行われます。 スイッチ ファブリックとバス アーキテクチャはこの点で大きく異なります。これは、イーサネット スイッチとハブの関係と同様に考えることができます。スイッチでは、ポート A がポート B に、ポート C がポート D と通信しようとしている場合、これら 2 つの処理はそれぞれ独立して実行されます。ハブでは、衝突、バックオフ アルゴリズム、リトライ アルゴリズムなどの半二重方式の問題があります。

  8. ファブリックから受信したシスコ セルは、SLI 処理を通して 8B/10B 符号化が削除されます。この時点でエラーが発生した場合、これらのエラーは show controller fia コマンドの出力で「cell parity」として表示されます。 詳細は、『show controller fia コマンドの出力の読み方』を参照してください。

  9. これらのシスコ セルは frFab FIA の FIFO へ DMA 転送されてから、frFab BMA のバッファへと転送されます。実際にセルをパケットに再構成するのは frFab BMA です。

    frFab BMA がパケットを再構成する場合、セルを格納するバッファをどのようにして決定するのでしょうか。 これは、着信ラインカードのスイッチング エンジンによって決定されます。ボックス上にあるキューはすべて同じサイズ、同じ順序であるため、スイッチング エンジンは Tx LC に、パケットがルータに着信したときと同じ番号のキューにパケットを入れるように指示します。

    frFab BMA SDRAM キューの状態を表示するには、LC で show controller frfab queue コマンドを使用します。 詳細は、『Cisco 12000 シリーズ インターネット ルータでの show controller frfab | tofab queue コマンドの出力の読み方』を参照してください。

    これは基本的に ToFab BMA の出力と同じです。着信したパケットは、それぞれの対応するフリー キューからデキューされるパケットとして配置されます。 これらのパケットは from-fabric キューに配置され、出力処理のためにインターフェイス キュー(物理ポートごとに 1 つずつキューがある)か RawQ のいずれかにキューイングされます。RawQ での処理内容は多くなく、次のとおりです。 ポート単位のマルチキャスト複製、Modified Deficit Round Robin(MDRR)(Distributed Weighted Fair Queuing(DWFQ)と同じ概念)、および出力 CAR。 送信キューがいっぱいの場合は、パケットが廃棄され、出力廃棄カウンタの値が増分されます。

  10. frFab BMA は、PLIM の TX 部分がパケットを送信できる状態になるまで待機します。 frFab BMA は MAC を(シスコ セル ヘッダーに含まれる情報に基づいて)実際に書き換えてから、PLIM 回路内の小さなバッファ(2 x MTU)にそのパケットを DMA 転送します。 PLIM は 必要に応じて ATM SAR および SONET のカプセル化を行い、パケットを送信します。

  11. ATM トラフィックが(SAR によって)再構成され、(ToFab BMA によって)セグメント化され、(fromfab BMA によって)再構成され、(fromfab SAR によって)もう一度再構成されます。 この処理は、非常に高速で行われます。

これがパケットの最初から最後までのライフサイクルです。 GSR では、1 日にこの文書全部を 50 万回読むのと同等の処理が行われています。

GSR のパケット交換パスは、LC の転送エンジンのタイプによって異なります。 次に、エンジン 0、エンジン 1、および 2 つの LC のステップを示します。

パケット交換:エンジン 0 および エンジン 1 のラインカード

以降の項は、Cisco Press 発行の書籍『インサイド Cisco IOS ソフトウェア アーキテクチャ』に基づいています。

図 1は、エンジン 0 またはエンジン 1 の LC でパケット交換を行う場合の複数のステップを示します。

図 1: エンジン 0 およびエンジン 1 のスイッチング パス

packetsw1.gif

エンジン 0 およびエンジン 1 の LC のスイッチング パスは基本的に同じですが、エンジン 1 LC のスイッチング エンジンとバッファ マネージャの方が拡張されているため、パフォーマンスが向上しています。 次にスイッチング パスを示します。

  • ステップ 1 - インターフェイス プロセッサ(PLIM)がネットワーク メディア上のパケットを検出し、バースト メモリと呼ばれる、LC 上の FIFO メモリへのコピーを開始します。 各インターフェイスのバースト メモリ量は、LC のタイプによって異なります。通常、LC のバースト メモリ量は 128 KB 〜 1 MB です。

  • ステップ 2 - インターフェイス プロセッサが、受信 BMA のパケット バッファを要求します。どのプールのバッファを要求するかは、パケットの長さによって異なります。 フリー バッファがない場合、インターフェイスは廃棄され、インターフェイスの 「ignore」 カウンタが増分されます。 たとえば、インターフェイスに 64 バイトのパケットが着信した場合、BMA は 80 バイトのパケット バッファを割り当てようとします。 80 バイトのプールにフリー バッファがない場合、次の使用可能なプールからバッファが割り当てられることはありません。

  • ステップ 3 - BMA によってフリー バッファが割り当てられると、パケットはバッファにコピーされ、CPU による処理のために raw キュー(RawQ)にキューイングされます。 LC の CPU に割り込みが送信されます。

  • ステップ 4 - RawQ 内の各パケットは受信され次第(RawQ は FIFO)、LC の CPU によって処理されます。スイッチングの決定は、DRAM のローカル dCEF テーブルに問い合せて行われます。

    • 4.1 このパケットが、CEF テーブルでの有効な送信先アドレスを持つユニキャスト IP パケットの場合、パケット ヘッダーは、CEF 隣接関係テーブルから取得した新しいカプセル化情報によって書き換えられます。 交換されたパケットは、宛先スロットに対応する仮想出力キューにキューイングされます。

    • 4.2 送信先アドレスが CEF テーブルに登録されていない場合、パケットは廃棄されます。

    • 4.3 パケットが制御パケット(ルーティング更新など)の場合は、GRP の仮想出力キューにキューイングされ、GRP によって処理されます。

  • ステップ 5 - 受信 BMA がパケットを 64 バイトのセルに断片化し、発信 LC に転送するために FIA に渡されます。

ステップ 5 を終了すると、エンジン 0/1 LC に着信したパケットの交換は完了し、セルとしてスイッチ ファブリックに送信できる状態になっています。 パケット交換:ファブリックを通したセルの交換」セクションのステップ 6 に進みます。

パケット交換:エンジン 2 のラインカード

図 2 は、以下のステップのリストで説明されているように、エンジン 2 LC にパケットが着信したときのパケット交換パスを示します。

図 2: エンジン 2 スイッチング パス

packetsw2.gif

  • ステップ 1 - インターフェイス プロセッサ(PLIM)がネットワーク メディア上のパケットを検出し、バースト メモリと呼ばれる、LC 上の FIFO メモリへのコピーを開始します。 各インターフェイスのバースト メモリ量は、LC のタイプによって異なります。通常、LC のバースト メモリ量は 128 KB 〜 1 MB です。

  • ステップ 2 - ヘッダーと呼ばれる、パケットの最初の 64 バイトが、Packet Switching ASIC(PSA; パケット交換 ASIC)を通して受け渡されます。

    • 2.1 PSA は、PSA メモリのローカル CEF テーブルに問い合せてパケットを交換します。 PSA がパケットを交換できない場合は、ステップ 4 に進みます。それ以外の場合は、ステップ 3 に進みます。

  • ステップ 3 - Receive Buffer Manager(RBM; 受信バッファ マネージャ)が PSA からヘッダーを受信し、フリー バッファ ヘッダーにコピーします。 パケットのサイズが 64 バイトを超える場合、パケットのテールもパケット メモリの同じフリー バッファにコピーされ、発信 LC の仮想出力キューにキューイングされます。ステップ 5 に進みます。

  • ステップ 4 - PSA がパケットを交換できない場合は、パケットはこのステップに到達します。 これらのパケットは raw キュー(RawQ)にキューイングされます。ここからのスイッチング パスは、エンジン 1 とエンジン 0 の LC の場合(エンジン 0 のステップ 4)と基本的に同じです。 PSA が交換したパケットは、RawQ にキューイングされず、CPU に割り込みが送信されることはありません。

  • ステップ 5 - Fabric Interface Module(FIM; ファブリック インターフェイス モジュール)は、パケットをシスコ セルに分割し、発信 LC に転送するために Fabric Interface ASIC(FIA; ファブリック インターフェイス ASIC)にセルを送信します。

パケット交換:ファブリックを通したセルの交換

この段階までに、パケット交換エンジンでのパケット交換が完了しています。 この時点では、パケットはシスコ セルに分割されており、スイッチング ファブリックへの送信を待機しています。 この段階でのステップは次のとおりです。

  • ステップ 6 - FIA が CSC に許可要求を送信します。CSC はスイッチ ファブリックを通したセルの各転送をスケジュールします。

  • ステップ 7 - スケジューラがスイッチ ファブリックへのアクセスを許可すると、セルが宛先スロットに転送されます。 別のパケット内の他のセルがインターリーブされることもあるため、セルがすべて一度に転送されるとは限りません

パケット交換:パケットの送信

次の図 3 は、パケット交換の最終ステージを示します。 セルが再構成され、パケットがメディアに送信されます。 この処理は、発信ラインカードで行われます。

図 3: Cisco 12000 パケット交換:送信ステージ

packetsw3.gif

  • ステップ 8 - ファブリックを通して交換されたセルが、FIA を経由して送信先ラインカードに着信します。

  • ステップ 9 - 送信バッファ マネージャが送信パケット メモリからバッファを割り当て、このバッファ内でパケットを再構成します。

  • ステップ 10 - パケットが再構成されると、送信 BMA がパケットを LC 上の宛先インターフェイスの送信キューにキューイングします。 インターフェイス送信キューがいっぱいの(パケットがキューイングできない)場合は、パケットが廃棄され、出力キュー廃棄カウンタの値が増分されます。

    注:この送信管理では、パケットが RawQ にキューイングされるのは、送信の前に LC CPU で何らかの処理を行う必要がある場合だけです。  たとえば、IP の断片化、マルチキャスト、出力 CAR などの場合がこれに含まれます。

  • ステップ 11 - インターフェイス プロセッサが送信を待機しているパケットを検出し、送信メモリからバッファをデキューして内部 FIFO メモリにコピーし、メディア上のパケットを送信します。

パケット フローの要約

Cisco 12000 を通過する IP パケットは、次の 3 つのフェーズで処理されます。

  • 3 つのセクションの入力ラインカード:

    • 入力 PLIM(Physical Line Interface Module; 物理ライン インターフェイス モジュール):光電気変換、Synchronous Optical Network(SONET; 同期光ファイバ ネットワーク)/Synchronous Digital Hierarchy(SDH; 同期デジタル ハイアラーキ)のアンフレーミング、HDLC、および PPP 処理

    • IP 転送:FIB ルックアップに基づいた転送決定、および入力ユニキャスト キューまたはマルチキャスト キューのいずれかへのキューイング

    • 入力キュー管理およびファブリック インターフェイス:入力キューでの Random Early Detection(RED; ランダム早期検出)/Weighted Random Early Detection(WRED; 重み付けランダム早期検出)処理、およびファブリック利用率を最大化するためのファブリックへのデキュー

  • Cisco 12000 を通した、入力カードから 1 つまたは複数(マルチキャストの場合)の出力カードへの IP パケットの交換

  • 3 つのセクションの出力ラインカード:

    • 出力ファブリック インターフェイス:IP パケットの送信用再構成、出力キューへのキューイング、およびマルチキャスト パケットの処理

    • 出力キュー管理:入力キューでの RED/WRED 処理、および出力ラインの利用率を最大化するための出力 PLIM へのデキュー

    • 出力 PLIM:HDLC および PPP 処理、SONET/SDH フレーミング、電気光変換


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

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


関連情報


Document ID: 47320