(57)【特許請求の範囲】
【請求項１】
順不同に到着する複数のパケットを処理するパケット処理装置において、
未送信のパケットを蓄積するパケット蓄積手段と、
パケットが受信されると、受信されたパケットを解析して該パケットの属するフローに関する解析情報を抽出するパケット解析手段と、
前記解析情報に基づき、受信されたパケットが属するフローを特定し、同一のフローに属するパケットの受信間隔を計測し、前記受信間隔から該フローの受信の頻度予測値を算出する頻度予測手段と、
受信されたパケットを前記パケット蓄積手段に格納し、該パケットが属するフローについて、該フローに属するパケットをまとめる処理を終了させるまでの待ち時間を前記頻度予測値に応じて決定し、前記待ち時間に対応するタイマカウンタ及び前記頻度予測値を該フローに対応付けられたフロー情報に設定し、所定の時間が経過するごとに各フローに対応するタイマカウンタを更新し、更新したタイマカウンタに示される時間が前記待ち時間を経過したフローが検出されたときは、該フローをまとめ終了フローとして選出するフロー処理手段と、
前記フロー処理手段によって前記まとめ終了フローが選出されたときは、前記パケット蓄積手段に格納されている前記まとめ終了フローに属する１つ以上のパケットをまとめて転送先に出力するパケット転送手段と、
を具備することを特徴とするパケット処理装置。
【請求項２】
前記フロー処理手段は、受信されたパケットが属するフローについて算出された前記頻度予測値が、予め決められた頻度基準値より低い場合は、当該フローを前記まとめ終了フローとして選出する、
ことを特徴とする請求項１記載のパケット処理装置。
【請求項３】
前記フロー処理手段は、予め決められた並行まとめ処理数に応じた前記フロー情報を格納する領域を有するフロー情報記憶手段に新規フロー情報を格納する領域がない場合には、前記新規フロー情報及び前記フロー情報記憶手段に格納されるフロー情報に設定される各フローの頻度予測値を比較し、前記頻度予測値が最も低いフローを前記まとめ終了フローとして選出し、前記まとめ終了フローに対応するフロー情報を除く残りのフロー情報を前記フロー情報記憶手段に格納する、
ことを特徴とする請求項１記載のパケット処理装置。
【請求項４】
前記フロー処理手段は、前記フローに属するパケットをまとめる処理の対象としない所定のパケットが受信されたことが検出された場合には、該所定のパケットをそのまま転送先に転送するように前記パケット転送手段に指示する、
ことを特徴とする請求項１記載のパケット処理装置。
【請求項５】
予め前記受信間隔に応じた複数段階の頻度レベルを表すレベル値が規定されており、前記頻度予測手段は、パケットが受信された場合には、前記頻度予測値に最も受信頻度が高い状態を示す前記レベル値を設定し、所定の頻度予測更新時間が経過するごとに順次低い段階のレベル値を前記頻度予測値に設定する、
ことを特徴とする請求項１記載のパケット処理装置。
【請求項６】
前記頻度予測手段は、前記頻度予測更新時間を、パケットが受信されてからの経過時間に応じて可変に設定する、
ことを特徴とする請求項５記載のパケット処理装置。
【請求項７】
前記頻度予測手段は、フローごとに該フローに属する最新のパケットを受信した最新パケット受信時刻を頻度予測記憶手段に記憶しておき、所定の時間が経過するごとに、その時点の時刻と前記最新パケット受信時刻との差分によって得られる経過時間に応じて前記頻度予測値を設定する、
ことを特徴とする請求項１記載のパケット処理装置。
【請求項８】
順不同に到着する複数のフローのパケットを処理するパケット処理プログラムにおいて、
コンピュータに、
パケットが受信されると、受信されたパケットを解析して該パケットの属するフローに関する解析情報を抽出し、
前記解析情報に基づき、受信されたパケットが属するフローを特定し、同一のフローに属するパケットの受信間隔を計測し、前記受信間隔から該フローの受信の頻度予測値を算出し、
受信されたパケットを未送信のパケットを蓄積するパケット蓄積手段に格納し、該パケットが属するフローについて、該フローに属するパケットをまとめる処理を終了させるまでの待ち時間を前記頻度予測値に応じて決定し、前記待ち時間に対応するタイマカウンタ及び前記頻度予測値を該フローに対応付けられたフロー情報に設定し、
所定の時間が経過するごとに各フローに対応するタイマカウンタを更新し、更新したタイマカウンタに示される時間が前記待ち時間を経過したフローが検出されたときは、該フローをまとめ終了フローとして選出し、
前記まとめ終了フローが選出されたときは、前記パケット蓄積手段に格納されている前記まとめ終了フローに属する１つ以上のパケットをまとめて転送先に出力する、
処理を実行させることを特徴とするパケット処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はパケット処理装置及びパケット処理プログラムに関し、特に順不同に到着する複数のフローのパケットを受信し、フローごとにパケットをまとめ処理するパケット処理装置及びパケット処理プログラムに関する。
【背景技術】
【０００２】
コンピュータの性能及びコンピュータネットワークの伝送速度が年月を経て指数関数的に向上しているのに対し、通信のパケットサイズは通信方式の互換性を保つために制限されている。このため、コンピュータとネットワークとをつなぐインタフェースは伝送速度に比して小さいサイズのパケットを取り扱わなければならず、通信性能のボトルネックとなっている。
【０００３】
たとえば、イーサネット（登録商標）上のＴＣＰ（Transmission Control Protocol）／ＩＰ（Internet Protocol）通信では、標準的な最大パケットサイズは約１５００バイトに設定されている。従って、最大能力で動作している１０ギガビットイーサネットネットワークは、パケットサイズが最大（約１５００バイト）の場合でもコンピュータに約８３万パケット／秒の送受信を行うことを要求する。このため、送信時にデータを分割してパケットに格納し、受信時にパケットからデータを取り出すプロトコル処理がコンピュータのプロセッサの顕著な負担となっている。
【０００４】
この状況は、パケットサイズを拡大することで改善されるが、パケットサイズの拡大はスイッチ装置などコンピュータネットワーク機器の対応が必要となり、既存のネットワークに適用することはできない。そこで、送信時にデータを複数の小さいサイズのパケットに分割して送信する機能をネットワークインタフェース回路に持たせることにより、送信側コンピュータのプロセッサの負担を軽減した。
【０００５】
一方、受信側では、様々な送信元からの多数のフローに属するパケットを混在して受信しており、一部のパケットが遅延・消失することもあるため、送信側のように機械的に処理することができない。そこで、ネットワークと受信側コンピュータの間にパケット処理装置を設け、受信したパケットを大きなパケットにまとめる処理を行わせていた。図１５は、従来のパケット処理装置の構成図である。
【０００６】
ネットワーク経由で受信されたパケットは、パケットキュー９０１とパケットパーサー９０２に送られる。パケットキュー９０１は、パケットを蓄積するバッファである。パケットパーサー９０２は、パケットのヘッダから抽出したＩＰアドレス、ポート番号などの識別情報やフロー上の位置情報などのパケット解析情報に、後続パケットを待つためのタイマカウンタなどの管理情報を付加したフロー情報をフローテーブル（記憶装置）９０３に蓄積する。フロー処理部９０４は、フローテーブル９０３に蓄積されたフロー情報を参照し、まとめ処理するフローを決定し、そのフロー情報をＤＭＡ（Direct Memory Access）エンジン９０５に送る。ＤＭＡエンジン９０５は、フロー情報に従って、パケットキュー９０１に蓄積された対象のパケットをまとめ処理し、ホストのメモリに転送する。
【０００７】
また、上位層プロトコルの空きバッファサイズに応じて下位層のパケットをまとめて、１つのビッグパケットに再構成するパケット処理装置も提案されている（たとえば、特許文献１参照）。
【特許文献１】特開２０００−３３２８１７号公報（段落番号〔００６７〕〜〔００８４〕、図４）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかし、従来のパケット処理装置は、特に、多数のフロー通信が行われている場合、まとめ処理を効果的に行うことが難しいという問題点がある。
従来の受信パケットのまとめ処理は、フローテーブルによって管理されており、多数のフローで通信が行われている場合にまとめ処理を効果的に働かせるためには、十分なエントリ数が必要となる。また、ＲＤＭＡ方式のプロトコルのように、転送先アドレスがフローテーブルに直接、もしくはプロトコル的に結び付けられており、フローテーブルのエントリ数が通信のフロー数を制限するものもある。しかしながら、ホストがサーバなどの場合には、受信処理するフロー数が数千から数万になるため、すべてのフローをエントリ可能とし、並行してまとめ処理を行うことは、ハードウェア的な能力から見ても困難である。一方、不必要にフローテーブルのエントリ数を増やすことは、無駄なメモリ容量を増加させることとなり、好ましくない。
【０００９】
さらに、パケットを大きくまとめるためには、ホストへのパケット転送を遅延させて後続パケットの到着を待つ必要があった。このため、ＴＣＰのようにまとめ処理の範囲がプロトコルで明示されていない場合、まとめ処理は基本的に後続パケット待ち状態の時間切れによってのみ終了することとなる。この結果、パケットは、まとめ処理を終了するまでホストに転送されず、ホスト到達に遅延が生じるという問題点もある。
【００１０】
本発明はこのような点に鑑みてなされたものであり、効果的なまとめ処理を行うことが可能なパケット処理装置及びパケット処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明では上記課題を解決するために、図１に示すようなパケット処理装置１が提供される。パケット処理装置１は、パケット蓄積手段１ａ、パケット解析手段１ｂ、頻度予測手段１ｄ、フロー処理手段１ｆおよびパケット転送手段１ｇを具備する。パケット蓄積手段１ａは、転送先に未送信のパケットを指示があるまで蓄積する。パケット解析手段１ｂは、パケット処理装置１が受信したパケットを解析してパケットの属するフローに関する解析情報を抽出する。頻度予測手段１ｄは、解析情報に基づき、受信されたパケットが属するフローを特定し、同一のフローに属するパケットの受信間隔を計測し、受信間隔からフローの受信の頻度予測値を算出する。フロー処理手段１ｆは、受信されたパケットをパケット蓄積手段１ａに格納し、受信されたパケットが属するフローについて、フローに属するパケットをまとめる処理を終了させるまでの待ち時間を頻度予測値に応じて決定し、待ち時間に対応するタイマカウンタ及び頻度予測値を、フローに対応付けられたフロー情報に設定する。そして、所定の時間が経過するごとに各フローに対応するタイマカウンタを更新する。更新したタイマカウンタに基づき待ち時間が経過したフローが検出されたときは、該フローをまとめ終了フローとして選出する。パケット転送手段１ｇは、フロー処理手段１ｆによってまとめ終了フローが選出されれば、そのまとめ終了フローについてパケット蓄積手段１ａに蓄積されるパケットをまとめて転送先に出力する。
【００１３】
また、上記課題を解決するために、コンピュータに上記の処理手順を実行させるパケット処理プログラム、が提供される。
【発明の効果】
【００１５】
本発明では、パケットの受信間隔に基づきフローごとに頻度予測を行い、算出された頻度予測値に応じてまとめ処理を終了するフローを選出することによって、受信パケットのまとめ処理を行うタイミングをそれぞれの受信の頻度予測に応じて調整するようにした。これにより、たとえば、頻度予測値の低いフロー、すなわち、後続のパケットを受信するまでの時間が長いフローは後続を待たずにまとめ処理を終了してフロー情報の記憶領域（フローテーブル）を空け、まとめ処理が効果的な頻度予測値の高いフローを優先的に処理することができる。このように、資源を有効的に利用し、パケットの受信間隔に応じた効果的なまとめ処理を行うことが可能となる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施の形態を図面を参照して説明する。まず、実施の形態に適用される発明の概念について説明し、その後、実施の形態の具体的な内容を説明する。
図１は、実施の形態に適用される発明の概念図である。
【００１７】
パケット処理装置１は、ネットワーク２とホストコンピュータ（以下、ホストとする）３との間に接続され、ネットワーク２を介してホスト３に入力する受信パケットのまとめ処理を行う。パケット処理装置１は、パケット蓄積手段１ａ、パケット解析手段１ｂ、頻度予測記憶手段１ｃ、頻度予測手段１ｄ、フロー情報記憶手段１ｅ、フロー処理手段１ｆ及びパケット転送手段１ｇを具備する。ネットワーク２に接続する他装置は、所定の情報データをパケットに分割し、ホスト３に向けて順次送信する。このため、パケット処理装置１には、多数のフローに属するパケットが順不同に入力する。以下、フローとは、送信側のネットワークインタフェース回路が所定の大きさのデータを複数のパケットに分割して送信した場合における関連するパケット群を言うこととする。
【００１８】
パケット蓄積手段１ａは、パケット処理装置１が受信したパケットをパケット転送手段１ｇからの指示があるまで蓄積するバッファである。
パケット解析手段１ｂは、パケット蓄積手段１ａに入力された受信パケットを取得して解析し、パケットの属するフローに関する解析情報をパケットから抽出する。パケットが属するフローは、たとえば、プロトコルがＴＣＰ／ＩＰであれば、送信元ＩＰアドレス、受信先ＩＰアドレス、送信元ポート番号、受信先ポート番号などによって識別することができる。パケット解析手段１ｂでは、受信パケットに含まれるこれらの情報を抽出し、解析情報として頻度予測手段１ｄ及びフロー処理手段１ｆへ送る。
【００１９】
頻度予測記憶手段１ｃは、頻度予測手段１ｄが算出したフローごとの頻度予測値を格納する記憶手段である。
頻度予測手段１ｄは、フローごとに、当該フローに属するパケットの受信間隔を計測し、受信間隔から受信の頻度予測値を算出して頻度予測記憶手段１ｃに格納する。受信間隔は、たとえば、あるフローに属するパケットの受信でタイマカウンタを初期化し、所定時間ごとにタイマカウンタの値を更新し、後続のパケットを受信した時点のタイマカウンタの値によって測定する。また、受信時の時刻情報を格納しておき、次のパケット受信時の時刻との差に応じて測定することもできる。そして、計測された受信間隔に応じて、受信間隔を評価した頻度予測値が設定される。「頻度予測値が高い」とは、所定時間当たりの受信回数が多い、すなわち該当するフローのパケットの受信間隔が短い状態で、「頻度予測値が低い」とは、受信間隔が長い状態であることを意味する。こうして得られた頻度予測値は、解析情報に基づいて対応するフローを特定し、頻度予測記憶手段１ｃの該当するフローの領域に格納する。なお、たとえばプロトコルがＴＣＰ／ＩＰでは、送信元ＩＰアドレス、受信先ＩＰアドレス、送信元ポート番号および受信先ポート番号の組み合わせは膨大な数となり、これらすべてに対応する領域を頻度予測記憶手段１ｃに用意することはできない。そこで、たとえば、送信元ＩＰアドレス、受信先ＩＰアドレス、送信元ポート番号及び受信先ポート番号などの情報をハッシュ関数により所定の長さにハッシュ値に圧縮し、ハッシュ値に対応する頻度予測手段１ｄ上の領域に頻度予測値を格納する。この頻度予測値は、解析情報が入力されたとき、すなわち、パケット処理装置１にパケットが受信されたとき、解析情報に基づき受信パケットが属するフローに関するフロー情報が読み出され、フロー処理手段１ｆに出力される。
【００２０】
フロー情報記憶手段１ｅは、フローごとに受信パケットのまとめ処理を行うためのフロー情報が格納される。
フロー処理手段１ｆは、パケット解析手段１ｂから受信パケットの解析情報及び頻度予測手段１ｄからこの受信パケットの頻度予測値を取得すると、解析情報に基づいてフローを特定し、そのフローに関するフロー情報を生成する。このフロー情報には、少なくとも、解析情報と後続パケットを待つ待ち時間に関するタイマ情報及び頻度予測値が設定される。そして、フロー情報記憶手段１ｅに格納されるフロー情報を含め、フロー情報の頻度予測値に基づいて、まとめ処理を終了するまとめ終了フローを選出し、フロー情報記憶手段１ｅに格納するフロー情報を更新する。たとえば、生成されるフロー情報に該当するフローが既にフロー情報記憶手段１ｅに存在する場合、そのエントリに記録されている頻度予測値を新しい値に更新する。また、該当フローのエントリが存在しない場合は、フロー情報記憶手段１ｅに空き領域が存在し、頻度予測値が基準値以上であれば、生成された新規フロー情報を空き領域に追加する。空き領域が存在しない場合は、各フロー情報の頻度予測値を比較し、最も頻度予測値の低いフローをまとめ終了フローとして選出し、フロー情報記憶領域から該当フローのフロー情報を削除して空き領域を作り、そこに新規フロー情報を格納する。新規フロー情報のフローが選出された場合は、フロー情報記憶手段１ｅは、そのままである。また、該当フローがフロー情報記憶手段１ｅになく、他のフロー情報よりも頻度予測値が低い場合、あるいは、受信パケットがまとめ処理の対象のパケットである場合には、新規フロー情報の登録は行わず、フロー情報を直接パケット転送手段１ｇに送る。さらに、フロー情報のタイマ情報（まとめ処理終了を待つ待ち時間）に設定された所定の待ち時間が経過した場合にも、該当フローをまとめ終了フローとして選出する。
【００２１】
まとめ終了フローが選出されれば、選出されたフローに関するフロー情報をパケット転送手段１ｇに出力する。このとき、フロー情報またはまとめ処理終了の通知がホスト３にも送られる。
【００２２】
パケット転送手段１ｇは、フロー情報に基づき、パケット蓄積手段１ａに蓄積される対象のパケットをホスト３に転送する。このときの転送先アドレスは、フロー処理手段１ｆからのフロー情報またはまとめ処理終了の通知に応じてホスト３が指示したアドレスになる。
【００２３】
このような構成のパケット処理装置１では、ネットワーク２経由で複数の送信側装置が分割して送信した複数のフローのパケットが順不同に混在して受信される。受信パケットは、パケット蓄積手段１ａに蓄積されるとともに、パケット解析手段１ｂで解析され、受信パケットの属するフローを特定するための解析情報が抽出される。頻度予測手段１ｄは、解析情報に基づき、該当フローについて算出されている頻度予測値を頻度予測記憶手段１ｃから読み出してフロー処理手段１ｆへ送り、頻度予測値を初期化する。この頻度予測値は、後続のパケット受信までの経過時間に応じて適宜更新される。
【００２４】
フロー処理手段１ｆは、解析情報によってパケットの属するフローを特定し、頻度予測値を含めた該当フローに関するフロー情報を生成する。そして、フロー情報記憶手段１ｅに格納されるフロー情報を含めてフロー情報の頻度予測値を分析し、まとめ処理を終了するまとめ終了フローを選出し、該当フローのフロー情報をパケット転送手段１ｇに送る。その後、フロー情報記憶手段１ｅに格納するフロー情報を更新する。また、フロー情報にまとめ処理を終了する待ち時間に関するタイマ情報を設定しておき、待ち時間を監視する。そして、待ち時間が経過したフローもまとめ終了フローとし、フロー情報をパケット転送手段１ｇに送る。パケット転送手段１ｇは、まとめ終了フローに関するフロー情報を取得し、フロー情報に基づき該当フローのパケットをパケット蓄積手段１ａから抽出し、ホスト３へ転送する。
【００２５】
このように、まとめ処理の終了タイミング、すなわち、ホスト３へのパケット転送タイミングをまとめ処理終了の待ち時間の経過ばかりでなく、フローごとのパケット受信間隔に応じた頻度予測値によって決めることにより、まとめ処理が効果的なフローの処理を優先的に行うことができる。たとえば、並列処理可能なフロー数に到達した場合には、頻度予測値の高い、すなわち、後続パケットがすぐに受信されるフローと、頻度予測値の低い後続パケット受信までの待ち時間が長いフローでは、頻度予測値の高いフローを優先処理させる。これにより、効果的なまとめ処理が可能となる。さらに、まとめ処理に由来する遅延時間を削減することができる。
【００２６】
以下、実施の形態を、ＴＣＰ／ＩＰ通信によるパケットを処理するパケット処理装置に適用した場合を例に図面を参照して詳細に説明する。
図２は、本発明の実施の形態に係るシステム構成を示す図である。図２の例では、ネットワーク２を介して不特定多数のクライアント１０１、１０２、１０３、・・・がサーバ３０に接続され、ネットワーク２とサーバ３０の間にパケット処理装置１０が配置されている。
【００２７】
サーバ３０は、クライアント１０１、１０２、１０３、・・・からの要求に応じて、サービスを提供する。クライアント１０１、１０２、１０３、・・・からは、所定のフローに属する複数のパケットがＴＣＰ／ＩＰプロトコルに従って、不定期に送信される。ＴＣＰプロトコルでは、まとめ処理の範囲（最終のパケット）が明示されておらず、送信される総パケット数も不定である。パケット処理装置１０は、この複数のフローが混在して入力する受信パケットを解析し、受信頻度予測によって効率的に受信パケットのまとめ処理を実行し、まとめ処理によって大きなサイズに再構築したパケットをサーバ３０に転送することができる。
【００２８】
なお、システムに適用する際には、高速処理を可能にするため、パケット処理装置１０はサーバ３０の受信インタフェースモジュール（ハードウェア）に組み込まれる。その処理機能は、ハードウェアロジックとしてインタフェースモジュールに組み込むことによって実現することもできるし、処理手順を記述したプログラムをファームウェアとしてＲＯＭ（Read Only Memory）に格納しておき、インタフェースモジュールのＣＰＵ（Central Processing Unit）がＲＯＭから読み出したプログラムを実行することによって実現させてもよい。また、その処理手順の一部分をプログラムとして構成することもできる。
【００２９】
図３は、本発明の実施の形態のパケット処理装置のブロック図である。図２と同じものには同じ番号を付し、説明は省略する。
本実施の形態のパケット処理装置１０は、頻度予測値データベース（以下、ＤＢとする）１１及びフローテーブルＤＢ１２の記憶手段と、パケットキュー１３、パケットパーサー１４、頻度予測部１５、フロー処理部１６及びＤＭＡエンジン１７を具備する。
【００３０】
頻度予測値ＤＢ１１は、頻度予測記憶手段１ｃであり、フローの頻度予測値を格納する。フローテーブルＤＢ１２は、フロー情報記憶手段１ｅであり、フローのパケットまとめ処理に用いるフローテーブルを格納する。各情報の詳細については、後述する。
【００３１】
パケットキュー１３は、パケット蓄積手段１ａであり、クライアント１０１、１０２、１０３、・・・から受信したパケットを一時格納する。
パケットパーサー１４は、パケット解析手段１ｂであり、解析情報として、受信したＴＣＰ／ＩＰパケットから送信元ＩＰアドレス、送信元ポート番号、受信先ポート番号、次シーケンス番号を抽出する。また、必要に応じて、ＴＣＰパケットのコードビットなどの情報を付加することもできる。コードビットには、緊急に処理すべきデータが含まれているかどうかを示すＵＲＧ（Urgent flag）や、すぐに上位のアプリケーションにデータを配送する必要があるかどうかを指示するＰＳＨ（Push flag）などの制御情報が設定されている。
【００３２】
頻度予測部１５は、頻度予測手段１ｄであり、頻度予測読み出し部１５ａと、頻度予測算出部１５ｂを有する。頻度予測読み出し部１５ａは、パケットが受信されてパケットパーサー１４から解析情報を入力すると、頻度予測値ＤＢ１１から解析情報に該当するフローの頻度予測値が格納されるアドレスを算出する。そして、このアドレスに該当する領域から頻度予測値を読み出してフロー処理部１６へ送るとともに、頻度予測値の初期値を設定する。頻度予測算出部１５ｂは、タイマ１９などにより、定周期で起動され、起動されるごとに、頻度予測値ＤＢ１１に格納される各フローの頻度予測値を更新する。
【００３３】
ここで、頻度予測値について説明する。頻度予測値は、パケットが受信されてから後続のパケットを受信するまでの経過時間に応じて算出される。たとえば、予め、経過時間に応じて複数段階のレベル値を規定しておき、頻度予測算出部１５ｂによって経過時間ごとに頻度予測値を順次低い段階のレベル値に更新することにより、頻度予測値を設定することができる。図４は、本発明の実施の形態の頻度予測値の一例を示した図である。
【００３４】
図４の例では、経過時間は、パケットを受信してから、定周期のタイマ（たとえば、１０マイクロ秒）によってカウントしたカウント値で示しており、レベル値は、経過時間ごとに設定される頻度予測値を示している。ここでは、頻度予測値を３ビットの状態で表している。「１１１」が最も高いレベルで受信直後に設定され、「０００」が最も低いレベルでカウンタが４０以降に設定される。なお、「０００」は、特別に、まとめ処理対象としないパケットを表すようにしてもよい。
【００３５】
また、図の例では、カウンタを短時間タイマと長時間タイマの２種類を設け、さまざまなフローの送信状況に合うようにしている。たとえば、受信間隔の短いフローに合わせたカウンタを用いると、受信間隔の長いフローについて適当な頻度予測値を設定することは難しい。逆も同様である。そこで、「１１１」から「１０１」までは短時間タイマ（たとえば、１０マイクロ秒）で頻度予測値を更新し、「１００」から「０００」までは長時間タイマ（たとえば、１００マイクロ秒）で頻度予測値を更新する。このように、２種類のタイマを用いることによって、どちらにも適用できる。なお、これは、頻度予測値のビット数を増やす（レベル値の段階を増やす）ことによって対処することもできる。
【００３６】
頻度予測値は、頻度予測読み出し部１５ａ及び頻度予測算出部１５ｂによって操作される。図５は、図４の頻度予測値の更新状態を示した図である。
初期化された状態では、頻度予測値に「０００」（１０１）が設定される。この状態は、パケットが受信されるまで継続される。
【００３７】
そして、パケットが受信されると、頻度予測読み出し部１５ａによって、設定された頻度予測値が読み出された後、最も高い「１１１」（１０２）が頻度予測値に設定される。  その後、後続するパケットが受信されるまで、頻度予測算出部１５ｂによって、経過時間ごとに頻度予測値が更新される。まず、短時間タイマが働き、カウンタ＝１となると、頻度予測値を１減算して「１１０」（１０３）に更新する。この値は、パケットが受信されなければ、次の状態（カウンタ＝２）になるまで継続される。また、パケットが受信されれば、「１１１」（１０２）の状態に戻る。
【００３８】
同様に、パケットが受信されなければ、短時間タイマが進むごとに、頻度予測値は、「１０１」（１０４）、「１００」（１０５）に更新される。そして、「１００」（１０５）までくると、長時間タイマが働き、次のカウンタ＝１０までこの値が継続される。
【００３９】
そして、パケットが受信されなければ、長時間タイマが進むごとに、頻度予測値は、「０１１」（１０６）、「０１０」（１０７）、「００１」（１０８）、「０００」（１０１）の順に更新される。
【００４０】
図３に戻って説明する。
フロー処理部１６は、フロー処理手段１ｆであり、まとめ処理制御部１６ａと、待ち時間処理部１６ｂを有する。まとめ処理制御部１６ａは、パケットパーサー１４から受信パケットの解析情報、頻度予測部１５からこの受信パケットに関する頻度予測値を取得すると、解析情報に基づき、パケットの属するフローを特定してフロー情報を生成するとともに、このフロー情報とフローテーブルＤＢ１２に格納されるフロー情報とからまとめ終了フローを選出する。該当フローのエントリが既にフローテーブルに存在する場合、そのエントリに記録されている頻度予測値を新しい値で更新する。また、該当フローのエントリがフローテーブルに存在しない場合、空きがあり、頻度予測値が基準値以上であればフローテーブルに新規エントリを追加する。空きがない場合、既エントリを含め最も頻度予測値の低いフローをまとめ終了フローに選出し、フローテーブルに新規エントリを追加する。また、該当フローのエントリがなく、頻度予測値が基準値以下であれば、フローテーブルに登録せず、まとめ終了フローとする。まとめ終了フローが選出されれば、そのフロー情報をＤＭＡエンジン１７へ送る。待ち時間処理部１６ｂは、タイマ１９などにより、定周期で起動され、起動されるごとに、フローテーブルの各フローのまとめ処理を終了するまでの待ち時間を計時するタイマ情報を更新する。そして、待ち時間が経過したら、そのフローをまとめ終了フローとして通知する。
【００４１】
ＤＭＡエンジン１７は、パケット転送手段１ｇであり、フロー処理部１６からフロー情報、及びホスト３から転送先アドレスを取得すると、フロー情報に基づき、パケットキュー１３に蓄積されるパケットデータをホスト３のバッファの転送先アドレスによって指定された領域に転送する。
【００４２】
次に、本実施の形態のパケット処理装置の動作について説明する。
パケット処理装置１０が電源投入などによって初期化されると、頻度予測値ＤＢ１１及びフローテーブルＤＢ１２のデータが初期化され、頻度予測値ＤＢ１１に格納される各フローの頻度予測値には、「０００」が設定される。
【００４３】
ネットワーク２経由でパケットを受信すると、この受信パケットはパケットキュー１３に蓄積されるとともにパケットパーサー１４に送られ、解析情報が抽出される。ここでは、解析情報として、受信パケットから送信元ＩＰアドレス、受信先ＩＰアドレス、送信元ポート番号、受信先ポート番号及び次シーケンス番号が抽出されるとする。解析情報は、頻度予測部１５及びフロー処理部１６に送られる。
【００４４】
頻度予測部１５は、解析情報を取得すると、解析情報によって特定されるフローの頻度予測値を頻度予測値ＤＢ１１から読み出してフロー処理部１６へ送り、その値をパケット受信後の最も高いレベル値「１１１」に設定する。そして、短時間タイマ、長時間タイマにより、経過時間に伴って、各フローの頻度予測値を更新する。
【００４５】
図６は、本実施の形態の頻度予測処理の手順を示したフローチャートである。図６のフローチャートは、頻度予測部１５が解析情報の取得やタイマなどのイベント発生で起動されるのではなく、常に処理実行するとした場合の処理手順を示している。
【００４６】
［ステップＳ１１］  頻度予測部１５は、パケットを受信したかどうか、すなわち、パケットパーサー１４から解析情報を取得したかどうかを判定する。取得した場合は、ステップＳ１２からの頻度予測読み出し部１５ａによる処理手順へ進み、取得していない場合は、処理をステップＳ１４からの頻度予測算出部１５ｂによる処理手順へ進む。
【００４７】
［ステップＳ１２］  パケットが受信され、そのパケットの解析情報を取得したので、頻度予測読み出し部１５ａは、解析情報に基づき、頻度予測値ＤＢ１１の該当するフローの頻度予測値が格納される頻度予測テーブルアドレスを算出する。
【００４８】
［ステップＳ１３］  算出された頻度予測テーブルアドレスから頻度予測値を読み出し、フロー処理部１６へ出力する。その後、該当アドレスの頻度予測値をパケット受信後の頻度予測値「１１１」に更新する。そして、ステップＳ１１に戻り、処理を繰り返す。
【００４９】
［ステップＳ１４］  頻度予測算出部１５ｂは、パケットが受信されていないので、頻度予測更新時間であるかどうかを判定する。まだ、頻度予測更新時間でなければ、ステップＳ１１に戻り、処理を繰り返す。
【００５０】
［ステップＳ１５］  パケットが受信されておらず、頻度予測更新時間であれば、頻度予測値読み出しのポインタを頻度予測テーブルの先頭に設定する。
［ステップＳ１６］  ポインタの指示する頻度予測テーブルの領域から頻度予測値を読み出す。
【００５１】
［ステップＳ１７］  読み出した頻度予測値から使用するタイマを短時間タイマとするかどうかを判定する。図４の例であれば、頻度予測値が「１００」以下であれば長時間タイマ、それ以外は短時間タイマと判定される。判定結果が長時間タイマであれば、処理をステップＳ１９へ進める。
【００５２】
［ステップＳ１８］  読み出された頻度予測値によって短時間タイマが選択されたので、短時間タイマの更新処理を行う。短時間タイマによって計測される頻度予測更新時間になっていれば、頻度予測値を下の段階の値に更新する。頻度予測更新時間でなければ処理は行わない。その後、処理をステップＳ２０へ進める。
【００５３】
［ステップＳ１９］  読み出された頻度予測値によって長時間タイマが選択されたので、長時間タイマの更新処理を行う。長時間タイマによって計測される頻度予測更新時間になっていれば、頻度予測値を下の段階の値に更新する。頻度予測更新時間でなければ処理は行わない。なお、頻度予測値が「０００」の場合は、その値を維持する。
【００５４】
［ステップＳ２０］  全フローについての頻度予測値更新が終了したかどうかを判定する。終了していれば、ステップＳ１１に戻り、処理を繰り返す。
［ステップＳ２１］  全フローについての頻度予測値更新が終了していなければ、ポインタを１進め、ステップＳ１６に戻って、次のフローの頻度予測値更新処理を行う。
【００５５】
以上の処理手順が実行されることにより、頻度予測値が設定され、パケットを受信した際には、頻度予測値が読み出されてフロー処理部１６に送られる。
図７は、本実施の形態の頻度予測値の変化と読み出し頻度予測値の関係を示した図である。図は、受信パケットと、頻度予測値ＤＢ１１に格納される頻度予測値（以下、頻度予測エントリ値とする）と、フロー処理部１６に出力される読み出し頻度予測値（以下、頻度予測出力値とする）との関係を示した図である。
【００５６】
初期化により頻度予測エントリ値に設定された「０００」は、パケットが受信されるまでこの状態を継続する。パケット２０１が受信されると、頻度予測読み出し部１５ａは、頻度予測エントリ値「０００」を読み出し、頻度予測出力値として出力する。そして、頻度予測エントリ値を「１１１」に更新する。
【００５７】
最初の頻度予測更新時間になる前にパケット２０２が受信されると、頻度予測読み出し部１５ａは、頻度予測エントリ値「１１１」を読み出し、頻度予測出力値として出力する。そして、頻度予測エントリ値に「１１１」を設定する。
【００５８】
パケット２０３が受信された後、しばらくパケットが受信されないと、頻度予測算出部１５ｂによって頻度予測エントリ値が頻度予測更新時間ごとに更新される。図の例では、「１１１」から頻度予測更新時間ごとに１ずつ減算され、「１００」まで変化している。なお、このとき、頻度予測出力値は出力されないため、フロー情報に設定される頻度予測値は「１１１」を保持している。
【００５９】
そして、パケット２０４が受信されると、頻度予測読み出し部１５ａは、頻度予測エントリ値「１００」を読み出し、頻度予測出力値として出力する。そして、頻度予測エントリ値に「１１１」を設定する。
【００６０】
以上のように、頻度予測部１５によって、前回のパケット受信から今回のパケット受信までの経過時間に応じた頻度予測値が設定され、フロー処理部１６へ送られる。
なお、前述のように、パケットが属するフローを送信元ＩＰアドレス、受信先ＩＰアドレス、送信元ポート番号及び受信先ポート番号によって決めるが、ＴＣＰ／ＩＰプロトコルでは、この組み合わせは膨大な数となり、すべての組み合わせの領域を確保することはできない。そこで、十分な領域が確保された頻度予測テーブルから頻度予測値を格納するアドレスを算出する方法について説明する。
【００６１】
図８は、本実施の形態の頻度予測テーブルのアドレス算出手順を示した図である。
図の例では、３２ビットの送信元ＩＰアドレスＡ（２１１）、３２ビットの受信先ＩＰアドレスＢ（２１２）、１６ビットの送信元ポート番号Ｃ（２１３）及び１６ビットの受信先ポート番号Ｄ（２１４）をインデックス演算器２１０によって操作し、１６ビットの頻度予測テーブルインデックスを作成する。インデックス演算器２１０は、たとえば、すべての入力データの排他的論理和（ＸＯＲ）を算出し、インデックスを生成する。また、他のハッシュ関数を用いてもよい。このような関数を用いてインデックスを作成する手法は公知であるので、これ以上の説明は省略する。
【００６２】
なお、上記の説明では、頻度予測値を短時間タイマまたは長時間タイマを用いて頻度予測更新時間ごとに順次更新して得るとしたが、前回の受信パケットの取得時刻を頻度予測テーブルに記憶しておき、今回の受信パケットの取得時刻の差分に応じて頻度予測値を設定することもできる。
【００６３】
図９は、本実施の形態の他の頻度予測値算出処理の手順を示した図である。頻度予測テーブルのインデックス算出については、図８の場合と同様であるので、説明は省略する。
この頻度予測値算出処理では、図８の構成に加えて、現時刻を取得可能な計時器２２０と、パケットの受信間隔から頻度予測値を算出する時刻差分評価器２３０を具備する。
【００６４】
まず、受信パケットを取得すると、インデックス演算器２１０によって解析情報に基づく頻度予測テーブルのインデックスが計算される。インデックスの示す領域には、計時器２２０より得られる現時刻を格納する。続いて、同一フローの次のパケットを受信した場合には、インデックス演算器２１０により、同じ領域を示すインデックスが得られる。時刻差分評価器２３０は、頻度予測テーブルに格納される時刻情報（前回パケットの受信時刻）と、計時器２２０の現時刻（今回パケットの受信時刻）を比較し、その差分に応じて頻度予測値を設定する。頻度予測値は、時刻の差分が小さい場合に高い値が設定される。以上のように、この算出方法によっても、フローごとの受信間隔に応じた頻度予測値が算出可能である。なお、現時刻は、時刻の差分が得られるのであれば、カウンタのようなものであってもよい。
【００６５】
上記の頻度予測部１５の処理によって、フロー処理部１６には、受信パケットが属するフローについて算出された頻度予測値が得られる。以下、フロー処理部１６によるまとめ処理の動作について説明する。
【００６６】
ここで、各フローのフロー情報を格納するフローテーブルについて説明する。図１０は、本実施の形態のフローテーブルの一例を示した図である。
フローテーブルは、監視情報から得られるフローを特定するためのフロー特定情報３１０と、まとめ処理を管理するためのまとめ処理管理情報３２０を有する。
【００６７】
図の例では、フロー特定情報３１０には、解析情報から取得した送信元ＩＰアドレス、送信元ポート番号、受信先ポート番号及び次シーケンス番号が設定される。受信したパケットがどのフローに属するかは、この受信パケットの解析情報に含まれる送信元ＩＰアドレス、送信元ポート番号及び受信先ポート番号と、フローテーブルのフロー特定情報３１０の対応データを照合することによって判定する。一致するものがあれば、受信パケットはそのエントリに対応するフローに属すると見なし、一致するものがなければ、受信パケットは新規フローと見なす。
【００６８】
まとめ処理管理情報３２０には、まとめ処理を終了させる待ち時間を計時するためのタイマカウンタ３２１と、頻度予測部１５の算出した頻度予測値３２２がフローごとに設定されている。頻度予測値３２２には、パケット受信時、当該パケットが属するフローの頻度予測値が設定される。また、タイマカウンタ３２１には、パケット受信時に０が設定され、定周期のタイマによって１ずつインクリメントされるカウンタ値が設定される。
【００６９】
本実施の形態では、頻度予測値に応じてエントリの入れ替えが行われるため、このようなフローテーブルのエントリ数は、並行まとめ処理数だけあればよい。従って、従来のフローテーブルと比較して、メモリ領域を削減することができる。
【００７０】
なお、図１０は一例であり、さらに、他の情報をフロー特定情報やまとめ処理管理情報として設定することもできる。
次に、このようなフローテーブルを用いたまとめ処理の手順について説明する。図１１は、本実施の形態のまとめ処理の手順を示したフローチャートである。
【００７１】
フロー処理は、パケットパーサー１４から受信パケットの解析情報及び頻度予測部１５から受信パケットの属するフローの頻度予測値を取得し、処理を開始する。
［ステップＳ３１］  解析情報に基づき、フローテーブルＤＢ１２を検索し、受信パケットの属するフローに関するフロー情報がエントリされているかどうかを判定する。エントリされていない場合は、処理をステップＳ３３へ進める。
【００７２】
［ステップＳ３２］  フローテーブルに受信パケットの属するフローのエントリがあった場合、そのエントリの頻度予測値を頻度予測部１５より取得した値に更新するとともに、タイマカウンタを０にする。これにより、当該フローのまとめ処理は継続される。そして、処理を終了する。
【００７３】
［ステップＳ３３］  フローテーブルに受信パケットに対応するフローのエントリがない新規エントリの場合、新規エントリの頻度予測値と基準値を比較し、新規エントリの頻度予測値が基準値を超えているかどうかを判定する。超えている場合は、処理をステップＳ３５に進める。
【００７４】
［ステップＳ３４］  新規エントリの頻度予測値が基準値を超えていない場合、まとめ処理を終了し、当該受信パケットをそのままホスト３に転送するように、ＤＭＡエンジン１７へ指示する。従って、まとめ処理によって遅延されることなく、ホスト３へ転送される。また、この受信パケットに関するフロー情報のエントリは登録しない。その後、処理を終了する。
【００７５】
［ステップＳ３５］  新規エントリの頻度予測値が基準値を超えている場合、新規エントリを追加する空きがフローテーブルにあるかどうかを調べる。空きがない場合は、処理をステップＳ３７へ進める。
【００７６】
［ステップＳ３６］  新規エントリで、フローテーブルに空きがある場合、受信パケットの属するフローに関する新規エントリをフローテーブルの空き領域に登録し、処理を終了する。これにより、この新規エントリに対応するまとめ処理が開始される。
【００７７】
［ステップＳ３７］  新規エントリで、フローテーブルに空きがない場合、受信パケットのフローに設定された頻度予測値と、フローテーブルに格納される他のエントリの頻度予測値とを比較する。新規エントリの頻度予測値よりも低い頻度予測値のエントリがあれば、処理をステップＳ３９へ進める。
【００７８】
［ステップＳ３８］  新規エントリで、フローテーブルに空きがなく、新規エントリの頻度予測値が最も低い場合、ステップＳ３４と同様に、当該受信パケットをそのままホスト３に転送するように、ＤＭＡエンジン１７へ指示する。また、この受信パケットに関するフロー情報のエントリは登録しない。その後、処理を終了する。
【００７９】
［ステップＳ３９］  フローテーブルに空きがなく、新規エントリより低い頻度予測値のエントリがある場合には、頻度予測値が最も低いエントリをまとめ終了フローとし、まとめ処理を中断させる。これにより、これまでに蓄積された当該フローのパケットは、ＤＭＡエンジン１７によってホスト３へ転送される。
【００８０】
［ステップＳ４０］  ステップＳ３９においてまとめ処理が終了されたフローのエントリが削除され、空き領域に新規エントリが追加され、処理を終了する。これにより、この新規エントリに対応するまとめ処理が開始される。
【００８１】
以上の手順が実行されることにより、頻度予測値に応じて、以下のようなまとめ処理が行われる。
頻度予測値が基準値より低いフローについては、まとめ処理が行われず、受信パケットがすぐにホスト３に転送される。なお、まとめ処理の対象とならないフローの受信パケットについても同様に受信パケットをすぐに転送することもできる。この判断は、フロー処理部１６が解析情報に基づき行ってもよいし、頻度予測部１５やパケットパーサー１４が行ってもよい。たとえば、頻度予測部１５で頻度予測値を「０００」とした場合には、まとめ処理を行わないというように予め規定しておき、ステップＳ３３において頻度予測値が「０００」であるかどうかを判定させてもよい。このように、まとめ処理の対象とならないパケットは、まとめ処理のための遅延を受けず、すぐにホスト３側に転送できるという利点がある。
【００８２】
頻度予測値が基準値より高い場合には、まとめ処理の対象となる。このとき、フローテーブルのエントリは、各フローの頻度予測値に応じて入れ替えが行われる。
フローテーブルに空きがある場合及びそのフローについて既にエントリされている場合は、入れ替えは行われない。新規エントリは追加され、既にあるエントリは、最新の頻度予測値に更新される。
【００８３】
新規エントリがあり、フローテーブルに空きがない場合は、新規エントリ及びフローテーブルに格納されるエントリの頻度予測値を比較し、最も頻度予測値の低いエントリのフローのまとめ処理を終了させる。頻度予測値が最も低いということは、後続のパケット受信までの時間がかかると予測されるということであるので、フローテーブルを効率的に利用するという点からも、まとめ処理が効果的でないフローということになる。そして、新規エントリ以外のエントリがまとめ終了フローに選出された場合は、このエントリを削除し、空き領域に新規エントリを追加する。
【００８４】
このように、本実施の形態では、まとめ処理が効果的に行える頻度予測値の高いフローが優先的にエントリされ、まとめ処理が実施されるため、効率的なまとめ処理が可能となる。
【００８５】
エントリの入れ替えについて、具体例を用いて説明する。
図１２は、本実施の形態のまとめ処理におけるエントリ入れ替え前のフローテーブルの一例を示した図である。以下、簡単のため、フローテーブルには、最大４のエントリが可能であるとする。
【００８６】
図の例では、送信元ＩＰアドレス、送信元ポート番号及び受信先ポート番号によって識別されるフローに関するエントリ３０１、３０２、３０３、３０４がフローテーブルに格納されている。各エントリには、それぞれ、エントリ３０１は「１１０」、エントリ３０２は「１００」、エントリ３０３は「０１０」及びエントリ３０４は「１１１」という頻度予測値が設定されている。
【００８７】
ここで、新規エントリが入力されたとする。
図１３は、本実施の形態のまとめ処理における新規エントリが発生した場合のフローテーブルの一例を示した図である。
【００８８】
図の例は、図１２に示したフローテーブル状態から、新規エントリ３０５が発生した状態を示している。フロー処理部１６では、新規エントリ３０５の頻度予測値「１０１」と各エントリ３０１、３０２、３０３、３０４の頻度予測値とを比較し、最も頻度予測値の低いエントリを探す。ここでは、エントリ３０３の頻度予測値「０１０」が最も低いので、エントリ３０３のまとめ処理を終了させ、そのフロー情報をＤＭＡエンジン１７に出力する。これにより、エントリ３０３のフローについてこれまでに蓄積されたパケットがホスト３に転送される。そして、エントリ３０３がフローテーブルから削除される。
【００８９】
図１４は、本実施の形態のまとめ処理におけるエントリ入れ替え後のフローテーブルの一例を示した図である。
図の例は、図１３に示したフローテーブルの状態からエントリ３０３が削除され、そこへエントリ３０５が追加された状態を示している。
【００９０】
以上のように、フローテーブルには、その時点で最も頻度予測値の高いエントリが格納される。
なお、上記の処理手順では、タイマカウンタについて説明しなかったが、本実施の形態でも従来と同様に、まとめ処理を終了する待ち時間をタイマカウンタによって計時し、まとめ処理を終了する時間に到達した場合には、そのフローのまとめ処理を終了する処理を行う。本実施の形態では、さらに、まとめ処理を終了する待ち時間を、頻度予測値に応じて設定する。すなわち、まとめたパケットをホスト３へ転送する際、頻度予測値の高いものは早く時間切れにするように待ち時間を設定し、頻度予測値の低いものは時間切れを長く待つように待ち時間を設定する。
【００９１】
たとえば、図１２の例で、各エントリのタイマカウンタを定周期でカウントアップしていくとする。そして、頻度予測値が「１００」を超えるものについては、カウント５０を待ち時間とし、それ以外はカウント２５５を待ち時間とする。この場合、エントリ３０１、３０４は、タイマカウンタの値が５０までカウントアップすると、まとめ処理を終了する処理が行われる。一方、エントリ３０２及びエントリ３０３については、タイマのカウンタの値が２５５になるまで、まとめ処理は行われない。
【００９２】
このように、頻度予測値に応じて待ち時間を可変にすることにより、頻度予測値が高く後続のパケット受信までの時間が短いものは、それに合わせて待ち時間を短くすることができる。この結果、まとめ処理に由来する遅延時間を削減することが可能となる。
【００９３】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、パケット処理装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【００９４】
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【００９５】
（付記１）  順不同に到着する複数のフローのパケットを受信し、前記フローごとに前記パケットをまとめ処理するパケット処理装置において、
受信された前記パケットを蓄積するパケット蓄積手段と、
前記パケットが受信されると、受信された前記パケットを解析して前記パケットの属するフローに関する解析情報を抽出するパケット解析手段と、
同一の前記フローに属する前記パケットの受信間隔を計測し、前記受信間隔から受信の頻度予測値を算出して頻度予測記憶手段に格納しておき、前記解析情報が入力されると、前記解析情報に対応する前記フローの頻度予測値を前記頻度予測記憶手段から読み出す頻度予測手段と、
前記解析情報に対応する前記フローについて読み出された前記頻度予測値を含むフロー情報を生成し、フロー情報記憶手段に格納される前記フロー情報を含め、前記フロー情報に設定される前記頻度予測値に基づいてまとめ処理を終了させるまとめ終了フローを選出し、前記フロー情報記憶手段に格納する前記フロー情報を更新するフロー処理手段と、
前記フロー処理手段によって前記まとめ終了フローが選出されれば、選出された前記まとめ終了フローに関連する前記パケット蓄積手段の前記パケットを転送先に出力するパケット転送手段と、
を具備することを特徴とするパケット処理装置。
【００９６】
（付記２）  前記フロー処理手段は、前記解析情報に対応する前記フローについて生成された前記フロー情報の前記頻度予測値が、前記まとめ処理を行わないとする頻度基準値より低い場合は、当該フローを前記まとめ終了フローとして選出する、
ことを特徴とする付記１記載のパケット処理装置。
【００９７】
（付記３）  前記フロー処理手段は、前記フロー情報に前記まとめ処理を終了させるまでの待ち時間に応じたタイマ情報を設定しておき、前記タイマ情報に基づき、前記待ち時間が経過したことを検出した場合には、対応する前記フローを前記まとめ終了フローに選出する、
ことを特徴とする付記１記載のパケット処理装置。
【００９８】
（付記４）  前記フロー処理手段は、前記タイマ情報に設定する前記待ち時間を前記フローに設定される前記頻度予測値に応じた値とする、
ことを特徴とする付記３記載のパケット処理装置。
【００９９】
（付記５）  前記フロー処理手段は、前記頻度予測値を所定の基準値と比較し、前記頻度予測値が前記所定の基準値より高い場合には、前記待ち時間を前記頻度予測値が低い場合の前記待ち時間より短く設定する、
ことを特徴とする付記４記載のパケット処理装置。
【０１００】
（付記６）  前記フロー処理手段は、前記フロー情報記憶手段に新規フロー情報を格納する領域がない場合には、前記新規フロー情報及び前記フロー情報記憶手段に格納される前記フロー情報のうち、前記頻度予測値が最も低い前記フローを前記まとめ終了フローとして選出し、前記まとめ終了フローに対応する前記フロー情報を除く残りの前記フロー情報を前記フロー情報記憶手段に格納する、
ことを特徴とする付記１記載のパケット処理装置。
【０１０１】
（付記７）  前記フロー処理手段は、前記解析情報に対応する前記フローに関する前記フロー情報が前記フロー情報記憶手段に既に格納されている場合は、前記フロー情報記憶手段に格納される前記フロー情報の前記頻度予測値を前記頻度予測手段から取得した値に更新する、
ことを特徴とする付記１記載のパケット処理装置。
【０１０２】
（付記８）  前記フロー処理手段は、前記まとめ処理の対象としない所定のパケットが受信されたことが検出された場合には、前記所定のパケットを転送するように前記パケット転送手段に指示する、
ことを特徴とする付記１記載のパケット処理装置。
【０１０３】
（付記９）  前記フロー情報記憶手段は、並行処理が可能な前記フローの数に応じた前記フロー情報を格納する記憶領域が確保される、
ことを特徴とする付記１記載のパケット処理装置。
【０１０４】
（付記１０）  予め前記受信間隔に応じた複数段階の頻度レベルを表すレベル値が規定されており、前記頻度予測手段は、前記パケットが受信された場合には、前記頻度予測値に最も受信頻度が高い状態を示す前記レベル値を設定し、所定の頻度予測更新時間が経過するごとに順次低い段階の前記レベル値を前記頻度予測値に設定する、
ことを特徴とする付記１記載のパケット処理装置。
【０１０５】
（付記１１）  前記頻度予測手段は、前記頻度予測更新時間を、前記パケットが受信されてからの経過時間に応じて可変に設定する、
ことを特徴とする付記１０記載のパケット処理装置。
【０１０６】
（付記１２）  前記頻度予測手段は、前記パケットが受信されてから所定の経過時間が過ぎてからの前記頻度予測更新時間を、前記所定の経過時間までの前記頻度予測更新時間よりも長く設定する、
ことを特徴とする付記１１記載のパケット処理装置。
【０１０７】
（付記１３）  前記頻度予測手段は、前記フローごとに前記フローに関する最新の前記パケットを受信した最新パケット受信時刻を前記頻度予測記憶手段に記憶しておき、所定の時間が経過するごとに、その時点の時刻と前記最新パケット受信時刻との差分によって得られる経過時間に応じて前記頻度予測値を設定する、
ことを特徴とする付記１記載のパケット処理装置。
【０１０８】
（付記１４）  順不同に到着する複数のフローのパケットを受信し、前記フローごとに前記パケットをまとめ処理するパケット処理プログラムにおいて、
コンピュータを、
前記パケットが受信されると、受信された前記パケットを解析して前記パケットの属するフローに関する解析情報を抽出するパケット解析手段、
同一の前記フローに属する前記パケットの受信間隔を計測し、前記受信間隔から受信の頻度予測値を算出して頻度予測記憶手段に格納しておき、前記解析情報が入力されると、前記解析情報に対応する前記フローの頻度予測値を前記頻度予測記憶手段から読み出す頻度予測手段、
前記解析情報に対応する前記フローについて読み出された前記頻度予測値を含むフロー情報を生成し、フロー情報記憶手段に格納される前記フロー情報を含め、前記フロー情報に設定される前記頻度予測値に基づいてまとめ処理を終了させるまとめ終了フローを選出し、前記フロー情報記憶手段に格納する前記フロー情報を更新するフロー処理手段、
前記フロー処理手段によって前記まとめ終了フローが選出されれば、選出された前記まとめ終了フローに関連する前記パケット蓄積手段の前記パケットを転送先に出力するパケット転送手段、
として機能させることを特徴とするパケット処理プログラム。
【図面の簡単な説明】
【０１０９】
【図１】実施の形態に適用される発明の概念図である。
【図２】本発明の実施の形態に係るシステム構成を示す図である。
【図３】本発明の実施の形態のパケット処理装置のブロック図である。
【図４】本発明の実施の形態の頻度予測値の一例を示した図である。
【図５】図４の頻度予測値の更新状態を示した図である。
【図６】本実施の形態の頻度予測処理の手順を示したフローチャートである。
【図７】本実施の形態の頻度予測値の変化と読み出し頻度予測値の関係を示した図である。
【図８】本実施の形態の頻度予測テーブルのアドレス算出手順を示した図である。
【図９】本実施の形態の他の頻度予測値算出処理の手順を示した図である。
【図１０】本実施の形態のフローテーブルの一例を示した図である。
【図１１】本実施の形態のまとめ処理の手順を示したフローチャートである。
【図１２】本実施の形態のまとめ処理におけるエントリ入れ替え前のフローテーブルの一例を示した図である。
【図１３】本実施の形態のまとめ処理における新規エントリが発生した場合のフローテーブルの一例を示した図である。
【図１４】本実施の形態のまとめ処理におけるエントリ入れ替え後のフローテーブルの一例を示した図である。
【図１５】従来のパケット処理装置の構成図である。
【符号の説明】
【０１１０】
１  パケット処理装置
１ａ  パケット蓄積手段
１ｂ  パケット解析手段
１ｃ  頻度予測記憶手段
１ｄ  頻度予測手段
１ｅ  フロー情報記憶手段
１ｆ  フロー処理手段
１ｇ  パケット転送手段
２  ネットワーク
３  ホスト
【図１】
0004526458.tif 000002
【図２】
0004526458.tif 000003
【図３】
0004526458.tif 000004
【図４】
0004526458.tif 000005
【図５】
0004526458.tif 000006
【図６】
0004526458.tif 000007
【図７】
0004526458.tif 000008
【図８】
0004526458.tif 000009
【図９】
0004526458.tif 000010
【図１０】
0004526458.tif 000011
【図１１】
0004526458.tif 000012
【図１２】
0004526458.tif 000013
【図１３】
0004526458.tif 000014
【図１４】
0004526458.tif 000015
【図１５】
0004526458.tif 000016