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

Cisco 12000 シリーズ インターネット ルータでの show controller frfab | tofab queue コマンド出力の解釈方法

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

目次


概要

この文書は、show controller frfab queue および show controller tofab queue コマンド出力の解釈方法について説明しています。また、これらの特別なキューに関連する、Cisco 12000 シリーズ インターネット ルータのベース アーキテクチャの詳しい概要についても示しています。

背景説明

Cisco 12000 シリーズ インターネット ルータ上の Line Card(LC; ラインカード)にはそれぞれ、次の 2 種類のメモリが搭載されています。

  • ルート メモリまたはプロセッサ メモリ(Dynamic RAM - DRAM):このメモリは主に、オンボード プロセッサでの Cisco IOS(R) ソフトウェアの実行と、ネットワーク ルーティング テーブル(Forwarding Information Base(FIB; 転送情報ベース)、隣接関係)の保持に使用されます。
  • パケット メモリ(Synchronous Dynamic RAM - SDRAM):ラインカードのパケット メモリは、ラインカード プロセッサによるスイッチングの決定を待つデータ パケットを一時的に保存します。

この文書は、ToFab と FrFab(ファブリックに向かう部分とファブリックから来る部分)の 2 つのバンクに分割されたパケット メモリのみを対象としています。ToFab メモリは、LC 上のいずれかのインターフェイスに到着し、ファブリックに向かうパケットのために使用されます。FrFab メモリは、ファブリック側から、LC 上のインターフェイスを出て行くパケットのために使用されます。

Tofab および Frfab キューは、Cisco 12000 シリーズ インターネット ルータでの ignored パケットのトラブルシューティングを効率的に行うために理解しなければならない、最も重要な概念です。詳細については、「トラブルシューティング:Cisco 12000 シリーズ インターネット ルータでの ignored パケットとメモリ不足による廃棄」を参照してください。

注:「ToFab」(ファブリックに向かう)と「Rx」(ルータで受信される)は同じことを 2 つの異なる用語で表現したものです。「FrFab」(ファブリックから来る)と「Tx」(ルータから送信される)も同様です。たとえば、ToFab Buffer Management ASIC(BMA; バッファ管理 ASIC)は RxBMA とも呼ばれます。この文書では ToFab/FrFab の表記を使用しますが、他の文書では Rx/Tx の用語が用いられている場合があります。

パケット メモリへのアクセスは Buffer Management ASIC(BMA; バッファ管理 ASIC)を通じて行われます。BMA はパケットのバッファリングとバッファ キュー管理機能をラインカードに提供します。パケットはすべて BMA を 2 回通過します。1 回は入ってくるとき、もう 1 回は出て行くときです。つまり、パケットは Physical Layer Interface Module(PLIM; 物理層インターフェイス モジュール)に到達し、SDRAM バッファでほんの短い時間待機した後、バッファから読み出されて Fabric Interface ASIC(FIA; ファブリック インターフェイス ASIC)モジュールに送られます。ここでパケットはシスコ セルに分割されてスイッチ ファブリックに送信されます。続いて、スイッチ ファブリックから送信されたシスコ セルが出力ラインカードのファブリック インターフェイス ASIC で受信されます。シスコ セルはパケットに再構成されて SDRAM バッファに入り、PLIM を経由して最終的にワイヤに送出されます。

バッファ分割アルゴリズム

Cisco IOS ソフトウェアには、SDRAM をさまざまなサイズのバッファに分割するバッファ分割アルゴリズムが実装されています。GRP やその他のソースがラインカードに分割を指示し、それを受けてラインカードが分割を実行します。分割方法には、同じサイズのバッファのプールを作成する単純な方法から、サイズの異なる複数のプールを作成し、各プールには同じサイズのバッファを割り当てるという複雑な方法まで、各種のタイプがあります。

同じサイズのバッファはすべて 1 つのプールに関連付けられます。Inter-Process Communication(IPC; プロセス間通信)に使用する際は必ず 1 つのプールが割り当てられます。対応する Queue Static RAM(QSRAM)はそれぞれ、キューのヘッド、テール、長さ、長さのしきい値、SDRAM 内の対応するバッファ アドレス、および次のキュー要素によって更新されます。

次の一連の状況を通じて、ラインカードでのバッファ分割が行われます。

  • Maintenance BUS(MBUS; メンテナンス バス)経由でのブートロード - バッファを分割し、Cisco IOS ソフトウェア イメージのダウンロードを保持するための単純な分割コール。
  • Cisco IOS ソフトウェア イメージの配置 - Inter-Process Communication(IPC; プロセス間通信)を可能にするための、LC の単純な分割コール。これにより、GRP は IPC を使用して初期分割仕様を LC に指示できるようになります。分割に使用できる SDRAM はすべて再分割されます。
  • IPC の起動後 - IPC を使用して、GRP は LC の複雑な分割を何回もコールし、すべての SDRAM を動的に再分割できます。

show diag コマンド出力に、受信および送信パケット メモリの量が表示されます。

Router#show diag

 SLOT 1  (RP/LC 1 ): 1 Port SONET based SRP OC-12c/STM-4 Single Mode

 ....

 FrFab SDRAM size: 134217728 bytes, SDRAM pagesize: 8192 bytes   !--- 送信パケット メモリ

 ToFab SDRAM size: 134217728 bytes, SDRAM pagesize: 8192 bytes   !--- 受信パケット メモリ

 ....

受信パケット メモリ

このメモリは、パケット バッファから成る複数のプールに分割されます。受信メモリの分割状況を確認するには、ラインカードに attach してから show controller tofab queue コマンドを実行します。次に例を示します。

Router#attach ?

 <0-15>  slot number of linecard to connect

 <cr>   
Router#attach 1

 Entering Console for 1 Port SONET based SRP OC-12c/STM-4 in Slot: 1

 Type "exit" to end this session   
Press RETURN to get started!   
LC-Slot1>enable

 LC-Slot1#

 LC-Slot1#show controllers tofab queues

 Carve information for ToFab buffers

    SDRAM size: 33554432 bytes, address: 30000000, carve base: 30029100

    33386240 bytes carve size, 4 SDRAM bank(s), 8192 bytes SDRAM pagesize, 2 carve(s)

    max buffer data size 9248 bytes, min buffer data size 80 bytes

    40606/40606 buffers specified/carved

    33249088/33249088 bytes sum buffer sizes specified/carved   
        Qnum    Head    Tail        #Qelem     LenThresh

         ----    ----    ----        ------     ---------   
   5 non-IPC free queues:   
        20254/20254    (buffers specified/carved), 49.87%, 80 byte data size

         1       17297   17296       20254      65535   
        12152/12152    (buffers specified/carved), 29.92%, 608 byte data size

         2       20548   20547       12152      65535   
        6076/6076    (buffers specified/carved), 14.96%, 1568 byte data size

         3       32507   38582       6076       65535   
        1215/1215    (buffers specified/carved), 2.99%, 4544 byte data size

         4       38583   39797       1215       65535   
        809/809    (buffers specified/carved), 1.99%, 9248 byte data size

         5       39798   40606       809        65535   
   IPC Queue:

         100/100 (buffers    specified/carved), 0.24%, 4112 byte data size

         30      72      71          100        65535   
   Raw  Queue:

         31      0       17302       0          65535   
   ToFab Queues:

            Dest

         Slot

         0       0       0           0          65535

         1       0       0           0          65535

         2       0       0           0          65535

         3       0       0           0          65535

         4       0       0           0          65535

         5       0       17282       0          65535

         6       0       0           0          65535

         7       0       75          0          65535

         8       0       0           0          65535

         9       0       0           0          65535

         10      0       0           0          65535

         11      0       0           0          65535

         12      0       0           0          65535

         13      0       0           0          65535

         14      0       0           0          65535

         15      0       0           0          65535

  Multicast      0       0           0          65535

 LC-Slot1#

上記の例で見られる主なフィールドの説明を次に示します。

  • SDRAM size: 33554432 bytes, address: 30000000, carve base: 30029100 - 受信パケット メモリのサイズとアドレスの開始位置。
  • max buffer data size 9248 bytes, min buffer data size 80 bytes - バッファ サイズの最大値と最小値。
  • 40606/40606 buffers specified/carved - Cisco IOS ソフトウェアによって分割するよう指定されたバッファと、実際に分割されたバッファの数。
  • non-IPC free queues - 非 IPC バッファ プールはパケット バッファ プールです。ラインカードに到達したパケットには、パケットのサイズに応じて、これらのバッファ プールの中からいずれか 1 つのバッファが割り当てられます。非 IPC フリー キューは 3 つだけ持つことが可能で、ボードがイーサネットの場合、プールのサイズは 4k ではなく、最大でもわずか 1.5 k です。これは、ToFab キューが最大でそのラインカードの Maximum Transmission Unit(MTU; 最大伝送ユニット)に分割されるためです。出力例では、サイズがそれぞれ 80、608、1568、4544、および 9248 バイトである 5 つのパケット バッファ プールが示されています。各プールの詳細を次に示します。
    • 20254/20254 (buffers specified/carved), 49.87%, 80 byte data size - 受信パケット メモリの 49.87 % が 20254 個の 80 バイト バッファに分割されています。
    • Qnum - キュー番号。
    • #Qelem - 現在そのキューに割り当てられているバッファの数。これがフリー キューであれば、これらのバッファはシステムで使用されます。ToFab キューまたは送信キューであれば、これらのバッファはシステムで使用されません。これは、どのキューが混雑しているを確認する際にチェックするカラムです。
    • Head と Tail - ヘッドおよびテール メカニズムによってキューが正しく移動していることが保証されます。
  • IPC Queue - LC から GRP へのプロセス間通信メッセージのために確保されたキュー。
  • Raw Queue - 着信パケットが非 IPC フリー キューのバッファに割り当てられた場合、そのパケットは raw キューにキューイングされます。raw キューは、割り込みの間に LC CPU によって First In, First Out(FIFO; 先入れ先出し)方式で処理されます。「Raw Queue」行の #Qelem カラムの数が非常に多い場合は、CPU 処理待ちのパケットが多すぎて CPU が負荷に追いつくことができず、それらのパケットはやがて無視されるようになります。ただし、このような状況に陥るのは非常にまれです。
  • ToFab Queue - 仮想出力キュー。宛先スロットごとに 1 つずつと、マルチキャスト トラフィック用に 1 つあります。上の例では、最後の部分に 15 個の仮想出力キューが示されています。これは 12012 ルータで、このルータはもともと 15 スロット シャーシ用に設計されたものであるため、キュー 13〜15 は使用されていません。

入力ラインカードの CPU によってパケット スイッチングが決定されると、パケットは宛先のスロットに対応する仮想出力キューにキューイングされます。{}4 番目のカラムの数字は、仮想出力キューに現在キューイングされているパケットの数を示します。

ToFab BMA でのパケット フロー

ステップ 1 - パケットが Physical Layer Interface Module(PLIM; 物理層インターフェイス モジュール)に到達します。パケットが受信され処理されると、「First In, First Out(FIFO; 先入れ先出し)バースト メモリ」と呼ばれる小さなメモリ(およそ 2 x Maximum Transmission Unit(MTU; 最大伝送ユニット)のバッファ)に Direct Memory Access(DMA; ダイレクト メモリ アクセス)により転送されます。このメモリの量は LC のタイプによって異なります(128 KB〜1 MB)。

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

ステップ 3 - この処理の間に、FIFO バースト メモリに別のパケットが受信される場合があります。FIFO バースト メモリのサイズが 2 x MTU であるのはこのためです。適切なキューに使用可能な空きバッファがある場合、パケットは BMA によって該当するサイズのフリー キュー リストに格納されます。このバッファは raw キューに置かれます。raw キューはラインカードのスイッチング エンジンのタイプに応じて Salsa ASIC または R5K CPU によって検査されます。

ステップ 4 - エンジン 0 LC では、R5K CPU が DRAM 内にあるローカルの Distributed Cisco Express Forwarding(dCEF)テーブルを参照してパケットの宛先を決定します。続いてパケットは、raw キューのバッファから宛先スロットに対応する ToFabric キューのバッファに移動します。宛先が dCEF テーブルに登録されていなければ、パケットは廃棄されます。パケットが制御パケット(ルーティング更新など)の場合は GRP のキューにキュイングされ、GRP によって処理されます。12016 ルータには、17 個の ToFab キューがあります(ユニキャスト用に 16 個とマルチキャスト用に 1 個)。

ステップ 5 - ToFab BMA によってバッファが適切な ToFab キューにキューイングされます。この時点で、バッファが属するプールの #Qelem カウンタが 1 減り、ToFab キュー カウンタが 1 増えます。

注:ToFab キューはラインカードごとに 1 つずつあります(これには GRP も含まれます)。これらのキューは Virtual Output Queues(VOQ; 仮想出力キュー)と呼ばれ、ヘッドオブライン ブロッキングを防止するために重要です。

ステップ 6 - Fabric Interface ASIC(FIA; ファブリック インターフェイス ASIC)によって出力キューが空でないことが確認されます。FIA はパケットを 48 バイトのセルに分割するようセットアップされています。パケットに 8 バイトのヘッダーが追加されて、56 バイトのシスコ セルがスイッチ ファブリックに送信されます。

送信パケット メモリ

送信パケット メモリには、スイッチ ファブリックから来て物理インターフェイスへの送信を待っているパケットが格納されます。このメモリも、さまざまなサイズのプールに分割されます。

送信パケット メモリを表示するには、GRP からラインカードに attach し、show controller frfab queue コマンドを実行します。FrFab 出力には、ToFab 出力のフィールドに加えて、Interface Queues セクションがあります。その出力内容は発信 LC 上のインターフェイスのタイプと数によって異なります。

インターフェイス キューはラインカード上のインターフェイスごとに 1 つずつ存在します。特定のインターフェイスから送出されるパケットが、対応するインターフェイス キューにキューイングされます。

LC-Slot1#show controller frfab queue

 ========= Line Card (Slot 2) =======

 Carve information for FrFab buffers

    SDRAM size: 16777216 bytes, address: 20000000, carve base: 2002D100

    16592640 bytes carve size, 0 SDRAM bank(s), 0 bytes SDRAM pagesize, 2 carve(s)

    max buffer data size 9248 bytes, min buffer data size 80 bytes

    20052/20052 buffers specified/carved

    16581552/16581552 bytes sum buffer sizes specified/carved   
        Qnum    Head       Tail               #Qelem  LenThresh

         ----    ----       ----               ------  ---------
   5 non-IPC free queues:   
        9977/9977 (buffers    specified/carved), 49.75%, 80 byte data size

         1       101        10077              9977    65535   
        5986/5986 (buffers    specified/carved), 29.85%, 608 byte data size

         2       10078      16063              5986    65535   
        2993/2993 (buffers    specified/carved), 14.92%, 1568 byte data size

         3       16064      19056              2993    65535   
        598/598 (buffers    specified/carved), 2.98%, 4544 byte data size

         4       19057      19654              598     65535  
        398/398 (buffers    specified/carved), 1.98%, 9248 byte data size

         5       19655      20052              398     65535   
   IPC Queue:

         100/100 (buffers    specified/carved), 0.49%, 4112 byte data size

         30      77         76                 100     65535   
   Raw Queue:

         31      0          82                 0       65535    
   Interface Queues:
        0       0          0                  0       65535

         1       0          0                  0       65535

         2       0          0                  0       65535

         3       0          0                  0       65535

上記の例で見られる主なフィールドの説明を次に示します。

  • Non-IPC free queues:これらのキューはそれぞれサイズの異なるパケット バッファ プールです。パケットがファブリックを経由して受信されると、適切なサイズのバッファがこれらのキューのいずれかから取得され、パケットがその中にコピーされます。このバッファは該当する出力インターフェイス キューに置かれます。
  • 注:ルータ全体で必要とされる数のプールが作成されます。そのため、FrFab キューの最大の分割サイズはシステム全体で最も大きい MTU になります。ToFab キューでは FrFab キューと異なり、最大の分割サイズは特定のラインカードで最も大きい MTU になります。

  • IPC queue:GRP から LC へのプロセス間通信メッセージのために確保されたキュー。
  • Interface queues:これらのキューはスロット番号ではなく、インターフェイスに対応します。最後の数(65535)は TX-queue-limit で、キューの最大長を制御します。この数を変更するには、エンジン 0 ラインカードで TX-queue limit コマンドを使用します。輻輳時には、このコマンドを使用して、特定のポート用のインターフェイス キューに設定された数を超えるパケットが出力 LC にバッファリングされる事態を回避できます。TX-queue limit には必ず、このインターフェイス用のすべての FrFab キューが含まれないような小さい数を設定してください。ただし、この調整では、発信 LC でどのパケットが廃棄されるかを制御することはできません。詳細については、「トラブルシューティング:Cisco 12000 シリーズ インターネット ルータでの ignored パケットとメモリ不足による廃棄」を参照してください。

FrFab BMA でのパケット フロー

この時点で、シスコ セルはすでに FIA によってスイッチ ファブリックに送信されています。

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

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

FrFab BMA SDRAM キューの状態を表示するには、LC で show controller frfab queue コマンドを使用します。

ステップ 2 - このステップは基本的に ToFab BMA の出力と同じです。到着したパケットは、それぞれの対応するフリー キューからデキューされるパケットとして配置されます。これらのパケットは FrFab キューに置かれ、出力処理のためにインターフェイス キュー(物理ポートごとに 1 つずつある)か、raw キューにキューイングされます。raw キューで行われるのはポート単位のマルチキャスト複製、Modified Deficit Round Robin(MDRR)(Distributed Weighted Fair Queuing(DWFQ)と同じ発想)、出力 Committed Access Rate(CAR; 専用アクセス レート)くらいで、それほど多くありません。送信キューがいっぱいの場合はパケットが廃棄され、出力廃棄カウンタの値が増えます。

ステップ 3 - PLIM の TX 部分がパケットを送信できる状態になるまで待ちます。FrFab BMA は Media Access Control(MAC; メディア アクセス制御)を(シスコ セルのヘッダーに含まれる情報に基づいて)実際に書き換えてから、そのパケットを PLIM 回路内の小さなバッファ(2 x MTU)へ DMA により転送します。PLIM は、必要に応じて Asynchronous Transfer Mode(ATM; 非同期転送モード)の Segmentation And Reassembly(SAR)と Synchronous Optical Network(SONET; 同期光ファイバ ネットワーク)のカプセル化を行い、パケットを送信します。


関連情報

関連トピック

その他の文書


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

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


Document ID: 18002