ここからは,冒頭でみたルーターの処理のうち,(3)のフロー検出処理について説明していきます。

フロー検出処理の高速化

 セキュリティへの高まる要求に応えたり,ミッション・クリティカルな通信や映像・音声通信の品質を守るため,ルーターにはフィルタリングやQoSといった機能が搭載されています。これらの機能は,通信の流れ(=フロー)を意識しなければ実現できない機能です。

 フィルタリング機能では,あらかじめ許可された通信だけを通過させるため,通信を識別する条件を「フロー」として定義して,フィルタ用のフロー・テーブルに登録しておきます。受信パケットが通信を許可されたフローに当てはまれば,そのパケットは転送されます。当てはまらない場合,パケットは廃棄されます。QoS機能でも,通信品質を守るため優先転送や帯域制御などのQoS制御したいフローをQoS用のフロー・テーブルに登録しておき,受信パケットが含まれるフローごとに定められたQoS制御を実施します。

 フローの定義には,MACアドレスやIPアドレス,通信アプリケーションを識別するTCP/UDPのポート番号など,パケット・ヘッダー内のさまざまな条件を組み合わせて行います。先に解説した「あて先検索」では,IPアドレスだけで検索していたのが,フローの判定にはIPアドレス以外のヘッダー情報も使うので,判定すべき条件が多くなるという特徴があります。例えば,パケットを受信したルーターは,検索エンジンでフローの検出に使う条件――「送信元IPアドレスがxxx.xxx.xxx.xxx」,「あて先IPアドレスがxxx.xxx.xxx.xxx」,「あて先ポート番号がxx番」など――を組み合わせて検索キーとし,フロー・テーブルを検索してこのパケットが含まれるフローを判定します。この処理をフロー検出とよびます。

 このように,フロー検出では判定すべき条件が多数あるため処理時間がかかりやすく,ルーターの転送性能の低下要因となりがちです。フィルタリング機能,QoS機能などの付加機能を使うためにフロー検出を実行すると,ルーターの転送性能が損なわれてしまうというのでは,フィルタリングやQoS制御を利用しにくくなってしまいます。例えば,QoS機能を使用した結果,転送性能が落ちて実質的な通信品質が低下してしまっては,QoS機能を利用する意味がありません。そのため,転送性能に影響を与えない高速なフロー検出が必要となっています。

 最近では,性能を重視するハイエンド・ルーターは,あて先検索で利用するCAMをフロー検出にも採用することが一般的となってきました。

高速化のために検索キーの長さを短く抑える

 CAMをフロー検出に利用する場合,一つ課題があります。それは,「検索キーの長さが長くなると検索性能が低下する」というCAMの性質です。フローを定義する条件のビット長や条件の数が増えると,CAMの検索キーが長くなるので,転送性能が低下してしまう恐れがあるのです。世の中の先進的なネットワークでは,アドレス長を拡張したIPv6やバーチャルLAN(VLAN)を多重化して使う「VLANトンネル」などが適用されつつあり,フローを定義する条件のキーの長さや条件の数は増加する傾向にあります。そのため,転送性能を犠牲にすることなく付加機能を利用することはますます困難になっていくと考えられます。この性能低下の問題を解決することが,ハイエンド・ルーターを開発する上での重要課題となっているのです。

 この課題を解決するには,以下のような方法が考えられます。

 フロー検出に使うヘッダー情報の長さは製品により異なりますが,ここでは一例としてレイヤー2(L2)のヘッダー=14バイト,レイヤー3(L3)のヘッダー=IPv4の場合20バイト,レイヤー4(L4)のヘッダー=TCP/UDPのポート番号分のみであれば4バイト――の合計38バイトだと仮定して話を進めます。さらに,38バイトの検索キーをCAMで使うと,CAMの検索性能が低下してしまうものとします。

 そこで,性能低下を防ぐために,フロー検出に不要なヘッダー情報を検索キーから除外することで検索キーの長さを短縮し,フロー検出を高速化するわけです。こうした手法を「フロー検出条件選択方式」と呼びます。ネットワーク構成図とヘッダー情報の関係から,説明していきましょう(図5)。

図5●フローの識別方法
図5●フローの識別方法
スイッチング処理とルーティング処理で,フローを識別するために使える情報が変化する。

 パケットの転送には,スイッチング処理とルーティング処理の二つがあります。あて先MACアドレスが自分のアドレスではなく他の装置のものの場合,MACアドレスに基づいて出力ポートを決める「スイッチング処理」が実行されます(図5のS0,S1での処理)。

 スイッチング処理されるパケットでは,L2ヘッダーのMACアドレスとL3ヘッダーのIPアドレスのいずれでもLAN上のフローを識別できるので,L2ヘッダーもしくはL3ヘッダーのどちらか片方をフロー定義する条件に含めれば十分です。

 L2ヘッダーとL3ヘッダーのどちらを使うかはネットワーク管理者の運用ポリシーに依存しますが,ここでは端末のハードウエアに固有の値であり詐称しにくいMACアドレスを含むL2ヘッダーを条件に含め,L3ヘッダーを除外するものとします。すると,検索キーの長さは,38バイト-20バイト(L3ヘッダー分)=18バイトとなります。こうすることで検索キーが大幅に短縮されるので,スイッチング処理時のフロー検出を高速化できます。

 あて先MACアドレスが自分のアドレスの場合,IPアドレスに基づいて出力ポートを決める「ルーティング処理」が実行されます(図5のR0,R1での処理)。このときルーターは,MACアドレスを端末の値からルーターの値に書き換えるため,MACアドレスを元にユーザーを識別することは困難になります。そこで,より直接的にユーザーを識別できる条件として,IPアドレスを含むL3ヘッダーをフロー定義する条件に含め,L2ヘッダーを除外します。すると,検索キーの長さは,38バイト-14バイト(L2ヘッダー分)=24バイトとなります。ここでも検索キーの長さが大幅に短縮されるので,ルーティング処理時のフロー検出を高速化できるというわけです(図6)。

図6●フロー検出条件選択方式により,検索キーの長さを短縮して高速化を図る
図6●フロー検出条件選択方式により,検索キーの長さを短縮して高速化を図る
CAMには,検索キーの長さが長いと処理に時間がかかるという性質がある。そこで,転送処理の違いによってフローの判定に使う検索キーの一部を省略することで,検索キーの長さを短くして高速化を図る。

 このように,パケットを転送する形態に応じてフローの定義条件を変えて検索キーの長さを短くする「フロー検出条件選択方式」を用いることによって,CAMを使ったフロー検出の処理も高速化できることになります。この手法は,新しいプロトコルを利用する先進的なネットワーク環境でも有効です。さらに,一つのフローを定義するためにCAMに登録しておく情報量も削減されるので,同じメモリー容量で処理できるフローの数を増やせることになり,よりコスト・パフォーマンスの高いルーターを設計できるようになります。

林 剛久(はやし たけひさ) アラクサラネットワークスCTO

赤羽 真一(あかはね しんいち) アラクサラネットワークス 第二製品開発部

石川 有一(いしかわ ゆういち) アラクサラネットワークス 第二製品開発部

加賀野井 晴大(かがのい てるお) アラクサラネットワークス 第二製品開発部

<<【2】を読む 
>>【4】を読む