Hierarchical Navigation |
目次
概要このドキュメントでは、ルータのパフォーマンスに影響を及ぼす問題に関する高レベルの概要を説明しており、さらに、この問題に関する他の詳細なドキュメントを紹介しています。 前提条件要件このドキュメントに関する特別な要件はありません。 使用するコンポーネントこのドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づくものです。
表記法ドキュメント表記の詳細は、『シスコ テクニカル ティップスの表記法』を参照してください。 背景説明ルータの設定のしかたによって、パケット処理の性能に影響が及ぶ場合があります。大量のトラフィックを処理するルータの場合、パフォーマンスを最適にするためには、そのデバイスが行っている処理、その方法、および、それに要する時間について知っておくことが重要です。この情報は、コンフィギュレーション ファイル内で示されます。設定は、パケットのルータの通り方を表します。最適とは言えない設定では、必要以上にルータ内にパケットを保持する可能性があります。高レベルのロード状態が続くと、レスポンスの低下、輻輳、接続のタイムアウトなどが生じる場合があります。 ルータの性能を調整するに当たって、その目的はパケットがルータ内にとどまる時間を最小にすることです。すなわち、入力インターフェイスから出力インターフェイスへルータがパケットをフォワーディングする時間を最小にし、できる限りバッファリングや輻輳を回避します。設定に追加する各機能は、入力したパケットが宛先ポートに向かう途中に通過しなければならない 1 つのステップとなります。 節約する必要のある 2 つの主要なリソースは、ルータの CPU タイムとメモリです。ルータには、割り込みおよび定期的タスクを処理するための CPU のアベイラビリティが常に必要です。CPU 使用率が長時間 99 % である場合、常にネットワークの安定性に深刻な影響がおよびます。このコンセプトは、メモリのアベイラビリティにも当てはまります。メモリは必ず使用可能でなければなりません。ルータのメモリの使用率が 100 % に近くなると、システムのバッファ プールのスペースがなくなります。このような状態になると、プロセッサによる処理を必要とするパケット(プロセス スイッチ パケット)は、着信するとすぐに廃棄されてしまいます。廃棄されたパケットに、インターフェイスのキープアライブや重要なルーティング更新が含まれていた場合に何が起きるかは、想像に難くありません。 プロセス レベルと割り込みレベルのスイッチングIP ネットワークでは、ルータでのパケット フォワーディングの判定は、ルーティング テーブルの内容に基づいて行われます。ルーティング テーブルを検索する際、ルータは宛先 IP アドレスのプレフィクスに最長一致するものを探します。この処理は「プロセス レベル」で行われます(プロセス スイッチングと呼ばれます)。これは、この検索が単なる 1 プロセスとして、他の CPU プロセスと同様にキューイングされて処理されることを意味します。その結果として、この検索にかかる時間は予測が不可能で、非常に長くかかる場合もあることになります。これを解決するために、Cisco IOS ソフトウェアには、完全一致検索に基づいたスイッチング方式が複数導入されています。 完全一致検索の最大の利点は、検索時間が決まっており、非常に短いことです。ルータでのフォワーディングの判定に要する時間は著しく短縮されるため、この処理を「割り込みレベル」で行うことが可能になります。割り込みレベルでのスイッチングとは、パケットが着信したときに割り込みを発生させ、CPU では、このパケットを処理するために他のタスクを後回しにすることを意味します。従来のパケット フォワーディング方式(ルーティング テーブルで最長一致を検索する方法)は、割り込みレベルでの実装ができず、プロセス レベルで実行する必要があります。いくつかの理由により、またそのうちの一部を以下で説明していますが、最長一致検索方式を完全に廃止することはできないため、Cisco ルータでは 2 種類の検索方式を並行して採用しています。この方針はすでに一般化しており、IPX や AppleTalk でも採用されています。 完全一致方式を割り込みレベルで実行するには、この検索方式に適したメモリ構造を使用できるようルーティング テーブルを変換する必要があります。スイッチング パスが異なると、使用するメモリ構造も異なります。この構造と呼ばれるアーキテクチャは、検索時間に非常に大きく影響します。最も重要な処理は最適なスイッチング パスの選択です。ルータがパケットの転送先を決定する際、必要となる基本情報はネクストホップのアドレスと発信インターフェイスです。また、発信インターフェイスのカプセル化に関する情報も必要です。自身のスケーラビリティに従って、カプセル化に関する情報は、同一または別のメモリ構造に保存されます。 次に割り込みレベルでのスイッチングの実行手順を示します。
ネットワーク インターフェイスからパケットが着信したときに発生する割り込みは、「RX 割り込み」と呼ばれます。この割り込みは、上記のステップのすべてが実行された場合にだけ解除されます。最初の 3 ステップのいずれかが実行できない場合は、そのパケットは次のスイッチング レイヤに送られます。次のスイッチング レイヤがプロセス スイッチングの場合は、パケットはプロセス スイッチングのために着信インターフェイスの入力キューに入れられ、割り込みは解除されます。割り込みは、同じレベルの割り込みによって割り込まれることはなく、また、すべてのインターフェイスで同じレベルの割り込みが発生するため、現在処理中の RX 割り込みが解除されるまで他のパケットが処理されることはありません。 異なる割り込みスイッチング パスは、最高速の検索を行うものから、最低速の検索を行うものにまで、階層化されます。パケットの処理に使用される最後の手段は、常にプロセス スイッチングになります。すべての割り込みスイッチング パスにおいて、すべてのインターフェイスやパケットのタイプがサポートされているわけではありません。一般的には、パケットのヘッダーに限定して検査や変更を必要とするものだけについて、割り込みスイッチングを行うことができます。転送の前にパケットのペイロードの検査が必要な場合は、割り込みスイッチングを行うことはできません。割り込みスイッチング パスによっては、さらに固有の制限がある場合もあります。また、発信インターフェイスでのレイヤ 2 接続の信頼性が高い場合(再送信をサポートしている場合)は、パケットを割り込みレベルで処理することはできません。 割り込みスイッチングを行えないパケットの例を次に示します。
スイッチング パスルータ内でパケットがたどるパスは、アクティブなフォワーディング アルゴリズムによって決定されます。これは「スイッチング アルゴリズム」または「スイッチング パス」とも呼ばれます。一般的に、ハイエンド プラットフォームはローエンド プラットフォームよりも強力なフォワーディング アルゴリズムを持っていますが、しばしばデフォルトではアクティブになっていません。フォワーディング アルゴリズムは、ハードウェア内に実装される場合、ソフトウェア内に実装される場合、両方に実装される場合がありますが、その目的は常に、できるだけ速くパケットを送信することです。 Cisco シスコ ルータで利用可能なスイッチング アルゴリズムを次に示します。
ここでは、性能順に分類した各スイッチング パスについて簡単に説明しています。自律スイッチングおよびシリコン スイッチングは技術サポート終了となったハードウェアに関係するため、ここでは説明していません。 プロセス スイッチングプロセススイッチは、最も基本的なパケット処理方法です。パケットは、対応するレイヤ 3 プロトコルのキュー内に置かれ、その後スケジューラによって対応プロセスがスケジュールされます。このプロセスは、show processes cpu コマンドの出力で表示されるプロセスの中の 1 つです(つまり、IP パケットでの「ip input」)。この時点で、スケジューラが対応するプロセスに CPU を割り当てるまで、パケットはキュー内に置かれます。待ち時間は、実行待ちのプロセス数および処理待ちのパケット数によります。その後、ルーティング テーブルに基づいて、ルーティングの決定が行われます。パケットのカプセル化方式が発信インターフェイスに合せて変更され、その後パケットは対応する発信インターフェイスの出力キューに入れられます。 ファースト スイッチングファースト スイッチングでは、CPU によって割り込みレベルで転送の決定が行われます。ルーティング テーブルからの情報と、発信インターフェイスのカプセル化に関する情報が組み合わされ、ファースト スイッチングのキャッシュが作成されます。キャッシュ内の各エントリは、宛先 IP アドレス、発信インターフェイスの識別番号、および MAC 書き換え情報で構成されています。ファースト スイッチングのキャッシュは、バイナリ ツリーの構造になっています。 ある宛先を示すエントリがファースト スイッチングのキャッシュにない場合は、現在のパケットはプロセス スイッチングのキューに入れられます。適切なプロセスによってパケットの転送の決定が行われた場合は、これによってファースト スイッチングのキャッシュにエントリが作成され、同じ宛先への連続したパケットがすべて割り込みレベルで転送されるようになります。 これは宛先ベースのキャッシュであるため、ロード シェアリングは宛先別でだけ行われます。ルーティング テーブルに、ある宛先ネットワークに対する同じコストのパスが 2 つある場合でも、各ホストに対するファースト スイッチングのキャッシュ内のエントリは 1 つだけです。 最適スイッチング最適なスイッチングは、基本的にファースト スイッチングと同じですが、バイナリ ツリーの代わりに 256 方向マルチディメンジョナル ツリー(mtree)を使用し、その結果として、より多くのメモリが必要になり、キャッシュの検索が高速化します。ツリー構造と、ファースト、最適、Cisco Express Forwarding(CEF)の各スイッチング方式についての詳細は、『ネットワークに最適なルータ スイッチング パスの選択方法』を参照してください。 Cisco Express Forwarding(CEF)以前のスイッチング アルゴリズムの主な欠点は、次のとおりです。
CEF は、次の 2 つのテーブルを使うことによってこのような問題に対処します。Forwarding Information Based(FIB; 転送情報ベース)テーブルおよび隣接関係テーブル。隣接関係テーブルは、レイヤ 3(L3)アドレスによって参照され、パケットをフォワーディングするのに必要な対応レイヤ 2(L2)データが入っています。ルータが隣接ノードを発見したときに、このテーブルにエントリが生成されます。FIB テーブルは、L3 アドレスによって参照される mtree です。このテーブルは、ルーティング テーブルに基づいて構築され、隣接関係テーブルを指し示します。 CEF の別の利点は、データベース構造によって宛先ごとまたはパケットごとの負荷バランシングが可能であるということです。CEF についての詳細は、『CEF のホームページ』を参照してください。 分散ファースト/最適スイッチング分散ファースト/最適スイッチングは、ルーティング決定をインターフェイス プロセッサ(IP)に移動することによってメイン CPU(Route/Switch Processor(RSP))負荷をオフロードします。これは、インターフェイス(Versatile Interface Processor(VIP)、Line Card(LC; ラインカード))ごとに専用 CPU を持つハイエンド プラットフォームでだけ可能です。この場合、ファスト キャッシュは VIP にアップロードされるだけです。パケットが受信されると、VIP はそのテーブルに基づいてルーティング決定を行おうとします。それが成功した場合、出力インターフェイスのキューに直接パケットを入れます。失敗した場合は、次に設定されているスイッチング パス(最適スイッチング -> ファースト スイッチング -> プロセス スイッチングの順)にパケットをキューイングします。 分散スイッチングによって、アクセス リストは VIP にコピーされます。これは、RSP の 介入なしに VIP がパケットをアクセス リストと照合できることを意味します。 分散 CEF分散 CEF(dCEF)は、分散スイッチングと似ていますが、テーブル間の同期の問題は分散スイッチングよりも少なくなります。dCEF は、Cisco IOS ソフトウェア リリース 12.0 で利用できる唯一の分散スイッチング方式です。ルータで分散スイッチングがイネーブルにされている場合は、FIB テーブルまたは隣接関係テーブルはルータ内のすべての VIP にアップロードされることを理解しておくことが重要です。これはインターフェイスが CEF または dCEF のどちらに設定されている場合も同様です。 dCEF によって、VIP はアクセス リスト、ポリシーベース ルーティング データおよびレート制限ルールも処理します。これらはすべて、VIP カードの中に保持されています。dCEF とともに Netflow をイネーブルにして、VIP によるアクセス リスト処理をエンハンスできます。 次の表では、各プラットフォームごとに、スイッチング パスの種類をサポートしている Cisco IOS ソフトウェアのバージョンを一覧しています。
(1)801 から 805 を含む。 (2)806 以降、1000、1400、1600、1700、2600、3600、3700、4000、AS5300、AS5350、AS5400、および AS5800 シリーズ。 (3)1400、1600、および 2500 プラットフォームでの NetFlow エクスポート v1、v5、v8 のサポートは、Cisco IOS ソフトウェア リリース 12.0(4)T が対象になっています。これらのプラットフォームでの NetFlow のサポートは、Cisco IOS ソフトウェア 12.0 のメインライン リリースでは行われていません。 (4) RSP720-3C/MSFC4、RSP720-3CXL/MSFC4、7600-ES20-GE3CXL/7600-ES20-D3CXL、および SUP720-3BXL/MSFC3 の各プラットフォームにおいて UHP を使用した場合のパフォーマンスへの影響は、明示的 NULL であり、PE での再循環やパフォーマンスの低下が生じます。スループットは RSP720-3C/MSFC4、RSP720-3CXL/MSFC4、および SUP720-3BXL/MSFC3 では 20 Mpps から 12 Mpps に低下し、7600-ES20-GE3CXL/7600-ES20-D3CXL では 48 Mpps から 25 Mpps に低下します。 NetFlow スイッチングNetFlow スイッチングとは不適切な命名であり、これがスイッチング パスと同じ方法で設定されるということから、ますます混同されています。実際には、NetFlow スイッチングはスイッチング パスではありません。これは、NetFlow キャッシュではレイヤ 2 の書き換えに必要な情報が含まれることも、その情報を指し示すこともされていないためです。スイッチングの決定は、アクティブなスイッチング パスによって行われる必要があります。 NetFlow スイッチングでは、ルータがトラフィックをフローごとに分類します。フローは、任意の発信元エンドポイントと宛先エンドポイント間の単方向パケット シーケンスとして定義されます。ルータは、送信元アドレスと宛先アドレス、トランスポート層ポート番号、IP プロトコル タイプ、Type of Service(ToS; タイプ オブ サービス)、および送信元インターフェイスを使ってフローを定義します。このようにトラフィックの分類することによって、大量のアクセス リスト、キューイング、アカウンティング ポリシー、および強力なアカウンティングや課金といった CPU 要求の厳しい機能に対して、ルータはフローの最初のパケットだけを処理します。詳細は、『NetFlow のホームページ』を参照してください。 分散サービスハイエンド プラットフォームでは、CPU を多用する複数のタスク(パケット スイッチング アルゴリズムだけではない)を、メイン プロセッサから VIP カード上などに搭載されている分散プロセッサに移動できます(7500)。このようなタスクのいくつかは、汎用プロセッサから、専用ハードウェア上に機能を実装する専用ポート アダプタまたはネットワーク モジュールにエクスポートできます。 可能な限り、メイン プロセッサから VIP のプロセッサにタスクをオフロードするのが一般的です。これにより、リソースが解放され、ルータの性能が向上します。オフロード可能なプロセスとしては、パケット圧縮、パケット暗号化、および均等化キューイングがあります。オフロードできるタスクについての詳細は、次の表を参照してください。利用可能なサービスの詳細な説明は、『Cisco 7500 の分散サービス』を参照してください。
スイッチング パスの選択基本ルールは、dCEF、CEF、最適、ファーストから利用可能な最適のスイッチング パスを選ぶことです(最も速いものから最も遅いもの)。CEF または dCEF をイネーブルにすると、最高のパフォーマンスが得られます。NetFlow スイッチングをイネーブルにすると、設定によってはパフォーマンスが向上することも、低下することもあります。アクセスリストが非常に大きい場合、またはアカウンティングを行う必要がある場合、あるいはこの両方が該当する場合は、NetFlow スイッチングを推奨します。通常、NetFlow は、CPU の能力が高く、多くの機能を備えたエッジ ルータでイネーブルにします。ファースト スイッチングと CEF など、複数のスイッチング パスを同一インターフェイス上に設定している場合、ルータはそのすべてを最適のものから最低のものまで試します(CEF からプロセススイッチまで)。 ルータのモニタリングスイッチング パスが有効に使われているか、またルータにどれくらいの負荷がかかっているかを知るには、次のコマンドを使用します。 show ip interfaces:このコマンドは、特定インターフェイスに適用されているスイッチング パスの概要を示します。 Router#show ip interfaces Ethernet0/0 is up, line protocol is up Internet address is 10.200.40.23/22 Broadcast address is 255.255.255.255 Address determined by setup command MTU is 1500 bytes Helper address is not set Directed broadcast forwarding is disabled Outgoing access list is not set Inbound access list is not set Proxy ARP is enabled Security level is default Split horizon is enabled ICMP redirects are always sent ICMP unreachables are always sent ICMP mask replies are never sent IP fast switching is enabled IP fast switching on the same interface is disabled IP Flow switching is disabled IP CEF switching is enabled IP Fast switching turbo vector IP Normal CEF switching turbo vector IP multicast fast switching is enabled IP multicast distributed fast switching is disabled IP route-cache flags are Fast, CEF Router Discovery is disabled IP output packet accounting is disabled IP access violation accounting is disabled TCP/IP header compression is disabled RTP/IP header compression is disabled Probe proxy name replies are disabled Policy routing is disabled Network address translation is disabled WCCP Redirect outbound is disabled WCCP Redirect inbound is disabled WCCP Redirect exclude is disabled BGP Policy Mapping is disabled この出力から、ファースト スイッチングがイネーブルであること、NetFlow スイッチングがディセーブルであること、そして CEF スイッチングがイネーブルであることが分かります。 show processes cpu:このコマンドは、CPU の負荷に関する有用な情報を表示します。詳細は、『Cisco ルータの CPU 使用率が高い場合のトラブルシューティング』を参照してください。 Router#show processes cpu CPU utilization for five seconds: 0%/0%; one minute: 0%; five minutes: 0% PID Runtime(ms) Invoked uSecs 5Sec 1Min 5Min TTY Process 1 28 396653 0 0.00% 0.00% 0.00% 0 Load Meter 2 661 33040 20 0.00% 0.00% 0.00% 0 CEF Scanner 3 63574 707194 89 0.00% 0.00% 0.00% 0 Exec 4 1343928 234720 5725 0.32% 0.08% 0.06% 0 Check heaps 5 0 1 0 0.00% 0.00% 0.00% 0 Chunk Manager 6 20 5 4000 0.00% 0.00% 0.00% 0 Pool Manager 7 0 2 0 0.00% 0.00% 0.00% 0 Timers 8 100729 69524 1448 0.00% 0.00% 0.00% 0 Serial Backgroun 9 236 66080 3 0.00% 0.00% 0.00% 0 Environmental mo 10 94597 245505 385 0.00% 0.00% 0.00% 0 ARP Input 11 0 2 0 0.00% 0.00% 0.00% 0 DDR Timers 12 0 2 0 0.00% 0.00% 0.00% 0 Dialer event 13 8 2 4000 0.00% 0.00% 0.00% 0 Entity MIB API 14 0 1 0 0.00% 0.00% 0.00% 0 SERIAL A'detect 15 0 1 0 0.00% 0.00% 0.00% 0 Critical Bkgnd 16 130108 473809 274 0.00% 0.00% 0.00% 0 Net Background 17 8 327 24 0.00% 0.00% 0.00% 0 Logger 18 573 1980044 0 0.00% 0.00% 0.00% 0 TTY Background [...] show memory summary:このコマンドの最初の行には、ルータのメモリ使用量およびメモリやバッファに関する有用な情報が表示されます。
Router#show memory summary
Head Total(b) Used(b) Free(b) Lowest(b) Largest(b)
Processor 8165B63C 6965700 4060804 2904896 2811188 2884112
I/O 1D00000 3145728 1770488 1375240 1333264 1375196
[...]
show interfaces stat および show interfaces switching:この 2 つのコマンドは、ルータが使用しているパスと、トラフィックのスイッチング方法を表示します。
Router#show interfaces stat
Ethernet0
Switching path Pkts In Chars In Pkts Out Chars Out
Processor 52077 12245489 24646 3170041
Route cache 0 0 0 0
Distributed cache 0 0 0 0
Total 52077 12245489 24646 3170041
Router#show interfaces switching
Ethernet0
Throttle count 0
Drops RP 0 SP 0
SPD Flushes Fast 0 SSE 0
SPD Aggress Fast 0
SPD Priority Inputs 0 Drops 0
Protocol Path Pkts In Chars In Pkts Out Chars Out
Other Process 0 0 595 35700
Cache misses 0
Fast 0 0 0 0
Auton/SSE 0 0 0 0
IP Process 4 456 4 456
Cache misses 0
Fast 0 0 0 0
Auton/SSE 0 0 0 0
IPX Process 0 0 2 120
Cache misses 0
Fast 0 0 0 0
Auton/SSE 0 0 0 0
Trans. Bridge Process 0 0 0 0
Cache misses 0
Fast 11 660 0 0
Auton/SSE 0 0 0 0
DEC MOP Process 0 0 10 770
Cache misses 0
Fast 0 0 0 0
Auton/SSE 0 0 0 0
ARP Process 1 60 2 120
Cache misses 0
Fast 0 0 0 0
Auton/SSE 0 0 0 0
CDP Process 200 63700 100 31183
Cache misses 0
Fast 0 0 0 0
Auton/SSE 0 0 0 0
Cisco サポート コミュニティ - 特集対話関連情報 |