内容

概要

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

はじめに

表記法

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

前提条件

このドキュメントに関しては個別の前提条件はありません。

使用するコンポーネント

このドキュメントの情報は、次のハードウェアに基づくものです。

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

背景

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

このドキュメントでは、2つのバンクに分割されたパケットメモリ(PMEMORY)だけに焦点を当てています。ToFabおよびFrFab(ファブリックおよびファブリックに向けて) ToFab メモリは、LC 上のいずれかのインターフェイスに到着し、ファブリックに向かうパケットのために使用されます。FrFab メモリは、ファブリック側から、LC 上のインターフェイスを出て行くパケットのために使用されます。

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

注:ToFab(ファブリックに向けて)とRx(ルータで受信)は、「FrFab」(ファブリックから)と「Tx」(ルータで送信)の2つの異なる名前です。 たとえば、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 内の対応するバッファ アドレス、および次のキュー要素によって更新されます。

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

次の例を参照してください。

Router#attach 1
Entering Console for 1 Port Packet Over SONET OC-48c/STM-16 in Slot: 1
Type "exit" to end this session


Press RETURN to get started!


LC-Slot1>enable
LC-Slot1#show controllers tofab queues
Carve information for ToFab buffers
SDRAM size: 268435456 bytes, address: 30000000, carve base: 30019100
268332800 bytes carve size,  4 SDRAM bank(s), 16384 bytes SDRAM
pagesize, 2 carve(s)
    max buffer data size 4544 bytes, min buffer data size 80 bytes
    262140/262140 buffers specified/carved
    240637152/240637152 bytes sum buffer sizes specified/carved

         Qnum    Head    Tail            #Qelem  LenThresh
         ----    ----    ----            ------  ---------

    4 non-IPC free queues:

        115254/115254 (buffers specified/carved), 43.96%, 80 byte data size
         1       201     115454          115254  262143

         81202/81202 (buffers specified/carved), 30.97%, 608 byte data size
         2       115455  196656          81202   262143

        41910/41910 (buffers specified/carved), 15.98%, 1568 byte data size
         3       196657  238566          41910   262143

         23574/23574 (buffers specified/carved), 8.99%, 4544 byte data size
         4       238567  262140          23574   262143

    IPC Queue:
         200/200 (buffers specified/carved), 0.7%, 4112 byte data size
         30      131     130             200     262143

    Raw Queue:
         31      0       0               0       65535

    ToFab Queues:
         Dest
        Slot
        0       0       0               0       262143
        1       0       0               0       262143
        2       0       0               0       262143
        3       0       0               0       262143
        4       0       0               0       262143
        5       0       0               0       262143
        6       0       0               0       262143
        7       0       0               0       262143
        8       0       0               0       262143
        9       0       0               0       262143
        10      0       0               0       262143
        11      0       0               0       262143
        12      0       0               0       262143
        13      0       0               0       262143
        14      0       0               0       262143
        15      0       0               0       262143
  Multicast     0       0               0       262143

このラインカードが起動して稼働してから2つのカードが存在し、4つのプールがあることがわかります。80、608、1568、および 4544。

次に、このラインカードに属する1つのインターフェイスのMTUを変更します。

Router(config)#interface pos1/0
Router(config-if)#mtu ?
<64-18020>  MTU size in bytes

Router(config-if)#mtu 2000

次に、LCに接続し、何が変更されたかを確認します。

LC-Slot1#show control tofab queue
Carve information for ToFab buffers
   SDRAM size: 268435456 bytes, address: 30000000, carve base: 30019100
   268332800 bytes carve size,  4 SDRAM bank(s), 16384 bytes SDRAM
pagesize, 3 carve(s)
    max buffer data size 4112 bytes, min buffer data size 80 bytes
    262142/262142 buffers specified/carved
    247054400/247054400 bytes sum buffer sizes specified/carved

         Qnum    Head    Tail            #Qelem  LenThresh
         ----    ----    ----            ------  ---------

    4 non-IPC free queues:

         91680/91680 (buffers specified/carved), 34.97%, 80 byte data size
         1       202     201             91680   262143

         65485/65485 (buffers specified/carved), 24.98%, 608 byte data size
         2       91884   91883           65485   262143

         49769/49769 (buffers specified/carved), 18.98%, 1568 byte data size
         3       157366  207134          49769   262143

         55008/55008 (buffers specified/carved), 20.98%, 2048 byte data size
         4       207135  262142          55008   262143

    IPC Queue:
         200/200 (buffers specified/carved), 0.7%, 4112 byte data size
         30      118     117             200     262143

    Raw Queue:
         31      206     205             0       65535

    ToFab Queues:
         Dest
         Slot
         0       0       0               0       262143
         1       0       0               0       262143
         2       0       0               0       262143
         3       0       0               0       262143
         4       0       0               0       262143
         5       0       0               0       262143
         6       0       0               0       262143
         7       206     205             0       262143
         8       0       0               0       262143
         9       0       0               0       262143
         10      0       0               0       262143
         11      0       0               0       262143
         12      0       0               0       262143
         13      0       0               0       262143
         14      0       0               0       262143
         15      0       0               0       262143
  Multicast      0       0               0       262143

現在は3つのカーブがあり、非IPCキューの最大バッファサイズは4544ではなく2048バイトです。

FrFabキューは変更されません。

LC-Slot1#show controllers frfab queues
 Carve information for FrFab buffers
    SDRAM size: 268435456 bytes, address: 20000000, carve base: 2039D100
    264646400 bytes carve size,  4 SDRAM bank(s), 16384 bytes SDRAM
pagesize, 3 carve(s)
    max buffer data size 9248 bytes, min buffer data size 80 bytes
    251927/251927 buffers specified/carved
    209883344/209883344 bytes sum buffer sizes specified/carved

         Qnum    Head    Tail            #Qelem  LenThresh
         ----    ----    ----            ------  ---------

    6 non-IPC free queues:

         123349/123349 (buffers specified/carved), 48.96%, 80 byte data size
         1       210     209             123349  262143

         75519/75519 (buffers specified/carved), 29.97%, 608 byte data size
         2       123552  123551          75519   262143

         37759/37759 (buffers specified/carved), 14.98%, 1568 byte data size
         3       199069  236827          37759   262143

         2516/2516 (buffers specified/carved), 0.99%, 2048 byte data size
         4       236828  239343          2516    262143

         7551/7551 (buffers specified/carved), 2.99%, 4544 byte data size
         5       239344  246894          7551    262143

         5033/5033 (buffers specified/carved), 1.99%, 9248 byte data size
         6       246895  251927          5033    262143

    IPC Queue:
         200/200 (buffers specified/carved), 0.7%, 4112 byte data size
         30      52      51              200     262143

    Multicast Raw Queue:
         29      0       0               0       62981

    Raw Queue:
         31      52      51              0       251928

    Interface Queues:
         0       210     209             0       262143

最大バッファサイズは9248バイトです。次に、別のカードの別のインターフェイスで10000のMTUを設定します。

 Router(config-if)#interface pos5/0
 Router(config-if)#mtu ?
   <64-18020>  MTU size in bytes

 Router(config-if)#mtu 10000


 LC-Slot1#show contr frfab queues
 Carve information for FrFab buffers
    SDRAM size: 268435456 bytes, address: 20000000, carve base: 2039D100
    264646400 bytes carve size,  4 SDRAM bank(s), 16384 bytes SDRAM
pagesize, 4 carve(s)
    max buffer data size 10064 bytes, min buffer data size 80 bytes
    257309/257309 buffers specified/carved
    213496016/213496016 bytes sum buffer sizes specified/carved

         Qnum    Head    Tail            #Qelem  LenThresh
         ----    ----    ----            ------  ---------

    5 non-IPC free queues:

         128556/128556 (buffers specified/carved), 49.96%, 80 byte data size
         1       204     203             128556  262143

         77133/77133 (buffers specified/carved), 29.97%, 608 byte data size
         2       128758  128757          77133   262143

         38566/38566 (buffers specified/carved), 14.98%, 1568 byte data size
         3       205890  244455          38566   262143

         7713/7713 (buffers specified/carved), 2.99%, 4544 byte data size
         4       244456  252168          7713    262143

         5141/5141 (buffers specified/carved), 1.99%, 10064 byte data size
         5       252169  257309          5141    262143

    IPC Queue:
         200/200 (buffers specified/carved), 0.7%, 4112 byte data size
         30      24      23              200     262143

    Multicast Raw Queue:
         29      0       0               0       64327

    Raw Queue:
         31      24      23              0       257310

    Interface Queues:
         0       205     204             0       262143

FrFabキューには4つのカーブがあり、最大バッファサイズは10064バイトに変更されています。

注:Point-to-Point Protocol(PPP)カプセル化が設定されたPacket Over Sonet(POS)ラインカードでは、最大受信ユニット(MRU)ネゴシエーションが実行されますが、MTUサイズは調整されません。さらに、インターフェイスでMTUが変更されても、PPP接続はリセットされません。

受信パケット メモリ

このメモリは、パケット バッファから成る複数のプールに分割されます。受信メモリがどのように分割されるかを確認するには、次に示すようにラインカードに接続し、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#

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

入力ラインカードの 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上の特定用途向け集積回路(ASIC)がバッファ管理ASIC(BMA)に接続し、パケットを入れるバッファを要求します。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 増えます。

注:ラインカードごとに1つのToFabキューがあります(これにはGRPが含まれます)。 これらのキューは、仮想出力キュー(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

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

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 キューにキューイングされます。rawQ では多くのことは行われません。ポート単位のマルチキャストレプリケーション、Modified Deficit Round Robin(MDRR):Distributed Weighted Fair Queuing(DWFQ)と同じ概念、および出力Committed Access Rate(CAR)です。 送信キューがいっぱいの場合は、パケットが廃棄され、出力廃棄カウンタの値が増分されます。

ステップ3:FrFab BMAは、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; 同期光ファイバ ネットワーク)のカプセル化を行い、パケットを送信します。

関連情報