JP4526458B2 - パケット処理装置及びパケット処理プログラム - Google Patents

パケット処理装置及びパケット処理プログラム Download PDF

Info

Publication number
JP4526458B2
JP4526458B2 JP2005219778A JP2005219778A JP4526458B2 JP 4526458 B2 JP4526458 B2 JP 4526458B2 JP 2005219778 A JP2005219778 A JP 2005219778A JP 2005219778 A JP2005219778 A JP 2005219778A JP 4526458 B2 JP4526458 B2 JP 4526458B2
Authority
JP
Japan
Prior art keywords
flow
packet
frequency prediction
received
prediction value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2005219778A
Other languages
English (en)
Other versions
JP2007036910A (ja
Inventor
雄一郎 安島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2005219778A priority Critical patent/JP4526458B2/ja
Priority to US11/348,267 priority patent/US7633973B2/en
Publication of JP2007036910A publication Critical patent/JP2007036910A/ja
Application granted granted Critical
Publication of JP4526458B2 publication Critical patent/JP4526458B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/19Flow control; Congestion control at layers above the network layer
    • H04L47/193Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/43Assembling or disassembling of packets, e.g. segmentation and reassembly [SAR]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明はパケット処理装置及びパケット処理プログラムに関し、特に順不同に到着する複数のフローのパケットを受信し、フローごとにパケットをまとめ処理するパケット処理装置及びパケット処理プログラムに関する。
コンピュータの性能及びコンピュータネットワークの伝送速度が年月を経て指数関数的に向上しているのに対し、通信のパケットサイズは通信方式の互換性を保つために制限されている。このため、コンピュータとネットワークとをつなぐインタフェースは伝送速度に比して小さいサイズのパケットを取り扱わなければならず、通信性能のボトルネックとなっている。
たとえば、イーサネット(登録商標)上のTCP(Transmission Control Protocol)/IP(Internet Protocol)通信では、標準的な最大パケットサイズは約1500バイトに設定されている。従って、最大能力で動作している10ギガビットイーサネットネットワークは、パケットサイズが最大(約1500バイト)の場合でもコンピュータに約83万パケット/秒の送受信を行うことを要求する。このため、送信時にデータを分割してパケットに格納し、受信時にパケットからデータを取り出すプロトコル処理がコンピュータのプロセッサの顕著な負担となっている。
この状況は、パケットサイズを拡大することで改善されるが、パケットサイズの拡大はスイッチ装置などコンピュータネットワーク機器の対応が必要となり、既存のネットワークに適用することはできない。そこで、送信時にデータを複数の小さいサイズのパケットに分割して送信する機能をネットワークインタフェース回路に持たせることにより、送信側コンピュータのプロセッサの負担を軽減した。
一方、受信側では、様々な送信元からの多数のフローに属するパケットを混在して受信しており、一部のパケットが遅延・消失することもあるため、送信側のように機械的に処理することができない。そこで、ネットワークと受信側コンピュータの間にパケット処理装置を設け、受信したパケットを大きなパケットにまとめる処理を行わせていた。図15は、従来のパケット処理装置の構成図である。
ネットワーク経由で受信されたパケットは、パケットキュー901とパケットパーサー902に送られる。パケットキュー901は、パケットを蓄積するバッファである。パケットパーサー902は、パケットのヘッダから抽出したIPアドレス、ポート番号などの識別情報やフロー上の位置情報などのパケット解析情報に、後続パケットを待つためのタイマカウンタなどの管理情報を付加したフロー情報をフローテーブル(記憶装置)903に蓄積する。フロー処理部904は、フローテーブル903に蓄積されたフロー情報を参照し、まとめ処理するフローを決定し、そのフロー情報をDMA(Direct Memory Access)エンジン905に送る。DMAエンジン905は、フロー情報に従って、パケットキュー901に蓄積された対象のパケットをまとめ処理し、ホストのメモリに転送する。
また、上位層プロトコルの空きバッファサイズに応じて下位層のパケットをまとめて、1つのビッグパケットに再構成するパケット処理装置も提案されている(たとえば、特許文献1参照)。
特開2000−332817号公報(段落番号〔0067〕〜〔0084〕、図4)
しかし、従来のパケット処理装置は、特に、多数のフロー通信が行われている場合、まとめ処理を効果的に行うことが難しいという問題点がある。
従来の受信パケットのまとめ処理は、フローテーブルによって管理されており、多数のフローで通信が行われている場合にまとめ処理を効果的に働かせるためには、十分なエントリ数が必要となる。また、RDMA方式のプロトコルのように、転送先アドレスがフローテーブルに直接、もしくはプロトコル的に結び付けられており、フローテーブルのエントリ数が通信のフロー数を制限するものもある。しかしながら、ホストがサーバなどの場合には、受信処理するフロー数が数千から数万になるため、すべてのフローをエントリ可能とし、並行してまとめ処理を行うことは、ハードウェア的な能力から見ても困難である。一方、不必要にフローテーブルのエントリ数を増やすことは、無駄なメモリ容量を増加させることとなり、好ましくない。
さらに、パケットを大きくまとめるためには、ホストへのパケット転送を遅延させて後続パケットの到着を待つ必要があった。このため、TCPのようにまとめ処理の範囲がプロトコルで明示されていない場合、まとめ処理は基本的に後続パケット待ち状態の時間切れによってのみ終了することとなる。この結果、パケットは、まとめ処理を終了するまでホストに転送されず、ホスト到達に遅延が生じるという問題点もある。
本発明はこのような点に鑑みてなされたものであり、効果的なまとめ処理を行うことが可能なパケット処理装置及びパケット処理プログラムを提供することを目的とする。
本発明では上記課題を解決するために、図1に示すようなパケット処理装置1が提供される。パケット処理装置1は、パケット蓄積手段1a、パケット解析手段1b、頻度予測手段1d、フロー処理手段1fおよびパケット転送手段1gを具備する。パケット蓄積手段1aは、転送先に未送信のパケットを指示があるまで蓄積する。パケット解析手段1bは、パケット処理装置1が受信したパケットを解析してパケットの属するフローに関する解析情報を抽出する。頻度予測手段1dは、解析情報に基づき、受信されたパケットが属するフローを特定し、同一のフローに属するパケットの受信間隔を計測し、受信間隔からフローの受信の頻度予測値を算出する。フロー処理手段1fは、受信されたパケットをパケット蓄積手段1aに格納し、受信されたパケットが属するフローについて、フローに属するパケットをまとめる処理を終了させるまでの待ち時間を頻度予測値に応じて決定し、待ち時間に対応するタイマカウンタ及び頻度予測値を、フローに対応付けられたフロー情報に設定する。そして、所定の時間が経過するごとに各フローに対応するタイマカウンタを更新する。更新したタイマカウンタに基づき待ち時間が経過したフローが検出されたときは、該フローをまとめ終了フローとして出する。パケット転送手段1gは、フロー処理手段1fによってまとめ終了フローが選出されれば、そのまとめ終了フローについてパケット蓄積手段1aに蓄積されるパケットをまとめて転送先に出力する。
また、上記課題を解決するために、コンピュータに上記の処理手順を実行させるパケット処理プログラム、が提供される。
本発明では、パケットの受信間隔に基づきフローごとに頻度予測を行い、算出された頻度予測値に応じてまとめ処理を終了するフローを選出することによって、受信パケットのまとめ処理を行うタイミングをそれぞれの受信の頻度予測に応じて調整するようにした。これにより、たとえば、頻度予測値の低いフロー、すなわち、後続のパケットを受信するまでの時間が長いフローは後続を待たずにまとめ処理を終了してフロー情報の記憶領域(フローテーブル)を空け、まとめ処理が効果的な頻度予測値の高いフローを優先的に処理することができる。このように、資源を有効的に利用し、パケットの受信間隔に応じた効果的なまとめ処理を行うことが可能となる。
以下、本発明の実施の形態を図面を参照して説明する。まず、実施の形態に適用される発明の概念について説明し、その後、実施の形態の具体的な内容を説明する。
図1は、実施の形態に適用される発明の概念図である。
パケット処理装置1は、ネットワーク2とホストコンピュータ(以下、ホストとする)3との間に接続され、ネットワーク2を介してホスト3に入力する受信パケットのまとめ処理を行う。パケット処理装置1は、パケット蓄積手段1a、パケット解析手段1b、頻度予測記憶手段1c、頻度予測手段1d、フロー情報記憶手段1e、フロー処理手段1f及びパケット転送手段1gを具備する。ネットワーク2に接続する他装置は、所定の情報データをパケットに分割し、ホスト3に向けて順次送信する。このため、パケット処理装置1には、多数のフローに属するパケットが順不同に入力する。以下、フローとは、送信側のネットワークインタフェース回路が所定の大きさのデータを複数のパケットに分割して送信した場合における関連するパケット群を言うこととする。
パケット蓄積手段1aは、パケット処理装置1が受信したパケットをパケット転送手段1gからの指示があるまで蓄積するバッファである。
パケット解析手段1bは、パケット蓄積手段1aに入力された受信パケットを取得して解析し、パケットの属するフローに関する解析情報をパケットから抽出する。パケットが属するフローは、たとえば、プロトコルがTCP/IPであれば、送信元IPアドレス、受信先IPアドレス、送信元ポート番号、受信先ポート番号などによって識別することができる。パケット解析手段1bでは、受信パケットに含まれるこれらの情報を抽出し、解析情報として頻度予測手段1d及びフロー処理手段1fへ送る。
頻度予測記憶手段1cは、頻度予測手段1dが算出したフローごとの頻度予測値を格納する記憶手段である。
頻度予測手段1dは、フローごとに、当該フローに属するパケットの受信間隔を計測し、受信間隔から受信の頻度予測値を算出して頻度予測記憶手段1cに格納する。受信間隔は、たとえば、あるフローに属するパケットの受信でタイマカウンタを初期化し、所定時間ごとにタイマカウンタの値を更新し、後続のパケットを受信した時点のタイマカウンタの値によって測定する。また、受信時の時刻情報を格納しておき、次のパケット受信時の時刻との差に応じて測定することもできる。そして、計測された受信間隔に応じて、受信間隔を評価した頻度予測値が設定される。「頻度予測値が高い」とは、所定時間当たりの受信回数が多い、すなわち該当するフローのパケットの受信間隔が短い状態で、「頻度予測値が低い」とは、受信間隔が長い状態であることを意味する。こうして得られた頻度予測値は、解析情報に基づいて対応するフローを特定し、頻度予測記憶手段1cの該当するフローの領域に格納する。なお、たとえばプロトコルがTCP/IPでは、送信元IPアドレス、受信先IPアドレス、送信元ポート番号および受信先ポート番号の組み合わせは膨大な数となり、これらすべてに対応する領域を頻度予測記憶手段1cに用意することはできない。そこで、たとえば、送信元IPアドレス、受信先IPアドレス、送信元ポート番号及び受信先ポート番号などの情報をハッシュ関数により所定の長さにハッシュ値に圧縮し、ハッシュ値に対応する頻度予測手段1d上の領域に頻度予測値を格納する。この頻度予測値は、解析情報が入力されたとき、すなわち、パケット処理装置1にパケットが受信されたとき、解析情報に基づき受信パケットが属するフローに関するフロー情報が読み出され、フロー処理手段1fに出力される。
フロー情報記憶手段1eは、フローごとに受信パケットのまとめ処理を行うためのフロー情報が格納される。
フロー処理手段1fは、パケット解析手段1bから受信パケットの解析情報及び頻度予測手段1dからこの受信パケットの頻度予測値を取得すると、解析情報に基づいてフローを特定し、そのフローに関するフロー情報を生成する。このフロー情報には、少なくとも、解析情報と後続パケットを待つ待ち時間に関するタイマ情報及び頻度予測値が設定される。そして、フロー情報記憶手段1eに格納されるフロー情報を含め、フロー情報の頻度予測値に基づいて、まとめ処理を終了するまとめ終了フローを選出し、フロー情報記憶手段1eに格納するフロー情報を更新する。たとえば、生成されるフロー情報に該当するフローが既にフロー情報記憶手段1eに存在する場合、そのエントリに記録されている頻度予測値を新しい値に更新する。また、該当フローのエントリが存在しない場合は、フロー情報記憶手段1eに空き領域が存在し、頻度予測値が基準値以上であれば、生成された新規フロー情報を空き領域に追加する。空き領域が存在しない場合は、各フロー情報の頻度予測値を比較し、最も頻度予測値の低いフローをまとめ終了フローとして選出し、フロー情報記憶領域から該当フローのフロー情報を削除して空き領域を作り、そこに新規フロー情報を格納する。新規フロー情報のフローが選出された場合は、フロー情報記憶手段1eは、そのままである。また、該当フローがフロー情報記憶手段1eになく、他のフロー情報よりも頻度予測値が低い場合、あるいは、受信パケットがまとめ処理の対象のパケットである場合には、新規フロー情報の登録は行わず、フロー情報を直接パケット転送手段1gに送る。さらに、フロー情報のタイマ情報(まとめ処理終了を待つ待ち時間)に設定された所定の待ち時間が経過した場合にも、該当フローをまとめ終了フローとして選出する。
まとめ終了フローが選出されれば、選出されたフローに関するフロー情報をパケット転送手段1gに出力する。このとき、フロー情報またはまとめ処理終了の通知がホスト3にも送られる。
パケット転送手段1gは、フロー情報に基づき、パケット蓄積手段1aに蓄積される対象のパケットをホスト3に転送する。このときの転送先アドレスは、フロー処理手段1fからのフロー情報またはまとめ処理終了の通知に応じてホスト3が指示したアドレスになる。
このような構成のパケット処理装置1では、ネットワーク2経由で複数の送信側装置が分割して送信した複数のフローのパケットが順不同に混在して受信される。受信パケットは、パケット蓄積手段1aに蓄積されるとともに、パケット解析手段1bで解析され、受信パケットの属するフローを特定するための解析情報が抽出される。頻度予測手段1dは、解析情報に基づき、該当フローについて算出されている頻度予測値を頻度予測記憶手段1cから読み出してフロー処理手段1fへ送り、頻度予測値を初期化する。この頻度予測値は、後続のパケット受信までの経過時間に応じて適宜更新される。
フロー処理手段1fは、解析情報によってパケットの属するフローを特定し、頻度予測値を含めた該当フローに関するフロー情報を生成する。そして、フロー情報記憶手段1eに格納されるフロー情報を含めてフロー情報の頻度予測値を分析し、まとめ処理を終了するまとめ終了フローを選出し、該当フローのフロー情報をパケット転送手段1gに送る。その後、フロー情報記憶手段1eに格納するフロー情報を更新する。また、フロー情報にまとめ処理を終了する待ち時間に関するタイマ情報を設定しておき、待ち時間を監視する。そして、待ち時間が経過したフローもまとめ終了フローとし、フロー情報をパケット転送手段1gに送る。パケット転送手段1gは、まとめ終了フローに関するフロー情報を取得し、フロー情報に基づき該当フローのパケットをパケット蓄積手段1aから抽出し、ホスト3へ転送する。
このように、まとめ処理の終了タイミング、すなわち、ホスト3へのパケット転送タイミングをまとめ処理終了の待ち時間の経過ばかりでなく、フローごとのパケット受信間隔に応じた頻度予測値によって決めることにより、まとめ処理が効果的なフローの処理を優先的に行うことができる。たとえば、並列処理可能なフロー数に到達した場合には、頻度予測値の高い、すなわち、後続パケットがすぐに受信されるフローと、頻度予測値の低い後続パケット受信までの待ち時間が長いフローでは、頻度予測値の高いフローを優先処理させる。これにより、効果的なまとめ処理が可能となる。さらに、まとめ処理に由来する遅延時間を削減することができる。
以下、実施の形態を、TCP/IP通信によるパケットを処理するパケット処理装置に適用した場合を例に図面を参照して詳細に説明する。
図2は、本発明の実施の形態に係るシステム構成を示す図である。図2の例では、ネットワーク2を介して不特定多数のクライアント101、102、103、・・・がサーバ30に接続され、ネットワーク2とサーバ30の間にパケット処理装置10が配置されている。
サーバ30は、クライアント101、102、103、・・・からの要求に応じて、サービスを提供する。クライアント101、102、103、・・・からは、所定のフローに属する複数のパケットがTCP/IPプロトコルに従って、不定期に送信される。TCPプロトコルでは、まとめ処理の範囲(最終のパケット)が明示されておらず、送信される総パケット数も不定である。パケット処理装置10は、この複数のフローが混在して入力する受信パケットを解析し、受信頻度予測によって効率的に受信パケットのまとめ処理を実行し、まとめ処理によって大きなサイズに再構築したパケットをサーバ30に転送することができる。
なお、システムに適用する際には、高速処理を可能にするため、パケット処理装置10はサーバ30の受信インタフェースモジュール(ハードウェア)に組み込まれる。その処理機能は、ハードウェアロジックとしてインタフェースモジュールに組み込むことによって実現することもできるし、処理手順を記述したプログラムをファームウェアとしてROM(Read Only Memory)に格納しておき、インタフェースモジュールのCPU(Central Processing Unit)がROMから読み出したプログラムを実行することによって実現させてもよい。また、その処理手順の一部分をプログラムとして構成することもできる。
図3は、本発明の実施の形態のパケット処理装置のブロック図である。図2と同じものには同じ番号を付し、説明は省略する。
本実施の形態のパケット処理装置10は、頻度予測値データベース(以下、DBとする)11及びフローテーブルDB12の記憶手段と、パケットキュー13、パケットパーサー14、頻度予測部15、フロー処理部16及びDMAエンジン17を具備する。
頻度予測値DB11は、頻度予測記憶手段1cであり、フローの頻度予測値を格納する。フローテーブルDB12は、フロー情報記憶手段1eであり、フローのパケットまとめ処理に用いるフローテーブルを格納する。各情報の詳細については、後述する。
パケットキュー13は、パケット蓄積手段1aであり、クライアント101、102、103、・・・から受信したパケットを一時格納する。
パケットパーサー14は、パケット解析手段1bであり、解析情報として、受信したTCP/IPパケットから送信元IPアドレス、送信元ポート番号、受信先ポート番号、次シーケンス番号を抽出する。また、必要に応じて、TCPパケットのコードビットなどの情報を付加することもできる。コードビットには、緊急に処理すべきデータが含まれているかどうかを示すURG(Urgent flag)や、すぐに上位のアプリケーションにデータを配送する必要があるかどうかを指示するPSH(Push flag)などの制御情報が設定されている。
頻度予測部15は、頻度予測手段1dであり、頻度予測読み出し部15aと、頻度予測算出部15bを有する。頻度予測読み出し部15aは、パケットが受信されてパケットパーサー14から解析情報を入力すると、頻度予測値DB11から解析情報に該当するフローの頻度予測値が格納されるアドレスを算出する。そして、このアドレスに該当する領域から頻度予測値を読み出してフロー処理部16へ送るとともに、頻度予測値の初期値を設定する。頻度予測算出部15bは、タイマ19などにより、定周期で起動され、起動されるごとに、頻度予測値DB11に格納される各フローの頻度予測値を更新する。
ここで、頻度予測値について説明する。頻度予測値は、パケットが受信されてから後続のパケットを受信するまでの経過時間に応じて算出される。たとえば、予め、経過時間に応じて複数段階のレベル値を規定しておき、頻度予測算出部15bによって経過時間ごとに頻度予測値を順次低い段階のレベル値に更新することにより、頻度予測値を設定することができる。図4は、本発明の実施の形態の頻度予測値の一例を示した図である。
図4の例では、経過時間は、パケットを受信してから、定周期のタイマ(たとえば、10マイクロ秒)によってカウントしたカウント値で示しており、レベル値は、経過時間ごとに設定される頻度予測値を示している。ここでは、頻度予測値を3ビットの状態で表している。「111」が最も高いレベルで受信直後に設定され、「000」が最も低いレベルでカウンタが40以降に設定される。なお、「000」は、特別に、まとめ処理対象としないパケットを表すようにしてもよい。
また、図の例では、カウンタを短時間タイマと長時間タイマの2種類を設け、さまざまなフローの送信状況に合うようにしている。たとえば、受信間隔の短いフローに合わせたカウンタを用いると、受信間隔の長いフローについて適当な頻度予測値を設定することは難しい。逆も同様である。そこで、「111」から「101」までは短時間タイマ(たとえば、10マイクロ秒)で頻度予測値を更新し、「100」から「000」までは長時間タイマ(たとえば、100マイクロ秒)で頻度予測値を更新する。このように、2種類のタイマを用いることによって、どちらにも適用できる。なお、これは、頻度予測値のビット数を増やす(レベル値の段階を増やす)ことによって対処することもできる。
頻度予測値は、頻度予測読み出し部15a及び頻度予測算出部15bによって操作される。図5は、図4の頻度予測値の更新状態を示した図である。
初期化された状態では、頻度予測値に「000」(101)が設定される。この状態は、パケットが受信されるまで継続される。
そして、パケットが受信されると、頻度予測読み出し部15aによって、設定された頻度予測値が読み出された後、最も高い「111」(102)が頻度予測値に設定される。 その後、後続するパケットが受信されるまで、頻度予測算出部15bによって、経過時間ごとに頻度予測値が更新される。まず、短時間タイマが働き、カウンタ=1となると、頻度予測値を1減算して「110」(103)に更新する。この値は、パケットが受信されなければ、次の状態(カウンタ=2)になるまで継続される。また、パケットが受信されれば、「111」(102)の状態に戻る。
同様に、パケットが受信されなければ、短時間タイマが進むごとに、頻度予測値は、「101」(104)、「100」(105)に更新される。そして、「100」(105)までくると、長時間タイマが働き、次のカウンタ=10までこの値が継続される。
そして、パケットが受信されなければ、長時間タイマが進むごとに、頻度予測値は、「011」(106)、「010」(107)、「001」(108)、「000」(101)の順に更新される。
図3に戻って説明する。
フロー処理部16は、フロー処理手段1fであり、まとめ処理制御部16aと、待ち時間処理部16bを有する。まとめ処理制御部16aは、パケットパーサー14から受信パケットの解析情報、頻度予測部15からこの受信パケットに関する頻度予測値を取得すると、解析情報に基づき、パケットの属するフローを特定してフロー情報を生成するとともに、このフロー情報とフローテーブルDB12に格納されるフロー情報とからまとめ終了フローを選出する。該当フローのエントリが既にフローテーブルに存在する場合、そのエントリに記録されている頻度予測値を新しい値で更新する。また、該当フローのエントリがフローテーブルに存在しない場合、空きがあり、頻度予測値が基準値以上であればフローテーブルに新規エントリを追加する。空きがない場合、既エントリを含め最も頻度予測値の低いフローをまとめ終了フローに選出し、フローテーブルに新規エントリを追加する。また、該当フローのエントリがなく、頻度予測値が基準値以下であれば、フローテーブルに登録せず、まとめ終了フローとする。まとめ終了フローが選出されれば、そのフロー情報をDMAエンジン17へ送る。待ち時間処理部16bは、タイマ19などにより、定周期で起動され、起動されるごとに、フローテーブルの各フローのまとめ処理を終了するまでの待ち時間を計時するタイマ情報を更新する。そして、待ち時間が経過したら、そのフローをまとめ終了フローとして通知する。
DMAエンジン17は、パケット転送手段1gであり、フロー処理部16からフロー情報、及びホスト3から転送先アドレスを取得すると、フロー情報に基づき、パケットキュー13に蓄積されるパケットデータをホスト3のバッファの転送先アドレスによって指定された領域に転送する。
次に、本実施の形態のパケット処理装置の動作について説明する。
パケット処理装置10が電源投入などによって初期化されると、頻度予測値DB11及びフローテーブルDB12のデータが初期化され、頻度予測値DB11に格納される各フローの頻度予測値には、「000」が設定される。
ネットワーク2経由でパケットを受信すると、この受信パケットはパケットキュー13に蓄積されるとともにパケットパーサー14に送られ、解析情報が抽出される。ここでは、解析情報として、受信パケットから送信元IPアドレス、受信先IPアドレス、送信元ポート番号、受信先ポート番号及び次シーケンス番号が抽出されるとする。解析情報は、頻度予測部15及びフロー処理部16に送られる。
頻度予測部15は、解析情報を取得すると、解析情報によって特定されるフローの頻度予測値を頻度予測値DB11から読み出してフロー処理部16へ送り、その値をパケット受信後の最も高いレベル値「111」に設定する。そして、短時間タイマ、長時間タイマにより、経過時間に伴って、各フローの頻度予測値を更新する。
図6は、本実施の形態の頻度予測処理の手順を示したフローチャートである。図6のフローチャートは、頻度予測部15が解析情報の取得やタイマなどのイベント発生で起動されるのではなく、常に処理実行するとした場合の処理手順を示している。
[ステップS11] 頻度予測部15は、パケットを受信したかどうか、すなわち、パケットパーサー14から解析情報を取得したかどうかを判定する。取得した場合は、ステップS12からの頻度予測読み出し部15aによる処理手順へ進み、取得していない場合は、処理をステップS14からの頻度予測算出部15bによる処理手順へ進む。
[ステップS12] パケットが受信され、そのパケットの解析情報を取得したので、頻度予測読み出し部15aは、解析情報に基づき、頻度予測値DB11の該当するフローの頻度予測値が格納される頻度予測テーブルアドレスを算出する。
[ステップS13] 算出された頻度予測テーブルアドレスから頻度予測値を読み出し、フロー処理部16へ出力する。その後、該当アドレスの頻度予測値をパケット受信後の頻度予測値「111」に更新する。そして、ステップS11に戻り、処理を繰り返す。
[ステップS14] 頻度予測算出部15bは、パケットが受信されていないので、頻度予測更新時間であるかどうかを判定する。まだ、頻度予測更新時間でなければ、ステップS11に戻り、処理を繰り返す。
[ステップS15] パケットが受信されておらず、頻度予測更新時間であれば、頻度予測値読み出しのポインタを頻度予測テーブルの先頭に設定する。
[ステップS16] ポインタの指示する頻度予測テーブルの領域から頻度予測値を読み出す。
[ステップS17] 読み出した頻度予測値から使用するタイマを短時間タイマとするかどうかを判定する。図4の例であれば、頻度予測値が「100」以下であれば長時間タイマ、それ以外は短時間タイマと判定される。判定結果が長時間タイマであれば、処理をステップS19へ進める。
[ステップS18] 読み出された頻度予測値によって短時間タイマが選択されたので、短時間タイマの更新処理を行う。短時間タイマによって計測される頻度予測更新時間になっていれば、頻度予測値を下の段階の値に更新する。頻度予測更新時間でなければ処理は行わない。その後、処理をステップS20へ進める。
[ステップS19] 読み出された頻度予測値によって長時間タイマが選択されたので、長時間タイマの更新処理を行う。長時間タイマによって計測される頻度予測更新時間になっていれば、頻度予測値を下の段階の値に更新する。頻度予測更新時間でなければ処理は行わない。なお、頻度予測値が「000」の場合は、その値を維持する。
[ステップS20] 全フローについての頻度予測値更新が終了したかどうかを判定する。終了していれば、ステップS11に戻り、処理を繰り返す。
[ステップS21] 全フローについての頻度予測値更新が終了していなければ、ポインタを1進め、ステップS16に戻って、次のフローの頻度予測値更新処理を行う。
以上の処理手順が実行されることにより、頻度予測値が設定され、パケットを受信した際には、頻度予測値が読み出されてフロー処理部16に送られる。
図7は、本実施の形態の頻度予測値の変化と読み出し頻度予測値の関係を示した図である。図は、受信パケットと、頻度予測値DB11に格納される頻度予測値(以下、頻度予測エントリ値とする)と、フロー処理部16に出力される読み出し頻度予測値(以下、頻度予測出力値とする)との関係を示した図である。
初期化により頻度予測エントリ値に設定された「000」は、パケットが受信されるまでこの状態を継続する。パケット201が受信されると、頻度予測読み出し部15aは、頻度予測エントリ値「000」を読み出し、頻度予測出力値として出力する。そして、頻度予測エントリ値を「111」に更新する。
最初の頻度予測更新時間になる前にパケット202が受信されると、頻度予測読み出し部15aは、頻度予測エントリ値「111」を読み出し、頻度予測出力値として出力する。そして、頻度予測エントリ値に「111」を設定する。
パケット203が受信された後、しばらくパケットが受信されないと、頻度予測算出部15bによって頻度予測エントリ値が頻度予測更新時間ごとに更新される。図の例では、「111」から頻度予測更新時間ごとに1ずつ減算され、「100」まで変化している。なお、このとき、頻度予測出力値は出力されないため、フロー情報に設定される頻度予測値は「111」を保持している。
そして、パケット204が受信されると、頻度予測読み出し部15aは、頻度予測エントリ値「100」を読み出し、頻度予測出力値として出力する。そして、頻度予測エントリ値に「111」を設定する。
以上のように、頻度予測部15によって、前回のパケット受信から今回のパケット受信までの経過時間に応じた頻度予測値が設定され、フロー処理部16へ送られる。
なお、前述のように、パケットが属するフローを送信元IPアドレス、受信先IPアドレス、送信元ポート番号及び受信先ポート番号によって決めるが、TCP/IPプロトコルでは、この組み合わせは膨大な数となり、すべての組み合わせの領域を確保することはできない。そこで、十分な領域が確保された頻度予測テーブルから頻度予測値を格納するアドレスを算出する方法について説明する。
図8は、本実施の形態の頻度予測テーブルのアドレス算出手順を示した図である。
図の例では、32ビットの送信元IPアドレスA(211)、32ビットの受信先IPアドレスB(212)、16ビットの送信元ポート番号C(213)及び16ビットの受信先ポート番号D(214)をインデックス演算器210によって操作し、16ビットの頻度予測テーブルインデックスを作成する。インデックス演算器210は、たとえば、すべての入力データの排他的論理和(XOR)を算出し、インデックスを生成する。また、他のハッシュ関数を用いてもよい。このような関数を用いてインデックスを作成する手法は公知であるので、これ以上の説明は省略する。
なお、上記の説明では、頻度予測値を短時間タイマまたは長時間タイマを用いて頻度予測更新時間ごとに順次更新して得るとしたが、前回の受信パケットの取得時刻を頻度予測テーブルに記憶しておき、今回の受信パケットの取得時刻の差分に応じて頻度予測値を設定することもできる。
図9は、本実施の形態の他の頻度予測値算出処理の手順を示した図である。頻度予測テーブルのインデックス算出については、図8の場合と同様であるので、説明は省略する。
この頻度予測値算出処理では、図8の構成に加えて、現時刻を取得可能な計時器220と、パケットの受信間隔から頻度予測値を算出する時刻差分評価器230を具備する。
まず、受信パケットを取得すると、インデックス演算器210によって解析情報に基づく頻度予測テーブルのインデックスが計算される。インデックスの示す領域には、計時器220より得られる現時刻を格納する。続いて、同一フローの次のパケットを受信した場合には、インデックス演算器210により、同じ領域を示すインデックスが得られる。時刻差分評価器230は、頻度予測テーブルに格納される時刻情報(前回パケットの受信時刻)と、計時器220の現時刻(今回パケットの受信時刻)を比較し、その差分に応じて頻度予測値を設定する。頻度予測値は、時刻の差分が小さい場合に高い値が設定される。以上のように、この算出方法によっても、フローごとの受信間隔に応じた頻度予測値が算出可能である。なお、現時刻は、時刻の差分が得られるのであれば、カウンタのようなものであってもよい。
上記の頻度予測部15の処理によって、フロー処理部16には、受信パケットが属するフローについて算出された頻度予測値が得られる。以下、フロー処理部16によるまとめ処理の動作について説明する。
ここで、各フローのフロー情報を格納するフローテーブルについて説明する。図10は、本実施の形態のフローテーブルの一例を示した図である。
フローテーブルは、監視情報から得られるフローを特定するためのフロー特定情報310と、まとめ処理を管理するためのまとめ処理管理情報320を有する。
図の例では、フロー特定情報310には、解析情報から取得した送信元IPアドレス、送信元ポート番号、受信先ポート番号及び次シーケンス番号が設定される。受信したパケットがどのフローに属するかは、この受信パケットの解析情報に含まれる送信元IPアドレス、送信元ポート番号及び受信先ポート番号と、フローテーブルのフロー特定情報310の対応データを照合することによって判定する。一致するものがあれば、受信パケットはそのエントリに対応するフローに属すると見なし、一致するものがなければ、受信パケットは新規フローと見なす。
まとめ処理管理情報320には、まとめ処理を終了させる待ち時間を計時するためのタイマカウンタ321と、頻度予測部15の算出した頻度予測値322がフローごとに設定されている。頻度予測値322には、パケット受信時、当該パケットが属するフローの頻度予測値が設定される。また、タイマカウンタ321には、パケット受信時に0が設定され、定周期のタイマによって1ずつインクリメントされるカウンタ値が設定される。
本実施の形態では、頻度予測値に応じてエントリの入れ替えが行われるため、このようなフローテーブルのエントリ数は、並行まとめ処理数だけあればよい。従って、従来のフローテーブルと比較して、メモリ領域を削減することができる。
なお、図10は一例であり、さらに、他の情報をフロー特定情報やまとめ処理管理情報として設定することもできる。
次に、このようなフローテーブルを用いたまとめ処理の手順について説明する。図11は、本実施の形態のまとめ処理の手順を示したフローチャートである。
フロー処理は、パケットパーサー14から受信パケットの解析情報及び頻度予測部15から受信パケットの属するフローの頻度予測値を取得し、処理を開始する。
[ステップS31] 解析情報に基づき、フローテーブルDB12を検索し、受信パケットの属するフローに関するフロー情報がエントリされているかどうかを判定する。エントリされていない場合は、処理をステップS33へ進める。
[ステップS32] フローテーブルに受信パケットの属するフローのエントリがあった場合、そのエントリの頻度予測値を頻度予測部15より取得した値に更新するとともに、タイマカウンタを0にする。これにより、当該フローのまとめ処理は継続される。そして、処理を終了する。
[ステップS33] フローテーブルに受信パケットに対応するフローのエントリがない新規エントリの場合、新規エントリの頻度予測値と基準値を比較し、新規エントリの頻度予測値が基準値を超えているかどうかを判定する。超えている場合は、処理をステップS35に進める。
[ステップS34] 新規エントリの頻度予測値が基準値を超えていない場合、まとめ処理を終了し、当該受信パケットをそのままホスト3に転送するように、DMAエンジン17へ指示する。従って、まとめ処理によって遅延されることなく、ホスト3へ転送される。また、この受信パケットに関するフロー情報のエントリは登録しない。その後、処理を終了する。
[ステップS35] 新規エントリの頻度予測値が基準値を超えている場合、新規エントリを追加する空きがフローテーブルにあるかどうかを調べる。空きがない場合は、処理をステップS37へ進める。
[ステップS36] 新規エントリで、フローテーブルに空きがある場合、受信パケットの属するフローに関する新規エントリをフローテーブルの空き領域に登録し、処理を終了する。これにより、この新規エントリに対応するまとめ処理が開始される。
[ステップS37] 新規エントリで、フローテーブルに空きがない場合、受信パケットのフローに設定された頻度予測値と、フローテーブルに格納される他のエントリの頻度予測値とを比較する。新規エントリの頻度予測値よりも低い頻度予測値のエントリがあれば、処理をステップS39へ進める。
[ステップS38] 新規エントリで、フローテーブルに空きがなく、新規エントリの頻度予測値が最も低い場合、ステップS34と同様に、当該受信パケットをそのままホスト3に転送するように、DMAエンジン17へ指示する。また、この受信パケットに関するフロー情報のエントリは登録しない。その後、処理を終了する。
[ステップS39] フローテーブルに空きがなく、新規エントリより低い頻度予測値のエントリがある場合には、頻度予測値が最も低いエントリをまとめ終了フローとし、まとめ処理を中断させる。これにより、これまでに蓄積された当該フローのパケットは、DMAエンジン17によってホスト3へ転送される。
[ステップS40] ステップS39においてまとめ処理が終了されたフローのエントリが削除され、空き領域に新規エントリが追加され、処理を終了する。これにより、この新規エントリに対応するまとめ処理が開始される。
以上の手順が実行されることにより、頻度予測値に応じて、以下のようなまとめ処理が行われる。
頻度予測値が基準値より低いフローについては、まとめ処理が行われず、受信パケットがすぐにホスト3に転送される。なお、まとめ処理の対象とならないフローの受信パケットについても同様に受信パケットをすぐに転送することもできる。この判断は、フロー処理部16が解析情報に基づき行ってもよいし、頻度予測部15やパケットパーサー14が行ってもよい。たとえば、頻度予測部15で頻度予測値を「000」とした場合には、まとめ処理を行わないというように予め規定しておき、ステップS33において頻度予測値が「000」であるかどうかを判定させてもよい。このように、まとめ処理の対象とならないパケットは、まとめ処理のための遅延を受けず、すぐにホスト3側に転送できるという利点がある。
頻度予測値が基準値より高い場合には、まとめ処理の対象となる。このとき、フローテーブルのエントリは、各フローの頻度予測値に応じて入れ替えが行われる。
フローテーブルに空きがある場合及びそのフローについて既にエントリされている場合は、入れ替えは行われない。新規エントリは追加され、既にあるエントリは、最新の頻度予測値に更新される。
新規エントリがあり、フローテーブルに空きがない場合は、新規エントリ及びフローテーブルに格納されるエントリの頻度予測値を比較し、最も頻度予測値の低いエントリのフローのまとめ処理を終了させる。頻度予測値が最も低いということは、後続のパケット受信までの時間がかかると予測されるということであるので、フローテーブルを効率的に利用するという点からも、まとめ処理が効果的でないフローということになる。そして、新規エントリ以外のエントリがまとめ終了フローに選出された場合は、このエントリを削除し、空き領域に新規エントリを追加する。
このように、本実施の形態では、まとめ処理が効果的に行える頻度予測値の高いフローが優先的にエントリされ、まとめ処理が実施されるため、効率的なまとめ処理が可能となる。
エントリの入れ替えについて、具体例を用いて説明する。
図12は、本実施の形態のまとめ処理におけるエントリ入れ替え前のフローテーブルの一例を示した図である。以下、簡単のため、フローテーブルには、最大4のエントリが可能であるとする。
図の例では、送信元IPアドレス、送信元ポート番号及び受信先ポート番号によって識別されるフローに関するエントリ301、302、303、304がフローテーブルに格納されている。各エントリには、それぞれ、エントリ301は「110」、エントリ302は「100」、エントリ303は「010」及びエントリ304は「111」という頻度予測値が設定されている。
ここで、新規エントリが入力されたとする。
図13は、本実施の形態のまとめ処理における新規エントリが発生した場合のフローテーブルの一例を示した図である。
図の例は、図12に示したフローテーブル状態から、新規エントリ305が発生した状態を示している。フロー処理部16では、新規エントリ305の頻度予測値「101」と各エントリ301、302、303、304の頻度予測値とを比較し、最も頻度予測値の低いエントリを探す。ここでは、エントリ303の頻度予測値「010」が最も低いので、エントリ303のまとめ処理を終了させ、そのフロー情報をDMAエンジン17に出力する。これにより、エントリ303のフローについてこれまでに蓄積されたパケットがホスト3に転送される。そして、エントリ303がフローテーブルから削除される。
図14は、本実施の形態のまとめ処理におけるエントリ入れ替え後のフローテーブルの一例を示した図である。
図の例は、図13に示したフローテーブルの状態からエントリ303が削除され、そこへエントリ305が追加された状態を示している。
以上のように、フローテーブルには、その時点で最も頻度予測値の高いエントリが格納される。
なお、上記の処理手順では、タイマカウンタについて説明しなかったが、本実施の形態でも従来と同様に、まとめ処理を終了する待ち時間をタイマカウンタによって計時し、まとめ処理を終了する時間に到達した場合には、そのフローのまとめ処理を終了する処理を行う。本実施の形態では、さらに、まとめ処理を終了する待ち時間を、頻度予測値に応じて設定する。すなわち、まとめたパケットをホスト3へ転送する際、頻度予測値の高いものは早く時間切れにするように待ち時間を設定し、頻度予測値の低いものは時間切れを長く待つように待ち時間を設定する。
たとえば、図12の例で、各エントリのタイマカウンタを定周期でカウントアップしていくとする。そして、頻度予測値が「100」を超えるものについては、カウント50を待ち時間とし、それ以外はカウント255を待ち時間とする。この場合、エントリ301、304は、タイマカウンタの値が50までカウントアップすると、まとめ処理を終了する処理が行われる。一方、エントリ302及びエントリ303については、タイマのカウンタの値が255になるまで、まとめ処理は行われない。
このように、頻度予測値に応じて待ち時間を可変にすることにより、頻度予測値が高く後続のパケット受信までの時間が短いものは、それに合わせて待ち時間を短くすることができる。この結果、まとめ処理に由来する遅延時間を削減することが可能となる。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、パケット処理装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
(付記1) 順不同に到着する複数のフローのパケットを受信し、前記フローごとに前記パケットをまとめ処理するパケット処理装置において、
受信された前記パケットを蓄積するパケット蓄積手段と、
前記パケットが受信されると、受信された前記パケットを解析して前記パケットの属するフローに関する解析情報を抽出するパケット解析手段と、
同一の前記フローに属する前記パケットの受信間隔を計測し、前記受信間隔から受信の頻度予測値を算出して頻度予測記憶手段に格納しておき、前記解析情報が入力されると、前記解析情報に対応する前記フローの頻度予測値を前記頻度予測記憶手段から読み出す頻度予測手段と、
前記解析情報に対応する前記フローについて読み出された前記頻度予測値を含むフロー情報を生成し、フロー情報記憶手段に格納される前記フロー情報を含め、前記フロー情報に設定される前記頻度予測値に基づいてまとめ処理を終了させるまとめ終了フローを選出し、前記フロー情報記憶手段に格納する前記フロー情報を更新するフロー処理手段と、
前記フロー処理手段によって前記まとめ終了フローが選出されれば、選出された前記まとめ終了フローに関連する前記パケット蓄積手段の前記パケットを転送先に出力するパケット転送手段と、
を具備することを特徴とするパケット処理装置。
(付記2) 前記フロー処理手段は、前記解析情報に対応する前記フローについて生成された前記フロー情報の前記頻度予測値が、前記まとめ処理を行わないとする頻度基準値より低い場合は、当該フローを前記まとめ終了フローとして選出する、
ことを特徴とする付記1記載のパケット処理装置。
(付記3) 前記フロー処理手段は、前記フロー情報に前記まとめ処理を終了させるまでの待ち時間に応じたタイマ情報を設定しておき、前記タイマ情報に基づき、前記待ち時間が経過したことを検出した場合には、対応する前記フローを前記まとめ終了フローに選出する、
ことを特徴とする付記1記載のパケット処理装置。
(付記4) 前記フロー処理手段は、前記タイマ情報に設定する前記待ち時間を前記フローに設定される前記頻度予測値に応じた値とする、
ことを特徴とする付記3記載のパケット処理装置。
(付記5) 前記フロー処理手段は、前記頻度予測値を所定の基準値と比較し、前記頻度予測値が前記所定の基準値より高い場合には、前記待ち時間を前記頻度予測値が低い場合の前記待ち時間より短く設定する、
ことを特徴とする付記4記載のパケット処理装置。
(付記6) 前記フロー処理手段は、前記フロー情報記憶手段に新規フロー情報を格納する領域がない場合には、前記新規フロー情報及び前記フロー情報記憶手段に格納される前記フロー情報のうち、前記頻度予測値が最も低い前記フローを前記まとめ終了フローとして選出し、前記まとめ終了フローに対応する前記フロー情報を除く残りの前記フロー情報を前記フロー情報記憶手段に格納する、
ことを特徴とする付記1記載のパケット処理装置。
(付記7) 前記フロー処理手段は、前記解析情報に対応する前記フローに関する前記フロー情報が前記フロー情報記憶手段に既に格納されている場合は、前記フロー情報記憶手段に格納される前記フロー情報の前記頻度予測値を前記頻度予測手段から取得した値に更新する、
ことを特徴とする付記1記載のパケット処理装置。
(付記8) 前記フロー処理手段は、前記まとめ処理の対象としない所定のパケットが受信されたことが検出された場合には、前記所定のパケットを転送するように前記パケット転送手段に指示する、
ことを特徴とする付記1記載のパケット処理装置。
(付記9) 前記フロー情報記憶手段は、並行処理が可能な前記フローの数に応じた前記フロー情報を格納する記憶領域が確保される、
ことを特徴とする付記1記載のパケット処理装置。
(付記10) 予め前記受信間隔に応じた複数段階の頻度レベルを表すレベル値が規定されており、前記頻度予測手段は、前記パケットが受信された場合には、前記頻度予測値に最も受信頻度が高い状態を示す前記レベル値を設定し、所定の頻度予測更新時間が経過するごとに順次低い段階の前記レベル値を前記頻度予測値に設定する、
ことを特徴とする付記1記載のパケット処理装置。
(付記11) 前記頻度予測手段は、前記頻度予測更新時間を、前記パケットが受信されてからの経過時間に応じて可変に設定する、
ことを特徴とする付記10記載のパケット処理装置。
(付記12) 前記頻度予測手段は、前記パケットが受信されてから所定の経過時間が過ぎてからの前記頻度予測更新時間を、前記所定の経過時間までの前記頻度予測更新時間よりも長く設定する、
ことを特徴とする付記11記載のパケット処理装置。
(付記13) 前記頻度予測手段は、前記フローごとに前記フローに関する最新の前記パケットを受信した最新パケット受信時刻を前記頻度予測記憶手段に記憶しておき、所定の時間が経過するごとに、その時点の時刻と前記最新パケット受信時刻との差分によって得られる経過時間に応じて前記頻度予測値を設定する、
ことを特徴とする付記1記載のパケット処理装置。
(付記14) 順不同に到着する複数のフローのパケットを受信し、前記フローごとに前記パケットをまとめ処理するパケット処理プログラムにおいて、
コンピュータを、
前記パケットが受信されると、受信された前記パケットを解析して前記パケットの属するフローに関する解析情報を抽出するパケット解析手段、
同一の前記フローに属する前記パケットの受信間隔を計測し、前記受信間隔から受信の頻度予測値を算出して頻度予測記憶手段に格納しておき、前記解析情報が入力されると、前記解析情報に対応する前記フローの頻度予測値を前記頻度予測記憶手段から読み出す頻度予測手段、
前記解析情報に対応する前記フローについて読み出された前記頻度予測値を含むフロー情報を生成し、フロー情報記憶手段に格納される前記フロー情報を含め、前記フロー情報に設定される前記頻度予測値に基づいてまとめ処理を終了させるまとめ終了フローを選出し、前記フロー情報記憶手段に格納する前記フロー情報を更新するフロー処理手段、
前記フロー処理手段によって前記まとめ終了フローが選出されれば、選出された前記まとめ終了フローに関連する前記パケット蓄積手段の前記パケットを転送先に出力するパケット転送手段、
として機能させることを特徴とするパケット処理プログラム。
実施の形態に適用される発明の概念図である。 本発明の実施の形態に係るシステム構成を示す図である。 本発明の実施の形態のパケット処理装置のブロック図である。 本発明の実施の形態の頻度予測値の一例を示した図である。 図4の頻度予測値の更新状態を示した図である。 本実施の形態の頻度予測処理の手順を示したフローチャートである。 本実施の形態の頻度予測値の変化と読み出し頻度予測値の関係を示した図である。 本実施の形態の頻度予測テーブルのアドレス算出手順を示した図である。 本実施の形態の他の頻度予測値算出処理の手順を示した図である。 本実施の形態のフローテーブルの一例を示した図である。 本実施の形態のまとめ処理の手順を示したフローチャートである。 本実施の形態のまとめ処理におけるエントリ入れ替え前のフローテーブルの一例を示した図である。 本実施の形態のまとめ処理における新規エントリが発生した場合のフローテーブルの一例を示した図である。 本実施の形態のまとめ処理におけるエントリ入れ替え後のフローテーブルの一例を示した図である。 従来のパケット処理装置の構成図である。
符号の説明
1 パケット処理装置
1a パケット蓄積手段
1b パケット解析手段
1c 頻度予測記憶手段
1d 頻度予測手段
1e フロー情報記憶手段
1f フロー処理手段
1g パケット転送手段
2 ネットワーク
3 ホスト

Claims (8)

  1. 順不同に到着する複数のパケットを処理するパケット処理装置において、
    未送信のパケットを蓄積するパケット蓄積手段と、
    ケットが受信されると、受信されたパケットを解析してパケットの属するフローに関する解析情報を抽出するパケット解析手段と、
    前記解析情報に基づき、受信されたパケットが属するフローを特定し、同一のフローに属するパケットの受信間隔を計測し、前記受信間隔から該フローの受信の頻度予測値を算出する頻度予測手段と、
    受信されたパケットを前記パケット蓄積手段に格納し、該パケットが属するフローについて、該フローに属するパケットをまとめる処理を終了させるまでの待ち時間を前記頻度予測値に応じて決定し、前記待ち時間に対応するタイマカウンタ及び前記頻度予測値を該フローに対応付けられたフロー情報に設定し、所定の時間が経過するごとに各フローに対応するタイマカウンタを更新し、更新したタイマカウンタに示される時間が前記待ち時間を経過したフローが検出されたときは、該フローをまとめ終了フローとして出するフロー処理手段と、
    前記フロー処理手段によって前記まとめ終了フローが選出されたときは前記パケット蓄積手段に格納されている前記まとめ終了フローに属する1つ以上のパケットをまとめて転送先に出力するパケット転送手段と、
    を具備することを特徴とするパケット処理装置。
  2. 前記フロー処理手段は、受信されたパケットが属するフローについて算出された前記頻度予測値が、予め決められた頻度基準値より低い場合は、当該フローを前記まとめ終了フローとして選出する、
    ことを特徴とする請求項1記載のパケット処理装置。
  3. 前記フロー処理手段は、予め決められた並行まとめ処理数に応じた前記フロー情報を格納する領域を有するフロー情報記憶手段に新規フロー情報を格納する領域がない場合には、前記新規フロー情報及び前記フロー情報記憶手段に格納されるフロー情報に設定される各フローの頻度予測値を比較し、前記頻度予測値が最も低いフローを前記まとめ終了フローとして選出し、前記まとめ終了フローに対応するフロー情報を除く残りのフロー情報を前記フロー情報記憶手段に格納する、
    ことを特徴とする請求項1記載のパケット処理装置。
  4. 前記フロー処理手段は、前記フローに属するパケットをまとめる処理の対象としない所定のパケットが受信されたことが検出された場合には、該所定のパケットをそのまま転送先に転送するように前記パケット転送手段に指示する、
    ことを特徴とする請求項1記載のパケット処理装置。
  5. 予め前記受信間隔に応じた複数段階の頻度レベルを表すレベル値が規定されており、前記頻度予測手段は、パケットが受信された場合には、前記頻度予測値に最も受信頻度が高い状態を示す前記レベル値を設定し、所定の頻度予測更新時間が経過するごとに順次低い段階のレベル値を前記頻度予測値に設定する、
    ことを特徴とする請求項1記載のパケット処理装置。
  6. 前記頻度予測手段は、前記頻度予測更新時間を、パケットが受信されてからの経過時間に応じて可変に設定する、
    ことを特徴とする請求項5記載のパケット処理装置。
  7. 前記頻度予測手段は、フローごとに該フローに属する最新のパケットを受信した最新パケット受信時刻を頻度予測記憶手段に記憶しておき、所定の時間が経過するごとに、その時点の時刻と前記最新パケット受信時刻との差分によって得られる経過時間に応じて前記頻度予測値を設定する、
    ことを特徴とする請求項1記載のパケット処理装置。
  8. 順不同に到着する複数のフローのパケットを処理するパケット処理プログラムにおいて、
    コンピュータに、
    パケットが受信されると、受信されたパケットを解析して該パケットの属するフローに関する解析情報を抽出し、
    前記解析情報に基づき、受信されたパケットが属するフローを特定し、同一のフローに属するパケットの受信間隔を計測し、前記受信間隔から該フローの受信の頻度予測値を算出し、
    受信されたパケットを未送信のパケットを蓄積するパケット蓄積手段に格納し、該パケットが属するフローについて、該フローに属するパケットをまとめる処理を終了させるまでの待ち時間を前記頻度予測値に応じて決定し、前記待ち時間に対応するタイマカウンタ及び前記頻度予測値を該フローに対応付けられたフロー情報に設定し、
    所定の時間が経過するごとに各フローに対応するタイマカウンタを更新し、更新したタイマカウンタに示される時間が前記待ち時間を経過したフローが検出されたときは、該フローをまとめ終了フローとして選出し、
    前記まとめ終了フローが選出されたときは、前記パケット蓄積手段に格納されている前記まとめ終了フローに属する1つ以上のパケットをまとめて転送先に出力する、
    処理を実行させることを特徴とするパケット処理プログラム。
JP2005219778A 2005-07-29 2005-07-29 パケット処理装置及びパケット処理プログラム Expired - Fee Related JP4526458B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005219778A JP4526458B2 (ja) 2005-07-29 2005-07-29 パケット処理装置及びパケット処理プログラム
US11/348,267 US7633973B2 (en) 2005-07-29 2006-02-07 Packet processing device, and recording medium recording a packet processing program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005219778A JP4526458B2 (ja) 2005-07-29 2005-07-29 パケット処理装置及びパケット処理プログラム

Publications (2)

Publication Number Publication Date
JP2007036910A JP2007036910A (ja) 2007-02-08
JP4526458B2 true JP4526458B2 (ja) 2010-08-18

Family

ID=37694227

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005219778A Expired - Fee Related JP4526458B2 (ja) 2005-07-29 2005-07-29 パケット処理装置及びパケット処理プログラム

Country Status (2)

Country Link
US (1) US7633973B2 (ja)
JP (1) JP4526458B2 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4332805B2 (ja) * 2006-03-17 2009-09-16 ソニー株式会社 通信システム、送信装置および方法、並びに、受信装置および方法
WO2009022199A1 (en) * 2007-08-10 2009-02-19 Freescale Semiconductor, Inc. Data packet frequency
US9146892B2 (en) * 2007-10-11 2015-09-29 Broadcom Corporation Method and system for improving PCI-E L1 ASPM exit latency
US8396005B2 (en) * 2008-12-02 2013-03-12 Electronics And Telecommunications Research Institute High-speed IP flow mediation apparatus using network processor
CN101827008A (zh) * 2009-03-04 2010-09-08 中兴通讯股份有限公司 一种控制以太网地址表刷新次数的方法
CN103220225B (zh) 2012-05-21 2015-07-08 华为技术有限公司 报文处理方法及设备、***
US10334085B2 (en) * 2015-01-29 2019-06-25 Splunk Inc. Facilitating custom content extraction from network packets
CN109417465B (zh) 2016-02-23 2021-01-15 区块链控股有限公司 区块链执行的智能合约的注册和自动化管理方法
MX2018010050A (es) 2016-02-23 2019-01-21 Nchain Holdings Ltd Transacciones turing completas basadas en agente que integran retroalimentacion dentro de un sistema de cadena de bloques.
AU2017223133B2 (en) 2016-02-23 2022-09-08 nChain Holdings Limited Determining a common secret for the secure exchange of information and hierarchical, deterministic cryptographic keys
GB201711125D0 (en) * 2017-07-11 2017-08-23 Nchain Holdings Ltd Computer-implemented system and method
US20220407794A1 (en) * 2019-10-30 2022-12-22 Nippon Telegraph And Telephone Corporation Transmission control device, transmission control method, and transmission control program
WO2023027693A1 (en) * 2021-08-24 2023-03-02 Zeku, Inc. Serializer / deserializer forward flow control

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000101613A (ja) * 1998-09-28 2000-04-07 Hitachi Ltd サーバ・システムおよびクライアント・サーバ間の通信方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4677612A (en) * 1984-02-14 1987-06-30 Rosemount Inc. Communication system with subdivided transmission cycles
EP0687120A1 (en) * 1994-06-09 1995-12-13 ALCATEL BELL Naamloze Vennootschap Policing method guaranteeing fair throughput and device realizing such a method
US6563796B1 (en) * 1998-03-18 2003-05-13 Nippon Telegraph And Telephone Corporation Apparatus for quality of service evaluation and traffic measurement
US6483804B1 (en) * 1999-03-01 2002-11-19 Sun Microsystems, Inc. Method and apparatus for dynamic packet batching with a high performance network interface
US6683889B1 (en) * 1999-11-15 2004-01-27 Siemens Information & Communication Networks, Inc. Apparatus and method for adaptive jitter buffers
JP2001168915A (ja) * 1999-12-10 2001-06-22 Nec Corp Ipパケット転送装置
US6714985B1 (en) * 2000-04-28 2004-03-30 Cisco Technology, Inc. Method and apparatus for efficiently reassembling fragments received at an intermediate station in a computer network
US6715005B1 (en) * 2000-06-29 2004-03-30 International Business Machines Corporation Method and system for reducing latency in message passing systems
US7564843B2 (en) * 2004-12-16 2009-07-21 International Business Machines Corporation Method, system and article for improved network performance by avoiding IP-ID wrap-arounds causing data corruption on fast networks

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000101613A (ja) * 1998-09-28 2000-04-07 Hitachi Ltd サーバ・システムおよびクライアント・サーバ間の通信方法

Also Published As

Publication number Publication date
US20070025396A1 (en) 2007-02-01
JP2007036910A (ja) 2007-02-08
US7633973B2 (en) 2009-12-15

Similar Documents

Publication Publication Date Title
JP4526458B2 (ja) パケット処理装置及びパケット処理プログラム
US11249688B2 (en) High-speed data packet capture and storage with playback capabilities
US7742414B1 (en) Lightweight indexing for fast retrieval of data from a flow-level compressed packet trace
US20190324936A1 (en) High speed intelligent network recording systems
US8111707B2 (en) Compression mechanisms for control plane—data plane processing architectures
US7751404B2 (en) Method, system, and computer program product for high performance bonding resequencing
US20060161733A1 (en) Host buffer queues
US20110087630A1 (en) System analysis program, system analysis method, and system analysis apparatus
TW201520770A (zh) 用於取樣網路流之量測之埠鏡射
JP2005204092A (ja) 帯域制御機能を有するストレージスイッチ
JP6015342B2 (ja) 情報処理方法、プログラム、情報処理装置、及び情報処理システム
CN106921665B (zh) 一种报文处理方法及网络设备
WO2006074064A2 (en) Method and apparatus for managing data object size in a multi-user environment
US20140013007A1 (en) Access log management method
KR100567320B1 (ko) 인터넷 트래픽 측정을 위한 플로우 생성 방법
JP4727747B2 (ja) キャプチャ装置、キャプチャ方法
US10009151B2 (en) Packet storage method, information processing apparatus, and non-transitory computer-readable storage medium
JP2015095785A (ja) パケット保存方法、パケット保存プログラム及びパケット保存装置
JP2001077813A (ja) ネットワーク情報管理装置とネットワーク情報管理方法およびその処理プログラムを記録した記録媒体
JP4717106B2 (ja) フロー情報処理装置及びネットワークシステム
JP7287852B2 (ja) 監視システム、収集装置、アナライザ、監視方法、および監視プログラム
US20080225736A1 (en) Transmission of segments of data packages in accordance with transmission speed and package size
JP2016122900A (ja) パケット抽出装置、パケット抽出プログラムおよびパケット抽出方法
JP4409401B2 (ja) パケット転送装置及びストレージシステム
JPWO2011048740A1 (ja) データ伝送システム、送信速度制御方法、受信端末、送信端末

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080321

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100105

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100309

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100507

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100601

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100601

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130611

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4526458

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130611

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees