このドキュメントでは、ルータが IPC 関連のログ メッセージを報告する原因と、この問題をトラブルシューティングする方法を説明します。これらの IPC メッセージには、設定コマンドやそれらのコマンドへの応答のほか、LC から RP への報告が必要な「イベント」が含まれています。
このドキュメントの読者は次のトピックについての専門知識を有している必要があります。
シスコ ルータの管理
IPC およびその用語
このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づいています。
Cisco 12000、10000、7600、および 7500 シリーズ ルータをサポートしているすべての Cisco IOS® ソフトウェア リリース。
Cisco 12000、10000、7600、および 7500 シリーズ ルータ。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期(デフォルト)設定の状態から起動しています。対象のネットワークが実稼働中である場合には、どのようなコマンドについても、その潜在的な影響について確実に理解しておく必要があります。
ドキュメント表記の詳細については、『シスコ テクニカル ティップスの表記法』を参照してください。
Cisco IOS ソフトウェアのプロセス間通信(IPC)モジュールは、分散システムのプロセスが相互に対話できる通信インフラストラクチャを提供します。It also provides transparent communication across backplanes, networks and shared memory.
IPC サービスは、分散システムのラインカード(LC)と中央ルート プロセッサ(RP)が、RP から LC に、およびアクティブ RP とスタンバイ RP の間で送信される IPC メッセージの交換によって相互に対話するための手段として機能します。これらのメッセージには、設定コマンドおよびそれに対する応答が含まれ、さらに、LC が RP に報告する必要のある「イベント」も含まれます。
Cisco 12000 シリーズ、Cisco 10000 シリーズ、Cisco 7600 シリーズ、および Cisco 7500 シリーズは、IPC のメッセージに基づいて分散アーキテクチャを使用します。まれに、これらのルータで、これらの IPC 関連のログ メッセージが報告されることがあります。
Cisco 12000シリーズ:%IPC-3-NOBUFF:The main IPC message header cache has emptied
Cisco 7500シリーズ:%IPC_RSP_CBUS-3-NOBUF:No more IPC memd buffers to transmit IPC message
注:IPCは、Cisco 6400シリーズおよびCisco 7304シリーズでも使用されます。
一般的な IPC の用語は次のとおりです。
IPC:プロセス間通信。
IPCアドレス:16ビットシートIDと16ビットポートIDで構成される32ビットワード。
IPC クライアント:IPC サービスを使用するソフトウェア モジュール。
IPC ポート:すべての通信の送信元と宛先として使用される IPC 内の通信エンドポイント。
IPC シート:IPC のシートは、プロセッサなど、IPC を使用すると通信できる計算要素です。IPC シートは、IPC クライアントと IPC ポートが存在する場所です。
IPCセッション:IPCセッションは、2つのIPCポート間のアクティブなシンプレックス通信チャネルです。
IPC を使用するすべての通信は、IPC ポートの間で行われます。ポートは、IPC の通信エンドポイントです。各 IPC ポートは、IPC アドレスと呼ばれる論理アドレスに関連付けられています。IPC は、IPC のポートの IPC アドレスを、IPC メッセージの送信時の返信用アドレスとして、または IPC メッセージの受信時の宛先アドレスとして使用します。
IPC アドレスは、ローカル IPC シート マネージャによって IPC ポートに割り当てられます。シートとは、IPC プロトコルが現在実行されているプロセッサです。シート マネージャとは、ローカル IPC ポートのリストとローカル ネーム サービスを維持し、公開 IPC 通信セッションも維持するプロセスです。
IPC ポートが作成されると、IPC クライアントは、その IPC ポートにポート名を割り当てます。これで、その他の IPC のクライアントが、新しく作成された IPC ポートを参照するときにポート名を使用できます。ポート名は、シート名とポートの機能または説明から成る文字列です。
Cisco IPC には、ポートへの配信の信頼性に 3 種類のレベルがあります。これは、ポートをオープンするときに定義されます。
高信頼性:メッセージの配信は保証されています。配信が失敗すると、再試行されます。
低信頼性:配信はベストエフォート型の試みです。配信が失敗しても、何も表示されません。
通知付き低信頼性:メッセージの配信は保証されていません。ただし、送信者は失敗の通知を受信します。
show ipc nodes コマンドには、いわゆる IPC realm の中に存在する IPC シートが表示されます。
Router#show ipc nodes There are 3 nodes in this IPC realm. ID Type Name Last Last Sent Heard 10000 Local IPC Master 0 0 1030000 RSP-CY RSP IPC card slot 3 7 7 1000000 RSP-CY RSP IPC card slot 0 10 10
スレーブ RP が存在する場合は、show ipc nodes コマンドで、次の Cisco 10000 シリーズ ルータからの出力例に示すように、スレーブ RP のアドレスが一覧表示されます。
10k-2#show ipc nodes There are 5 nodes in this IPC realm. ID Type Name Last Last Sent Heard 10000 Local IPC Master 0 0 20000 UDP C10K Line Card slot 2/0 3 3 30000 UDP C10K Line Card slot 3/0 3 3 40000 UDP C10K Line Card slot 1/0 3 3 50000 Ethernet Slave 18 45
IPC ポートを作成した後は、IPC クライアントがそのポート名を、IPC マスターが制御するグローバル ネーム サービスに登録できます。
A collection of IPC seats, which communicate with each other, is called a zone.各 IPC ゾーンに、1 つの IPC シートが IPC ゾーン マネージャまたはマスター(略して IPC マスター)として指定されます。論理的には、IPC プロトコルのすべての IPC シート接続はポイントツーポイント接続です。すべての IPC シート通信は、通常、アクティブな RP と、ラインカードまたはスタンバイ RP の間で行われます。ラインカード間の通信は可能です。
デバイスは、IPC メッセージを交換する前に、ローカル ポートを作成し、宛先ポートを見つける必要があります。デバイスはローカル ポートを作成しますが、これらのポートは送信元ポートとは見なされません。これは、IPC による通信は単方向通信であるためです。RP は、LC と通信しようとするときに、最初に LC 上のポートをオープンします(LC であらかじめポートを作成して、それを IPC マスターである RP に登録しておく必要があります)。 正常にオープンしたら、通常の IPC メッセージ トラフィックを開始できます。
Cisco 12000 および 7500 シリーズでは、ルート プロセッサ(Gigabit Route Processor(GRP; ギガビット ルート プロセッサ)か Route Switch Processor(RSP; ルート スイッチ プロセッサ)のどちらか)とインテリジェント ラインカードが、IPC エンドポイントとして機能します。「IPC マスター」はプロセッサのグループを制御します。ルータの初期設定時に、IPC マスターは、システムのラインカードにある IPC エンドポイントを検出します。このために IPC マスターは、すべてのスロットをスキャンし、コントローラ タイプを識別して、コントローラに IPC 機能があるかどうかを判断します。
これらのポートを表示するには show ipc ports コマンドを使用します。IPC スレーブでは、このコマンドにより、その特定の IPC シート上ですでに作成されたポートが一覧表示されます。IPC マスターでこのコマンドを発行すると、マスター上で作成されているポートのほかに、IPC スレーブ(LC)により登録されているポートも表示されます。 また、show ipc ports open コマンドでは、「この」シートからすでにオープンされたポートが一覧表示されます。次に出力例を示します。
router#show ipc ports There are 87 ports defined. Port ID Type Name 10000.1 unicast IPC Master:Zone 10000.2 unicast IPC Master:Echo 10000.3 unicast IPC Master:Control 10000.4 unicast IPC Master:Init port_index = 0 seat_id = 0x1020000 last sent = 0 last heard = 1 port_index = 1 seat_id = 0x1010000 last sent = 0 last heard = 1 port_index = 2 seat_id = 0x1040000 last sent = 0 last heard = 1 port_index = 3 seat_id = 0x1050000 last sent = 0 last heard = 1 port_index = 4 seat_id = 0x1060000 last sent = 0 last heard = 1 port_index = 5 seat_id = 0x1070000 last sent = 0 last heard = 1 port_index = 6 seat_id = 0x1080000 last sent = 0 last heard = 1 port_index = 7 seat_id = 0x1090000 last sent = 0 last heard = 1 port_index = 8 seat_id = 0x10A0000 last sent = 0 last heard = 1 port_index = 9 seat_id = 0x10B0000 last sent = 0 last heard = 1 port_index = 10 seat_id = 0x1030000 last sent = 0 last heard = 1 10000.5 unicast Remote TTY Server Port port_index = 0 seat_id = 0x1070000 last sent = 0 last heard = 2 port_index = 1 seat_id = 0x1010000 last sent = 0 last heard = 2 port_index = 3 seat_id = 0x1040000 last sent = 0 last heard = 2 port_index = 4 seat_id = 0x1050000 last sent = 0 last heard = 2 Port ID Type Name port_index = 5 seat_id = 0x1060000 last sent = 0 last heard = 3 port_index = 6 seat_id = 0x1080000 last sent = 0 last heard = 2 port_index = 7 seat_id = 0x1090000 last sent = 0 last heard = 2 port_index = 8 seat_id = 0x10A0000 last sent = 0 last heard = 2 port_index = 9 seat_id = 0x10B0000 last sent = 0 last heard = 2 [output omitted]
port_index フィールドは、着信メッセージを処理するときに宛先 IPC によって使用されるセッション ID です。スレーブ RP がある場合は、次の出力例に示すように、show ipc ports コマンドでスタンバイ ポート情報が表示されます。
10k-2#show ipc ports There are 16 ports defined. Port ID Type Name 10000.1 Unicast IPC Master:Zone 10000.2 Unicast IPC Master:Echo 10000.3 Unicast IPC Master:Control 10000.4 Unicast Microcode Server 10000.5 Unicast RFS Server Port 10000.6 Unicast Remote File System Server Port 10000.7 Unicast Master : TTY Server Port port_index = 0 seat_id = 0x50000 last sent = 0 last heard = 0 10000.8 Unicast C10K Line Card API port_index = 0 seat_id = 0x20000 last sent = 0 last heard = 58521 port_index = 1 seat_id = 0x30000 last sent = 0 last heard = 64235 port_index = 2 seat_id = 0x40000 last sent = 0 last heard = 13486 50000.3 Unicast Slave IPC:Control 50000.9 Unicast Secondary RFS Server Port 50000.A Unicast Secondary Old RFS Server Port 50000.8 Unicast Slave : TTY Client Port 50000.7 Unicast Secondary Services Port 50000.B Unicast IF-con server port 50000.C Unicast RF : Standby 50000.D Unicast CF : Standby
IPC メッセージは、IPC サービスを使用するプロセスまたはラインカードの間で交換される通信の基本的な単位です。通常の動作では、RP とラインカードとは IPC メッセージを通じて頻繁にやり取りします。メッセージには、ヘッダー、送信元と宛先のアドレス情報、およびメッセージ データが含まれています。
分散ルータでは次の 4 種類の IPC メッセージが使用されています。RP から送られるコマンド。これにより、バージョン、メモリ量、インターフェイス統計情報、インターフェイス ステータスの変更、設定データなどの情報をラインカードに問い合せます。
いくつかの IPC クライアントを次に示します。
応答はラインカードから RP に送られます。
RP からのコマンドへの応答。ラインカードから RP に送信されます。この IPC メッセージに含まれる情報の例としては、定期的な統計情報の更新や、ラインカードがさらにキューイングできる IPC メッセージ数を示すウィンドウ メッセージがあります。
非同期に生成されるイベントやメッセージ。例として、入力エラーやラント、ジャイアントといったレポート エラーのほか、バイト カウントやパケット カウントといったレポート統計情報およびアカウント情報があります。
正しい動作のチェックポイントとなる、アクティブ RP とスタンバイ RP の間のメッセージ。
また、Cisco IOS ソフトウェア プロセスの中には、ラインカードとルート プロセッサとの間で情報交換を必要とするものがあります。これらのプロセスは IPC アプリケーションと呼ばれます。その例には、Cisco Express Forwarding(CEF)や、Cisco 12000 シリーズのルート プロセッサ間でイメージを交換するリモート ファイル システムがあります。
IPC プロトコル スタック |
---|
IPC アプリケーション |
IPC メカニズム本体 |
スイッチ ファブリック(12000 シリーズ)または CBUS(7500 シリーズ)データ層 |
7500 シリーズおよび 12000 シリーズのルータは、送信のためにキューイングされ、宛先 IPC のポートからの確認応答を待っている IPC メッセージを格納する特殊なバッファ セットを割り当てます。
7500 シリーズは、システム パケット メモリ(MEMD)内で特殊なバッファ セットを使用します。 MEMD および 7500 アーキテクチャの詳細については、「「%RSP-3-RESTART:cBus Complex」の原因および「利用率 99% で動作する VIP CPU および Rx サイド バッファリングについて」を参照してください。
7500 シリーズでは、IPC キューはプロセッサ メモリ内にあります。Cisco IOS の一部のバージョン(次の出力例を参照してください)では、プロセッサ メモリの集約 IPC バッファ スペースを ipc cache size コマンドで調整できます。MEMD では、限られたバッファが保持されており、調整できません。プロセッサ メモリにキューイングされる IPC メッセージが送信され、MEMD に空き容量がある場合、IPC メッセージは、プロセッサ メモリから MEMD に「移動」された後に LC に送信されます。
IPC キューの状態を確認するには、show ipc queue コマンドを使用します。
Router#show ipc queue There are 0 IPC messages waiting for acknowledgment in the transmit queue. There are 0 IPC messages waiting for a response. There are 0 IPC messages waiting for additional fragments. There are 0 IPC messages currently on the IPC inbound. There are 0 messages currently in use by the system.
注:これらのキューはIPCによって管理されるソフトウェアキューであり、7500シリーズのQA-ASICハードウェアキューと混同しないでください。
Cisco 12000 シリーズの Gigabit Route Processor(GRP; ギガビット ルート プロセッサ)は、スイッチ ファブリックを経由して IPC メッセージを送信します。ブートアップ時に、バッファ分割アルゴリズムにより、いわゆる tofab(受信側)および frfab(送信側)のメモリに 2 組のプールが作成されます。次の show controller tofab queues コマンドの出力例からわかるように、これら 2 組のメモリは「Non-IPC Free Queues」と「IPC Queues」です。次の出力の解釈方法については、「Cisco 12000 シリーズ インターネット ルータ:FAQ」を参照してください。Frequently Asked Questions」を参照してください。
Cisco 12000 シリーズでは、初期化時に GRP によって一定数のメッセージ ヘッダーが割り当てられます。これらのヘッダーのメモリ割り当てには、いくつかの修正が加えられ、改善されています。
Cisco IOS ソフトウェア リリース 12.0(18)S/ST では、GRP と LC の両方で、初期化時に作成されるデフォルトのメッセージ ヘッダー数が 1000 から 5000 に増加しました(下の出力を参照)。 リリース 12.0(23)S 以降では、IPC ヘッダー キャッシュの動的な増加が可能です。したがっては、手動で調整する必要はなくなりました。
LC は IPC メッセージ ヘッダーを DRAM にも保持しています。 さらに、LC は IPC メッセージ用として、tofab および fromfab メモリ内に 100 個のバッファを確保しています。送信された各 IPC メッセージについて、LC は必ず IPC メッセージ ヘッダーをキャッシュから要求します。そして、frfab のバッファ管理 ASIC(BMA)に対して IPC メッセージ バッファを要求し、これを使用してファブリック経由で GRP にメッセージを送信します。
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 [output omitted]
注:このセクションに記載されている拡張機能を持つIOSバージョンのリストについては、表2を参照してください。
まれな事例として(たとえば大量の情報を交換する必要がある場合など)、IPC バッファ キャッシュが枯渇してしまうことがあります。Cisco IOS ソフトウェアでは、次のログ メッセージを使用して、この状態が報告されます。
Oct 7 03:36:49: %RSP-3-RESTART: interface Serial0/0/4:1, not transmitting Oct 7 03:39:51: %IPC_RSP_CBUS-3-NOBUF: No more IPC memd buffers to transmit IPC message Oct 7 03:40:09: %RSP-3-RESTART: interface Serial0/0/2:1, not transmitting Oct 7 03:40:19: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/1/0, changed state to down Oct 7 03:40:19: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/1/1, changed state to down Oct 7 03:40:19: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/1/2, changed state to down Oct 7 03:40:19: %LINEPROTO-5-UPDOWN: Line protocol on InterfaceSerial0/1/3, changed state to down Oct 7 03:40:21: %IPC_RSP_CBUS-3-NOBUF: No more IPC memd buffers to transmit IPC message Oct 7 03:40:26: %FIB-3-FIBDISABLE: Fatal error, slot 0: IPC failure Oct 7 03:40:26: %FIB-3-FIBDISABLE: Fatal error, slot 1: IPC failure Oct 7 03:40:26: %FIB-3-FIBDISABLE: Fatal error, slot 4: IPC failure Oct 7 03:40:26: %FIB-3-FIBDISABLE: Fatal error, slot 5: IPC failure Oct 7 03:40:29: %LINEPROTO-5-UPDOWN: Line protocol on Interface
上記の出力が示すように、RP は、この状態のすべてのラインカードの CEF を無効にします。これは、IPC を使用して、ラインカードの CEF テーブルを更新できなくなったためです。そのため、すべてのラインカードに対して FIBDISABLE メッセージが報告されます。
この種の問題を解決するには、RP の IPC キャッシュおよびラインカードの IPC メモリを増やすことが必要な場合があります。増やす前に、show ipc status コマンドを使用して、RP、LC、またはその両方で IPC バッファが使い果たされているかどうかを調べます。この出力を取得し、RP と LC の両方から調査します。
元々は、IPC を使用して、すべてのシステムに割り当てられたバッファのデフォルト数は、キャッシュ メッセージ ヘッダー 1000 個分で、これを、着信および発信メッセージが共有していました。インストールされている Cisco IOS ソフトウェアのバージョンに応じて、IPC キャッシュのメッセージ ヘッダーの数は、動的、静的、または調整可能となります。
デフォルトのメッセージ ヘッダー 1000 個のルータからの show ipc status コマンドの出力を、次に示します。
注:Cisco IOSソフトウェアリリース12.2Tおよび12.2Sでは、このコマンドの出力が変更されています。
router#show ipc status IPC System Status: This processor is the IPC master server. 1000 IPC message headers in cache 4049362 messages in, 92615 out, 4048932 delivered to local port, 352 acknowledgments received, 386 sent, 0 NACKS received, 0 sent, 15326 messages dropped on input, 154 messages dropped on output 0 no local port, 110 destination unknown, 0 no transport 0 missing callback or queue, 34 duplicate ACKs, 0 retries, 0 message timeouts. 0 ipc_output failures, 0 mtu failures, 7707 msg alloc failed, 0 emer MSG alloc failed, 0 no origs for RPC replies 0 pak alloc failed, 0 memd alloc failed 0 no hwq, 0 failed opens, 0 hardware errors
割り当てられる必要なメモリ量は、プラットフォーム上のカードのタイプ(RP または LC、RSP または VIP)によって、および IPC(分散 CEF など)を必要とするアプリケーションの動作によって異なります。
Cisco IOS ソフトウェア リリース 12.0(23)S、12.2(18)S、および新しい IOS トレイン 12.3 および 12.3T からは、IPC メッセージ キャッシュが、静的に割り当てられるのではなく、動的に管理されます。急増する多量の IPC トラフィックによる IPC メッセージ キャッシュの枯渇の問題に対して提案される解決策は、メッセージ キャッシュを動的に拡大/縮小することでした。初期化時にシステムでは、プラットフォームで指定されたデフォルトのメッセージ数が割り当てられます。空きメッセージ数が「最小」バッファに満たない場合は、重要なバックグラウンド プロセスに、キャッシュを増やすよう通知されます。これにより、IPC が、クライアントのニーズを満たすためにキャッシュの増加を続行できるようになります。最近割り当てられたバッファが、指定されたフレームに対して IPC により使用されない場合、このプロセスで削減され始めます。キャッシュは、デフォルト サイズに達すると、削減されなくなります。このパフォーマンスの向上はCSCdv57496で導入されました。CSCdv57496の実装により、ipc cache <size>コマンドが自動的に実行されるため、機能しなくなります。これは、すべての IPC のプラットフォームで有効です。
特記事項:Cisco IOS ソフトウェア リリース 12.3(5.5)T からは、手動で IPC のキャッシュを調整する機能が削除されています。詳細情報については、CSCec17505(登録ユーザ専用)を参照してください。
show ipc queue コマンドの出力を調べると、次の内容が表示されているはずです。
c7500#show ipc queue Message waiting for acknowledgement in Tx queue : 0 Maximum acknowledgement msg usage in Tx queue : 0 Message waiting for additional Fragments : 0 Maximum message fragment usage : 0 There are 0 IPC messages waiting for a response. There are 0 IPC messages currently on the IPC inboundQ. Messages currently in use : 0 Message cache size : 1000 Maximum message cache usage : 1344 0 times message cache crossed 5000 [max] Emergency messages currently in use : 0 Inbound message queue depth 0 Zone inbound message queue depth 0
ルータが、動的に管理される IPC キャッシュ バッファを含まない Cisco IOS ソフトウェア バージョン、つまり、12.0(23)S、12.2(18)S、12.3、および 12.3T より前のイメージを実行している場合は、RP の IPC キャッシュおよびラインカードの IPC メモリを手動で増やすことができます。増やす前に、show ipc status コマンドを使用して、RP、LC、またはその両方で IPC バッファが使い果たされつつあるかどうかを調べます。この出力を取得し、RP と LC の両方から調査します。
必要な場合は、次のコマンドを使用してメモリを調整できます。
ipc cache 5000 configuration コマンド。RP の IPC ヘッダー キャッシュを増やします。
ipc cache <size> [slot {slot_num | all}]コマンドを発行して、Cisco 12000 LCのキャッシュを増やします。
注:IPCメッセージにより多くのメモリを割り当てると、他のプロセスで使用できるメモリが少なくなります。単一の IPC メッセージのサイズは、実際は、さまざまな Cisco IOS ソフトウェア ブランチで異なります。プロセッサ プールに十分な空きメモリがあるかどうかを確認するには、show memory summary コマンドを使用します。
注:このセクションに記載されている拡張機能を持つIOSバージョンのリストについては、表2を参照してください。
状況によっては、RP と LC の間の IPC スループットの調整が必要な場合があります。特に、サイズの大きい CEF テーブルを RP が LC にアップロードする必要がある状況が、これに該当します。たとえば、ルータがブート時に、BGP ピアから大量のルーティング情報を受信すると、この状況になる可能性があります。ip cef linecard ipc memory xxxxx コマンドで、LC に追加の IPC バッファリングを設定して、IPC の帯域幅を増やすことができます。このコマンドは CSCds89515(登録ユーザ専用)で導入されました。 このメモリの値は、CSCdu54205(登録ユーザ専用)および CSCuk27162(登録ユーザ専用)で、許容できるデフォルト値に設定されています。
このパラメータを変更したときに結果を表示するコマンドを次に示します。
Router#configure terminal Enter configuration commands, one per line. End with CNTL/Z. Router(config)#ip cef line ipc mem 20000 Router(config)#^Z Router#show cef state ... RP state: Expanded LC ipc memory: 20000 Kbytes ... or, alternatively: Router#show cef line Slot MsgSent XDRSent Window LowQ MedQ HighQ Flags 0 12515 21687 505 0 0 0 up 1 12515 21675 505 0 0 0 up 3 12515 21701 505 0 0 0 up 5 12515 21700 505 0 0 0 up 2 12518 22008 505 0 0 0 up Router#configure terminal Enter configuration commands, one per line. End with CNTL/Z. Router(config)#ip cef line ipc mem 20000 Router(config)#^Z Router#show cef line Slot MsgSent XDRSent Window LowQ MedQ HighQ Flags 0 12538 22097 4966 0 0 0 up 1 12538 22081 4966 0 0 0 up 3 12538 22115 4966 0 0 0 up 5 12538 22114 4966 0 0 0 up 2 12541 22418 4966 0 0 0 up
表 2 は、異なるプラットフォーム間で IPC メモリを手動で、および動的に調整するために、Cisco IOS ソフトウェアで実装された機能拡張の概要を示しています。
表 2:Cisco IOS ソフトウェアの機能拡張Cisco Bug ID | 下記で修正 | 改善点 |
---|---|---|
CSCdk75315(登録ユーザ専用) | 12.0(5)S 12.0(5) 12.0(5)T 11.3(10)AA | ipc cache <size> コマンドで設定できる IPC キャッシュ サイズを導入します。 |
CSCdk75315(登録ユーザ専用) | 12.2(4)B 12.1(9)E 12.1(8a)E 12.2(3)T 12.2(2)S 12.1(9) 12.0(14)ST1 12.2(2) 12.2(1)T 12.0(15)S3 12.0(16)ST 12.0(16)S | Cisco 12000 シリーズ インターネット ルータでは、大規模なルーティング更新の実行中(ブートアップ中など)にメモリ不足となり、それが原因で、分散された Cisco Express Forwarding(dCEF)が無効になることがあります。 回避策として、Border Gateway Protocol(BGP)の最大パスを削減して、ラインカードに伝搬される情報 CEF を減らしてください。また、TCP ウィンドウ サイズを小さくして、着信 BGP アップデートの速度を下げることもできます。「最適なルーティングの実現と BGP メモリ消費の削減」を参照してください。別の回避策として、ip cef linecard ipc memory 0-128000 インターフェイス設定コマンドを入力することもできます。ラインカード プロセッサ メモリまたはメイン メモリの量は、全メモリの 50 % に制限されています。このコマンドで、メッセージを更新するための CEF ルーティングのキューイングに、より多くのラインカード プロセッサ メモリを割り当てることができます。このコマンドで、RP は CEF アップデートをより迅速にリリースしてメモリを解放できるため、RP でのメモリ不足状況の発生が防止されます。Versatile Interface Processor(VIP)の数に応じて、dCEF を実行する際に、VIP を宛先とする IPC メッセージをバッファリングするための大量の一時メモリが RSP で必要となります。特に、多数の BGP ピアが稼働状態となる場合や、CBUS Complex または VIP クラッシュの後に(あるいは clear cef line コマンドを発行したときに)Forwarding Information Base(FIB; 転送情報ベース)が VIP に伝搬される場合に必要となります。 |
CSCdu21591(登録ユーザ専用) | 12.0(17)ST4 12.0(18)ST 12.0(18)S | 12000 シリーズ ルータで、デフォルトの IPC メッセージ ヘッダー キャッシュサイズを 1000 から 5000 に増やします。以前は、パーサーはハードコードされた1000と15000の間の任意の数を受け入れました。現在は、プラットフォーム定義の最小キャッシュサイズと最大キャッシュサイズの間の数のみを受け入れます。また、元々は、設定で no ipc cache コマンドを実行して、カスタムの IPC キャッシュ値を削除しても、設定から ipc cache コマンドをクリアすることはできませんでした。代わりに、ipc cache x コマンドが挿入されました。ここで、x は、現在定義されているデフォルト キャッシュ サイズです。現在、no ipc cache コマンドは想定どおりに動作します。ipc cache コマンドが設定から完全に削除されます。 |
CSCdu12540 | 12.0(19)ST 12.0(19)S | Cisco 12000 シリーズにのみ適用:元来、ipc cache <サイズ> コマンドは RP の IPC キャッシュに対してのみ動作していました。現在では、次のように LC でも ipc cache コマンドを使用できます。 ipc cache <size> [slot {slot_num | all}]オプション「slot_num」と「all」は同時に使用できます。たとえば、次のコマンドは有効です。ipc cache 4000 slot all ipc cache 3000 slot 5 これらのコマンドでキャッシュ サイズが、スロット 5 では 3000 に、他のすべてのスロットでは 4000 に増加されます。all オプションを使用して、LC に対する以前のキャッシュ サイズ設定文を上書きしたい場合は、必ず「NOPREFIX」も使用して、Nonvolatile RAM(NVRAM; 不揮発性 RAM)にある以前のコマンドを削除してから、正しい結果を実装してください。noprefix モードでは、no ipc cache slot {slot_num | all}コマンドを使用して、キャッシュサイズをデフォルト値にリセットします。 |
CSCdu54205 | 12.0(19)ST 12.0(19)S | Cisco 12000 シリーズにのみ適用:この機能拡張により、ラインカードの CEF アップデートのメモリ割り当てのデフォルト値が 512 通のメッセージに変更されました。問題が発生しない限り、ip cef linecard ipc memory xxxx コマンドを使用する必要はなくなりました。 |
CSCuk27162(登録ユーザ専用) | 12.2(9)T 12.2(9)S 12.2(9) 12.0(21)ST 12.0(22)S | このソフトウェア機能拡張により、ブートアップ時に割り当てられるラインカードの IPC バッファのデフォルトのプラットフォームごとの数が変更されます。また、RSP のプラットフォームごとのデフォルト ラインカード IPC メモリが、IPC メッセージ 25 通から 128 通に増加されます。回避策:ip cef linecard ipc memory xxxxx グローバル設定コマンドを使用して、ラインカードのバッファ数を増やします。 |
CSCdv57496 | 12.0(23)S | IPC キャッシュを静的に割り当てるのではなく、IPC メッセージ キャッシュを動的に管理します。CSCdv57496 の実装では、これが自動的に実行されるため、ipc cache <size> コマンドは有効ではなくなっています。これは、すべての IPC のプラットフォームで有効です。 |
CSCdz77490 | 12.2(19.7)S 12.0(26.2)S 12.3(1)B 12.3(1) | CSCdz77490 の実装では、ipc cache <size> コマンドライン インターフェイスが Cisco IOS ソフトウェア トレイン 12.3 および 12.3T から削除されています。Cisco IOS 12.3 トレインでは、このコマンドが非表示になりますが、端末から設定されている場合は、ユーザにメッセージが表示されます。次のメジャー リリース 12.4 では、このコマンドは削除されます。 |
CSCec17505(登録ユーザ専用) | TBD | 症状:ipc cache <size> CLI コマンドを使用してキャッシュ サイズを変更しても、IPC キャッシュ サイズが変更されません。条件:この状態は、IPC でのアーキテクチャ上の変更の結果として発生します。回避策:IPC キャッシュの機能は自動的に実行されるため、ユーザが CLI で変更することはできません。この機能拡張により、ipc cache <size> CLI コマンドが Cisco IOS ソフトウェア バージョンから削除され、ユーザは IPC キャッシュを手動で変更できなくなります。CLI は、ユーザが ipc cache <size> CLI コマンドを使用して手動で IPC キャッシュを変更できるバージョンに引き続き存在するため、下位互換性問題が発生することはありません。 |
Catalyst OS の実行時に、Catalyst 6000 および Cisco 7600 シリーズでは、マルチレイヤ スイッチ フィーチャ カード(MSFC)とも呼ばれる、オプションのルータ カードを備えたスーパーバイザ エンジンを使用します。 スーパーバイザの CPU と MSFC の CPU は、イーサネットのアウトオブバンド管理バス経由で IPC メッセージを介して通信します。Cisco IOS システム ソフトウェアの実行時には、RP とスイッチ プロセッサ(SP)も IPC メッセージを介して通信します。元々は、3000 のバッファが IPC メッセージ用に作成されていました。まれに、システムで IPC バッファが使い果たされ、次のエラー メッセージが表示されることがあります。
01:52:13: %ICC-2-NOMEM: No memory available for unregistering card Card2 02:42:08: %IPC-3-NOBUFF: The main IPC message header cache has emptied -Traceback= 4026779C 40268350 4025F930 40223D34 40221C40 40221EA4 401EAB10
注:ICCはInterCard Communicationsを意味します。
Cisco IOS ソフトウェア リリース 12.1(08a)E01 および 12.1(10)E から、Cisco 7600 シリーズでは、6000 の IPC メッセージ バッファがデフォルトで作成されます。また、バージョン 12.1(08a)E および 12.1(09)EC に加えられた変更により、多数の仮想 LAN(VLAN)に関連するアップデートが原因で IPC ヘッダーが使い果たされることが回避されます。各 ICC メッセージで、VLAN が 1 つずつではなく、VLAN リンクステート変更のグループがアドバタイズされます。
Cisco 7600 シリーズ向けの新しいラインカードは、高速パケット処理レートの分散機能ドーター カード(DFC)をサポートしています。DFC 対応ラインカードは、Cisco Express Forwarding とアジャセンシー関係テーブルを維持し、IPC メッセージを使用してスーパーバイザと通信します。
IPC メッセージには、Catalyst 6000 スイッチング バスの最大伝送単位(MTU)より大きいものもあります(1500 バイトを超えるメッセージ内の SONET インターフェイス統計情報を報告するために使用される IPC メッセージなど)。 このようなメッセージはフラグメント化する必要があります。まれに、IPC フラグメント ヘッダー キャッシュが使い果たされ、システムで次のエラー メッセージが表示されることがあります。
%IPC-DFC6-3-NOBUFF: The fragment IPC message header cache has emptied
Cisco IOS ソフトウェア リリース 12.1(08a)E および 12.1(09.05)EC に加えられた変更により、IPC フラグメント バッファ ヘッダーの数が 32 から 128 に増加します。
次のメッセージは、IPC クライアントで確認応答が重複して受信されると、デバッグ出力で表示される場合があります。
IPC:Cannot find original message for ACK HDR:
確認応答が重複する原因は一般的に、確認応答メッセージの紛失を引き起こすメディアの問題です。この確認応答の紛失を解決するには、ラインカードをスロットに取り付け直すか、交換して、メディアの問題を回避します。
上記のトラブルシューティング手順を実行した後も引き続きサポートが必要なために、Cisco TAC でサービス リクエストを作成する場合は、IPC 3 NOBUFF 関連エラー メッセージのトラブルシューティングのために、次の情報を必ず含めてください。 |
---|
注:問題の根本原因を特定するために必要な重要な情報が失われる可能性があるため、IPC-3-NOBUFF例外をトラブルシューティングする必要がない限り、上記の情報を収集する前に手動でルータをリロードまたは電源をオフにしないでください。 |