(57)【特許請求の範囲】
【請求項１】
ＩＰパケットの取得に応じて，該取得したＩＰパケットのヘッダに含まれる通信セッションを特定する情報に基づき，前記取得したＩＰパケットが送受信される通信セッションを特定し，記憶部に記憶された，各通信セッションにおいて送受信されるＩＰパケットのヘッダに含まれる可能性があるＩＰパケット識別子のそれぞれに対応するビットからなる管理情報のうち，前記特定した通信セッションに対応する管理情報を参照し，
前記取得したＩＰパケットのＩＰパケット識別子に対応する管理情報に，前記取得したＩＰパケットが取得済であることを示す第１の情報が記憶されている場合，前記取得したＩＰパケットを破棄し，前記取得したＩＰパケットのＩＰパケット識別子に対応する管理情報に，前記取得したＩＰパケットが取得済でないことを示す第２の情報が記憶されている場合，前記特定した通信セッションに対応する管理情報のうち，前記取得したＩＰパケットのＩＰパケット識別子に対応する管理情報に前記第１の情報を記憶し，前記取得したＩＰパケットを出力する，
処理をコンピュータに実行させるパケット処理プログラム。
【請求項２】
請求項１において，
前記記憶部は，各通信セッションに対応する前記管理情報をそれぞれ記憶する複数の記憶領域を有する，
パケット処理プログラム。
【請求項３】
請求項２において，
前記ＩＰパケット識別子は，該ＩＰパケット識別子を有するＩＰパケットが送信された順に割り振られており，
さらに，取得したＩＰパケットの前記ＩＰパケット識別子がサイクリックした場合に，最初のＩＰパケット識別子から所定数のＩＰパケット識別子に対応する前記管理情報に前記第２の情報を記憶し，
取得したＩＰパケットの前記ＩＰパケット識別子が前記第１の情報が記憶された管理情報に対応するＩＰパケット識別子に到達した場合に，前記第２の情報を記憶した管理情報に対応するＩＰパケット識別子と連続する次の所定数のＩＰパケット識別子に対応する管理情報に前記第２の情報を記憶する，
処理をコンピュータに実行させるパケット処理プログラム。
【請求項４】
請求項２において，
さらに，前記管理情報に前記第１の情報が記憶されてから該記憶された管理情報の記憶期間が経過したＩＰパケットの管理情報に前記第２の情報を記憶する，
処理をコンピュータに実行させるパケット処理プログラム。
【請求項５】
請求項４において，
前記記憶期間が経過したＩＰパケットの管理情報に第２の情報を記憶する処理は，
連続した集計期間毎に，前記管理情報に前記第１の情報が記憶された前記ＩＰパケットのＩＰパケット識別子を記憶し，
前記記憶されたＩＰパケット識別子のうち，記憶されてからの期間が前記記憶期間を超えた前記集計期間に対応するＩＰパケット識別子に対応する前記管理情報に前記第２の情報を記憶する，
パケット処理プログラム。
【請求項６】
請求項５において，
前記記憶期間が経過したＩＰパケットの管理情報に第２の情報を記憶する処理は，前記ＩＰパケットの取得頻度が所定の閾値よりも大きい場合に，前記集計期間を短縮し，
前記ＩＰパケットの取得頻度が所定の閾値よりも小さい場合に，前記集計期間を延長する，
パケット処理プログラム。
【請求項７】
請求項１において，
さらに，前記ＩＰパケットの破棄が所定の期間発生しない場合に，前記管理情報の参照を中止する，
処理をコンピュータに実行させるパケット処理プログラム。
【請求項８】
請求項７において，
さらに，前記中止の後，所定の期間が経過した際に，前記管理情報の参照を再開する
処理をコンピュータに実行させるパケット処理プログラム。
【請求項９】
各通信セッションにおいて送受信されるＩＰパケットのヘッダに含まれる可能性があるＩＰパケット識別子のそれぞれに対応するビットからなる管理情報を記憶する記憶部と，
ＩＰパケットの取得に応じて，該取得したＩＰパケットのヘッダに含まれる通信セッションを特定する情報に基づき，前記取得したＩＰパケットが送受信される通信セッションを特定し，前記記憶部に記憶された前記管理情報のうち，前記特定した通信セッションに対応する管理情報を参照し，前記取得したＩＰパケットのＩＰパケット識別子に対応する管理情報に，前記取得したＩＰパケットが取得済であることを示す第１の情報が記憶されている場合，前記取得したＩＰパケットを破棄し，前記取得したＩＰパケットのＩＰパケット識別子に対応する管理情報に，前記取得したＩＰパケットが取得済でないことを示す第２の情報が記憶されている場合，前記特定した通信セッションに対応する管理情報のうち，前記取得したＩＰパケットのＩＰパケット識別子に対応する管理情報に前記第１の情報を記憶し，前記取得したＩＰパケットを出力する処理部と，を有する，
重複パケット処理装置。
【請求項１０】
ＩＰパケットの取得に応じて，該取得したＩＰパケットのヘッダに含まれる通信セッションを特定する情報に基づき，前記取得したＩＰパケットが送受信される通信セッションを特定し，記憶部に記憶された，各通信セッションにおいて送受信されるＩＰパケットのヘッダに含まれる可能性があるＩＰパケット識別子のそれぞれに対応するビットからなる管理情報のうち，前記特定した通信セッションに対応する管理情報を参照し，
前記取得したＩＰパケットのＩＰパケット識別子に対応する管理情報に，前記取得したＩＰパケットが取得済であることを示す第１の情報が記憶されている場合，前記取得したＩＰパケットを破棄し，前記取得したＩＰパケットのＩＰパケット識別子に対応する管理情報に，前記取得したＩＰパケットが取得済でないことを示す第２の情報が記憶されている場合，前記特定した通信セッションに対応する管理情報のうち，前記取得したＩＰパケットのＩＰパケット識別子に対応する管理情報に前記第１の情報を記憶し，前記取得したＩＰパケットを出力する，
パケット処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，パケット処理プログラム，パケット処理装置及びパケット処理方法に関する。
【背景技術】
【０００２】
稼動中のシステムやネットワークにおいて，例えば，ネットワークを流れる通信パケット（以下，単にパケットとも呼ぶ）を取得して解析を行い，稼働状態を把握する場合がある。この通信パケットの取得は，解析対象の通信パケットが通過する場所にキャプチャポイントを設けることによって行われる。このキャプチャポイントは，一般的に，解析に必要な通信パケットを網羅的に取得することを可能にするため複数箇所に設けられる。
【０００３】
通信パケットは，ネットワーク構成等によって，複数のキャプチャポイントを通過する場合がある。この場合，通信パケットの解析は，同一の通信パケットが複数回発生したものとして行われる。そのため，このような通信パケットが発生した場合，通信パケットの解析において，通信パケット数を正しく算出することができなくなる場合がある。また，例えば，パケットロスが発生したことによって再送が行われたものと判断される場合がある。したがって，このような通信パケットの解析は，一般的に，受信した通信パケットの重複チェックを行った後に実行される（例えば，特許文献１乃至４参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２０１０／０８６９０７号
【特許文献２】特開２００９−１３０５２８号公報
【特許文献３】特開２００８−２１９１２７号公報
【特許文献４】特開２０１０−７２９５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
通信パケットの重複チェックは，例えば，過去に取得した通信パケットを記憶し，新たな通信パケットを取得した際に，その取得した通信パケットが記憶されている通信パケットと同じものであるか否かを判断することにより行われる。そして，取得した通信パケットが記憶した通信パケットと同じ通信パケットである場合に，例えば，取得した通信パケットを重複パケットと判断して破棄する。
【０００６】
しかしながら，通信パケットの重複チェックは，例えば，取得した通信パケットに含まれるデータ全体と記憶されている通信パケットに含まれるデータ全体とをマッチングすることによって行われる。そのため，マッチングを行う必要がある通信パケットの数等によっては，ＣＰＵ等の処理負担が増大する要因となる。さらに，重複チェックが発生する頻度がＣＰＵ等の処理能力を上回る場合には，オーバーフローが発生し，重複チェックが正しく行われない場合がある。
【０００７】
そこで，一つの実施の形態の目的は，処理負担の小さい重複チェックを行うパケット処理プログラム，パケット処理装置及びパケット処理方法を提供することにある。
【課題を解決するための手段】
【０００８】
実施の形態の一つの側面によれば，ＩＰパケットの取得に応じて，該取得したＩＰパケットのヘッダに含まれる通信セッションを特定する情報に基づき，前記取得したＩＰパケットが送受信される通信セッションを特定し，記憶部に記憶された，ＩＰパケットのヘッダに含まれるＩＰパケット識別子に対応する管理情報のうち，前記特定した通信セッションに対応する管理情報を参照し，
前記取得したＩＰパケットのＩＰパケット識別子に対応する管理情報が存在する場合，前記取得したＩＰパケットを破棄し，前記取得したＩＰパケットのＩＰパケット識別子に対応する管理情報が存在しない場合，前記取得したＩＰパケットのＩＰパケット識別子に対応する管理情報を前記記憶部に記憶し，前記取得したＩＰパケットを出力する。
【発明の効果】
【０００９】
一つの側面によれば，処理負担の小さい重複チェックを行うことができる。
【図面の簡単な説明】
【００１０】
【図１】情報処理システムの全体構成を示す図である。
【図２】重複パケット検出装置とキャプチャポイントとの関係を説明する図である。
【図３】重複パケット検出装置のハードウエア構成を示す図である。
【図４】図３で示した重複パケット検出装置の機能についてのブロック図である。
【図５】図３で示した情報格納領域に記憶された情報についてのブロック図である。
【図６】第１の実施の形態における重複パケット検出処理の概略を説明するフローチャート図である。
【図７】第１の実施の形態における重複パケット検出処理の詳細を説明するフローチャート図である。
【図８】第１の実施の形態における重複パケット検出処理の詳細を説明するフローチャート図である。
【図９】第１の実施の形態における重複パケット検出処理の詳細を説明するフローチャート図である。
【図１０】第１の実施の形態における重複パケット検出処理の詳細を説明する図である。
【図１１】第１の実施の形態における重複パケット検出処理の詳細を説明する図である。
【図１２】第１の実施の形態における重複パケット検出処理の詳細を説明する図である。
【図１３】第２の実施の形態における重複パケット検出処理を説明するフローチャート図である。
【図１４】第２の実施の形態における重複パケット検出処理を説明するフローチャート図である。
【図１５】第２の実施の形態における重複パケット検出処理を説明するフローチャート図である。
【図１６】第２の実施の形態における重複パケット検出処理を説明する図である。
【図１７】第２の実施の形態における重複パケット検出処理を説明する図である。
【図１８】第２の実施の形態における重複パケット検出処理を説明する図である。
【図１９】第２の実施の形態における重複パケット検出処理を説明する図である。
【図２０】第３の実施の形態における重複パケット検出処理を説明するフローチャート図である。
【図２１】第３の実施の形態における重複パケット検出処理を説明する図である。
【図２２】第３の実施の形態における重複パケット検出処理を説明する図である。
【図２３】第４の実施の形態における重複パケット検出処理を説明するフローチャート図である。
【図２４】第４の実施の形態における重複パケット検出処理を説明するフローチャート図である。
【図２５】第４の実施の形態における重複パケット検出処理を説明するフローチャート図である。
【図２６】第４の実施の形態における重複パケット検出処理を説明するフローチャート図である。
【図２７】第４の実施の形態における重複パケット検出処理を説明する図である。
【図２８】第４の実施の形態における重複パケット検出処理を説明する図である。
【図２９】第４の実施の形態における重複パケット検出処理を説明する図である。
【図３０】第４の実施の形態における重複パケット検出処理を説明する図である。
【図３１】第４の実施の形態における重複パケット検出処理を説明する図である。
【発明を実施するための形態】
【００１１】
［情報処理システムの構成］
図１は，情報処理システムの全体構成を示す図である。図１に示す情報処理システム１０において，サーバ１と，クライアント端末２と，パケット処理装置３（以下，重複パケット検出装置３とも呼ぶ）と，パケット解析装置５とが設置されている。サーバ１及びクライアント端末２は，互いにインターネットやイントラネット等のネットワークを介して，互いにアクセス可能である。また，パケット解析装置５は，図１の例では，重複パケット検出装置３を介して，サーバ１等に接続したスイッチ４に接続している。なお，図１に示す情報処理システム１０においては，２台のサーバ１を有しているが，これ以外の台数のサーバを有する情報処理システムであってよい。また，図１に示す情報処理システム１０においては，３台のクライアント端末２を有しているが，これ以外の台数のクライアント端末を有するものであってよい。
【００１２】
サーバ１は，例えば，クライアント端末２からの処理要求に応じて処理を実行し，その処理の結果をクライアント端末２に返す。具体的に，サーバ１において実行される処理は，例えば，ユーザがクライアント端末２から入力したユーザのスケジュール等の情報を管理するものであり，ユーザからの処理要求に応じて，必要な情報をクライアント端末２に表示させるものであってよい。また，サーバ１において実行される処理は，例えば，複数のユーザが入力した各ユーザのスケジュール等の情報を管理するものであり，ユーザからの処理要求に応じて，ユーザ全員のスケジュールをまとめてクライアント端末に表示させるものであってもよい。
【００１３】
クライアント端末２は，例えば，サーバ１に処理要求を送信し，その結果を受信するものである。クライアント端末２は，例えば，デスクトップＰＣ等の据え置き型の端末や携帯電話等のリモート端末である。
【００１４】
スイッチ４は，図１の例においては，サーバ１とネットワークとの間に配置されているものであり，例えば，ミラーポート（図示しない）を有するものである。ミラーポートは，例えば，ネットワークを流れる通信パケットを複製してそれぞれ出力するものである。図１の例において，スイッチ４のミラーポートは，例えば，ネットワークからサーバ１に向けて送信された通信パケットを複製し，サーバ１に向けて送信された通信パケットと同じ通信パケットを重複パケット検出装置３に送信する。また，図１の例において，スイッチ４とは別にネットワークタップを設置し，これによってネットワークを流れる通信パケットを複製するものであってもよい。なお，以下，通信パケットは，ＩＰ(Internet Protocol）において送受信されるＩＰパケットであるものとして説明を行う。
【００１５】
パケット解析装置５は，例えば，サーバ１やネットワークの稼動状態を監視するために，ネットワークを流れる通信パケットを取得して解析を行うものである。具体的に，パケット解析装置５は，例えば，単位時間内にネットワークを流れる通信パケットの数やパケットロスの発生有無についての解析（レイヤー４レベルの解析）や，アプリケーションの動作を含めたレスポンスタイムについての解析（レイヤー７レベルの解析）等を行う。また，パケット解析装置５は，システム管理者等の要求に応じて，解析結果を加工して出力するものであってもよい。
【００１６】
重複パケット検出装置３は，パケット解析装置５において解析を行うための通信パケットをネットワークから取得し，パケット解析装置５に送信する。そして，重複パケット検出装置３は，例えば，取得した通信パケットをパケット解析装置５に送信する前に，重複チェックを行って検出した重複パケットを排除する。これにより，パケット解析装置５は，重複パケットを排除した状態で，通信パケットの解析を行うことが可能になる。
【００１７】
［重複パケット検出装置とキャプチャポイント］
次に，重複パケット検出装置とキャプチャポイントについて説明する。図２は，重複パケット検出装置とキャプチャポイントとの関係を説明する図である。
【００１８】
キャプチャポイントは，図２に示すように，重複パケット検出装置３がネットワークにおいて通信パケットを取得する場所である。この通信パケットは，通信パケットに関するサービスの種類や各ネットワークの管理者の違いに依存して，送信される通信経路が異なる場合がある。そのため，キャプチャポイントは，複数箇所に設けられるのが一般的である。これにより，解析を行うために必要な通信パケットを網羅的に取得することが可能になる。
【００１９】
そして，解析対象の通信パケットは，ネットワーク上の機器における経路設定等によって，複数のキャプチャポイント（図２のキャプチャポイントＡ及びキャプチャポイントＢ）を通過する場合がある。この場合，パケット解析装置５における通信パケットの解析は，同一の通信パケットが複数回発生したものとして行われることになる。そのため，重複パケット検出装置３は，一般的に，取得した通信パケットに対して重複チェックを行い，重複パケットを排除した状態の通信パケットをパケット解析装置５に送信する。
【００２０】
ここで，重複チェックを行うためには，過去に取得した通信パケットを記憶し，新たに通信パケットを取得したときに，記憶した通信パケットとのマッチングを行う。そのため，重複パケット検出装置３は，重複チェックを行うために，取得した通信パケットの全てを保存しておく。そして，新たに通信パケットを取得する毎に，取得した通信パケットと保存されている通信パケットのマッチングを行い，重複パケットであると判定した場合に，取得した通信パケットを破棄する処理を行う。しかし，例えば，高速通信回線（例えば，通信速度が１０（Ｇｂｐｓ）である通信回線）によって通信パケットが送受信される場合，重複パケット検出装置３が保存する必要がある通信パケットの数が大量になる。したがって，この場合，マッチングが行われる回数が増加することになり，重複パケット検出装置３のＣＰＵ等の処理負担が増大する。
【００２１】
この点，例えば，特開２０１０−７２９５５号公報には，通信パケットの通信量の計測等を行う目的で，新たに取得した通信パケットと，定期的にサンプリングした通信パケットとのマッチングを行う点が開示されている。しかし，上記のように重複パケットの排除を行う場合においては，取得した通信パケットを全て保存する必要がある。そのため，定期的にサンプリングした通信パケットを保存する場合と比較して，マッチング時におけるＣＰＵ等の処理負担が大きく異なる。
【００２２】
また，重複チェックが発生する頻度がＣＰＵ等の処理能力を上回る場合には，オーバーフローが発生し，重複チェックが正しく行われない場合がある。
【００２３】
そこで，本実施の形態では，取得した通信パケットに含まれるＩＰパケット識別子（以下，ＩＰ識別子とも呼ぶ）に対応する管理情報が存在する場合には，取得したパケットを破棄し，管理情報が存在しない場合には，取得したパケットの管理情報を記憶することにより，重複パケットを排除する。
【００２４】
［重複パケット検出装置の構成］
初めに，重複パケット検出装置３の構成について説明する。図３は，重複パケット検出装置のハードウエア構成を示す図である。重複パケット検出装置３は，プロセッサであるＣＰＵ３０１と，メモリ３０２と，外部インターフェース（Ｉ／Ｏユニット）３０３と，記憶媒体３０４とを有する。各部は，バス３０５を介して互いに接続される。記憶媒体３０４は，例えば，記憶媒体３０４内のプログラム格納領域（図示しない）に，重複パケットを検出する処理（以下，重複パケット検出処理とも呼ぶ）を行うためのプログラム３１０（以下，パケット処理プログラムまたは重複パケット検出プログラムとも呼ぶ）を記憶する。ＣＰＵ３０１は，図３に示すように，プログラム３１０の実行時に，プログラム３１０を記憶媒体３０４からメモリ３０２にロードし，プログラム３１０と協働して重複パケット検出処理を行う。また，記憶媒体３０４は，例えば，重複パケット検出処理を行う際に用いられる情報を記憶する情報格納領域３３０（以下，記憶部３３０とも呼ぶ）を有する。
【００２５】
図４は，図３で示した重複パケット検出装置の機能についてのブロック図である。また，図５は，図３で示した情報格納領域に記憶された情報についてのブロック図である。ＣＰＵ３０１は，プログラム３１０と協働することにより，例えば，パケット取得部３１１と，セッション情報記憶部３１２と，管理情報記憶部３１３と，パケット判定部３１４と，パケット転送部３１５として動作する。また，ＣＰＵ３０１は，プログラム３１０と協働することにより，例えば，パケット削除部３１６と，記憶期間記憶部３１７と，更新周期管理部３１８と，判定実行管理部３１９として動作する。なお，以下，各部の一部または全部を処理部とも呼ぶ。
【００２６】
また，情報格納領域３３０には，例えば，セッション情報３３１と，管理情報３３２と，記憶位置情報３３３と，最大識別子情報３３４と，記憶期間情報３３５とが記憶されている。また，情報格納領域３３０には，例えば，初期化管理情報３３６と，更新周期情報３３７と，最大取得数情報３３８と，更新周期閾値情報３３９と，判定実行情報３４０とが記憶されている。
【００２７】
パケット取得部３１１は，例えば，パケット解析装置５において解析を行うための通信パケットを取得する。パケット取得部３１１は，例えば，取得すべき通信パケットが経由するネットワーク上に設けられた１つ以上のキャプチャポイントにおいて通信パケットを取得する。
【００２８】
セッション情報記憶部３１２は，例えば，パケット取得部３１１が取得した通信パケットが送受信される通信セッション（以下，セッションとも呼ぶ）に関する情報（通信セッションを特定するための情報）をセッション情報３３１として情報格納領域３３０に記憶する。通信セッションは，通信パケットを送受信する端末（例えば，サーバ１やクライアント端末２）間において確立されるものであり，通信パケットを送受信する端末間における論理的な接続関係である。以下，通信パケットの送受信が行う場合に，通信パケットの送受信を行う端末間において通信セッションが確立されている必要があるものとして説明を行う。なお，セッション情報３３１の詳細については後述する。
【００２９】
管理情報記憶部３１３は，例えば，管理情報３３２を情報格納領域３３０に記憶する。管理情報３３２は，通信パケットのＩＰヘッダに含まれるＩＰ識別子に対応して，通信セッション毎に記憶される情報である。ＩＰヘッダは，通信パケット（ＩＰパケット）の送信元端末を特定する情報である「送信元ＩＰ」や送信先端末を特定する情報である「送信先ＩＰ」等を含むものであり，各通信パケットに付加されているである。ＩＰ識別子は，例えば，通信パケットの送信元端末において，通信セッション毎に，送信順（発生順）に割り振られるものである。また，ＩＰ識別子は，ある通信セッションにおいて発生した通信パケットがＩＰ識別子の最大値（例えば，６５５３５）を超えた場合，最初の識別子（例えば，０）に戻って割り振られるものであってよい（以下，これをサイクリックするとも呼ぶ）。
【００３０】
具体的に，管理情報記憶部３１３は，例えば，通信パケットの取得に応じて，取得した通信パケットのＩＰ識別子に対応する管理情報３３２を記憶する。この場合，管理情報記憶部３１３は，例えば，取得した通信パケットのＩＰ識別子に対応する管理情報３３２のみを情報格納領域３３０に記憶するものであってよい。この場合，管理情報管理部３１３は，例えば，管理情報３３２を記憶する情報格納領域３３０に，予め第１の情報（例えば，１）を記憶するものであってよい。さらに，管理情報管理部３１３は，例えば，通信パケットを取得したときに，その通信パケットのＩＰ識別子に対応する管理情報３３２を記憶する情報格納領域３３０を，第２の情報（例えば，０）に更新するものであってもよい。
【００３１】
また，各通信セッションの管理情報３３２の記憶位置は，記憶位置情報３３３に記憶されているものであってよい。そして，管理情報記憶部３１３や後述するパケット判定部３１４は，記憶位置情報３３３に基づいて管理情報３３２を参照するものであってよい。
【００３２】
さらに，管理情報記憶部３１３は，例えば，取得した通信パケットのＩＰ識別子のうち最大値を最大識別子情報３３４として記憶しておくものであってもよい。そして，管理情報記憶部３１３は，例えば，新たに取得した通信パケットのＩＰ識別子から最大識別子情報３３４を減算した値が所定の閾値（例えば，−３００００）よりも下回った場合に，ＩＰ識別子がサイクリックしたと判断するものであってよい。すなわち，ＩＰ識別子は，通信パケットの送信順に割り振られるものであるため，ネットワーク遅延等が発生している場合を除けば，新たに取得した取得した通信パケットのＩＰ識別子は，最大識別子情報３３４よりも大きくなる。そのため，新たに取得した通信パケットのＩＰ識別子が最大識別子情報３３４よりも大幅に小さくなった場合に，管理情報記憶部３１３は，ＩＰ識別子のサイクリックが発生したと判断することが可能になる。
【００３３】
なお，この場合，管理情報記憶部３１３は，例えば，発生し得るＩＰ識別子のうち最初のＩＰ識別子から所定数（例えば，発生し得るＩＰ識別子の前半分）のＩＰ識別子に対応する管理情報３３２に第２の情報を記憶するものであってよい。さらに，取得した通信パケットのＩＰ識別子が第１の情報が記憶されている管理情報３３２に対応するＩＰ識別子（例えば，発生し得るＩＰ識別子の真中のＩＰ識別子）に到達した場合に，第２の情報を記憶した管理情報３３２に対応するＩＰ識別子と連続する次の所定数（例えば，発生し得るＩＰ識別子の後半分）のＩＰ識別子に対応する管理情報３３２に第１の情報を記憶するものであってよい。すなわち，ＩＰ識別子がサイクリックした場合，同じＩＰ識別子を有する通信パケットが複数回発生することになる。そのため，過去に割り振られているＩＰ識別子を含む通信パケットを取得する前に，対応する管理情報３３２が記憶される情報格納領域３３０に第１の情報を記憶する（初期化する）。管理情報３３２の具体例については後述する。また，ＩＰ識別子がサイクリックする場合の詳細については後述する。
【００３４】
さらに，管理情報記憶部３１３は，例えば，管理情報３３２の記憶期間が記憶された記憶期間情報３３５と，管理情報３３２に第１の情報が記憶された時刻を管理する初期化管理情報３３６とを参照し，管理情報３３２に第１の情報が記憶されてから管理情報３３２を記憶する期間が経過した管理情報３３２に第２の情報を記憶するものであってもよい。具体的に，管理情報記憶部３１３は，例えば，連続した集計期間毎に，管理情報３３２に第１の情報が記憶された通信パケットのＩＰ識別子を記憶する。そして，管理情報記憶部３１３は，例えば，記憶されてからの期間が記憶期間情報３３５を経過した集計期間に記憶されたＩＰ識別子に対応する管理情報３３２に第２の情報を記憶するものであってよい。
【００３５】
パケット判定部３１４は，例えば，通信パケットを取得した際に，取得した通信パケットと同じ通信セッションの管理情報３３２を参照し，取得した通信パケットのＩＰ識別子に対応する管理情報３３２が存在する（第１の情報が記憶されている）場合，取得した通信パケットを破棄する。また，パケット判定部３１４は，例えば，通信パケットを取得した際に，取得した通信パケットのＩＰ識別子に対応する管理情報３３２が存在しない（第２の情報が記憶されている）場合，取得した通信パケットのＩＰ識別子に対応する管理情報３３２を記憶する。
【００３６】
パケット転送部３１５は，例えば，パケット判定部３１４が取得した通信パケットのＩＰ識別子に対応する管理情報３３２が存在すると判定した場合，取得した通信パケットを出力する。具体的に，パケット転送部３１５は，取得した通信パケットをパケット解析装置５に送信する。パケット転送部３１５は，例えば，取得したパケットをパケット解析装置５に転送を行う前に，重複パケット検出装置３（例えば，情報格納領域３３０等）内に記憶するものであってもよい。また，パケット転送部３１５は，例えば，取得した通信パケットをパケット解析装置５がアクセス可能な領域（例えば，パケット解析装置５内の記憶領域）に記憶し，パケット解析装置５がここにアクセスを行うことによって，通信パケットを取得するものであってもよい。
【００３７】
パケット削除部３１６は，例えば，パケット判定部３１４が取得した通信パケットのＩＰ識別子に対応する管理情報３３２が存在すると判定した場合，取得した通信パケットを破棄する。
【００３８】
記憶期間記憶部３１７は，例えば，管理情報３３２を記憶する期間（例えば，１０（ｍｓ）等）を記憶期間情報３３５として情報格納領域３３０に記憶する。
【００３９】
更新周期管理部３１８は，例えば，通信パケットの取得頻度に基づいて，集計期間の長さを更新する。具体的に，更新周期管理部３１８は，例えば，パケット取得部３１１が所定の時間（例えば，３０（ｍｓ）等）毎に取得した通信パケット数を継続して計測（取得）する。そして，更新周期管理部３１８は，例えば，単位時間毎に取得した通信パケット数のうちの最大値を，最大取得数情報３３８として情報格納領域３３０に記憶する。また，更新周期管理部３１８は，例えば，最大取得数情報３３８と集計期間とを関連付けて記憶された更新周期閾値情報３３９を参照し，更新周期閾値情報３３９に基づいて，集計期間を更新するものであってよい。
【００４０】
判定実行管理部３１９は，例えば，パケット削除部３１６による通信パケットの破棄が予め定めた判定期間（例えば，２０（ｍｓ））の間に発生しない場合，パケット判定部３１４に管理情報３３２の参照を中止するように指示する。また，判定実行管理部３１９は，例えば，パケット判定部３１４による管理情報３３２の参照を中止した後であって判定中止期間（例えば，１０（ｍｓ））が経過した後に，パケット判定部３１４に管理情報３３２の参照を再開するように指示するものであってよい。さらに，判定実行管理部３１９は，例えば，パケット判定部３１４に管理情報３３２の参照を中止するように指示する際に，管理情報記憶部３１３に参照を中止する管理情報３３２を消去するように指示するものであってよい。なお，判定期間及び判定中止期間は，例えば，予め設定された判定実行情報３４０に記憶されているものであってよい。そして，判定実行管理部３１９は，例えば，判定実行情報３４０を参照して，パケット判定部３１４に指示を行うものであってもよい。
【００４１】
［第１の実施の形態］
次に第１の実施の形態について説明する。図６は，第１の実施の形態における重複パケット検出処理の概略を説明するフローチャート図である。
【００４２】
初めに，重複パケット検出装置３がキャプチャポイントから通信パケットを取得した場合（Ｓ１），重複パケット検出装置３は，取得した通信パケットのＩＰヘッダに含まれるＩＰ識別子に対応する管理情報３３２が存在するか否かの確認を行う（Ｓ２）。そして，取得した通信パケットに対応する管理情報３３２が存在する場合（Ｓ２のＹＥＳ），重複パケット検出装置３は，取得した通信パケットを破棄する（Ｓ３）。一方，取得した通信パケットに対応する管理情報３３２が存在しない場合（Ｓ２のＮＯ），重複パケット検出装置３は，取得した通信パケットのＩＰ識別子に対応する管理情報３３２を取得済にする。さらに，重複パケット検出装置３は，例えば，取得した通信パケットを出力する（Ｓ４）。
【００４３】
すなわち，重複パケット検出装置３は，取得した通信パケットに対応する管理情報３３２が存在する場合，取得した通信パケットと同じ通信パケットを既に取得しているもの（既にパケット解析装置５に送信しているもの）と判断する。そのため，この場合，重複パケット検出装置３は，取得した通信パケットを破棄する。また，重複パケット検出装置３は，取得した通信パケットに対応する管理情報３３２が存在しない場合，取得した通信パケットと同じ通信パケットをまだ取得していないものと判断する。そのため，重複パケット検出装置３は，この場合，取得した通信パケットに対応する管理情報３３２を記憶する。これにより，取得した通信パケットの重複パケットをその後受信した場合において，その重複パケットを破棄することが可能になる。
【００４４】
このように，第１の実施の形態によれば，重複パケット検出装置３は，通信パケットを取得した際に，記憶部３３０に記憶された，通信パケットを送受信する端末間において確立された通信セッション毎に通信パケットのＩＰヘッダに含まれるＩＰ識別子に対応する管理情報３３２のうち，取得した通信パケットと同じ通信セッションの管理情報３３２を参照する。そして，重複パケット検出装置３は，取得した通信パケットのＩＰ識別子に対応する管理情報３３２が存在する場合，取得した通信パケットを破棄し，取得した通信パケットのＩＰ識別子に対応する管理情報３３２が存在しない場合，取得した通信パケットのＩＰ識別子に対応する管理情報３３２を記憶する。これにより，重複パケット検出装置３は，通信パケットの取得した場合に，取得した通信パケットに対応する管理情報３３２のみを参照することにより，取得した通信パケットの重複チェックを行うことが可能になる。そのため，重複パケット検出装置３は，新たに取得した通信パケットと，過去に取得した通信パケットとのマッチングを行う際に，過去に取得した通信パケットの中から，新たに取得した通信パケットの検索を行う必要がない。したがって，重複パケット検出装置３は，マッチング時のＣＰＵ等の処理負担を軽減させることが可能になる。また，重複パケット検出装置３は，重複チェックを行うために，過去の取得した通信パケットの全てを保存しておく必要がなくなるため，使用する記憶領域の容量を削減することが可能になる。
【００４５】
なお，情報格納領域３３０は，例えば，発生し得るＩＰ識別子に対応する管理情報３３２をそれぞれ記憶することができる記憶領域（例えば，１ビットの情報を記憶可能である記憶領域）を有するものであってよい。この場合，重複パケット検出装置３は，例えば，発生し得るＩＰ識別子に対応する全ての記憶領域に０（第１の情報）を記憶しておく。そして，通信パケットを取得した際に，取得した通信パケットのＩＰ識別子に対応する記憶領域を１（第２の情報）に更新するものであってよい。
【００４６】
[第１の実施の形態の詳細]
次に，第１の実施の形態の詳細について説明する。図７から図９は，第１の実施の形態における重複パケット検出処理の詳細を説明するフローチャート図である。また，図１０から図１２は，第１の実施の形態における重複パケット検出処理の詳細を説明する図である。図１０から図１２を参照しながら，図７から図９の重複パケット検出処理の詳細を説明する。
【００４７】
初めに，重複パケット検出装置３のパケット取得部３１１がキャプチャポイントにおいて通信パケットを取得した場合（Ｓ１１），パケット取得部３１１は，例えば，取得した通信パケットが含まれる通信セッションを特定するための情報を取得する（Ｓ１２，Ｓ１３）。
【００４８】
図１０は，本実施の形態における通信パケット（ＩＰパケット）の構成を示す図である。ＩＰパケットは，「送信元ＩＰ」や「送信先ＩＰ」等の情報を含むＩＰヘッダと，ＩＰペイロードとを含む。そして，本実施の形態における通信パケットには，図１０（Ａ）に示すように，ＴＣＰ（Transmission Control Protocol）ヘッダを有するＩＰパケットと，図１０（Ｂ）に示すように，ＵＤＰ（User Datagram Protocol）ヘッダを有するＩＰパケットとが含まれる。具体的に，図１０（Ａ）に示すＩＰパケットのＩＰペイロードは，「送信元ポート」や「送信先ポート」等の情報を含むＴＣＰヘッダと，ＴＣＰペイロードとを含む。また，図１０（Ｂ）に示すＩＰパケットのＩＰペイロードは，「送信元ポート」や「送信先ポート」等の情報を含むＵＤＰヘッダと，ＵＤＰペイロードとを含む。
【００４９】
そして，パケット取得部３１１は，ＩＰヘッダを参照し，取得した通信パケットの「送信元ＩＰ」，「送信先ＩＰ」及び「プロトコル番号（プロトコル情報）」を取得する（Ｓ１２）。さらに，パケット取得部３１１は，ＴＣＰヘッダ（ＵＤＰヘッダ）を参照し，取得した通信パケットの「送信元ポート」及び「送信先ポート」を取得する（Ｓ１３）。すなわち，パケット取得部３１１は，取得した通信パケットが送受信される通信セッションを特定するために必要な情報を，取得した通信パケットのＩＰヘッダ及びＴＣＰヘッダ（ＵＤＰヘッダ）から取得する。これにより，後述するように，セッション情報記憶部３１２は，パケット取得部３１１が取得した通信パケットが通信する通信セッションを一意に特定することができる。なお，本実施の形態において，パケット取得部３１１は，少なくともＩＰヘッダ及びＴＣＰヘッダ（ＵＤＰヘッダ）がカプセル化（暗号化）されていない状態の通信パケットを取得するものとする。
【００５０】
具体的に，パケット取得部３１１は，例えば，ＩＰヘッダ及びＴＣＰヘッダのフォーマットに従って，取得した通信パケットのＩＰヘッダまたはＴＣＰヘッダにおいて取得したい情報が設定されている位置を特定し，各情報の取得を行うものであってよい。この場合，例えば，パケット取得部３１１は，ＩＰヘッダのフォーマットを参照し，ＩＰヘッダに含まれる「送信元ＩＰ」等を取得する。続いて，パケット取得部３１１は，ＩＰヘッダのフォーマットを参照し，ＩＰヘッダに含まれる「ヘッダ長」に基づき，取得した通信パケットのＩＰペイロード（ＴＣＰヘッダまたはＵＤＰヘッダ）の先頭位置を特定する。そして，パケット取得部３１１は，例えば，ＴＣＰヘッダ（ＵＤＰヘッダ）のフォーマットを参照し，ＴＣＰヘッダ（ＵＤＰヘッダ）に含まれる「送信元ポート」等を取得する。
【００５１】
なお，重複パケット検出装置３のパケット転送部３１５は，例えば，パケット取得部３１１が取得したパケットを，ＩＰヘッダ及びＴＣＰヘッダが付加された状態でパケット解析装置５に送信するものであってよい。これにより，パケット解析装置５では，ネットワークを通信している状態の通信パケットについて解析を行うことが可能になる。また，ＴＣＰヘッダは，ＴＣＰペイロードの先頭位置を示す「データオフセット」を有しており，ＵＤＰヘッダは，そのデータサイズが固定長である。そのため，パケット解析装置５は，重複パケット検出装置３から送信されたＴＣＰヘッダまたはＵＤＰヘッダを参照することにより，ＴＣＰペイロードまたはＵＤＰペイロードの先頭位置を特定することが可能になる。
【００５２】
そして，重複パケット検出装置３のセッション情報記憶部３１２は，例えば，Ｓ１２及びＳ１３で取得した情報に基づいて，取得した通信パケットが含まれる通信セッションを特定する（Ｓ１４）。なお，プロトコル番号には，例えば，ＴＣＰのプロトコル番号と，ＵＤＰのプロトコル番号とが含まれるものであってよい。
【００５３】
次に，セッション情報記憶部３１２は，例えば，特定した通信セッションに関するセッション情報３３１が情報格納領域３３０に記憶されているか否かの確認を行う（Ｓ１５）。そして，セッション情報３３１が記憶されていない場合（Ｓ１５のＮＯ），セッション情報記憶部３１２は，例えば，取得したＩＰヘッダに含まれる情報に基づいて，取得した通信パケットを含む通信セッションに関するセッション情報３３１を情報格納領域３３０に記憶する（Ｓ１６）。また，セッション情報記憶部３１２は，例えば，新たな通信セッションに関する管理情報３３２を記憶するための記憶領域を確保し，確保した記憶領域に関する情報を記憶位置情報３３３に記憶するものであってもよい（Ｓ１７）。
【００５４】
図１１は，セッション情報３３１と記憶位置情報３３３の具体例を示す図である。図１１（Ａ）に示すように，セッション情報３３１は，例えば，通信セッション毎に割り振られた「ＩＤ」と，送信元端末のＩＰアドレスである「送信元ＩＰ」と，送信先端末のＩＰアドレスである「送信先ＩＰ」と，通信セッションのプロトコルを示す「プロトコル番号」とを項目として有している。また，セッション情報３３１は，例えば，さらに，送信元端末のポート番号である「送信元ポート」と，送信先端末のポート番号である「送信先ポート」とを項目として有している。情報格納領域３３０にセッション情報３３１として記憶された各通信セッションは，「送信元ＩＰ」と，「送信先ＩＰ」と，「プロトコル番号」と，「送信元ポート」と，「送信先ポート」とによって一意に定まる。具体的に，図１１（Ａ）におけるセッション情報３３１は，「送信元ＩＰ」として，１０．２０．３０．４０を設定し，「送信先ＩＰ」として，１０．２０．３０．５０を設定し，「プロトコル番号」として，６を設定する。さらに，図１１（Ａ）におけるセッション情報３３１は，「送信元ポート」として，２０００を設定し，「送信先ポート」として，２０を設定している。図１１（Ａ）のその他の情報については説明を省略する。
【００５５】
また，図１１（Ｂ）に示すように，記憶位置情報３３３は，例えば，記憶領域（情報格納領域３３０）において，各通信セッションに関する管理情報３３２が記憶されている先頭アドレスを記憶しているものであってよい。具体的に，図１１（Ｂ）の例において，記憶位置情報３３３は，「ＩＤ」が１，２，３である通信セッションの「先頭記憶アドレス」として，それぞれ，Ｐ１，Ｐ２，Ｐ３を記憶している。なお，例えば，各通信セッションに関する管理情報３３２のファイル名がそれぞれ決められている場合においては，記憶位置情報３３３は，各通信セッションの「ＩＤ」と，通信セッション毎の管理情報３３２のファイル名とを関連付けて記憶するものであってもよい。
【００５６】
図７に戻り，重複パケット検出装置３の管理情報記憶部３１３は，例えば，取得した通信パケットのＩＰヘッダに含まれるＩＰ識別子を取得する（Ｓ１８）。そして，管理情報記憶部３１３は，例えば，ＩＰ識別子周回処理を行う（Ｓ１９）。ＩＰ識別子周回処理については後述する。
【００５７】
図１２は，図１１における「ＩＤ」が１である通信セッションの管理情報３３２の具体例を示す図である。図１２に示すように，管理情報３３２は，例えば，ビット列である。また，管理情報３３２の各ビット領域は，例えば，発生し得るＩＰ識別子（例えば，０から６５５３５）に対応する管理情報３３２をそれぞれ記憶することができる記憶領域であることが好ましい。
【００５８】
そして，図１２に示すビット列において，対応するＩＰ識別子が含まれる通信パケットを受信しているビット領域には，１が記憶される。また，対応するＩＰ識別子が含まれる通信パケットを受信していないビット領域には，０が記憶される。そのため，パケット取得部３１１が通信パケットの取得を開始する前の管理情報３３２は，全てのビット領域に０が記憶されているものであってよい。
【００５９】
具体的に，図１２に示す管理情報３３２の例は，図１１（Ｂ）に示す記憶位置情報３３３に対応し，それぞれ先頭アドレスがＰ１，Ｐ２，Ｐ３である３つのビット列を含む場合の例である。図１２に示す例において，先頭アドレスがＰ１であるビット列は，先頭から１ビット目，３ビット目，５ビット目，１５ビット目のビット領域に１が記憶されている。すなわち，図１２に示す管理情報３３２においては，ＩＰ識別子が１，３，５，１５である通信パケットが記憶済である。同様に，先頭アドレスがＰ２であるビット列は，先頭から３ビット目，７ビット目，１６ビット目のビット領域に１が記憶されており，先頭アドレスがＰ３であるビット列は，先頭から１２ビット目，２１ビット目のビット領域に１が記憶されている。  なお，図１２に示す管理情報３３２は，対応するＩＰ識別子が含まれる通信パケットを受信しているビット領域には０が記憶され，対応するＩＰ識別子が含まれる通信パケットを受信しているビット領域には１が記憶されるものであってもよい。
【００６０】
［ＩＰ識別子周回処理（Ｓ１９）］
次に，ＩＰ識別子周回処理について説明する。図９は，ＩＰ識別子周回処理を説明するフローチャート図である。
【００６１】
通信パケットの送信元端末は，同一の通信セッションについて，割り振ることができるＩＰ識別子の数（例えば，６５５３６）を超える通信パケットを送信する場合がある。この場合，通信パケットの送信元端末は，ＩＰ識別子をサイクリックさせ，再び最初のＩＰ識別子（例えば，０）から順番に割り振って通信パケットを送信する（以下，これを周回とも呼ぶ）。
【００６２】
ここで，サイクリックされたＩＰ識別子が割り振られた通信パケットをパケット取得部３１１が取得した場合，管理情報記憶部３１３は，過去に管理情報３３２に第１の情報を記憶したビット領域を，新たなに受信した通信パケットに関する管理情報３３２の記憶に使用する必要がある。そこで，管理情報記憶部３１３は，ＩＰ識別子が周回したことを検知した場合に，ＩＰ識別子周回処理を実行することにより，例えば，管理情報３３２のビット列の先頭から所定の長さの管理情報３３２に第２の情報を記憶する。以下，ＩＰ識別子周回処理の詳細について説明する。
【００６３】
図９において，管理情報記憶部３１３は，例えば，パケット取得部３１１が取得した通信パケットにＩＰヘッダに含まれるＩＰ識別子を取得し，ＩＰ識別子が周回しているか否かを確認する（Ｓ３１）。具体的に，管理情報記憶部３１３は，例えば，最大識別子情報３３４を参照し，新たに取得した通信パケットのＩＰ識別子から最大識別子情報３３４を減算して算出する。そして，管理情報記憶部３１３は，例えば，算出した値が所定の閾値（例えば，−３００００）を下回った場合に，ＩＰ識別子が周回しているものと判断する。すなわち，例えば，発生し得るＩＰ識別子の数が６５５３６である場合，周回発生時における最大識別子情報３３４は６５５３６に近い値であるのに対し，新たに取得した通信パケットのＩＰ識別子は０に近い値になる。そして，この場合，新たに取得した通信パケットのＩＰ識別子と最大識別子情報３３４との差は，−３００００を下回ることになる。そのため，管理情報記憶部３１３は，この場合に，ＩＰ識別子の周回が発生したことを検知することが可能になる。
【００６４】
そして，取得したＩＰ識別子が周回している場合（Ｓ３１のＹＥＳ），管理情報記憶部３１３は，例えば，発生し得るＩＰ識別子の前半分に対応する管理情報３３２を消去する（Ｓ３２）。これにより，管理情報記憶部３１３は，ＩＰ識別子の周回の発生直後から新たな管理情報３３２を記憶することが可能になる。さらに，管理情報記憶部３１３は，例えば，最大識別子情報３３４として情報格納領域３３０に０を記憶する（Ｓ３３）。また，ＩＰ識別子が発生し得るＩＰ識別子の後半に到達した場合（Ｓ３４のＹＥＳ），管理情報記憶部３１３は，例えば，発生し得るＩＰ識別子の後半に対応する管理情報３３２を消去する（Ｓ３５）。
【００６５】
すなわち，図９の例において，ＩＰ識別子の周回が発生したことを検知した場合，管理情報記憶部３１３は，管理情報３３２のビット列における前半分のビット領域に０を記憶する。また，管理情報記憶部３１３は，ＩＰ識別子が発生し得るＩＰ識別子の後半に到達したことを検知した場合に，管理情報３３２のビット列における後半のビット領域に０を記憶する。これによって，管理情報記憶部３１３は，サイクリックされたＩＰ識別子を取得した場合，各ビット領域の初期化を行ってから新たな管理情報３３２の記憶を行うことが可能になる。そのため，例えば，ＩＰ識別子の周回が発生した場合において，第１の情報が記憶されている管理情報３３２が今回の周回において記憶されたものなのか，以前の周回において記憶されたものなのかを，判断できなくなることを防止することができる。また，サイクリックされたＩＰ識別子の取得後においても，管理情報３３２を記憶する際にはビット領域が初期化されているため，管理情報記憶部３１３は，ビット領域を０から１への更新のみ行うことによって，管理情報３３２の記憶を行うことが可能になる。
【００６６】
なお，図９の例においては，管理情報３３２のビット列を前半と後半とに分割して管理情報３３２を消去する場合について説明したが，ビット列を３つ以上に分割してそれぞれ管理情報３３２を消去するものであってもよい。また，管理情報記憶部３１３は，初期化されていないビット領域に対応するＩＰ識別子を含む通信パケットを取得する毎に，例えば，所定数（例えば，１０００等）のＩＰ識別子に対応する管理情報３３２を初期化するものであってもよい。
【００６７】
図８に戻り，重複パケット検出装置３のパケット判定部３１４は，例えば，取得したＩＰ識別子に対応する管理情報３３２に第１の情報が記憶されているか否かを確認する（Ｓ２１）。記憶されていない場合（Ｓ２１のＮＯ），管理情報記憶部３１３は，取得したＩＰ識別子に対応する管理情報３３２に第１の情報を記憶する（Ｓ２２）。そして，重複パケット検出装置３のパケット転送部３１５は，例えば，パケット取得部３１１が取得した通信パケットをパケット解析装置５に送信する（Ｓ２３）。すなわち，取得したＩＰ識別子に対応する管理情報３３２に第１の情報が記憶されていない場合，そのＩＰ識別子に対応する通信パケットは重複パケットではない。そのため，この場合，パケット転送部３１５は，取得した通信パケットをパケット解析装置５に送信する。なお，管理情報記憶部３１３は，例えば，パケット転送部３１５がパケット解析装置５に通信パケットを送信する際に，情報格納領域３３０等に取得した通信パケットを記憶するものであってもよい。
【００６８】
さらに，取得したＩＰ識別子が情報格納領域３３０に記憶された最大識別子情報３３４より大きい場合（Ｓ２４のＹＥＳ），管理情報記憶部３１３は，例えば，取得したＩＰ識別子を最大識別子情報３３４に記憶する（Ｓ２５）。これにより，管理情報記憶部３１３は，ＩＰ識別子周回処理において，ＩＰ識別子が周回したことを検知することが可能になる。
【００６９】
一方，取得したＩＰ識別子に対応する管理情報３３２に第１の情報が記憶されている場合（Ｓ２１のＹＥＳ），重複パケット検出装置３のパケット削除部３１６は，取得した通信パケットを削除する（Ｓ２６）。これにより，重複パケット検出装置３からパケット解析装置５へ同じ通信パケットが複数回送信されることを防止することが可能になる。
【００７０】
［通信パケットを取得した場合の重複チェックの具体例］
次に，図１１及び図１２を参照して，通信パケットを取得した場合の重複チェックの具体例を説明する。以下，パケット取得部３１１が取得した通信パケットにおいて，「送信元ＩＰ」が３０．４０．５０．６０であり，「送信先ＩＰ」が３０．４０．６０．７０であり，「プロトコル番号」が１７であり，「ＩＰ識別子」が２１であるものとして説明する。また，「送信元ポート」が２０００であり，「送信先ポート」が３０００であるものとする。
【００７１】
初めに，セッション情報記憶部３１２は，パケット取得部３１１が取得した上記の情報の組み合わせが，図１１（Ａ）に示すセッション情報３１１に存在するか否かを判定する。図１１（Ａ）の例においては，「ＩＤ」が３であるセッション情報３３１が，上記の情報の組み合わせと一致する。そのため，セッション情報取得部３１２は，取得した通信パケットに関する上記の情報の組み合わせが，図１１（Ａ）に示すセッション情報３１１に含まれていると判定する（Ｓ１５のＹＥＳ）。
【００７２】
そして，パケット判定部３１４は，図１１（Ｂ）において「ＩＤ」が３であるセッション情報３１１に含まれる先頭記憶アドレスであるＰ３を取得し，アドレスＰ３から記憶されている管理情報３３２（ビット列）にアクセスする。図１２の例において，アドレスＰ３から記憶されている管理情報３３２の先頭から２１ビット目には，１が記憶されている。そのため，パケット判定部３１４は，パケット取得部３１１が取得した通信パケットを重複パケットであると判定する（Ｓ２１のＹＥＳ）。そして，パケット削除部３１６は，パケット取得部３１１が取得した通信パケットを削除する。
【００７３】
なお，上記の例において，「ＩＰ識別子」が２０であった場合，図１２の例において，アドレスＰ３から記憶されている管理情報３３２の先頭から２０ビット目には，０が記憶されている。そのため，パケット判定部３１４は，パケット取得部３１１が取得した通信パケットを重複パケットではないと判定する（Ｓ２１のＮＯ）。この場合，管理情報記憶部３１３は，アドレスＰ３から記憶されている管理情報３３２の先頭から２０ビット目に１を記憶する（Ｓ２２）。そして，パケット転送部３１５は，パケット取得部３１１が取得した通信パケットをパケット解析装置５に送信する。
【００７４】
[第２の実施の形態]
次に，第２の実施の形態について説明する。図１３から図１５は，第２の実施の形態における重複パケット検出処理を説明するフローチャート図である。また，図１６から図１９は，第２の実施の形態における重複パケット検出処理を説明する図である。図１６から図１９を参照しながら，図１３から図１５の重複パケット検出処理を説明する。
【００７５】
第１の実施の形態では，図９において説明したように，管理情報記憶部３１３は，ＩＰ識別子周回処理によって管理情報３３２を初期化する場合について説明した。すなわち，第１の実施の形態における管理情報記憶部３１３は，ＩＰ識別子の周回があったことを検知したときに，管理情報３３２におけるビット列の一部を初期化する。
【００７６】
ここで，管理情報３３２は，例えば，パケット解析装置５における解析状況等により，一定時間記憶しておく必要がある場合がある。この場合，第１の実施の形態においては，ＩＰ識別子の周回が短時間の間に発生する場合等に，管理情報３３２を記憶しておく必要がある期間が経過する前に管理情報３３２を初期化する場合がある。そこで，第２の実施の形態では，管理情報３３２を記憶しておく必要がある期間に基づいて管理情報３３２の更新を行う。以下，第２の実施の形態における重複パケット検出処理の詳細について説明する。
【００７７】
初めに，パケット取得部３１１がキャプチャポイントにおいて通信パケットを取得した場合（Ｓ４１），パケット取得部３１１は，例えば，取得した通信パケットが含まれる通信セッションを特定するための情報を取得する。具体的に，パケット取得部３１１は，例えば，第１の実施の形態と同様に，取得した通信パケットのＩＰヘッダから「送信元ＩＰ」，「送信先ＩＰ」及び「プロトコル番号」を取得する（Ｓ４２）。さらに，パケット取得部３１１は，例えば，図１０に示すように，取得した通信パケットのＴＣＰヘッダから「送信元ポート」及び「送信先ポート」を取得する（Ｓ４３）。
【００７８】
次に，セッション情報記憶部３１２は，例えば，Ｓ４２及びＳ４３で取得した情報に基づいて，取得した通信パケットが含まれる通信セッションを特定し（Ｓ４４），特定した通信セッションに関するセッション情報３３１が情報格納領域３３０に記憶されているか否かの確認を行う（Ｓ４５）。そして，セッション情報３３１が記憶されていない場合（Ｓ４５のＮＯ），セッション情報記憶部３１２は，例えば，取得したＩＰヘッダに含まれる情報に基づいて，取得した通信パケットを含む通信セッションに関するセッション情報３３１を情報格納領域３３０に記憶する（Ｓ４６）。また，セッション情報記憶部３１２は，例えば，新たな通信セッションに関する管理情報３３２を記憶するための記憶領域を確保し，確保した記憶領域に関する情報を記憶位置情報３３３に記憶する（Ｓ４７）。
【００７９】
そして，管理情報記憶部３１３は，例えば，取得した通信パケットのＩＰヘッダに含まれるＩＰ識別子を取得する（Ｓ４８）。なお，第２の実施の形態においては，第１の実施の形態と異なり，ＩＰ識別子周回処理を行わない。
【００８０】
次に，パケット判定部３１４は，第１の実施の形態と同様に，例えば，取得したＩＰ識別子に対応する管理情報３３２が情報格納領域３３０に第１の情報が記憶されているか否かを確認する（Ｓ５１）。第１の情報が記憶されていない場合（Ｓ５１のＮＯ），管理情報記憶部３１３は，取得したＩＰ識別子に対応する管理情報３３２に第１の情報を記憶する（Ｓ５２）。そして，パケット転送部３１５は，例えば，パケット取得部３１１が取得した通信パケットをパケット解析装置５に送信する（Ｓ５３）。さらに，取得したＩＰ識別子が情報格納領域３３０に記憶された最大識別子情報３３４より大きい場合（Ｓ５４のＹＥＳ），管理情報記憶部３１３は，例えば，取得したＩＰ識別子を最大識別子情報３３４に記憶する（Ｓ５５）。そして，管理情報記憶部３１３は，第２の実施の形態においては，例えば，取得したＩＰ識別子を，初期化管理情報３３６として情報格納領域３３０に記憶する（Ｓ５６）。初期化管理情報３３６については後述する。
【００８１】
一方，取得したＩＰ識別子に対応する管理情報３３２に第１の情報が記憶されている場合（Ｓ５１のＹＥＳ），パケット削除部３１６は，取得した通信パケットを削除する（Ｓ５６）。
【００８２】
図１６は，初期化管理情報３３６の具体例を示す図である。図１６（Ａ）に示すように，記憶期間情報３３１は，例えば，管理情報記憶部３１３がＩＰ識別子を記憶する位置を示す「書き込みフラグ」と，管理情報記憶部３１３が取得したＩＰ識別子を記憶する「ＩＰ識別子」と，管理情報記憶部３１３がＩＰ識別子の記憶を行った時刻を示す「更新時刻」とを項目として有している。
【００８３】
図１６の例の初期化管理情報３３６において，管理情報記憶部３１３は，「書き込みフラグ」が示す「ＩＰ識別子」の位置に，管理情報記憶部３１３が取得したＩＰ識別子を記憶する。図１６（Ａ）の例は，「書き込みフラグ」が示す「ＩＰ識別子」の位置に，７０１８を記憶した状態を示している。そして，図１６（Ｂ）の例は，図１６（Ａ）に示す状態から，「書き込みフラグ」が示す「ＩＰ識別子」の位置に，７０２４を記憶した状態を示している。すなわち，図１６（Ｂ）に示す状態においては，図１６（Ａ）に示す状態から「書き込みフラグ」が示す「ＩＰ識別子」は更新されていない。そのため，管理情報記憶部３１３は，ＩＰ識別子が７０２４である通信パケットを受信したときに，７０１８が記憶された「ＩＰ識別子」の位置に７０２４を上書きする。以下，「書き込みフラグ」が示す「ＩＰ識別子」を更新するために行われる管理情報初期化処理について説明する。
【００８４】
［管理情報初期化処理］
図１５は，管理情報初期化処理を説明するフローチャート図である。初めに，管理情報を初期化するタイミングになった場合（Ｓ６１のＹＥＳ），管理情報記憶部３１３は，例えば，初期化管理情報３３６の「書き込みフラグ」を更新する（Ｓ６２）。管理情報３３２を初期化するタイミングは，例えば，更新周期情報３３７として情報格納領域３３０に記憶されているものである。更新周期情報３３７は，例えば，１（ｍｓ）等であってよい。そして，管理情報記憶部３１３は，例えば，更新周期情報３３７を参照して，管理情報を初期化するタイミングになった場合に，初期化管理情報３３６の「書き込みフラグ」を更新する（Ｓ６１のＹＥＳ，Ｓ６２）。なお，更新周期情報３３７に記憶された周期毎に，重複パケット検出装置３に設けられたタイマーが管理情報記憶部３１３に管理情報３３２を初期化するタイミングを通知するものであってもよい。次に，「書き込みフラグ」の更新の具体例について説明する。
【００８５】
図１７（Ａ）は，図１６（Ｂ）に示す状態から，管理情報記憶部３１３が，「書き込みフラグ」を更新した状態を示している。図１７（Ａ）に示す初期化管理情報３３６において，管理情報記憶部３１３は，「書き込みフラグ」である１が現在記憶されている行の一つ下の行に記憶されるように更新を行う。そして，管理情報記憶部３１３は，図１７（Ｂ）に示すように，更新された「書き込みフラグ」が示す「ＩＰ識別子」の位置に，新たに取得したＩＰ識別子（図１７（Ｂ）の例では７０２６）を記憶する。また，管理情報記憶部３１３は，例えば，更新された「書き込みフラグ」が示す「ＩＰ識別子」の位置に新たなＩＰ識別子を記憶したときに，ＩＰ識別子を記憶した時刻を「更新時刻」に記憶するものであってよい。
【００８６】
すなわち，管理情報記憶部３１３は，初期化管理情報３３６に取得したＩＰ識別子を繰り返し記憶し，集計期間が経過する毎に「書き込みフラグ」の位置を更新することにより，更新周期情報３３７に記憶された集計期間（図１７の例においては，１（ｍｓ））毎に，取得したＩＰ識別子の最大値の情報を蓄積していくことができる。
【００８７】
図１５に戻り，管理情報記憶部３１３は，例えば，記憶期間情報３３５と初期化管理情報３３６とに基づいて，記憶期間が経過した管理情報３３２を初期化する（Ｓ６３）。以下，管理情報３３２が初期化される場合の具体例を説明する。
【００８８】
図１８は，図１５のＳ６３において管理情報３３２を初期化する場合を説明する例である。図１８の例においては，発生し得るＩＰ識別子が０から６５５３５である場合について説明する。なお，図１８内の各数字は，それぞれのビット領域に記憶される管理情報３３２に対応するＩＰ識別子を示すものである。また，以下，記憶期間情報３３５に記憶されている管理情報３３２の記憶期間が２（ｍｓ）の場合について説明する。
【００８９】
管理情報記憶部３１３は，例えば，図１７（Ａ）に示す状態の初期化管理情報３３６を参照し，管理情報３３２の記憶期間が経過しているＩＰ識別子の情報を取得する。図１７（Ａ）の例において，「更新時刻」が１３：２５：１４．００６の集計期間の集計が完了している。そのため，図１７（Ａ）の例において，管理情報３３２に第１の情報が記憶されてから記憶期間情報３３５に記憶されている記憶期間が経過しているＩＰ識別子は，「更新時刻」が１３：２５：１４．００４の集計期間よりも前に記憶されたＩＰ識別子になる。そして，この場合，管理情報記憶部３１３は，管理情報３３２を初期化する必要があるＩＰ識別子の最大値は，「更新時刻」が１３：２５：１４．００４の集計期間に関連付けて記憶されている４０１８であると判断する。さらに，図１７（Ａ）の例において，直前の集計期間である「更新時刻」が１３：２５：１４．００６の集計期間において記憶されたＩＰ識別子の最大値は，７０２４である。そのため，管理情報記憶部３１３は，図１７（Ａ）の例においては，例えば，４０１９から７０２４以外のＩＰ識別子を初期化する必要があると判断する。
【００９０】
したがって，管理情報記憶部３１３は，例えば，図１８（Ｂ）に示す管理情報３３２のビット例のように，管理情報３３２を更新する。すなわち，図１８（Ｂ）の例においては，管理情報３３２のビット列の先頭（識別子０）から識別子４０１８に対応するビット領域まで，及び識別子７０２５に対応するビット領域からビット列の最後までのビット領域を０に更新する（図１８（Ｂ）における網掛け部分）。これによって，管理情報記憶部３１３は，管理情報３３２に第１の情報を記憶してから記憶期間を経過した管理情報３３２を初期化することが可能になる。
【００９１】
なお，図１９（Ａ）に示すように，初期化管理情報３３６を記憶するための領域全てに各情報が記憶された場合，初期化管理情報３３６内においてサイクリックを行うものであってよい。すなわち，管理情報記憶部３１３は，例えば，「書き込みフラグ」が示す「ＩＰ識別子」の位置が，図１９（Ｂ）の例においては最初の行になるように更新を行う。そして，最初の行の「ＩＰ識別子」に記憶されたＩＰ識別子を更新する形で，取得したＩＰ識別子を記憶するものであってよい。
【００９２】
図１５に戻り，管理情報記憶部３１３は，例えば，全ての通信セッションに関する管理情報３３２のビット列について，管理情報３３２の初期化が終わるまでＳ６２からＳ６３の処理を繰り返す（Ｓ６４）。
【００９３】
このように，第２の実施の形態によれば，管理情報記憶部３１３は，集計期間毎に取得したＩＰ識別子の最大値を初期化管理情報３３６に記憶する。そして，管理情報記憶部３１３は，初期化管理情報３３６を参照して，記憶期間情報３３５に記憶されている管理情報３３２の記憶期間が経過した管理情報３３２を初期化する。これにより，管理情報記憶部３１３は，記憶期間情報３３５に記憶されている管理情報３３２の記憶期間が経過する前に，管理情報３３２を初期化することを防止することができる。
【００９４】
また，第２の実施の形態によれば，記憶期間情報３３５に記憶されている管理情報３３２の記憶期間が経過した管理情報３３２を初期化するため，パケット取得部３１１が通信パケットを取得する毎に，初期化を行うか否かを判定する処理や初期化処理を行う必要がなくなる。そのため，ＣＰＵ等の負荷増大を防止することが可能になる。
【００９５】
なお，図１６等の例において，管理情報記憶部３１３が集計期間毎に取得したＩＰ識別子の最大値を初期化管理情報３３６に記憶する場合について説明したが，集計期間毎に取得したＩＰ識別子の最小値を初期化管理情報３３６に記憶するものであってもよい。
【００９６】
[第３の実施の形態]
次に，第３の実施の形態について説明する。図２０は，第３の実施の形態における重複パケット検出処理を説明するフローチャート図である。また，図２１及び図２２は，第３の実施の形態における重複パケット検出処理を説明する図である。図２１及び図２２を参照しながら，図２０の重複パケット検出処理を説明する。
【００９７】
第３の実施の形態においては，第２の実施の形態と異なり，パケット取得部３１１が取得する通信パケットの量の変化に応じて，更新周期情報３３７に記憶された集計期間を更新する。すなわち，パケット取得部３１１が取得する通信パケットの頻度が予め定めた閾値よりも大きい場合には，集計時間を短く設定し，パケット取得部３１１が取得する通信パケットの頻度が予め定めた閾値よりも小さい場合には，集計時間を長く設定する。
【００９８】
初めに，管理情報を初期化する可能性があるタイミングになった場合（Ｓ７１のＹＥＳ），管理情報記憶部３１３は，例えば，各通信セッションの更新周期情報３３７を参照する（Ｓ７２）。そして，管理情報記憶部３１３は，例えば，初期化管理情報３３６における最新の更新時刻と，更新周期情報３３７に記憶された集計期間とを加算した時刻（以下，次回更新時刻とも呼ぶ）が，現在時刻とが一致するか否かを確認する（Ｓ７３）。すなわち，第３の実施の形態においては，通信セッション毎に，更新周期情報３３７における集計期間が異なる場合が発生する。そのため，管理情報記憶部３１３は，管理情報３３２を初期化する可能性があるタイミングになったときに，更新周期情報３３７を参照する必要がある。管理情報３３２を初期化する可能性があるタイミングは，例えば，各通信セッションの集計期間の最大公約数であってよい。
【００９９】
そして，現在時刻と次回更新時刻とが一致した場合（Ｓ７３のＹＥＳ），管理情報記憶部３１３は，例えば，第２の実施の形態と同様に，一致した通信セッションの初期化管理情報３３６の「書き込みフラグ」を更新する（Ｓ７４）。さらに，管理情報記憶部３１３は，例えば，記憶期間情報３３５と初期化管理情報３３６とに基づいて，記憶期間が経過した管理情報３３２を初期化する（Ｓ７５）。
【０１００】
次に，管理情報記憶部３１３は，例えば，所定の期間におけるＩＰ識別子の取得数を算出する（Ｓ７６）。この所定の期間は，例えば，１００（ｍｓ）等であり，記憶期間情報３３５や更新周期情報３３７等に記憶されている期間よりも長い期間であることが好ましい。これによって，通信パケットの取得数が短期的に大きく変動した場合等に，これらの影響を抑えることが可能になる。また，算出した所定の期間におけるＩＰ識別子の取得数が最大取得数情報３３８に記憶された取得数よりも大きい場合（Ｓ７７），管理情報記憶部３１３は，例えば，算出した所定の期間におけるＩＰ識別子の取得数を最大取得数情報３３８に記憶する（Ｓ７８）。さらに，更新周期管理部３１８は，例えば，最大取得数情報３３８と更新周期閾値情報３３９とに基づいて，更新周期情報３３７を更新する（Ｓ７９）。そして，管理情報記憶部３１３は，例えば，全ての通信セッションに関する管理情報３３２のビット列について管理情報３３２の初期化が終わるまでＳ７２からＳ７９の処理を繰り返す（Ｓ８０）。
【０１０１】
図２１及び図２２は，初期化管理情報３３６，更新周期情報３３７，最大取得数情報３３８及び更新周期閾値情報３３９の具体例を示す図である。図２１及び図２２においては，管理情報記憶部３１３は，Ｓ７６における所定の期間を２０（ｍｓ）としてＩＰ識別子の取得数を算出しているものとして説明を行う。
【０１０２】
図２１は，管理情報記憶部３１３によって初期化管理情報３３６の「書き込みフラグ」の更新がされた後（Ｓ７４の後）の状態を示す例である。図２１の例において，管理情報記憶部３１３は，図２１（Ｃ）に示すように，最大取得数情報３３８の最大取得数に，８６１４を記憶している。そのため，更新周期管理部３１８は，図２１（Ｂ）に示すように，図２１（Ｄ）に示す更新周期閾値情報３３９を参照して，更新周期情報３３７に５を設定している状態である。
【０１０３】
図２１に示す例において，管理情報記憶部３１３は，図２１（Ａ）に示す初期化管理情報３３６を参照し，最近２０（ｍｓ）の間におけるＩＰ識別子の取得数を算出する（Ｓ７６）。具体的に，図２１の例において，管理情報記憶部３１３は，例えば，「更新時刻」が１３：２５：１４．０２５の集計期間におけるＩＰ識別子の最大値である１０２３４と，「更新時刻」が１３：２５：１４．００５の集計期間におけるＩＰ識別子の最大値である２０２９との差である８２０５を算出する。この場合，管理情報記憶部３１３は，算出した値が最大取得数情報３３８に記憶された最大取得数（８６１４）よりも小さいため（Ｓ７７のＮＯ），最大取得数情報３３８等の更新を行わない（Ｓ７８，Ｓ７９）。なお，図２１の例においては，現在時刻である１３：２５：１４．０２５と，更新周期情報３３７に記憶されている集計期間である５とに基づいて，図２１（Ａ）に示すように，初期化管理情報３３６に次回更新時刻である１３：２５：１４．０３０を記憶している。
【０１０４】
一方，図２２は，図２１に示す状態から次の集計期間におけるＩＰ識別子の記憶が終了し，管理情報記憶部３１３によって，「書き込みフラグ」がさらに更新された後（Ｓ７４の後）の状態を示す例である。
【０１０５】
図２２に示す例において，管理情報記憶部３１３は，図２１の場合と同様に，図２２（Ａ）に示す初期化管理情報３３６を参照し，最近２０（ｍｓ）の間におけるＩＰ識別子の取得数を算出する（Ｓ７６）。具体的に，図２２（Ａ）の例において，管理情報記憶部３１３は，「更新時刻」が１３：２５：１４．０３０の集計期間におけるＩＰ識別子の最大値である２７４１２と，「更新時刻」が１３：２５：１４．０１０の集計期間におけるＩＰ識別子の最大値である４９７４との差である２２４３８を算出する。ここで，図２１の例と異なり，算出した値は，最大取得数情報３３８に記憶された最大取得数よりも大きい（Ｓ７７のＹＥＳ）。そのため，管理情報記憶部３１３は，図２２（Ｃ）に示すように，算出した値を最大取得数情報３３８に記憶する（Ｓ７８）。さらに，管理情報記憶部３１３は，図２２（Ｄ）に示す更新周期閾値情報３３９を参照し，図２２（Ｂ）に示すように，更新周期情報３３７として１を記憶する。なお，図２２（Ａ）の例においては，現在時刻である１３：２５：１４．０３０と，更新周期情報３３７に記憶されている集計期間である１とに基づいて，初期化管理情報３３６に次回更新時刻である１３：２５：１４．０３１を記憶している。
【０１０６】
このように，第３の実施の形態によれば，管理情報記憶部３１３は，算出した所定期間のＩＰ識別子の取得数が所定の閾値（例えば，情報格納領域３３０に記憶された更新周期閾値情報３３９内の閾値）よりも大きい場合に，集計期間を短く設定する。そして，管理情報記憶部３１３は，算出した所定期間のＩＰ識別子の取得数が所定の閾値よりも小さい場合に，集計期間を長く設定する。これにより，パケット取得部３１１が取得する通信パケットの量が少ない場合に，管理情報記憶部３１３が管理情報３３２を初期化する頻度を少なくすることが可能になる。そのため，重複パケット検出装置３のＣＰＵ等の処理負担を軽減させることが可能になる。また，パケット取得部３１１が取得する通信パケットの量が多い場合に，管理情報記憶部３１３が管理情報３３２を初期化する頻度を多くすることが可能になる。そのため，ＩＰ識別子の周回を検知する精度を高めることが可能になる。
【０１０７】
[第４の実施の形態]
次に，第４の実施の形態について説明する。図２３から図２６は，第４の実施の形態における重複パケット検出処理を説明するフローチャート図である。また，図２７から図３１は，第４の実施の形態における重複パケット検出処理を説明する図である。図２７から図３１を参照しながら，図２３から図２６の重複パケット検出処理を説明する。
【０１０８】
第４の実施の形態においては，判定期間の間に重複チェック（以下，判定とも呼ぶ）を行った結果，重複パケットが検出されなかった通信セッションについては，重複チェックを中止する。また，第４の実施の形態において，重複チェックを中止した通信セッションは，判定中止期間が経過した後に，重複チェックを再開する。なお，第４の実施の形態におけるセッション情報３３１は，第１の実施の形態におけるセッション情報３３１と異なり，「判定開始時刻」の項目を有している。「判定開始時刻」の項目については後述する。
【０１０９】
初めに，パケット取得部３１１がキャプチャポイントにおいて通信パケットを取得した場合（Ｓ９１），パケット取得部３１１は，例えば，取得した通信パケットが含まれる通信セッションを特定するための情報を取得する。具体的に，パケット取得部３１１は，例えば，第１の実施の形態と同様に，取得した通信パケットのＩＰヘッダから「送信元ＩＰ」，「送信先ＩＰ」及び「プロトコル番号」を取得する（Ｓ９２）。さらに，パケット取得部３１１は，例えば，図１０に示すように，取得した通信パケットのＴＣＰヘッダから「送信元ポート」及び「送信先ポート」を取得する（Ｓ９３）。
【０１１０】
次に，セッション情報記憶部３１２は，例えば，Ｓ９２及びＳ９３で取得した情報に基づいて，取得した通信パケットが含まれる通信セッションを特定し（Ｓ９４），特定した通信セッションに関するセッション情報３３１が情報格納領域３３０に記憶されているか否かの確認を行う（Ｓ９５）。そして，セッション情報３３１が記憶されていない場合（Ｓ９５のＮＯ），セッション情報記憶部３１２は，例えば，取得したＩＰヘッダに含まれる情報に基づいて，取得した通信パケットを含む通信セッションに関するセッション情報３３１を情報格納領域に記憶する（Ｓ９６）。また，セッション情報記憶部３１２は，例えば，新たな通信セッションに関する管理情報３３２を記憶するための記憶領域を確保し，確保した記憶領域に関する情報を記憶位置情報３３３に記憶する（Ｓ９７）。さらに，第４の実施の形態における判定実行管理部３１９は，第１の実施の形態と異なり，セッション情報３３１の判定開始時刻に現在時刻を記憶する（Ｓ９８）。
【０１１１】
そして，取得した通信パケットを含む通信セッションに関する記憶位置情報３３３が記憶されておらず，現在時刻が判定開始時刻を経過している場合（Ｓ１０１のＮＯ，Ｓ１０２のＹＥＳ），判定実行管理部３１９は，例えば，取得した通信パケットを含む通信セッションに関する記憶位置情報３３３を記憶する（Ｓ１０３）。すなわち，通信セッションのセッション情報３３１が存在するにもかかわらず（Ｓ９５のＹＥＳ，Ｓ９８），記憶位置情報３３３が記憶されていない場合（Ｓ１０１のＮＯ），判定実行管理部３１９は，その通信セッションが重複チェックを中止している通信セッションであると判断する。そして，さらに，現在時刻が判定開始時刻を経過している場合（Ｓ１０２のＹＥＳ），判定実行管理部３１９は，重複チェックを中止している通信セッションの重複チェックを再開する。通信セッションの重複チェックを中止する場合及び再開する場合の具体例については後述する。
【０１１２】
一方，現在時刻が判定開始時刻を経過していない場合（Ｓ１０２のＮＯ），その通信セッションが重複チェックを再開する時刻がまだ到達していないことになるため，取得した通信パケットに関しての重複パケット検出処理を終了する。すなわち，この場合，判定実行管理部３１９は，重複チェックを中止している通信セッションの重複チェックを再開しない。
【０１１３】
また，取得した通信パケットを含む通信セッションに関する記憶位置情報３３３が記憶されている場合（Ｓ１０１のＹＥＳ），管理情報記憶部３１３は，例えば，取得した通信パケットのＩＰヘッダに含まれるＩＰ識別子を取得し（Ｓ１０４），ＩＰ識別子周回処理を行う（Ｓ１０５）。同様に，判定実行管理部３１９が記憶位置情報３３３を記憶した場合（Ｓ１０３），管理情報記憶部３１３は，例えば，取得した通信パケットのＩＰヘッダに含まれるＩＰ識別子を取得し（Ｓ１０４），ＩＰ識別子周回処理を行う（Ｓ１０５）。
【０１１４】
次に，パケット判定部３１４は，第１の実施の形態と同様に，例えば，取得したＩＰ識別子に対応する管理情報３３２に第１の情報が記憶されているか否かを確認する（Ｓ１１１）。第１の情報が記憶されていない場合（Ｓ１１１のＮＯ），管理情報記憶部３１３は，取得したＩＰ識別子に対応する管理情報３３２に第１の情報を記憶する（Ｓ１１２）。
【０１１５】
そして，パケット転送部３１５は，パケット取得部３１１が取得した通信パケットをパケット解析装置５に送信する（Ｓ１１３）。また，取得したＩＰ識別子が情報格納領域３３０に記憶された最大識別子情報３３４より大きい場合（Ｓ１１４のＹＥＳ），管理情報記憶部３１３は，例えば，取得したＩＰ識別子を最大識別子情報３３４に記憶する（Ｓ１１５）。さらに，判定実行管理部３１９は，第４の実施の形態においては，取得した通信パケットを含む通信セッションの重複チェックを中止するための判定中止処理を行う（Ｓ１１６）。判定中止処理については後述する。
【０１１６】
一方，取得したＩＰ識別子に対応する管理情報３３２に第１の情報が記憶されている場合（Ｓ１１１のＹＥＳ），パケット削除部３１６は，取得した通信パケットを削除する（Ｓ１１７）。そして，判定実行管理部３１９は，例えば，取得した通信パケットを含む通信セッションにおけるセッション情報３３１の判定開始時刻に０を設定する（Ｓ１１８）。
【０１１７】
［判定中止処理（Ｓ１１６）］
次に，取得した通信パケットを含む通信セッションについて重複チェックを中止するか否かの判断を行う判定中止処理について説明する。図２６は，判定中止処理を説明するフローチャート図である。
【０１１８】
初めに，判定実行管理部３１９は，例えば，取得した通信パケットを含む通信セッションのセッション情報３３１に記憶された判定開始時刻と判定実行情報３４０に記憶された判定期間とに基づいて判定終了時刻を算出する（Ｓ１２１）。
【０１１９】
図２７は，第４の実施の形態におけるセッション情報３３１，記憶位置情報３３３及び判定実行情報３４０の具体例を示す図である。図２７の例において，新たな通信セッションがセッション情報３３１に記憶されるときに（Ｓ９６），判定実行管理部３１９は，例えば，そのセッション情報３３１の「判定開始時刻」に現在時刻を記憶する（Ｓ９８）。そして，判定実行管理部３１９は，Ｓ１２１において，さらに判定実行情報３４０の「判定期間」を参照し，「判定開始時刻」に「判定期間」を加算するとによって判定終了時刻を算出する。具体的に，図２７（Ａ）における「ＩＤ」が１のセッション情報３３１においては，「判定開始時刻」が１３：１５：１２．０００であり，判定実行情報３４０の「判定期間」が「１０（ｓ）」であるため，判定終了時刻は１３：１５：２２．０００になる。
【０１２０】
図２６に戻り，現在時刻が判定終了時刻を経過している場合（Ｓ１２２のＹＥＳ），判定実行管理部３１９は，例えば，現在時刻と判定実行情報３４０に記憶された判定中止期間とに基づいて，判定再開時刻を算出する（Ｓ１２３）。そして，判定実行管理部３１９は，算出した判定再開時刻をセッション情報３３１の判定開始時刻に記憶する（Ｓ１２４）。すなわち，判定実行管理部３１９は，現在時刻が判定終了時刻を経過していることに応答して，通信セッションの重複チェックを中止する。そのために，判定実行管理部３１９は，判定を中止にする通信セッションが判定を再開する時刻を算出し，セッション情報３３１に記憶する。
【０１２１】
さらに，判定実行管理部３１９は，例えば，判定を中止する記憶位置情報３３３を削除する。具体的に，これにより，管理情報記憶部３１３は，通信パケットを取得した際に，管理情報３３２を参照することができなくなる。そのため，管理情報記憶部３１３は，記憶位置情報３３３が削除された判定を中止する。
【０１２２】
次に，第４の実施の形態において重複チェックを中止する場合及び重複チェックを再開する場合の具体例について説明する。
【０１２３】
図２７に示す例において，図２７（Ｂ）に示すように，「ＩＤ」が１及び２である通信セッションの記憶位置情報３３３が記憶されている。そのため，パケット取得部３１１が通信セッションの「ＩＤ」が１である通信パケットを取得した場合（Ｓ９１のＹＥＳ），取得した通信パケットに関するセッション情報３３１と記憶位置情報３３３とが記憶されているため（Ｓ９５のＹＥＳ，Ｓ１０１のＹＥＳ），パケット判定部３１４は，重複チェックを行う（Ｓ１１１）。
【０１２４】
ここで，例えば，パケット取得部３１１が取得した通信パケットが重複パケットでない場合（Ｓ１１１のＮＯ），判定実行管理部３１９は，「判定開始時刻」として記憶されている１３：１５：１２．０００と「判定期間」として記憶されている１０（Ｓ）とを加算する。これにより，判定実行管理部３１９は，判定終了時刻として１３：１５：２２．０００を算出する（Ｓ１２１）。そして，現在時間である１３：１５：２５．０００は，判定終了時刻である１３：１５：２２．０００を経過している（Ｓ１２２のＹＥＳ）。そのため，判定実行管理部３１９は，現在時刻と「判定中止期間」として記憶されている１０（Ｓ）とを加算することにより，判定再開時刻として１３：１５：３５．０００を算出し，セッション情報３３１に記憶する（Ｓ１２３，Ｓ１２４）。そして，判定実行管理部３１９は，図２８（Ｂ）に示すように，通信セッションの「ＩＤ」が１である記憶位置情報３３３を削除する（Ｓ１２５）。これにより，判定実行管理部３１９は，取得した通信パケットを含む通信セッションの重複チェックを中止することができる。
【０１２５】
次に，例えば，パケット取得部３１１が重複チェックを中止している「ＩＤ」が１である通信セッションに含まれる通信パケットを取得した場合，判定実行管理部３１９は，現在時刻が判定開始時刻に経過しているか否かを確認する（Ｓ１０２）。そして，図２９（Ａ）に示すように，例えば，現在時刻が１３：１５：３１．０００であった場合，現在時刻が「判定開始時刻」を経過していないため，判定実行管理部３１９は，取得した通信パケットの重複チェックを終了する（Ｓ１０２のＮＯ）。すなわち，図２９の例において，判定実行管理部３１９は，取得した通信パケットの重複チェックを行わない。
【０１２６】
一方，図３０（Ａ）に示すように，例えば，現在時刻が１３：１５：３７．０００であった場合，現在時刻が「判定開始時刻」を経過している。そのため，判定実行管理部３１９は，取得した通信パケットの重複チェックを開始する（Ｓ１０２のＹＥＳ）。そして，判定実行管理部３１９は，図３０（Ｂ）に示すように，判定を中止していた「ＩＤ」が１である通信セッションの記憶位置情報３３３を記憶する（Ｓ１０３）。これにより，判定実行管理部３１９は，判定を中止していた通信セッションの重複チェックを再開することができる。
【０１２７】
また，パケット判定部３１４が重複チェックを行った結果，取得した通信パケットが重複パケットであった場合（Ｓ１１１のＮＯ），判定実行管理部３１９は，取得した通信パケットに関するセッション情報３３１の判定開始時刻に０を記憶する（Ｓ１１８）。すなわち，判定中止処理のＳ１２１において算出する判定終了時刻が，現在時刻の前の時刻を示すようにする。そして，重複パケットが発生した通信セッションについては，重複チェックを中止する処理であるＳ１２３からＳ１２５が実行されないようにする。これにより，判定実行管理部３１９は，重複チェックが発生した通信セッションに含まれる通信パケットについては，重複チェックを実行することが可能になる。
【０１２８】
このように，第４の実施の形態によれば，判定期間の間に重複チェックを行った結果，重複パケットが検出されなかった通信セッションに含まれる通信パケットついては，重複チェックを中止する。そして，第４の実施の形態において，重複チェックを中止した通信セッションに含まれる通信パケットは，判定中止期間が経過した後に，重複チェックを再開する。これにより，判定実行管理部３１９は，重複チェックを行う必要がないと判断できる通信セッションに含まれる通信パケットについては，中止と再開を繰り返しながら重複チェックを行うことが可能になる。そのため，重複パケット検出装置３のＣＰＵ等の処理負担を軽減させることが可能になる。
【０１２９】
また，第４の実施の形態によれば，過去に重複パケットが発生した通信セッションに含まれる通信パケットは，重複チェックを行う。これにより，再び重複チェックが発生する可能性の高い通信セッションに含まれる通信パケットについて，重点的に重複チェックを行うことが可能になる。
【０１３０】
以上の実施の形態をまとめると，以下の付記のとおりである。
【０１３１】
（付記１）
ＩＰパケットの取得に応じて，該取得したＩＰパケットのヘッダに含まれる通信セッションを特定する情報に基づき，前記取得したＩＰパケットが送受信される通信セッションを特定し，記憶部に記憶された，ＩＰパケットのヘッダに含まれるＩＰパケット識別子に対応する管理情報のうち，前記特定した通信セッションに対応する管理情報を参照し，
前記取得したＩＰパケットのＩＰパケット識別子に対応する管理情報が存在する場合，前記取得したＩＰパケットを破棄し，前記取得したＩＰパケットのＩＰパケット識別子に対応する管理情報が存在しない場合，前記取得したＩＰパケットのＩＰパケット識別子に対応する管理情報を前記記憶部に記憶し，前記取得したＩＰパケットを出力する，
処理をコンピュータに実行させるパケット処理プログラム。
【０１３２】
（付記２）
付記１において，
前記記憶部は，前記ＩＰパケット識別子に対応する管理情報をそれぞれ記憶する複数の記憶領域を有し，
前記管理情報が存在する場合とは，前記記憶領域に第１の情報が記憶されている場合であり，
前記管理情報が存在しない場合とは，前記記憶領域に第２の情報が記憶されている場合であるパケット処理プログラム。
【０１３３】
（付記３）
付記２において，
前記記憶領域は，それぞれ１ビットの情報を記憶可能であるパケット処理プログラム。
【０１３４】
（付記４）
付記２において，
前記ＩＰパケット識別子は，該ＩＰパケット識別子を有するＩＰパケットが送信された順に割り振られており，
さらに，取得したＩＰパケットの前記ＩＰパケット識別子がサイクリックした場合に，最初のＩＰパケット識別子から所定数のＩＰパケット識別子に対応する前記管理情報に前記第２の情報を記憶し，
取得したＩＰパケットの前記ＩＰパケット識別子が前記第１の情報が記憶された管理情報に対応するＩＰパケット識別子に到達した場合に，前記第２の情報を記憶した管理情報に対応するＩＰパケット識別子と連続する次の所定数のＩＰパケット識別子に対応する管理情報に前記第２の情報を記憶する，
処理をコンピュータに実行させるパケット処理プログラム。
【０１３５】
（付記５）
付記２において，
さらに，前記管理情報に前記第１の情報が記憶されてから該記憶された管理情報の記憶期間が経過したＩＰパケットの管理情報に前記第２の情報を記憶する，
処理をコンピュータに実行させるパケット処理プログラム。
【０１３６】
（付記６）
付記５において，
前記記憶期間が経過したＩＰパケットの管理情報に第２の情報を記憶する処理は，連続した集計期間毎に，前記管理情報に前記第１の情報が記憶された前記ＩＰパケットのＩＰパケット識別子を記憶し，
前記記憶されたＩＰパケット識別子のうち，記憶されてからの期間が前記記憶期間を超えた前記集計期間に対応するＩＰパケット識別子に対応する前記管理情報に前記第２の情報を記憶するパケット処理プログラム。
【０１３７】
（付記７）
付記６において，
前記記憶期間が経過したＩＰパケットの管理情報に第２の情報を記憶する処理は，前記ＩＰパケットの取得頻度が所定の閾値よりも大きい場合に，前記集計期間を短縮し，
前記ＩＰパケットの取得頻度が所定の閾値よりも小さい場合に，前記集計期間を延長するパケット処理プログラム。
【０１３８】
（付記８）
付記１において，
さらに，前記ＩＰパケットの破棄が所定の期間発生しない場合に，前記管理情報の参照を中止する，
処理をコンピュータに実行させるパケット処理プログラム。
【０１３９】
（付記９）
付記８において，
さらに，前記中止の後，所定の期間が経過した際に，前記管理情報の参照を再開する
処理をコンピュータに実行させるパケット処理プログラム。
【０１４０】
（付記１０）
付記８において，
さらに，前記中止の際に，参照を中止する前記管理情報を消去する，
処理をコンピュータに実行させるパケット処理プログラム。
【０１４１】
（付記１１）
ＩＰパケットのヘッダに含まれるＩＰパケット識別子に対応する管理情報を記憶する記憶部と，
ＩＰパケットの取得に応じて，該取得したＩＰパケットのヘッダに含まれる通信セッションを特定する情報に基づき，前記取得したＩＰパケットが送受信される通信セッションを特定し，前記管理情報のうち，前記特定した通信セッションに対応する管理情報を参照し，
前記取得したＩＰパケットのＩＰパケット識別子に対応する管理情報が存在する場合，前記取得したＩＰパケットを破棄し，前記取得したＩＰパケットのＩＰパケット識別子に対応する管理情報が存在しない場合，前記取得したＩＰパケットのＩＰパケット識別子に対応する管理情報を前記記憶部に記憶し，前記取得したＩＰパケットを出力する処理部と，を有する，
重複パケット検出装置。
【０１４２】
（付記１２）
ＩＰパケットの取得に応じて，該取得したＩＰパケットのヘッダに含まれる通信セッションを特定する情報に基づき，前記取得したＩＰパケットが送受信される通信セッションを特定し，記憶部に記憶された，ＩＰパケットのヘッダに含まれるＩＰパケット識別子に対応する管理情報のうち，前記特定した通信セッションに対応する管理情報を参照し，
前記取得したＩＰパケットのＩＰパケット識別子に対応する管理情報が存在する場合，前記取得したＩＰパケットを破棄し，前記取得したＩＰパケットのＩＰパケット識別子に対応する管理情報が存在しない場合，前記取得したＩＰパケットのＩＰパケット識別子に対応する管理情報を前記記憶部に記憶し，前記取得したＩＰパケットを出力する，
処理をコンピュータに実行させるパケット処理方法。
【符号の説明】
【０１４３】
１：サーバ                  ２：クライアント端末
３：重複パケット検出装置    ４：スイッチ
５：パケット解析装置
【図１】
0006458383.tif 000002
【図２】
0006458383.tif 000003
【図３】
0006458383.tif 000004
【図４】
0006458383.tif 000005
【図５】
0006458383.tif 000006
【図６】
0006458383.tif 000007
【図７】
0006458383.tif 000008
【図８】
0006458383.tif 000009
【図９】
0006458383.tif 000010
【図１０】
0006458383.tif 000011
【図１１】
0006458383.tif 000012
【図１２】
0006458383.tif 000013
【図１３】
0006458383.tif 000014
【図１４】
0006458383.tif 000015
【図１５】
0006458383.tif 000016
【図１６】
0006458383.tif 000017
【図１７】
0006458383.tif 000018
【図１８】
0006458383.tif 000019
【図１９】
0006458383.tif 000020
【図２０】
0006458383.tif 000021
【図２１】
0006458383.tif 000022
【図２２】
0006458383.tif 000023
【図２３】
0006458383.tif 000024
【図２４】
0006458383.tif 000025
【図２５】
0006458383.tif 000026
【図２６】
0006458383.tif 000027
【図２７】
0006458383.tif 000028
【図２８】
0006458383.tif 000029
【図２９】
0006458383.tif 000030
【図３０】
0006458383.tif 000031
【図３１】
0006458383.tif 000032