Cisco Express Forwarding(CEF)とは
ルータがパケットを着信I/Fから発信IFへ(例:Fa0/1からFa0/2へ)転送する技術をスイッチングと言いますが、それをCisco独自で更に高速処理できるようにしたスイッチング方式のことです。
※現在デフォルトで有効となっております
スイッチングは、コントロールプレーンもしくはデータプレーンで処理が実行されます。
コントロールプレーンは、CPUを使用して処理が実行されます。
例:ルーティングテーブルの構築・維持、QoSやACLなど
それに対しデータプレーンは、ASIC(ハードウェア)を使用して処理が実行されます。
CEFはこのデータプレーンの方で処理されます。
では、CEFは何の情報を元に処理を行うだろうでしょうか。
それはFIB(Forwarding Information Base)テーブルとAdjacencyテーブルになります。
FIBテーブルは、ルーティングテーブルを元に作成され、それに該当する役割をデータプレーンで行います。
Adjacencyテーブルは、ARPテーブルを元に作成され、それに該当する役割をデータプレーンで行います。
これらにより、データプレーンで処理できるものが高速で可能になります。
※ARPテーブルはIPアドレス(L3)とMACアドレス(L2)を結び付けたテーブルのこと
FIBテーブルは、宛先に対しての送出I/Fが記載されています。
郵便に例えると、「この住所(宛先)への荷物が来たら、ここ(送出I/F)に送る!!」といった感じになります。
つまり条件反射的に処理が行えるので、高速処理ができるといった仕組みなのです。
※FIBはshow ip cef コマンドで確認できます
先ほど“ルーティングテーブルを元に作成される“と記載しましたが、RIBテーブル(Routing Information Base)のことになります。
よく耳にするであろう、ルーティングテーブルって実はRIBテーブルのことだったんです。
※RIBテーブルはshow ip route等のコマンドで確認できます
RIBはFIBと違い、条件反射的に行える処理ではなく、CPUを使用した負荷のかかる処理を行います。
なので高負荷がかかり過ぎると、パケットドロップや処理遅延に繋がります。
ちなみにRIBはCPUで処理するパケットを制御する、「CoPP(コントロールプレーンポリシング)」を使用することで、悪意のある高負荷な処理など(例:大量のパケットが送り付けられるDoS攻撃など)からも保護することができます。
・CEFはパケットの処理が可能なこと
・RIBは「非日常な処理」、FIBは「日常的な処理」
この2点を覚えると良いと思います。