Cisco IOS® ソフトウェアは、トラフィックを最小の遅延時間および高いスループットで転送するために、いくつかのメカニズムをサポートしています。このドキュメントでは、パケットがたどる Cisco IOS スイッチング パスまたは転送パスを判別する方法について説明します。
注:このドキュメントでは、プロセススイッチング、ファーストスイッチング、およびCisco Express Forwarding(CEF)についてのみ説明します。
このドキュメントの読者には、次の項目に関する知識が必要です。
Cisco IOS ソフトウェア
Cisco 1600、2500、および 3600 シリーズ プラットフォーム
このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。
ドキュメント表記の詳細は、『シスコ テクニカル ティップスの表記法』を参照してください。
Cisco IOS スイッチングは、ルータを経由するパケット フローを定義します。より明確に言えば、パケットをルータ経由でどれくらい迅速に転送できるか、およびどの物理バッファにパケットを保存するかを決定します。
これまでの Cisco IOS の発展過程において、複数のスイッチング方式が開発されてきました。特定のプラットフォームでしかサポートされないスイッチング方式もあります。CEF は、最新のスイッチング方式です。CEFがグローバルに有効な場合(デフォルトの動作)、ip route-cache cefインターフェイス固有のコマンドも有効になります。このコマンドは、このインターフェイスに入るパケットに対してCEFスイッチングが行われることを保証します。場合によっては、1つのインターフェイスだけでCEFを無効にする必要がある場合は、no ip route-cache cefコマンドが追加されます。これにより、そのインターフェイスのみのCEFスイッチングがディセーブルになります。Cisco IOSは、CEFを強制的にディセーブルにするときに、no ip route-cacheコマンドを自身でrunning-configに追加しません。CEF は、Cisco IOS12.0 メインラインで多くのプラットフォーム(特に Cisco 1600、2500、3600 シリーズなどの小型および中型のプラットフォーム)に導入されました。
ルータのルーテッド インターフェイス上でパケットを受信すると、まずレイヤ 2(L2)フレーム情報が削除されます。次に、レイヤ 3(L3)パケットが入出力(I/O)メモリに保存されます。次に何が起きるかは、パケットがたどるスイッチング パスに依存しています。
下記の手順で、パケットが CEF スイッチング パスをたどることが確認できます。
CEF がグローバルかつ特定のインターフェイスで有効になっていることを確認します。
router#show ip cef %CEF not running
グローバル コンフィギュレーション モードで ip cef コマンドを使用して、(中央の)CEF を有効にします。
注:Cisco 7200シリーズでは、CEFがCisco IOSの今後のリリースにおけるデフォルトのCisco IOSスイッチング方式です。
show ip cef prefix コマンドを使用して、プレフィクスがリストされていることを確認します。
router#show ip cef Prefix Next Hop Interface 0.0.0.0/32 receive 192.168.0.0/30 attached Serial2/0/0:1 192.168.0.0/32 receive
特定のインターフェイス上で CEF が有効に設定されていることを確認します。
show cef interface x/x コマンドを使用して、「IP CEF switching enabled,」または「IP distributed CEF (dCEF) switching enabled.」を探します。
router#show cef interface fastEthernet 0/0/0 FastEthernet0/0/0 is up (if_number 2) Internet address is 192.168.1.253/24 ICMP redirects are always sent Per packet loadbalancing is disabled Inbound access list is not set Hardware idb is FastEthernet0/0/0 Fast switching type 1, interface type 18 IP Distributed CEF switching enabled Fast flags 0x0. ifindex 1(1) Slot 0 Slot unit 0 VC -1 Hardware transmit queue ptr 0x48001A00 (0x48001A00) Transmit limit accumulator 0x48001A02 (0x48001A02) IP MTU 1500
show ip interfaceコマンドを使用して、無効に設定されている Cisco IOS スイッチング方式を表示します。
router#show ip interface fastethernet 1/0/0.1 FastEthernet1/0/0.1 is up, line protocol is up IP fast switching is enabled IP fast switching on the same interface is enabled IP Flow switching is disabled IP CEF switching is enabled IP Distributed 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, Distributed, No CEF
この出力では、特定のインターフェイスでの no ip route-cache cef コマンドにより CEF がディセーブルにされていることが、「No CEF」フラグで示されています。「CEF」フラグは、CEF が稼働していることを示しています。安定した状態では、どちらのフラグも表示されません。Cisco Bug ID CSCdr80269(登録ユーザ専用)では、まれな条件で両方のフラグが表示される可能性のある問題が解決されています。Bug ID についての詳細は、Bug Toolkit(登録ユーザ専用)を参照してください。
ルータを流れるパケットの大多数が CEF スイッチングされていることを確認します。
show interface x/x stat コマンドを使用して、ルータで「Route cache」ではなく「Processor」経由で転送されているパケット数とバイト数を識別します。 「ルート キャッシュ」には、ファスト スイッチングされたパケットと CEF スイッチングされたパケットの両方が含まれます。
router#show interface stats FastEthernet0/0 Switching path Pkts In Chars In Pkts Out Chars Out Processor 95084 26211621 33493 3386174 Route cache 24581 1132797 24542 13297583 Distributed cache 0 0 0 0 Total 119665 27344418 58035 16683757
show ip cache コマンドを使用して、パケットがファースト スイッチング パスをたどっていることを示す IP キャッシュ エントリがあることを識別します。ファスト スイッチングは、オンデマンドのルート キャッシュ上に構築され、ルータ経由でのパケット転送を効率化します。インターフェイス ハードウェアで稼働しているドライバ コードでは、制御が一時的にファースト スイッチング コードに委譲され、フレームのためのルート キャッシュと前回の転送済みパケットにより構成された他の情報とが検索されます。ルート キャッシュにエントリがあれば、ファースト スイッチング コードにより、パケットの宛先インターフェイスへの直接送信が試行されます。
router#show ip cache IP routing cache 0 entries, 0 bytes 0 adds, 0 invalidates, 0 refcounts Minimum invalidation interval 2 seconds, maximum interval 5 seconds, quiet interval 3 seconds, threshold 0 requests Invalidation rate 0 in last second, 0 in last 3 seconds Prefix/Length Age Interface Next Hop
次の手順では、CEF を使用してパケットが転送されていることを確認する、さらに具体的な手順の概要を示しています。
ip cef コマンドで CEF をイネーブルにします。
clear ip cache コマンドを発行して、ファースト スイッチングされたキャッシュ エントリをクリアします。
トラフィック ストリームを開始します。
show ip cache コマンドを発行します。パケットが CEF スイッチングされているため、ファースト スイッチ キャッシュにエントリが何も表示されないことを確認します。
show interface stats コマンドを発行して、ルート キャッシュ インバウンドの差分ヒットを確認します。
注:ルートキャッシュカウンタには、ファーストスイッチングされたパケットとCEFスイッチングされたパケットの両方が含まれます。
着信インターフェイス上で no ip route-cache cef コマンドを実行し、CEF を無効にします。
show interface stats コマンドを発行して、ルート キャッシュの差分ヒットを確認します。
show ip cache コマンドを発行して、Cisco IOS がファースト スイッチングにフォールバックして以来のエントリが表示されることを確認します。
アウトバウンド インターフェイスで no ip route-cache コマンドを発行して、ファースト スイッチングをディセーブルにします。対応するインバウンド インターフェイス上のパケットは、プロセス スイッチングされます。
注:トラフィックが多いネットワークでは、プロセススイッチングを設定することは推奨されません。
ルータ インターフェイスで CEF がイネーブルにされていることを確認して、ほとんどのパケットが CEF スイッチングされていないことが判別された場合は、Cisco Technical Assistance Center(TAC)に問題を報告する際に、下記のコマンドでキャプチャを行います。
注:debugコマンドを発行する前に、『デバッグコマンドの重要な情報』を参照してください。
show cef interface x/x:CEF に関係するインターフェイス情報を表示します。
show ip cef prefix:転送情報ベース(FIB)のプレフィクス エントリを表示します。
show adjacency interface detail:隣接関係で解決される再帰プレフィクスと直接プレフィクスを表示します。
show cef not-cef-switched:どのパケットが CEF スイッチングされていないかを表示します。
debug ip cef drop:CEF で廃棄されたパケットのデバッグ情報を表示します。
入力インターフェイスによって、パケットがたどる Cisco IOS スイッチング パスが決定されます。特定のインターフェイスでスイッチング方式をイネーブルにしたりディセーブルにしたりする際には、次のルールを考慮してください。
| 着信インターフェイス | 発信インターフェイス | スイッチング方式 |
|---|---|---|
| CEF | プロセス | CEF |
| プロセス | CEF | Fast |
| プロセス | ファースト スイッチング(IP ルート キャッシュ) | ファストスイッチング |
| CEF | ファストスイッチング | CEF |
言い換えると、CEF スイッチングされるパケットのために、着信インターフェイスで CEF をイネーブルにする必要があります。CEF では入力で転送決定がされるので、入力インターフェイスで no ip route-cache cef コマンドを使用して、CEF をディセーブルにします。それに対して、Cisco IOS ではパケットのスイッチングの後でファースト スイッチング キャッシュ エントリが作成されるので、プロセス スイッチングされるインターフェイスに着信して、ファースト スイッチングされるインターフェイスがら送出されるパケットはファースト スイッチングされます。出力インターフェイスで no ip route-cache コマンドを使用して、ファースト スイッチングをディセーブルにします。下記のトラフィック タイプは CEF スイッチングされません。
スイッチング キャッシュにエントリがないパケット
ルータが宛先になっているパケット
ブロードキャスト トラフィック
オプション付き IP パケット
プロトコル変換を必要とするパケット
暗号化されたトラフィック
「パント(punt)」とは、シスコが定義した用語であり、インターフェイスのデバイス ドライバが、次に速いスイッチング レベルにパケットを「落とす」動作を表します。次のリストでは、Cisco IOS のスイッチング方式の優先順位が速い方から遅い方に定義されています。
分散 CEF
CEF
ファストスイッチング
プロセス スイッチング
パントが発生するのは、次の条件です。
1 ランク遅いレベルが有効なパスを生成しなかったか、CEF の場合は有効な隣接関係が生成されなかった場合。つまり、CEF 検索プロセスによって、転送情報ベースに有効なエントリを見つけることができなかった場合、パケットは、使用可能な 1 ランク下のスイッチング パスにパントされるか、廃棄されます。
最低レベルでは、特定の機能やレイヤ 2 カプセル化はサポートされていません。CEF が特定機能をサポートしている場合、パケットの所有権は、CEF の「機能パス」内の一連のソフトウェア ルーチンを介して受け渡されます。
特定の機能は特殊な処理を必要とします。
特定の出力機能が CEF でサポートされていない場合に、CEF におけるパントの隣接関係がインストールされます。CEF では、このような隣接関係に向かうすべてのパケットを次善のスイッチング モードへパントすることにより、すべてのパケットをスイッチングします。
center#show ip cef 45.0.0.0
45.0.0.0/8, version 184, 0 packets, 0 bytes
via 1.1.1.1, Tunnel0, 0 dependencies
next hop 1.1.1.1, Tunnel0
valid punt adjacency
CEF Packets passed on to next switching layer
Slot No_adj No_encap Unsupported Redirect Receive Bad_ttl Options
RP 0 0 0 0 5700 0 0
2 0 0 0 0 0 0 0
3 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0
5 0 0 0 0 0 0 0
8 0 0 0 0 0 0 0
9 0 0 0 0 0 0 0
10 0 0 0 0 0 0 0
隣接関係が不完全な場合、CEF により、ルータ全体(ほかのすべてのスイッチング パスを含む)が隣接ノードへ到達する方法を知らないと見なされます。パケットをプロセス スイッチングにパントすることにより、アドレス解決プロトコル(ARP)などのある種のレゾルーション プロトコルが起動され、それによって、後で隣接関係が完成されます。この状況で CEF は、パケットのフラッディングを防止するために、2 秒ごとにパケットを 1 つずつ次のスイッチング パスにパントします。したがって、この状態では、IPアドレスへのpingが約50 %失敗し、「!.!.!.!.!」が表示されます pingパターン。この状況は CEF テーブルが壊れた場合にも発生します。その場合、特定の IP アドレスに関する show ip route コマンドの情報と show ip cef コマンドの情報が異なっているはずです。
注:ギガビットスイッチルータ(GSR)では、ラインカード(LC)がCEF内からインターネット制御メッセージプロトコル(ICMP)エコー応答を生成します。パケットが GSR ローカル アドレスのいずれか宛になっていない場合には、関与するプロセスはありません。その場合は、使用している LC により、ハードウェアか dCEF でのインタラプトで、そのままスイッチングされます。
GSRでは、ファスト スイッチングおよびプロセス スイッチングは使用できません。送信先プレフィックスを、着信 LC テーブル内の転送エントリに解決できない場合、パケットは廃棄されます。グリーニング隣接関係に一致するパケットだけが、ギガビット ルーティング プロセッサ(GRP)にパントされます。 さらに GSR では、LC CPU は機能用に GRP へのパケットのパントは行わず、LC から ICMP 到達不能メッセージが送信されます(no ip unreachables コマンドが設定されていない場合に限る)。 GSR では、GRP にパントされるトラフィックは、ルータ上のインターフェイスを宛先とするパケット、またはルータを送信元とするパケットだけです。