(57)【特許請求の範囲】
【請求項１】
コンピュータに、
パケットの識別情報と前記パケットが受信または送信された際の時刻を含む期間と前記パケットの送受信の種別との組み合わせに対応した各ビットのうち、受信または送信されたパケットに対応するビットを有効に設定し、
前記各ビットのうちの第１の期間内に受信されたパケットに対応するビット列と、前記各ビットのうちの前記第１の期間内に送信されたパケットに対応するビット列とを比較した比較結果に基づいて、前記第１の期間内に受信されており、かつ前記第１の期間内に送信されていない第１のパケット群の各々の識別情報を特定し、
特定した前記第１のパケット群の各々の識別情報と、前記各ビットのうちの前記第１の期間の次に連続する第２の期間内に送信されたパケットに対応するビット列とに基づいて、前記第１の期間内に受信されており、かつ前記第１の期間および前記第２の期間内に送信されていない第２のパケット群の各々の識別情報を特定する、
処理を実行させることを特徴とするパケット検証プログラム。
【請求項２】
前記コンピュータに、
前記第２の期間内に送信されたパケットに対応するビット列のうち、特定した前記第１のパケット群の各々に対応するビットを無効に設定する、
ことを特徴とする請求項１に記載のパケット検証プログラム。
【請求項３】
前記設定する処理は、
前記各ビットのうちの受信または送信されたパケットに対応するビットを有効に設定する際に、前記パケットに対応するビットが既に有効である場合、前記各ビットに、前記パケットが受信または送信された際の時刻を含む期間に対応するビット列を追加し、
前記第１のパケット群の各々の識別情報を特定する処理は、
前記各ビットのうちの前記第１の期間内に受信されたパケットに対応する１または複数のビット列と、前記各ビットのうちの前記第１の期間内に送信されたパケットに対応する１または複数のビット列とを比較した比較結果に基づいて、前記第１のパケット群の各々の識別情報を特定し、
前記第２のパケット群の各々の識別情報を特定する処理は、
特定した前記第１のパケット群の各々の識別情報と、前記各ビットのうちの前記第２の期間内に送信されたパケットに対応する１または複数のビット列とに基づいて、前記第２のパケット群の各々の識別情報を特定する、
ことを特徴とする請求項１または２に記載のパケット検証プログラム。
【請求項４】
前記コンピュータに、
監視対象装置によって受信されたパケットと前記監視対象装置に送信されたパケットとを取得する、処理を実行させ、
前記第２のパケット群の各々の識別情報を特定する処理は、
特定した前記第１のパケット群の各々の識別情報と、前記各ビットのうちの前記第１の期間の終了時刻から前記監視対象装置の最大遅延時間を前記終了時刻に加算した時刻までの期間内に送信されたパケットに対応するビット列とに基づいて、前記第１の期間内に受信されており、かつ前記第１の期間および前記終了時刻から前記最大遅延時間が経過するまでの期間に送信されていないパケット群の各々の識別情報を特定する、
ことを特徴とする請求項１〜３のいずれか一つに記載のパケット検証プログラム。
【請求項５】
前記パケットは、ＩＰヘッダと、ＴＣＰヘッダまたはＵＤＰヘッダとを含み、
前記コンピュータに、
前記パケットの送信先ＩＰアドレスと前記パケットの送信元ＩＰアドレスと前記パケットのプロトコル番号と前記パケットの送信元ポート番号と前記パケットの送信先ポート番号と前記パケットの識別情報と前記パケットが受信または送信された際の時刻を含む期間と前記パケットの送受信の種別との組み合わせに対応したビット群のうち、受信または送信されたパケットの送信先ＩＰアドレスと当該パケットの送信元ＩＰアドレスと当該パケットのプロトコル番号と当該パケットの送信元ポート番号と当該パケットの送信先ポート番号との組に対応した各ビットを特定する、
処理を実行させることを特徴とする請求項１〜４のいずれか一つに記載のパケット検証プログラム。
【請求項６】
前記第１のパケット群の各々の識別情報を特定する処理は、
特定した前記各ビットのうちの第１の期間内に受信されたパケットに対応するビット列と、前記各ビットのうちの前記第１の期間内に送信されたパケットに対応するビット列とを比較した比較結果に基づいて、前記第１のパケット群の各々の識別情報を、パケットの送信先ＩＰアドレスと当該パケットの送信元ＩＰアドレスと当該パケットのプロトコル番号と当該パケットの送信元ポート番号と当該パケットの送信先ポート番号との組み合わせに対応して特定し、
前記第２のパケット群の各々の識別情報を特定する処理は、
当該組み合わせに対応して特定した前記第１のパケット群の各々の識別情報と、前記各ビットのうちの前記第２の期間内に送信されたパケットに対応するビット列とに基づいて、前記第２のパケット群の各々の識別情報を当該組み合わせに対応して特定し、
前記コンピュータに、
当該組み合わせに対応して特定した前記第２のパケット群の各々の識別情報に基づいて、パケットロスの数を当該組み合わせに対応して計数する、
処理を実行させることを特徴とする請求項５に記載のパケット検証プログラム。
【請求項７】
パケットの識別情報と前記パケットが受信または送信された際の時刻を含む期間と前記パケットの送受信の種別との組み合わせに対応した各ビットのうち、受信または送信されたパケットに対応するビットを有効に設定し、
前記各ビットのうちの第１の期間内に受信されたパケットに対応するビット列と、前記各ビットのうちの前記第１の期間内に送信されたパケットに対応するビット列とを比較した比較結果に基づいて、前記第１の期間内に受信されており、かつ前記第１の期間内に送信されていない第１のパケット群の各々の識別情報を特定し、
特定した前記第１のパケット群の各々の識別情報と、前記各ビットのうちの前記第１の期間の次に連続する第２の期間内に送信されたパケットに対応するビット列とに基づいて、前記第１の期間内に受信されており、かつ前記第１の期間および前記第２の期間内に送信されていない第２のパケット群の各々の識別情報を特定する、
制御部を有することを特徴とするパケット検証装置。
【請求項８】
コンピュータが、
パケットの識別情報と前記パケットが受信または送信された際の時刻を含む期間と前記パケットの送受信の種別との組み合わせに対応した各ビットのうち、受信または送信されたパケットに対応するビットを有効に設定し、
前記各ビットのうちの第１の期間内に受信されたパケットに対応するビット列と、前記各ビットのうちの前記第１の期間内に送信されたパケットに対応するビット列とを比較した比較結果に基づいて、前記第１の期間内に受信されており、かつ前記第１の期間内に送信されていない第１のパケット群の各々の識別情報を特定し、
特定した前記第１のパケット群の各々の識別情報と、前記各ビットのうちの前記第１の期間の次に連続する第２の期間内に送信されたパケットに対応するビット列とに基づいて、前記第１の期間内に受信されており、かつ前記第１の期間および前記第２の期間内に送信されていない第２のパケット群の各々の識別情報を特定する、
処理を実行することを特徴とするパケット検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット検証プログラム、パケット検証装置、およびパケット検証方法に関する。
【背景技術】
【０００２】
従来、ネットワーク内の監視対象装置に流れるパケットを取得して解析する方法がある。また、監視対象装置内で喪失したパケットを検出する技術がある。関連する先行技術として、代表ノードがマルチキャストされたデータパケットを受信した後、ビットマップフィールドにデータパケットの受信に成功したかを示す値を記録し、ビットマップによって、データパケットロスがあったかを判断するものがある。また、複数種類の試験用パケットを被試験装置に送信および被試験装置から受信し、送受信を終了したとき、受信した試験用パケット数のカウント値が送信した試験用パケット数のカウント値より小さい試験用パケットの種類を廃棄パケットと特定する技術がある。また、送信元または宛先のアドレスに対応させて前回のパケットの識別子を保持した記憶部から今回のパケットのアドレスに対応する識別子を検索し、前回のパケットの識別子より今回のパケットの識別子が小さい場合に順序反転が発生したと判断する技術がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−２０７１４７号公報
【特許文献２】特開２００８−４２４１０号公報
【特許文献３】特開２００９−１８２４３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術によれば、喪失したパケットの判定を誤る場合がある。例えば、ある期間で受信されたパケットと送信されたパケットとの各識別情報に対応する各ビット列を比較すると、ある期間で受信され、ある期間の次に連続する期間で送信されたパケットは、喪失していないにも関わらず、喪失したと判定されることになる。
【０００５】
１つの側面では、本発明は、喪失したパケットの判定精度を向上させることができるパケット検証プログラム、パケット検証装置、およびパケット検証方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一側面によれば、パケットの識別情報とパケットが受信または送信された際の時刻を含む期間とパケットの送受信の種別との組み合わせに対応した各ビットのうち、受信または送信されたパケットに対応するビットを有効に設定し、各ビットのうちの第１の期間内に受信されたパケットに対応するビット列と、各ビットのうちの第１の期間内に送信されたパケットに対応するビット列とを比較した比較結果に基づいて、第１の期間内に受信されており、かつ第１の期間内に送信されていない第１のパケット群の各々の識別情報を特定し、特定した第１のパケット群の各々の識別情報と、各ビットのうちの第１の期間の次に連続する第２の期間内に送信されたパケットに対応するビット列とに基づいて、第１の期間内に受信されており、かつ第１の期間および第２の期間内に送信されていない第２のパケット群の各々の識別情報を特定するパケット検証プログラム、パケット検証装置、およびパケット検証方法が提案される。
【発明の効果】
【０００７】
本発明の一態様によれば、喪失したパケットの判定精度を向上させることができるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】図１は、本実施の形態にかかるパケット検証装置１０１の動作例を示す説明図である。
【図２】図２は、情報処理システム２００の構成例を示す説明図である。
【図３】図３は、パケット検証装置１０１のハードウェア構成例を示す説明図である。
【図４】図４は、パケット検証装置１０１の機能構成例を示す説明図である。
【図５】図５は、セッションテーブル４１１の記憶内容の一例を示す説明図である。
【図６】図６は、管理ビット情報４１２の記憶内容の一例を示す説明図である。
【図７】図７は、実施例１におけるパケットロス判定の動作例を示す説明図である。
【図８】図８は、実施例１における受信側のパケット解析処理手順を示すフローチャートである。
【図９】図９は、実施例１における送信側のパケット解析処理手順を示すフローチャートである。
【図１０】図１０は、実施例１におけるパケットロス判定処理手順を示すフローチャートである。
【図１１】図１１は、実施例１における判定対象セッションパケットロス判定処理手順を示すフローチャートである。
【図１２】図１２は、実施例２におけるパケットロス判定の動作例を示す説明図である。
【図１３】図１３は、実施例２における判定対象セッションパケットロス判定処理手順を示すフローチャートである。
【図１４】図１４は、実施例３におけるパケットロス判定の動作例を示す説明図（その１）である。
【図１５】図１５は、実施例３におけるパケットロス判定の動作例を示す説明図（その２）である。
【図１６】図１６は、実施例３における受信側のパケット解析処理手順を示すフローチャートである。
【図１７】図１７は、受信側ＩＰＩＤ記録処理手順を示すフローチャートである。
【図１８】図１８は、実施例３における送信側のパケット解析処理手順を示すフローチャートである。
【図１９】図１９は、送信側ＩＰＩＤ記録処理手順を示すフローチャートである。
【図２０】図２０は、実施例３における判定対象セッションパケットロス判定処理手順を示すフローチャートである。
【図２１】図２１は、パケットロス判定処理の出力例を示す説明図である。
【発明を実施するための形態】
【０００９】
以下に図面を参照して、開示のパケット検証プログラム、パケット検証装置、およびパケット検証方法の実施の形態を詳細に説明する。
【００１０】
図１は、本実施の形態にかかるパケット検証装置１０１の動作例を示す説明図である。パケット検証装置１０１は、監視対象装置１０２内で喪失したパケットについて検証するコンピュータである。ここで、パケットとは、通信ネットワークにおいて、送受信されるデータのことである。また、パケットが喪失することを、以下、「パケットロス」と呼称する。例えば、ネットワークに流れるパケットが増大すると、パケットロスが発生することがある。そして、パケットロスが発生すると、ロスしたパケットを再送するために、ネットワークに流れるパケットがさらに増大するという悪循環が発生することがある。
【００１１】
ここで、本実施の形態におけるパケットは、ネットワーク層のプロトコルであるＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）ヘッダを有するものとする。ＩＰヘッダを有していれば、本実施の形態におけるパケットは、有線通信によるものでもよいし、無線通信によるものでもよい。パケット検証装置１０１は、監視対象装置１０２が送受信したパケットを取得して解析し、パケットに含まれるＩＰヘッダを取得する。パケット検証装置１０１がどのように監視対象装置１０２が送受信したパケットを取得するかについては、図２で説明する。また、監視対象装置１０２の具体例についても、図２で説明する。ＩＰヘッダには、送信先ＩＰアドレス、送信元ＩＰアドレス、プロトコル番号等が含まれる。
【００１２】
さらに、パケットには、ＩＰヘッダに含まれるプロトコル番号に応じたトランスポート層のプロトコルのヘッダが含まれる。トランスポート層のプロトコルとしては、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）やＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）等がある。パケット検証装置１０１は、パケットに含まれるＩＰヘッダから、トランスポート層のプロトコルを解析し、ＩＰヘッダに含まれるプロトコル番号に応じたＴＣＰヘッダやＵＤＰヘッダを取得する。ＴＣＰヘッダやＵＤＰヘッダには、送信元ポート番号、送信先ポート番号等が含まれる。
【００１３】
ネットワークに流れるパケットがさらに増大するという悪循環の理由として、ＴＣＰでは、ロスしたパケットを検出すると、パケットを再送する機能があり、この機能により、ネットワークに流れるパケットがさらに増大することになる。また、ＵＤＰであっても、ＵＤＰの上位のアプリケーションソフトウェアが、ロスしたパケットを再送する機能を有するのであれば、ＴＣＰと同様に、ネットワークに流れるパケットがさらに増大することになる。
【００１４】
ここで、パケットは、セッションごとに送信元ポート番号、送信先ポート番号が特定されるため、セッションごとのパケットロス発生状況を把握したいという要望がある。セッションとは、送信先ＩＰアドレス、送信元ＩＰアドレス、プロトコル番号、送信元ポート番号、送信先ポート番号の組み合わせにより特定されるものである。セッション単位でパケットロス発生状況がわかれば、監視対象装置１０２の受信ポートと送信ポートとを特定することができ、同一の送信ポートを使用した他のセッションの通信状況やロスの様子もわかるようになる。
【００１５】
例えば、セッションごとのパケットロス発生状況を把握する方法としては、セッションの開始から終了までの送受信パケットの数と、総送信パケットの数とを比較することが考えられる。しかしながら、この場合、セッションが終了するまで、パケットロスの発生状況を把握することができない。
【００１６】
また、パケットのＩＰヘッダに含まれる識別情報（ＩＤ：Ｉｄｅｎｔｉｆｉｅｒ）ごとに、送信・受信状況を記憶して、パケットロスを特定することが考えられる。例えば、パケットをそのまま保存したり、ヘッダ部分やパケット全体をハッシュ処理して得られたハッシュ値を一定数保存したりして、受信側と送信側とでマッチングを行うことにより、パケットロスを特定する。しかしながら、この場合、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の負荷やメモリの負荷が大きくなるため、現実的ではない。
【００１７】
例えば、１００［Ｇｂｐｓ（Ｂｉｔｓ  Ｐｅｒ  Ｓｅｃｏｎｄ）］程度の通信速度におけるパケットロスを特定したいとする。この場合、約１億［ｐｐｓ（Ｐａｃｋｅｔ  Ｐｅｒ  Ｓｅｃｏｎｄ）］となる。そして、送信・受信状況を記憶する間隔を、１［ｍｓｅｃ］とする。従って、１［ｍｓｅｃ］で１０万パケットの処理を行うことになる。この１０万パケット全部のマッチングを行うには、ＣＰＵの負荷が大きくなる。例えば、ｆｏｒ構文のループで各パケットをマッチングするものとし、１回のマッチングに、１０クロックを用いるとする。この場合、１つのパケットを、他の１０万のパケットとマッチングするには、１Ｍクロックを用いることになる。そして、例えば、３［ＧＨｚ］のクロック周波数を有するＣＰＵは、３０００パケット程度しか処理できなくなる。また、パケットやＩＰＩＤの保存を、リストを使用して管理すると、さらに多くのクロック数を消費することになる。かといって、リストを使用せず、予め十分な保存領域を確保すると、膨大なメモリ量を消費することになる。
【００１８】
メモリ消費量を抑える方法としては、パケットのＩＰヘッダのＩＤが取り得る値ごとにビットを割り当てたビット列を生成し、パケットの送信や受信に応じて、対応するビットを有効、無効に設定してパケットロスを検出することが考えられる。以下の記載では、ＩＰヘッダのＩＤを、「ＩＰＩＤ」と呼称する。また、ビットを有効に設定することは、ビットを「１」に設定することでもよいし、「０」に設定することでもよい。以下の記載では、ビットを有効に設定することは、ビットを「１」に設定することとし、ビットを無効に設定することは、ビットを「０」に設定することとする。
【００１９】
しかしながら、ある期間におけるビット列のパケットロスの判定では、正しく判定できない場合がある。例えば、１［ｍｓｅｃ］間隔でビット列を生成した場合、０〜１［ｍｓｅｃ］間で受信し、１〜２［ｍｓｅｃ］間で送信したパケットは、前述のビット列ではパケットロスと判定されることになる。
【００２０】
そこで、本実施の形態では、ある期間で受信したパケットに対応するビットを「１」に設定したビット列から同期間で送信したパケットのビットを「０」にし、残ったビットから次の期間で送信したパケットのビットを「０」にすることについて説明する。ここで、ＩＰＩＤは、セッションごと、または端末ごとに、シーケンシャルに増加する場合と、ランダムに変化する場合とがある。図１〜図１３では、ＩＰＩＤがシーケンシャルに増加する場合について説明する。ＩＰＩＤがランダムに変化する場合については、図１４〜図２０で説明する。
【００２１】
図１を用いて、パケット検証装置１０１の動作例について説明する。図１の例では、監視対象装置１０２は、パケットｐ０〜ｐ４を受信し、パケットｐ２をロスし、パケットｐ０、１、３、４を送信したものとする。また、監視対象装置１０２は、第１の期間として、時刻ｔ０から時刻ｔ１までの期間に、パケットｐ０〜ｐ３を受信しており、パケットｐ０、１を送信する。また、監視対象装置１０２は、第２の期間として、時刻ｔ１から時刻ｔ２までの期間に、パケットｐ４を受信しており、パケットｐ３、４を送信する。図１で示すように、監視対象装置１０２の受信側と送信側とでは、監視対象装置１０２内で遅延が発生するため、同一の期間における受信側と送信側とのパケットを比較しても、正しく判定することができない。図１の例では、第１の期間と第２の期間とを跨るパケットｐ３がロスしていないことと、パケットｐ２がロスしたことを、パケット検証装置１０１が正しく判定できることを説明する。
【００２２】
図１の（１）で示すように、パケット検証装置１０１は、各ビットのうち、受信または送信されたパケットに対応するビットを「１」に設定する。ここで、各ビットは、パケットのＩＰＩＤとパケットが受信または送信された際の時刻を含む期間とパケットの送受信の種別との組み合わせに対応するものである。具体的には、図１では、各ビットは、Ｒ−１、Ｒ−２、Ｓ−１、Ｓ−２のビット全てである。具体的には、Ｒ−１は、第１の期間に監視対象装置１０２が受信したパケットに対応するビット列である。同様に、Ｒ−２は、第２の期間に監視対象装置１０２が受信したパケットに対応するビット列である。また、Ｓ−１は、第１の期間に監視対象装置１０２が送信したパケットに対応するビット列である。同様に、Ｓ−２は、第２の期間に監視対象装置１０２が送信したパケットに対応するビット列である。
【００２３】
ここで、第１の期間と第２の期間とは、同間隔の期間でもよいし、異なる間隔の期間でもよいが、管理を容易にするために、同間隔の期間であることが好ましい。本実施の形態では、第１の期間と第２の期間とが、同間隔であるとし、前述の間隔を有する期間を、「使用期間」と称する。使用期間は、例えば、１［ｍｓｅｃ］である。
【００２４】
以下の記載では、受信または送信されたパケットに対応するビット列を、「管理ビット列」と呼称する。また、受信されたパケットに対応する管理ビット列を、「受信側の管理ビット列」と呼称する。同様に、送信されたパケットに対応する管理ビット列を、「送信側の管理ビット列」と呼称する。さらに、管理ビット列の表記について、管理ビット列［ｘ］は、先頭からｘ番目のビットを示すものとする。さらに、図１では、説明の簡略化のため、管理ビット列［ｘ］が、パケットｐｘのＩＰＩＤに対応するものとする。
【００２５】
図１の例では、パケット検証装置１０１は、管理ビット列Ｒ−１［０］〜［３］、Ｓ−１［０］、［１］、Ｒ−２［４］、Ｓ−２［３］、［４］を１に設定する。
【００２６】
次に、図１の（２）で示すように、パケット検証装置１０１は、管理ビット列Ｒ−１と管理ビット列Ｓ−１とを比較する。比較の結果、管理ビットＲ−１、Ｓ−１ともに「１」となっているビットに対応するパケットｐ０、ｐ１は、第１の期間に送信されていることがわかるため、パケット検証装置１０１は、管理ビットＲ−１［０］、［１］を「０」に設定する。そして、図１の（３）で示すように、パケット検証装置１０１は、比較結果に基づいて、第１の期間に受信されており、かつ第１の期間に送信されていない第１のパケット群を特定する。図１の例では、パケット検証装置１０１は、「１」が残った管理ビットＲ−１［２］、［３］に対応するパケットｐ２、ｐ３のＩＰＩＤを、第１のパケット群の各々のＩＰＩＤとして特定する。
【００２７】
第１のパケット群には、ロスしたパケットと、第１の期間の次に連続する第２の期間に送信されたパケットとが混在する。そこで、パケット検証装置１０１は、図１の（４）、（５）で示すように、第１のパケット群の各々のＩＰＩＤと管理ビット列Ｓ−２とに基づいて、第２のパケット群の各々のＩＰＩＤを特定する。第２のパケット群は、第１の期間に受信されており、かつ第１の期間および第２の期間に送信されていないパケット群である。
【００２８】
図１の例では、パケット検証装置１０１は、図１の（４）で示すように、第１のパケット群の各々のＩＰＩＤに対応する管理ビット列Ｒ−１［２］、［３］とにＩＰＩＤが対応する管理ビット列Ｓ−２［２］、［３］とを比較する。比較の結果、管理ビットＲ−１、Ｓ−２ともに「１」となっているビットに対応するパケットｐ３は、第２の期間に送信されていることがわかるため、パケット検証装置１０１は、管理ビットＲ−１［３］を「０」に設定する。以上により、パケット検証装置１０１は、管理ビットＲ−１で「１」のままとなった管理ビットＲ−１［２］に対応するパケットｐ２のＩＰＩＤを、第２のパケット群のＩＰＩＤであるとして特定する。このように、パケット検証装置１０１は、パケットｐ２のＩＰＩＤを特定できているため、監視対象装置１０２のパケットロスを正確に特定することができ、パケットロスの判定精度を向上させることができる。
【００２９】
また、上記の説明では、セッションを特定するため、受信または送信されたパケットが、ＴＣＰヘッダまたはＵＤＰヘッダを含むものとしたが、本実施の形態は、他のトランスポート層のプロトコルを有するパケットに対しても適用することができる。そして、ＩＰヘッダ、ＴＣＰヘッダ、ＵＤＰヘッダ以外のヘッダとして、受信または送信されたパケットを一意に特定できる情報があれば、パケット検証装置１０１は、該当の情報をＩＰＩＤの代わりに使用してもよい。また、図１の例では、パケット検証装置１０１は、監視対象装置１０２のパケットロスを検証したが、パケット検証装置１０１自身が送受信したパケットのパケットロスを検証してもよい。次に、パケット検証装置１０１を含むシステムについて、図２を用いて説明する。
【００３０】
図２は、情報処理システム２００の構成例を示す説明図である。情報処理システム２００は、パケット検証装置１０１と、監視対象装置１０２とを有する。図２の例では、パケット検証装置１０１は、監視対象装置１０２の受信側ミラーポート２０１および送信側ミラーポート２０２に接続する。
【００３１】
監視対象装置１０２は、パケット検証装置１０１によって、パケットのロスを監視される装置である。監視対象装置は、パケットを中継するものであればどのようなものでもよい。例えば、監視対象装置１０２は、ハブ、ブリッジ、スイッチ、ルータ等である。また、監視対象装置１０２は、ソフトウェアルータを実行するコンピュータでもよい。ここで、図２で示す矢印は、監視対象装置１０２が中継するパケットの流れを模式的に示したものである。
【００３２】
パケット検証装置１０１は、受信側ミラーポート２０１から監視対象装置１０２が受信した全ポートのパケットを取得するとともに、送信側ミラーポート２０２から監視対象装置１０２が送信した全ポートのパケットを取得する。また、監視対象装置１０２によるパケットの取得方法は、前述した方法に限られない。例えば、監視対象装置１０２に接続するネットワークケーブルにＴＡＰを設置する方法でもよい。ここで、ＴＡＰは、ケーブル上で送受信されるフレームをコピーして、パケット検証装置１０１等の他の送信する装置である。また、監視対象装置１０２に接続するスイッチでミラー設定する方法でもよい。次に、パケット検証装置１０１のハードウェア構成について、図３を用いて説明する。
【００３３】
図３は、パケット検証装置１０１のハードウェア構成例を示す説明図である。図３において、パケット検証装置１０１は、ＣＰＵ３０１と、ＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０３と、を含む。また、パケット検証装置１０１は、ディスクドライブ３０４およびディスク３０５と、通信インターフェース３０６、３０７と、を含む。また、ＣＰＵ３０１〜ディスクドライブ３０４、通信インターフェース３０６、３０７はバス３０８によってそれぞれ接続される。
【００３４】
ＣＰＵ３０１は、パケット検証装置１０１の全体の制御を司る演算処理装置である。ＲＯＭ３０２は、ブートプログラムなどのプログラムを記憶する不揮発性メモリである。ＲＡＭ３０３は、ＣＰＵ３０１のワークエリアとして使用される揮発性メモリである。
【００３５】
ディスクドライブ３０４は、ＣＰＵ３０１の制御に従ってディスク３０５に対するデータのリードおよびライトを制御する制御装置である。ディスクドライブ３０４には、例えば、磁気ディスクドライブ、光ディスクドライブ、ソリッドステートドライブなどを採用することができる。ディスク３０５は、ディスクドライブ３０４の制御で書き込まれたデータを記憶する不揮発性メモリである。例えばディスクドライブ３０４が磁気ディスクドライブである場合、ディスク３０５には、磁気ディスクを採用することができる。また、ディスクドライブ３０４が光ディスクドライブである場合、ディスク３０５には、光ディスクを採用することができる。また、ディスクドライブ３０４がソリッドステートドライブである場合、ディスク３０５には、半導体素子によって形成された半導体メモリ、いわゆる半導体ディスクを採用することができる。
【００３６】
通信インターフェース３０６、３０７は、ネットワーク等と内部のインターフェースを司り、他の装置からのデータの入出力を制御する制御装置である。具体的には、通信インターフェース３０６は、監視対象装置１０２の受信側ミラーポート２０１に接続される。また、通信インターフェース３０７は、監視対象装置１０２の送信側ミラーポート２０２に接続される。通信インターフェース３０６、３０７には、例えば、Ｅｔｈｅｒｎｅｔ（登録商標）カードなどのＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）を採用することができる。
【００３７】
また、情報処理システム２００の管理者が、パケット検証装置１０１を直接操作する場合、パケット検証装置１０１は、ディスプレイ、キーボード、マウスといったハードウェアを有してもよい。
【００３８】
（パケット検証装置１０１の機能構成例）
図４は、パケット検証装置１０１の機能構成例を示す説明図である。パケット検証装置１０１は、制御部４００を有する。制御部４００は、解析部４０１と、出力部４０２とを有する。そして、解析部４０１は、取得部４０３と、セッション特定部４０４と、設定部４０５と、第１パケットロス特定部４０６と、第２パケットロス特定部４０７と、計数部４０８と、を含む。制御部４００は、記憶装置に記憶されたプログラムをＣＰＵ３０１が実行することにより、各部の機能を実現する。記憶装置とは、具体的には、例えば、図３に示したＲＯＭ３０２、ＲＡＭ３０３、ディスク３０５などである。また、各部の処理結果は、ＣＰＵ３０１のレジスタや、ＣＰＵ３０１のキャッシュメモリ、ＲＡＭ３０３等に格納される。
【００３９】
また、パケット検証装置１０１は、セッションテーブル４１１、管理ビット情報４１２にアクセス可能である。セッションテーブル４１１、管理ビット情報４１２は、ＲＡＭ３０３、ディスク３０５といった記憶装置に格納されている。セッションテーブル４１１は、セッションを管理するテーブルである。セッションテーブル４１１の記憶内容の一例は、図５で示す。管理ビット情報４１２は、セッションと、パケットのＩＰＩＤと、パケットが受信または送信された時刻を含む期間と、パケットの送受信の種別との組み合わせに対応するビット群を含む情報である。管理ビット情報４１２の記憶内容の一例は、図６で示す。
【００４０】
取得部４０３は、受信側ミラーポート２０１と送信側ミラーポート２０２とから、受信または送信されたパケットを取得する。さらに、取得部４０３は、取得したパケットのヘッダ情報を取得する。ここで、ヘッダ情報とは、ＩＰヘッダと、ＴＣＰヘッダまたはＵＤＰヘッダとである。
【００４１】
ここで、本実施の形態では、パケットロスの判定方法として、第１〜第３の実施例という３つの方法について説明する。まず、パケットロス判定における第１の実施例にかかる機能について説明する。パケットロス判定における第１の実施例の詳細は、図７〜図１１を用いて説明する。
【００４２】
セッション特定部４０４は、セッションテーブル４１１を参照して、管理ビット情報４１２から、取得部４０３が取得したパケットが属するセッションに対応する各ビットを特定する。
【００４３】
設定部４０５は、パケットのＩＰＩＤとパケットが受信または送信された際の時刻を含む期間とパケットの送受信の種別との組み合わせに対応した各ビットのうち、受信または送信されたパケットに対応するビットを「１」に設定する。
【００４４】
第１パケットロス特定部４０６は、第１の期間の受信側の管理ビット列と、第１の期間に送信側の管理ビット列とを比較した比較結果に基づいて、第１のパケット群の各々のＩＰＩＤを特定する。具体的な特定方法は、図１で示した通りである。
【００４５】
また、第１パケットロス特定部４０６は、セッション特定部４０４が特定した各ビットのうちの第１の期間の受信側と送信側との管理ビット列を比較した比較結果に基づいて、第１のパケット群の各々のＩＰＩＤを、特定したセッションに対応して特定してもよい。
【００４６】
第２パケットロス特定部４０７は、第１パケットロス特定部４０６が特定した第１のパケット群の各々のＩＰＩＤと、第２の期間内の送信側の管理ビット列とに基づいて、第２のパケット群の各々のＩＰＩＤを特定する。
【００４７】
また、第２パケットロス特定部４０７は、第１のパケット群の各々のＩＰＩＤと、次に示す期間の送信側の管理ビット列とに基づいて、第１の期間内に受信されており、かつ第１の期間および次に示す期間に送信されていないパケット群の各々のＩＰＩＤを特定する。次に示す期間は、第１の期間の終了時刻から監視対象装置１０２の最大遅延時間を終了時刻に加算した時刻までの期間である。ここで、パケット検証装置１０１は、パケット検証装置１０１の管理者の入力等により、最大遅延時間を予め記憶しておく。または、パケット検証装置１０１は、パケットロス判定を行う前に、監視対象装置１０２に試験用のパケットを送信し、最大遅延時間を測定してもよい。
【００４８】
具体的には、第１の期間が０〜１［ｍｓｅｃ］であり、最大遅延時間が、１．２［ｍｓｅｃ］であるとする。そして、管理ビット情報４１２には、０〜１［ｍｓｅｃ］の受信側および送信側の管理ビット列と、１〜２［ｍｓｅｃ］の送信側の管理ビット列と、２〜３［ｍｓｅｃ］の送信側の管理ビット列とが含まれるものとする。最大遅延時間が１．２［ｍｓｅｃ］であるから、第１の期間に受信したパケットは、最も遅くとも２．２［ｍｓｅｃ］に送信されることになる。従って、第２パケットロス特定部４０７は、第１の期間の終了時刻から最大遅延時間を前述の終了時刻に加算した時刻までの期間となる１〜２．２［ｍｓｅｃ］と重なる、１〜２［ｍｓｅｃ］と、２〜３［ｍｓｅｃ］との送信側の管理ビット列とを用いる。
【００４９】
また、第２パケットロス特定部４０７は、セッションに対応して特定した第１のパケット群の各々のＩＰＩＤと、第２の期間内に送信されたパケットに対応するビット列とに基づいて、第２のパケット群の各々のＩＰＩＤをセッションに対応して特定する。
【００５０】
次に、パケットロス判定における第２の実施例にかかる機能について説明する。第２の実施例は、第１の実施例に一部の機能を追加する方法である。第２の実施例の詳細は、図１２、図１３を用いて説明する。設定部４０５は、第２の期間の送信側の管理ビット列のうち、第１パケットロス特定部４０６が特定した第１のパケット群の各々に対応するビットを「０」に設定する。
【００５１】
また、パケットロス判定における第３の実施例にかかる機能について説明する。第３の実施例は、第１または第２の実施例に一部の機能を追加する方法である。第３の実施例の詳細は、図１４〜図２０を用いて説明する。各ビットのうちの受信または送信されたパケットに対応するビットを有効に設定する際に、前述のパケットに対応するビットが既に「１」である場合とする。この場合、設定部４０５は、管理ビット情報４１２に、パケットが受信または送信された際の時刻を含む期間に対応するビット列を追加する。
【００５２】
第１パケットロス特定部４０６は、各ビットのうちの第１の期間内に受信側の１または複数の管理ビット列と、各ビットのうちの第１の期間内の送信側の１または複数の管理ビット列とを比較した比較結果に基づいて、第１のパケット群の各々のＩＰＩＤを特定する。
【００５３】
そして、第２パケットロス特定部４０７は、第１パケットロス特定部４０６が特定した第１のパケット群の各々のＩＰＩＤと、各ビットのうちの第２の期間内の送信側の１または複数のビット列とに基づいて、第２のパケット群の各々のＩＰＩＤを特定する。具体的な特定方法については、図１４、図１５で説明する。
【００５４】
次に説明する機能は、第１〜３の実施例で共通する機能である。計数部４０８は、当該組み合わせに対応して特定した第２のパケット群の各々のＩＰＩＤに基づいて、パケットロスの数を当該組み合わせに対応して計数する。
【００５５】
出力部４０２は、計数部４０８が計数したセッションに対応するパケットロスの数を出力する。出力形式としては、例えば、パケット検証装置１０１が、ディスプレイやプリンタを有しているならば、ディスプレイへの表示、プリンタへの印刷出力がある。また、出力部４０２は、ディスク３０５などの記憶領域に記憶することとしてもよい。
【００５６】
図５は、セッションテーブル４１１の記憶内容の一例を示す説明図である。図５に示すセッションテーブル４１１は、レコード５０１−１〜３を有する。
【００５７】
セッションテーブル４１１は、セッションＩＤと、送信元ＩＰと、送信先ＩＰと、プロトコル番号と、送信元ポートと、送信先ポートというフィールドを含む。セッションＩＤフィールドには、セッションを識別する情報が格納される。送信元ＩＰフィールドには、ＩＰヘッダに含まれる送信元ＩＰアドレスを示す値が格納される。送信先ＩＰフィールドには、ＩＰヘッダに含まれる送信先ＩＰアドレスを示す値が格納される。プロトコル番号フィールドには、ＩＰヘッダに含まれるプロトコル番号を示す値が格納される。送信元ポートフィールドには、ＴＣＰヘッダまたはＵＤＰヘッダに含まれる送信元ポートを示す値が格納される。送信先ポートフィールドには、ＴＣＰヘッダまたはＵＤＰヘッダに含まれる送信先ポートを示す値が格納される。
【００５８】
例えば、レコード５０１−１は、セッションＩＤ「１」について示すレコードである。そして、セッションＩＤ「１」となるパケットは、送信元ＩＰが１０．２０．３０．４０であり、送信先ＩＰが１０．２０．３０．５０であり、プロトコル番号が６であり、送信元ポートが２０００であり、送信先ポートが２０となるパケットである。ここで、プロトコル番号が６であるため、トランスポート層のプロトコルがＴＣＰとなる。次に、管理ビット情報４１２の記憶内容について、図６を用いて説明する。
【００５９】
図６は、管理ビット情報４１２の記憶内容の一例を示す説明図である。図６に示す管理ビット情報４１２は、セッション−管理ビットリスト対応テーブル６０１と、受信側管理ビットテーブル６０２Ｒと、送信側管理ビットテーブル６０２Ｓとを有する。
【００６０】
セッション−管理ビットリスト対応テーブル６０１は、セッションと、管理ビットテーブルとを対応付けて記憶するテーブルである。図６に示すセッション−管理ビットリスト対応テーブル６０１は、レコード６０１−１〜３を有する。
【００６１】
セッション−管理ビットリスト対応テーブル６０１は、セッションＩＤ（ＩＤｅｎｔｉｆｉｅｒ）と、受信側管理ビットテーブルアドレスと、送信側管理ビットテーブルアドレスというフィールドを有する。セッションＩＤフィールドには、セッションを識別する番号が格納される。受信側管理ビットテーブルアドレスフィールドには、該当のセッションに対応する受信側管理ビットテーブル６０２Ｒへの先頭アドレスが格納される。送信側管理ビットテーブルアドレスフィールドには、該当のセッションに対応する送信側管理ビットテーブル６０２Ｓへの先頭アドレスが格納される。
【００６２】
例えば、レコード６０１−１は、セッションＩＤ「１」に対応する受信側管理ビットテーブル６０２Ｒの先頭アドレスがｐ１−Ｒであり、セッションＩＤ「１」に対応する送信側管理ビットテーブル６０２Ｓの先頭アドレスがｐ１−Ｓであることを示す。
【００６３】
受信側管理ビットテーブル６０２Ｒは、受信側の管理ビット列を管理するテーブルである。図６に示す受信側管理ビットテーブル６０２Ｒは、レコード６０２Ｒ−０〜３を有する。ここで、レコード６０２Ｒ−０は、Ｗｒｉｔｅ位置フィールドと、次Ｒｅａｄ位置フィールドとを有するレコードである。Ｗｒｉｔｅ位置フィールドには、現在ビットを設定中の管理ビット列の位置を示す値が格納される。次Ｒｅａｄ位置フィールドには、次にパケットロス判定を行う際に読み出す管理ビット列の位置を示す値が格納される。
【００６４】
また、レコード６０２Ｒ−１以降のレコードは、管理ビット列と、開始時刻というフィールドを有する。管理ビット列には、管理ビット列への先頭アドレスが格納される。開始時刻フィールドには、該当の管理ビット列にビットを設定することを開始した時刻を示す値が格納される。
【００６５】
例えば、レコード６０２Ｒ−０は、現在ビットを設定中の管理ビット列が、上から３番目、すなわち、管理ビット列Ｒ−３であり、次にパケットロス判定を行う際に読み出す管理ビット列が、上から１番目、すなわち、管理ビット列Ｒ−１であることを示す。また、レコード６０２Ｒ−１は、管理ビット列Ｒ−１にビットを設定することを開始した時刻が、「００：０１：００．００１」であることを示す。また、本実施の形態では、管理ビット列の使用期間を１［ｍｓｅｃ］とする。
【００６６】
送信側管理ビットテーブル６０２Ｓは、送信側の管理ビット列を管理するテーブルである。図６に示す送信側管理ビットテーブル６０２Ｓは、レコード６０２Ｓ−０〜３を有する。ここで、レコード６０２Ｓ−０は、Ｗｒｉｔｅ位置フィールドと、次Ｒｅａｄ位置フィールドとを有するレコードである。Ｗｒｉｔｅ位置フィールドには、現在ビットを設定中の管理ビット列の位置を示す値が格納される。次Ｒｅａｄ位置フィールドには、次にパケットロス判定を行う際に読み出す管理ビット列の位置を示す値が格納される。
【００６７】
また、レコード６０２Ｓ−１以降のレコードは、管理ビット列と、開始時刻というフィールドを有する。管理ビット列には、管理ビット列への先頭アドレスが格納される。開始時刻フィールドには、該当の管理ビット列にビットを設定することを開始した時刻を示す値が格納される。
【００６８】
管理ビット列は、セッション、受信および送信ごとに、１６ビット分の数、すなわち、ＩＰＩＤが取り得る値である０〜６５５３５を識別可能な６５５３６ビットのビット列である。パケット検証装置１０１は、到着したパケットをセッションごとに分類し、到着したパケットのＩＰＩＤに対応するビットを「１」に設定する。
【００６９】
このように、受信側と送信側とで管理ビット列を別々に用意することにより、パケット検証装置１０１は、管理ビット列へのアクセスによるロックを回避することができる。
【００７０】
（パケットロス判定における実施例１の説明）
次に、パケットロス判定における実施例１について、図７〜図１１を用いて説明する。実施例１は、受信と送信の到着時刻のずれを考慮し、受信側の１つの管理ビット列に対し、送信側の複数の管理ビット列を使用し、パケットロス判定を行う方法である。
【００７１】
図７は、実施例１におけるパケットロス判定の動作例を示す説明図である。図７では、管理ビット列Ｒ−１のパケットロス判定について説明する。ここで、現在時刻では、パケット検証装置１０１が、最新の管理ビット列となる、管理ビット列Ｒ−３、Ｓ−３の各ビットを設定しているとする。また、監視対象装置１０２内の最大遅延時間が２００［μｓｅｃ］であるとする。従って、パケット検証装置１０１は、現在時刻から２［ｍｓｅｃ］前の管理ビット列Ｒ−１のパケットロスを判定する際に、管理ビット列Ｒ−１と同期間の管理ビット列Ｓ−１と比較するとともに、１［ｍｓｅｃ］前の管理ビット列Ｓ−２とも比較する。管理ビット列Ｓ−２の期間は、管理ビット列Ｒ−１の期間の最終時刻＋監視対象装置１０２内の最大遅延時間に該当する期間となる。受信側の管理ビット列の期間の最終時刻＋監視対象装置１０２内の最大遅延時間に該当する期間を網羅する送信側の管理ビット列を用いた後、パケット検証装置１０１は、受信側の管理ビット列で「１」が残ったビットに対応するパケットがロスしたと判断する。
【００７２】
図７の（１）で示すように、パケット検証装置１０１は、管理ビット列Ｒ−１のうち、管理ビット列Ｓ−１のビットで「１」のビットを「０」に設定する。具体的には、図７の例では、管理ビット列Ｓ−１［０］、［６］が「１」であるため、パケット検証装置１０１は、管理ビット列Ｒ−１［０］、［６］を「０」に設定する。
【００７３】
さらに、管理ビット列Ｓ−２が管理ビット列Ｒ−１の遅延の範囲なので、図７の（２）で示すように、パケット検証装置１０１は、管理ビット列Ｒ−１のうち、管理ビット列Ｓ−２のビットで「１」のビットを「０」に設定する。具体的には、図７の例では、管理ビット列Ｓ−２［３］、［５］、［６］が「１」であるため、パケット検証装置１０１は、管理ビット列Ｒ−１［３］、［５］を「０」に設定する。
【００７４】
そして、図７の（３）で示すように、パケット検証装置１０１は、管理ビット列Ｒ−１の「１」が残ったビットの位置がパケットロスと判断する。具体的には、図７の例では、管理ビット列Ｒ−１［２］が「１」であるため、パケット検証装置１０１は、Ｒ−１［２］に対応するパケットがロスしたと判断する。
【００７５】
次に、実施例１においてパケット検証装置１０１が実行する処理を、フローチャートとして図８〜図１１に示す。
【００７６】
図８は、実施例１における受信側のパケット解析処理手順を示すフローチャートである。受信側のパケット解析処理は、監視対象装置１０２が受信したパケットを解析する処理である。
【００７７】
パケット検証装置１０１は、受信側ミラーポート２０１から、受信側のパケットを取得する（ステップＳ８０１）。次に、パケット検証装置１０１は、取得したパケットのヘッダ情報を取得する（ステップＳ８０２）。そして、パケット検証装置１０１は、セッションテーブル４１１から、取得したヘッダ情報から特定されるセッションを検索する（ステップＳ８０３）。次に、パケット検証装置１０１は、当該セッションが登録済か否かを判断する（ステップＳ８０４）。
【００７８】
取得したヘッダ情報から特定されるセッションがまだ登録されていない場合（ステップＳ８０４：Ｎｏ）、パケット検証装置１０１は、当該セッションをセッションテーブル４１１に登録する（ステップＳ８０５）。また、パケット検証装置１０１は、当該セッション用の受信側管理ビットテーブル６０２Ｒを確保する（ステップＳ８０６）。また、パケット検証装置１０１は、当該セッション用の送信側管理ビットテーブル６０２Ｓを確保する（ステップＳ８０７）。ここで、パケット検証装置１０１は、受信側管理ビットテーブル６０２Ｒ、送信側管理ビットテーブル６０２Ｓに対応する管理ビット列を、現在時刻を含む期間に対する管理ビット列だけ確保してもよいし、さらに、次の期間に対する管理ビット列を確保してもよい。
【００７９】
ステップＳ８０７の処理終了後、または、当該セッションが登録済である場合（ステップＳ８０４：Ｙｅｓ）、パケット検証装置１０１は、当該セッション用の受信側の管理ビット列を選択する（ステップＳ８０８）。次に、パケット検証装置１０１は、選択した管理ビット列のうちの取得したパケットのＩＰＩＤに対応するビットを「１」に設定する（ステップＳ８０９）。ステップＳ８０９の処理終了後、パケット検証装置１０１は、ステップＳ８０１の処理に移行する。
【００８０】
図９は、実施例１における送信側のパケット解析処理手順を示すフローチャートである。送信側のパケット解析処理は、監視対象装置１０２が送信したパケットを解析する処理である。
【００８１】
パケット検証装置１０１は、送信側ミラーポート２０２から、送信側のパケットを取得する（ステップＳ９０１）。次に、パケット検証装置１０１は、取得したパケットのヘッダ情報を取得する（ステップＳ９０２）。そして、パケット検証装置１０１は、セッションテーブル４１１から、取得したヘッダ情報から特定されるセッションを検索する（ステップＳ９０３）。
【００８２】
次に、パケット検証装置１０１は、当該セッション用の送信側の管理ビット列を選択する（ステップＳ９０４）。そして、パケット検証装置１０１は、選択した管理ビット列のうちの取得したパケットのＩＰＩＤに対応するビットを「１」に設定する（ステップＳ９０５）。ステップＳ９０５の処理終了後、パケット検証装置１０１は、ステップＳ９０１の処理に移行する。
【００８３】
図１０は、実施例１におけるパケットロス判定処理手順を示すフローチャートである。パケットロス判定処理は、監視対象装置１０２のパケットロスを判定する処理である。
【００８４】
パケット検証装置１０１は、パケットロス判定処理のタイミングか否かを判断する（ステップＳ１００１）。ここで、パケットロス判定処理のタイミングについて、１回目のタイミングは、最初にパケットを取得してから、管理ビット列の使用期間に監視対象装置１０２の最大遅延時間を加算した時間を含む最小の回数分、試用期間が経過したときとなる。例えば、使用期間が１［ｍｓｅｃ］、監視対象装置１０２の最大遅延時間が２００［μｓｅｃ］であれば、最小の回数とは、２となり、最初にパケットを取得してから、２［ｍｓｅｃ］経過したときとなる。２回目以降のタイミングは、前回のタイミングから、試用期間が経過したときとなる。
【００８５】
パケットロス判定処理のタイミングでない場合（ステップＳ１００１：Ｎｏ）、パケット検証装置１０１は、ステップＳ１００１の処理に移行する。一方、パケットロス判定処理のタイミングである場合（ステップＳ１００１：Ｙｅｓ）、パケット検証装置１０１は、判定対象セッションがあるか否かを判断する（ステップＳ１００２）。ここで、判定対象セッションとは、セッションテーブル４１１に登録されている全てのセッションのことである。また、パケット検証装置１０１は、パケット検証装置１０１の管理者の設定等により、セッションテーブル４１１に登録されているセッションのうち、特定の送信元ポートや特定の送信先ポート等を有するセッションを、判定対象セッションとしてもよい。
【００８６】
判定対象セッションがない場合（ステップＳ１００２：Ｎｏ）、パケット検証装置１０１は、ステップＳ１００１の処理に移行する。一方、判定対象セッションがある場合（ステップＳ１００２：Ｙｅｓ）、パケット検証装置１０１は、判定対象セッションのうちから１つのセッションを選択する（ステップＳ１００３）。次に、パケット検証装置１０１は、選択したセッションに対して、判定対象セッションパケットロス判定処理を実行する（ステップＳ１００４）。判定対象セッションパケットロス判定処理については、図１１で説明する。そして、パケット検証装置１０１は、新規書き込み管理ビット列にＷｒｉｔｅ位置を設定する（ステップＳ１００５）。そして、パケット検証装置１０１は、ステップＳ１００２の処理に移行する。
【００８７】
図１１は、実施例１における判定対象セッションパケットロス判定処理手順を示すフローチャートである。判定対象セッションパケットロス判定は、判定対象セッションについて、パケットロスを判定し、パケットロスの個数を計数する処理である。
【００８８】
パケット検証装置１０１は、受信側の最古の管理ビット列を選択する（ステップＳ１１０１）。ここで、受信側の最古の管理ビット列は、次Ｒｅａｄ位置に対応する管理ビット列となる。次に、パケット検証装置１０１は、受信側と同期間の送信側の管理ビット列を選択する（ステップＳ１１０２）。そして、パケット検証装置１０１は、選択した受信側の管理ビット列のうち選択した送信側のビットが「１」のビットを「０」に設定する（ステップＳ１１０３）。
【００８９】
次に、パケット検証装置１０１は、次の送信側の管理ビット列の期間が「受信側の管理ビット列の期間の終了時刻から最大遅延時間を当該終了時刻に加算した時刻までの期間」と重なるか否かを判断する（ステップＳ１１０４）。
【００９０】
例えば、受信側の管理ビット列がＲ−１であり、次の送信側の管理ビット列がＳ−２であり、それぞれ、図６で示す開始時刻であるとする。そして、最大遅延時間が、２００［μｓｅｃ］であるとする。この場合、受信側の管理ビット列の期間の終了時刻は、００：０１：００．００２となる。そして、最大遅延時間を終了時刻に加算した時刻は、００：０１：００．００２２となる。管理ビット列Ｓ−２の期間は、００：０１：００．００２〜００：０１：００．００３であり、終了時刻から、最大遅延時間に終了時刻を加算した時刻までの期間と重なるため、パケット検証装置１０１は、ステップＳ１１０４：Ｙｅｓとする。
【００９１】
また、別の例として、受信側の管理ビット列がＲ−１であり、次の送信側の管理ビット列がＳ−２であり、それぞれ、図６で示す開始時刻であるとする。そして、最大遅延時間が、１２００［μｓｅｃ］であるとする。この場合、受信側の管理ビット列の期間の終了時刻は、００：０１：００．００２となる。そして、最大遅延時間に終了時刻を加算した時刻は、００：０１：００．００３２となる。管理ビット列Ｓ−２の期間は、００：０１：００．００２〜００：０１：００．００３であり、終了時刻から最大遅延時間に終了時刻を加算した時刻までの期間と重なるため、パケット検証装置１０１は、ステップＳ１１０４：Ｙｅｓとする。さらに、次の送信側の管理ビット列がＳ−３となったとする。この場合、管理ビット列Ｓ−２の期間は、００：０１：００．００３〜００：０１：００．００４であり、終了時刻から最大遅延時間に終了時刻を加算した時刻までの期間と重なるため、パケット検証装置１０１は、ステップＳ１１０４：Ｙｅｓとする。
【００９２】
次の送信側の管理ビット列の期間が前述した「期間」と重なる場合（ステップＳ１１０４：Ｙｅｓ）、パケット検証装置１０１は、受信側の管理ビット列のうち送信側の管理ビット列が「１」のビットを「０」に設定する（ステップＳ１１０５）。そして、パケット検証装置１０１は、ステップＳ１１０４の処理に移行する。
【００９３】
一方、次の送信側の管理ビット列の期間が前述した「期間」と重ならない場合（ステップＳ１１０４：Ｎｏ）、パケット検証装置１０１は、受信側の管理ビット列のうち「１」として残ったビットをロスとしてカウントする（ステップＳ１１０６）。そして、パケット検証装置１０１は、受信側、送信側とも今回のＲｅａｄ位置の次の管理ビット列を次Ｒｅａｄ位置に設定する（ステップＳ１１０７）。ステップＳ１１０７の処理終了後、パケット検証装置１０１は、判定対象セッションパケットロス判定処理を終了する。
【００９４】
（パケットロス判定における実施例２の説明）
次に、パケットロス判定における実施例２について、図１２、図１３を用いて説明する。実施例２は、実施例１の方法に加えて、受信側と送信側の管理ビット列を比較した際に、比較時に用いなかった送信側の管理ビット列のビットを保存し、次回のパケットロス判定時に用いる方法である。なお、実施例１において説明した箇所と同様の箇所については、同一符号を付して図示および説明を省略する。
【００９５】
図１２は、実施例２におけるパケットロス判定の動作例を示す説明図である。図１２では、管理ビット列Ｒ−１のパケットロス判定について説明する。図１２の（１）、（２）、（４）については、図７の（１）〜（３）と同一の処理であるため、説明を省略する。
【００９６】
図１２の（３）で示すように、図１２の（２）で使用しなかった、管理ビット列Ｓ−２のビットを管理ビット列Ｓ−２’として保存し、次回のパケットロス判定時に使用する。図１２の例では、管理ビット列Ｓ−２［３］、［５］、［６］のうち、管理ビット列Ｓ−２［６］が使用されていない。従って、パケット検証装置１０１は、管理ビット列Ｓ−２［６］を「１」とし、他のビットを「０」とした管理ビット列Ｓ−２’を保存する。
【００９７】
次に、実施例２においてパケット検証装置１０１が実行する処理を、フローチャートとして図１３に示す。ここで、実施例２における受信側のパケット解析処理、送信側のパケット解析処理、パケットロス判定処理については、実施例１と同じ処理であるため、説明および図示を省略する。
【００９８】
図１３は、実施例２における判定対象セッションパケットロス判定処理手順を示すフローチャートである。ここで、図１３におけるステップＳ１３０１、Ｓ１３０５、Ｓ１３０６、Ｓ１３０８、Ｓ１３０９の処理は、ステップＳ１１０１、Ｓ１１０４〜Ｓ１１０７の処理と同一であるため、説明を省略する。
【００９９】
ステップＳ１３０１の処理終了後、パケット検証装置１０１は、送信側に前回の残りの管理ビット列があるか否かを判断する（ステップＳ１３０２）。ここで、初回のパケットロス判定処理のタイミングの場合、パケット検証装置１０１は、ステップＳ１３０２をＮｏとして処理する。
【０１００】
送信側に前回の残りの管理ビット列がある場合（ステップＳ１３０２：Ｙｅｓ）、パケット検証装置１０１は、送信側の前回の残りの管理ビット列を選択する（ステップＳ１３０３）。次に、パケット検証装置１０１は、選択した受信側の管理ビット列のうち選択した送信側のビットが「１」のビットを「０」に設定する（ステップＳ１３０４）。
【０１０１】
そして、ステップＳ１３０４の処理終了後、または、送信側に前回の残りの管理ビット列がない場合（ステップＳ１３０２：Ｎｏ）、パケット検証装置１０１は、ステップＳ１３０５の処理を実行する。
【０１０２】
ステップＳ１３０６の処理終了後、パケット検証装置１０１は、送信側の管理ビット列の「１」のビットのうち、ステップＳ１３０６の処理で使用したビットを「０」に設定する（ステップＳ１３０７）。ステップＳ１３０７の処理終了後、パケット検証装置１０１は、ステップＳ１３０５の処理に移行する。
【０１０３】
ステップＳ１３０９の処理終了後、パケット検証装置１０１は、送信側のビットが余ったら、今回の残りの管理ビット列として保持する（ステップＳ１３１０）。ステップＳ１３１０の処理終了後、パケット検証装置１０１は、判定対象セッションパケットロス判定処理を終了する。
【０１０４】
（パケットロス判定における実施例３の説明）
次に、パケットロス判定における実施例３について、図１４〜図２０を用いて説明する。実施例３は、ＩＰＩＤが、セッションごと、または端末ごとに、ランダムに変化する場合にも対応する方法である。ＩＰＩＤがランダムに変化する場合、１つの管理ビット列の使用期間中に、同一のＩＰＩＤを有するパケットが複数到着する可能性がある。従って、実施例３は、実施例１または２の方法に加えて、１つの管理ビット列の使用期間中に、同一のＩＰＩＤを有するパケットが複数到着した場合、新規の管理ビット列を追加する方法である。図１４〜図２０では、実施例３は、実施例２の方法に加えたものとして説明する。なお、実施例１および２において説明した箇所と同様の箇所については、同一符号を付して図示および説明を省略する。
【０１０５】
図１４は、実施例３におけるパケットロス判定の動作例を示す説明図（その１）である。図１４では、現在時刻から２［ｍｓｅｃ］前のパケットロス判定について説明する。現在時刻から２［ｍｓｅｃ］前に受信したパケットには、ＩＰＩＤが重複したパケットがあり、それぞれを特定するため、パケット検証装置１０１は、管理ビット列Ｒ−１に対して追加された管理ビット列Ｒ−１−２を記憶する。同様に、パケット検証装置１０１は、管理ビット列Ｓ−１に対して追加された管理ビット列Ｓ−１−２と、管理ビット列Ｓ−２に対して追加された管理ビット列Ｓ−２−２とを記憶する。以下の記載では、「Ｒ−Ｘ−２」、「Ｓ−Ｘ−２」というように表現された管理ビット列が、追加された管理ビット列であるとする。
【０１０６】
図１４の（１）で示すように、現在時刻から２［ｍｓｅｃ］前の管理ビット列Ｒ−１、Ｒ−１−２のうち、管理ビット列Ｓ−１、Ｓ−１−２のビットで「１」のビットを「０」に設定する。具体的には、図１４の例では、管理ビット列Ｓ−１［０］、［６］、Ｓ−１−２［０］が「１」であるため、パケット検証装置１０１は、管理ビット列Ｒ−１［０］、管理ビット列Ｒ−１−２［０］、［６］を「０」に設定する。
【０１０７】
さらに、管理ビット列Ｓ−２、Ｓ−２−２が管理ビット列Ｒ−１の遅延の範囲なので、図１４の（２）で示すように、パケット検証装置１０１は、管理ビット列Ｒ−１のうち、管理ビット列Ｓ−２、Ｓ−２−２のビットで「１」のビットを「０」に設定する。具体的には、図１４の例では、管理ビット列Ｓ−２［３］、［５］、［６］、Ｓ−２−２［６］が「１」であるため、パケット検証装置１０１は、管理ビット列Ｒ−１［３］、［５］、［６］を「０」に設定する。
【０１０８】
ここで、図１４の（１）、（２）において、管理ビット列Ｒ−１、Ｒ−１−２および、管理ビット列Ｓ−１、Ｓ−１−２のうち、どの順序でビットの判定を行うかは任意である。図１４の例では、新しく追加された管理ビット列から判定を行っている。
【０１０９】
そして、図１４の（３）で示すように、図１４の（２）で使用しなかった、管理ビット列Ｓ−２のビットを管理ビット列Ｓ−２’として保存し、次回のパケットロス判定時に使用する。図１４の例では、管理ビット列Ｓ−２［３］、［５］、［６］、Ｓ−２−２［６］のうち、管理ビット列Ｓ−２［６］が使用されていない。従って、パケット検証装置１０１は、管理ビット列Ｓ−２［６］を「１」とし、他のビットを「０」とした管理ビット列Ｓ−２’を保存する。
【０１１０】
また、図１４の（２）の処理の後、図１４の（４）で示すように、パケット検証装置１０１は、管理ビット列Ｒ−１の「１」が残ったビットの位置がパケットロスと判断する。具体的には、図１４の例では、管理ビット列Ｒ−１［２］が「１」であるため、パケット検証装置１０１は、Ｒ−１［２］に対応するパケットがロスしたと判断する。次に、管理ビット列が追加される際の受信側管理ビット列６０２Ｒ、送信側管理ビット列６０２Ｓについて、図１５を用いて説明する。
【０１１１】
図１５は、実施例３におけるパケットロス判定の動作例を示す説明図（その２）である。図１５において、図１５の左に示した受信側管理ビットテーブル６０２Ｒと送信側管理ビットテーブル６０２Ｓとは、図１４で示した管理ビット列Ｒ−１、Ｒ−１−２のパケットロス判定前の状態を示す。これに対し、図１５の右に示した受信側管理ビットテーブル６０２Ｒと送信側管理ビットテーブル６０２Ｓとは、図１４で示した管理ビット列Ｒ−１、Ｒ−１−２のパケットロス判定後の状態を示す。
【０１１２】
管理ビット列Ｒ−１、Ｒ−１−２のパケットロス判定前の状態では、受信側管理ビットテーブル６０２Ｒには、重複ＩＰＩＤ用に追加された管理ビット列Ｒ−１−２を管理するレコード６０２Ｒ−１−２が追加されている。同様に、送信側管理ビットテーブル６０２Ｓには、重複ＩＰＩＤ用に追加された管理ビット列Ｓ−１−２を管理するレコード６０２Ｓ−１−２と、管理ビット列Ｓ−２−２を管理するレコード６０２Ｓ−２−２とが追加されている。
【０１１３】
管理ビット列Ｒ−１、Ｒ−１−２のパケットロス判定後には、受信側管理ビットテーブル６０２Ｒから、管理ビット列Ｒ−１を管理するレコード６０２Ｒ−１と、管理ビット列Ｒ−１−２を管理するレコード６０２Ｒ−１−２が削除されている。そして、受信側管理ビットテーブル６０２Ｒには、管理ビット列Ｒ−３の次の期間である管理ビット列Ｒ−４を管理するレコード６０２Ｒ−４が追加されており、Ｗｒｉｔｅ位置が５、すなわち、管理ビット列Ｒ−４を示している。
【０１１４】
同様に、送信側管理ビットテーブル６０２Ｓから、管理ビット列Ｓ−１を管理するレコード６０２Ｓ−１と、管理ビット列Ｓ−１−２を管理するレコード６０２Ｓ−１−２が削除されている。そして、送信側管理ビットテーブル６０２Ｓには、管理ビット列Ｓ−３の次の期間である管理ビット列Ｓ−４を管理するレコード６０２Ｓ−４が追加されており、Ｗｒｉｔｅ位置が６、すなわち、管理ビット列Ｓ−４を示している。
【０１１５】
次に、実施例３においてパケット検証装置１０１が実行する処理を、フローチャートとして図１６〜図２０に示す。ここで、実施例３におけるパケットロス判定処理については、実施例１と同じ処理であるため、説明および図示を省略する。
【０１１６】
図１６は、実施例３における受信側のパケット解析処理手順を示すフローチャートである。ここで、図１６におけるステップＳ１６０１〜Ｓ１６０８の処理は、ステップＳ８０１〜Ｓ８０８の処理と同一であるため、説明を省略する。
【０１１７】
ステップＳ１６０８の処理終了後、パケット検証装置１０１は、受信側ＩＰＩＤ記録処理を実行する（ステップＳ１６０９）。受信側ＩＰＩＤ記録処理は、図１７で示す。そして、パケット検証装置１０１は、ステップＳ１６０１の処理に移行する。
【０１１８】
図１７は、受信側ＩＰＩＤ記録処理手順を示すフローチャートである。受信側ＩＰＩＤ記録処理は、受信側の管理ビット列のうち、受信したパケットのＩＰＩＤに対応するビットを「１」に設定する処理である。
【０１１９】
パケット検証装置１０１は、取得したパケットのＩＰＩＤが選択した管理ビット列に登録済か否かを判断する（ステップＳ１７０１）。取得したパケットのＩＰＩＤが選択した管理ビット列に登録済である場合（ステップＳ１７０１：Ｙｅｓ）、パケット検証装置１０１は、重複用の管理ビット列が追加済か否かを判断する（ステップＳ１７０２）。
【０１２０】
重複用の管理ビット列が追加されていない場合（ステップＳ１７０２：Ｎｏ）、パケット検証装置１０１は、重複用の管理ビット列を確保する（ステップＳ１７０３）。そして、パケット検証装置１０１は、受信側の管理ビットテーブルに、確保した重複用の管理ビット列を追加する（ステップＳ１７０４）。次に、パケット検証装置１０１は、重複用の管理ビット列を選択する（ステップＳ１７０５）。そして、パケット検証装置１０１は、選択した管理ビット列のうちの取得したパケットのＩＰＩＤに対応するビットを「１」に設定する（ステップＳ１７０６）。
【０１２１】
また、取得したパケットのＩＰＩＤが選択した管理ビット列に登録されていない場合（ステップＳ１７０１：Ｎｏ）、または、重複用の管理ビット列が追加済である場合（ステップＳ１７０２：Ｙｅｓ）、パケット検証装置１０１は、ステップＳ１７０６の処理を実行する。ステップＳ１７０６の処理終了後、パケット検証装置１０１は、受信側ＩＰＩＤ記録処理を終了する。なお、図１７に示す処理では、重複用の管理ビット列の追加は１つまでである。
【０１２２】
図１８は、実施例３における送信側のパケット解析処理手順を示すフローチャートである。図１８におけるステップＳ１８０１〜Ｓ１８０４の処理は、ステップＳ９０１〜Ｓ９０４の処理と同一であるため、説明を省略する。
【０１２３】
ステップＳ１８０４の処理終了後、パケット検証装置１０１は、送信側ＩＰＩＤ記録処理を実行する（ステップＳ１８０５）。送信側ＩＰＩＤ記録処理は、図１９で示す。ステップＳ１８０５の処理終了後、パケット検証装置１０１は、ステップＳ１８０１の処理に移行する。
【０１２４】
図１９は、送信側ＩＰＩＤ記録処理手順を示すフローチャートである。受信側ＩＰＩＤ記録処理は、送信側の管理ビット列のうち、送信したパケットのＩＰＩＤに対応するビットを「１」に設定する処理である。
【０１２５】
ここで、図１９におけるステップＳ１９０１〜Ｓ１９０３、Ｓ１９０５、Ｓ１９０６の処理は、ステップＳ１７０１〜Ｓ１７０３、Ｓ１７０５、Ｓ１７０６の処理と同一であるため、説明を省略する。
【０１２６】
ステップＳ１９０３の処理終了後、パケット検証装置１０１は、送信側の管理ビットテーブルに、確保した重複用の管理ビット列を追加する（ステップＳ１９０４）。そして、パケット検証装置１０１は、ステップＳ１９０５の処理を実行する。なお、図１７に示す処理では、重複用の管理ビット列の追加は１つまでである。
【０１２７】
図２０は、実施例３における判定対象セッションパケットロス判定処理手順を示すフローチャートである。
【０１２８】
パケット検証装置１０１は、受信側の次Ｒｅａｄ位置の期間を判定対象に設定する（ステップＳ２００１）。次に、パケット検証装置１０１は、判定対象に設定した期間の受信側の管理ビット列を全て選択する（ステップＳ２００２）。そして、パケット検証装置１０１は、送信側に受信側と同期間の管理ビット列があるか否かを判断する（ステップＳ２００３）。送信側に受信側と同期間の管理ビット列がある場合（ステップＳ２００３：Ｙｅｓ）、パケット検証装置１０１は、判定対象に設定した期間の送信側の管理ビット列を全て選択する（ステップＳ２００４）。そして、パケット検証装置１０１は、受信側の管理ビット列のうち送信側のビットが「１」のビットを「０」に設定する（ステップＳ２００５）。
【０１２９】
そして、パケット検証装置１０１は、「受信側の管理ビット列の期間の終了時刻から最大遅延時間を当該終了時刻に加算した時刻までの期間」と重なる期間を有する送信側管理ビット列があるか否かを判断する（ステップＳ２００６）。また、送信側に受信側と同期間の管理ビット列がない場合（ステップＳ２００３：Ｎｏ）も、パケット検証装置１０１は、ステップＳ２００６の処理を実行する。
【０１３０】
前述した「期間」と重なる期間を有する送信側管理ビット列がある場合（ステップＳ２００６：Ｙｅｓ）、パケット検証装置１０１は、該当期間のうちの１期間の送信側の管理ビット列を全て選択する（ステップＳ２００７）。次に、パケット検証装置１０１は、受信側の管理ビット列のうち送信側のビットが「１」のビットを「０」に設定する（ステップＳ２００８）。そして、パケット検証装置１０１は、送信側の管理ビット列の「１」のビットのうち、ステップＳ２００８の処理で使用したビットを「０」に設定する（ステップＳ２００９）。次に、パケット検証装置１０１は、ステップＳ２００６の処理に移行する。
【０１３１】
一方、前述した「期間」と重なる期間を有する送信側管理ビット列がない場合（ステップＳ２００６：Ｎｏ）、パケット検証装置１０１は、受信側の管理ビット列のうち「１」として残っているビットをロスとしてカウントする（ステップＳ２０１０）。次に、パケット検証装置１０１は、受信側、送信側とも今回のＲｅａｄ位置の次の管理ビット列を次Ｒｅａｄ位置に設定する（ステップＳ２０１１）。そして、パケット検証装置１０１は、送信側のビットが余ったら、今回の残りの管理ビット列として保持する（ステップＳ２０１２）。ここで、パケット検証装置１０１は、受信側期間と同じ期間の送信側の管理ビット列を保持しない。ステップＳ２０１２の処理終了後、パケット検証装置１０１は、判定対象セッションパケットロス判定処理を終了する。
【０１３２】
図２１は、パケットロス判定処理の出力例を示す説明図である。図２１に示すグラフ２１０１は、使用期間ごとの監視対象装置１０２内のパケットのロス数を示したものである。グラフ２１０１の横軸は、時間を示す。グラフ２１０１の縦軸は、監視対象装置１０２内のパケットのロス数を示す。グラフ２１０１で示すセッション１〜３は、同一のポートを用いて送信しているものとする。
【０１３３】
グラフ２１０１で示すように、使用期間ｔ１の際に、セッション１およびセッション２でパケットのロス数が１０以上となっている。従って、使用期間ｔ１の付近で、セッション１、２が使用するポートの処理性能を超えてしまい、パケットロスが発生したことがわかる。このように、パケット検証装置１０１は、セッション単位で管理することにより、あるセッションに対して、同一の送信ポートが使用された他のセッションの通信状況やロスの様子を特定することができる。
【０１３４】
以上説明したように、パケット検証装置１０１は、ある期間の受信側の管理ビット列から同期間の送信側の管理ビット列で「１」のビットを「０」にし、残ったビットから次の期間で送信したパケットのビットを「０」にする。これにより、パケット検証装置１０１は、パケットロスを正確に特定することができる。また、パケット検証装置１０１は、ロスしたパケットのＩＰＩＤを特定することにより、ＩＰＩＤがシーケンシャルに増加する場合、どのようにパケットロスが発生しているのかを示すことができる。例えば、ロスしたパケットのＩＰＩＤが連続しているのであれば、監視対象装置１０２が受信するパケットがバースト的に増大し、監視対象装置１０２内のパケットを一時的に格納するバッファ等が溢れてしまい、パケットを連続的にロスしたことがわかる。
【０１３５】
また、パケット検証装置１０１は、パケットロス判定における第２の実施例として、第２の期間の送信側のビット列のうち、第１のパケット群の各々に対応するビットを「０」に設定してもよい。これにより、パケット検証装置１０１は、２回目以降のパケットロス処理においても、パケットロスを正確に特定することができる。
【０１３６】
ここで、パケットロス判定における第１の実施例において、２回目以降のパケットロス判定処理でパケットロスが誤判定する例を、図７を用いて説明する。図７の（２）で示すように、管理ビット列Ｓ−２［３］、［５］、［６］が「１」であるため、パケット検証装置１０１は、管理ビット列Ｒ−１［３］、［５］を「０」に設定する。従って、管理ビット列Ｓ−２［３］、［５］に対応するパケットは、管理ビット列Ｒ−１の期間に受信したパケットである。しかしながら、管理ビット列Ｒ−２のパケットロス判定において、管理ビット列Ｒ−２、Ｓ−２を比較した結果、パケット検証装置１０１は、管理ビット列Ｒ−２［３］、［５］が、管理ビットＲ−２の期間に受信したパケットであると判定することになる。このように、実施例１では、２回目以降のパケットロス判定処理で、送信側の管理ビット列で「１」となるビットが、２回使用される場合があり、この場合、誤判定となる可能性がある。
【０１３７】
これに対し、パケットロス判定における第２の実施例では、送信側の管理ビット列で１回使用したビットは「０」に設定される。図７の例でならば、管理ビット列Ｓ−２［３］、［５］は「０」に設定されるため、パケット検証装置１０１は、２回目以降のパケットロス判定処理でも、正確にパケットロスを判定することができる。このように、パケット検証装置１０１は、パケットロス判定における第２の実施例を実行することにより、パケットロス判定における第１の実施例よりも、パケットロスの判定精度を向上させることができる。
【０１３８】
また、パケット検証装置１０１は、パケットロス判定における第３の実施例として、管理ビット列で既に「１」であるビットに対応するパケットを取得した場合、対応する管理ビット列を追加してもよい。これにより、パケット検証装置１０１は、使用期間中に、ＩＰＩＤが重なる可能性がある、ＩＰＩＤがランダムに変化する場合であっても、パケットロスを正確に判定することができる。また、ＩＰＩＤがシーケンシャルに増加する場合であっても、１つのコネクションだけが監視対象装置１０２の受信側ポートや送信側ポートを占有する場合、使用期間中にＩＰＩＤが一周し、同一のＩＰＩＤとなるパケットを受信または送信する可能性がある。このような場合でも、パケット検証装置１０１は、パケットロス判定における第３の実施例を行うことにより、パケットロスを正確に判定することができる。
【０１３９】
また、パケット検証装置１０１は、監視対象装置１０２の最大遅延時間に基づいて、送信側の管理ビット列をどこまで使用するか決定してもよい。これにより、パケット検証装置１０１は、最大遅延時間が使用期間より長い場合であっても、パケットロスを正確に判定することができる。
【０１４０】
また、パケット検証装置１０１は、セッションごとに、パケットロスを判定してもよい。これにより、パケット検証装置１０１は、監視対象装置１０２の同一の送信ポートを使用した他のセッションの通信状況や、ロスの様子がわかるようになる。
【０１４１】
また、パケット検証装置１０１は、セッションごとのパケットロスの数を計数してもよい。これにより、同一の使用期間において、監視対象装置１０２の同一の送信ポートを使用した複数のセッションの各々のパケットロスを容易に比較することができる。
【０１４２】
なお、本実施の形態で説明したパケット検証方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本パケット検証プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本パケット検証プログラムは、インターネット等のネットワークを介して配布してもよい。
【符号の説明】
【０１４３】
ｐ０〜ｐ４  パケット
Ｒ−１〜３、Ｓ−１〜３、Ｒ−１−２、Ｓ−１−２、Ｓ−２−２  管理ビット列
１０１  パケット検証装置
１０２  監視対象装置
４００  制御部
４０１  解析部
４０２  出力部
４０３  取得部
４０４  セッション特定部
４０５  設定部
４０６  第１パケットロス特定部
４０７  第２パケットロス特定部
４０８  計数部
４１１  セッションテーブル
４１２  管理ビット情報
【図１】
0006586667.tif 000002
【図２】
0006586667.tif 000003
【図３】
0006586667.tif 000004
【図４】
0006586667.tif 000005
【図５】
0006586667.tif 000006
【図６】
0006586667.tif 000007
【図７】
0006586667.tif 000008
【図８】
0006586667.tif 000009
【図９】
0006586667.tif 000010
【図１０】
0006586667.tif 000011
【図１１】
0006586667.tif 000012
【図１２】
0006586667.tif 000013
【図１３】
0006586667.tif 000014
【図１４】
0006586667.tif 000015
【図１５】
0006586667.tif 000016
【図１６】
0006586667.tif 000017
【図１７】
0006586667.tif 000018
【図１８】
0006586667.tif 000019
【図１９】
0006586667.tif 000020
【図２０】
0006586667.tif 000021
【図２１】
0006586667.tif 000022