(57)【要約】【課題】ロスしたパケットの再送時間を算出することを課題とする。【解決手段】パケット解析装置は、送信装置が受信装置に送信するデータを分割したパケットと、送信装置から受信装置に送信されたパケットの受信装置による受信を確認したデータ量を特定するＡＣＫ番号を含むパケットを取得する。パケット解析装置は、取得したパケットが再送パケット、且つ、再送パケットに対応するロスパケットを取得していない場合に、再送パケットに含まれるＡＣＫ番号とロスしたパケットであるロスパケットの前後のパケットのそれぞれに含まれる各ＡＣＫ番号とを比較して、前記ロスパケットの位置を、データの最終パケット、中間パケット、または先頭パケットのいずれかに分類する。パケット解析装置は、分類したロスパケットの位置により特定される再送時間の算出方法によって再送時間を算出する。【選択図】図４
2019022052.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
送信装置が受信装置に送信するデータを分割したパケットと、前記送信装置から前記受信装置に送信されたパケットの前記受信装置による受信を確認したデータ量を特定するＡＣＫ番号を含むパケットを取得し、
取得したパケットが再送パケット、且つ、再送パケットに対応するロスパケットを取得していない場合に、前記再送パケットに含まれるＡＣＫ番号とロスしたパケットであるロスパケットの前後のパケットのそれぞれに含まれる各ＡＣＫ番号とを比較して、前記ロスパケットの位置を、前記データの最終パケット、中間パケット、または先頭パケットのいずれかに分類し、
分類した前記ロスパケットの位置により特定される再送時間の算出方法によって再送時間を算出する
処理を実行させることを特徴とするパケット分類プログラム。
【請求項２】
前記分類する処理は、前記再送パケットのヘッダに、ＴＣＰ（Transmission  Control  Protocol）のプッシュフラグが含まれる場合は、前記ロスパケットの位置を前記最終パケットに分類することを特徴とする請求項１に記載のパケット分類プログラム。
【請求項３】
前記分類する処理は、前記再送パケットのヘッダに含まれるシーケンシャル番号にしたがって、取得済みのパケットから前記前後のパケットを特定し、前記再送パケットに含まれるＡＣＫ番号と、前記前後のパケットのそれぞれに含まれる各ＡＣＫ番号とを比較して、前記ロスパケットの位置を分類することを特徴とする請求項１または２に記載のパケット分類プログラム。
【請求項４】
前記分類する処理は、前記再送パケットのＡＣＫ番号が前記ロスパケットの直前のパケットのＡＣＫ番号よりも大きく、かつ、前記再送パケットのＡＣＫ番号が前記ロスパケットの直後のパケットのＡＣＫ番号と一致する場合、前記ロスパケットの位置を前記先頭パケットに分類することを特徴とする請求項３に記載のパケット分類プログラム。
【請求項５】
前記分類する処理は、前記再送パケットのＡＣＫ番号が前記ロスパケットの直前のパケットのＡＣＫ番号と一致し、かつ、前記再送パケットのＡＣＫ番号が前記ロスパケットの直後のパケットのＡＣＫ番号と一致する場合、前記ロスパケットの位置を前記中間パケットに分類することを特徴とする請求項３に記載のパケット分類プログラム。
【請求項６】
前記分類する処理は、前記再送パケットのＡＣＫ番号が前記ロスパケットの直前のパケットのＡＣＫ番号と一致し、かつ、前記再送パケットのＡＣＫ番号が前記ロスパケットの直後のパケットのＡＣＫ番号よりも小さい場合、前記ロスパケットの位置を前記最終パケットに分類することを特徴とする請求項３に記載のパケット分類プログラム。
【請求項７】
コンピュータが、
送信装置が受信装置に送信するデータを分割したパケットと、前記送信装置から前記受信装置に送信されたパケットの前記受信装置による受信を確認したデータ量を特定するＡＣＫ番号を含むパケットを取得し、
取得したパケットが再送パケット、且つ、再送パケットに対応するロスパケットを取得していない場合に、前記再送パケットに含まれるＡＣＫ番号とロスしたパケットであるロスパケットの前後のパケットのそれぞれに含まれる各ＡＣＫ番号とを比較して、前記ロスパケットの位置を、前記データの最終パケット、中間パケット、または先頭パケットのいずれかに分類し、
分類した前記ロスパケットの位置により特定される再送時間の算出方法によって再送時間を算出する
処理を実行することを特徴とするパケット分類方法。
【請求項８】
送信装置が受信装置に送信するデータを分割したパケットと、前記送信装置から前記受信装置に送信されたパケットの前記受信装置による受信を確認したデータ量を特定するＡＣＫ番号を含むパケットを取得する取得部と、
取得したパケットが再送パケット、且つ、再送パケットに対応するロスパケットを取得していない場合に、前記再送パケットに含まれるＡＣＫ番号とロスしたパケットであるロスパケットの前後のパケットのそれぞれに含まれる各ＡＣＫ番号とを比較して、前記ロスパケットの位置を、前記データの最終パケット、中間パケット、または先頭パケットのいずれかに分類する分類部と、
分類した前記ロスパケットの位置により特定される再送時間の算出方法によって再送時間を算出する算出部と
有することを特徴とするパケット分類装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット分類プログラム、パケット分類方法およびパケット分類装置に関する。
【背景技術】
【０００２】
従来から、装置間のパケットをキャプチャして応答時間を要素別に分類することで、通信品質を測定し、応答時間のボトルネックを特定するサービスが知られている。例えば、クライアント端末とＷｅｂサーバとの間にモニタ装置を設置し、Ｗｅｂ画面表示のクリック操作からＷｅｂ画面表示までの応答時間を測定する。そして、モニタ装置は、応答時間を、サーバ処理時間とクライアント処理時間、および、転送時間とに分類することで、応答時間のボトルネックを特定する。転送時間は、ネットワーク上でデータを転送するのにかかった時間とパケットロスが発生してから再送パケットが送信されるまでの再送時間を含む。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開第２０１２／０６６８２４号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
転送時間がボトルネックだと特定した場合、その原因が再送パケットの送信によるものか否かの判定を行う。再送時間の算出は、ロスしたパケットがキャプチャされた時間と再送パケットがキャプチャされた時間とにより算出できるが、モニタ装置を通過する前にロスしたパケットについては、ロスしたパケットがキャプチャされず再送パケットのみがキャプチャされるので、再送時間を算出することができない。
【０００５】
なお、モニタ装置よりも送信側でパケットをロスした場合、ロスしたパケットがキャプチャされないので、シーケンス番号を利用してロスしたパケットの前後のパケットの到着時間からロスしたパケットの到着時間を想定して算出することも考えられる。しかし、この方法では、アプリケーションデータなどのデータが複数のパケットに分割して送信される場合、ロスしたパケットがデータのどこに位置するかにより再送時間の誤差が大きくなり、信頼性が低い。
【０００６】
一つの側面では、ロスしたパケットの再送時間を算出することができるパケット分類プログラム、パケット分類方法およびパケット分類装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
実施の形態の一態様では、パケット分類プログラムは、コンピュータに、送信装置が受信装置に送信するデータを分割したパケットと、前記送信装置から前記受信装置に送信されたパケットの前記受信装置による受信を確認したデータ量を特定するＡＣＫ番号を含むパケットを取得する処理を実行させる。パケット分類プログラムは、コンピュータに、取得したパケットが再送パケット、且つ、再送パケットに対応するロスパケットを取得していない場合に、前記再送パケットに含まれるＡＣＫ番号とロスしたパケットであるロスパケットの前後のパケットのそれぞれに含まれる各ＡＣＫ番号とを比較して、前記ロスパケットの位置を、前記データの最終パケット、中間パケット、または先頭パケットのいずれかに分類する処理を実行させる。パケット分類プログラムは、コンピュータに、分類した前記ロスパケットの位置により特定される再送時間の算出方法によって再送時間を算出する処理を実行させる。
【発明の効果】
【０００８】
一実施形態によれば、ロスしたパケットの再送時間を算出することができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施例１にかかるシステムの全体構成例を示す図である。
【図２】図２は、実施例１にかかるパケットの送信方法を説明する図である。
【図３】図３は、再送時間の計測を説明する図である。
【図４】図４は、実施例１にかかるパケット解析装置の機能構成を示す機能ブロック図である。
【図５】図５は、全体的な処理の流れを示すフローチャートである。
【図６】図６は、パケット受信時の処理の流れを示すフローチャートである。
【図７】図７は、パケット種別判別処理の流れを示すフローチャートである。
【図８】図８は、通常パケット処理の流れを示すフローチャートである。
【図９】図９は、ロス検知時処理の流れを示すフローチャートである。
【図１０】図１０は、先頭パケットの到着予想時間の推定処理の流れを示すフローチャートである。
【図１１】図１１は、再送パケット処理の流れを示すフローチャートである。
【図１２】図１２は、分類処理の流れを示すフローチャートである。
【図１３】図１３は、最終パケットの到着予想時間の推定処理の流れを示すフローチャートである。
【図１４】図１４は、パケットロスによる再送遅延の推定を説明する図である。
【図１５】図１５は、ハードウェア構成例を示す図である。
【発明を実施するための形態】
【００１０】
以下に、本願の開示するパケット分類プログラム、パケット分類方法およびパケット分類装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。各実施例は、矛盾のない範囲内で適宜組み合わせることができる。
【実施例１】
【００１１】
［全体構成］
図１は、実施例１にかかるシステムの全体構成例を示す図である。図１に示すように、実施例１にかかるシステムは、Ｗｅｂサーバ５、クライアント端末６、スイッチ７、パケット解析装置１０のそれぞれが各種ネットワークを介して接続されるシステムであり、装置間の通信品質を測定するシステムである。
【００１２】
なお、ここでは、Ｗｅｂサーバ５とクライアント端末６との間の通信品質を測定する例で説明するが、対象となる装置を限定するものではなく、ＤＢサーバやＡＰサーバなど他の各種装置を対象とすることができる。また、各装置の台数等も図示したものに限定されない。また、ネットワークについても、有線や無線を問わず、インターネットや専用線など各種ネットワークを採用することができる。
【００１３】
Ｗｅｂサーバ５は、クライアント端末６からのリクエストに対してデータを送信するサーバ装置の一例である。例えば、Ｗｅｂサーバ５は、クライアント端末６に対してＷｅｂ画面、画像、動画などのデータを送信する。本実施例では、送信側と記載する場合がある。
【００１４】
また、クライアント端末６は、ユーザが利用するコンピュータやスマートフォンなどの一例であり、Ｗｅｂサーバ５に対して、データのリクエストを送信する。本実施例では、受信側と記載する場合がある。
【００１５】
スイッチ７は、Ｗｅｂサーバ５とクライアント端末６との通信経路に設置されるとともに、当該通信経路にパケット解析装置１０を接続するスイッチングハブやルータなどの一例である。
【００１６】
パケット解析装置１０は、スイッチ７を介して、Ｗｅｂサーバ５とクライアント端末６との間で送受信されるパケットをモニタリングするコンピュータ装置の一例である。例えば、パケット解析装置１０は、Ｗｅｂ画面表示のクリック操作からＷｅｂ画面表示までの応答時間を測定し、応答時間のボトルネックを特定する。
【００１７】
ここで、実施例１では、一例として、Ｗｅｂサーバ５とクライアント端末６との間において、ＴＣＰ（Transmission  Control  Protocol）パケットのスライディングウィンドウ制御でパケットが送信される例を想定する。
【００１８】
図２は、実施例１にかかるパケットの送信方法を説明する図である。実施例１では、Ｗｅｂサーバ５は、意味のあるデータの塊を転送可能なサイズに分割して送信する。また、Ｗｅｂサーバ５は、クライアント端末６からの確認応答（ＡＣＫ）により新たに到着が確認されたデータ量だけパケットを送信する。このようにすることで、Ｗｅｂサーバ５は、パケットを１つずつクライアント端末６に送信するのに比べて、クライアント端末６から複数パケット分のＡＣＫを受信してからパケットを送信することで、多数のパケットを一度に連続で送信できる。
【００１９】
例えば、図２に示すように、クライアント端末６は、シーケンシャル番号Ｄ０のパケット（ＡＣＫ番号：０）までを受信すると、１０００バイトまで受信したことを示す「ＡＣＫ番号：１０００」を付加したデータ１のリクエストをＷｅｂサーバ５に送信する。なお、本実施例では、シーケンシャル番号Ｄ０のパケットをパケットＤ０などと表記する場合がある。
【００２０】
そして、Ｗｅｂサーバ５は、このリクエストを受信すると、ＡＣＫ番号によって確認された１０００バイト分の次のデータ１を複数のパケットに分割してクライアント端末６に送信する。具体的には、Ｗｅｂサーバ５は、シーケンシャル番号Ｄ１、Ｄ２、Ｄ３、Ｄ４のそれぞれにＡＣＫ番号「１０００（＝ＡＣＫ番号の０バイト＋ＡＣＫ番号の１０００）」を付加して送信する。
【００２１】
その後、クライアント端末６は、シーケンシャル番号Ｄ４のパケット（ＡＣＫ番号：１０００）までを受信すると、合計２０００バイトまで受信したことを示す「ＡＣＫ番号：２０００（＝ＡＣＫ番号の０＋ＡＣＫ番号の１０００）」を付加したデータ２のリクエストをＷｅｂサーバ５に送信する。
【００２２】
そして、Ｗｅｂサーバ５は、このリクエストを受信すると、ＡＣＫ番号によって確認された１０００バイト分の次のデータ２を複数のパケットに分割してクライアント端末６に送信する。具体的には、Ｗｅｂサーバ５は、シーケンシャル番号Ｄ５、Ｄ６、Ｄ７、Ｄ８のそれぞれにＡＣＫ番号「３０００（＝ＡＣＫ番号の１０００＋ＡＣＫ番号の２０００）」を付加して送信する。
【００２３】
このようなスライディングウィンドウ制御によるパケットの送受信において、パケット解析装置１０は、Ｗｅｂサーバ５とクライアント端末６との間で送受信されるパケットをモニタリングする。具体的には、パケット解析装置１０は、モニタリングすることで、Ｗｅｂ画面表示のクリック操作からＷｅｂ画面表示までの応答時間を測定する。さらに、パケット解析装置１０は、応答時間を、サーバ処理時間とクライアント処理時間と転送時間とに分類することで、応答時間のボトルネックを特定する。
【００２４】
ここで、パケット解析装置１０は、パケットロスによるパケットの再送が発生した場合は、パケットロスが発生してから再送パケットが送信されるまでの再送時間を推定する。しかし、パケット解析装置１０は、パケット解析装置１０よりも送信側でパケットロスが発生した場合、再送時間を推定することが難しい。
【００２５】
図３は、再送時間の計測を説明する図である。図３の（ａ）は、パケット解析装置１０よりも受信側でパケットロスが発生した例を示す。図３の（ａ）に示すように、パケット解析装置１０は、パケットＤ１、パケットＤ２、パケットＤ３を受信した後、パケットＤ２の再送パケットＤ２´を受信したとする。この場合、パケット解析装置１０は、パケットＤ２を一度受信していることから、パケットＤ２の受信時間と再送パケットＤ２´の受信時間との時間差を再送時間として推定することができる。
【００２６】
一方、図３の（ｂ）は、パケット解析装置１０よりも送信側でパケットロスが発生した例を示す。図３の（ｂ）に示すように、パケット解析装置１０は、パケットＤ１、パケットＤ３を受信した後、パケットＤ２の再送パケットＤ２´を受信したとする。この場合、パケット解析装置１０は、パケットＤ２を一度も受信していないことから、もともとのパケットＤ２の受信時間が特定できず、再送時間を推定することができない。具体的には、パケット解析装置１０は、パケットＤ１の受信時間と再送パケットＤ２´の受信時間との時間差や、パケットＤ３の受信時間と再送パケットＤ２´の受信時間との時間差などを再送時間として誤認識することもある。
【００２７】
そこで、実施例１にかかるパケット解析装置１０は、Ｗｅｂサーバ５がクライアント端末６に送信するデータを分割した分割データと、Ｗｅｂサーバ５からクライアント端末６に送信されたパケットのクライアント端末６による受信を確認したデータ量を特定するＡＣＫ番号を含むパケットを取得する。そして、パケット解析装置１０は、取得したパケットが再送パケット、且つ、再送パケットに対応するロスパケットを取得していない場合に、再送パケットに含まれるＡＣＫ番号とロスしたパケットであるロスパケットの前後のパケットのそれぞれに含まれる各ＡＣＫ番号とを比較する。続いて、パケット解析装置１０は、ロスパケットの位置を、データの最終パケット、中間パケット、または先頭パケットのいずれかに分類する。その後、パケット解析装置１０は、分類したロスパケットの位置により特定される再送時間の算出方法によって再送時間を算出する。このようにして、パケット解析装置１０は、パケットの再送時間を正確に算出することができる。なお、再送時間は、パケットロスから再送パケットの到着までに要した時間であることから、再送遅延時間と記載する場合がある。
【００２８】
［機能構成］
図４は、実施例１にかかるパケット解析装置１０の機能構成を示す機能ブロック図である。図４に示すように、パケット解析装置１０は、通信部１１、記憶部１２、制御部２０を有する。
【００２９】
通信部１１は、パケットを受信する処理部である。具体的には、通信部１１は、スイッチ７と接続され、Ｗｅｂサーバ５とクライアント端末６と間で送受信されるパケットを受信する。記憶部１２は、解析情報ＤＢ１３を記憶する記憶装置の一例であり、例えばメモリやハードディスクなどである。
【００３０】
解析情報ＤＢ１３は、パケット解析装置１０を通過したパケットに関する情報や通信品質の解析に用いる各種情報を記憶するデータベースである。例えば、解析情報ＤＢ１３は、到着したパケットのシーケンシャル番号（seq）、ＡＣＫ番号（pre＿ack）、受信時間（pre＿time）、パケット長（len）、ＴＣＰのプッシュフラグ（ＰＳＨフラグ）の有無などを記憶する。
【００３１】
また、解析情報ＤＢ１３は、次に到着すべき対象のシーケンシャル番号（next＿seq）、ロス直前のパケットの到着時間（time＿before＿loss）、ロス直前のパケットのＰＳＨフラグの有無（psh＿before＿loss）、ロス直前のパケットのＡＣＫ番号（ack＿after＿loss）、ロス直後のパケットの到着時間（time＿after＿loss）、予め設定されるもしくは測定されるネットワーク帯域（BW）、ロスパケットの再送時間（rtrns＿time）、パケットの最大長（max＿len）、ロスパケットの推定送信時刻（time＿loss）などを記憶する。
【００３２】
制御部２０は、パケット解析装置１０全体を司る処理部であり、例えばプロセッサなどである。制御部２０は、取得部２１、検出部２２、分類部２３、算出部２４、品質測定部２５を有する。なお、取得部２１、検出部２２、分類部２３、算出部２４、品質測定部２５は、プロセッサが有する電子回路の一例やプロセッサが実行するプロセスの一例などである。
【００３３】
取得部２１は、パケット解析装置１０に到着したパケットに関する情報を取得する処理部である。例えば、取得部２１は、到着したパケットのヘッダ等から、到着時間、シーケンシャル番号、パケット長、ＡＣＫ番号、ＰＳＨフラグの有無などを取得して、解析情報ＤＢ１３に格納する。
【００３４】
検出部２２は、パケットのロスおよび再送パケットの検出を実行する処理部である。具体的には、検出部２２は、到着したパケットのシーケンシャル番号を管理することで、パケットロスを検知する。一例を挙げると、検出部２２は、パケットＤ１、パケットＤ２、パケットＤ４と到着した場合、パケットＤ３が未到着であることから、パケットＤ３のロスを検知する。
【００３５】
また、検出部２２は、ロスパケットの再送パケットの検出を実行する。一例を挙げると、検出部２２は、到着したパケットのシーケンシャル番号が、現時点で設定されている次に到着すべきパケットのシーケンシャル番号（next＿seq）よりも小さい場合、到着したパケットを再送パケットと判定する。同様に、検出部２２は、到着したパケットのシーケンシャル番号がシーケンシャル番号（next＿seq）と同じ場合、到着したパケットを通常パケットと判定し、到着したパケットのシーケンシャル番号がシーケンシャル番号（next＿seq）よりも大きい場合、その差分だけパケットロスが発生したと判定する。
【００３６】
なお、シーケンシャル番号（next＿seq）の更新は、一般的な手法を採用することができる。一例を挙げると、検出部２２は、到着したパケットが通常パケットの場合は、到着したパケットのシーケンシャル番号を１増加させた値を「next＿seq」に設定する。また、検出部２２は、到着したパケットが再送パケットの場合もしくはパケットロスを検知した場合は、「next＿seq」と一致するパケットが到着するまで変更を抑制する。
【００３７】
分類部２３は、再送パケットに対応するロスパケットの位置を、データの最終パケット、中間パケット、または先頭パケットのいずれかに分類する処理部である。具体的には、分類部２３は、到着した再送パケットのＰＳＨフラグ、到着した再送パケットに対応するロスパケットのＡＣＫ番号の増加の有無により、ロスパケットの位置を分類する。
【００３８】
例えば、分類部２３は、再送パケットのＡＣＫ番号と再送パケットのシーケンシャル番号とを特定する。続いて、分類部２３は、再送パケットのシーケンシャル番号から、ロスパケットの前後のパケットを特定し、ロスパケットの前後のパケットのＡＣＫ番号も特定する。
【００３９】
ここで、ＰＳＨフラグを用いる通信形式の例にして説明する。分類部２３は、再送パケットに対応するロス直前の到着済みパケットにＰＳＨフラグが付加されている場合、ロスパケットをデータの先頭パケットに分類する。また、分類部２３は、再送パケットにＰＳＨフラグが付加されている場合、ロスパケットをデータの最終パケットに分類する。なお、分類部２３は、ロスパケットの前後のパケットのＡＣＫ番号から、ロスパケットが属するデータを特定する。また、分類部２３は、ロス直前のパケットおよび再送パケットにＰＳＨフラグが付加されていない場合、ロス直後のパケットのＡＣＫ番号がロス直前のパケットのＡＣＫ番号よりも増加していると、ロスパケットを先頭パケットに分類し、ロス直後のパケットのＡＣＫ番号がロス直前のパケットのＡＣＫ番号よりも増加しておらず同じであれば、ロスパケットを中間パケットに分類する。
【００４０】
また、分類部２３は、ＰＳＨフラグを用いない通信形式の場合や、ＰＳＨフラグを用いる通信形式であっても再送パケットにＰＳＨフラグが付加されていない場合は、ＡＣＫ番号の比較やＡＣＫ番号の増加状況に応じて、ロスパケットの位置を分類することができる。例えば、分類部２３は、ロスパケットのＡＣＫ番号（再送パケットのＡＣＫ番号）とロス直前のパケットのＡＣＫ番号とが一致し、ロス直後のパケットのＡＣＫ番号がロスパケットのＡＣＫ番号よりも増加している場合、ロスパケットを最終パケットに分類する。
【００４１】
また、分類部２３は、ロスパケットのＡＣＫ番号（再送パケットのＡＣＫ番号）がロス直前のパケットのＡＣＫ番号よりも増加しており、ロス直後のパケットのＡＣＫ番号とロスパケットのＡＣＫ番号とが一致する場合、ロスパケットを先頭パケットに分類する。また、分類部２３は、ロスパケットのＡＣＫ番号（再送パケットのＡＣＫ番号）とロス直前のパケットのＡＣＫ番号とロス直後のパケットのＡＣＫ番号とが一致する場合、ロスパケットを中間パケットに分類する。
【００４２】
図２の例を用いて具体例を説明する。ここでは、パケットＤ５がロスして、ＰＳＨフラグを含まないパケットＤ５の再送パケットＤ５´がパケットＤ８の次に受信された例で説明する。例えば、再送パケットＤ５´のＡＣＫ番号が１０００であり、ロスパケットの直前のパケットＤ４のＡＣＫ番号（１０００）と一致し、ロスパケット直後のパケットＤ６のＡＣＫ番号（３０００）よりも小さい場合、分類部２３は、ロスパケットの位置を最終パケットに分類する。このとき、分類部２３は、再送パケットＤ５´のＡＣＫ番号と一致するＡＣＫ番号を有するパケットＤ４がデータ１に属することから、ロスパケットの位置をデータ１の最終パケットに分類する。
【００４３】
また、再送パケットＤ５´のＡＣＫ番号が３０００であり、ロスパケットの直前のパケットＤ４のＡＣＫ番号（１０００）よりも大きく、ロスパケット直後のパケットＤ６のＡＣＫ番号（３０００）と一致する場合、分類部２３は、ロスパケットの位置を先頭パケットに分類する。このとき、分類部２３は、再送パケットＤ５´のＡＣＫ番号と一致するＡＣＫ番号を有するパケットＤ６がデータ２に属することから、ロスパケットの位置をデータ２の先頭パケットに分類する。
【００４４】
また、再送パケットＤ５´のＡＣＫ番号が３０００であり、ロスパケットの直前のパケットＤ４のＡＣＫ番号も、ロスパケット直後のパケットＤ６のＡＣＫ番号も３０００である場合、分類部２３は、ロスパケットの位置を中間パケットに分類する。このとき、分類部２３は、再送パケットＤ５´の前後のパケットが属するデータの中間パケットに分類する。
【００４５】
算出部２４は、ロスパケットの位置に応じた算出手法を用いて、再送時間を算出する処理部である。具体的には、算出部２４は、ロスパケットが先頭パケットの場合、ネットワーク帯域を用いた算出式（式１−１）によって、ロスパケットが正常に受信されていた時の到着予想時間と、ロスパケットの連続数を用いた算出式（式１−２）によって、到着予想時間とを算出する。そして、算出部２４は、値が大きい方（時間が遅い方）の到着予想時間（Ｔｉ）を選択し、「再送パケットの到着時間（Ｔｉ´）−到着予想時間（Ｔｉ）」によって、再送時間の推定値すなわち再送されるまでに遅延した再送遅延時間の推定値（ΔＴｉ）を算出する。
【００４６】
【数１】
2019022052.tif 000003
【００４７】
また、算出部２４は、ロスパケットが中間パケットの場合、ロスパケットの連続数を用いた算出式（式２）によって、到着予想時間を算出する。そして、算出部２４は、「再送パケットの到着時間（Ｔｉ´）−到着予想時間（Ｔｉ）」によって、再送遅延時間の推定値（ΔＴｉ）を算出する。
【００４８】
【数２】
2019022052.tif 000004
【００４９】
また、算出部２４は、ロスパケットが最終パケットの場合、ネットワーク帯域を用いた算出式（式３−１）によって到着予想時間と、ロスパケットの連続数を用いた算出式（式３−２）によって到着予想時間とを算出する。そして、算出部２４は、値が小さい方（時間が早い方）の到着予想時間（Ｔｉ）を選択し、「再送パケットの到着時間（Ｔｉ´）−到着予想時間（Ｔｉ）」によって、再送遅延時間の推定値（ΔＴｉ）を算出する。
【００５０】
【数３】
2019022052.tif 000005
【００５１】
なお、数１から数３におけるｔｉは、ｉ番目のパケットの到着時間であり、実際に到着した時間（実測値）である。Ｔｉは、ｉ番目のパケット（ロスしたパケット）の到着予想時間であり、各式により算出される。また、Ｓｉは、ｉ番目のパケットのサイズであり、実際に到着したパケットのパケット長である。ＢＷは、ネットワーク帯域であり、管理者等によって予め設定することもでき、公知の技術を用いて測定することもできる。Ｎｌｏｓｓは、連続してロスしたパケット数であり、検出部２２により計数できる。Ｔｉ´は、ｉ番目のパケット（再送パケット）の到着時間の実測値である。ΔＴｉは、再送遅延時間の推定値である。
【００５２】
品質測定部２５は、Ｗｅｂサーバ５とクライアント端末６との間の通信品質を測定する処理部である。具体的には、品質測定部２５は、Ｗｅｂ画面表示のクリック操作からＷｅｂ画面表示までの応答時間を測定する。そして、品質測定部２５は、応答時間を、サーバ処理時間とクライアント処理時間と転送時間とに分類することで、応答時間のボトルネックを特定する。
【００５３】
サーバ処理時間は、クライアント端末６とＷｅｂサーバ５との間のセッションの確立時や切断時にかかった時間であり、公知の手法による測定できる。クライアント処理時間は、Ｗｅｂサーバ５の処理時間やクライアントの操作の待ち時間であり、公知の手法による測定できる。転送時間は、公知の手法による測定できるエンド−エンド間の往復遅延時間およびネットワーク上でデータを転送するのにかかった時間と、算出部２４によって算出された、パケットロスが発生してから再送パケットが送信されるまでの時間（再送遅延時間の推定値）との合計である。
【００５４】
［処理の流れ］
次に、パケット解析装置１０が実行する各処理について説明する。ここでは、再送遅延時間の推定に関する全体的な流れを説明した後、各処理について説明する。なお、応答時間の測定に関する他の測定項目は、一般的な手法により測定することができるので、詳細な説明は省略する。また、ここでは、一例としてＰＳＨフラグを使用する通信を例にして説明する。
【００５５】
（全体的な流れ）
図５は、全体的な処理の流れを示すフローチャートである。図５に示すように、パケット解析装置１０は、パケットロスの検知および再送パケットの検知を行うと（Ｓ１０１：Ｙｅｓ）、ロス直前の到着済みパケットのＰＳＨフラグを確認する（Ｓ１０２）。
【００５６】
続いて、パケット解析装置１０は、ロス直前の到着済みパケットにＰＳＨフラグが付加されている場合（Ｓ１０２：Ｙｅｓ）、ロスパケットを先頭パケットに分類する（Ｓ１０３）。
【００５７】
一方、パケット解析装置１０は、ロス直前の到着済みパケットにＰＳＨフラグが付加されていない場合（Ｓ１０２：Ｎｏ）、再送パケットにＰＳＨフラグが付加されているか否かを判定する（Ｓ１０４）。
【００５８】
そして、パケット解析装置１０は、再送パケットにＰＳＨフラグが付加されている場合（Ｓ１０４：Ｙｅｓ）、ロスパケットを最終パケットに分類する（Ｓ１０５）。
【００５９】
一方、パケット解析装置１０は、再送パケットにＰＳＨフラグが付加されていない場合（Ｓ１０４：Ｎｏ）、ロス直後の到着済みパケットのＡＣＫ番号が増加しているか否かを判定する（Ｓ１０６）。
【００６０】
そして、パケット解析装置１０は、ロス直後の到着済みパケットのＡＣＫ番号が増加している場合（Ｓ１０６：Ｙｅｓ）、ロスパケットを先頭パケットに分類する（Ｓ１０３）。一方、パケット解析装置１０は、ロス直後の到着済みパケットのＡＣＫ番号が増加していない場合（Ｓ１０６：Ｎｏ）、ロスパケットを中間パケットに分類する（Ｓ１０７）。
【００６１】
その後、パケット解析装置１０は、各分類結果に応じた算出式を用いて、再送遅延時間の推定を実行する（Ｓ１０８）。
【００６２】
（パケット受信時の処理）
図６は、パケット受信時の処理の流れを示すフローチャートである。図６に示すように、取得部２１によってパケットの到着を検知すると（Ｓ２０１：Ｙｅｓ）、検出部２２は、パケット種別判別処理を実行して、到着したパケットの種別を特定する（Ｓ２０２）。
【００６３】
そして、検出部２２は、種別をノーマルと特定する（Ｓ２０３：Ｙｅｓ）、通常パケット処理を実行する（Ｓ２０４）。また、検出部２２は、種別をノーマルではなく（Ｓ２０３：Ｎｏ）、ロスと特定した場合（Ｓ２０５：Ｙｅｓ）、ロス検知時処理を実行する（Ｓ２０６）。一方、検出部２２は、種別をロスでもないと特定した場合（Ｓ２０５：Ｎｏ）、再送パケット処理を実行する（Ｓ２０７）。
【００６４】
（パケット種別判別処理）
図７は、パケット種別判別処理の流れを示すフローチャートである。この処理は、図６のＳ２０２に該当する。図７に示すように、検出部２２は、到着パケットのシーケンシャル番号（seq）が、現時点で設定されている次に到着すべきパケットのシーケンシャル番号（next＿seq）と一致する場合（Ｓ３０１：Ｙｅｓ）、パケットの種別をノーマルに設定する（Ｓ３０２）。
【００６５】
一方、検出部２２は、到着パケットのシーケンシャル番号（seq）が、現時点で設定されている次に到着すべきパケットのシーケンシャル番号（next＿seq）と一致せず（Ｓ３０１：Ｎｏ）、到着パケットのシーケンシャル番号（seq）が次の到着すべきシーケンシャル番号（next＿seq）よりも小さい場合（Ｓ３０３：Ｙｅｓ）、パケットの種別をロスに設定する（Ｓ３０４）。
【００６６】
また、検出部２２は、到着パケットのシーケンシャル番号（seq）が次の到着すべきシーケンシャル番号（next＿seq）よりも大きい場合（Ｓ３０３：Ｎｏ）、パケットの種別を再送に設定する（Ｓ３０５）。
【００６７】
（通常パケット処理）
図８は、通常パケット処理の流れを示すフローチャートである。この処理は、図６のＳ２０４に該当する。図８に示すように、取得部２１は、到着パケットに関するパケットデータを解析情報ＤＢ１３に記録する（Ｓ４０１）。例えば、取得部２１は、到着パケットのパケット長、ＡＣＫ番号、シーケンシャル番号、ＰＳＨフラグの有無などを登録する。また、検出部２２は、次に到着するシーケンシャル番号の更新などを実行する。
【００６８】
そして、取得部２１は、到着パケットのパケット長（len）が、到着済みのパケットのうち最大のパケット長（Max＿len）よりも大きい場合（Ｓ４０２：Ｙｅｓ）、最大のパケット長（Max＿len）を到着パケットのパケット長（len）で更新する（Ｓ４０３）。一方、取得部２１は、到着パケットのパケット長（len）が、到着済みのパケットのうち最大のパケット長（Max＿len）よりも小さい場合（Ｓ４０２：Ｎｏ）、最大のパケット長（Max＿len）をそのまま維持する。
【００６９】
つまり、取得部２１は、データを分割で送信する各パケットの中で、最大パケット長を管理する。なお、取得部２１は、データに限らず、Ｗｅｂサーバ５とクライアント端末６とのセッションが接続されている間、そのセッションで送受信される各パケットの中で、最大パケット長を管理することもできる。
【００７０】
（ロス検知時処理）
図９は、ロス検知時処理の流れを示すフローチャートである。この処理は、図６のＳ２０６に該当する。図９に示すように、分類部２３は、到着したパケットのシーケンシャル番号から、到着したパケットのうちロス直前のパケットとロス直後のパケットとを特定する（Ｓ５０１）。
【００７１】
そして、分類部２３は、ロス直前のパケットにＰＳＨフラグが設定されているか否かを判定する（Ｓ５０２）。ここで、算出部２４は、ロス直前のパケットにＰＳＨフラグが設定されている場合（Ｓ５０２：Ｙｅｓ）、先頭パケットの到着予想時間の推定処理を実行する（Ｓ５０３）。一方、分類部２３は、ロス直前のパケットにＰＳＨフラグが設定されていない場合（Ｓ５０２：Ｎｏ）、ロス直前のパケットの到着時間と、ロス直後のパケットのＡＣＫ番号とを記録する（Ｓ５０４）。
【００７２】
（先頭パケットの到着予想時間の推定処理）
図１０は、先頭パケットの到着予想時間の推定処理の流れを示すフローチャートである。図１０に示すように、算出部２４は、上記式（１−１）による帯域を用いた推定値（ｌｏｓｓ１）を算出し（Ｓ６０１）、上記式（１−２）によるパケットロス数を用いた推定値（ｌｏｓｓ２）を算出する（Ｓ６０２）。
【００７３】
そして、算出部２４は、推定値（ｌｏｓｓ１）が推定値（ｌｏｓｓ２）よりも大きい場合（Ｓ６０３：Ｙｅｓ）、推定値（ｌｏｓｓ１）を、ロスパケットが正常に到着したと仮定した場合の到着予想時間に決定して、記憶部１２等に記録する（Ｓ６０４）。
【００７４】
一方、算出部２４は、推定値（ｌｏｓｓ１）が推定値（ｌｏｓｓ２）以下の場合（Ｓ６０３：Ｎｏ）、推定値（ｌｏｓｓ２）を、ロスパケットが正常に到着したと仮定した場合の到着予想時間に決定して、記憶部１２等に記録する（Ｓ６０５）。
【００７５】
その後、算出部２４は、ロスパケットの到着予想時間を算出済みであることを示す登録フラグ（time＿loss＿flag）を設定する（Ｓ６０６）。例えば、算出部２４は、「time＿loss＿flag＝true」とする。
【００７６】
（再送パケット処理）
図１１は、再送パケット処理の流れを示すフローチャートである。この処理は、図６のＳ２０７に該当する。図１１に示すように、分類部２３は、ロスパケットの到着予想時間（time＿loss＿flag）が設定されていない場合（Ｓ７０１：Ｎｏ）、後述する分類処理を実行する（Ｓ７０２）。
【００７７】
一方、算出部２４は、ロスパケットの到着予想時間の登録フラグ（time＿loss＿flag）が設定されている場合（Ｓ７０１：Ｙｅｓ）、または、Ｓ７０２の分類処理が完了した場合、ロスパケットの再送遅延時間の推定処理を実行する（Ｓ７０３）。例えば、算出部２４は、上述した「再送遅延時間の推定値（ΔＴｉ）＝再送パケットの到着時間（Ｔｉ´）−到着予想時間（Ｔｉ）」を算出する。
【００７８】
その後、算出部２４は、ロスパケットの到着予想時間の登録フラグ（time＿loss＿flag）をリセットする（Ｓ７０４）。例えば、算出部２４は、「time＿loss＿flag＝false」とする。
【００７９】
（分類処理）
図１２は、分類処理の流れを示すフローチャートである。図１２に示すように、分類部２３は、再送パケットのシーケンシャル番号からロス直前とロス直後のパケットを特定する（Ｓ８０１）。
【００８０】
そして、分類部２３によって再送パケットにＰＳＨフラグが付加されていると判定された場合（Ｓ８０２：Ｙｅｓ）、算出部２４は、後述する最終パケットの到着予想時間の推定処理を実行する（Ｓ８０３）。
【００８１】
一方、分類部２３は、再送パケットにＰＳＨフラグが付加されていない場合（Ｓ８０２：Ｎｏ）、ロス直後のパケットのＡＣＫ番号が再送パケットのＡＣＫ番号よりも増加しているか否かを判定する（Ｓ８０４）。
【００８２】
そして、分類部２３によってＡＣＫ番号が増加していると判定された場合（Ｓ８０４：Ｙｅｓ）、図１０を用いて説明した先頭パケットの到着予想時間の推定処理を実行する（Ｓ８０５）。
【００８３】
一方、分類部２３によってＡＣＫ番号が増加していないと判定された場合（Ｓ８０４：Ｎｏ）、算出部２４は、中間パケットの到着予想時間の推定処理を実行する（Ｓ８０６）。例えば、算出部２４は、上記式（２）による推定値を算出する。
【００８４】
（最終パケットの到着予想時間の推定処理）
図１３は、最終パケットの到着予想時間の推定処理の流れを示すフローチャートである。図１３に示すように、算出部２４は、上記式（３−１）による帯域を用いた推定値（ｌｏｓｓ１）を算出し（Ｓ９０１）、上記式（３−２）によるパケットロス数を用いた推定値（ｌｏｓｓ２）を算出する（Ｓ９０２）。
【００８５】
そして、算出部２４は、推定値（ｌｏｓｓ１）が推定値（ｌｏｓｓ２）よりも小さい場合（Ｓ９０３：Ｙｅｓ）、推定値（ｌｏｓｓ１）を、ロスパケットが正常に到着したと仮定した場合の到着予想時間に決定して、記憶部１２等に記録する（Ｓ９０４）。
【００８６】
一方、算出部２４は、推定値（ｌｏｓｓ１）が推定値（ｌｏｓｓ２）以上の場合（Ｓ９０３：Ｎｏ）、推定値（ｌｏｓｓ２）を、ロスパケットが正常に到着したと仮定した場合の到着予想時間に決定して、記憶部１２等に記録する（Ｓ９０５）。
【００８７】
その後、算出部２４は、ロスパケットの到着予想時間を算出済みであることを示す登録フラグ（time＿loss＿flag）を設定する（Ｓ９０６）。例えば、算出部２４は、「time＿loss＿flag＝true」とする。
【００８８】
［効果］
上述したように、パケット解析装置１０は、ロスパケットが意味のあるデータの塊（例えばアプリデータ）のどの位置か判別する。例えば、パケット解析装置１０は、アプリデータの先頭パケットの場合、ロス直後のデータと連続で送信されている可能性が高いと判定する。また、パケット解析装置１０は、アプリデータの中間パケットの場合、ロス直前とロス直後のパケットの中央あたりで送信されている可能性が高いと判定する。また、パケット解析装置１０は、アプリデータの最終パケットの場合、ロス直前のデータと連続で送信されている可能性が高いと判定する。
【００８９】
そして、パケット解析装置１０は、ロスパケットの位置に応じた算出式を用いて、ロスパケットの送信時間、すなわちロスパケットがロスしなかった場合にパケット解析装置１０に到着したと予想される到着予想時間を算出することができる。この結果、パケット解析装置１０は、ロスパケットの再送遅延時間を算出することができる。
【００９０】
図１４は、パケットロスによる再送遅延の推定を説明する図である。図１４に示すように、Ｗｅｂサーバ５は、パケットＤ１、パケットＤ２、パケットＤ３の順でパケットを送信する。なお、各パケット長は１５００（バイト）とし、ネットワーク帯域（ＢＷ）を１００Ｍｂｐｓとする。ここでは一例として、式１−１を用いる例で説明する。
【００９１】
ここで、図１４では、パケット解析装置１０に、時刻ｔ１「０（usec）」にシーケンシャル番号「１」のパケットＤ１が到着し、その後にパケットＤ２がロスし、時刻ｔ３「２，０００，１２０（usec）」にシーケンシャル番号「３００１」のパケットＤ３が到着する。その後、パケット解析装置１０に、パケットＤ２の再送パケットである、時刻ｔ２´「２，０１０，１２０（usec）」にシーケンシャル番号「１５０１」のパケットＤ２´が到着するとする。
【００９２】
一般的な手法では、パケットＤ１とパケットＤ３の中間をロスパケットの到着時間と推測して、ロスパケットの到着予想時間を「１，０００，０００（usec）」と予測するので、再送遅延の推定時間を「２，０１０，１２０−１，０００，０００＝１，０１０，１２０（usec）」と算出する。
【００９３】
一方で、実施例１にかかるパケット解析装置１０は、ロスパケットの到着予想時間を「ｔ３−（８×（ｌｅｎ／ＢＷ））」＝「２，０００，１２０−（８×（１５００／１００））」＝「２，０００，０００」と算出する。そして、パケット解析装置１０は、「再送遅延時間＝ｔ２´（２，０１０，１２０）−２，０００，０００＝１０，１２０」と算出する。
【００９４】
このように、一般的な手法では、誤差を最大に含む再送遅延時間を算出するが、実施例１にかかるパケット解析装置１０は、誤差をより小さくした再送遅延時間を算出することができる。
【実施例２】
【００９５】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施例を説明する。
【００９６】
［システム］
上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。また、各処理の処理は任意に分散または統合することができる。例えば、分類部２３が取得部２１と検出部２２の処理も実行することができる。なお、取得部２１は取得部の一例であり、分類部２３は分類部の一例であり、算出部２４は算出部の一例である。
【００９７】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００９８】
［ハードウェア構成］
図１５は、ハードウェア構成例を示す図である。図１５に示すように、パケット解析装置１０は、通信インタフェース１０ａ、ＨＤＤ（Hard  Disk  Drive）１０ｂ、メモリ１０ｃ、プロセッサ１０ｄを有する。
【００９９】
通信インタフェース１０ａは、他の装置の通信を制御するネットワークインタフェースカードなどである。ＨＤＤ１０ｂは、プログラムやデータなどを記憶する記憶装置の一例である。
【０１００】
メモリ１０ｃの一例としては、ＳＤＲＡＭ（Synchronous  Dynamic  Random  Access  Memory）等のＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、フラッシュメモリ等が挙げられる。プロセッサ１０ｄの一例としては、ＣＰＵ（Central  Processing  Unit）、ＤＳＰ（Digital  Signal  Processor）、ＦＰＧＡ（Field  Programmable  Gate  Array）、ＰＬＤ（Programmable  Logic  Device）等が挙げられる。
【０１０１】
また、パケット解析装置１０は、プログラムを読み出して実行することでパケット解析方法を実行する情報処理装置として動作する。つまり、パケット解析装置１０は、取得部２１、検出部２２、分類部２３、算出部２４、品質測定部２５と同様の機能を実行するプログラムを実行する。この結果、パケット解析装置１０は、取得部２１、検出部２２、分類部２３、算出部２４、品質測定部２５と同様の機能を実行するプロセスを実行することができる。なお、この他の実施例でいうプログラムは、パケット解析装置１０によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
【０１０２】
このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯ（Magneto−Optical  disk）、ＤＶＤ（Digital  Versatile  Disc）などのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することができる。
【符号の説明】
【０１０３】
５  Ｗｅｂサーバ
６  クライアント端末
７  スイッチ
１０  パケット解析装置
１１  通信部
１２  記憶部
１３  解析情報ＤＢ
２０  制御部
２１  取得部
２２  検出部
２３  分類部
２４  算出部
２５  品質測定部
【図１】
2019022052.tif 000006
【図２】
2019022052.tif 000007
【図３】
2019022052.tif 000008
【図４】
2019022052.tif 000009
【図５】
2019022052.tif 000010
【図６】
2019022052.tif 000011
【図７】
2019022052.tif 000012
【図８】
2019022052.tif 000013
【図９】
2019022052.tif 000014
【図１０】
2019022052.tif 000015
【図１１】
2019022052.tif 000016
【図１２】
2019022052.tif 000017
【図１３】
2019022052.tif 000018
【図１４】
2019022052.tif 000019
【図１５】
2019022052.tif 000020