教科書には載っていない ネットワークエンジニアの実践技術

第8回 Ciscoのすごい技術─CEF

この記事を読むのに必要な時間:およそ 2.5 分

CEF(セフ)

こちらはキャッシュとは逆の発想で,最初に高速検索用のテーブルを作ってしまう,という方法です。

(実際にはもっと複雑ですが)大まかには,ルーティングテーブルの情報に基づいて,Forwarding Information Base(FIB)というテーブル(実際にはツリー構造)を作ります。それから,⁠これも大まかですが)ARPテーブルなど主にレイヤ2の情報に基づいて,アジャセンシーテーブル(隣接テーブル)というものを作ります。

端的に言うと,ネイバールータ(隣接するルータ)へパケットを送るときに必要になるL2ヘッダ(MACフレーム)の情報が,全てアジャセンシーテーブルに入っています。

また,FIBテーブルの中に格納されている情報はIPアドレスやMACアドレスなどではなく,⁠ポインタ」です。C言語を勉強されたことのある方ならピンと来ると思いますが,ポインタは別の情報が格納されたメモリの場所(アドレス)を示しています。FIBテーブルのポインタは,⁠これも厳密には例外がありますが)アジャセンシーテーブルのアドレスを指しているのです。

具体的な例を見てみましょう。

図2 CEFによるルーティング

CEFによるルーティング

図2の場合,ルータにNet.D宛てのパケットが到着しています(Net.Dは,Neighbor-3の先にあります⁠⁠。

すると,まずFIBテーブルが検索されます。FIBテーブルで「Net.D」を検索すると,ポインタ情報が格納されています。このポインタは,アジャセンシーテーブルのNeighbor-3に関する情報が格納されたメモリのアドレスを示しているのです。ですから,そのアドレスに格納された情報を取得すると,そこには,Neighbor-3へパケットを転送するときに必要になるレイヤ2の情報が全て入っているのです。

ルータはレイヤ2の情報を書き換えてパケットを出力すれば「一丁あがり」です。

同じように,Net.B宛てのパケットが到着した場合であれば,FIBテーブルを検索し,ポインターに示されたアドレスにジャンプして情報を取得すると,そこにはNeighbor-2へ送るためのレイヤ2情報が入っているのでパケットを書き換えて一丁あがり,という仕組みです。

つまり,デフォルトルートでも,BGPを使っていても,どんなに複雑なスタティックルートが設定されていても,CEFでは,パケット転送のために必要な情報を「必ず1回の検索で」全て見つけることができるようになっています。

CEFの威力を測る

ファスト・スイッチングでは,最初の1つ目のパケットはCPU処理になりますが,後続のパケットの宛先が同じIPアドレスであればキャッシュがヒットしますので,大量の情報を同じ宛先へ送る場合には効果的です。特に測定器を用いて性能測定する場合など,同じIPアドレスを宛先としたトラフィックのみで計測すれば,見かけ上の性能は高くなります。

しかし現実には,特に最近のWEB2.0と言われるようなテクノロジーでは,ファイル転送のように大きなデータを連続して送るのではなく,細かなデータを散発的に送受信する傾向があります。

このような状況ではCEFのメリットが出るはずなのですが,実際のところはどうなのでしょうか。そこで,ファスト・スイッチ方式のYAMAHA RTX1200と,CEFのCisco892Jで比較検証してみました。

まず,全てのパケットが同じ宛先IPアドレスの場合(1フロー)でスループットを計測すると,892Jが760Mbps,RTX1200が320Mbpsでした(※⁠⁠。

いずれもパケット長354バイトなので,メーカの公表値とは大きく異なります。

そこからフロー数(宛先アドレスの種類)を増やしていくと,RTX1200のみスループットが徐々に低下していきます。1万フローくらいまでは大きな低下ではありませんでしたが,6万フローを少し超えたあたりでキャッシュが完全にオーバーフローするらしく,全てのパケットがCPU処理になって大幅に性能が低下しました。

6万5000フローで測定すると,892Jは760Mbpsのままですが,RTX1200は4.2Mbpsであり,ピーク時の1.3%にまで低下したことになります。

図3 ファスト・スイッチングとCEFスループット比較

ファスト・スイッチングとCEFスループット比較

この結果をどう見るかはケースバイケースで変わってくるでしょうが,RTX1200でも1万フローくらいまでは大きな性能低下はなかったわけですから,一般のオフィス用途では問題ないと言えるでしょう。強いて言えば,IPアドレスを変えながらパケットを吐きまくるような,たちの悪いワーム型のウィルスが蔓延したりすると,ルーターのキャッシュがオーバーフローしてネットワークが使えなくなってしまう,というようなシナリオがあり得なくも無いかもしれません。

まあ,同じような値段で買えるなら,CEFのほうが「お買い得感」はあるのではないでしょうか。

なお,CEFはシスコの特許技術であり,他のメーカでは採用されていないようです。

著者プロフィール

高木圭一(たかぎけいいち)

ネットワーク業界でSEとして22年間の業務を経験した後,現在は独立。IPイノベーションズの専属コンサルタント・インストラクターとして活躍中。ネットワークを活用した新しいライフスタイルを確立し,浸透させることを目標として活動中であり,栃木県に在住。

  • 1986年 富士通ネットワークエンジニアリング(現FNETS)入社
  • 2000年 シスコシステムズへ転職
  • 2007年 独立・IPイノベーションズ専属コンサルタント・インストラクター

URLhttp://www.gogonetpro.com/