Cisco IOS® ソフトウェアは、トラフィックを最小の遅延時間および高いスループットで転送するために、いくつかのメカニズムをサポートしています。 このドキュメントでは、パケットに使用する Cisco IOS のスイッチングと転送のパスを決定する方法を説明しています。
注: このドキュメントでは、プロセス スイッチング、ファースト スイッチング、および、Cisco Express Forwarding(CEF)についてのみ説明します。
このドキュメントの読者には、次の項目に関する知識が必要です。
Cisco IOS ソフトウェア
Cisco 1600、2500、および 3600 シリーズ プラットフォーム
このドキュメントは、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。
ドキュメント表記の詳細は、『シスコ テクニカル ティップスの表記法』を参照してください。
Cisco IOS スイッチングは、ルータを経由するパケット フローを定義します。 より明確に言えば、パケットをルータ経由でどれくらい迅速に転送できるか、およびどの物理バッファにパケットを保存するかを決定します。
これまでの Cisco IOS の発展過程において、複数のスイッチング方式が開発されてきました。 特定のプラットフォームでしかサポートされないスイッチング方式もあります。 CEF は、最新のスイッチング方式です。 CEF が(デフォルトの動作)グローバルに 有効に なる時、IPルートキャッシュ cef インターフェイス別のコマンドはまた有効に なります。 このコマンドはこのインターフェイスに入るパケットのための CEFスイッチングが実行されることを確認します。 時折、もし必要なら単独で 1 つのインターフェイスの CEF をディセーブルにするために、no ip route-cache cef コマンドは追加されます。 これは単独でそのインターフェイスのための CEF スイッチングをディセーブルにします。 Cisco IOS は running-config に CEF をディセーブルにすることを強制するとき no ip route-cache コマンドを自分自身で追加しません。 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 シリーズでは、今後の Cisco IOS リリースで CEF がデフォルトの Cisco IOS スイッチング方式になっています。
show ip cef prefix コマンドを使用して、プレフィクスがリストされていることを確認します。
router#show ip cefPrefix 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 cacheIP routing cache 0 entries, 0 bytes 0 adds, 0 invalidates, 0 refcountsMinimum 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 プレフィクスか。転送情報ベース (FIB)のプレフィクス エントリを表示する。
show adjacency interface detail か。隣接関係によって解決される回帰的およびダイレクト プレフィクスを表示する。
show cef not-cef-switched か。どのパケットが CEF スイッチではないか表示する。
debug ip cef drop か。CEF 廃棄されたパケットのためのデバッグ情報を表示する。
入力インターフェイスによって、パケットがたどる Cisco IOS スイッチング パスが決定されます。 特定のインターフェイスでスイッチング方式をイネーブルにしたりディセーブルにしたりする際には、次のルールを考慮してください。
着信インターフェイス | 発信インターフェイス | スイッチング方式 |
---|---|---|
CEF | Process | CEF |
Process | CEF | Fast |
Process | ファースト スイッチング(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 adjacencyCEF Packets passed on to next switching layer Slot No_adj No_encap Unsupported Redirect Receive Bad_ttl OptionsRP 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 コマンドの情報が異なっているはずです。
注: Gigabit Switch Router(GSR; ギガビット スイッチ ルータ)では、ラインカード(LC)により、CEF 内部からの Internet Control Message Protocol(ICMP; インターネット制御メッセージ プロトコル)のエコー応答が生成されます。 パケットが GSR ローカル アドレスのいずれか宛になっていない場合には、関与するプロセスはありません。 その場合は、使用している LC により、ハードウェアか dCEF でのインタラプトで、そのままスイッチングされます。
GSRでは、ファスト スイッチングおよびプロセス スイッチングは使用できません。 送信先プレフィックスを、着信 LC テーブル内の転送エントリに解決できない場合、パケットは廃棄されます。 グリーニング隣接関係に一致するパケットだけが、ギガビット ルーティング プロセッサ(GRP)にパントされます。 さらに GSR では、LC CPU は機能用に GRP へのパケットのパントは行わず、LC から ICMP 到達不能メッセージが送信されます(no ip unreachables コマンドが設定されていない場合に限る)。 GSR では、GRP にパントされるトラフィックは、ルータ上のインターフェイスを宛先とするパケット、またはルータを送信元とするパケットだけです。