(57)【特許請求の範囲】
【請求項１】
コンピュータに、
通信パケットを取得し、
新たに通信セッションが開始されると、第１の情報を１ビット単位で記憶する領域を複数有する識別子用配列と第２の情報を１ビット単位で記憶する領域を複数有する符号用配列とを含む配列組を記憶部に確保し、
取得した前記通信パケットの識別子に対応する、前記配列組の識別子用配列の第１の領域に前記第１の情報が記憶されているか判定し、さらに、取得した前記通信パケットの誤り検出符号に対応する、前記配列組の符号用配列の第２の領域に前記第２の情報が記憶されているか判定する重複判定を行い、
前記第１の情報が前記第１の領域に記憶され、かつ、前記第２の情報が前記第２の領域に記憶されている場合、取得した前記通信パケットを削除し、前記第１の情報が前記第１の領域に記憶されていない場合、前記第１の情報を前記第１の領域に記憶し、前記第２の情報が前記第２の領域に記憶されていない場合、前記第２の情報を前記第２の領域に記憶する
処理を実行させることを特徴とする通信パケット検出プログラム。
【請求項２】
所定のタイミング毎に、前記識別子用配列と前記符号用配列とを含む配列組を前記記憶部に確保し、当該配列組の有効時刻を前記記憶部に記憶し、さらに、前記有効時刻を超過した前記配列組を削除し、
前記重複判定において、
前記記憶部に確保した複数の前記配列組の中から直近に確保した第１の配列組を選択し、
取得した前記通信パケットの識別子に対応する、前記第１の配列組の識別子用配列の第３の領域に、前記第１の情報が記憶されている場合、前記第１の情報が前記記憶部に記憶されていると判定し、さらに、取得した前記通信パケットの誤り検出符号に対応する、前記第１の配列組の符号用配列の第４の領域に、前記第２の情報が記憶されている場合、前記第２の情報が前記記憶部に記憶されていると判定し、
前記第１の情報が前記第３の領域に記憶され、かつ、前記第２の情報が前記第４の領域に記憶されている場合、取得した前記通信パケットを削除し、前記第１の情報が前記第３の領域に記憶されていない場合、前記第３の領域に前記第１の情報を記憶し、前記第２の情報が前記第４の領域に記憶されていない場合、前記第４の領域に前記第２の情報を記憶し、
前記第１の情報が前記第３の領域に記憶されていない場合、または、前記第２の情報が前記第４の領域に記憶されていない場合、前記記憶部に確保した複数の前記配列組の中から何れか１の未選択の第２の配列組を選択し、
取得した前記通信パケットの識別子に対応する、前記第２の配列組の識別子用配列の領域に前記第１の情報が記憶され、かつ、取得した前記通信パケットの誤り検出符号に対応する、前記第２の配列組の符号用配列の領域に前記第２の情報が記憶されている場合、取得した前記通信パケットを削除する
処理を前記コンピュータに実行させることを特徴とする請求項１に記載の通信パケット検出プログラム。
【請求項３】
コンピュータに、
通信パケットを取得し、
新たに通信セッションが開始されると、取得した前記通信パケットに含まれる識別子に基づき、取得した前記通信パケットに含まれる前記識別子がランダムに変動するランダム識別子か判定するランダム判定処理を行い、
取得した前記通信パケットに含まれる前記識別子がランダム識別子の場合、取得した前記通信パケットに含まれる当該通信パケットの識別子に対応する第１の情報が記憶部に記憶されているか判定し、さらに、当該通信パケットに含まれる誤り検出符号に対応する第２の情報が前記記憶部に記憶されているか判定する重複判定を行い、前記第１の情報が前記記憶部に記憶され、かつ、前記第２の情報が前記記憶部に記憶されている場合、取得した前記通信パケットを削除し、前記第１の情報が前記記憶部に記憶されていない場合、前記第１の情報を前記記憶部に記憶し、前記第２の情報が前記記憶部に記憶されていない場合、前記第２の情報を前記記憶部に記憶し、
取得した前記通信パケットに含まれる前記識別子がランダム識別子でない場合、前記通信パケットの取得に応じて、取得した前記通信パケットに含まれる識別子に対応する第１の情報が記憶部に記憶されているか判定し、前記第１の情報が前記記憶部に記憶されている場合、取得した前記通信パケットを削除し、前記第１の情報が前記記憶部に記憶されていない場合、前記第１の情報を前記記憶部に記憶する
処理を実行させることを特徴とする通信パケット検出プログラム。
【請求項４】
通信パケットを取得する取得部と、
新たに通信セッションが開始されると、第１の情報を１ビット単位で記憶する領域を複数有する識別子用配列と第２の情報を１ビット単位で記憶する領域を複数有する符号用配列とを含む配列組を記憶部に確保する管理部と、
前記取得部が取得した前記通信パケットの識別子に対応する、前記配列組の識別子用配列の第１の領域に前記第１の情報が記憶されているか判定し、さらに、取得した前記通信パケットの誤り検出符号に対応する、前記配列組の符号用配列の第２の領域に前記第２の情報が記憶されているか判定する重複判定を行う判定部と、
前記判定部が、前記第１の情報が前記第１の領域に記憶され、かつ、前記第２の情報が前記第２の領域に記憶されていると判定した場合、取得した前記通信パケットを削除する削除部とを有し、
前記管理部は、前記判定部が、前記第１の情報が前記第１の領域に記憶されていないと判定した場合、前記第１の情報を前記第１の領域に記憶し、前記判定部が、前記第２の情報が前記第２の領域に記憶されていないと判定した場合、前記第２の情報を前記第２の領域に記憶する
ことを特徴とする通信パケット検出装置。
【請求項５】
通信パケットを取得し、
新たに通信セッションが開始されると、第１の情報を１ビット単位で記憶する領域を複数有する識別子用配列と第２の情報を１ビット単位で記憶する領域を複数有する符号用配列とを含む配列組を記憶部に確保し、
取得した前記通信パケットの識別子に対応する、前記配列組の識別子用配列の第１の領域に前記第１の情報が記憶されているか判定し、さらに、取得した前記通信パケットの誤り検出符号に対応する、前記配列組の符号用配列の第２の領域に前記第２の情報が記憶されているか判定する重複判定を行い、
前記第１の情報が前記第１の領域に記憶され、かつ、前記第２の情報が前記第２の領域に記憶されている場合、取得した前記通信パケットを削除し、前記第１の情報が前記第１の領域に記憶されていない場合、前記第１の情報を前記第１の領域に記憶し、前記第２の情報が前記第２の領域に記憶されていない場合、前記第２の情報を前記第２の領域に記憶する
処理を実行することを特徴とする通信パケット検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット検出プログラム、パケット検出装置、および、パケット検出方法に関する。
【背景技術】
【０００２】
システムやネットワークの稼働状態を監視する装置(以下、監視装置と適宜記す)が様々提案されている。監視装置は、例えば、ネットワークを流れる通信パケット（以下、パケットと適宜記す）を取得して、取得したパケットの解析を行う。
【０００３】
監視装置は、解析対象のパケットが通過する場所に設けられたキャプチャポイントからパケットを取得する。このキャプチャポイントは、一般的に、解析に必要なパケットを網羅的に取得することを可能にするため複数箇所に設けられる。
【０００４】
キャプチャポイントが複数箇所に設けられている場合、同一のパケットが、複数のキャプチャポイントを通過することがある。このように、同一のパケットが、複数のキャプチャポイントを通過すると、監視装置は、複数の同一のパケットを取得し、同一のパケットが複数回発生したと解析することがある。
【０００５】
監視装置は、かかる解析を行うと、パケットの数を正しく算出することができなくなる場合がある。また、監視装置は、かかる解析を行うと、例えば、パケットロスが発生したことによって再送が行われたと判定することがある。かかる解析が行われと、解析の精度が低下する。
【０００６】
したがって、監視装置は、一般的に、取得した複数のパケットの各々について、パケットが重複しているか否か判定する重複判定を行い、重複パケット(同一パケットとも呼ぶ)を検出する。そして、監視装置は、重複パケットを検出した場合、この重複パケットを削除(破棄とも呼ぶ)し、取得した複数のパケットからこの重複パケットを除外したパケットに対して解析を実行する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】国際公開第２０１０／０８６９０７号
【特許文献２】特開２００７−２７４３３２号公報
【特許文献３】特開２００８−２１１６８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
監視装置は、パケットの重複判定を実行する場合、例えば、以下の処理を行う。すなわち、監視装置は、過去に取得したパケットを記憶し、新たなパケットを取得すると、取得したパケットと、記憶されているパケットとが同一か否か判定する。ここで、監視装置は、パケットの重複判定において、例えば、取得したパケットのデータ全体と記憶されているパケットのデータ全体とをマッチングする。
【０００９】
監視装置は、取得したパケットが記憶したパケットと同じパケットである場合に、取得したパケットを重複パケットとして削除する。
【００１０】
例えば、前記したマッチングを行う必要があるパケットの数によっては、ＣＰＵ(Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ)等の処理負担が増大する。さらに、例えば、重複判定が発生する頻度がＣＰＵ等の処理能力を上回ると、オーバーフローが発生し、重複判定が正しく行われなくなる場合がある。その結果、高精度な重複判定を行うことができなくなる。
【００１１】
本実施の形態の一つの側面では、処理負担を小さくして、重複するパケットを高精度に削除することを目的とする。
【課題を解決するための手段】
【００１２】
実施の形態の一つの側面は、コンピュータに、通信パケットを取得し、前記通信パケットの取得に応じて、取得した前記通信パケットに含まれる当該通信パケットの識別子に対応する第１の情報が記憶部に記憶されているか判定し、さらに、当該通信パケットに含まれる誤り検出符号に対応する第２の情報が前記記憶部に記憶されているか判定する重複判定を行い、前記第１の情報が前記記憶部に記憶され、かつ、前記第２の情報が前記記憶部に記憶されている場合、取得した前記通信パケットを削除し、前記第１の情報が前記記憶部に記憶されていない場合、前記第１の情報を前記記憶部に記憶し、前記第２の情報が前記記憶部に記憶されていない場合、前記第２の情報を前記記憶部に記憶する処理を実行させることを特徴とする通信パケット検出プログラムである。
【発明の効果】
【００１３】
一つの側面によれば、処理負担を小さくして、重複するパケットを高精度に削除することができる。
【図面の簡単な説明】
【００１４】
【図１】図１は、情報処理システムの全体構成を示す図である。
【図２】図２は、重複パケット検出装置とキャプチャポイントとの関係を説明する図である。
【図３】図３は、一手法を説明する図である。
【図４】図４は、図１の重複パケット検出装置ＤＤのハードウェアブロック図である。
【図５】図５は、第１の実施の形態における重複パケット検出装置ＤＤのソフトウェアブロック図である。
【図６】図６は、パケットの構成を説明する図である。
【図７】図７は、重複パケットの判定を説明する図である。
【図８】図８は、第１の実施の形態において、図４の情報格納領域ＩＲに各種情報が記憶されている状態を模式的に示す図である。
【図９】図９は、図８のパケット情報ＩＦ１を説明する図である。
【図１０】図１０は、図８のセッション情報ＩＦ２を説明する図である。
【図１１】図１１は、図８の管理情報ＩＦ３を説明する図である。
【図１２】図１２は、図８の位置情報ＩＦ４を説明する図である。
【図１３】図１３は、第１の実施の形態における重複パケット検出処理の詳細を説明する第１のフローチャートである。
【図１４】図１４は、第１の実施の形態における重複パケット検出処理の詳細を説明する第２のフローチャートである。
【図１５】図１５は、第１の実施の形態における重複パケット検出処理の詳細を説明する第３のフローチャートである。
【図１６】図１６は、第１の実施の形態における重複パケット検出処理の詳細を説明する第４のフローチャートである。
【図１７】図１７は、第２の実施の形態において、図４の情報格納領域ＩＲに各種情報が記憶されている状態を模式的に示す図である。
【図１８】図１８は、図１７のリスト情報ＩＦ４を説明する図である。
【図１９】図１９は、ビット列組管理リストを説明する第１の図である。
【図２０】図２０は、複数のビット列組の作成を説明する第１の図である。
【図２１】図２１は、複数のビット列組の作成、複数のビット列組の管理を説明するフローチャートである。
【図２２】図２２は、ビット列組管理リストを説明する第２の図である。
【図２３】図２３は、複数のビット列組の作成を説明する第２の図である。
【図２４】図２４は、第２の実施の形態における重複パケット検出処理の詳細を説明する第１のフローチャートである。
【図２５】図２５は、第２の実施の形態における重複パケット検出処理の詳細を説明する第２のフローチャートである。
【図２６】図２６は、第２の実施の形態における重複パケット検出処理の詳細を説明する第３のフローチャートである。
【図２７】図２７は、第２の実施の形態における重複パケット検出処理の詳細を説明する第４のフローチャートである。
【図２８】図２８は、第２の実施の形態における重複パケット検出処理の詳細を説明する第５のフローチャートである。
【図２９】図２９は、ランダム判定の方法を模式的に説明する図である。
【図３０】図３０は、第３の実施の形態における重複パケット検出装置ＤＤのソフトウェアブロック図である。
【図３１】図３１は、第３の実施の形態において、図４の情報格納領域ＩＲに各種情報が記憶されている状態を模式的に示す図である。
【図３２】図３２は、図３１の位置情報ＩＦ４を説明する図である。
【図３３】図３３は、図３１のランダム判定用情報ＩＦ６を説明する図である。
【図３４】図３４は、図３１の管理情報ＩＦ３を説明する図である。
【図３５】図３５は、第３の実施の形態における重複パケット検出処理の詳細を説明する第１のフローチャートである。
【図３６】図３６は、第３の実施の形態における重複パケット検出処理の詳細を説明する第２のフローチャートである。
【図３７】図３７は、第３の実施の形態における重複パケット検出処理の詳細を説明する第３のフローチャートである。
【図３８】図３８は、第３の実施の形態における重複パケット検出処理の詳細を説明する第４のフローチャートである。
【図３９】図３９は、第３の実施の形態における重複パケット検出処理の詳細を説明する第５のフローチャートである。
【発明を実施するための形態】
【００１５】
［情報処理システムの構成］
図１は、情報処理システムの全体構成を示す図である。なお、以下の図の説明において、同じ要素については同一の符号を付して、一度した説明を省略する。
【００１６】
情報処理システムＳＹＳは、第１のサーバＳＶＲ１と、第２のサーバＳＶＲ２と、第１のクライアントＣＴ１と、第２のクライアントＣＴ２と、第３のクライアントＣＴ３とを有する。なお、サーバは、サーバ装置の略語、クライアントは、クライアント装置の略語である。さらに、情報処理システムＳＹＳは、第１のスイッチＳＷ１と、第２のスイッチＳＷ２と、重複パケット検出装置ＤＤと、パケット解析装置ＡＤとを有する。なお、スイッチは、スイッチ装置の略語である。
【００１７】
第１のサーバＳＶＲ１、第２のサーバＳＶＲ２と、第１のクライアントＣＴ１〜第３のクライアントＣＴ３とは、インターネットやイントラネット等のネットワークＮＴを介して、互いに通信可能である。
【００１８】
また、パケット解析装置ＡＤは、図１の例では、重複パケット検出装置ＤＤを介して、第１のサーバＳＶＲ１に接続した第１のスイッチＳＷ１や、第２のサーバＳＶＲ２に接続した第２のスイッチＳＷ２と通信可能である。なお、情報処理システムＳＹＳは、２台のサーバを有しているが、これ以外の台数のサーバを有してもよい。また、情報処理システムＳＹＳは、３台のクライアントを有しているが、これ以外の台数のクライアントを有してもよい。
【００１９】
第１のサーバＳＶＲ１、第２のサーバＳＶＲ２は、例えば第１のクライアントＣＴ１からの処理要求に応じて処理を実行し、この処理の結果を第１のクライアントＣＴ１に返す。この処理の一例は、例えば、ユーザがクライアントから入力したユーザのスケジュール等の情報を管理する処理や、ユーザからの処理要求に応じて、必要な情報をクライアントに表示させる処理である。他にも、第１のサーバＳＶＲ１と、第２のサーバＳＶＲ２とが、連携してデータ処理を実行する。このデータ処理において、第１のサーバＳＶＲ１と、第２のサーバＳＶＲ２との間でパケットが送受信される。
【００２０】
第１のクライアントＣＴ１〜第３のクライアントＣＴ３は、第１のサーバＳＶＲ１や、第２のサーバＳＶＲ２に処理要求を送信し、その結果を受信する。第１のクライアントＣＴ１〜第３のクライアントＣＴ３は、例えば、デスクトップ型のパーソナルコンピュータ等の据え置き型の端末や携帯電話等のリモート端末である。
【００２１】
第１のスイッチＳＷ１は、第１のサーバＳＷ１とネットワークＮＴとの間に配置され、第２のスイッチＳＷ２は、第２のサーバＳＷ２とネットワークＮＴとの間に配置される。第１のスイッチＳＷ１、第２のスイッチＳＷ２は、転送するパケットを複製し、複製したパケットを外部装置に出力するミラーポート（図示しない）を有する。例えば、第１のスイッチＳＷ１のミラーポートは、第１のサーバＳＷ１を転送先とするパケットを複製し、複製したパケットを重複パケット検出装置ＤＤに送信する。
【００２２】
なお、図１の例において、ネットワークＮＴに、第１のスイッチＳＷ１、第２のスイッチＳＷ２とは別にネットワークタップを設置し、このネットワークタップからパケットを取得してもよい。
【００２３】
以下の説明において、パケットは、ネットワーク・プロトコルであるＩＰ(Ｉｎｔｅｒｎｅｔ Ｐｒｏｔｏｃｏｌ）規格に基づく通信において送受信されるパケットとする。そして、パケットは、例えば、第１のサーバＳＶＲ１と第１のスイッチＳＷ１との間、第２のサーバＳＶＲ２と第２のスイッチＳＷ２との間で送受信されるパケットである。また、パケットは、第１のスイッチＳＷ１とネットワークＮＴとの間で送受信されるパケット、第２のスイッチＳＷ２とネットワークＮＴとの間で送受信されるパケットである。また、パケットは、ネットワークＮＴ内で送受信されるパケットである。
【００２４】
パケット解析装置ＡＤは、例えば、第１のサーバＳＶＲ１、第２のサーバＳＶＲ２の稼働状態や、ネットワークＮＴの稼動状態を監視するために、パケットを取得して解析を行う。具体的には、パケット解析装置ＡＤは、例えば、単位時間内に装置間で送受信されたパケットの数やパケットロスの発生有無についての解析（レイヤー４レベルの解析）を行う。さらに、パケット解析装置ＡＤは、アプリケーションの動作を含めたレスポンスタイムについての解析（レイヤー７レベルの解析）等を行う。また、パケット解析装置ＡＤは、システム管理者等の要求に応じて、解析結果を加工して出力する。
【００２５】
重複パケット検出装置ＤＤは、パケット解析装置ＡＤが解析するパケットを、第１のスイッチＳＷ１、第２のスイッチＳＷ２や、ネットワークＮＴから取得する。重複パケット検出装置ＤＤは、取得したパケットをパケット解析装置ＡＤに送信する前に、重複判定を行って重複パケットを検出し、重複パケットを削除する。そして、重複パケット検出装置ＤＤは、重複パケットを削除した後のパケットを、パケット解析装置ＡＤに送信する。その結果、パケット解析装置ＡＤは、重複パケットを除外したパケットに対して解析を実行できる。以上説明したように、パケット解析装置ＡＤと、重複パケット検出装置ＤＤにより、稼動中のシステムやネットワークの稼働状態を監視する監視装置が実現される。
【００２６】
［重複パケット検出装置とキャプチャポイント］
次に、重複パケット検出装置とキャプチャポイントについて説明する。図２は、重複パケット検出装置とキャプチャポイントとの関係を説明する図である。
【００２７】
キャプチャポイントは、図２に示すように、重複パケット検出装置ＤＤがパケットを取得する箇所である。パケットの通信経路は、パケットに関するサービスの種類やネットワークＮＴの構成に依存して、異なる場合がある。そのため、キャプチャポイントは、複数箇所に設けられるのが一般的である。このように、キャプチャポイントが複数箇所に設けられているので、解析を行うために必要なパケットを網羅的に取得することが可能になる。そして、解析対象のパケットは、ネットワークＮＴを構成する通信機器における経路設定等によって、複数のキャプチャポイントを通過する場合がある。
【００２８】
図２において、同じパケットが、複数のキャプチャポイントを通過する場合を説明する。例えば、第１のパケットＰＣＫ１、第２のパケットＰＣＫ２が、図２の経路ＲＴを通過する場合を想定する。経路ＲＴは、図１において、第１のサーバＳＶＲ１と第１のスイッチＳＷ１とネットワークＮＴと第２のスイッチＳＷ２と第２のサーバＳＶＲ２との間の通信経路を模式的に示している。また、キャプチャポイントＡは、図１の第１のスイッチＳＷ１に設けられたキャプチャポイントであり、キャプチャポイントＢは、図１の第２のスイッチＳＷ２に設けられたキャプチャポイントである。
【００２９】
第１のパケットＰＣＫ１、第２のパケットＰＣＫ２は、それぞれキャプチャポイントＡにおいて複製され、複製された第１のパケットＰＣＫ１、複製された第２のパケットＰＣＫ２が重複パケット検出装置ＤＤに送信される。そして、第１のパケットＰＣＫ１、第２のパケットＰＣＫ２は、キャプチャポイントＢに向かった送信される。この第１のパケットＰＣＫ１、第２のパケットＰＣＫ２は、それぞれキャプチャポイントＢにおいて複製され、複製された第１のパケットＰＣＫ１、複製された第２のパケットＰＣＫ２が重複パケット検出装置ＤＤに送信される。
【００３０】
以上説明したように、重複パケット検出装置ＤＤは、同一の第１のパケットＰＣＫ１を２つ、同一の第２のパケットＰＣＫ２を２つ受信する。すなわち、前記の例では、重複パケット検出装置ＤＤは、４つのパケットを受信する。ここで、２個の第１のパケットＰＣＫ１の中の１個の第１のパケットＰＣＫ１は重複パケットであり、２個の第２のパケットＰＣＫ２の中の１個の第２のパケットＰＣＫ２は重複パケットである。
【００３１】
重複パケット検出装置ＤＤは、かかる重複パケットを排除するため、取得したパケットに対して重複判定を行い、重複パケットを検出する。そして、重複パケット検出装置ＤＤは、重複パケットを検出した場合、この重複パケットを削除し、取得した複数のパケットからこの重複パケットを除外したパケットをパケット解析装置ＡＤに送信する。
【００３２】
重複判定として、例えば、過去に取得したパケットを記憶し、新たにパケットを取得したときに、記憶したパケットとのマッチングを行う判定方法(以下、マッチング判定方法と適宜記す)がある。マッチング判定方法は、新たにパケットを取得する毎に、取得したパケットと保存されているパケットのマッチングを行う。しかし、例えば、高速通信回線（例えば、通信速度が１０（Ｇｂｐｓ）である通信回線）においてパケットが送受信される場合、保存する必要があるパケットの数が大量になる。したがって、この場合、マッチングが行われる回数が増加することになり、重複判定の処理負担が増大する。また、重複判定が発生する頻度がＣＰＵ等の処理能力を上回る場合には、オーバーフローが発生し、重複判定が正しく行われなくなる場合がある。その結果、高精度な重複判定を行うことができなくなる。
【００３３】
[処理負担の小さい重複判定を行う一手法]
そこで、パケットに含まれるこのパケットを一意に識別する識別子がセッション毎または装置毎に連続(シーケンシャルとも呼ぶ)して増加することを利用して、処理負担の小さい重複判定を行う手法(以下、一手法と適宜記す)が提案された。この識別子は、例えばＩＰ識別子であり、パケットのＩＰヘッダに含まれる。一方法は、ＩＰ識別子を利用して、パケットを一意に識別する。
【００３４】
ここで、ＩＰ識別子がシーケンシャルに増加することを説明する。例えば、図１、図２の例において、第１のサーバＳＶＲ１が、複数のパケットを連続して第２のサーバＳＶＲ２に送信する場合を想定する。例えば、第１のサーバＳＶＲ１は、第１のパケットＰＣＫ１、第２のパケットＰＣＫ２をこの順で第２のサーバＳＶＲ２に送信する。第１のサーバＳＶＲ１は、かかる送信において、ＩＰ識別子"１"を含む第１のパケットＰＣＫ１を作成し、さらに、ＩＰ識別子"２"を含む第２のパケットＰＣＫ２を作成する。
【００３５】
すなわち、パケットを送信する装置(以下、送信元装置と適宜記す)は、ＩＰ識別子"ｊ"(ｊは０〜６５５３５の整数)を含むパケットを作成し、他の装置(以下、送信先装置と適宜記す)に送信する。そして、送信元装置は、ＩＰ識別子"ｊ"を含むパケットを作成後、ＩＰ識別子"ｊ"よりも大きい識別子(ただし、６５５３５を超えない)を含むパケットを作成し、送信先装置に送信する。
【００３６】
図３は、一手法を説明する図である。図３の符号Ｐ１０１は、例えばビット配列を示す。ビット配列は、ビット単位の情報を記憶するビット領域を複数有する配列である。以下、ビット配列をビット列と適宜記す。なお、ビット領域は、図３のビット列Ｐ１０１において、四角形の１つの枠である。
【００３７】
図３における"先頭"は、ビット列Ｐ１０１の先頭ビット(０番目のビット)のビット領域を示す。識別子：４,９,１４,１９は、それぞれ、ピット列Ｐ１０１の４,９,１４,１９番目のビット領域を示す。なお、図３において、"…"は、ビット列の省略を意味する。
【００３８】
一方法は、重複判定の前に、当該一方法を実行する装置のメモリに、６５５３６ビットの領域を確保する。一方法は、例えば、図３に示したビット列Ｐ１０１を前記したメモリに確保する。そして、一方法は、ビット列Ｐ１０１の全ビット領域に"０"を記憶する。なお、一方法による重複判定の説明する場合、説明を簡略化するために、装置間において１つのセッションにおける通信が実行されている場合を例示し、装置間において複数のセッションにおける通信は実行されていないとする。
【００３９】
そして、一方法は、前記した１つのセッションにおいて実行されている通信で送信されるパケットを取得する。一方法は、取得したパケットのＩＰ識別子を取得する。
【００４０】
一方法は、取得したパケットのＩＰ識別子に対応する、ビット列Ｐ１０１のビット領域が例えば"０"の場合には、このビット領域に"１"を記憶する。一方法は、取得したパケットのＩＰ識別子に対応する、ビット列Ｐ１０１のビット領域に例えば"１"が記憶されている場合には、取得したパケットを削除する。
【００４１】
ここで、ＩＰ識別子"ｊ"(ｊは０〜６５５３５の整数)に対応するビット列Ｐ１０１のビット領域は、ビット列Ｐ１０１において、ｊ番目のビット領域である。
【００４２】
図３のビット列Ｐ１０１の全ビット領域に"０"が記憶されている状態から、一方法は、ＩＰ識別子"０"を含むパケットを取得する。すると、一方法は、ビット列Ｐ１０１において"０"番目(先頭)のビット領域に"１"を記憶する。そして、一方法は、ＩＰ識別子"２"を含むパケットを取得し、ビット列Ｐ１０１において"２"番目のビット領域に"１"を記憶する。以後、一方法は、ＩＰ識別子"４","１４"をそれぞれ含むパケットを取得し、ビット列Ｐ１０１において"４","１４"番目のビット領域に"１"を記憶する。
【００４３】
また、一方法は、前記したビット領域の記憶と並行して、取得したパケットのＩＰ識別子に対応する、ビット列Ｐ１０１のビット領域に"１"が記憶されているか判定する。一方法は、取得したパケットのＩＰ識別子に対応する、ビット列Ｐ１０１のビット領域に"１"が記憶されている場合、このパケットを削除する。このパケットは、過去に取得したパケットと同じパケット(すなわち、重複パケット)である。
【００４４】
以上説明した一方法によれば、取得したパケットのＩＰ識別子に対応する、ビット列Ｐ１０１のビット領域を参照すれば、取得したパケットが重複パケットか否か判定することができる。従って、一方法によれば、図２で説明したマッチング判定方法を実行する必要がない。そのため、マッチング判定方法を行う際に、過去に取得したパケットの中から、新たに取得したパケットと同じパケットを検索しなくてもよい。その結果、一方法は、重複パケットの検出における処理負担を軽減させることが可能になる。
【００４５】
[一手法の問題]
しかし、パケットのＩＰ識別子がセッション毎または装置毎にシーケンシャルに増加しない場合がある。例えば、一部のオペレーティングシステム(ＯＳ：Ｏｐｅｒａｔｉｎｇ Ｓｙｓｔｅｍ)や、一部のＳＳＬ-ＶＰＮサーバは、ＩＰ識別子をランダムに作成、換言すれば、ＩＰ識別子を不連続に作成している。すなわち、パケットのＩＰ識別子がセッション毎または装置毎にシーケンシャルに増加せずに、このＩＰ識別子がセッション毎または装置毎にランダムに発生する。
【００４６】
以下、ランダムに作成されたＩＰ識別子をランダムＩＰ識別子と適宜記す。なお、ＳＳＬは、"Ｓｅｃｕｒｅ Ｓｏｃｋｅｔｓ Ｌａｙｅｒ"の略語であり、ＶＰＮは、"Ｖｉｒｔｕａｌ Ｐｒｉｖａｔｅ Ｎｅｔｗｏｒｋ"の略語である。
【００４７】
図１、図２において、第１のサーバＳＶＲ１が、ＩＰ識別子をランダムに作成すると想定する。この想定において、第１のサーバＳＶＲ１は、ＩＰ識別子"０"を含む第１のパケットＰＣＫ１(図２参照)を作成し、他の装置に送信する。次に、第１のサーバＳＶＲ１は、ＩＰ識別子"０"を含む第２のパケットＰＣＫ２(図２参照)を作成し、他の装置に送信することがある。この第２のパケットＰＣＫ２は、第１のパケットＰＣＫ１と同一のパケットではない。
【００４８】
一方法は、図３で説明した、重複パケットの検出を行う。一方法は、図３のビット列Ｐ１０１の全ビット領域に"０"が記憶されている状態から、ＩＰ識別子"０"を含む第１のパケットＰＣＫ１を取得する。一方法は、ビット列Ｐ１０１において０番目(先頭)のビット領域が"０"であるので、０番目のビット領域に"１"を記憶する。
【００４９】
次に、一方法は、ＩＰ識別子"０"を含む第２のパケットＰＣＫ２を取得する。一方法は、取得した第２のパケットＰＣＫ２に含まれるＩＰ識別子"０"に対応する、ビット列Ｐ１０１のビット領域(０番目のビット領域)に"１"が記憶されているので、取得した第２のパケットＰＣＫ２を削除する。
【００５０】
前記したように、第２のパケットＰＣＫ２は、第１のパケットＰＣＫ１と同一のパケットではなく、重複パケットではない。このように、一方法によれば、重複パケットではないパケットを重複パケットと誤判定(以下、重複パケットの誤判定と適宜記す)して、このパケットを削除することがある。すなわち、異なるパケットにおいて、ランダムＩＰ識別子の偶発的な衝突が発生する。この重複パケットの誤判定により、パケットの重複判定の精度が低下する。
【００５１】
ＩＰ識別子がランダムに作成される場合において、ｎ(ｎは１以上の整数)個の異なるパケットを取得したときに、ランダムＩＰ識別子が偶然同じになる確率Ｐａは、以下の(式１)で示される。この確率は、重複パケットの判定において重複パケットの誤判定が発生する確率と実質的に同義である。
【００５２】
【数１】
0006492707.tif 000002
【００５３】
(式１)によれば、一方法は、５０個のパケットを取得すると重複パケットの誤判定が約２％の確率で発生し、１２０個のパケットを取得すると重複パケットの誤判定が約１０％の確率で発生する。このように、一方法によれば、ランダムＩＰ識別子の重複パケットの誤判定が発生する確率が高くなる。
【００５４】
そこで、ＩＰ識別子がランダムに作成される場合でも、処理負担を小さくして、重複するパケットを高精度に削除することが望ましい。本実施の形態では、処理負担を小さくして、重複するパケットを高精度に削除する重複パケット検出装置ＤＤについて説明する。
【００５５】
［第１の実施の形態］
図４、図５を参照して、本実施の形態の重複パケット検出装置ＤＤの構成について説明する。ここで、パケットに含まれる誤り検出符号に着目する。以下、誤り検出符号として、チェックサム(Ｃｈｅｃｋ Ｓｕｍ)を例示する。チェックサムは、パケットの各種データが異なれば、パケット毎に異なる値になる可能性が高くなる。本実施の形態では、ＩＰ識別子と、チェックサムとを利用してパケットを一意に識別し、取得したパケットが重複パケットか否か判定する。
【００５６】
(ハードウェアブロック図)
図４は、図１の重複パケット検出装置ＤＤのハードウェアブロック図である。コンピュータである重複パケット検出装置ＤＤは、バスＢに接続された、ＣＰＵ１０１と、メモリ(記憶部)１０２と、ストレージ装置１０３と、通信装置１０４とを有する。なお、以下の説明において、メモリ(記憶部)１０２をメモリ１０２と適宜記す。
【００５７】
ＣＰＵ１０１は、重複パケット検出装置ＤＤを制御する中央演算処理装置である。メモリ１０２は、ＣＰＵ１０１が実行する処理や、プログラムＰＧが実行する各ステップにおいて作成された情報などを一時的に記憶する。
【００５８】
メモリ１０２は、例えばＤＲＡＭ(Ｄｙｎａｍｉｃ Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ)などの半導体メモリである。メモリ１０２は、例えば、重複パケット検出処理を行う必要な情報を記憶する情報格納領域ＩＲを有する。
【００５９】
ストレージ装置１０３は、例えばハードディスクドライブ(ＨＤＤ：Ｈａｒｄ Ｄｉｓｋ Ｄｒｉｖｅ)や、ソリッドステートドライブ(ＳＳＤ:Ｓｏｌｉｄ Ｓｔａｔｅ Ｄｒｉｖｅ)などの大容量記憶装置である。ストレージ装置１０３は、例えば、ストレージ装置１０３内のプログラム格納領域（図示しない）に、重複パケットを検出する処理（以下、重複パケット検出処理とも呼ぶ）を行うためのプログラムＰＧを記憶する。ＣＰＵ１０１は、起動時に、プログラムＰＧをストレージ装置１０３からメモリ１０２にロードし、プログラムＰＧと協働して重複パケット検出処理を行う。
【００６０】
通信装置１０４は、例えばＮＩＣ(Ｎｅｔｗｏｒｋ Ｉｎｔｅｒｆａｃｅ Ｃａｒｄ)を有し、ネットワークに接続し、他の装置と通信する。通信装置１０４は、例えば、図１の第１のスイッチＳＷ１、第２のスイッチＳＷ２と通信する。なお、通信装置は、Ｉ(Ｉｎｐｕｔ)/Ｏ(Ｏｕｔｐｕｔ)装置とも呼ばれる。
【００６１】
(ソフトウェアブロック図)
図５は、第１の実施の形態における重複パケット検出装置ＤＤのソフトウェアブロック図である。なお、ソフトウェアブロック図において、ハードウェアであるＣＰＵ１０１については、一点鎖線で図示している。
【００６２】
ＣＰＵ１０１は、プログラムＰＧ(図４参照)と協働することにより、例えば、取得部１１と、セッション管理部１２と、情報管理部１３と、重複判定部１４として動作する。さらに、ＣＰＵ１０１は、プログラムＰＧと協働することにより、例えば、転送部１５と、削除部１６として動作する。
【００６３】
取得部１１は、例えば、パケット解析装置ＡＤが解析対象とするパケットを図４の通信装置１０４を介して取得する。取得部１１は、例えば、パケットが送受信されるネットワークに設けられた１つ以上のキャプチャポイントにおいてパケットを取得する。
【００６４】
セッション管理部１２は、例えば、取得部１１が取得したパケットが送受信されるセッションに関する情報（セッションを特定するための情報）をセッション情報ＩＦ２(図８参照)として情報格納領域ＩＲに記憶する。以下、取得部１１が取得したパケットを取得パケットと適宜記す。
【００６５】
セッションは、パケットを送受信する第１の装置（例えば、第１のサーバＳＶＲ１）と第２の装置(例えば、第２のサーバＳＶＲ２）との間において確立されるものであり、パケットを送受信する装置間における論理的な接続関係である。パケットの送受信が実行される前に、パケットの送受信を行う装置間においてセッションが確立されている。
【００６６】
情報管理部１３は、例えば、管理情報ＩＦ３(図８参照)を情報格納領域ＩＲに記憶する。管理情報ＩＦ３は、パケットのＩＰヘッダに含まれるＩＰ識別子と、パケットのＴＣＰヘッダまたはＵＤＰヘッダに含まれるチェックサムを管理する情報である。管理情報ＩＦ３は、ＩＰ識別子と、チェックサムとに対応して記憶されている。なお、ＴＣＰは、" Ｔｒａｎｓｍｉｓｓｉｏｎ Ｃｏｎｔｒｏｌ Ｐｒｏｔｏｃｏｌ"の略語であり、ＵＤＰは、"Ｕｓｅｒ Ｄａｔａｇｒａｍ Ｐｒｏｔｏｃｏｌ"の略語である。
【００６７】
なお、ＩＰヘッダに含まれるチェックサムは、利用しない。その理由は、以下の２つの理由である。第１の理由は、ルータがパケットを転送すると、ＩＰヘッダに含まれるチェックサムが変更される場合があるからである。第２の理由は、同一セッションでＩＰ識別子が同じ場合、ＩＰヘッダに含まれるチェックサムが同じになる可能性があるからである。
【００６８】
ＩＰヘッダは、パケットの送信元装置を特定する情報である送信元ＩＰや、パケットの送信先装置を特定する情報である送信先ＩＰ等を含むものであり、各パケットに付加されている。パケットの送信元装置は、パケットにＩＰ識別子をランダムに割り振る。
【００６９】
ＴＣＰヘッダ、ＵＤＰヘッダは、それぞれ、送信元ポート、送信先ポートや、チェックサム等を含む。以下の説明において、チェックサムは、特に断りがなければ、ＴＣＰヘッダやＵＤＰヘッダに含まれるチェックサムを意味する。
【００７０】
各セッションの管理情報ＩＦ３がメモリ１０２に記憶されている位置(アドレスとも呼ぶ)を示す情報は、記憶位置情報ＩＦ４(図８参照)としてメモリ１０２に記憶される。
【００７１】
重複判定部１４は、例えば、取得部１１がパケットを取得すると、パケットの取得に応じて、取得したパケットが重複パケットか判定する。
【００７２】
転送部１５は、重複判定部１４が取得パケットを重複パケットでないと判定すると、取得パケットを出力する。具体的には、転送部１５は、取得パケットをパケット解析装置ＡＤに送信する。なお、転送部１５は、取得パケットをパケット解析装置ＡＤに転送を行う前に、重複パケット検出装置ＤＤのストレージ装置１０３に記憶してもよい。
【００７３】
削除部１６は、重複判定部１４が取得パケットを重複パケットであると判定すると、取得パケットを削除する。
【００７４】
(パケット)
図６は、パケットの構成を説明する図である。図６(Ａ)は、ＴＣＰプロトコルの通信により送受信されるパケットの構成を模式的に示す。図６(Ｂ)は、ＵＤＰプロトコルの通信により送受信されるパケットの構成を模式的に示す。なお、ＵＤＰは、" Ｕｓｅｒ Ｄａｔａｇｒａｍ Ｐｒｏｔｏｃｏｌ "の略語である。
【００７５】
図６(Ａ)に示すパケットＰＣＫｉは、ＩＰヘッダＨ１とＴＣＰヘッダＨ２とデータＤ１とを含む。ＩＰヘッダＨ１は、例えば、送信元ＩＰ、送信先ＩＰ、プロトコル番号、ＩＰ識別子を含む。ＴＣＰヘッダＨ２は、例えば、送信元ポート番号、送信先ポート番号、チェックサムを含む。なお、以下、ポート番号をポートと適宜記す。データＤ１は、送信元装置が送信対象とする送信用データである。図６(Ａ)のＩＰペイロードは、ＴＣＰヘッダＨ２とデータＤ１とを含む。
【００７６】
図６(Ｂ)に示すパケットＰＣＫｕは、ＩＰヘッダＨ１１とＵＤＰヘッダＨ１２とデータＤ１１とを含む。ＩＰヘッダＨ１１は、例えば、送信元ＩＰ、送信先ＩＰ、プロトコル番号、ＩＰ識別子を含む。ＵＤＰヘッダＨ１２は、例えば、送信元ポート、送信先ポート、チェックサムを含む。データＤ２は、いわゆる送信用データである。図６(Ｂ)のＩＰペイロードは、ＵＤＰヘッダＨ１２とデータＤ１１とを含む。
【００７７】
図４のプログラムＰＧは、パケットのＩＰ識別子、チェックサムを取得し、取得したＩＰ識別子、チェックサムに基づき、重複パケットの判定を行う。
【００７８】
(重複パケットの検出処理)
図７は、重複パケットの検出を説明する図である。図７では、２つのビット列を含む配列組（以下、ビット列組と適宜記す)を示している。ビット列組ＰＰは、ＩＰ識別子ビット列Ｐ-１と、チェックサムビット列Ｐ-２とを有する。以下の説明において、"…"は省略を示す。
【００７９】
ＩＰ識別子ビット列Ｐ-１、チェックサムビット列Ｐ-２は、それぞれビット単位の情報(すなわち、０または１)を記憶する６５５３６個のビット領域(記憶領域とも呼ぶ)を有する配列である。図７では、このビット領域を四角枠により、模式的に示す。そして、このビット領域に記憶されたビット単位の情報を、この四角枠内の数値"０"、または、"１"により、模式的に示す。
【００８０】
ＩＰ識別子ビット列Ｐ-１の四角枠の上に示されている０〜６５５３５までの数値(太文字の数値参照)は、ＩＰ識別子と一対一で対応する数値である。以下の説明において、ＩＰ識別子"ｊ"(ｊは０〜６５５３５の整数)に対応するビット領域は、ＩＰ識別子"ｊ"が示されている四角枠である。
【００８１】
チェックサムビット列Ｐ-２の四角枠の上に示されている０〜６５５３５までの数値(太文字の数値参照)は、チェックサムと一対一で対応する数値である。以下の説明において、チェックサム"ｋ"(ｋは０〜６５５３５の整数)に対応するビット領域は、チェックサム"ｋ"が示されている四角枠である。
【００８２】
なお、図７の四角枠内の"０↓１"("↓"は下向きの矢印)は、ビット領域に記憶された数値"０"が数値"１"に変化したことを模式的に示す。
【００８３】
次に、本実施の形態における、重複パケットの検出処理について説明する。図５の情報管理部１３は、装置間で新たなセッションが開始されると、このセッションのＩＰ識別子ビット列Ｐ-１とチェックサムビット列Ｐ-２とをメモリ１０２に確保する。そして、情報管理部１３は、ＩＰ識別子ビット列Ｐ-１とチェックサムビット列Ｐ-２の先頭のアドレス(ポインタとも呼ぶ)をメモリ１０２に記憶する。以下の説明において、ＩＰ識別子ビット列Ｐ-１の先頭アドレスを符号"Ｐ-１"で示す。また、チェックサムビット列Ｐ-２の先頭アドレスを符号"Ｐ-２"で示す。
【００８４】
取得部１１が、パケットを取得すると、重複判定部１４は、このパケットの取得に応じて、取得パケットに含まれるＩＰ識別子に対応する第１の情報（例えば、"１"）が記憶部に記憶されているか判定(第１の判定)する。この記憶部は、例えば、メモリ１０２である。なお、この記憶部は、ストレージ装置１０３であってもよい。
【００８５】
さらに、重複判定部１４は、このパケットの取得に応じて、取得パケットに含まれるチェックサムに対応する第２の情報（例えば、"１"）が記憶部に記憶されているか判定(第２の判定)する。第１の判定および第２の判定は、重複判定とも呼ばれる。なお、第１の判定、第２の判定の順序は、どちらが先でもよい。
【００８６】
重複パケットの検出処理を具体的に説明する。情報管理部１３は、新たなセッションが開始されると、識別子用配列(以下、ＩＰ識別子ビット列と適宜記す)と符号用配列(以下、チェックサムビット列と適宜記す)とを含むビット列組を記憶部に確保する。ＩＰ識別子ビット列は、取得パケットに含まれるＩＰ識別子に対応する第１の情報を１ビット単位で記憶する領域(ビット領域とも呼ぶ)を複数有する配列である。チェックサムビット列は、取得パケットに含まれるチェックサムに対応する第２の情報を１ビット単位で記憶する領域を複数有する配列である。情報管理部１３は、新たなビット列組を確保すると、ビット列組の全ビット領域に例えば"０"を記憶する。
【００８７】
図７の例では、情報管理部１３は、ＩＰ識別子ビット列Ｐ-１とチェックサムビット列Ｐ-２とを含むビット列組ＰＰをメモリ１０２に確保する。なお、情報管理部１３は、この確保においてＩＰ識別子ビット列Ｐ-１とチェックサムビット列Ｐ-２の全ビット領域に"０"を記憶する。
【００８８】
重複判定部１４は、第１の判定において、取得パケットのＩＰ識別子に対応する、ビット列組のＩＰ識別子ビット列の第１のビット領域に第１の情報が記憶されている場合、第１の情報が記憶部に記憶されていると判定する。さらに、重複判定部１４は、第２の判定において、取得パケットのチェックサムに対応する、前記したビット列組のチェックサムビット列の第２のビット領域に第２の情報が記憶されている場合、第２の情報が記憶部に記憶されていると判定する。
【００８９】
重複判定部１４が、第１の情報が記憶部に記憶され、かつ、第２の情報が記憶部に記憶されていると判定した場合、削除部１６は、取得パケットを削除する。
【００９０】
重複判定部１４が、第１の情報が記憶部に記憶されていないと判定した場合、情報管理部１３は、第１の情報を記憶部に記憶する。具体的には、情報管理部１３は、第１の情報が第１のビット領域に記憶されていない場合、取得パケットに含まれるＩＰ識別子に対応する第１のビット領域に第１の情報を記憶する。
【００９１】
また、重複判定部１４が、第２の情報が記憶部に記憶されていないと判定した場合、情報管理部１３は、第２の情報を記憶部に記憶する。具体的には、情報管理部１３は、第２の情報が第２のビット領域に記憶されていない場合、取得パケットに含まれるチェックサムに対応する第２のビット領域に第２の情報を記憶する。
【００９２】
第１のビット領域は、ＩＰ識別子ビット列の先頭アドレスに取得パケットに含まれるＩＰ識別子を加算したアドレスで示されるビット領域である。
【００９３】
図７の例では、第１のビット領域は、ＩＰ識別子ビット列Ｐ-１の先頭アドレスに、取得パケットに含まれるＩＰ識別子"ｊ"を加算したアドレスで示されるビット領域である。この先頭アドレスは、メモリ１０２においてＩＰ識別子ビット列Ｐ-１が確保された場合における、ＩＰ識別子ビット列Ｐ-１の先頭部分のアドレスである。例えば、取得パケットに含まれるＩＰ識別子が"４"の場合、第１のビット領域は、図７の符号ＡＲ１ｉで示すビット領域である。
【００９４】
以上説明したように、ＩＰ識別子ビット列は１ビットのビット領域を複数有するので、ＩＰ識別子"ｊ"(ｊは０〜６５５３５の整数)と、ＩＰ識別子"ｊ"に対応するビット領域とが一対一で対応している。この対応により、ＣＰＵ１０１は、ＩＰ識別子"ｊ"とＩＰ識別子ビット列の先頭アドレスとに基づき、ＩＰ識別子"ｊ"に対応するビット領域を迅速に参照できる。
【００９５】
第２のビット領域は、チェックサムビット列の先頭アドレスに取得パケットに含まれるチェックサムを加算したアドレスで示されるビット領域である。
【００９６】
図７の例では、第２のビット領域は、チェックサムビット列Ｐ-２の先頭アドレスに、取得パケットに含まれるチェックサム"ｋ"を加算したアドレスで示されるビット領域である。この先頭アドレスは、メモリ１０２においてチェックサムビット列Ｐ-２が確保された場合における、チェックサムビット列Ｐ-２の先頭部分のアドレスである。例えば、取得パケットに含まれるチェックサムが"１"の場合、第２のビット領域は、図７の符号ＡＲ１ｃで示すビット領域である。
【００９７】
以上説明したように、チェックサムビット列は１ビットのビット領域を複数有するので、チェックサム"ｋ"(ｋは０〜６５５３５の整数)と、チェックサム"ｋ"に対応するビット領域とが一対一で対応している。この対応により、ＣＰＵ１０１は、チェックサム"ｋ"とチェックサムビット列の先頭アドレスとに基づき、チェックサム"ｋ"に対応するビット領域を迅速に参照できる。
【００９８】
図７を参照して、重複パケットの検出処理を説明する。図５の取得部１１は、前記した新たなセッションにおいて装置間で送信されたパケットを順次取得する。例えば、取得部１１は、第１〜第３のパケットを取得する。第１〜第３のパケットは、前記した新たなセッションにおいて送信元装置から送信先装置に送信されたパケットである。なお、ＩＰ識別子ビット列Ｐ-１とチェックサムビット列Ｐ-２との全ビット領域には"０"が記憶されている。
【００９９】
情報管理部１３は、取得部１１が取得した第１〜第３のパケットの各々からＩＰ識別子とチェックサムとを取得する。情報管理部１３は、第１のパケットからＩＰ識別子"４"とチェックサム"１"とを取得する。
【０１００】
第１のパケットのＩＰ識別子"４"に対応する、ビット列組ＰＰのＩＰ識別子ビット列Ｐ-１のビット領域に、第１の情報(例えば"１")が記憶されていない(図７の符号ＡＲ１ｉ参照)。そして、第１のパケットのチェックサム"１"に対応する、ビット列組ＰＰのチェックサムビット列Ｐ-２のビット領域に、第２の情報が記憶されていない(図７の符号ＡＲ１ｃ参照)。
【０１０１】
従って、重複判定部１４は、第１の情報がメモリ１０２に記憶されておらず、第２の情報がメモリ１０２に記憶されていないと判定する。すなわち、重複判定部１４は、第１のパケットが重複パケットではないと判定する。
【０１０２】
そして、情報管理部１３は、前記したビット列組ＰＰのＩＰ識別子ビット列Ｐ-１のビット領域に、第１の情報(例えば"１")を記憶する(図７の符号ＡＲ１ｉの"０↓１"参照)。情報管理部１３は、前記したビット列組ＰＰのチェックサムビット列Ｐ-２のビット領域に、第２の情報を記憶する(図７の符号ＡＲ１ｃの"０↓１参照)。
【０１０３】
転送部１５は、第１のパケットが重複パケットでないと判定されたので、第１のパケットをパケット解析装置ＡＤに転送する。
【０１０４】
次いで、情報管理部１３は、第２のパケットからＩＰ識別子"１１"とチェックサム"１７"とを取得する。
【０１０５】
第２のパケットのＩＰ識別子"１１"に対応する、ビット列組ＰＰのＩＰ識別子ビット列Ｐ-１のビット領域に、第１の情報(例えば"１")が記憶されていない(図７の符号ＡＲ２ｉ参照)。そして、第２のパケットのチェックサム"１７"に対応する、ビット列組ＰＰのチェックサムビット列Ｐ-２のビット領域に、第２の情報（例えば"１"）が記憶されていない(図７の符号ＡＲ２ｃ参照)。
【０１０６】
従って、重複判定部１４は、第１の情報がメモリ１０２に記憶されておらず、第２の情報がメモリ１０２に記憶されていないと判定する。すなわち、重複判定部１４は、第２のパケットが重複パケットではないと判定する。
【０１０７】
そして、情報管理部１３は、前記したビット列組ＰＰのＩＰ識別子ビット列Ｐ-１のビット領域に、第１の情報(例えば"１")を記憶する(図７の符号ＡＲ２ｉの"０↓１"参照)。情報管理部１３は、前記したビット列組ＰＰのチェックサムビット列Ｐ-２のビット領域に、第２の情報を記憶する(図７の符号ＡＲ２ｃの"０↓１"参照)。
【０１０８】
転送部１５は、第２のパケットが重複パケットでないと判定されたので、第２のパケットをパケット解析装置ＡＤに転送する。
【０１０９】
次いで、情報管理部１３は、第３のパケットからＩＰ識別子"４"とチェックサム"１"とを取得する。この第３のパケットは、第１のパケットと同じパケットであり、いわゆる重複パケットである。第３のパケットのＩＰ識別子"４"に対応する、ビット列組ＰＰのＩＰ識別子ビット列Ｐ-１のビット領域に、第１の情報(例えば"１")が記憶されている(図７の符号ＡＲ１ｉ参照)。そして、第３のパケットのチェックサム"１"に対応する、ビット列組のＰのチェックサムビット列Ｐ-２のビット領域に、第２の情報(例えば"１")が記憶されている(図７の符号ＡＲ１ｃ参照)。
【０１１０】
従って、重複判定部１４は、第１の情報がメモリ１０２に記憶され、かつ、第２の情報がメモリ１０２に記憶されていると判定する。すなわち、重複判定部１４は、第３のパケットが重複パケットであると判定する。換言すれば、重複判定部１４は、重複パケットとして第３のパケットを検出する。
【０１１１】
削除部１６は、第３のパケットが重複パケットであると判定されたので、第３のパケットを削除する。この削除により、重複パケットである第３のパケットは、パケット解析装置ＡＤに転送されない。
【０１１２】
ＩＰ識別子がランダムに作成される場合において、ｎ(ｎは１以上の整数)個の異なるパケットを取得したときに、ランダムＩＰ識別子とチェックサムとが偶然同じになる確率Ｐｂは、以下の(式２)で示される。この確率は、重複パケットの判定において重複パケットの誤判定が発生する確率と実質的に同義である。
【０１１３】
【数２】
0006492707.tif 000003
【０１１４】
（式２）によれば、本実施の形態の重複パケット検出装置ＤＤが５００個のパケットを取得すると、重複パケットの誤判定が約１％の確率で発生し、６４０個のパケットを取得すると、重複パケットの誤判定が約２％の確率で発生する。一方法では、前記したように、５０個のパケットを取得すると重複パケットの誤判定が約２％の確率で発生し、１２０個のパケットを取得すると重複パケットの誤判定が約１０％の確率で発生する。
【０１１５】
以上より、本実施の形態によれば、重複パケットの誤判定が、一方法に比べて低くなり、高精度な重複判定を行うことができる。
【０１１６】
また、本実施の形態の重複パケット検出装置ＤＤは、取得パケットが重複パケットか否か判定するための管理情報をビット単位(すなわち、"０"または"１")で記憶する。図７の例の場合、２つのビット列の記憶領域(６５５３６×２ビット)に管理情報を記憶して、重複パケットの判定処理を実行している。その結果、管理情報の記憶容量を削減できる。
【０１１７】
そして、重複パケット検出装置ＤＤは、取得パケットのＩＰ識別子に対応する、ＩＰ識別子ビット列のビット領域と、取得パケットのチェックサムに対応する、チェックサムビット列のビット領域とに、取得パケットの管理情報を記憶する。重複パケット検出装置ＤＤは、この記憶により、取得パケットのＩＰ識別子、チェックサムの値に基づき、管理情報を記憶するビット領域にアクセスできる。その結果、重複パケット検出装置ＤＤのＣＰＵ１０１が、管理情報を記憶する場合や重複パケットの判定を実行する場合において、管理情報の記憶位置を検索してアクセスする際の処理負荷を削減できる。
【０１１８】
また、重複パケット検出装置ＤＤは、セッションが開始されると、管理情報を記憶するための記憶領域(例えば、ＩＰ識別子ビット列、チェックサムビット列)を確保している。そのため、重複パケット検出装置ＤＤは、パケットを取得する度に、管理情報を記憶するための記憶領域を確保したり、この記憶領域を管理する情報を作成する必要がない。その結果、処理負荷を削減でき、重複判定処理の速度を向上できる。
【０１１９】
また、重複パケット検出装置ＤＤは、取得パケットの、ＩＰ識別子の管理情報の記憶とチェックサムの管理情報の記憶とにおいて、各管理情報を連携して(換言すれば、対応付けて)記憶していない。すなわち、ＩＰ識別子の管理情報とチェックサムの管理情報とを独立して記憶している。そのため、かかる連携のための情報を記憶する必要がなく、メモリ１０２の記憶容量が圧迫されない。また、かかる連携のための情報を検索する必要がないので、処理負荷を削減できる。
【０１２０】
(情報格納領域)
次に、本実施の形態における重複パケットの検出処理を図８〜図１６を参照して詳細に説明する。
【０１２１】
図８は、第１の実施の形態において、図４の情報格納領域ＩＲに各種情報が記憶されている状態を模式的に示す図である。情報格納領域ＩＲには、例えば、パケット情報ＩＦ１と、セッション情報ＩＦ２と、管理情報ＩＦ３と、記憶位置情報ＩＦ４とが記憶されている。
【０１２２】
図９は、図８のパケット情報ＩＦ１を説明する図である。パケット情報は、取得パケットに関する各種情報である。パケット情報は、図９に示すテーブル形式でメモリ１０２に記憶されている。パケット情報テーブルＴ１が、パケット情報ＩＦ１としてメモリ１０２に記憶されている状態を図８の"パケット情報：Ｔ１"で模式的に示す。
【０１２３】
パケット情報テーブルＴ１は、パケット先頭アドレス欄と、セッション識別子欄と、ＩＰ識別子欄と、チェックサム欄と、ＩＰ識別子重複フラグ欄と、チェックサム重複フラグ欄とを有する。なお、各欄の具体的な内容については、後記する具体例で説明する。
【０１２４】
図１０は、図８のセッション情報ＩＦ２を説明する図である。セッション情報は、セッションに関する各種情報である。セッション情報は、図１０に示すテーブル形式でメモリ１０２に記憶されている。セッション情報テーブルＴ２が、セッション情報ＩＦ２としてメモリ１０２に記憶されている状態を図８の"セッション情報：Ｔ２"で模式的に示す。
【０１２５】
セッション情報テーブルＴ２は、セッション識別子欄と、送信元ＩＰ欄と、送信先ＩＰ欄と、プロトコル番号欄と、送信元ポート欄と、送信先ポート欄とを有する。なお、各欄の具体的な内容については、後記する具体例で説明する。
【０１２６】
図１１は、図８の管理情報ＩＦ３を説明する図である。管理情報ＩＦ３は、図１１に示すビット列形式でメモリ１０２に記憶されている。ビット列組ｐｐ１、ｐｐ２が、管理情報ＩＦ３としてメモリ１０２に記憶されている状態を図８の"管理情報：Ｐ"で模式的に示す。
【０１２７】
ビット列組ｐｐ１は、ＩＰ識別子ビット列ｐ１-１とチェックサムビット列ｐ１-２とを含む。ビット列組ｐｐ２は、ＩＰ識別子ビット列ｐ２-１とチェックサムビット列ｐ２-２とを含む。ＩＰ識別子ビット列ｐ１-１、ｐ２-１は、図７のＩＰ識別子ビット列Ｐ-１と同様の構成を有する。また、チェックサムビット列ｐ１-２、ｐ２-２は、図７のチェックサムビット列Ｐ-２と同様の構成を有する。
【０１２８】
情報管理部１３は、第１の実施の形態では、セッション毎に１つのビット列組を作成する。
【０１２９】
図１２は、図８の位置情報ＩＦ４を説明する図である。位置情報は、セッションに対応する管理情報の記憶位置を示す情報である。位置情報ＩＦ４は、図１２に示すテーブル形式でメモリ１０２に記憶されている。位置情報テーブルＴ３が、位置情報ＩＦ４としてメモリ１０２に記憶されている状態を図８の"位置情報：Ｔ３"で模式的に示す。
【０１３０】
位置情報テーブルＴ３は、セッション識別子欄と、管理ビットアドレス-ＩＰ識別子欄と、管理ビットアドレス-チェックサム欄とを有する。なお、各欄の具体的な内容については、後記する具体例で説明する。
【０１３１】
[重複パケット検出の流れ]
次に、第１の実施の形態の詳細について説明する。図１３〜図１６は、第１の実施の形態における重複パケット検出処理の詳細を説明する第１〜第４のフローチャートである。図９から図１２を参照しながら、重複パケット検出処理の詳細を説明する。
【０１３２】
(ヘッダ情報の取得)
重複パケット検出装置ＤＤの取得部１１は、キャプチャポイントからパケットを取得したか判定する(Ｓ１１)。取得部１１は、パケットを取得しない場合(Ｓ１１/ＮＯ)、パケットの取得待ち状態を継続する。取得部１１は、キャプチャポイントからパケットを取得すると(Ｓ１１/ＹＥＳ)、取得パケットからヘッダ情報を取得する（Ｓ１２）。
【０１３３】
具体的には、取得部１１は、取得パケットをメモリ１０２に記憶する(Ｓ１２)。そして、取得部１１は、取得パケットに関する各種情報を、図９のパケット情報テーブルＴ１に記憶する。この記憶の前には、図９のパケット情報テーブルＴ１には、"０"(例えば、ＮＵＬＬ)が記憶され初期化されている。
【０１３４】
取得部１１は、図９のパケット情報テーブルＴ１のパケット先頭アドレスアドレス欄にメモリ１０２に記憶した取得パケットの先頭アドレスを記憶する(図９の"ｐａｄｒ"参照)。なお、取得部１１は、この記憶において、パケットのデータ長を示す情報(オフセットとも呼ぶ)を記憶してもよい。
【０１３５】
取得部１１は、ＩＰヘッダを参照し、取得パケットの送信元ＩＰ、送信先ＩＰ、プロトコル番号（プロトコル情報とも呼ぶ）を取得する（Ｓ１２）。なお、プロトコル番号としては、例えば、ＴＣＰのプロトコル番号や、ＵＤＰのプロトコル番号がある。
【０１３６】
さらに、取得部１１は、ＴＣＰヘッダ（または、ＵＤＰヘッダ）を参照し、取得パケットの送信元ポート及び送信先ポートを取得する（Ｓ１２）。なお、以降の説明において、説明を簡明にするために、パケットは、ＴＣＰヘッダを有し、ＵＤＰヘッダを有しないとして説明する。
【０１３７】
すなわち、取得部１１は、取得パケットが送受信されるセッションを特定するために必要な情報を、取得パケットのＩＰヘッダ及びＴＣＰヘッダから取得する。この取得により、後述するように、セッション管理部１２は、送信元装置と送信先装置との通信におけるセッションを一意に特定する。なお、本実施の形態において、取得部１１は、少なくともＩＰヘッダ及びＴＣＰヘッダがカプセル化（暗号化とも呼ぶ）されていない状態のパケットを取得するものとする。
【０１３８】
具体的には、取得部１１は、例えば、ＩＰヘッダ及びＴＣＰヘッダのフォーマットに従って、取得パケットのＩＰヘッダまたはＴＣＰヘッダにおいて、取得したい情報が設定されている位置を特定し、各情報の取得を行う。取得部１１は、この取得において、例えば、ＩＰヘッダのフォーマットを参照し、ＩＰヘッダに含まれる送信元ＩＰ等を取得する。続いて、取得部１１は、ＩＰヘッダのフォーマットを参照し、ＩＰヘッダに含まれるヘッダ長に基づき、取得パケットのＩＰペイロード（すなわち、ＴＣＰヘッダ）の先頭位置を特定する。そして、取得部１１は、例えば、ＴＣＰヘッダのフォーマットを参照し、ＴＣＰヘッダ含まれる送信元ポート等を取得する。
【０１３９】
(セッションの特定)
セッション管理部１２は、パケットの取得に応じて、取得パケットに含まれるセッションを特定する情報に基づき、取得パケットのセッションを特定する（Ｓ１３）。セッション管理部１２は、セッション情報を特定し、特定したセッション情報に基づき、取得パケットのセッションを一意に特定する（Ｓ１３）。セッション情報は、送信元ＩＰと、送信先ＩＰと、プロトコル番号と、送信元ポートと、送信先ポートとを有する情報である。
【０１４０】
セッションを特定する理由について説明する。通常、ネットワークにおいては、複数のセッションの各々において通信が実行され、各通信においてパケットが送受信される。そこで、重複パケット検出装置ＤＤは、セッション毎に重複パケットの検出を行うため、セッションを特定する。そして、重複パケット検出装置ＤＤは、セッション毎に、管理情報を記憶するビット列組を確保する。
【０１４１】
(新たなセッションによる通信)
次に、セッション管理部１２は、例えば、特定したセッションのセッション情報が情報格納領域ＩＲに記憶されているか否か判定する（Ｓ１４）。セッション管理部１２は、Ｓ１４において、新たなセッションによる通信が実行されたか判定している。
【０１４２】
セッション情報が記憶されていない場合（Ｓ１４/ＮＯ）、セッション管理部１２は、例えば、取得したＩＰヘッダに含まれる情報に基づいて、取得パケットのセッション（すなわち、新たなセッション）のセッション情報を情報格納領域ＩＲに記憶する（Ｓ１５）。
【０１４３】
セッション管理部１２が、Ｓ１４の判定において、セッション情報が記憶されていないと判定する場合（Ｓ１４/ＮＯ）は、以下の場合である。すなわち、Ｓ１２で取得された、送信元ＩＰ、送信先ＩＰ、プロトコル番号、送信元ポート、送信先ポートが全て、図１０のセッション情報テーブルＴ２の同一行に記憶されていない場合である。
【０１４４】
具体的に説明する。ここで、図１０のセッション情報テーブルＴ２は、初期化状態であり、情報を記憶していないとする（すなわち、空白）。
【０１４５】
セッション管理部１２は、新たなセッションを一意に識別するセッション識別子(例えば、"１")を作成し、図１０のセッション情報テーブルＴ２のセッション識別子欄に記憶する（Ｓ１５）。ここで、取得部１１は、Ｓ１２において、送信元ＩＰ"１０.２０.３０.４０"、送信先ＩＰ"１０.２０.３０.５０"、プロトコル番号"６"、送信元ポート"２０００"、送信先ポート"２０"を取得したと想定する。
【０１４６】
セッション管理部１２は、送信元ＩＰ"１０.２０.３０.４０"、送信先ＩＰ"１０.２０.３０.５０"を、セッション識別子"１"に対応付けて、それぞれ、図１０のセッション情報テーブルＴ２の送信元ＩＰ欄、送信先ＩＰ欄に記憶する（Ｓ１５）。さらに、セッション管理部１２は、プロトコル番号"６"を、セッション識別子"１"に対応付けて、図１０のセッション情報テーブルＴ２のプロトコル番号欄に記憶する（Ｓ１５）。さらに、セッション管理部１２は、送信元ポート"２０００"、送信先ポート"２０"を、セッション識別子"１"に対応付けて、それぞれ、図１０のセッション情報テーブルＴ２の送信元ポート欄、送信先ポート欄に記憶する（Ｓ１５）。
【０１４７】
次いで、セッション管理部１２は、作成されたセッション識別子(例えば、"１")を、図１２の記憶位置情報テーブルＴ３のセッション識別子欄に記憶する(セッション識別子欄の"１"参照)（Ｓ１５）。なお、図１０のセッション情報テーブルＴ２における、他の情報については説明を省略する。
【０１４８】
(ビット列組の確保)
情報管理部１３は、Ｓ１５の終了後、Ｓ１６、Ｓ１７を実行して、新たなセッションに対応するビット列組を確保する。情報管理部１３は、新たなセッションのＩＰ識別子ビット列を確保する（Ｓ１６）。具体的には、情報管理部１３は、図１１に示したＩＰ識別子ビット列ｐ１-１をメモリ１０２に確保する。情報管理部１３は、ＩＰ識別子ビット列ｐ１-１をメモリ１０２に確保した場合、ＩＰ識別子ビット列ｐ１-１の全ビット領域に"０"を記憶する。
【０１４９】
そして、情報管理部１３は、新たに作成したセッション識別子と対応付けて、ＩＰ識別子ビット列ｐ１-１の先頭アドレスを、図１２の記憶位置情報テーブルＴ３における管理ビットアドレス-ＩＰ識別子欄に記憶する。図１２の例では、情報管理部１３は、セッション識別子"１"と対応付けて、ＩＰ識別子ビット列ｐ１-１の先頭アドレス(例えば、"ｐ１-１")を、図１２の記憶位置情報テーブルＴ３における管理ビットアドレス-ＩＰ識別子欄に記憶する。
【０１５０】
次いで、情報管理部１３は、新たなセッションのチェックサムビット列を確保する（Ｓ１７）。具体的には、情報管理部１３は、図１１に示したチェックサムビット列ｐ１-２をメモリ１０２に確保する。情報管理部１３は、チェックサムビット列ｐ１-２をメモリ１０２に確保した場合、チェックサムビット列ｐ１-２の全ビット領域に"０"を記憶する。
【０１５１】
そして、情報管理部１３は、新たに作成したセッション識別子と対応付けて、チェックサムビット列ｐ１-２の先頭アドレスを、図１２の記憶位置情報テーブルＴ３における管理ビットアドレス-チェックサム欄に記憶する。図１２の例では、情報管理部１３は、セッション識別子"１"と対応付けて、チェックサムビット列ｐ１-２の先頭アドレス(例えば、"ｐ１-２")を、図１２の記憶位置情報テーブルＴ３における管理ビットアドレス-チェックサム欄に記憶する。なお、図１２において、他の情報については、説明を省略する。
【０１５２】
Ｓ１７の処理が終了すると、セッション管理部１２は、新たに作成したセッション識別子を、図９のパケット情報テーブルＴ１のセッション識別子欄に記憶し、Ｓ１８に移る。
【０１５３】
または、セッション管理部１２が、Ｓ１４の判定において、セッション情報が記憶されていると判定すると（Ｓ１４/ＹＥＳ）、セッション情報に対応して記憶されているセッション識別子を、図１０のセッション情報テーブルＴ２のセッション識別子欄から取得する。そして、セッション管理部１２は、この識別子を、図９のパケット情報テーブルＴ１のセッション識別子欄に記憶し、Ｓ１８に移る。
【０１５４】
なお、セッション管理部１２が、Ｓ１４の判定において、セッション情報が記憶されていると判定する場合（Ｓ１４/ＹＥＳ）は、以下の場合である。すなわち、Ｓ１３で特定された、送信元ＩＰ、送信先ＩＰ、プロトコル番号、送信元ポート、送信先ポートが全て、図１０のセッション情報テーブルＴ２の同一行に記憶されている場合である。
【０１５５】
(ＩＰ識別子、チェックサムの取得)
情報管理部１３は、例えば、取得パケットのＩＰヘッダに含まれるＩＰ識別子(例えば、２３４５６)を取得し、取得パケットのＴＣＰヘッダに含まれるチェックサム（例えば、５６７８９）を取得する（Ｓ１８）。
【０１５６】
そして、情報管理部１３は、取得したＩＰ識別子を、取得パケットのパケット先頭アドレス（図９の"ｐａｄｒ"参照）と対応付けて、図９のパケット情報テーブルＴ１のＩＰ識別子欄に記憶する(ＩＰ識別子欄の"２３４５６"参照)。そして、情報管理部１３は、取得したチェックサムを、取得パケットのパケット先頭アドレス（図９の"ｐａｄｒ"参照）と対応付けて、図９のパケット情報テーブルＴ１のチェックサム欄に記憶する(チェックサム欄の"５６７８９"参照)。ＩＰ識別子、チェックサムの取得後、図１４のＳ１９に移る。
【０１５７】
(ＩＰ識別子の重複判定、記憶処理)
重複判定部１４は、ＩＰ識別子の重複判定、記憶処理を実行する（図１４のＳ１９）。図１５を参照して、ＩＰ識別子の重複判定、記憶処理を説明する。
【０１５８】
重複判定部１４は、取得したＩＰ識別子に対応する管理情報を参照する（Ｓ１９１）。具体的には、重複判定部１４は、図１２の記憶位置情報テーブルＴ３を参照して、取得パケットのセッションを識別するセッション識別子(以下、取得パケットのセッション識別子と適宜記す)により識別されるＩＰ識別子ビット列を特定する。以下、特定されたＩＰ識別子ビット列を特定ＩＰ識別子ビット列と適宜記す。そして、重複判定部１４は、取得したＩＰ識別子に対応する、特定ビット列のビット領域を参照する（Ｓ１９１）。
【０１５９】
重複判定部１４は、取得したＩＰ識別子に対応する第１の情報(例えば、"１")がメモリ１０２に記憶されているか判定する（Ｓ１９２）。具体的には、重複判定部１４は、参照したビット領域に第１の情報が記憶されているか判定する。重複判定部１４は、Ｓ１９２の判定より、特定したセッションと取得パケットに含まれるＩＰ識別子とに対応する第１の情報がメモリ１０２に記憶されているか判定する。特定したセッションと取得パケットに含まれるＩＰ識別子とに対応する第１の情報がメモリ１０２に記憶されているか判定することで、セッション毎に重複パケットを検出することができる。
【０１６０】
第１の情報がメモリ１０２に記憶されていない場合(Ｓ１９２/ＮＯ)、すなわち、参照したビット領域に第１の情報が記憶されていない場合、情報管理部１３は、Ｓ１９３の処理を実行する。情報管理部１３は、取得したＩＰ識別子に対応する第１の情報をメモリ１０２に記憶する(Ｓ１９３)。具体的には、重複判定部１４は、参照したビット領域に第１の情報を記憶する。Ｓ１９３の終了後、図１４のＳ２０に移る。情報管理部１３は、Ｓ１９３により、特定したセッションと取得パケットに含まれる識別子とに対応する第１の情報をメモリ１０２に記憶する。
【０１６１】
第１の情報がメモリ１０２に記憶されている場合(Ｓ１９２/ＹＥＳ)、重複判定部１４は、以下の処理を実行する。すなわち、重複判定部１４は、図９のパケット情報テーブルＴ１のＩＰ識別子重複フラグ欄に"１"を記憶する。そして、図１４のＳ２０に移る。なお、情報管理部１３は、図９のパケット情報テーブルＴ１のＩＰ識別子重複フラグ欄に初期値として"０"を記憶している。
【０１６２】
(チェックサムの重複判定、記憶処理)
重複判定部１４は、チェックサムの重複判定、記憶処理を実行する（図１４のＳ２０）。図１６を参照して、チェックサムの重複判定、記憶処理を説明する。
【０１６３】
重複判定部１４は、取得したチェックサムに対応する管理情報を参照する（Ｓ２０１）。具体的には、重複判定部１４は、図１２の記憶位置情報テーブルＴ３を参照して、取得パケットのセッション識別子により識別されるチェックサムビット列を特定する。以下、特定されたチェックサムビット列を特定チェックサムビット列と適宜記す。そして、重複判定部１４は、取得したチェックサムに対応する、特定チェックサムビット列のビット領域を参照する（Ｓ２０１）。
【０１６４】
重複判定部１４は、取得したチェックサムに対応する第２の情報(例えば、"１")がメモリ１０２に記憶されているか判定する（Ｓ２０２）。具体的には、重複判定部１４は、参照したビット領域に第２の情報(例えば、"１")が記憶されているか判定する。重複判定部１４は、Ｓ２０２の判定より、特定したセッションと取得パケットに含まれるチェックサムとに対応する第２の情報がメモリ１０２に記憶されているか判定する。特定したセッションと取得パケットに含まれるチェックサムとに対応する第２の情報がメモリ１０２に記憶されているか判定することで、セッション毎に重複パケットを検出することができる。
【０１６５】
第２の情報がメモリ１０２に記憶されていない場合(Ｓ２０２/ＮＯ)、すなわち、参照したビット領域に第２の情報が記憶されていない場合、情報管理部１３は、Ｓ２０３の処理を実行する。情報管理部１３は、取得したチェックサムに対応する第２の情報をメモリ１０２に記憶する(Ｓ２０３)。具体的には、重複判定部１４は、参照したビット領域に第２の情報を記憶する。Ｓ２０３の終了後、図１４のＳ２１に移る。情報管理部１３は、Ｓ２０３により、特定したセッションと取得パケットに含まれるチェックサムに対応する第２の情報をメモリ１０２に記憶する。
【０１６６】
第２の情報がメモリ１０２に記憶されている場合(Ｓ２０２/ＹＥＳ)、重複判定部１４は、以下の処理を実行する。すなわち、重複判定部１４は、図９のパケット情報テーブルＴ１のチェックサム重複フラグ欄に"１"を記憶する。そして、図１４のＳ２１に移る。なお、情報管理部１３は、図９のパケット情報テーブルＴ１のチェックサム重複フラグ欄に初期値として"０"を記憶している。
【０１６７】
(重複パケット判定)
重複判定部１４は、図１４のＳ２１により、取得パケットが過去に取得したパケット(すなわち、重複パケット)か判定する。重複判定部１４は、取得パケットのＩＰ識別子、チェックサムが両方重複しているか判定する（Ｓ２１）。取得パケットのＩＰ識別子、チェックサムが両方重複していることは、取得パケットが重複パケットであることとと同義である。従って、かかるパケットは、削除する。
【０１６８】
なお、ＩＰ識別子が重複するとは、図１５のＳ１９２でＹＥＳと判定されたことを意味する。重複判定部１４は、図９のパケット情報テーブルＴ１のＩＰ識別子重複フラグ欄に"１"が記憶されている場合、ＩＰ識別子が重複すると判定する。
【０１６９】
また、チェックサムが重複するとは、図１６のＳ２０２でＹＥＳと判定されたことを意味する。重複判定部１４は、図９のパケット情報テーブルＴ１のチェックサム重複フラグ欄に"１"が記憶されている場合、チェックサムが重複すると判定する。
【０１７０】
(重複パケットの削除)
ＩＰ識別子、チェックサムが両方重複している場合(Ｓ２１/ＹＥＳ)、取得パケットは重複パケットである。従って、削除部１６は、ＩＰ識別子、チェックサムが両方重複している場合(Ｓ２１/ＹＥＳ)、メモリ１０２に記憶されたパケットを削除する（Ｓ２２）。具体的には、削除部１６は、図９のパケット情報テーブルＴ１のパケット先頭アドレス欄の先頭アドレスで特定される領域に記憶されたパケットを削除する。
【０１７１】
(パケットの転送)
一方、ＩＰ識別子、チェックサムが両方重複していない場合(Ｓ２１/ＮＯ)、取得パケットは重複パケットでない。従って、転送部１５は、ＩＰ識別子、チェックサムが両方重複していない場合(Ｓ２１/ＮＯ)、メモリ１０２に記憶されたパケットをパケット解析装置ＡＤに転送する（Ｓ２３）。具体的には、転送部１５は、図９のパケット情報テーブルＴ１のパケット先頭アドレス欄の先頭アドレスで特定される領域に記憶されたパケット(以下、送信対象パケットと適宜記す)をパケット解析装置ＡＤに転送する。
【０１７２】
なお、転送部１５は、例えば、送信対象パケットを、ＩＰヘッダ及びＴＣＰヘッダが付加された状態でパケット解析装置ＡＤに転送するものであってよい。これにより、パケット解析装置ＡＤでは、ネットワークを通信している状態のパケットについて解析を行うことが可能になる。また、ＴＣＰヘッダは、ＴＣＰペイロードの先頭位置を示す「データオフセット」を有しており、 ＵＤＰヘッダは、そのデータサイズが固定長である。そのため、パケット解析装置ＡＤは、重複パケット検出装置ＤＤから送信されたＴＣＰヘッダまたはＵＤＰヘッダを参照することにより、ＴＣＰペイロードまたはＵＤＰペイロードの先頭位置を特定することが可能になる。
【０１７３】
Ｓ２２の処理またはＳ２３の処理が、終了すると、情報管理部１３は、パケット情報を削除する（Ｓ２４）。この削除において、情報管理部１３ は、図９のパケット情報テーブルＴ１に記憶された情報を初期化する。Ｓ２４の処理が終了すると、図１３のＳ１１に戻る。
【０１７４】
[重複パケット検出の具体例]
以下、図８〜図１６を参照して、重複パケット検出の具体例を説明する。具体例の説明において、既に、図１０のセッション情報テーブルＴ１、図１１のビット列組ｐｐ１、ｐｐ２、図１２の記憶位置情報テーブルＴ３がメモリ１０２に記憶されている。
【０１７５】
以下の説明において、取得部１１は、パケットを取得する。取得パケットの送信元ＩＰ"は１０.２０.３０.４０"であり、送信先ＩＰは"１０.２０.３０.５０"であり、プロトコル番号は"６"であり、送信元ポートは"２０００"であり、送信先ポートは"２０"である。
【０１７６】
取得部１１は、パケットを取得すると（Ｓ１１/ＹＥＳ）、取得パケットの送信元ＩＰ"１０.２０.３０.４０"、送信先ＩＰ"１０.２０.３０.５０"、プロトコル番号"６"、送信元ポート"２０００"、送信先ポート"２０"を取得する(Ｓ１２)。送信元ＩＰ"１０.２０.３０.４０"、送信先ＩＰ"１０.２０.３０.５０"、プロトコル番号"６"、送信元ポート"２０００"、送信先ポート"２０"は、図１０のセッション情報テーブルＴ１に記憶されている。そして、図１０のセッション情報テーブルＴ１によれば、この送信元ＩＰ、送信先ＩＰ、プロトコル番号、送信元ポート、送信先ポートに対応して記憶されたセッション識別子は"１"である。
【０１７７】
従って、セッション管理部１２は、特定したセッションのセッション情報が情報格納領域ＩＲに記憶されていると判定する（Ｓ１４/ＹＥＳ）。そして、情報管理部１３は、例えば、取得パケットのＩＰヘッダに含まれるＩＰ識別子(例えば、"３")を取得し、取得パケットのＴＣＰヘッダに含まれるチェックサム（例えば、"５"）を取得する（Ｓ１８）。
【０１７８】
重複判定部１４は、図１２の記憶位置情報テーブルＴ３を参照して、取得パケットのセッション識別子"１"により識別されるＩＰ識別子ビット列ｐ１-１を特定する（Ｓ１９１）。そして、重複判定部１４は、取得したＩＰ識別子"３"に対応する、特定ビット列のビット領域を参照する（Ｓ１９１）。この参照されたビット領域は、ＩＰ識別子ビット列ｐ１-１の先頭から３番目のビット領域である（符号ＡＲ３ｉ参照）。なお、先頭のビット領域（符号ｐ１-１参照）は、０番目のビット領域である。この３番目のビット領域には、第１の情報（例えば、"１"）が記憶されている。すなわち、取得パケットのＩＰ識別子は重複している。
【０１７９】
重複判定部１４は、参照したビット領域に第１の情報（例えば、"１"）が記憶済みと判定する（Ｓ１９２/ＹＥＳ）。
【０１８０】
次いで、重複判定部１４は、図１２の記憶位置情報テーブルＴ３を参照して、取得パケットのセッション識別子"１"により識別されるチェックサムビット列ｐ１-２を特定する（Ｓ２０１）。そして、重複判定部１４は、取得したチェックサム"５"に対応する、特定ビット列のビット領域を参照する（Ｓ２０１）。この参照されたビット領域は、チェックサムビット列ｐ１-２の先頭から５番目のビット領域である（符号ＡＲ３ｃ参照）。なお、先頭のビット領域（符号ｐ１-２参照）は、０番目のビット領域である。この５番目のビット領域には、第２の情報（例えば、"１"）が記憶されている。すなわち、取得パケットのチェックサムは重複している。
【０１８１】
重複判定部１４は、参照したビット領域に第２の情報（例えば、"１"）が記憶済みと判定する（Ｓ２０２/ＹＥＳ）。
【０１８２】
重複判定部１４は、取得パケットのＩＰ識別子、チェックサムは両方重複していると判定し（Ｓ２１/ＹＥＳ）、削除部１６は、メモリ１０２に記憶されたパケットを削除する（Ｓ２２）。次いで、情報管理部１３は、パケット情報を削除する(Ｓ２４)。そして、図１３のＳ１１に戻る。以上の処理により、重複判定部１４は、取得パケットを重複パケットとして検出する。
【０１８３】
次いで、取得部１１は、パケットを取得する（Ｓ１１/ＹＥＳ）。以後のＳ１８までの処理は、本具体例において、説明した処理と同じ処理なので、その説明を省略する。
【０１８４】
情報管理部１３は、例えば、取得パケットのＩＰヘッダに含まれるＩＰ識別子(例えば、"７")を取得し、取得パケットのＴＣＰヘッダに含まれるチェックサム（例えば、"２"）を取得する（Ｓ１８）。
【０１８５】
重複判定部１４は、図１２の記憶位置情報テーブルＴ３を参照して、取得パケットのセッション識別子"１"により識別されるＩＰ識別子ビット列ｐ１-１を特定する（Ｓ１９１）。そして、重複判定部１４は、取得したＩＰ識別子"７"に対応する、特定ビット列のビット領域を参照する（Ｓ１９１）。この参照されたビット領域は、ＩＰ識別子ビット列ｐ１-１の先頭から７番目のビット領域である（符号ＡＲ４ｉ参照）。この７番目のビット領域には、第１の情報（例えば、"１"）が記憶されていない。すなわち、取得パケットのＩＰ識別子は重複していない。
【０１８６】
重複判定部１４は、参照したビット領域に第１の情報（例えば、"１"）が記憶されていないと判定する（Ｓ１９２/ＮＯ）。重複判定部１４は、参照したビット領域に第１の情報(例えば、"１")を記憶する。
【０１８７】
次いで、重複判定部１４は、図１２の記憶位置情報テーブルＴ３を参照して、取得パケットのセッション識別子"１"により識別されるチェックサムビット列ｐ１-２を特定する（Ｓ２０１）。そして、重複判定部１４は、取得したチェックサム"５"に対応する、特定ビット列のビット領域を参照する（Ｓ２０１）。この参照されたビット領域は、チェックサムビット列ｐ１-２の先頭から２番目のビット領域である（符号ＡＲ４ｃ参照）。この２番目のビット領域には、第２の情報（例えば、"１"）が記憶されていない。すなわち、取得パケットのチェックサムは重複していない。
【０１８８】
重複判定部１４は、参照したビット領域に第２の情報（例えば、"１"）が記憶されていないと判定する（Ｓ２０２/ＮＯ）。重複判定部１４は、参照したビット領域に第２の情報(例えば、"１")を記憶する。
【０１８９】
重複判定部１４は、取得パケットのＩＰ識別子、チェックサムは両方重複していないと判定し（Ｓ２１/ＮＯ）、転送部１５は、メモリ１０２に記憶された第２のパケットを転送する（Ｓ２３）。次いで、情報管理部１３は、パケット情報を削除する(Ｓ２４)。そして、図１３のＳ１１に戻る。
【０１９０】
以上、本実施の形態によれば、図７で説明したように、処理負荷が少なく、高精度な重複パケットの検出処理(すなわち、重複判定)を実行できる。
【０１９１】
［第２の実施の形態］
第１の実施の形態では、１組のＩＰ識別子ビット列とチェックサムビット列とを利用して、パケットの重複判定を行っている。しかし、複数の組のＩＰ識別子ビット列とチェックサムビット列とを利用してパケットの重複判定を行えば、よりパケットの重複判定の精度が向上する。
【０１９２】
図７を用いて、パケットの重複判定の精度の向上を説明する。取得部１１は、図７で説明したように、ＩＰ識別子"４"とチェックサム"１"とを含む第１のパケットを取得し、ＩＰ識別子"１１"とチェックサム"１７"とを含む第２のパケットを取得する。
【０１９３】
情報管理部１３は、図７で説明したように、各ＩＰ識別子"４"、"１１"に対応するＩＰ識別子ビット列Ｐ-１のビット領域に"１"を記憶する(図７の符号ＡＲ１ｉ、ＡＲ２ｉ参照)。そして、情報管理部１３は、図７で説明したように、各チェックサム"１"、"１７に対応するチェックサムビット列Ｐ-２のビット領域に"１"を記憶する(図７の符号ＡＲ１ｃ、ＡＲ２ｃ参照)。
【０１９４】
ここで、取得部１１が、ＩＰ識別子"４"とチェックサム"１７"とを含む第３のパケットを取得したと想定する。この第３のパケットは、取得部１１が初めて取得したパケットであり、重複パケットではない。
【０１９５】
重複判定部１４は、第３のパケットのＩＰ識別子"４"に対応するＩＰ識別子ビット列Ｐ-１のビット領域は、既に"１"が記憶されている(図７の符号ＡＲ１ｉ参照)。そして、第３のパケットのチェックサム"１７"に対応するチェックサムビット列Ｐ-２のビット領域は、既に"１"が記憶されている(図７の符号ＡＲ２ｃ参照)。従って、重複判定部１４は、第３のパケットは重複パケットであると判定する。そして、削除部１６は、第３のパケットを削除する。第３のパケットは、前記したように重複パケットではない。かかる削除処理が実行される原因の一つは、１組のＩＰ識別子ビット列とチェックサムビット列とを利用して、パケットの重複判定を行うことにある。
【０１９６】
ここで、ランダムにＩＰ識別子が作成されても、短い期間(例えば、１０ｍｓ(ｍｓはミリ秒の略語))内では、確率的に同じＩＰ識別子が作成される可能性が低い点を考慮する。重複パケット検出装置は、前記した短い期間が経過する度に、ＩＰ識別子ビット列とチェックサムビット列とを作成する。そして、重複パケット検出装置は、パケットのＩＰ識別子に対応する第１の情報を、直近に作成したＩＰ識別子ビット列に記憶する。また、重複パケット検出装置は、パケットのチェックサムに対応する第２の情報を、直近に作成したチェックサムビット列に記憶する。かかる記憶により、前記した削除処理が実行される可能性が低くなる。
【０１９７】
そして、重複判定部１４は、複数のビット列組の各々のＩＰ識別子ビット列とチェックサムビット列とを参照して、取得部１１が取得したパケットの重複判定を行う。以下、第２の実施の形態についてより詳しく説明する。
【０１９８】
(複数のビット列組の作成)
情報管理部１３は、所定のタイミング毎に、ＩＰ識別子ビット列とチェックサムビット列とを含むビット列組をメモリ１０２に確保し、さらに、このビット列組の有効時刻をメモリ１０２に記憶する。情報管理部１３は、有効時間を超過したビット列組をメモリ１０２から削除する。
【０１９９】
(重複パケットの検出処理)
重複判定部１４は、重複判定において、以下の処理を実行する。すなわち、重複判定部１４は、メモリ１０２に確保した複数のビット列組の中から直近に確保した第１のビット列組を選択する。
【０２００】
重複判定部１４は、取得パケットの識別子に対応する、第１のビット列組のＩＰ識別子ビット列の第３のビット領域に、第１の情報が記憶されている場合、取得パケットの識別子に対応する第１の情報がメモリ１０２に記憶されていると判定する。さらに、重複判定部１４は、取得パケットのチェックサムに対応する、第１のビット列組のチェックサムビット列の第４のビット領域に、第２の情報が記憶されている場合、取得パケットのチェックサムに対応する第２の情報がメモリ１０２に記憶されていると判定する。なお、第１、第２の情報は、例えば"１"である。
【０２０１】
情報管理部１３は、第１の情報が第３のビット領域に記憶されていない場合、第３のビット領域に第１の情報を記憶する。そして、情報管理部１３は、第２の情報が第４のビット領域に記憶されていない場合、第４のビット領域に第２の情報を記憶する。
【０２０２】
削除部１６は、第１の情報が第３のビット領域に記憶され、かつ、第２の情報が第４のビット領域に記憶されている場合、取得パケットを削除する。
【０２０３】
重複判定部１４は、第１の情報が第３のビット領域に記憶されていない場合、または、第２の情報が第４のビット領域に記憶されていない場合、メモリ１０２に確保した複数のビット列組の中から何れか１の未選択の第２のビット列組を選択する。
【０２０４】
重複判定部１４は、第１の状態を満たし、かつ、第２の状態を満たすか判定する。第１の状態は、取得パケットの識別子に対応する、第２のビット列組のＩＰ識別子ビット列のビット領域に第１の情報が記憶されている状態である。第２の状態は、取得パケットのチェックサムに対応する、ビット列組のチェックサムビット列のビット領域に第２の情報が記憶されている状態である。
【０２０５】
重複判定部１４が、第１の状態を満たし、かつ、第２の状態を満たすと判定すると、削除部１６は、取得パケットを削除する。
【０２０６】
(情報格納領域)
次に、本実施の形態における重複パケットの検出処理を図１７〜図２８を参照して詳細に説明する。
【０２０７】
図１７は、第２の実施の形態において、図４の情報格納領域ＩＲに各種情報が記憶されている状態を模式的に示す図である。図１７は、図８に、リスト情報ＩＦ５を追加した図である。
【０２０８】
図１８は、図１７のリスト情報ＩＦ４を説明する図である。リスト情報は、セッションに対応する複数のビット列組を管理する情報の記憶位置を示す情報である。リスト情報は、図１８に示すテーブル形式でメモリ１０２に記憶されている。リスト情報テーブルＴ４が、リスト情報ＩＦ５としてメモリ１０２に記憶されている状態を図１７の"リスト情報：Ｔ４"で模式的に示す。
【０２０９】
リスト情報テーブルＴ４は、セッション識別子欄と、管理リストアドレス欄とを有する。管理リストアドレスは、ビット列組管理リストの先頭アドレスである。ビット列組管理リストは、メモリ１０２に記憶されている。ビット列組管理リストは、セッション識別子により識別されるセッションに対応して作成されたビット列組を管理するリストである。リスト情報テーブルＴ４は、セッション識別子に対応して、ビット列組管理リストの先頭アドレスを記憶する。
【０２１０】
情報管理部１３は、新たなセッションが開始されると、このセッションを識別するセッション識別子と、新たなセッションのビット列組を管理するためのビット列組管理リストを作成する。
【０２１１】
(複数のビット列組の作成、複数のビット列組の管理の具体例)
図１９は、ビット列組管理リストを説明する第１の図である。ビット列組管理リストｐ１-ｌｉｓｔは、、複数のサブリスト(ｌｉｓｔ１-１〜ｌｉｓｔ１-３)を管理する。なお、サブリストにおいて、空白のセルには、情報が記憶されていない。
【０２１２】
ビット列組管理リストｐ１-ｌｉｓｔは、最新ビット列組アドレスと、最古ビット列組アドレスとを記憶する。最新ビット列組アドレスは、現時点でビット列組管理リストｐ１-ｌｉｓｔにより管理される複数のビット列組の中で、最も新しく作成されたビット列組を管理するサブリストの先頭アドレスである。図１９では、ビット列組管理リストｐ１-ｌｉｓｔは、最新ビット列組アドレスを"ｌｉｓｔ１-３"（点線矢印参照）として記憶している。最古ビット列組アドレスは、現時点でビット列組管理リストｐ１-ｌｉｓｔにより管理される複数のビット列組の中で、最も古く作成されたビット列組を管理するサブリストの先頭アドレスである。図１９では、ビット列組管理リストｐ１-ｌｉｓｔは、最古ビット列組アドレスを"ｌｉｓｔ１-１"（一点鎖線矢印参照）として記憶している。
【０２１３】
複数のサブリスト(ｌｉｓｔ１-１〜ｌｉｓｔ１-３)は、それぞれ、ＩＰ識別子ビット列アドレスと、チェックサムビット列アドレスと、前ビット列組のサブリストのアドレスと、後ビット列組のサブリストのアドレスと、有効時刻が記憶されるリストである。
【０２１４】
サブリストにおける前ビット列組のサブリストのアドレスは、このサブリストが作成されたタイミングの直前に作成されたサブリストの先頭アドレスである。また、サブリストにおける後ビット列組のサブリストのアドレスは、このサブリストが作成されたタイミングの直後に作成されたサブリストの先頭アドレスである。複数のサブリスト(ｌｉｓｔ１-１〜ｌｉｓｔ１-３)の内容については、後記する。
【０２１５】
(複数のビット列組の作成)
図２０は、複数のビット列組の作成を説明する第１の図である。第１のビット列組ｐｐ１-１は、ＩＰ識別子ビット列ｐ１-１-１と、チェックサムビット列ｐ１-１-１とを含む。第２のビット列組ｐｐ１-２は、ＩＰ識別子ビット列ｐ１-２-１と、チェックサムビット列ｐ１-２-２とを含む。第３のビット列組ｐｐ１-３は、ＩＰ識別子ビット列ｐ１-３-１と、チェックサムビット列ｐ１-３-２とを含む。
【０２１６】
情報管理部１３は、この作成において、所定の間隔(例えば、１０ｍｓ)毎に、新たなビット列組を作成し、メモリ１０２に記憶する。そして、情報管理部１３は、作成したビット列組に対して有効時間を設定する。情報管理部１３は、この有効時間が経過したビット列組をメモリ１０２から削除し、この削除に対応して新たなビット列組を作成しメモリ１０２に記憶する。
【０２１７】
図２０の例では、最新のビット列組が、第３のビット列組ｐｐ１-３であり、第３のビット列組ｐｐ１-３の１０ｍｓ前に作成(図２０の"１０ｍｓ前に作成"参照)されたビット列組が第２のビット列組ｐｐ１-２である。また、第２のビット列組ｐｐ１-２の１０ｍｓ前に作成(図２０の"１０ｍｓ前に作成"参照)されたビット列組が第１のビット列組ｐｐ１-１である。この第１のビット列組ｐｐ１-１が、最古のビット列組である。
【０２１８】
(ビット列組の管理)
図１９、図２０を参照して、ビット列組の管理について説明する。装置間において新たなセッションが実行された後、情報管理部１３は、第１の実施の形態で説明したように、１つのビット列組(図２０の例では、第１のビット列組ｐｐ１-１)を作成しメモリ１０２に記憶する(図１３のＳ１６、Ｓ１７)。さらに、情報管理部１３は、図１２の位置情報テーブルＴ３に、作成したビット列組におけるＩＰ識別子ビット列とチェックサムビット列アドレスを記憶する。次に、情報管理部１３は、図１９のビット列組管理リストｐ１-ｌｉｓｔを作成しメモリ１０２に記憶する。
【０２１９】
そして、情報管理部１３は、作成したビット列組を管理するためのサブリストを作成しメモリ１０２に記憶する。以下の説明では、ビット列組を管理するためのサブリストを、ビット列組のサブリストと適宜記す。
【０２２０】
情報管理部１３は、第１のビット列組ｐｐ１-１を作成すると、第１のビット列組ｐｐ１-１のサブリストｌｉｓｔ１-１を作成する。
【０２２１】
情報管理部１３は、第１のサブリストｌｉｓｔ１-１に、管理対象のビット列組に含まれる、ＩＰ識別子ビット列アドレス"ｐ１-１-１"とチェックサムビット列アドレス"ｐ１-１-２"を記憶する。なお、以下の説明では、図２０に示した、ＩＰ識別子ビット列の符号、チェックサムビット列の符号が、それぞれ、ＩＰ識別子ビット列アドレス、チェックサムビット列アドレスであるとする。
【０２２２】
次に、情報管理部１３は、作成したビット列組の有効時刻を、サブリストに記憶する。情報管理部１３は、第１のサブリストｌｉｓｔ１-１に、有効時刻"１０:０１-０.０００"を記憶する。なお、有効時刻の"Ｈ:Ｍ"(Ｈは０〜２４の整数、Ｍは０から５９の整数)の"Ｈ"は時間を示し、"Ｍ"は、分を示す。また、有効時刻の"-"(ハイフォン)以下は、秒を示す。
【０２２３】
情報管理部１３は、図１９のビット列組管理リストｐ１-ｌｉｓｔの最古ビット列組アドレス、最新ビット列組アドレスとして、ビット列組ｐｐ１-１のサブリストｌｉｓｔ１-１の先頭アドレス"ｌｉｓｔ１-１"をビット列組管理リストｐ１-ｌｉｓｔに記憶する。
【０２２４】
(複数のビット列組の作成、複数のビット列組の管理)
新たなセッションが開始され、このセッションに対応する最初のビット列組が作成されると、このセッションに対応して、複数のビット列組の作成、および、複数のビット列組の管理が実行される。複数のビット列組の作成、複数のビット列組の管理について、図２１のフローチャートを参照しながら説明する。図２１は、複数のビット列組の作成、複数のビット列組の管理を説明するフローチャートである。
【０２２５】
情報管理部１３は、更新タイミングか判定する(Ｓ１０１)。この更新タイミングは、例えば、１０ｍｓ間隔のタイミングである。更新タイミングでない場合(Ｓ１０１/ＮＯ)、更新タイミングの判定処理を継続する(Ｓ１０１/ＮＯ)。更新タイミングの場合(Ｓ１０１/ＹＥＳ)、情報管理部１３は、図１８のリスト情報テーブルＴ４を参照し未選択のセッションを１つ選択する(Ｓ１０２)。ここで、未選択のセッションとは、図２１のフローチャートにおいて、更新タイミング毎において選択されていないセッションである。
【０２２６】
情報管理部１３は、選択したセッションに対応する新しいビット列組を作成しメモリ１０２に記憶する(Ｓ１０３)。情報管理部１３は、作成した新しいビット列組を最新のビット列組に設定する(Ｓ１０４)。情報管理部１３は、有効期間を超過したビット列組を削除する(Ｓ１０５)。
【０２２７】
情報管理部１３は、ビット列組管理リストとサブリストの更新を行い、作成したビット列組のサブリストを作成する(Ｓ１０６)。情報管理部１３は、全てのセッションを選択したか判定する(Ｓ１０７)。
【０２２８】
全てのセッションを選択した場合(Ｓ１０７/ＹＥＳ)、Ｓ１０１に移る。全てのセッションを選択していない場合(Ｓ１０７/ＮＯ)、Ｓ１０２に移る。
【０２２９】
[複数のビット列組の作成、複数のビット列組の管理の具体例]
(第２のビット列組ｐｐ１-２の作成)
情報管理部１３は、第１のビット列組ｐｐ１-１の作成と並行して、図２１で説明した処理を実行する。情報管理部１３は、更新タイミングと判定すると(Ｓ１０１/ＹＥＳ)、図１８のリスト情報テーブルＴ４のセッション識別子欄に記憶されたセッション識別子の中から未選択の１つのセッション識別子を選択する(Ｓ１０２)。以下の説明では、情報管理部１３は、例えば、セッション識別子"１"を選択する場合を例示する。
【０２３０】
情報管理部１３は、新しい第２のビット列組ｐｐ１-２(図２０参照)を作成しメモリ１０２に記憶し(Ｓ１０３)、第２のビット列組ｐｐ１-２を最新のビット列組に設定する(Ｓ１０４)。情報管理部１３は、有効時刻を超過したビット列組がある場合、このビット列を削除する。ここで、現時点では、有効時刻を超過したビット列組がないとする。
【０２３１】
情報管理部１３は、第２のビット列組ｐｐ１-２を作成すると、第２のビット列組ｐｐ１-２のサブリストｌｉｓｔ１-２を作成する(Ｓ１０６)。情報管理部１３は、第２のサブリストｌｉｓｔ１-２に、作成したＩＰ識別子ビット列のアドレス"ｐ１-２-１"と、作成したチェックサムビット列のアドレス"ｐ１-２-２"と、前ビット列組のサブリストのアドレス"ｌｉｓｔ１-１"とを記憶する(Ｓ１０６)。さらに、情報管理部１３は、第２のサブリストｌｉｓｔ１-２に、有効時刻"１０:０１-０.０１０"を記憶する(Ｓ１０６)。
【０２３２】
そして、情報管理部１３は、第１のサブリストｌｉｓｔ１-１に、後ビット列組のサブリストのアドレス"ｌｉｓｔ１-２"を記憶する(Ｓ１０６)。
【０２３３】
そして、情報管理部１３は、図１９のビット列組管理リストｐ１-ｌｉｓｔの最古ビット列組アドレスとして、最も古いビット列組ｐｐ１-１のサブリストｌｉｓｔ１-１の先頭アドレス"ｌｉｓｔ１-１"をビット列組管理リストｐ１-ｌｉｓｔに記憶する(Ｓ１０６)。さらに、情報管理部１３は、図１９のビット列組管理リストｐ１-ｌｉｓｔの最新ビット列組アドレスとして、最も新しいビット列組ｐｐ１-２のサブリストｌｉｓｔ１-２の先頭アドレス"ｌｉｓｔ１-２"をビット列組管理リストｐ１-ｌｉｓｔに記憶する(Ｓ１０６)。
【０２３４】
以下の説明では、説明の便宜のため、セッション識別子"１"が図１８のリスト情報テーブルＴ４に記憶されているだけであるとする。従って、情報管理部１３は、全セッションを選択したと判定し(Ｓ１０７/ＹＥＳ)、Ｓ１０１に移る。
【０２３５】
(第３のビット列組ｐｐ１-３の作成)
情報管理部１３は、更新タイミングと判定すると(Ｓ１０１/ＹＥＳ)、図１８のリスト情報テーブルＴ４のセッション識別子欄に記憶されたセッション識別子の中から未選択の１つのセッション識別子"１"を選択する(Ｓ１０２)。
【０２３６】
情報管理部１３は、新しい第３のビット列組ｐｐ１-３(図２０参照)を作成しメモリ１０２に記憶し(Ｓ１０３)、第３のビット列組ｐｐ１-３を最新のビット列組に設定する(Ｓ１０４)。情報管理部１３は、有効時刻を超過したビット列組がある場合、このビット列を削除する。ここで、現時点では、有効時刻を超過したビット列組がないとする。
【０２３７】
情報管理部１３は、第３のビット列組ｐｐ１-３を作成すると、第３のビット列組ｐｐ１-３のサブリストｌｉｓｔ１-３を作成する(Ｓ１０６)。情報管理部１３は、第３のサブリストｌｉｓｔ１-３に、作成したＩＰ識別子ビット列のアドレス"ｐ１-３-１"と、作成したチェックサムビット列のアドレス"ｐ１-３-２"と、前ビット列組のサブリストのアドレス"ｌｉｓｔ１-２"とを記憶する(Ｓ１０６)。さらに、情報管理部１３は、第３のサブリストｌｉｓｔ１-３に、有効時刻"１０:０１-０.０２０"を記憶する(Ｓ１０６)。
【０２３８】
そして、情報管理部１３は、第２のサブリストｌｉｓｔ１-２に、後ビット列組のサブリストのアドレス"ｌｉｓｔ１-３"を記憶する(Ｓ１０６)。
【０２３９】
そして、情報管理部１３は、図１９のビット列組管理リストｐ１-ｌｉｓｔの最新ビット列組アドレスとして、最も新しいビット列組ｐｐ１-３のサブリストｌｉｓｔ１-３の先頭アドレス"ｌｉｓｔ１-３"をビット列組管理リストｐ１-ｌｉｓｔに記憶する(Ｓ１０６)。そして、情報管理部１３は、全セッションを選択したと判定し(Ｓ１０７/ＹＥＳ)、Ｓ１０１に移る。
【０２４０】
(第４のビット列組ｐｐ１-４の作成)
次に、有効時刻を超過したビット列組の削除について、図２２、図２３を参照して説明する。図２２は、ビット列組管理リストを説明する第２の図である。図２３は、複数のビット列組の作成を説明する第２の図である。
【０２４１】
情報管理部１３は、更新タイミングと判定すると(Ｓ１０１/ＹＥＳ)、図１８のリスト情報テーブルＴ４のセッション識別子欄に記憶されたセッション識別子の中から未選択の１つのセッション識別子"１"を選択する(Ｓ１０２)。
【０２４２】
情報管理部１３は、新しい第４のビット列組ｐｐ１-４(図２５参照)を作成しメモリ１０２に記憶し(Ｓ１０３)、第４のビット列組ｐｐ１-４を最新のビット列組に設定する(Ｓ１０４)。情報管理部１３は、有効時刻を超過したビット列組がある場合、このビット列を削除する(Ｓ１０５)。
【０２４３】
現時点の時刻は、"１０：０１-０.００９"であり、有効時刻を超過したビット列組が第１のビット列組ｐｐ１-１であるとする。従って、情報管理部１３は、第１のビット列組ｐｐ１-１を削除する(図２３のばつ印の"削除"参照)。
【０２４４】
情報管理部１３は、第４のビット列組ｐｐ１-４を作成すると、第４のビット列組ｐｐ１-４の第４のサブリストｌｉｓｔ１-４を作成する(Ｓ１０６)。情報管理部１３は、第４のサブリストｌｉｓｔ１-４に、作成したＩＰ識別子ビット列アドレス"ｐ１-４-１"と、作成したチェックサムビット列アドレス"ｐ１-４-２"と、前ビット列組のサブリストのアドレス"ｌｉｓｔ１-３"とを記憶する(Ｓ１０６)。さらに、情報管理部１３は、第４のサブリストｌｉｓｔ１-４に、有効時刻"１０:０１-０.０３０"を記憶する(Ｓ１０６)。
【０２４５】
そして、情報管理部１３は、第３のサブリストｌｉｓｔ１-３に、後ビット列組のサブリストのアドレス"ｌｉｓｔ１-４"を記憶する(Ｓ１０６)。そして、情報管理部１３は、第２のサブリストｌｉｓｔ１-２から、削除した第１のビット列組ｐｐ１-１のサブリストのアドレスである前ビット列組のサブリストのアドレス"ｌｉｓｔ１-１"を消去する(Ｓ１０６)。
【０２４６】
そして、情報管理部１３は、図２２のビット列組管理リストｐ１-ｌｉｓｔの最古ビット列組アドレスとして、最も古いビット列組ｐｐ１-２のサブリストｌｉｓｔ１-２の先頭アドレスをビット列組管理リストｐ１-ｌｉｓｔに記憶する(Ｓ１０６)。この先頭アドレスは、"ｌｉｓｔ１-２"（一点鎖線矢印参照）である。
【０２４７】
情報管理部１３は、図２２のビット列組管理リストｐ１-ｌｉｓｔの最新ビット列組アドレスとして、最も新しいビット列組ｐｐ１-４のサブリストｌｉｓｔ１-４の先頭アドレスをビット列組管理リストｐ１-ｌｉｓｔに記憶する(Ｓ１０６)。この先頭アドレスは、"ｌｉｓｔ１-４"(点線矢印参照)である。
【０２４８】
情報管理部１３は、全セッションを選択したと判定し(Ｓ１０７/ＹＥＳ)、Ｓ１０１に移る。
【０２４９】
以上説明したように、情報管理部１３は、有効時刻を経過したビット列組と、このビット列組のサブリストとを削除する。そして、情報管理部１３は、作成済みのサブリストにおける、前ビット列組のサブリストのアドレス、このサブリストの後ビット列組のサブリストのアドレスを適宜更新する。
【０２５０】
なお、情報管理部１３は、第１のサブリストｌｉｓｔ１-１の作成作成時には、直前および直後に作成されたサブリストは未だ無いので、前ビット列組のサブリストのアドレス、後ビット列組のサブリストのアドレスの更新を行わない。また、情報管理部１３は、ビット列組を作成する度に、ビット列組管理リストｐ１-ｌｉｓｔの最新ビット列組アドレス、最古ビット列組アドレスを更新する。
【０２５１】
(重複パケット判定)
次に、重複パケット判定について説明する。第２の実施の形態の重複判定部１４は、最新のビット列組に対して、取得パケットの管理情報を記憶する。このように、最新のビット列組に対して、取得パケットの管理情報を記憶することで、未取得のパケットにもかかわらず重複パケットとして削除される事態(第２の実施の形態の説明の冒頭部参照)を回避できる可能性を高くする。
【０２５２】
また、重複判定部１４は、取得パケットの重複判定を行う場合、同一セッションにおいて作成された全てのビット列組のＩＰ識別子ビット列、チェックサムビット列と、取得パケットのＩＰ識別子、チェックサムとを照合する。この照合により、取得パケットが重複パケットか否かを高精度に判定できる。
【０２５３】
図２０、図２３を参照して、前記した事態が回避できる可能性が高くなること、および、前記した高精度に判定できる理由について説明する。ここで、図２０の説明において、第１のビット列組ｐｐ１-１が最新のビット列組であるとする。そして、第１のビット列組ｐｐ１-１のビット領域には全て"０"が記憶されているとする。
【０２５４】
そして、第２の実施の形態の説明の冒頭部で説明したように、取得部１１は、ＩＰ識別子"４"とチェックサム"１"とを含む第１のパケットを取得し、ＩＰ識別子"１１"とチェックサム"１７"とを含む第２のパケットを取得する。
【０２５５】
すると、情報管理部１３は、各ＩＰ識別子"４"、"１１"に対応するＩＰ識別子ビット列ｐ１-１-１のビット領域に"１"を記憶する(図２０の符号ＡＲ１ｉ、ＡＲ２ｉ参照)。情報管理部１３は、各チェックサム"１"、"１７に対応するチェックサムビット列ｐ１-１-２のビット領域に"１"を記憶する(図２０の符号ＡＲ１ｃ、ＡＲ２ｃ参照)。その後、取得部１１が複数のパケットを取得する。
【０２５６】
その後、時間が経過し、第３のビット列組ｐｐ１-３が最新のビット列組となる。なお、第３のビット列組ｐｐ１-３のビット領域には全て"０"が記憶されているとする。そして、取得部１１が、ＩＰ識別子"４"とチェックサム"１７"とを含む第３のパケットを取得する。
【０２５７】
このパケットの取得時には、現時点では、第１のビット列組ｐｐ１-１の有効時刻が経過しているとする。従って、情報管理部１３は、図２３で説明したように、第４のビット列組ｐｐ１-４を作成し、第１のビット列組ｐｐ１-１を削除する。
【０２５８】
重複判定部１４は、最新のビット列組ｐｐ１-４の各々のＩＰ識別子ビット列とチェックサムビット列とを参照して、取得パケットの重複判定を行う。ここでは、情報管理部１３は、取得パケットのＩＰ識別子"４"に対応する、最新のビット列組ｐｐ１−４に含まれるＩＰ識別子ビット列ｐ１-４-１のビット領域が"０"である。そして、取得パケットのチェックサム"１７"に対応する、最新のビット列組ｐｐ１−４に含まれるチェックサムビット列ｐ１-４-２のビット領域が"０"である。従って、重複判定部１４は、取得パケットを重複パケットと判定しない。
【０２５９】
情報管理部１３は、取得パケットのＩＰ識別子"４"に対応する、最新のビット列組ｐｐ１−４に含まれるＩＰ識別子ビット列ｐ１-４-１のビット領域が"０"なので、このビット領域に"１"を記憶する。情報管理部１３は、取得パケットのチェックサム"１７"に対応する、最新のビット列組ｐｐ１−４に含まれるチェックサムビット列ｐ１-４-２のビット領域が"０"なので、このビット領域に"１"を記憶する。
【０２６０】
そして、重複判定部１４は、最新のビット列組以外のビット列組（ｐｐ１−２、ｐｐ１−３）の各々のＩＰ識別子ビット列とチェックサムビット列とを参照して、取得パケットの重複判定を行う。この重複判定では、第１のビット列組ｐｐ−１が削除されているので、未取得のパケットにもかかわらず重複パケットとして削除される事態(第２の実施の形態の説明の冒頭部参照)を回避できる。
【０２６１】
以上説明したように、最新のビット列組に対して、取得パケットの管理情報を記憶することで、未取得のパケットにもかかわらず重複パケットとして削除される事態(第２の実施の形態の説明の冒頭部参照)を回避できる可能性が高くなる。
【０２６２】
[重複パケット検出の流れ]
次に、第２の実施の形態の詳細について説明する。図２４〜図２８は、第２の実施の形態における重複パケット検出処理の詳細を説明する第１〜第５のフローチャートである。
【０２６３】
図２４のフローチャートは、図１３のフローチャートのＳ１７とＳ１８との間に、Ｓ３０を追加したフローチャートである。以下のフローチャートの説明では、同じセッションにおけるパケットについて説明している。
【０２６４】
図２４において、Ｓ１１、Ｓ１２、Ｓ１３、Ｓ１４/ＮＯの処理が順次実行されると、情報管理部１３は、新たなセッションのＩＰ識別子ビット列を確保し(Ｓ１６)、チェックサムビット列を確保する（Ｓ１７）。すなわち、情報管理部１３は、新たにビット列組を生成する(Ｓ１６、Ｓ１７)。
【０２６５】
Ｓ１６で確保されたＩＰ識別子ビット列は、例えば、図２０の第１のビット列組ｐｐ１-１のＩＰ識別子ビット列ｐ１-１-１である。そして、Ｓ１７で確保されたチェックサムビット列は、図２０のチェックサムビット列ｐ１-１-２である。
【０２６６】
情報管理部１３は、図１９、図２０で説明した、ビット列組管理リストと、作成したビット列組のサブリストを作成し、図１８のリスト情報テーブルＴ４を作成または更新する(Ｓ３０)。
【０２６７】
図１９の例では、情報管理部１３は、ビット列組管理リストｐ１-ｌｉｓｔを作成する。なお、この作成時には、ビット列組管理リストｐ１-ｌｉｓｔの最新ビット列組アドレスと最古ビット列組アドレスとは"ｌｉｓｔ１-１"である。また、情報管理部１３は、図１９の例では、第１のサブリストｌｉｓｔ１-１を作成する。なお、この作成時には、第１のビット列組ｐｐ１-１の後ビット列組のサブリストのアドレスは空白である。
【０２６８】
さらに、情報管理部１３は、取得パケットのセッション識別子と、作成したビット列組管理リストの先頭アドレスとを対応付けて、図１８のリスト情報テーブルＴ４に記憶する。以下の説明では、第１の実施の形態で説明したように、セッション識別子"１"で識別されるセッションにおいて送受信されるパケットについて説明する。図１８の例では、情報管理部１３は、セッション識別子欄にセッション識別子である"１"を記憶し、セッション識別子"１"を記憶した行とビット列組管理リストアドレス欄とが交わるセルにビット列組管理リストｐ１-ｌｉｓｔのアドレス"ｐ１-ｌｉｓｔ"を記憶する。
【０２６９】
次いで、図２４のＳ１８が実行され、図２５のＳ３１に移る。図２５のフローチャートは、図１４のフローチャートのＳ１９、Ｓ２０をＳ３１に置き換え、Ｓ２１をＳ３２に置き換えたフローチャートである。
【０２７０】
重複判定部１４は、ビット列組に対する重複判定、記憶処理を実行する(Ｓ３１)。図２６を参照して、図２５のＳ３１の処理を詳細に説明する。
【０２７１】
(最新のビット列組の選択)
重複判定部１４は、最新のビット列組を選択する(Ｓ３１１)。最新のビット列組は、情報管理部１３が直近に作成したビット列組である。前記の例は、最新のビット列組は、図２０の第１のビット列組ｐｐ１-１である。
【０２７２】
(ＩＰ識別子の重複判定、記憶)
重複判定部１４は、取得パケットのＩＰ識別子と、Ｓ３１１または後記するＳ３１７で選択したビット列組のＩＰ識別子ビット列とを照合して、ＩＰ識別子の重複判定、記憶を実行する(Ｓ３１２)。Ｓ３１１または後記するＳ３１７で選択したビット列組を選択中のビット列組と適宜記す。図２７を参照して、Ｓ３１２の処理を詳細に説明する。
【０２７３】
重複判定部１４は、取得したＩＰ識別子に対応する、選択中のビット列組の管理情報を参照する(Ｓ３１２１)。具体的には、重複判定部１４は、選択中のビット列組を管理するサブリストのＩＰ識別子ビット列アドレスを特定して、このＩＰ識別子ビット列を特定する。前記の例では、重複判定部１４は、第１のビット列組ｐｐ１-１を管理する第１のサブリストｌｉｓｔ１-１に記憶されたＩＰ識別子ビット列アドレス"ｐ１-１-１"によりＩＰ識別子ビット列ｐ１-１-１を特定する。以下、特定されたＩＰ識別子ビット列を特定ＩＰ識別子ビット列と適宜記す。
【０２７４】
そして、重複判定部１４は、取得したＩＰ識別子に対応する、特定ＩＰ識別子ビット列のビット領域を参照する(Ｓ３１２１)。
【０２７５】
重複判定部１４は、取得したＩＰ識別子に対応する第１の情報(例えば、"１")がメモリ１０２に記憶されているか判定する（Ｓ３１２２）。具体的には、重複判定部１４は、参照したビット領域に第１の情報が記憶されているか判定する。
【０２７６】
第１の情報がメモリ１０２に記憶されていない場合(Ｓ３１２２/ＮＯ)、すなわち、参照したビット領域に第１の情報が記憶されていない場合、重複判定部１４は、Ｓ３１２３の処理を実行する。
【０２７７】
重複判定部１４は、選択中のビット列組が最新のビット列組か判定する(Ｓ３１２３)。選択中のビット列組が最新のビット列組の場合(Ｓ３１２３/ＹＥＳ)、情報管理部１３は、Ｓ３１２４の処理を実行する。情報管理部１３は、取得したＩＰ識別子に対応する第１の情報をメモリ１０２に記憶する(Ｓ３１２４)。具体的には、情報管理部１３は、参照したビット領域に第１の情報を記憶する。
【０２７８】
なお、Ｓ３１２２、Ｓ３１２４については、それぞれ、図１５で説明した、Ｓ１９２、Ｓ１９３と同様なので、具体的な説明を省略する。
【０２７９】
Ｓ３１２４が終了した場合や、Ｓ３１２２でＹＥＳ、または、Ｓ３１２３でＮＯと判定された場合、図２６のＳ３１３に移る。
【０２８０】
(チェックサムの重複判定、記憶)
重複判定部１４は、取得パケットのチェックサムとＳ３１１または後記するＳ３１７で選択したビット列組のチェックサムビット列とを照合して、チェックサムの重複判定、記憶を実行する(Ｓ３１３)。図２８を参照して、Ｓ３１３の処理を詳細に説明する。
【０２８１】
重複判定部１４は、取得したチェックサムに対応する、選択中のビット列組の管理情報を参照する(Ｓ３１３１)。具体的には、重複判定部１４は、選択中のビット列組を管理するサブリストのチェックサムビット列アドレスを特定して、このチェックサムビット列を特定する。前記の例では、重複判定部１４は、第１のビット列組ｐｐ１-１を管理する第１のサブリストｌｉｓｔ１-１に記憶されたチェックサムビット列アドレス"ｐ１-１-２"によりチェックサムビット列ｐ１-１-２を特定する。以下、特定されたチェックサムビット列を特定チェックサムビット列と適宜記す。
【０２８２】
そして、重複判定部１４は、取得したチェックサムに対応する、特定チェックサムビット列のビット領域を参照する(Ｓ３１３１)。
【０２８３】
重複判定部１４は、取得したチェックサムに対応する第２の情報(例えば、"１")がメモリ１０２に記憶されているか判定する（Ｓ３１３２）。具体的には、重複判定部１４は、参照したビット領域に第２の情報が記憶されているか判定する。
【０２８４】
第２の情報がメモリ１０２に記憶されていない場合(Ｓ３１３２/ＮＯ)、すなわち、参照したビット領域に第２の情報が記憶されていない場合、重複判定部１４は、Ｓ３１３３の処理を実行する。
【０２８５】
重複判定部１４は、選択中のビット列組が最新のビット列組か判定する(Ｓ３１３３)。選択中のビット列組が最新のビット列組の場合(Ｓ３１３３/ＹＥＳ)、情報管理部１３は、Ｓ３１３４の処理を実行する。情報管理部１３は、取得したチェックサムに対応する第２の情報をメモリ１０２に記憶する(Ｓ３１３４)。具体的には、情報管理部１３は、参照したビット領域に第２の情報を記憶する。
【０２８６】
なお、Ｓ３１３２、Ｓ３１３４については、それぞれ、図１６で説明した、Ｓ２０２、Ｓ２０３と同様なので、具体的な説明を省略する。
【０２８７】
Ｓ３１３４が終了した場合や、Ｓ３１３２でＹＥＳ、または、Ｓ３１３３でＮＯと判定された場合、図２６のＳ３１４に移る。
【０２８８】
(重複判定)
重複判定部１４は、同一組のＩＰ識別子、チェックサムが両方重複しているか判定する(Ｓ３１４)。同一組のＩＰ識別子、チェックサムが両方重複していることは、取得パケットが、過去に取得したパケットと同じパケット、すなわち重複パケットとあることを示す。
【０２８９】
なお、同一組のＩＰ識別子、チェックサムが両方重複するとは、以下の場合である。すなわち、選択中のビット列組のＩＰ識別子ビット列について図２７のＳ３１２２でＹＥＳと判定され、かつ、この選択中のビット列組のチェックサムビット列について図２８のＳ３１３２でＹＥＳと判定された場合である。
【０２９０】
重複判定部１４は、同一組のＩＰ識別子、チェックサムが両方重複していない場合(Ｓ３１４/ＮＯ)、Ｓ３１５の判定を行う。
【０２９１】
(他の管理ビット組の選択)
重複判定部１４は、選択中のビット列組以前のビット列組があるか判定する(Ｓ３１５)。前記例では、選択中のビット列組は、図２０の第１のビット列組ｐｐ１-１であり、現時点では、選択中のビット列組以前のビット列組はない。
【０２９２】
選択中のビット列組以前のビット列組がある場合(Ｓ３１５/ＹＥＳ)、重複判定部１４は、選択中のビット列組の一つ前のビット列組を選択する(Ｓ３１６)。選択中のビット列組の一つ前のビット列組とは、選択中のビット列組の直後に作成されたビット列組である。Ｓ３１６の終了後、Ｓ３１２に移る。
【０２９３】
同一組のＩＰ識別子、チェックサムが両方重複している場合(Ｓ３１４/ＹＥＳ)、または、選択中のビット列組以前のビット列組がない場合(Ｓ３１５/ＮＯ)、図２５のＳ３２に移る。
【０２９４】
(パケットの削除または転送)
重複判定部１４は、同一組のＩＰ識別子、チェックサムが両方重複しているか判定する(Ｓ３２（Ｓ３１４）)。このＳ３２の判定処理は、図２６のＳ３１４の判定処理と同じである。
【０２９５】
同一組のＩＰ識別子、チェックサムが両方重複していない場合(Ｓ３１４/ＮＯ)、転送部１５は、取得パケットをパケット解析装置ＡＤに転送する（Ｓ２３）。Ｓ２３の転送後、Ｓ２４の処理が実行され、図２４のＳ１１に戻る。同一組のＩＰ識別子、チェックサムが両方重複していていないことは、取得パケットは、重複パケットでないことを意味している。従って、転送部１５は、取得パケットをパケット解析装置ＡＤに転送している。
【０２９６】
同一組のＩＰ識別子、チェックサムが両方重複している場合(Ｓ３１４/ＹＥＳ)、削除部１６は、取得パケットを削除する（Ｓ２２）。同一組のＩＰ識別子、チェックサムが両方重複していることは、取得パケットは、重複パケットであることを意味している。従って、削除部１６は、取得パケットを削除している。
【０２９７】
以上、本実施の形態によれば、直近に作成した最新のＩＰ識別子ビット列とチェックサムビット列とに、取得パケットの管理情報を記憶する処理を実行する。前記したように、最新のビット列組に対して、取得パケットの管理情報を記憶することで、未取得のパケットにもかかわらず重複パケットとして削除される事態(第２の実施の形態の説明の冒頭部参照)を回避できる可能性が高くなる。その結果、高精度な重複判定を行うことができる。
【０２９８】
［第３の実施の形態］
第１、第２の実施の形態の重複パケット検出装置ＤＤは、パケットのＩＰ識別子がランダムに変動する通信(以下、ランダムＩＰ識別子の通信と適宜記す)において送受信されるパケットの重複判定を実行した。重複パケット検出装置ＤＤは、かかるランダムＩＰ識別子の重複判定の実行により、パケットのＩＰ識別子がシーケンシャルに増加する通信(以下、シーケンシャルＩＰ識別子の通信と適宜記す)において送受信されるパケットの重複判定もできる。
【０２９９】
しかし、重複パケット検出装置ＤＤが、シーケンシャルＩＰ識別子の通信において送受信されるパケットの重複判定を行う場合、第１、第２の実施の形態で説明したように、チェックサムを参照し、チェックサムの重複判定を行うことは無駄である。例えば、チェックサム用のビット列をメモリに確保する場合、この確保されるメモリ領域は、無駄になる。また、チェックサムの重複判定を行う処理が無駄になる。
【０３００】
そこで、第３の実施の形態においては、装置間で実行される通信が、ランダムＩＰ識別子の通信か、または、シーケンシャルＩＰ識別子の通信かを判定(以下、ランダム判定と適宜記す)する重複パケット検出装置ＤＤについて説明する。
【０３０１】
第３の実施の形態における重複パケット検出装置ＤＤは、新たにセッションが開始されると、取得パケットに含まれる識別子に基づき、取得パケットに含まれる識別子がランダムに変動するランダムＩＰ識別子か判定するランダム判定処理を行う。そして、ランダム判定部１７は、判定結果と取得パケットに含まれるセッションを特定する特定情報とを対応付けてメモリ１０２に記憶する。
【０３０２】
重複判定部１４は、取得パケットに含まれる識別子がランダムＩＰ識別子の場合、第１または第２の実施の形態で説明した、ＩＰ識別子およびチェックサムの重複判定を行い、重複パケットを検出する。
【０３０３】
一方、第３の実施の形態における重複パケット検出装置ＤＤは、取得パケットに含まれる識別子がランダムＩＰ識別子でない場合、前記した一方法を実行する。この一方法は、本実施の形態によれば、以下の処理である。すなわち、重複判定部１４は、取得パケットに含まれる識別子がランダムＩＰ識別子でない場合、パケットの取得に応じて、取得パケットに含まれるＩＰ識別子に対応する第１の情報(例えば、"１")がメモリ１０２に記憶されているか判定する。削除部１６は、第１の情報がメモリ１０２に記憶されている場合、取得パケットを削除する。情報管理部１３は、第１の情報がメモリ１０２に記憶されていない場合、第１の情報をメモリ１０２に記憶する。
【０３０４】
(ランダム判定)
図２９は、ランダム判定の方法を模式的に説明する図である。図２９(Ａ)は、シーケンシャルＩＰ識別子の通信におけるＩＰ識別子の変化を示した第１のグラフ図である。図２９(Ｂ)は、シーケンシャルＩＰ識別子の通信におけるＩＰ識別子の変化を示した第２のグラフ図である。図２９(Ｃ)は、ランダムＩＰ識別子の通信におけるＩＰ識別子の変化を示したグラフ図である。
【０３０５】
図２９(Ａ)〜図２９(Ｃ)のグラフ図において、横軸は、重複パケット検出装置ＤＤが取得したパケットの順序を示すパケット取得順を示す。また、図２９(Ａ)〜図２９(Ｃ)のグラフ図において、縦軸は、重複パケット検出装置ＤＤが取得したパケットのＩＰ識別子を示す。
【０３０６】
図２９(Ａ)の第１のグラフ図に示すように、シーケンシャルＩＰ識別子の通信における、パケットのＩＰ識別子は、パケットの取得順序に従って増加する。なお、この増加の詳細については、図３で説明した。
【０３０７】
重複パケット検出装置ＤＤは、同じセッションの通信において、数個のパケットのＩＰ識別子が順次増加する場合に、この通信をシーケンシャルＩＰ識別子の通信と判定する。
【０３０８】
しかし、シーケンシャルＩＰ識別子の通信においても、パケットの取得順序に従って増加しない場合がある。このように、パケットの取得順序に従って増加しないのは、いわゆるパケットの順序反転が発生するからである。
【０３０９】
図２で説明したように、第１のサーバＳＶＲ１は、第１のパケットＰＣＫ１、第２のパケットＰＣＫ２、第３のパケットＰＣＫ３をこの順で第１のクライアントＣＴ１に送信する。第１のサーバＳＶＲ１は、かかる送信において、ＩＰ識別子"ｊ"を含む第１のパケットＰＣＫ１、ＩＰ識別子"ｊ+１"を含む第２のパケットＰＣＫ２、ＩＰ識別子"ｊ+２"を含む第３のパケットＰＣＫ３をこの順で送信する。この例では、パケットの順序反転が起こらなければ、第１のパケットＰＣＫ１〜第３のパケットＰＣＫ３は、第１のパケットＰＣＫ１、第２のパケットＰＣＫ２、第３のパケットＰＣＫ３の順で重複パケット検出装置ＤＤにより取得される。
【０３１０】
しかし、第１のパケットＰＣＫ１と、第２のパケットＰＣＫ２との間でパケットの順序反転が発生すると、第１のパケットＰＣＫ１、第２のパケットＰＣＫ２は、第２のパケットＰＣＫ２、第１のパケットＰＣＫ１の順で重複パケット検出装置ＤＤに取得される。
【０３１１】
第１のパケットＰＣＫ１と、第２のパケットＰＣＫ２との間でパケットの順序反転が発生した場合の、ＩＰ識別子の変化を図２９(Ｂ)に示す。図２９(Ｂ)では、第２のパケットＰＣＫ２、第１のパケットＰＣＫ１の順で重複パケット検出装置ＤＤが取得しているので、パケットの取得順序に従って増加しない。
【０３１２】
このパケットの順序反転は、パケットキャプチャ処理や、ルータなどが実行するパケット転送時の処理のわずかなずれで発生する。従って、一般的に、１個から２個程度のパケットにおいて、パケットの順序反転が発生するだけである。そこで、重複パケット検出装置ＤＤは、同じセッションの通信に関連する、数個のパケットのＩＰ識別子が順次増加しない場合でも、かかるパケットの順序反転を検出した場合、この通信をシーケンシャルＩＰ識別子の通信と判定する。
【０３１３】
一方、ランダムＩＰ識別子の通信におけるＩＰ識別子は、図２９(Ｃ)に示すように、パケットの取得順に関係なく、ランダム(すなわち、無秩序)に増減する。
【０３１４】
(ソフトウェアブロック図)
図３０は、第３の実施の形態における重複パケット検出装置ＤＤのソフトウェアブロック図である。図３０のソフトウェアブロック図は、図５のソフトウェアブロック図に、ランダム判定部１７を追加した図である。ランダム判定部１７は、同じセッションの通信に関連する、数個のパケットのＩＰ識別子の増減に基づき、この通信が、シーケンシャルＩＰ識別子の通信か、または、ランダムＩＰ識別子の通信か判定する。
【０３１５】
具体的には、ランダム判定部１７は、取得した複数のパケットを取得順にメモリ１０２に記憶する。ランダム判定部１７は、複数のパケットの各々のＩＰ識別子が取得順に連続的に増加していない場合、取得パケットの識別子がランダムＩＰ識別子と判定する。一方、ランダム判定部１７は、複数のパケットの各々のＩＰ識別子が取得順に連続的に増加している場合、取得パケットの識別子がランダムＩＰ識別子でないと判定する。
【０３１６】
ランダム判定部１７は、図２９で説明したパケットの反転に対応するため、複数のパケットの各々の識別子が取得順に連続的に増加していない場合であっても、以下の場合には、取得パケットの識別子がランダムＩＰ識別子でないと判定する。すなわち、ランダム判定部１７は、複数のパケットの中の第１のパケットの識別子を基準にして所定の個数前に取得した第２のパケットの識別子が、第１のパケットの識別子よりも大きい場合、取得パケットの識別子がランダムＩＰ識別子と判定する。所定の個数は、例えば２個である。
【０３１７】
(情報格納領域)
次に、本実施の形態における重複パケットの検出処理を図３１〜図３９を参照して詳細に説明する。
【０３１８】
図３１は、第３の実施の形態において、図４の情報格納領域ＩＲに各種情報が記憶されている状態を模式的に示す図である。図３１は、図８に、ランダム判定用情報ＩＦ６を追加した図である。
【０３１９】
図３２は、図３１の位置情報ＩＦ４を説明する図である。位置情報は、図３２に示すテーブル形式でメモリ１０２に記憶されている。位置情報テーブルＴ３ａが、位置情報ＩＦ４としてメモリ１０２に記憶されている状態を図３１の"位置情報：Ｔ３ａ"で模式的に示す。
【０３２０】
位置情報テーブルＴ３ａは、図１２の位置情報テーブルＴ３に、ＩＰ識別子タイプ欄と、判定用配列欄を追加したテーブルである。なお、位置情報テーブルＴ３ａにおいて、空欄には情報が記憶されていない。なお、ＩＰ識別子タイプ欄と、判定用配列欄の具体的な内容については、後記する具体例で説明する。
【０３２１】
図３３は、図３１のランダム判定用情報ＩＦ６を説明する図である。ランダム判定用情報は、複数のパケットの各々に含まれるＩＰ識別子とチェックサムとを含む情報である。ランダム判定用情報は、図３３に示すテーブル形式で記憶されている。以下、図３３で示すランダム判定用情報をランダム判定用配列と適宜記す。
【０３２２】
図３３のランダム判定用配列ｐ３-ｔｍｐは、ＩＰ識別子欄と、チェックサム欄とを有する。図３３(Ａ)は、ランダム判定用配列ｐ３-ｔｍｐの第１の例を示し、図３３(Ｂ)は、ランダム判定用配列ｐ３-ｔｍｐの第２の例を示し、図３３(Ｃ)は、ランダム判定用配列ｐ３-ｔｍｐの第３の例を示す。
【０３２３】
ランダム判定用配列ｐ３-ｔｍｐが、ランダム判定用情報ＩＦ６としてメモリ１０２に記憶されている状態を図３１の"ランダム判定用情報：ｐ３-ｔｍｐ"で模式的に示す。
【０３２４】
図３４は、図３１の管理情報ＩＦ３を説明する図である。管理情報は、図３４に示すビット列形式でメモリ１０２に記憶されている。ビット列組ｐ１、ＩＰ識別子ビット列ｐ２-１、ＩＰ識別子ビット列ｐ３-１が、管理情報ＩＦ３としてメモリ１０２に記憶されている状態を図３１の"管理情報：Ｐ"で模式的に示す。
【０３２５】
[重複パケット検出の流れ]
次に、第３の実施の形態の詳細について説明する。図３５〜図３９は、第３の実施の形態における重複パケット検出処理の詳細を説明する第１〜第５のフローチャートである。図３５のフローチャートは、図１３のフローチャートからＳ１７の処理を省略したフローチャートである。図３５においては、Ｓ１６の終了後、Ｓ１８に移り、Ｓ１８の終了後、図３６のＳ４１に移る。
【０３２６】
ランダム判定部１７は、取得パケットのＩＰ識別子がランダムか否か判定済みか判定する（Ｓ４１）。
【０３２７】
このＩＰ識別子がランダムか否か判定済みでない場合（Ｓ４１/ＮＯ）、ランダム判定部１７は、取得パケットに対してランダム判定を実行する（Ｓ４２）。Ｓ４２の詳細については、図３７で説明する。
【０３２８】
重複判定部１４は、取得パケットのＩＰ識別子がランダムか判定する(Ｓ４３)。取得パケットのＩＰ識別子がランダムの場合(Ｓ４３/ＹＥＳ)、重複判定部１４は、ランダムＩＰ識別子の重複判定などを実行する。具体的には、重複判定部１４は、図１４で説明したＳ１９〜Ｓ２４の処理を実行する(Ｓ４３)。
【０３２９】
一方、取得パケットのＩＰ識別子がランダムでない場合(Ｓ４３/ＮＯ)、重複判定部１４は、シーケンシャルＩＰ識別子の重複判定などを実行する（Ｓ４５）。なお、Ｓ４５は、図３９で詳細に説明する。Ｓ４４またはＳ４５の終了後、図３５のＳ１１に移る。
【０３３０】
次に、ランダム判定(Ｓ４２)の詳細について説明する。ランダム判定の説明前に、図３２の位置情報テーブルＴ３ａには情報が何も記憶されていないとする。そして、取得部１１は、第１の実施の形態で説明したセッション識別子"１"で識別されるセッションに関連する複数のパケット(例えば、第１〜第４のパケット)を取得する。取得部１１が第１のパケットを取得すると、Ｓ１２、Ｓ１３が実行される。ここで、セッション管理部１２は、セッション識別子"１"で識別されるセッションのセッション情報を記憶していない（Ｓ１４/ＮＯ）。従って、セッション管理部１２は、例えば、取得したＩＰヘッダに含まれる情報に基づいて、取得パケットのセッション（すなわち、新たなセッション）に関するセッション情報を情報格納領域ＩＲに記憶する（Ｓ１５）。セッション管理部１２は、Ｓ１５において、セッション識別子"１"を、図３２の記憶位置情報テーブルＴ３ａのセッション識別子欄に記憶する(セッション識別子欄の"１"参照)（Ｓ１５）。
【０３３１】
次いで、情報管理部１３は、新たなセッションのＩＰ識別子ビット列を確保する（Ｓ１６）。具体的には、情報管理部１３は、図３４に示したＩＰ識別子ビット列ｐ１-１をメモリ１０２に確保する（Ｓ１６）。そして、情報管理部１３は、セッション識別子"１"と対応付けて、ＩＰ識別子ビット列ｐ１-１の先頭アドレスを、図３２の記憶位置情報テーブルＴ３ａにおける管理ビットアドレス-ＩＰ識別子欄に記憶する(Ｓ１６)。
【０３３２】
次いで、情報管理部１３は、例えば、取得パケットのＩＰヘッダに含まれるＩＰ識別子を取得し、取得パケットのＴＣＰヘッダに含まれるチェックサムを取得する（Ｓ１８）。
【０３３３】
ランダム判定部１７は、取得パケットのＩＰ識別子がランダムか否か判定済みか判定する(Ｓ４１)。具体的には、ランダム判定部１７は、図３２の位置情報テーブルＴ３ａにおいて、取得パケットのセッション識別子(例えば、"１")が記憶された行と、ＩＰ識別子タイプ欄とが交わるセルに文字列"ランダム"または文字列"シーケンシャル"が記憶されているか判定する。
【０３３４】
ランダム判定部１７は、このセルに文字列"ランダム"または文字列"シーケンシャル"の何れか１つが記憶されている場合、取得パケットのＩＰ識別子がランダムか否か判定済みと判定する(Ｓ４１/ＹＥＳ)。一方、ランダム判定部１７は、このセルに文字列"ランダム"または文字列"シーケンシャル"の何れか１つが記憶されていない場合、取得パケットのＩＰ識別子がランダムか否か判定済みでないと判定する(Ｓ４１/ＮＯ)。なお、ランダム判定部１７は、このセルに文字列"ランダム"または文字列"シーケンシャル"の何れか１つが記憶されていない場合、文字列"未判定"を、このセルに記憶する。
【０３３５】
この例では、セッション識別子"１"が記憶された行と、ＩＰ識別子タイプ欄とが交わるセルに文字列"ランダム"または文字列"シーケンシャル"の何れか１つが記憶されていない。従って、ランダム判定部１７は、取得パケットのＩＰ識別子がランダムか否か判定済みでないと判定する(Ｓ４１/ＮＯ)。
【０３３６】
次いで、ランダム判定部１７は、ランダム判定を実行する(Ｓ４２)。図３７を参照し、ランダム判定（Ｓ４２）の一例を説明する。
【０３３７】
ランダム判定部１７は、取得パケットのＩＰ識別子、チェックサムを、ランダム判定用配列(例えば、図３３(Ａ)のランダム判定用配列ｐ３-ｔｍｐ)に記憶する（Ｓ４２１）。
【０３３８】
ランダム判定部１７は、この記憶において、取得部１１が取得したパケットの順序に従って、パケットのＩＰ識別子とチェックサムとをランダム判定用配列の同一行に記憶する。
【０３３９】
ランダム判定部１７は、取得パケットのランダム判定用配列がメモリ１０２に確保されていない場合、ランダム判定用配列のメモリ領域をメモリ１０２に確保する。
【０３４０】
情報管理部１３は、この確保が終了すると、図３２の記憶位置情報テーブルＴ３ａにおいて、取得パケットのセッション識別子(例えば、"１")が記憶された行と、判定用配列欄とが交わるセルに、ランダム判定用配列ｐ３-ｔｍｐの先頭アドレスを記憶する(Ｓ４２１)。なお、この先頭アドレスは、ランダム判定用配列ｐ３-ｔｍｐの符号である"ｐ３-ｔｍｐ"とする。
【０３４１】
この確保の終了後、ランダム判定部１７は、取得パケットのＩＰ識別子が"１００１"の場合には、図３３(Ａ)のランダム判定用配列ｐ３-ｔｍｐのＩＰ識別子欄に"１００１"を記憶する(Ｓ４２１)。そして、ランダム判定部１７は、このパケットのチェックサムが"１０４"の場合、図３３(Ａ)のランダム判定用配列ｐ３-ｔｍｐのチェックサム欄に"１０４"を記憶する(Ｓ４２１)。
【０３４２】
ランダム判定部１７は、ランダム判定個数分のＩＰ識別子をランダム判定用配列ｐ３-ｔｍｐに記憶したか判定する(Ｓ４２２)。ランダム判定個数は、適宜調整可能であり、例えば、４個である。このランダム判定個数を多くすれば、ランダム判定の精度が高くなるが、ランダム判定の時間が長くなる。そこで、情報処理システムの管理者は、ランダム判定の精度とランダム判定の時間を考慮して、最適なランダム判定個数を決定する。
【０３４３】
ランダム判定部１７が、ランダム判定個数分のＩＰ識別子をランダム判定用配列ｐ３-ｔｍｐに記憶していない場合(Ｓ４２２/ＮＯ)、図３５のＳ１１に戻る。前記の例では、１個のＩＰ識別子が記憶されているので、図３５のＳ１１に戻る。
【０３４４】
次いで、取得部１１が第２のパケットを取得すると(Ｓ１１/ＹＥＳ)、Ｓ１２、Ｓ１３の処理が実行される。第２のパケットは、第１のパケットと同一セッションにおける通信のパケットなので、セッション管理部１２は、セッション識別子"１"で識別されるセッションのセッション情報を記憶している(Ｓ１４/ＹＥＳ)。従って、Ｓ１８の処理が実行される。ランダム判定部１７は、取得パケットのＩＰ識別子がランダムか否か判定済みではないので(Ｓ４１/ＮＯ)、ランダム判定(Ｓ４２)を実行する。
【０３４５】
ランダム判定部１７は、取得パケットのＩＰ識別子(例えば、"２５８")を、図３３(Ａ)のランダム判定用配列ｐ３-ｔｍｐのＩＰ識別子欄に記憶する(Ｓ４２１)。そして、ランダム判定部１７は、このパケットのチェックサム(例えば、"５０２")を、図３３(Ａ)のランダム判定用配列ｐ３-ｔｍｐのチェックサム欄に記憶する(Ｓ４２１)。
【０３４６】
ランダム判定部１７は、ランダム判定個数分のＩＰ識別子をランダム判定用配列ｐ３-ｔｍｐに記憶したか判定する(Ｓ４２２)。Ｓ４２２/ＮＯの後、図３５のＳ１１に戻る。
【０３４７】
以降、第２のパケットに対して実行された処理(Ｓ１２、Ｓ１３、Ｓ１４/ＹＥＳ、Ｓ１８、Ｓ４１/ＮＯ、Ｓ４２１)が、第３、第４のパケットに対しても実行される。その結果、図３３(Ａ)のランダム判定用配列ｐ３-ｔｍｐが作成される。この作成後、ランダム判定部１７は、ランダム判定個数分のＩＰ識別子をランダム判定用配列ｐ３-ｔｍｐに記憶したか判定する(Ｓ４２２)。
【０３４８】
ランダム判定部１７は、図３３(Ａ)のランダム判定用配列ｐ３-ｔｍｐに示したように、ランダム判定個数(例えば、４個)分のＩＰ識別子をランダム判定用配列ｐ３-ｔｍｐに記憶している。従って、ランダム判定部１７は、ランダム判定個数分のＩＰ識別子をランダム判定用配列ｐ３-ｔｍｐに記憶したと判定する(Ｓ４２２/ＹＥＳ)。
【０３４９】
そして、ランダム判定部１７は、判定用配列に記憶されたＩＰ識別子に基づき、ランダム判定を実行する（Ｓ４２３）。ランダム判定部１７は、判定用配列に記憶されたＩＰ識別子がシーケンシャルに増加せず、ランダムに増減する場合には、ＩＰ識別子がランダムと判定する。図３３(Ａ)のランダム判定用配列ｐ３-ｔｍｐ例では、ＩＰ識別子欄に記憶されたＩＰ識別子は"１００１"、"２５８"、"１１０"、"４５２０"である。これらの識別子"１００１"、"２５８"、"１１０"、"４５２０"は、シーケンシャルに増加せず、図２９(Ｃ)で説明したように、ランダムに増減する。従って、ランダム判定部１７は、ＩＰ識別子はランダムと判定する。
【０３５０】
次いで、ランダム判定部１７は、第１〜第５のパケットのセッション識別子（例えば"１"）に対応するランダム判定済みのフラグをオンにする(Ｓ４２４)。具体的には、ランダム判定部１７は、図３２の位置情報テーブルＴ３ａにおいて、第１〜第５のパケットのセッション識別子 (例えば、"１")が記憶された行と、ＩＰ識別子タイプ欄とが交わるセルに判定結果を記憶する(Ｓ４２４)。この判定結果は、ＩＰ識別子がランダムと判定されたので、この判定結果の文字列"ランダム"である。
【０３５１】
情報管理部１３は、Ｓ４２３においてＩＰ識別子がランダムと判定されたか判定する(Ｓ４２５)。ＩＰ識別子がランダムと判定された場合(Ｓ４２５/ＹＥＳ)、情報管理部１３は、新たなセッションのチェックサムビット列を確保する（Ｓ４２６）。具体的には、情報管理部１３は、図３４に示したチェックサムビット列ｐ１-２をメモリ１０２に確保する。情報管理部１３は、チェックサムビット列ｐ１-２をメモリ１０２に確保した場合、チェックサムビット列ｐ１-２の全ビット領域に"０"を記憶する。そして、情報管理部１３は、セッション識別子"１"と対応付けて、チェックサムビット列ｐ１-２の先頭アドレス(例えば、"ｐ１-２")を、図３２の記憶位置情報テーブルＴ３ａにおける管理ビットアドレス-チェックサム欄に記憶する。
【０３５２】
情報管理部１３は、判定用配列のＩＰ識別子、チェックサムをビット列に記憶する(Ｓ４２７)。
【０３５３】
具体的には、情報管理部１３は、図３３(Ａ)のランダム判定用配列ｐ３-ｔｍｐに記憶されたＩＰ識別子"１００１"、"２５８"、"１１０"、"４５２０"にそれぞれ対応する、ＩＰ識別子ビット列ｐ１-１のビット領域に第１の情報（例えば、"１"）を記憶する。そして、情報管理部１３は、判定用配列のチェックサムをＳ４２６で確保されたチェックサムビット列に記憶する(Ｓ４２７)。具体的には、情報管理部１３は、図３３(Ａ)のランダム判定用配列ｐ３-ｔｍｐに記憶されたチェックサム"１０４"、"５０２"、"１０５８２１"、"２０１４"にそれぞれ対応する、チェックサムビット列ｐ１-２のビット領域に第２の情報（例えば、"１"）を記憶する(Ｓ４２７)。
【０３５４】
次いで、ランダム判定部１７は、ランダム判定用配列(例えば、図３３(Ａ)のランダム判定用配列ｐ３-ｔｍｐ)の記憶領域を開放する(Ｓ４２８)。ランダム判定部１７は、この開放の際に、図３２の記憶位置情報テーブルＴ３ａにおいてセッション識別子"１"が記憶された行と、判定用配列欄とが交わるセルに記憶された、図３３(Ａ)のランダム判定用配列ｐ３-ｔｍｐの先頭アドレスを消去する。この消去を"ｐ３-ｔｍｐ→消去"で示す。
【０３５５】
ＩＰ識別子がランダムでないと判定された場合(Ｓ４２５/ＮＯ)、判定用配列のＩＰ識別子をＩＰ識別子ビット列に記憶する(Ｓ４２７)。
【０３５６】
具体的に説明する。ここでは、図３３(Ｂ)のランダム判定用配列ｐ３-ｔｍｐがメモリ１０２に記憶されているとする。情報管理部１３は、図３３(Ｂ)のランダム判定用配列ｐ３-ｔｍｐに記憶されたＩＰ識別子"１０１"、"１０２"、"１０３"、"１０４"にそれぞれ対応する、ＩＰ識別子ビット列ｐ１-１のビット領域に第１の情報（例えば、"１"）を記憶する。次いで、Ｓ４２８に移る。
【０３５７】
(ランダム判定方法の一例)
次に、図３８を参照し、図３７のランダム判定（Ｓ４２３）の一例について説明する。図３８は、図３７のランダム判定（Ｓ４２３）の一例を説明するフロー図である。
【０３５８】
ランダム判定部１７は、ランダム判定用配列ｐ３-ｔｍｐに記憶されたＩＰ識別子を読み出す(Ｓ４２３１)。
【０３５９】
ランダム判定部１７は、前ＩＰ識別子は今回ＩＰ識別子より小さいか判定する（Ｓ４２３２）。Ｓ４２３２の判定により、ＩＰ識別子がランダムか否か判定している。Ｓ４２３２において、ランダム判定部１７は、以下の処理を行う。すなわち、ランダム判定部１７は、読み出されたＩＰ識別子の中で、今回識別子として選択していない識別子を選択し、選択した識別子を今回識別子とする。さらに、ランダム判定部１７は、今回識別子を含むパケットよりも例えば１個前に取得部１１が取得したパケットに含まれるＩＰ識別子を前ＩＰ識別子とする。
【０３６０】
前ＩＰ識別子が今回ＩＰ識別子より小さい場合(Ｓ４２３２/ＹＥＳ)、ランダム判定部１７は、第１の個数のパケットのＩＰ識別子をチェックしたか判定する(Ｓ４２３３)。なお、第１の個数は、例えば２個である。具体的には、ランダム判定部１７は、Ｓ４２３２の判定処理を、第１の個数と同数分実行したか判定する。
【０３６１】
このように、第１の個数と同数分、Ｓ４２３２の判定処理を実行することにより、ＩＰ識別子がランダムか否か判定する処理の判定精度を高めている。なお、第１の個数もランダム判定個数(Ｓ４２２参照)と同様に、適宜調整可能である。第１の個数を多くすれば、ランダム判定の精度が高くなるが、ランダム判定の時間が長くなる。そこで、管理者は、ランダム判定の精度とランダム判定の時間を考慮して、最適な第１の個数を決定する。
【０３６２】
第１の個数のパケットのＩＰ識別子をチェックした場合(Ｓ４２３３/ＹＥＳ)、ランダム判定部１７は、ＩＰ識別子がシーケンシャルと判定する（Ｓ４２３４）。この判定(Ｓ４２３４)の後、図３７のＳ４２４に移る。
【０３６３】
前ＩＰ識別子が今回ＩＰ識別子より小さくない場合(Ｓ４２３２/ＮＯ)、ランダム判定部１７は、今回ＩＰ識別子よりも第２の個数前のＩＰ識別子は、今回ＩＰ識別子よりも小さいか判定する(Ｓ４２３５)。Ｓ４２３５の判定により、図２９(Ｂ)で説明したパケットの順序反転が発生しても、ＩＰ識別子がシーケンシャルと判定している。
【０３６４】
今回ＩＰ識別子は、あるパケット(以下、パケットＸと記す)に含まれるＩＰ識別子である。第２の個数は例えば２個である。第２の個数前のＩＰ識別子は、パケットＸよりも第２の個数前に取得部１１が取得したパケットのＩＰ識別子である。図２９(Ｂ)の例で、具体的に説明すると、今回ＩＰ識別子は第２のパケットＰＣＫ２に含まれるＩＰ識別子である。第２の個数(例えば２個)前のＩＰ識別子は第３のパケットＰＣＫ３である。第２の個数は、図３０で説明した所定の個数であり、適宜調整可能である。
【０３６５】
ランダム判定部１７は、第２の個数前のＩＰ識別子は、今回ＩＰ識別子よりも小さいと判定すると(Ｓ４２３５/ＹＥＳ)、既に説明したＳ４２３３の判定を実行する。第２の個数前のＩＰ識別子は、今回ＩＰ識別子よりも小さい場合には(Ｓ４２３５/ＹＥＳ)、パケットの順序反転が発生している可能性が高いので、引き続き、ＩＰ識別子がランダムか否か判定する。
【０３６６】
ランダム判定部１７は、第２の個数前のＩＰ識別子は、今回ＩＰ識別子よりも小さくないと判定すると(Ｓ４２３５/ＮＯ)、ランダム判定部１７は、ＩＰ識別子がランダムと判定する（Ｓ４２３６）。この判定(Ｓ４２３６)の後、図３７のＳ４２４に移る。
【０３６７】
前ＩＰ識別子は今回ＩＰ識別子よりも小さくなく(Ｓ４２３２/ＮＯ)、かつ、第２の個数前のＩＰ識別子は、今回ＩＰ識別子よりも小さくない場合(Ｓ４２３５/ＮＯ)、取得パケットのＩＰ識別子はランダムに増減していると見なすことができる。そこで、図２９(Ｃ)で説明したように、ランダム判定部１７は、ＩＰ識別子がランダムと判定している。
【０３６８】
(ランダム判定の具体的説明)
図３３、図３８を参照して、ランダム判定の一例について具体的に説明する。ランダム判定の一例を具体的に説明する前に、図３３のランダム判定用配列ｐ３-ｔｍｐについて説明する。ランダム判定部１７は、図３７のＳ４２１で説明したように、取得部１１が取得したパケットの順序に従って、上から順に、パケットのＩＰ識別子とチェックサムとを図３３のランダム判定用配列ｐ３-ｔｍｐの同一行に記憶している。
【０３６９】
最初に、図３３(Ａ)のランダム判定用配列ｐ３-ｔｍｐがメモリ１０２に記憶されているとして、ランダム判定の一例を具体的に説明する。
【０３７０】
ランダム判定部１７は、図３３(Ａ)のランダム判定用配列ｐ３-ｔｍｐに記憶されたＩＰ識別子を読み出す(Ｓ４２３１)。
【０３７１】
ランダム判定部１７は、Ｓ４２３２において、図３３(Ａ)のランダム判定用配列ｐ３-ｔｍｐのＩＰ識別子の中から、取得部１１が直近に取得したパケットのＩＰ識別子を選択する。この選択した識別子が今回ＩＰ識別子である。次いで、ランダム判定部１７は、Ｓ４２３２において、選択したＩＰ識別子よりも１個前のＩＰ識別子を選択する。この１個前のＩＰ識別子が前ＩＰ識別子である。
【０３７２】
以下の説明において、ある識別子(以下、識別子Ｘと記す)よりもｒ(ｒは１以上の整数)個前のＩＰ識別子は、ランダム判定用配列ｐ３-ｔｍｐにおいて、識別子Ｘが記憶されたセルからｒ個上のセルに記憶されたＩＰ識別子である。
【０３７３】
ランダム判定部１７は、Ｓ４２３２において、図３３(Ａ)のランダム判定用配列ｐ３-ｔｍｐのＩＰ識別子の中から、最も下のセルに記憶されたＩＰ識別子"４５２０"を今回ＩＰ識別子として選択する。そして、ランダム判定部１７は、図３３(Ａ)のランダム判定用配列ｐ３-ｔｍｐのＩＰ識別子の中から、今回識別子"４５２０"よりも１個前のＩＰ識別子"１１０"を前ＩＰ識別子として選択する。
【０３７４】
前ＩＰ識別子"１１０"は今回ＩＰ識別子"４５２０"より小さい。そして、ランダム判定部１７は、１個のパケットのＩＰ識別子をチェックしている。従って、ランダム判定部１７は、Ｓ４２３２でＹＥＳ、Ｓ４２３３でＮＯと判定し、Ｓ４２３２に戻る。
【０３７５】
ランダム判定部１７は、２回目以降のＳ４２３２において、現時点の前ＩＰ識別子を今回ＩＰ識別子と設定し、今回識別子よりも１個前の識別子を前ＩＰ識別子と設定する。前記の例では、ランダム判定部１７は、現時点の前ＩＰ識別子"１１０"を今回ＩＰ識別子"１１０"と設定し、今回識別子"１１０"よりも１個前の識別子"２５８"を前ＩＰ識別子"２５８"と設定する。
【０３７６】
前ＩＰ識別子"２５８"は、今回ＩＰ識別子"１１０"よりも大きい（Ｓ４２３２/ＮＯ）。さらに、今回識別子"１１０"よりも２個前のＩＰ識別子"１００１"は、今回ＩＰ識別子"１１０"よりも大きい（Ｓ４２３５/ＮＯ）。従って、ランダム判定部１７は、Ｓ４２３２でＮＯ、Ｓ４２３５でＮＯと判定し、ＩＰ識別子がランダムと判定する（Ｓ４２３６）。
【０３７７】
以上の説明により、図３３（Ａ）のランダム判定用配列ｐ３-ｔｍｐに記憶されたＩＰ識別子は、ランダムと判定される。
【０３７８】
次に、図３３(Ｂ)のランダム判定用配列ｐ３-ｔｍｐがメモリ１０２に記憶されているとして、ランダム判定の一例を具体的に説明する。
【０３７９】
ランダム判定部１７は、図３３(Ｂ)のランダム判定用配列ｐ３-ｔｍｐに記憶されたＩＰ識別子を読み出す(Ｓ４２３１)。
【０３８０】
ランダム判定部１７は、Ｓ４２３２において、図３３(Ｂ)のランダム判定用配列ｐ３-ｔｍｐのＩＰ識別子の中から、最も下のセルに記憶されたＩＰ識別子"１０４"を今回ＩＰ識別子として選択する。そして、ランダム判定部１７は、図３３(Ｂ)のランダム判定用配列ｐ３-ｔｍｐのＩＰ識別子の中から、今回識別子"１０４"よりも１個前のＩＰ識別子"１０３"を前ＩＰ識別子として選択する。
【０３８１】
前ＩＰ識別子"１０３"は今回ＩＰ識別子"１０４"より小さい。そして、ランダム判定部１７は、１個のパケットのＩＰ識別子をチェックしている。従って、ランダム判定部１７は、Ｓ４２３２でＹＥＳ、Ｓ４２３３でＮＯと判定し、Ｓ４２３２に戻る。
【０３８２】
ランダム判定部１７は、２回目以降のＳ４２３２の実行において、現時点の前ＩＰ識別子を今回ＩＰ識別子と設定し、今回識別子よりも１個前の識別子を前ＩＰ識別子と設定する。前記の例では、ランダム判定部１７は、現時点の前ＩＰ識別子"１０３"を今回ＩＰ識別子"１０３"と設定し、今回識別子"１０３"よりも１個前の識別子"１０２"を前ＩＰ識別子"１０２"と設定する。
【０３８３】
前ＩＰ識別子"１０２"は、今回ＩＰ識別子"１０３"より小さい。そして、ランダム判定部１７は、２個のパケットのＩＰ識別子をチェックしている。従って、ランダム判定部１７は、Ｓ４２３２でＹＥＳ、Ｓ４２３３でＹＥＳと判定し、ＩＰ識別子がシーケンシャルと判定する（Ｓ４２３６）。
【０３８４】
以上の説明により、図３３（Ｂ）のランダム判定用配列ｐ３-ｔｍｐに記憶されたＩＰ識別子は、シーケンシャルと判定される。
【０３８５】
次に、図３３(Ｃ)のランダム判定用配列ｐ３-ｔｍｐがメモリ１０２に記憶されているとして、ランダム判定の一例を具体的に説明する。図３３(Ｃ)のランダム判定用配列ｐ３-ｔｍｐと、図３３(Ｂ)のランダム判定用配列ｐ３-ｔｍｐとは、以下の点で異なる。すなわち、図３３(Ｃ)のランダム判定用配列ｐ３-ｔｍｐでは、ＩＰ識別子"１０３"とチェックサム"１０２"とを含むパケットと、ＩＰ識別子"１０３"とチェックサム"１０２"とを含むパケットとの取得順序が逆転（パケットの反転）している。
【０３８６】
ランダム判定部１７は、図３３(Ｃ)のランダム判定用配列ｐ３-ｔｍｐに記憶されたＩＰ識別子を読み出す(Ｓ４２３１)。
【０３８７】
ランダム判定部１７は、Ｓ４２３２において、図３３(Ｃ)のランダム判定用配列ｐ３-ｔｍｐのＩＰ識別子の中から、最も下のセルに記憶されたＩＰ識別子"１０３"を今回ＩＰ識別子として選択する。そして、ランダム判定部１７は、図３３(Ｃ)のランダム判定用配列ｐ３-ｔｍｐのＩＰ識別子の中から、今回識別子"１０３"よりも１個前のＩＰ識別子"１０４"を前ＩＰ識別子として選択する。
【０３８８】
前ＩＰ識別子"１０４"は今回ＩＰ識別子"１０３"より大きい（Ｓ４２３２/ＮＯ）。しかし、今回識別子"１０３"よりも２個前のＩＰ識別子"１０１"は、今回ＩＰ識別子"１０３"よりも小さい(Ｓ４２３５/ＹＥＳ）。そして、ランダム判定部１７は、１個のパケットのＩＰ識別子をチェックしている。従って、ランダム判定部１７は、Ｓ４２３２でＮＯ、Ｓ４２３５でＹＥＳ、Ｓ４２３３でＮＯと判定し、Ｓ４２３２に戻る。
【０３８９】
ランダム判定部１７は、２回目以降のＳ４２３２の実行において、現時点の前ＩＰ識別子を今回ＩＰ識別子と設定し、今回識別子よりも１個前の識別子を前ＩＰ識別子と設定する。前記の例では、ランダム判定部１７は、現時点の前ＩＰ識別子"１０４"を今回ＩＰ識別子"１０４"と設定し、今回識別子"１０４"よりも１個前の識別子"１０２"を前ＩＰ識別子"１０２"と設定する。
【０３９０】
前ＩＰ識別子"１０２"は、今回ＩＰ識別子"１０４"より小さい。そして、ランダム判定部１７は、２個のパケットのＩＰ識別子をチェックしている。従って、ランダム判定部１７は、Ｓ４２３２でＹＥＳ、Ｓ４２３３でＹＥＳと判定し、ＩＰ識別子がシーケンシャルと判定する（Ｓ４２３４）。
【０３９１】
以上の説明により、パケットの反転が発生したも、図３３（Ｃ）のランダム判定用配列ｐ３-ｔｍｐに記憶されたＩＰ識別子は、シーケンシャルと判定される。
【０３９２】
次に、図３６のシーケンシャルＩＰ識別子の重複判定など（Ｓ４５）について、図３９を参照して説明する。図３９は、シーケンシャルＩＰ識別子の重複判定などの処理を説明するフロー図である。
【０３９３】
重複判定部１４は、ＩＰ識別子の重複判定、記憶を実行する(Ｓ４５１)。このＳ４５１の処理は、図１５で説明したＩＰ識別子の重複判定、記憶処理(Ｓ１９１〜Ｓ１９３)と同様なので具体的な説明は、省略する。なお、重複判定部１４は、図３２の記憶位置情報テーブルＴ３ａを参照して、取得パケットのセッション識別子により識別されるＩＰ識別子ビット列を特定している。
【０３９４】
重複判定部１４は、Ｓ４５１の処理を終了すると、取得パケットのＩＰ識別子が重複しているか判定する（Ｓ４５２）。なお、この判定（Ｓ４５２）は、図１４のＳ２１で説明したので、具体的な説明は省略する。
【０３９５】
ＩＰ識別子が重複している場合(Ｓ４５２/ＹＥＳ)、削除部１６は、メモリ１０２に記憶されたパケットを削除する(Ｓ４５３)。なお、この削除処理(Ｓ４５３)は、図１４の削除処理(Ｓ２２)と同じ処理なので、具体的な説明は省略する。
【０３９６】
一方、ＩＰ識別子が重複していない場合(Ｓ４５２/ＮＯ)、転送部１５は、メモリ１０２に記憶されたパケットをパケット解析装置ＡＤに転送する（Ｓ４５４）。なお、この転送処理(Ｓ４５４)は、図１４の転送処理（Ｓ２３）と同じ処理なので、具体的な説明を省略する。
【０３９７】
Ｓ４５３の処理またはＳ４５４の処理が、終了すると、情報管理部１３は、パケット情報を削除する（Ｓ４５５）。Ｓ４５５の処理が終了すると、図３５のＳ１１に戻る。
【０３９８】
以下、シーケンシャルＩＰ識別子の場合の重複チェックについてより詳細に説明する。パケットを送信する送信元装置は、同一のセッションについて、割り振ることができるＩＰ識別子の数（例えば、６５５３６）を超える数のパケットを送信する場合がある。この場合、送信元装置は、ＩＰ識別子をサイクリックさせ、再び最初のＩＰ識別子（例えば、０）から順番に割り振ってパケットを送信する（以下、これを周回とも呼ぶ）。
【０３９９】
サイクリックされたシーケンシャルＩＰ識別子が割り振られたパケットを取得部１１が取得した場合、情報管理部１３は、過去に第１の情報を記憶した、ＩＰ識別子ビット列のビット領域を、新たに受信したパケットのＩＰ識別子に対応する第１の記憶に利用する必要がある。なお、このＩＰ識別子ビット列は、例えば、図３４のＩＰ識別子ビット列ｐ２-１や、図３４のＩＰ識別子ビット列ｐ３-１である。
【０４００】
そこで、情報管理部１３は、ＩＰ識別子が周回したことを検知した場合に、ＩＰ識別子周回処理を実行することにより、例えば、ＩＰ識別子ビット列の先頭から所定の範囲のビット領域を初期化する。情報管理部１３は、この初期化において、この所定の範囲のビット領域に例えば"０"を記憶する。かかる初期化によれば、例えば、ＩＰ識別子の周回が発生した場合において、第１の情報が記憶されているＩＰ識別子ビット列が今回の周回において記憶されたものなのか、以前の周回において記憶されたものなのかを、判断できなくなることを防止することができる。
【０４０１】
また、かかる初期化によれば、サイクリックされたＩＰ識別子の取得後においても、ＩＰ識別子ビット列を記憶する際にはビット領域が初期化されている。そのため、情報管理部１３は、ビット領域を０から１への更新のみ行うことによって、ＩＰ識別子ビット列の記憶を行うことが可能になる。
【０４０２】
以上、本実施の形態によれば、シーケンシャルＩＰ識別子の通信において送受信されるパケットの重複判定を行う場合、チェックサムの重複判定を行わない。その結果、チェックサム用のビット列をメモリに確保する必要が無く、メモリ領域の無駄を抑制できる。さらに、チェックサムの重複判定を行わないので、処理量を削減できる。
【０４０３】
なお、ＩＰ識別子ビット列、チェックサムビット列に初期値として記憶した情報("０")を"１"として、第１〜第４の情報を"０"としてもよい。すなわち、前記したビット単位の情報を反転させてもよい。
【０４０４】
以上の実施の形態をまとめると、次の付記のとおりである。
【０４０５】
（付記１）
コンピュータに、
通信パケットを取得し、
前記通信パケットの取得に応じて、取得した前記通信パケットに含まれる当該通信パケットの識別子に対応する第１の情報が記憶部に記憶されているか判定し、さらに、当該通信パケットに含まれる誤り検出符号に対応する第２の情報が前記記憶部に記憶されているか判定する重複判定を行い、
前記第１の情報が前記記憶部に記憶され、かつ、前記第２の情報が前記記憶部に記憶されている場合、取得した前記通信パケットを削除し、前記第１の情報が前記記憶部に記憶されていない場合、前記第１の情報を前記記憶部に記憶し、前記第２の情報が前記記憶部に記憶されていない場合、前記第２の情報を前記記憶部に記憶する
処理を実行させることを特徴とする通信パケット検出プログラム。
【０４０６】
（付記２）
新たに通信セッションが開始されると、前記第１の情報を１ビット単位で記憶する領域を複数有する識別子用配列と前記第２の情報を１ビット単位で記憶する領域を複数有する符号用配列とを含む配列組を前記記憶部に確保し、
前記重複判定において、取得した前記通信パケットの識別子に対応する、前記配列組の識別子用配列の第１の領域に前記第１の情報が記憶されている場合、前記第１の情報が前記記憶部に記憶されていると判定し、さらに、取得した前記通信パケットの誤り検出符号に対応する、前記配列組の符号用配列の第２の領域に前記第２の情報が記憶されている場合、前記第２の情報が前記記憶部に記憶されていると判定し、
前記第１の情報が前記第１の領域に記憶され、かつ、前記第２の情報が前記第２の領域に記憶されている場合、取得した前記通信パケットを削除し、前記第１の情報が前記第１の領域に記憶されていない場合、前記第１の領域に前記第１の情報を記憶し、前記第２の情報が前記第２の領域に記憶されていない場合、前記第２の領域に前記第２の情報を記憶する
処理を前記コンピュータに実行させることを特徴とする付記１に記載の通信パケット検出プログラム。
【０４０７】
（付記３）
前記第１の領域は、前記識別子用配列の先頭アドレスに取得した前記通信パケットに含まれる識別子を加算したアドレスで示される領域であって、
前記第２の領域は、前記符号用配列の先頭アドレスに取得した前記通信パケットに含まれる誤り検出符号を加算したアドレスで示される領域である
ことを特徴とする付記２に記載の通信パケット検出プログラム。
【０４０８】
（付記４）
所定のタイミング毎に、前記識別子用配列と前記符号用配列とを含む配列組を前記記憶部に確保し、当該配列組の有効時刻を前記記憶部に記憶し、さらに、前記有効時間を超過した前記配列組を削除し、
前記重複判定において、
前記記憶部に確保した複数の前記配列組の中から直近に確保した第１の配列組を選択し、
取得した前記通信パケットの識別子に対応する、前記第１の配列組の識別子用配列の第３の領域に、前記第１の情報が記憶されている場合、前記第１の情報が前記記憶部に記憶されていると判定し、さらに、取得した前記通信パケットの誤り検出符号に対応する、前記第１の配列組の符号用配列の第４の領域に、前記第２の情報が記憶されている場合、前記第２の情報が前記記憶部に記憶されていると判定し、
前記第１の情報が前記第３の領域に記憶され、かつ、前記第２の情報が前記第４の領域に記憶されている場合、取得した前記通信パケットを削除し、前記第１の情報が前記第３の領域に記憶されていない場合、前記第３の領域に前記第１の情報を記憶し、前記第２の情報が前記第４の領域に記憶されていない場合、前記第４の領域に前記第２の情報を記憶し、
前記第１の情報が前記第３の領域に記憶されていない場合、または、前記第２の情報が前記第４の領域に記憶されていない場合、前記記憶部に確保した複数の前記配列組の中から何れか１の未選択の第２の配列組を選択し、
取得した前記通信パケットの識別子に対応する、前記第２の配列組の識別子用配列の領域に前記第１の情報が記憶され、かつ、取得した前記通信パケットの誤り検出符号に対応する、前記第２の配列組の符号用配列の領域に前記第２の情報が記憶されている場合、取得した前記通信パケットを削除する
処理を前記コンピュータに実行させることを特徴とする付記３に記載の通信パケット検出プログラム。
【０４０９】
（付記５）
新たに通信セッションが開始されると、取得した前記通信パケットに含まれる前記識別子に基づき、取得した前記通信パケットに含まれる前記識別子がランダムに変動するランダム識別子か判定するランダム判定処理を行い、
取得した前記通信パケットに含まれる前記識別子がランダム識別子の場合、前記重複判定を行い、前記第１の情報が前記記憶部に記憶され、かつ、前記第２の情報が前記記憶部に記憶されている場合、取得した前記通信パケットを削除し、前記第１の情報が前記記憶部に記憶されていない場合、前記第１の情報を前記記憶部に記憶し、または、前記第２の情報が前記記憶部に記憶されていない場合、前記第２の情報を前記記憶部に記憶し、
取得した前記通信パケットに含まれる前記識別子がランダム識別子でない場合、前記通信パケットの取得に応じて、取得した前記通信パケットに含まれる識別子に対応する第１の情報が記憶部に記憶されているか判定し、
前記第１の情報が前記記憶部に記憶されている場合、取得した前記通信パケットを削除し、前記第１の情報が前記記憶部に記憶されていない場合、前記第１の情報を前記記憶部に記憶する
処理を実行させることを特徴とする付記１に記載の通信パケット検出プログラム。
【０４１０】
（付記６）
前記ランダム判定処理において、
前記識別子は、数値であって、
取得した複数の通信パケットを取得順に前記記憶部に記憶し、
前記複数の通信パケットの各々の識別子が取得順に連続的に増加していない場合、取得した前記通信パケットの識別子がランダムＩＰ識別子と判定する
処理を実行させることを特徴とする付記５に記載の通信パケット検出プログラム。
【０４１１】
（付記７）
前記ランダム判定処理において、
前記複数の通信パケットの各々の識別子が取得順に連続的に増加していない場合であっても、前記複数の通信パケットの中の第１の通信パケットの識別子を基準にして所定の個数前に取得した第２の通信パケットの識別子が、前記第１の通信パケットの識別子よりも大きい場合、取得した前記通信パケットの識別子がランダムＩＰ識別子と判定する
処理を実行させることを特徴とする付記６に記載の通信パケット検出プログラム。
【０４１２】
（付記８）
前記通信パケットの取得に応じて、取得した前記通信パケットに含まれる通信セッションを特定する情報に基づき、取得した前記通信パケットの通信セッションを特定し、
前記重複判定において、特定した前記通信セッションと取得した前記通信パケットに含まれる識別子とに対応する第１の情報が前記記憶部に記憶されているか判定し、さらに、特定した前記通信セッションと取得した前記通信パケットに含まれる誤り検出符号とに対応する第２の情報が前記記憶部に記憶されているか判定し、
前記第１の情報が前記記憶部に記憶されていない場合、特定した前記通信セッションと取得した前記通信パケットに含まれる識別子とに対応する第１の情報を前記記憶部に記憶し、前記第２の情報が前記記憶部に記憶されていない場合、特定した前記通信セッションと取得した前記通信パケットに含まれる誤り検出符号に対応する第２の情報を前記記憶部に記憶する
処理を前記コンピュータに実行させることを特徴とする付記１に記載の通信パケット検出プログラム。
【０４１３】
（付記９）
通信パケットを取得する取得部と
前記取得部による前記通信パケットの取得に応じて、取得した前記通信パケットに含まれる当該通信パケットの識別子に対応する第１の情報が記憶部に記憶されているか判定し、さらに、当該通信パケットに含まれる誤り検出符号に対応する第２の情報が前記記憶部に記憶されているか判定する重複判定を行う判定部と、
前記判定部が、前記第１の情報が前記記憶部に記憶され、かつ、前記第２の情報が前記記憶部に記憶されていると判定した場合、取得した前記通信パケットを削除する削除部と、
前記判定部が、前記第１の情報が前記記憶部に記憶されていないと判定した場合、前記第１の情報を前記記憶部に記憶し、前記判定部が、前記第２の情報が前記記憶部に記憶されていないと判定した場合、前記第２の情報を前記記憶部に記憶する管理部とを有することを特徴とする通信パケット検出装置。
【０４１４】
（付記１０）
通信パケットを取得し、
前記通信パケットの取得に応じて、取得した前記通信パケットに含まれる当該通信パケットの識別子に対応する第１の情報が記憶部に記憶されているか判定し、さらに、当該通信パケットに含まれる誤り検出符号に対応する第２の情報が前記記憶部に記憶されているか判定する重複判定を行い、
前記第１の情報が前記記憶部に記憶され、かつ、前記第２の情報が前記記憶部に記憶されている場合、取得した前記通信パケットを削除し、前記第１の情報が前記記憶部に記憶されていない場合、前記第１の情報を前記記憶部に記憶し、前記第２の情報が前記記憶部に記憶されていない場合、前記第２の情報を前記記憶部に記憶する
処理を実行することを特徴とする通信パケット検出方法。
【符号の説明】
【０４１５】
ＳＹＳ…情報処理システム、ＳＶＲ１,ＳＶＲ２…第１、第２のサーバ、ＳＷ１,ＳＷ２…第１、第２のスイッチ、ＣＴ１〜ＣＴ３…第１〜第３のクライアント、ＡＤ…パケット解析装置、ＤＤ…重複パケット検出装置、ＮＴ…ネットワーク、１０１…ＣＰＵ、１０２…メモリ(記憶部)、１０３…ストレージ装置、１０４…通信装置、１１…取得部、１２…セッション管理部、１３…情報管理部、１４…重複判定部、１５…転送部、１６…削除部、１７…ランダム判定部。
【図１】
0006492707.tif 000004
【図２】
0006492707.tif 000005
【図３】
0006492707.tif 000006
【図４】
0006492707.tif 000007
【図５】
0006492707.tif 000008
【図６】
0006492707.tif 000009
【図７】
0006492707.tif 000010
【図８】
0006492707.tif 000011
【図９】
0006492707.tif 000012
【図１０】
0006492707.tif 000013
【図１１】
0006492707.tif 000014
【図１２】
0006492707.tif 000015
【図１３】
0006492707.tif 000016
【図１４】
0006492707.tif 000017
【図１５】
0006492707.tif 000018
【図１６】
0006492707.tif 000019
【図１７】
0006492707.tif 000020
【図１８】
0006492707.tif 000021
【図１９】
0006492707.tif 000022
【図２０】
0006492707.tif 000023
【図２１】
0006492707.tif 000024
【図２２】
0006492707.tif 000025
【図２３】
0006492707.tif 000026
【図２４】
0006492707.tif 000027
【図２５】
0006492707.tif 000028
【図２６】
0006492707.tif 000029
【図２７】
0006492707.tif 000030
【図２８】
0006492707.tif 000031
【図２９】
0006492707.tif 000032
【図３０】
0006492707.tif 000033
【図３１】
0006492707.tif 000034
【図３２】
0006492707.tif 000035
【図３３】
0006492707.tif 000036
【図３４】
0006492707.tif 000037
【図３５】
0006492707.tif 000038
【図３６】
0006492707.tif 000039
【図３７】
0006492707.tif 000040
【図３８】
0006492707.tif 000041
【図３９】
0006492707.tif 000042