(57)【特許請求の範囲】
【請求項１】
ネットワーク上のパケットを取得するパケット取得ステップと、
取得したパケットに基づいて、一連のパケットにより構成されるパケット群を抽出するパケット群抽出ステップと、
前記パケット群におけるパケットロスを検出し、前記パケット群における前記パケットロスの発生箇所を特定するパケットロス検出ステップと、
前記パケット群における前記パケットロスの発生箇所に基づいて、輻輳が発生しているか否かを判定する輻輳判定ステップと、
を含む輻輳検出方法。
【請求項２】
前記輻輳判定ステップでは、前記パケットロスの発生箇所が、前記パケット群の所定箇所よりも時間的に後方に位置する場合、輻輳が発生していると判定し、
前記所定箇所は、前記パケット群において時間的に中央部分から後半部分までのいずれかの位置である、請求項１に記載の輻輳検出方法。
【請求項３】
前記輻輳判定ステップでは、前記パケット群の所定箇所よりも時間的に後方でのパケットロス数が、前記所定箇所よりも時間的に前方でのパケットロス数より大きいことに基づいて、輻輳が発生していると判定する、請求項２に記載の輻輳検出方法。
【請求項４】
前記輻輳判定ステップでは、
前記パケット群の所定箇所よりも時間的に前方でのパケットロス率及びパケット数を用いて、ロス率の母平均の信頼区間を統計的に推定し、前記推定した信頼区間の上限値を閾値Ａとして設定し、前記パケット群の所定箇所よりも時間的に後方でのパケットロス率が前記閾値Ａよりも大きい場合に、輻輳が発生していると判定する、請求項２に記載の輻輳検出方法。
【請求項５】
前記輻輳判定ステップでは、
前記パケット群のうちの最初から何番目のパケットであるかを示すパケット位置番号をＮで表したときに、前記パケットロスの発生箇所における前記パケット位置番号Ｎの平均値Ｍが、ｉ＝ｘ、ｘ−１・・・と順に変化させたときに下記式（４）を最初に満たすｉの値である閾値Ｗよりも大きいことに基づいて輻輳と判定する、請求項１に記載の輻輳検出方法
【数１】
0004924503.tif 000008
Ｆ(ａ，ｂ，ｃ)は「１〜ａの数字からｂ個抜き出した合計値がｃという数字になる回数」をあらわし、
ｘは、前記パケット群のパケット数であり、
ｙは、前記パケット群におけるパケットロス数であり、
Ｚは、輻輳が発生していると判定するための所定の下限値である。
【請求項６】
前記パケット群抽出ステップでは、元データが複数のパケットに分割されていることを検出すると、前記複数のパケットを前記パケット群として抽出する、請求項１に記載の輻輳検出方法。
【請求項７】
前記パケット群抽出ステップでは、各パケットを取得した時間間隔であるパケット間隔と所定値とを比較し、比較結果に基づいて前記パケット群を抽出する、請求項１に記載の輻輳検出方法。
【請求項８】
前記輻輳判定ステップでは、前記パケットの送信元端末のアドレスごとに輻輳判定の結果を集計し、前記アドレスの階層毎に輻輳の有無を解析することで、前記ネットワーク上での輻輳の発生箇所を特定する、請求項１に記載の輻輳検出方法。
【請求項９】
ネットワーク上のパケットを取得するパケット取得手段と、
取得したパケットに基づいて、一連のパケットにより構成されるパケット群を抽出するパケット群抽出手段と、
前記パケット群におけるパケットロスを検出し、前記パケット群における前記パケットロスの発生箇所を特定するパケットロス検出手段と、
前記パケット群における前記パケットロスの発生箇所に基づいて、輻輳が発生しているか否かを判定する輻輳判定手段と、
を含む輻輳検出装置。
【請求項１０】
ネットワーク上のパケットを取得するパケット取得ステップと、
取得したパケットに基づいて、一連のパケットにより構成されるパケット群を抽出するパケット群抽出ステップと、
前記パケット群におけるパケットロスを検出し、前記パケット群における前記パケットロスの発生箇所を特定するパケットロス検出ステップと、
前記パケット群における前記パケットロスの発生箇所に基づいて、輻輳が発生しているか否かを判定する輻輳判定ステップと、
を含む輻輳検出方法をコンピュータに実行させるための輻輳検出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、輻輳を検出するための輻輳検出方法、輻輳検出装置及び輻輳検出プログラムに関する。
【背景技術】
【０００２】
ネットワークサービスの安定運用のため、ネットワーク障害の要因の検出が求められている。ここで、ネットワーク障害の一つとして輻輳がある。輻輳とは、ネットワークの処理量以上の大量のトラヒックが流入することにより、例えばトラヒックの廃棄などが生じる状態を言う。この輻輳を検出するための方法の一つとして、Ｐｉｎｇなどの計測パケットをネットワークに送出する方法がある。例えば、端末に計測パケットを送信して端末から応答があるかどうか、また端末からの応答時間など、計測パケットに対する応答を解析し、輻輳の有無を検出する。
【０００３】
また、特許文献１には、輻輳が発生した場合にはパケットの廃棄が行われることに基づいて、輻輳の有無や重輻輳、軽輻輳など輻輳の程度を判断する方法が開示されている。例えば、パケットロスの数やパケットロスが発生している区間の発生回数などを解析し、輻輳の程度を判断している。
【特許文献１】特開2007-208571
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、計測パケットを送出する方法では、輻輳が発生しているかを検出するために計測パケットを送出することが、かえって輻輳を招いてしまう。
また、パケットロスの原因としては、輻輳以外にもネットワーク装置の設定ミス、回線や装置の故障などが挙げられる。単にパケットロスの数などにより輻輳か否かや輻輳の程度を検出する特許文献１の方法では、パケットロスの原因が輻輳であることを特定することができない。そのため、輻輳ではない場合でも輻輳が発生していると誤検出してしまう。
【０００５】
そこで、ネットワークに負荷を与えることなく精度良く輻輳を検出することができる技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
輻輳検出方法は、以下のステップを含む。
・ネットワーク上のパケットを取得するパケット取得ステップ。
・取得したパケットに基づいて、一連のパケットにより構成されるパケット群を抽出するパケット群抽出ステップ。
・前記パケット群におけるパケットロスを検出し、前記パケット群における前記パケットロスの発生箇所を特定するパケットロス検出ステップ。
・前記パケット群における前記パケットロスの発生箇所に基づいて、輻輳が発生しているか否かを判定する輻輳判定ステップ。
【０００７】
ネットワーク上に送出されているパケットを検出することで輻輳判定を行うため、輻輳を検出するための計測パケットを別途送出する必要が無い。よって、計測パケットの送出によるネットワークの混雑などネットワークに負荷を与えること無く輻輳判定を行うことができる。
ここで、輻輳とは通信量が増加してネットワークが混雑する状態を言い、輻輳が発生した場合には輻輳を回避するためにパケットが廃棄される。パケットが送信端末から受信端末に一連で送出される場合、その一連のパケット群の後方で輻輳が発生し易く、またその後方のパケットが廃棄され易い。上記輻輳検出方法では、輻輳が発生しているか否かを判定するにあたって、パケット群におけるパケットロスの発生箇所を参照するため、輻輳をより精度良く検出し誤検出を抑制することができる。
【０００８】
一連のパケット群が送信される区間の長さは、例えばＴＣＰ（Transmission Control Protocol）の場合はＲＴＴ（Round Trip Time）より短く設定される。輻輳検出方法では、このようなパケット群が連送される区間を用いて輻輳が発生しているか否かの判定を行うので、輻輳判定をリアルタイムに行うことができる。
なお、パケット群の抽出及びパケットロスの検出は順不同である。つまり、パケット群を抽出した後、パケット群内のパケットロスを検出しても良い。あるいは、まずパケットロスを検出した後、パケットロスを含むパケット群を抽出しても良い。
【０００９】
前述した輻輳検出方法を実行する輻輳検出装置、前記輻輳検出方法をコンピュータに実行させるコンピュータプログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体は、本発明の範囲に含まれる。ここで、コンピュータ読み取り可能な記録媒体としては、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ（Compact Disc−Read Only Memory）、ＭＯ（Magneto Optical disk）、ＤＶＤ（Digital Video Disc）、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ（ＤＶＤ−Random Access Memory）、ＢＤ（Blue-ray Disc）、半導体メモリを挙げることができる。前記コンピュータプログラムは、前記記録媒体に記録されたものに限られず、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送されるものであってもよい。
【発明の効果】
【００１０】
本発明によれば、ネットワークに負荷を与えることなく精度良く輻輳を検出することができる技術を提供するができる。
【発明を実施するための最良の形態】
【００１１】
＜第１実施形態例＞
（１）全体構成
図１は、本発明の実施形態例に係る輻輳検出装置を含むネットワーク構成図の一例である。端末Ａ、Ｂ、Ｃ、Ｄはネットワーク１０に接続され、端末Ｅ、Ｆ、Ｇはネットワーク２０に接続され、サーバＡ、Ｂ・・・は中継装置Ａを介してネットワーク３０に接続されている。ネットワーク１０、２０はネットワーク３０を介して接続されており、端末Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、ＧとサーバＡ又はＢ・・・間で通信を行う。輻輳検出装置４０は中継装置Ａを介してサーバＡ、Ｂ・・・に接続されており、端末Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、ＧとサーバＡ、Ｂ・・・との間で送受信されるパケットを取得し、輻輳の有無を判定する。具体的には、輻輳検出装置４０は、例えばスイッチ及びＴＡＰなどの中継装置Ａに接続され、端末間に流れるパケットを取得できるように設計されている。以下では、端末Ａ〜ＧとサーバＡとの間で送受信されるパケットに着目して説明する。
【００１２】
上記の各端末のアドレスはネットワーク部分及びホスト部分を含み、同一ネットワークに属する端末に割り当てられるアドレスは、ネットワーク部分が同一である。例えば、端末Ａ、Ｂ、Ｃ、Ｄのアドレスのネットワーク部分は１０．１０．１０であり、ホスト部分が１０、１１、１２、１３と変化する。また、端末Ｅ、Ｆ、Ｇのアドレスのネットワーク部分は２０．２０．２０であり、ホスト部分が２０、２１、２２と変化する。
【００１３】
（２）輻輳検出装置の機能構成
図２は輻輳検出装置の機能構成を示すブロック図である。輻輳検出装置４０は輻輳判定を行うために、パケット取得部４１、パケット情報取得部４２、パケット情報ＤＢ４３、パケットロス検出部４４、パケット群抽出部４５及び輻輳判定部４６を含む。
パケット取得部４１は、サーバＡを介して送受信されるパケットを取得する。本実施形態では、端末Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、ＧとサーバＡとの間で送受信されるパケットを取得する。
【００１４】
パケット情報取得部４２はパケットの種類を特定する。パケット情報取得部４２は、パケット取得部４１がパケットを取得した時刻を取得する。また、パケット情報取得部４２は、パケットの種類に応じて、パケットの送信元アドレス及び送信先アドレスなどのパケット情報を取得する。パケット情報ＤＢ４３は、パケット情報取得部４２が取得したパケット情報を記憶する。
【００１５】
パケット群抽出部４５は、パケット情報ＤＢ４３のパケット情報を参照してパケット群を抽出する。パケット群とは、送信端末から一連で送信されるパケットにより構成されるグループである。
パケットロス検出部４４は、パケット情報ＤＢ４３のパケット情報を参照してパケットロスを検出する。
【００１６】
ここで、端末どうしが通信を行うためのプロトコルは種々存在しており、プロトコルの違いにより送受信されるパケットのパケット構成が異なる。よって、プロトコルの違いにより取得可能なパケット情報も異なり、パケットロスの検出方法及びパケット群の抽出方法も異なる。パケットロスの検出方法及びパケット群の抽出方法については後述する。
輻輳判定部４６は、パケット群におけるパケットロスの発生箇所に基づいて、輻輳が発生しているか否かを判定する。ここで、輻輳とは通信量が増加してネットワークが混雑する状態を言い、輻輳が発生した場合には輻輳を回避するためにパケットが廃棄される。パケットが送信端末から受信端末に一連で送出される場合、その一連のパケット群の後方で輻輳が発生し易く、またその後方のパケットが廃棄され易い。輻輳判定部４６は、パケットロスの発生箇所がパケット群の所定箇所よりも時間的に後方であることに基づいて輻輳であると判定する。輻輳の判定方法についても後述する。
【００１７】
（３）パケットロスの検出方法及びパケット群の抽出方法
プロトコルとしてＩＰ（Internet Protocol）、ＲＴＰ（Real-time Transport Protocol）、ＴＣＰ（Transmission Control Protocol）を例に挙げて、各プロトコルでのパケットロスの検出方法及びパケット群の抽出方法を以下に説明する。
（３−１）ＩＰの場合
（ｉ）ＩＰパケットの送信
元データがＩＰパケットの最大バイト数を超える場合は、元データは各ＩＰパケットに分割されて送信される。図３は元データが分割されて複数のＩＰパケットが形成される様子を示す説明図であり、図４は複数のＩＰパケットが一連で送信される様子を示す説明図である。図３に示すように元データのサイズは１４０００バイトであり、各ＩＰパケットが送信可能なデータの最大バイト数は１５００バイトである。よって、元データは１０個のＩＰパケットに分割されて送信される。このとき、ＩＰパケットＰ１〜Ｐ９には１５００バイトが格納され、ＩＰパケットＰ１０には５００バイトが格納される。また、各ＩＰパケットＰ１〜Ｐ１０はＩＰヘッダを有している。例えば、送信端末である端末Ａは、ＩＰパケットＰ１〜Ｐ１０を受信端末であるサーバＡに送信している。このとき、図４に示すように、ＩＰパケットＰ１〜Ｐ１０は、端末ＡからサーバＡに送信される。ここで、ＩＰパケットＰ１〜Ｐ１０は一連で送信されて一連のパケット群Ｇを構成しており、例えばパケットＰ８及びＰ９がロスしているものとする。
【００１８】
（ｉｉ）パケット情報の取得
端末ＡからサーバＡにＩＰパケットが送信されると、輻輳検出装置４０のパケット取得部４１はＩＰパケットを取得する。パケット情報取得部４２は、各ＩＰパケットを取得した時刻を検出し、パケットの種類を特定する。このとき、各ＩＰパケットはイーサネット（登録商標）フレームに乗せて送信されており、イーサーフレームのイーサヘッダに含まれる「タイプ」フィールド値が“０ｘ０８００”である場合はＩＰパケットであると特定される。
【００１９】
図５はＩＰヘッダの構造図である。「識別子」は分割されたＩＰパケットに付される識別値を記述するためのフィールドであり、同一の元データを構成することを示す場合には同一の識別値が付される。「フラグ」は、元データを構成する最後のＩＰパケットであるかを示すフィールドであり、“more fragment”は途中のＩＰパケットであることを示し、“no more fragment”は最後のＩＰパケットであることを示す。「フラグメントオフセット」は各ＩＰパケットが元データのどの部分を構成するのかを示すフィールドである。「パケット長」は各パケットの長さを示すフィールドであり、ヘッダ長とデータ長との合計の長さが記述される。「送信元ＩＰアドレス」は送信元のＩＰアドレスを示すフィールドであり、「宛先ＩＰアドレス」は送信先のＩＰアドレスを示すフィールドである。
【００２０】
パケット情報取得部４２は、まずフラグ及びフラグメントオフセットを見て、ＩＰパケットがフラグメント化されているかを検出する。フラグが“more fragment”であるか、あるいはフラグメントオフセットが“０”でない場合はフラグメント化されていると判断し、必要な情報をＩＰヘッダから取得する。例えば、送信元ＩＰアドレス、識別子、フラグ、フラグメントオフセット、パケット長を取得する。
【００２１】
パケット情報ＤＢ４３は、各ＩＰパケットを取得した時刻及びＩＰヘッダから抽出した情報などのパケット情報を記憶する。図６は、パケット情報ＤＢ４３に記憶されているパケット情報の一例である。パケットＮｏごとに、送信元ＩＰアドレス、識別子、フラグ、フラグメントオフセット、パケット長及びパケットを取得した時刻が１レコードに記憶されている。端末Ａが送信端末であるので、送信元ＩＰアドレスは１０．１０．１０．１０である。
【００２２】
（ｉｉｉ）パケットロスの検出
パケットロス検出部４４は、パケット情報ＤＢ４３のパケット情報を、パケットＮｏで特定されるレコードごとに参照してパケットロスを検出する。まず、パケットロス検出部４４は、各ＩＰパケットのフラグメントオフセット（パケットＮｏがｋのオフセット値をoffset(k)で表す）とパケット長（パケットＮｏがｋのパケット長をlength(k)であらわす）とを合計した合計値（offset(k)＋length(k)）を求める。次に、隣接するＩＰパケットのうち前のＩＰパケットの合計値（offset(k)＋length(k)）と、後のＩＰパケットのフラグメントオフセット（offset(k+1)）と、を比較する。パケットロス検出部４４は、前のＩＰパケットの合計値が後のＩＰパケットのフラグメントオフセットよりも小さくなる場合、つまり下記式（１）を満たす場合に、パケットロスが発生していると判断する。
【００２３】
offset(k)＋length(k)＜offset(k+1)  ・・・（１）
例えば図６を参照すると、ＩＰパケットＰ６の合計値（offset(k)＋length(k)）は“７５００＋１５００＝９０００”であり、ＩＰパケットＰ７のoffset(k+1)は“９０００”である。よって、上記式（１）を満たさず、パケットロス検出部４４は、ＩＰパケットＰ７はロスしていないと判断する。一方、ＩＰパケットＰ７の合計値（offset(k)＋length(k)）は“９０００＋１５００＝１０５００”である。ＩＰパケットＰ７の次にパケット情報が取得されているＩＰパケットＰ１０のoffset(k+1)は“１３５００”である。よって、上記式（１）を満たしており、パケットロス検出部４４は、パケットロスが発生していると判断する。ここで、パケットロス検出部４４は、例えばパケットＰ１〜Ｐ７のパケット長が“１５００”であることに基づいて、パケットの最大バイト長が“１５００”であることを取得する。ＩＰパケットＰ７の合計値“１０５００”と、ＩＰパケットＰ１０のoffset(k+1)の“１３５００”と、の差が“３０００”であることから、２パケットがロスしていると判断する。
【００２４】
以上より、パケットロス検出部４４は、パケットＰ７及びＰ１０の間に２パケットのロスが発生していることを検出する。
（ｉｖ）パケット群の抽出
パケット群抽出部４５は、パケット情報ＤＢ４３のパケット情報を参照して、一連のパケット群を抽出する。図６によると、ＩＰパケットＰ１〜Ｐ７、Ｐ１０の識別子が同じ“１００”であり、ＩＰパケットＰ１のフラグメントオフセットが“０”であり、ＩＰパケットＰ１０のフラグが“no more fragment”である。パケット群抽出部４５は、これらのことから、ＩＰパケットＰ１から始まりＩＰパケットＰ１０で終わる一連のパケット群をパケット群Ｇとして抽出する。
【００２５】
その他、ＩＰパケットＰ１１のフラグメントオフセットが“０”であること、ＩＰパケットＰ１１からは識別子が“２００”に変わっていること、ＩＰパケットＰ１１のフラグが“more fragment”であることから、ＩＰパケットＰ１１から別のパケット群が始まっていることが分かる。よって、このことからも一連のパケット群ＧがＩＰパケットＰ１０までであることが分かる。
【００２６】
なお、パケット群の終了は、ＩＰパケットのフラグが“no more fragment”である場合だけでなく、ＩＰパケットのパケット長が最大バイト長に満たない場合に基づいて把握可能である。また、前のＩＰパケットを取得してから所定時間経過しても次のＩＰパケットを取得できない場合は、前のパケット群のＩＰパケットの送信は終了したものとみなす。
これらの判断方法は、フラグが“no more fragment”のＩＰパケットがロスした場合にパケット群の終了を判定するのに有効である。
【００２７】
また、パケット群Ｇの始まりは、パケット群の中から１のＩＰパケットを抽出し、抽出したＩＰパケットのフラグメントオフセットと、パケットの最大バイト長とに基づいて、そのＩＰパケットの前に何パケットあるかにより把握しても良い。例えば、ＩＰパケットＰ７のフラグメントオフセットが“９０００”であり、最大バイト長は“１５００”であるので、パケット群Ｇの始まりは、ＩＰパケットＰ７から６パケット前のＩＰパケットＰ１であることが分かる。
【００２８】
以上より、パケット群抽出部４５の取得したパケット群及びパケットロス検出部４４の検出結果に基づけば、ＩＰパケットＰ１〜Ｐ１０のパケット群のうち、７番目と８番目のＩＰパケットＰ８、Ｐ９がロスしていることが特定される。
なお、パケット群のうち最後のパケットがロスしている場合には、パケット群を抽出せず、輻輳判定を行わない方が好ましい。例えば、前述のＩＰパケットＰ１〜Ｐ１０において、ＩＰパケットＰ８、Ｐ９に加えて一連のパケット群Ｇの最後のＩＰパケットＰ１０もロスしている場合には輻輳判定を行わないのが好ましい。この場合、パケット取得部４１は、一連のパケット群ＧのうちＩＰパケットＰ１〜Ｐ７までしか検出することができない。そのため、パケット群抽出部４５は、一連のパケット群ＧがＩＰパケットＰ１〜Ｐ１０までであることを把握できない。このような場合に輻輳判定を行っても正確に輻輳が発生しているか否かを判定することができない。よって、一連のパケット群の最後のパケットがロスしている場合には、パケット群を抽出せず、輻輳判定も行わないのが好ましい。
【００２９】
（３−２）ＲＴＰの場合
次に、ＲＴＰでのパケットロスの検出方法及びパケット群の抽出方法を説明する。
（ｉ）ＲＴＰパケットの送信
ＲＴＰにおいてもＩＰと同様に、元データがＲＴＰパケットの最大バイト数を超える場合は、元データは各ＲＴＰパケットに分割されて送信される。元データが分割されて複数のＲＴＰパケットが形成される構成は、ＩＰパケットの説明で用いた図３及び図４と同様であるので説明を省略する。
【００３０】
（ｉｉ）パケット情報の取得
図３、図４と同様に端末ＡからサーバＡにＲＴＰパケットＰ１〜Ｐ１０が送信される。このとき、図４に示すように、ＲＴＰパケットＰ１〜Ｐ１０が端末ＡからサーバＡに送信されると、輻輳検出装置４０のパケット取得部４１はＲＴＰパケットＰ１〜Ｐ１０を取得する。パケット情報取得部４２は、各ＲＴＰパケットを取得した時刻を検出し、パケットの種類を特定する。このとき、例えば、イーサヘッダの「タイプ」フィールド値が“０ｘ０８００”であり、ＩＰヘッダの「プロトコル」フィールド値が“１７”であり、データの先頭２ビットが“０ｘ２”である場合はＲＴＰパケットであると特定される。パケット情報取得部４２は、各ＲＴＰパケットから必要な情報を抽出する。
【００３１】
ＲＴＰパケットにはＩＰヘッダ、ＵＤＰ（User Datagram Protocol）ヘッダ及びＲＴＰヘッダが含まれる。図７の（ａ）はＵＤＰヘッダの構造図であり、（ｂ）はＲＴＰヘッダの構造図である。ＵＤＰヘッダの「発信元ポート番号」は発信元のポート番号を示すフィールドであり、「宛先ポート番号」は送信先のポート番号を示すフィールドである。ＲＴＰヘッダの「シーケンス番号」は、１パケット毎に増加する番号が付されるフィールドであり、パケットの順番を表している。「タイムスタンプ」は、パケットに含まれる最も古いデータが発生した時刻を示すフィールドであり、同一の元データを構成することを示す場合には同一のタイムスタンプ値が付される。
【００３２】
パケット情報取得部４２は、例えば、ＩＰヘッダから送信元ＩＰアドレス及びパケット長を取得し、ＵＤＰヘッダから発信元ポート番号を取得し、ＲＴＰヘッダからタイムスタンプ及びシーケンス番号を取得する。
パケット情報ＤＢ４３は、各ＲＴＰパケットを取得した時刻及び各ヘッダから抽出した情報などのパケット情報を記憶する。図８は、パケット情報ＤＢ４３に記憶されているパケット情報の一例である。パケットＮｏごとに、送信元ＩＰアドレス、ポート番号、タイムスタンプ、シーケンス番号、パケット長及びパケットを取得した時刻が１レコードに記憶されている。
【００３３】
（ｉｉｉ）パケットロスの検出
パケットロス検出部４４は、パケット情報ＤＢ４３のパケット情報について、パケットＮｏで特定されるレコードごとにシーケンス番号の抜けを見てパケットロスを検出する。パケットロス検出部４４は、図８を参照して、シーケンス番号Ｓ８、Ｓ９が抜けていることから、ＲＴＰパケットＰ８、Ｐ９がロスしていることを検出する。
【００３４】
（ｉｖ）パケット群の抽出
パケット群抽出部４５は、パケット情報ＤＢ４３のパケット情報を参照してパケット群を抽出する。図８によると、ＲＴＰパケットＰ０のタイムスタンプは“５０”であり、ＲＴＰパケットＰ１〜Ｐ７、Ｐ１０のタイムスタンプが“１００”であり、ＲＴＰパケットＰ１１からはタイムスタンプが“２００”に変わっている。つまり、ＲＴＰパケットＰ０とＲＴＰパケットＰ１とでタイムスタンプが異なり、ＲＴＰパケットＰ１０とＲＴＰパケットＰ１１とでタイムスタンプが異なる。また、ＲＴＰパケットＰ０、Ｐ１のシーケンス番号がＳ０、Ｓ１と連続し、かつＲＴＰパケットＰ１０、Ｐ１１のシーケンス番号がＳ１０、Ｓ１１と連続しており抜けが無い。これらのことから、パケット群抽出部４５は、ＲＴＰパケットＰ１〜Ｐ１０が一連で送信されているとみなし、ＲＴＰパケットＰ１〜Ｐ１０を一連のパケット群として抽出する。
【００３５】
なお、パケット群において、最後のＲＴＰパケット又は最初のＲＴＰパケットがロスした場合、ロスしたＲＴＰパケットのタイムスタンプを参照することができない。よって、ロスしたＲＴＰパケットが、隣接するパケット群のうち前のパケット群に属するのか、後続のパケット群に属するのかは次のようにして把握する。ロスが検出されたＲＴＰパケットの直前のＲＴＰパケットのパケット長が、パケットの最大バイト長に満たない場合は、ロスが検出されたＲＴＰパケットは、後続のパケット群の最初のＲＴＰパケットであると判断する。逆に、ロスが検出されたＲＴＰパケットの直前のＲＴＰパケットのパケット長が、パケットの最大バイト長である場合は、ロスが検出されたＲＴＰパケットは、前のパケット群の最後のＲＴＰパケットであると判断する。例えば、図８においてＲＴＰパケットＰ１１がロスしていると仮定する。この場合、ＲＴＰパケット１０のパケット長が“５００”であり最大バイト長“１５００”に満たないため、ＲＴＰパケット１１は、ＲＴＰパケットＰ１０が属する一連のパケット群Ｇには属さないと判断する。よって、パケット群抽出部４５は、ＲＴＰパケット１１は、パケット群Ｇに後続のパケット群において、最初のＲＴＰパケットであると判断する。一方、ＲＴＰパケットＰ１０がロスしていると仮定する。この場合、ＲＴＰパケットＰ７のパケット長が“１５００”であり最大バイト長である。よって、パケット群抽出部４５は、ＲＴＰパケット１０は、一連のパケット群Ｇの最後のＲＴＰパケットであると判断する。
【００３６】
（３−３）ＴＣＰの場合
次に、ＴＣＰでのパケットロスの検出方法及びパケット群の抽出方法を説明する。ＴＣＰでは、送信端末は、ＲＴＴ（Round Trip Time）間隔で所定数のＴＣＰパケットを一連で送信する。受信端末は、ＴＣＰパケットを受信すると、どのＴＣＰパケットまで受信したのかを示すＡＣＫを返信する。受信端末からＡＣＫが返信されると、次のＲＴＴ期間で送信するパケット数が例えば１つ増加する。
【００３７】
前述のＩＰやＲＴＰでは、輻輳検出装置４０に到達する前にパケットがロスしている場合に、パケットロスを検出可能である。言い換えれば、輻輳検出装置４０に到達後にパケットがロスした場合にはパケットロスを検出することができない。しかし、ＴＣＰでは、前述の通り、受信端末がＴＣＰパケットを受信するとＡＣＫが返信される。よって、ＴＣＰパケットが輻輳検出装置で検出された後にロスしたとしても、ＡＣＫを解析することによりパケットロスを検出することができる。このような特徴を有するＴＣＰでは、（ａ）輻輳検出装置４０に到達する前にＴＣＰパケットがロスする場合と、（ｂ）輻輳検出装置４０に到達後にＴＣＰパケットがロスする場合とで、パケットロスの検出方法及びパケット群の抽出方法が異なる。以下に、まずＴＣＰヘッダの構造を説明し、次に前記（ａ）、（ｂ）について説明する。
【００３８】
ＴＣＰパケットにはＩＰヘッダ、ＴＣＰヘッダが含まれる。図９はＴＣＰヘッダの構造図である。「送信元ポート番号」は送信元のポート番号を示すフィールドであり、「宛先ポート番号」は送信先のポート番号を示すフィールドである。「シーケンス番号」は１パケット毎に増加する番号が付されるフィールドであり、パケットの順番を表している。「ＡＣＫ番号」は、受信端末が受信を確認したＴＣＰパケットのシーケンス番号を示すフィールドである。
【００３９】
次に、前記（ａ）、（ｂ）それぞれについてパケットロスの検出方法及びパケット群の抽出方法について説明する。
（ａ）輻輳検出装置に到達する前にＴＣＰパケットがロスする場合
（ｉ）ＴＣＰパケットの送信
まず、輻輳検出装置４０に到達する前にＴＣＰパケットがロスする場合について説明する。図１０は、輻輳検出装置４０に到達する前にＴＣＰパケットがロスする場合を示す説明図である。送信端末である端末Ａから受信端末であるサーバＡにＴＣＰパケットが送信される。このとき、このとき、図１０に示すように、端末ＡからサーバＡにＴＣＰパケットが送信されている。ＲＴＴ（０）期間では、９個のＴＣＰパケットＰ１〜Ｐ９を含む一連のパケット群Ｇ０が送信されている。９個のＴＣＰパケットＰ１〜Ｐ９はロスすることなくサーバＡに送信されている。次に、ＲＴＴ（０）期間に続くＲＴＴ（１）期間では、ＲＴＴ（０）期間よりも１個多い１０個のＴＣＰパケットＰ１０〜Ｐ１９を含む一連のパケット群Ｇ１が送信されている。ＴＣＰパケットＰ１０〜Ｐ１６、Ｐ１９はロスすることなくサーバＡに送信されているが、ＴＣＰパケットＰ１７、Ｐ１８はロスしている。受信端末であるサーバＡは、ＴＣＰパケットの受信に応じてＡＣＫを端末Ａに送信する。なお、ＡＣＫについては説明に必要な部分のみを記載している。
【００４０】
（ａ）の場合、図１０に示すように、ＴＣＰパケットＰ１７、Ｐ１８は輻輳検出装置４０に到達する前にロスしているため、輻輳検出装置４０はＴＣＰパケットＰ１７、Ｐ１８のロスを検出することができる。
（ｉｉ）パケット情報の取得
輻輳検出装置４０のパケット取得部４１は、端末ＡからサーバＡに送信されるＴＣＰパケットを検出するとともに、サーバＡから端末Ａに送信されるＡＣＫを検出する。パケット情報取得部４２は、各ＴＣＰパケットを取得した時刻を検出し、パケットの種類を特定する。このとき、例えば、イーサヘッダに含まれる「タイプ」フィールド値が“０ｘ０８００”であり、ＩＰヘッダの「プロトコル」フィールド値が“６”である場合はＴＣＰパケットであると特定される。
【００４１】
パケット情報取得部４２は、ＴＣＰパケットにデータが格納されている場合、つまりデータ長＞０の場合は、例えば、ＩＰヘッダから送信元ＩＰアドレス及び宛先ＩＰアドレスを取得し、ＴＣＰヘッダから送信元ポート番号、宛先ポート番号及びシーケンス番号を取得する。また、パケット情報取得部４２は、ＴＣＰパケットを取得した時刻からパケット間隔を算出するともに、パケット間隔の平均値及び標準偏差を算出する。パケット情報ＤＢ４３はこれらのパケット情報を記憶する。図１１及び図１２は、データを含むパケットについて、パケット情報ＤＢ４３に記憶されているパケット情報の一例である。図１１では、パケットＮｏごとに、送信元ＩＰアドレス、送信元ポート番号、送信先ＩＰアドレス、宛先ポート番号、シーケンス番号、パケットを取得した時刻及びパケット間隔が１レコードに記憶されている。図１２では、パケット間隔の平均値及び標準偏差が、送信元ＩＰアドレスごとに随時更新されて記憶されている。
【００４２】
一方、パケット情報取得部４２は、ＴＣＰパケットにデータが格納されていない場合、つまりデータ長＝０であるＡＣＫの場合は、例えば、ＩＰヘッダから送信元ＩＰアドレス及び宛先ＩＰアドレスを取得し、ＴＣＰヘッダから送信元ポート番号、宛先ポート番号及びＡＣＫ番号を取得する。このとき、パケット情報取得部４２は各ＡＣＫ番号の取得回数をカウントする。ＴＣＰパケットがＡＣＫパケットである場合は、パケット情報ＤＢ４３はこれらのパケット情報を記憶する。図１３は、ＡＣＫパケットについて、パケット情報ＤＢ４３に記憶されているパケット情報の一例である。パケットＮｏごとに、送信元ＩＰアドレス、送信元ポート番号、送信先ＩＰアドレス、宛先ポート番号、ＡＣＫ番号及び各ＡＣＫ番号のカウント値が１レコードに記憶されている。
【００４３】
（ｉｉｉ）パケットロスの検出
パケットロス検出部４４は、パケット情報ＤＢ４３のパケット情報について、パケットＮｏで特定されるレコードごとにシーケンス番号の抜けを見てパケットロスを検出する。図１１のシーケンス番号を順に参照すると、シーケンス番号Ｓ１６の次にＳ１９が記憶されており、シーケンス番号Ｓ１７、Ｓ１８が抜けている。このことから、パケットロス検出部４４は、シーケンス番号Ｓ１７、Ｓ１８のＴＣＰパケットＰ１７、Ｐ１８がロスしていることを検出する。
【００４４】
その他、次のことからもパケットロスを検出できる。図１１において、シーケンス番号Ｓ１７、Ｓ１８は、それぞれシーケンス番号Ｓ２０及びＳ２２の後に、番号順とは異なる順序で記憶されている。これに基づいて、ＴＣＰパケットＰ１７、Ｐ１８が再送されておりロスしていたと判断する。また、ＡＣＫ番号のカウント値が所定値以上であることに基づいてパケットロスを検出することもできる。ＡＣＫ番号は、受信端末がどのＴＣＰパケットまで受信したかを送信端末に知らせる情報であり、パケットロスが発生している場合は同じＡＣＫ番号のＡＣＫが受信端末から送信される。ここで、前述のパケットロスを判断するための所定値が“３”であるとする。図１３を参照すると、ＡＣＫ１６、ＡＣＫ１７のカウント値が“３”となっていることから、ＴＣＰパケットＰ１７、Ｐ１８がロスしていることを検出することができる。
【００４５】
（ｉｖ）パケット群の抽出
パケット群抽出部４５は、パケットロス検出部４４から、パケットＮｏがＰ１６及びＰ１９で特定されるレコードの間において、ＴＣＰパケットＰ１７、Ｐ１８の２パケットのロスが発生していることを取得する。パケット群抽出部４５は、パケット情報ＤＢ４３のパケット情報を参照して、検出されたパケットロスが発生しているパケット群を抽出する。
【００４６】
パケットロスが発生しているパケット群では、パケットロスによりパケットの連送が途切れている。しかし、パケット群におけるパケットロスの発生箇所に基づいて輻輳判定を行うためには、パケットロスを含む一連のパケット群全体を抽出する必要がある。ここで、パケットロスが発生していないパケット群は、例えばパケット間隔と所定値との比較によりパケット群の切れ目を探すことで容易に抽出できる。そこで、パケットロスが発生しているパケット群のパケット数を、パケットロスが発生していないパケット群のパケット数と所定の変化ルールとに基づいて推測することで、パケットロスが発生しているパケット群を抽出する。
【００４７】
まず、パケット群抽出部４５は、隣接するパケット群間でのパケット数の変化について、所定の変化ルールを予め保持しているものとする。変化ルールが、例えば、前のＲＴＴ間隔でパケットがロスすることなく送信された場合、次のＲＴＴ間隔で送信されるパケットの数は、前のＲＴＴ間隔で送信されたパケットの数に“１”を加算したものになるというものであるとする。パケット群抽出部４５は、最初にパケットロスが発生した箇所から時間的に遡って、パケット間隔と所定値とを順に比較する。次に、パケット間隔が所定値よりも大きい箇所を見つけると、そこをパケットロスが発生したパケット群Ｇ１の始まり及び前のパケット群Ｇ０の終わりとみなす。さらに、時間的に遡ってパケット間隔と所定値とを順に比較して、再度パケット間隔が所定値よりも大きい箇所を見つけると、そこを前のパケット群Ｇ０の始まりとみなす。そして、前のパケット群Ｇ０に含まれるパケット数を取得する。パケット群抽出部４５は、前述の変化ルールに基づいて、取得した前のパケット群のパケット数に“１”を加算することで、パケットロスが発生したパケット群Ｇ１のパケット数を求める。最後に、先に取得したパケット群Ｇ１の始まりと、パケット群Ｇ１のパケット数と、に基づいてパケット群Ｇ１を抽出する。
【００４８】
ここで、パケット間隔は一定ではなく分布を有するため、前記所定値はこの分布を考慮した値とする。所定値とは、例えば、（パケット間隔の平均値）＋１．９６×（パケット間隔の標準偏差）である。パケット間隔が、その分布を考慮した所定値より小さい場合は、パケットが一連で送信されていると判断する。一方、パケット間隔が所定値より大きい場合はパケット群の切れ目と判断し、パケット群Ｇ１を抽出する。
【００４９】
また、前記所定値は、パケット間隔の平均値を所定倍した値など、パケット間隔の平均値に基づいて決定された値であっても良い。例えば、所定値はパケット間隔の平均値の２倍である。パケット間隔が平均値の２倍より小さい場合は、パケットは一連で送信されていると判断する。一方、パケット間隔が平均値の２倍より大きい場合は、パケット群の切れ目である判断し、パケット群Ｇ１を抽出する。
【００５０】
パケット群の抽出について図１０〜図１２を用いて説明する。図１０及び図１１によれば、送信元ＩＰアドレスは１０．１０．１０．１０である。パケット群抽出部４５は、このＩＰアドレスに基づいて、図１２から、パケット間隔の平均値“１．２ｍｓ”及び標準偏差“０．２ｍｓ”を取得する。よって、所定値は、１．２ｍｓ＋１．９６×０．２ｍｓ＝１．５９２ｍｓとなる。
【００５１】
図１０及び図１１によれば、パケット群Ｇ１においてＴＣＰパケットＰ１７、Ｐ１８がロスしていることから、パケット群Ｇ１では最初にＴＣＰパケットＰ１７がロスしていることが分かる。よって、パケット群抽出部４５は、ＴＣＰパケットＰ１７から時間的に遡って、ＴＣＰパケットＰ１６とＴＣＰパケットＰ１５とのパケット間隔Δｔ１６を取得する。パケット間隔Δｔ１６は１．２ｍｓであり、所定値の１．５９２ｍｓより小さい。さらに遡って比較を行うと、ＴＣＰパケットＰ１０とＴＣＰパケットＰ９とのパケット間隔Δｔ１０が１０．０ｍｓであり、所定値の１．５９２ｍｓより大きいことが検出される。パケット群抽出部４５は、その検出結果に基づいて、パケット群Ｇ１の始まりがＴＣＰパケットＰ１０であり、パケット群Ｇ０の終わりがＴＣＰパケットＰ９であることを取得する。さらに同様の処理を繰り返すと、ＴＣＰパケットＰ１とＴＣＰパケットＰ０とのパケット間隔Δｔ１が５．０ｍｓであり、所定値の１．５９２ｍｓより大きいことが検出される。パケット群抽出部４５は、その検出結果に基づいて、パケット群Ｇ０の始まりがＴＣＰパケットＰ１であることを取得する。これにより、前のパケット群Ｇ０はＴＣＰパケットＰ１〜Ｐ９までの９個のパケットから構成されることが分かる。よって、パケット群抽出部４５は、前のパケット群Ｇ０のパケット数に１を加算して、パケットロスの発生したパケット群Ｇ１のパケット数を１０と算出する。以上より、パケット群Ｇ１は、ＴＣＰパケットＰ１０からＴＣＰパケットＰ１９により構成されることを抽出することができる。このように、パケットロスの発生したパケット群Ｇ１のパケット数を、パケットロスが発生しておらず、かつパケット群Ｇ１の前のパケット群Ｇ０のパケット数に基づいて取得することができる。
【００５２】
（ｂ）輻輳検出装置に到達後にＴＣＰパケットがロスする場合
（ｉ）ＴＣＰパケットの送信
次に、輻輳検出装置４０に到達後にＴＣＰパケットがロスする場合について説明する。図１４は、輻輳検出装置４０に到達後にＴＣＰパケットがロスする場合を示す説明図である。送信端末の端末Ａと受信端末のサーバＡとの間で送受信されるＴＣＰパケットについては、図１０と同様であるので説明を省略する。ただし、（ａ）の場合はＴＣＰパケットＰ１７、Ｐ１８は輻輳検出装置４０に到達する前にロスしているが、（ｂ）の場合はＴＣＰパケットＰ１７、Ｐ１８は輻輳検出装置４０に到達後にロスしている。
【００５３】
（ｉｉ）パケット情報の取得
パケット情報の取得方法は、前述の（ａ）と同様であるので説明を省略する。パケット情報ＤＢ４３はパケット情報取得部４２が取得したパケット情報を記憶する。図１５は、データを含むパケットについて、パケット情報ＤＢ４３に記憶されているパケット情報の一例である。図１５では、パケットＮｏごとに、送信元ＩＰアドレス、送信元ポート番号、送信先ＩＰアドレス、宛先ポート番号、シーケンス番号、パケットを取得した時刻及びパケット間隔が１レコードに記憶されている。パケット間隔の平均値及び標準偏差も前述の図１２と同様に記憶しており、ＡＣＫパケットについても前述の図１３と同様に記憶している。
【００５４】
（ｉｉｉ）パケットロスの検出
（ｂ）の場合、輻輳検出装置４０に到達後にＴＣＰパケットがロスしているため、パケットロス検出部４４は、ＴＣＰパケットが再送されていることに基づいてパケットロスを検出する。パケットロス検出部４４は、図１５のパケット情報ＤＢ４３のパケット情報について、パケットＮｏで特定されるレコードごとにシーケンス番号を参照する。パケット群Ｇ１において、シーケンス番号Ｓ１０〜Ｓ１９までは順番に並んでいることから、これらのデータからはパケットロスは検出できない。図１５をさらに参照すると、シーケンス番号Ｓ１７、Ｓ１８が再度記憶されている。これに基づいて、パケットロス検出部４４は、ＴＣＰパケットＰ１７、Ｐ１８が再送されており、パケットロスしていると判断する。
【００５５】
その他、（ａ）において前述したように、ＡＣＫ番号のカウント値が例えば“３”以上であることに基づいて、ＴＣＰパケットＰ１７、Ｐ１８がロスしていることを検出できる。また、ＴＣＰパケットＰ１７、Ｐ１８がシーケンス番号２０及びＳ２２の後に番号順とは異なる順序で記憶されていることに基づいて、ＴＣＰパケットＰ１７、Ｐ１８がパケットロスしていることを検出できる。
【００５６】
（ｉｖ）パケット群の抽出
パケット群抽出部４５は、パケットロス検出部４４からＴＣＰパケットＰ１７、Ｐ１８がロスしていることを取得し、ＴＣＰパケットＰ１７、Ｐ１８が含まれるパケット群を抽出する。ここで、（ｂ）の場合、輻輳検出装置４０に到達後にＴＣＰパケットＰ１７、Ｐ１８がロスするため、図１４、図１５に示すパケット群Ｇ１において、シーケンス番号Ｓ１０〜Ｓ１９までは順番に並んでいる。このため、（ｂ）の場合は、パケットロスが発生しているパケット群Ｇ１のデータに基づいてパケット群Ｇ１を抽出可能である。
【００５７】
具体的に、パケット群抽出部４５は、パケットロスが発生した箇所から時間的に遡って及び時間経過に沿って、それぞれパケット間隔と所定値とを順に比較する。これにより、パケットロスが発生した箇所の前後において、パケット間隔が所定値よりも大きい箇所をそれぞれ見つけ、パケットロスが発生したパケット群Ｇ１の始まり及び終わりを見つける。
【００５８】
パケット群Ｇ１の抽出について図１２、図１４及び図１５を用いて説明する。前述と同様に、図１２に基づいて、パケット間隔の平均値及び標準偏差を考慮した所定値を算出する。ロスしているＴＣＰパケットＰ１７、Ｐ１８のうち、例えばＴＣＰパケットＰ１７に着目する。パケット群抽出部４５は、ＴＣＰパケットＰ１７の前後において、パケット間隔が所定値よりも大きい箇所を見つける。ＴＣＰパケットＰ１０とＴＣＰパケットＰ９とのパケット間隔Δｔ１０が１０．０ｍｓであり、所定値の１．５９２ｍｓより大きい。また、ＴＣＰパケットＰ１９とＴＣＰパケットＰ２０とのパケット間隔Δｔ２０が７．０ｍｓであり、所定値の１．５９２ｍｓより大きい。以上より、ＴＣＰパケットＰ１０からＰ１９により構成されるパケット群Ｇ１を抽出することができる。
【００５９】
なお、（ｂ）の場合であっても（ａ）と同様に、パケットロスの発生しているパケット群のパケット数を、パケットロスの発生していないパケット群のパケット数から算出しても良い。
（４）輻輳の判定方法
次に、輻輳判定部４６が行う輻輳の判定方法について説明する。
【００６０】
基本的には、パケットロスの発生箇所が、パケット群の所定箇所よりも時間的に後方に位置する場合、輻輳が発生していると判定する。ここで、所定箇所とは、パケット群において時間的に中央部分から後半部分までのいずれかの位置であり得る。所定箇所は、輻輳判定の精度に応じて前述の範囲で適宜設定可能である。輻輳はパケット群の後方で発生し易く、それに伴いパケット群の後方でパケットロスが生じやすい。輻輳検出方法では、このような傾向に基づいて輻輳が発生しているか否かを判定するため、輻輳をより正確に検出し誤検出を抑制することができる。
【００６１】
輻輳の判定方法の具体例として、前述のＴＣＰパケットのパケット群Ｇ１を採りあげて、以下の３つの方法を説明する。なお、輻輳の判定方法は様々考えられるため、輻輳検出装置４０は、システムが求める輻輳判定の精度やネットワークの特性等を考慮し、選択した１の輻輳判定に基づいて輻輳が発生しているか否かを判定する。また、判定結果のぶれをなくすため、全ての輻輳判定は選択した１つの判定方法で行うのが良い。
【００６２】
（４−１）判定方法１
判定方法１では、パケット群の所定箇所よりも時間的に後方でのパケットロス数が、前記所定箇所よりも時間的に前方でのパケットロス数より大きいことに基づいて、輻輳が発生していると判定する。
図１６は判定方法１を説明するための説明図である。図１６に示すように、前述のＴＣＰパケットの例では、一連のパケット群Ｇ１はＴＣＰパケットＰ１０〜Ｐ１９で構成され、ＴＣＰパケットＰ１７、Ｐ１８がロスしている。ここで、所定箇所を、例えばパケット群Ｇ１のパケット数を半分に分ける箇所とする。図１６の場合、パケット群Ｇ１は、所定箇所の前後で、前半のＴＣＰパケットＰ１０〜Ｐ１４と、後半のＴＣＰパケットＰ１５〜Ｐ１９との２つに分かれる。次に、前半のロス数“０”と後半のロス数“２”とを比較する。後半のロス数が前半のロス数より大きいため、パケット群の後方でパケットロスが発生しており、輻輳が発生していると判定する。
【００６３】
前半のロス率と後半のロス率とを比較し、後半のロス率が前半のロス率より大きい場合は輻輳が発生していると判定しても良い。例えば、全体のパケット数に対する後半及び前半のパケットロス数からそれぞれ前半及び後半のパケットロス率を算出して比較する。
（４−２）判定方法２
図１７は判定方法２を説明するための説明図である。判定方法２では、まず、パケット群の所定箇所よりも時間的に前方でのパケットロス率及びパケット数を用いて、ロス率の母平均のＢ%信頼区間を統計的に推定し、前記推定した信頼区間の上限値を閾値Ａとして求める。パケット群の所定箇所よりも時間的に後方でのパケットロス率が閾値Ａよりも大きい場合、輻輳が発生していると判定する。
【００６４】
この方法によれば、輻輳が発生していると判断するための閾値Ａは、前方でのパケットロス率及びパケット数から推定する。
ここで、Ｂは例えばＢ＝９５であり、図１７に示すようにいわゆる信頼区間を定義する値である。この信頼区間の上限値が閾値Ａとなり、閾値Ａは、下記式（２）又は（３）により表される。
【数１】
0004924503.tif 000002
ここで、Ｌｆは前方のパケットロス率である。Ｎはパケット群において所定箇所よりも前方でのパケット数である。
前述のＴＣＰパケットの例では、一連のパケット群Ｇ１において、所定箇所を、例えばパケット群Ｇ１のパケット数を半分に分ける箇所とする。ＴＣＰパケットＰ１７、Ｐ１８のみがロスしているので、前半のパケットロス率Ｌｆは０％であり、後半のパケットロス率は４０％である。Ｌｆ＝０、Ｎ＝５を前記式（３）に導入し、閾値Ａ＝５４．９を得る。後半のパケットロス率４０％は閾値Ａより小さいので、輻輳は発生していないと判定される。
【００６５】
逆に、例えば一連のパケット群Ｇ１において、前半のＴＣＰパケットＰ１１がさらにロスしているとする。この場合、前半のパケットロス率Ｌｆは２０％であり、前記式（２）から閾値Ａ＝３６．３を得る。後半のパケットロス率４０％は閾値Ａより大きいので、輻輳が発生していると判定される。
（４−３）判定方法３
図１８、図１９は判定方法３を説明するための説明図である。図１８に示すように、一連のパケット群Ｇ１を構成するＴＣＰパケットＰ１０〜Ｐ１９について、パケット群Ｇ１の先頭から順に番号ＲＮｏ．１〜１０を付与する。ロスしたＴＣＰパケットＰ１７、Ｐ１８のＲＮｏ．８、ＲＮｏ．９に基づいて、ＲＮｏ．の値の平均値Mを“（８＋９）／２＝８．５”と算出する。
【００６６】
ここで、パケット群Ｇ１のパケット数は“１０”であり、パケットロス数は“２”である。これらに基づいて、パケット数が“１０”の仮想のパケット群において、２個のパケットがランダムにロスする場合について検討する。仮想のパケット群では、先頭のパケットから順にパケット位置番号１〜１０を付す。このとき、パケットロスした２個のパケットのパケット位置番号の平均値ついて、図１９に示す分布を求める。そして、上位所定％以内に入るときの平均値の閾値Wを求め、算出したＲＮｏ．の平均値Mと比較する。ＲＮｏ．の平均値Ｍが閾値Wよりも大きければ、パケット群の後方でロスが発生しており、輻輳が発生していると判定する。例えば、上位５％以内に入るときの平均値の閾値Ｗは８．５であり、算出したＲＮｏ．の平均値M“８．５”が閾値以上であることから、輻輳が発生していると判定する。
【００６７】
前述の判定方法は、下記式（４）により表すことができる。
実際のパケットロスの発生箇所がパケット群の最初から何番目のパケットであるかを示すパケット位置番号をＮとする。ここで、下記式（４）において、ｉ＝ｘ、ｘ−１・・・と順に変化させた場合、前記パケットロスの発生箇所における前記パケット位置番号Ｎの平均値Ｍが、に下記式（４）を最初に満たすｉの値である閾値Ｗよりも大きいことに基づいて輻輳と判定する。
【数２】
0004924503.tif 000003
Ｆ(ａ，ｂ，ｃ)は「１〜ａの数字からｂ個抜き出した合計値がｃという数字になる回数」をあらわし、
ｘは、パケット群のパケット数であり、
ｙは、パケット群におけるパケットロス数であり、
Ｚは、輻輳が発生していると判定するための所定の下限値である。
【００６８】
【数３】
0004924503.tif 000004
は、前記平均値Ｍがｉ〜ｘまでの値をとるパターン数であり、      
0004924503.tif 000005
は、パケット数ｘの前記仮想のパケット群においてｙ個のパケットがランダムにパケットロスする場合に、パケットロスが発生した前記パケット位置番号についての全パターン数でを示し、式（４）は全パターン数のうちで平均値Ｍがｉ以上を取る確率を示す。
ここで、Ｚは、例えば、５％を設定する。
【００６９】
なお、ｘ、ｙ、ｉは１以上の整数である。
（５）輻輳判定の結果
図２０は、輻輳判定部４６が行った輻輳判定の結果の一例であり、輻輳判定の結果をパケット群毎に示している。（ａ）は輻輳検出装置４０に到達する前にＴＣＰパケットがロスする場合の結果である。つまり、送信端末からサーバにＴＣＰパケットが送信されている場合の輻輳判定であり、送信元ＩＰアドレス毎に輻輳判定の結果が集計されている。一方、（ｂ）は輻輳検出装置４０に到達後にＴＣＰパケットがロスする場合の結果である。つまり、サーバから受信端末にＴＣＰパケットが送信されている場合の輻輳判定であり、送信先ＩＰアドレス毎に輻輳判定の結果が集計されている。具体的に、図２０では、パケットロスが発生したパケット群のＮｏ、そのパケット群での連送数、パケットのロス数、ロスパケットのシーケンス番号及び輻輳判定を、送信元ＩＰアドレス又は送信先ＩＰアドレスで集計している。これにより、端末ごとの輻輳状況を判断することができる。なお、ＲＴＰパケット及びＩＰパケットについては、輻輳検出装置４０に到達する前のパケットロスを検出するため、送信元ＩＰアドレス毎に輻輳判定の結果を集計する。
【００７０】
さらに、輻輳判定部４６は、後方でのロス数及び全ロス数を、パケット群を超えて送受信された全てのパケットについて集計し、後方でのロス数の全ロス数に対する割合から輻輳を判断するようにしても良い。図２１は、輻輳判定の集計結果の一例である。図２１では、当該送信端末から送信されたパケットの全取得数、全取得数のうちの全ロス数、後方でのロス数及び輻輳判定を、各ＩＰアドレスで特定される送信端末ごとに集計している。後方でのロスとは、ロスの発生位置がパケット群の所定位置よりも後方であるところの数である。このように、送信元ＩＰアドレスごとに輻輳判定の結果を集計し、アドレスの階層毎に輻輳の有無を解析する。図２１の集計結果から、アドレスのネットワーク部分が１０．１０．１０であるサブネットにおいて、通信を行っている３つの端末で輻輳が発生しており、輻輳の影響を受けていることが分かる。一方、アドレスのネットワーク部分が２０．２０．２０であるサブネットでは輻輳の影響が無いことが分かる。よって、ネットワーク部分が１０．１０．１０であるサブネットのルータにアクセスが集中して輻輳が発生していると特定できる。輻輳検出装置４０は所定の端末等に輻輳の発生箇所をメール等で通知する。通知を受けた管理者は、対応が必要なルータのＭＩＢ確認を行ったり、回線増強などの適切な処置を行うことができる。なお、各端末のアドレス単位でしか輻輳が発生していない場合には、輻輳の発生箇所はルータではなく各端末であると特定することができる。
【００７１】
なお、パケットの送信数が少ない端末の場合には、確率的にパケットロスが発生せず輻輳判定を行うことができない。よって、輻輳の発生箇所の特定を行う際には、少なくとも一定の計測期間中（例えば１分）に所定数以上のパケット数を送信している送信端末のみに着目する。例えば、パケットのロス率が１％で３００パケットの送信を行う場合、９５％以上の確率で１個のパケットロスが発生するので、３００パケット以上の送信端末にのみ着目する。
【００７２】
また、サブネット内で所定数以上のパケットを送信している送信端末のうち、例えば７割以上など所定の割合以上で輻輳が発生している場合には、そのサブネットのルータで輻輳が発生していると特定する。逆に、輻輳が発生している端末が所定の割合より少ない場合には、各端末で障害が発生していると特定する。
（６）処理の流れ
次に、輻輳検出装置４０での処理の流れの一例について、図２２〜図２５を用いて説明する。
【００７３】
図２２は、輻輳検出装置４０での処理全体の流れを示すフローチャートの一例である。
サーバＡと端末間とでパケットの送受信が行われると、サーバＡの手前に配置された輻輳検出装置４０は以下の処理を行う。
ステップＳ１：パケット取得部４１は、送受信されるパケットをネットワーク上から取得する。パケット情報取得部４２は、各ＩＰパケットを取得した時刻を検出する。
【００７４】
ステップＳ２：パケット情報取得部４２は、各パケットのイーサヘッダに含まれる「タイプ」フィールド値、ＩＰヘッダの「プロトコル」フィールド値及びデータの先頭２ビットなどの値を参考にしてパケットの種類を特定する。
ステップＳ３〜Ｓ５：ＴＣＰパケットである場合はステップＳ８に進み、ＲＴＰパケットである場合はステップＳ７に進み、ＴＣＰパケットでもＲＴＰパケットでも無いが、ＩＰパケットである場合はステップＳ６に進む。ＴＣＰパケットでもＲＴＰパケットでもＩＰパケットでもない場合は、ステップＳ１に戻る。
【００７５】
ステップＳ６〜Ｓ８：ＴＣＰパケットの場合にはＴＣＰパケット用の輻輳判定処理が行われ（Ｓ８）、ＲＴＰパケットの場合にはＲＴＰパケット用の輻輳判定処理が行われる（Ｓ７）。ＴＣＰパケットでもＲＴＰパケットでも無いが、ＩＰパケットである場合にＩＰパケット用の輻輳判定処理が行われる（Ｓ６）。
図２３は、ＩＰパケット用の輻輳判定処理の流れを示すフローチャートの一例である。
【００７６】
ステップＳ１１：パケット情報取得部４２は、ＩＰヘッダから必要な情報を取得する。
ステップＳ１２、Ｓ１３：パケット情報ＤＢ４３は、フラグ及びフラグメントオフセットを見て、ＩＰパケットがフラグメント化されているかを検出する（Ｓ１２）。ＩＰパケットがフラグメント化されていれば、各ＩＰパケットを取得した時刻、送信元ＩＰアドレス、識別子、フラグ、フラグメントオフセット、パケット長などのパケット情報を記憶する（Ｓ１３）。
【００７７】
ステップＳ１４：パケット群抽出部４５は、同じ識別子のＩＰパケットにおいて、フラグメントオフセットが“０”のＩＰパケットからフラグが“no more fragment”のＩＰパケットまでを一連のパケット群として抽出する。パケット群の最後までＩＰパケットを取得していれば、ステップＳ１５に進む。そうでなければ、ステップＳ１１に戻り次のパケットのＩＰヘッダを取得する。パケット群の最後か否かは、ＩＰパケットのフラグが“no more fragment”であること、パケット長が最大バイト長に満たないこと、前のＩＰパケットを取得してから所定時間経過しても次のＩＰパケットを取得していないことなどにより判断できる。
【００７８】
ステップＳ１５：パケットロス検出部４４は、パケット情報ＤＢ４３内を参照し、前のＩＰパケットの合計値（offset(k)＋length(k)）と後のＩＰパケットのフラグメントオフセット（offset(k+1)）と、を比較しパケットロスの有無を判定する。
ステップＳ１６：抽出したパケット群内でパケットロスがあればステップＳ１７に進み、パケットロスが無ければステップＳ１１に戻る。
【００７９】
ステップＳ１７：輻輳判定部４６はいずれかの判定方法に基づいて輻輳判定を行い、輻輳が発生している場所を特定する。
図２４は、ＲＴＰパケット用の輻輳判定処理の流れを示すフローチャートの一例である。
ステップＳ２１：パケット情報取得部４２は、例えば、送信元ＩＰアドレス、パケット長、発信元ポート番号、タイムスタンプ及びシーケンス番号をヘッダから取得する。
【００８０】
ステップＳ２２：パケット情報ＤＢ４３は、各ＲＴＰパケットを取得した時刻及びヘッダから抽出した情報などのパケット情報を記憶する。
ステップＳ２３：パケット群抽出部４５は、同じタイムスタンプを有していること、シーケンス番号が連続していることなどに基づいてパケット群を抽出する。パケット群の最後までＲＴＰパケットを取得していれば、ステップＳ２４に進む。そうでなければ、ステップＳ２１に戻り次のパケットのヘッダを取得する。パケット群の最後か否かは、異なるタイムスタンプのパケットを取得したこと等により判断できる。
【００８１】
ステップＳ２４：パケットロス検出部４４は、パケット情報ＤＢ４３内を参照し、シーケンス番号の抜けの有無に基づいてパケットロスを検出する。
ステップＳ２５、Ｓ２６：パケットロスがあればステップＳ２６に進み、輻輳判定部４６が輻輳判定を行う。パケットロスが無ければステップＳ２１に戻る。
図２５は、ＴＣＰパケット用の輻輳判定処理の流れを示すフローチャートの一例である。
【００８２】
ステップＳ３１、Ｓ３２：パケット情報取得部４２は、データを含むＴＣＰパケットから、例えば送信元及び宛先ＩＰアドレス、送信元及び宛先ポート番号、シーケンス番号を取得する。また、パケット情報取得部４２は、ＡＣＫのＴＣＰパケットから、送信元及び宛先ＩＰアドレス、送信元及び宛先ポート番号、ＡＣＫ番号を取得し、ＡＣＫ番号の取得回数をカウントする（Ｓ３１）。パケット情報ＤＢ４３は、各ＴＣＰパケットを取得した時刻及びヘッダから抽出した情報などのパケット情報を記憶する（Ｓ３２）。
【００８３】
ステップＳ３３：パケットロス検出部４４は、パケット情報ＤＢ４３内を参照し、シーケンス番号の抜けの有無を検出する。シーケンス番号の抜けがあればパケットロスがあると判断してステップＳ３６に進み、抜けが無ければステップＳ３４進む。この処理により、輻輳検出装置４０に到達前にＴＣＰパケットがロスしたか否かを検出する。
ステップＳ３４：パケットロス検出部４４は、シーケンス番号の抜けはないものの、再送処理が行われていないかを判定する。再送処理が行われたか否かは、同じシーケンス番号が重複して記憶されていること、ＡＣＫ番号のカウント値が所定値以上であることに基づいて判定する。この処理により、輻輳検出装置４０に到達後にＴＣＰパケットがロスした場合でも、パケットロスを検出することができる。再送処理が行われていればパケットロスがあると判断してステップＳ３６に進み、再送処理が行われていなければステップＳ３５に進む。
【００８４】
ステップＳ３５：パケットロスが無いため、パケット情報取得部４２は、ＴＣＰパケットを取得した時刻からパケット間隔を算出するともに、パケット間隔の平均値及び標準偏差を算出する。
ステップＳ３６、Ｓ３７：パケット群の抽出が完了していない場合はステップＳ３７に進み、パケットロスの発生箇所に基づいてパケット群を抽出する。一方、すでにパケット群の抽出が完了している場合にはステップＳ３８に進む。
【００８５】
ステップＳ３３においてシーケンス番号の抜けがあった場合は、輻輳検出装置４０に到達前にＴＣＰパケットがロスしている。よって、まず、パケットロスの発生したパケット群Ｇ１のパケット数を、パケット群Ｇ１の前のパケット群Ｇ０のパケット数に基づいて取得する。そして、取得したパケット数に基づいてパケット群Ｇ１のパケット構成を取得する。なお、パケット群Ｇ０ではパケットロスが発生していないことが好ましい。
【００８６】
ステップＳ３４において再送処理によりパケットロスが検出された場合は、輻輳検出装置４０に到達後にＴＣＰパケットがロスしている。よって、パケットロスの発生したパケット群Ｇ１でのパケット間隔に基づいてパケット群Ｇ１のパケット構成を取得する。
ステップＳ３８：パケット群の最後までＴＣＰパケットを取得していれば、ステップＳ３９に進む。そうでなければ、ステップＳ３１に戻り次のＴＣＰパケットのヘッダを取得する。
【００８７】
ステップＳ３９、Ｓ４０：パケット群内でパケットロスがあればステップＳ４０に進み、輻輳判定部４６が輻輳判定を行う。パケットロスが無ければステップＳ３１に戻る。
上記本実施形態によれば、ネットワーク上に送出されているパケットを検出することで輻輳判定を行うため、輻輳を検出するための計測パケットを別途送出する必要が無い。よって、計測パケットの送出によるネットワークの混雑などネットワークに負荷を与えること無く輻輳判定を行うことができる。
【００８８】
ここで、輻輳とは通信量が増加してネットワークが混雑する状態を言い、輻輳が発生した場合には輻輳を回避するためにパケットが廃棄される。パケットが送信端末から受信端末に一連で送出される場合、その一連のパケット群の後方で輻輳が発生し易く、またその後方のパケットが廃棄され易い。上記輻輳検出方法では、輻輳が発生しているか否かを判定するにあたって、パケット群におけるパケットロスの発生箇所を参照するため、輻輳をより精度良く検出し誤検出を抑制することができる。
【００８９】
一連のパケット群が送信される区間の長さは、例えばＴＣＰの場合はＲＴＴより短く設定される。輻輳検出方法では、このようなパケット群が連送される区間を用いて輻輳が発生しているか否かの判定を行うので、輻輳判定をリアルタイムに行うことができる。
なお、パケット群の抽出及びパケットロスの検出は順不同である。つまり、取得したパケットに基づいて前記パケット群を抽出し、その後、前記パケット群におけるパケットロスの発生箇所を特定しても良い。あるいは、まずパケットロスの発生箇所を特定し、その後、前記パケットロスの発生箇所を含む前記パケット群を、取得したパケットに基づいて抽出しても良い。
【００９０】
＜その他の実施形態＞
（ａ）変形例１
上記のＩＰパケット及びＲＴＰパケット用の輻輳判定処理では、図２３及び図２４に示すように、一連のパケット群を抽出した後に、そのパケット群におけるパケットロスの検出を行っている。しかし、本変形例では、パケットロスを検出した後、パケットロスの発生箇所を含むパケット群のみを抽出するようにしても良い。
【００９１】
例えば、上記実施形態のＩＰパケットの例では、パケットロス検出部４４は、図６に示すパケット情報ＤＢ４３のパケット情報に基づいて、ＩＰパケットＰ７及びＰ１０の間に２パケットのロスが発生していることを検出する。本変形例１では、パケット群抽出部４５は、検出結果をパケットロス検出部４４から受け取り、ロスしているパケットと同じ識別子を有するＩＰパケットを、一連のパケット群として抽出する。例えば、ＩＰパケットＰ７及びＰ１０は、ロスしているパケットの前後のパケットであり、図６によると識別子が“１００”である。また、ＩＰパケットＰ１〜Ｐ６の識別子も“１００”であり、ＩＰパケットＰ１のフラグメントオフセットが“０”であり、ＩＰパケットＰ１０のフラグが“no more fragment”である。パケット群抽出部４５は、これらのことから、ＩＰパケットＰ１〜Ｐ１０が一連で送信されているとみなし、ＩＰパケットＰ１〜Ｐ１０をパケット群Ｇとして抽出する。
【００９２】
このように、パケットロスの発生しているパケット群のみを抽出することで、パケット群の抽出処理を減らすことができ、輻輳検出装置での処理量を少なくすることができる。
上記実施形態のＲＴＰパケットの例でも同様の処理を適用することができる。パケット群抽出部４５は、パケットロス検出部４４によるパケットロスの検出結果と、図８に示すパケット情報ＤＢ４３のパケット情報と、に基づいて、ロスしているパケットと同じタイムスタンプを有するＲＴＰパケットを、一連のパケット群として抽出する。例えば、ＲＴＰパケットＰ７及びＰ１０は、ロスしているパケットの前後のパケットであり、図８によると、タイムスタンプが“１００”である。ＲＴＰパケットＰ１〜Ｐ６のタイムスタンプも“１００”である。一方、ＲＴＰパケットＰ０のタイムスタンプは“５０”であるが、ＲＴＰパケットＰ０、Ｐ１のシーケンス番号がＳ０、Ｓ１と連続しており抜けが無い。また、ＲＴＰパケットＰ１１からはタイムスタンプが“２００”に変わるが、ＲＴＰパケットＰ１０、Ｐ１１のシーケンス番号がＳ１０、Ｓ１１と連続しており抜けが無い。これらのことから、ＲＴＰパケットＰ１〜Ｐ１０が一連で送信されているとみなし、ＲＴＰパケットＰ１〜Ｐ１０をパケット群Ｇとして抽出する。
【００９３】
逆に、上記のＴＣＰパケット用の輻輳判定処理では、図２５に示すように、パケットロスを検出した後に、パケットロスが発生しているパケット群を抽出している。しかし、パケット群をまず抽出した後、パケット群内のパケットロスを検出するようにしても良い。つまり、パケットロスの有無に関わらず、パケット間隔を取得する度に所定値と比較し、所定値より大きい場合にパケット群の切れ目と判断してパケット群を常に抽出する。そして、１のパケット群を抽出するたびに、そのパケット群でのパケットロスを検出する。
（ｂ）変形例２
上記実施形態では、パケット群抽出部４５は、パケットロスが発生していない場合における、パケット群間でのパケット数の変化ルールのみを保持している。よって、隣接するパケット群のうち前のパケット群でパケットロスが発生している場合は、次のパケット群で何個のパケットが送信されるのかが不明である。このようにパケット群を抽出することができない場合は、パケットロスの発生位置を正確に特定することができず輻輳か否かを正確に判定できないので、輻輳判定を行わないようにしても良い。
（ｃ）変形例３
上記実施形態においてＴＣＰパケットからパケット群を抽出する場合、パケット群抽出部４５は、隣接するパケット群間でのパケット数の変化ルールを予め保持している。しかし、パケット群抽出部４５は、パケット情報ＤＢ４３のパケット情報を参照して、送信端末が決定しているパケット群間でのパケット数の変化ルールを取得しても良い。例えば、前のパケット群でパケットロスが発生していない場合、次のパケット群では前のパケット群よりも何パケット増加させているかを検出する。また、前のパケット群でパケットロスが発生している場合、次のパケット群では前のパケット群よりも何パケット減少させているかを検出する。パケット群抽出部４５は、この変化ルールに基づいてパケット群を抽出する。
（ｄ）変形例４
上記実施形態ではサーバＡとは別に輻輳検出装置４０を設けているが、輻輳検出装置４０をサーバＡに組み込むことも可能である。また、各端末及び中継装置などに輻輳検出装置４０を組み込むことも可能である。
（ｅ）変形例５
前述した輻輳検出方法を実行するシステム、前記輻輳検出方法をコンピュータに実行させるコンピュータプログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体は、本発明の範囲に含まれる。ここで、コンピュータ読み取り可能な記録媒体としては、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ（Compact Disc−Read Only Memory）、ＭＯ（Magneto Optical disk）、ＤＶＤ（Digital Video Disc）、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ（ＤＶＤ−Random Access Memory）、ＢＤ（Blue-ray Disc）、半導体メモリを挙げることができる。前記コンピュータプログラムは、前記記録媒体に記録されたものに限られず、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送されるものであってもよい。
【００９４】
以上の実施形態及及びその他の実施形態に関し、更に以下の付記を開示する。
＜付記＞
（付記１）
ネットワーク上のパケットを取得するパケット取得ステップと、
取得したパケットに基づいて、一連のパケットにより構成されるパケット群を抽出するパケット群抽出ステップと、
前記パケット群におけるパケットロスを検出し、前記パケット群における前記パケットロスの発生箇所を特定するパケットロス検出ステップと、
前記パケット群における前記パケットロスの発生箇所に基づいて、輻輳が発生しているか否かを判定する輻輳判定ステップと、
を含む輻輳検出方法。
【００９５】
ネットワーク上に送出されているパケットを検出することで輻輳判定を行うため、輻輳を検出するための計測パケットを別途送出する必要が無い。よって、計測パケットの送出によるネットワークの混雑などネットワークに負荷を与えること無く輻輳判定を行うことができる。
ここで、輻輳とは通信量が増加してネットワークが混雑する状態を言い、輻輳が発生した場合には輻輳を回避するためにパケットが廃棄される。パケットが送信端末から受信端末に一連で送出される場合、その一連のパケット群の後方で輻輳が発生し易く、またその後方のパケットが廃棄され易い。上記輻輳検出方法では、輻輳が発生しているか否かを判定するにあたって、パケット群におけるパケットロスの発生箇所を参照するため、輻輳をより精度良く検出し誤検出を抑制することができる。
【００９６】
一連のパケット群が送信される区間の長さは、例えばＴＣＰ（Transmission Control Protocol）の場合はＲＴＴ（Round Trip Time）より短く設定される。輻輳検出方法では、このようなパケット群が連送される区間を用いて輻輳が発生しているか否かの判定を行うので、輻輳判定をリアルタイムに行うことができる。
なお、パケット群の抽出及びパケットロスの検出は順不同である。つまり、パケット群を抽出した後、パケット群内のパケットロスを検出しても良い。あるいは、まずパケットロスを検出した後、パケットロスを含むパケット群を抽出しても良い。
【００９７】
（付記２）
前記輻輳判定ステップでは、前記パケットロスの発生箇所が、前記パケット群の所定箇所よりも時間的に後方に位置する場合、輻輳が発生していると判定し、
前記所定箇所は、前記パケット群において時間的に中央部分から後半部分までのいずれかの位置である、付記１に記載の輻輳検出方法。
【００９８】
輻輳はパケット群の後方で発生し易く、それに伴いパケット群の後方でパケットロスが生じやすい。輻輳検出方法では、このような傾向に基づいて輻輳が発生しているか否かを判定するため、輻輳をより正確に検出し誤検出を抑制することができる。
（付記３）
前記輻輳判定ステップでは、前記パケット群の所定箇所よりも時間的に後方でのパケットロス数が、前記所定箇所よりも時間的に前方でのパケットロス数より大きいことに基づいて、輻輳が発生していると判定する、付記２に記載の輻輳検出方法。
【００９９】
パケット群の所定箇所から前半及び後半での各パケットロス数を検出し比較する。後半のパケットロス数が前半のパケットロス数よりも多い場合には、パケット群の後方でパケットロスが発生しており、輻輳が発生していると判断できる。なお、前半及び後半のパケットロス率を比較しても良い。例えば、全体のパケットロス数に対する前半及び後半のパケットロス数からそれぞれ前半及び後半のパケットロス率を算出して比較する。
【０１００】
（付記４）
前記輻輳判定ステップでは、
前記パケット群の所定箇所よりも時間的に前方でのパケットロス率及びパケット数を用いて、ロス率の母平均の信頼区間を統計的に推定し、前記推定した信頼区間の上限値を閾値Ａとして設定し、前記パケット群の所定箇所よりも時間的に後方でのパケットロス率が前記閾値Ａよりも大きい場合に、輻輳が発生していると判定する、付記２に記載の輻輳検出方法。
【０１０１】
この方法によれば、輻輳が発生していると判断するための閾値Ａは、前方でのパケットロス率から推定する。よって、輻輳の傾向を判断するためにパケットロスの発生箇所を統計的に集計し分析するなど多くの時間を要することが無い。そのため、輻輳が発生しているか否かを容易かつ迅速に判定することができ、輻輳判定をリアルタイムに行うことができる。
【０１０２】
（付記５）
前記輻輳判定ステップでは、前記閾値Ａを下記式（２）又は（３）に基づいて算出する、付記４に記載の輻輳検出方法
【数４】
0004924503.tif 000006
ここで、Ｌｆは前記前方のパケットロス率であり、Ｎは前記パケット群において所定箇所よりも前方でのパケット数である。
（付記６）
前記輻輳判定ステップでは、
前記パケット群のうちの最初から何番目のパケットであるかを示すパケット位置番号Ｎで表したときに、前記パケットロスの発生箇所における前記パケット位置番号Ｎの平均値Ｍが、ｉ＝ｘ、ｘ−１・・・と順に変化させたときに下記式（４）を最初に満たすｉの値である閾値Ｗよりも大きいことに基づいて輻輳と判定する、付記１に記載の輻輳検出方法
【数５】
0004924503.tif 000007
Ｆ(ａ，ｂ，ｃ)は「１〜ａの数字からｂ個抜き出した合計値がｃという数字になる回数」をあらわし、
ｘはパケット群のパケット数であり、
ｙは前記パケット群におけるパケットロス数であり、
Ｚは、輻輳が発生していると判定するための所定の下限値である
（付記７）
前記パケット群抽出ステップでは、元データが複数のパケットに分割されていることを検出すると、前記複数のパケットを前記パケット群として抽出する、付記１に記載の輻輳検出方法。
【０１０３】
元データがパケットの最大バイト数を超える場合は、複数のパケットに分割されて送信される。この場合、ＩＰでは、複数のＩＰパケットが同一の元データを構成することを示す場合、各ＩＰパケットには同一の識別子が付され、フラグ及びフラグメントオフセットが記述される。また、ＲＴＰでは、複数のＲＴＰパケットが同一の元データを構成することを示す場合、各ＲＴＰパケットには同一のタイムスタンプが付され、順番にシーケンス番号が記述される。よって、パケット群抽出ステップでは、パケットがＩＰパケットである場合には、同一の識別子が付された複数のＩＰパケットをパケット群として抽出する。また、パケットがＲＴＰパケットである場合には、同一のタイムスタンプが付されている複数のＲＴＰパケットをパケット群として抽出する。このようにして、元データが複数のパケットに分割されて連送されることに基づいてパケット群を抽出することができる。
【０１０４】
（付記８）
前記パケット群抽出ステップでは、各パケットを取得した時間間隔であるパケット間隔と所定値とを比較し、比較結果に基づいて前記パケット群を抽出する、付記１に記載の輻輳検出方法。
例えば、パケット間隔が所定値よりも長い場合、パケット群の切れ目と判断することにより、各パケット群を抽出することができる。
【０１０５】
（付記９）
前記所定値は、パケット間隔の平均値に基づいて決定された値である、付記８に記載の輻輳検出方法。
例えば、所定値はパケット間隔の平均値の２倍である。パケット間隔が平均値の２倍より小さい場合は、パケットは一連で送信されていると判断する。一方、パケット間隔が平均値の２倍より大きい場合は、パケットが一連で送信されておらず、パケット群の切れ目であると判断する。これらにより、一連のパケット群を抽出することができる。
【０１０６】
（付記１０）
前記所定値は、前記パケット間隔の平均値及び前記パケット間隔の標準偏差に基づいて決定された値である、付記９に記載の輻輳検出方法。
パケット間隔は一定ではなく分布を有するため、所定値をこの分布を考慮した値とする。所定値とは、例えば、（パケット間隔の平均値）＋１．９６×（パケット間隔の標準偏差）である。パケット間隔が、その分布を考慮した所定値より小さい場合は、パケットが一連で送信されていると判断する。一方、パケット間隔が所定値より大きい場合はパケット群の切れ目と判断する。これらにより、一連のパケット群を抽出することができる。
【０１０７】
（付記１１）
前記パケット群抽出ステップでは、
前記パケット群のパケット数の変化について、変化ルールを記憶し、
パケットロスが発生しているパケット群のパケット数を、パケットロスが発生していないパケット群のパケット数と前記変化ルールとに基づいて決定し、
前記決定したパケット数に基づいて、パケットロスが発生しているパケット群を抽出する、付記１に記載の輻輳検出方法。
【０１０８】
パケットロスが発生しているパケット群では、パケットロスによりパケットの連送が途切れている。しかし、パケット群におけるパケットロスの発生箇所に基づいて輻輳判定を行うためには、パケットロスを含む一連のパケット群全体を抽出する必要がある。パケットロスが発生していないパケット群は、例えばパケット間隔と所定値との比較によりパケット群の切れ目を探すことで容易に抽出できる。そこで、パケットロスが発生しているパケット群のパケット数を、パケットロスが発生していないパケット群のパケット数と所定の変化ルールとに基づいて推測することで、パケットロスが発生しているパケット群を抽出する。例えばＴＣＰではＲＴＴ間隔ごとに所定数のパケットが一連で送信されている。パケットロスの発生が無くパケットが一連で送信できた場合には、次のＲＴＴでは送信するパケット数を例えば１個増加させる。パケットロスが発生していないパケット群のパケット数が４パケットである場合、次のパケット群で送信されるパケット数は５パケットとなる。上述のようにしてパケットロスが発生しているパケット群を容易に抽出することができる。
【０１０９】
（付記１２）
前記輻輳判定ステップでは、前記パケットの送信元端末のアドレスごとに輻輳判定の結果を集計し、前記アドレスの階層毎に輻輳の有無を解析することで、前記ネットワーク上での輻輳の発生箇所を特定する、付記１に記載の輻輳検出方法。
例えば、あるサブネット単位で輻輳が発生している場合には、そのサブネットのルータにアクセスが集中して輻輳が発生していると特定できる。逆に、各端末のアドレス単位でしか輻輳が発生していない場合には、輻輳の発生箇所はルータではなく各端末であると特定することができる。このように輻輳の発生箇所を特定することで、対応が必要な場所に回線増強などの適切な処置を行うことができる。
【０１１０】
（付記１３）
ネットワーク上のパケットを取得するパケット取得手段と、
取得したパケットに基づいて、一連のパケットにより構成されるパケット群を抽出するパケット群抽出手段と、
前記パケット群におけるパケットロスを検出し、前記パケット群における前記パケットロスの発生箇所を特定するパケットロス検出手段と、
前記パケット群における前記パケットロスの発生箇所に基づいて、輻輳が発生しているか否かを判定する輻輳判定手段と、
を含む輻輳検出装置。
【０１１１】
（付記１４）
ネットワーク上のパケットを取得するパケット取得ステップと、
取得したパケットに基づいて、一連のパケットにより構成されるパケット群を抽出するパケット群抽出ステップと、
前記パケット群におけるパケットロスを検出し、前記パケット群における前記パケットロスの発生箇所を特定するパケットロス検出ステップと、
前記パケット群における前記パケットロスの発生箇所に基づいて、輻輳が発生しているか否かを判定する輻輳判定ステップと、
を含む輻輳検出方法をコンピュータに実行させるための輻輳検出プログラム。
【図面の簡単な説明】
【０１１２】
【図１】本発明の実施形態例に係る輻輳検出装置を含むネットワーク構成図の一例。
【図２】輻輳検出装置の機能構成を示すブロック図。
【図３】元データが分割されて複数のＩＰパケットが形成される様子を示す説明図。
【図４】複数のＩＰパケットが一連で送信される様子を示す説明図。
【図５】ＩＰヘッダの構造図。
【図６】パケット情報ＤＢ４３に記憶されているパケット情報の一例。
【図７】（ａ）はＵＤＰヘッダの構造図。（ｂ）はＲＴＰヘッダの構造図。
【図８】パケット情報ＤＢ４３に記憶されているパケット情報の一例。
【図９】ＴＣＰヘッダの構造図。
【図１０】輻輳検出装置４０に到達する前にＴＣＰパケットがロスする場合を示す説明図。
【図１１】データを含むパケットについて、パケット情報ＤＢ４３に記憶されているパケット情報の一例。
【図１２】データを含むパケットについて、パケット情報ＤＢ４３に記憶されているパケット情報の一例。
【図１３】ＡＣＫパケットについて、パケット情報ＤＢ４３に記憶されているパケット情報の一例。
【図１４】輻輳検出装置４０に到達後にＴＣＰパケットがロスする場合を示す説明図。
【図１５】データを含むパケットについて、パケット情報ＤＢ４３に記憶されているパケット情報の一例。
【図１６】判定方法１を説明するための説明図。
【図１７】判定方法２を説明するための説明図。
【図１８】判定方法３を説明するための説明図。
【図１９】判定方法３を説明するための説明図。
【図２０】輻輳判定部４６が行った輻輳判定の結果の一例。
【図２１】輻輳判定の集計結果の一例。
【図２２】輻輳検出装置４０での処理全体の流れを示すフローチャートの一例。
【図２３】ＩＰパケット用の輻輳判定処理の流れを示すフローチャートの一例。
【図２４】ＲＴＰパケット用の輻輳判定処理の流れを示すフローチャートの一例。
【図２５】ＴＣＰパケット用の輻輳判定処理の流れを示すフローチャートの一例。
【符号の説明】
【０１１３】
４０：輻輳検出装置   
４１：パケット取得部 
４２：パケット情報取得部    
４３：パケット情報ＤＢ      
４４：パケットロス検出部    
４５：パケット群抽出部      
４６：輻輳判定部     
【図１】
0004924503.tif 000009
【図２】
0004924503.tif 000010
【図３】
0004924503.tif 000011
【図４】
0004924503.tif 000012
【図５】
0004924503.tif 000013
【図６】
0004924503.tif 000014
【図７】
0004924503.tif 000015
【図８】
0004924503.tif 000016
【図９】
0004924503.tif 000017
【図１０】
0004924503.tif 000018
【図１１】
0004924503.tif 000019
【図１２】
0004924503.tif 000020
【図１３】
0004924503.tif 000021
【図１４】
0004924503.tif 000022
【図１５】
0004924503.tif 000023
【図１６】
0004924503.tif 000024
【図１７】
0004924503.tif 000025
【図１８】
0004924503.tif 000026
【図１９】
0004924503.tif 000027
【図２０】
0004924503.tif 000028
【図２１】
0004924503.tif 000029
【図２２】
0004924503.tif 000030
【図２３】
0004924503.tif 000031
【図２４】
0004924503.tif 000032
【図２５】
0004924503.tif 000033