(57)【要約】【課題】  フロー管理に要するテーブルのサイズを軽減しつつ、当該リンクにおけるフロー全体の通信品質を適切に推定することが可能なＴＣＰフロー通信品質推定装置およびその推定方法ならびにそのためのプログラムを提供すること。【解決手段】  パケットヘッダ照合部３２は受信したパケットのパケットヘッダ情報をユーザフロー管理テーブル４０に登録されたユーザフロー情報と照合し、該テーブルに登録されている場合にフロー管理部３３にユーザフロー情報の更新を要請する。そうでない場合にサンプリング部３４でＮ個のパケットに対し１個のパケットを抽出してパケットヘッダ解析部３５に転送し、ＳＹＮフラグが立っておりかつテーブル４０に空きがあれば該パケットの到着時刻やパケットヘッダ情報を登録することを要請する。フロー管理手段は要請を実行し、フロー統計情報推定部３６はテーブル４０の情報を用いてＴＣＰフロー通信品質を推定する。【選択図】      図１
2006229701.tif 000002
【特許請求の範囲】
【請求項１】
通信網におけるあるリンクを経由するＴＣＰフローの通信品質を推定するＴＣＰフロー通信品質推定装置であって、
受信したフローのユーザフロー情報を登録するユーザフロー管理テーブルを管理するとともに、後述のパケットヘッダ照合手段およびパケットヘッダ解析手段からの要請を受け、該要請を実行するフロー管理手段と、
受信したパケットのパケットヘッダ情報を前記ユーザフロー管理テーブルに登録されたユーザフロー情報と照合し、受信したパケットが前記ユーザフロー管理テーブルに登録されているフローに属するものである場合に、前記ユーザフロー管理テーブルを管理しているフロー管理手段にユーザフロー情報の更新を要請するとともに、受信したパケットが前記ユーザフロー管理テーブルに登録されているフローに属するものでない場合に、該パケットを後述のサンプリング部に転送するパケットヘッダ照合手段と、
転送されてきたＮ個のパケットに対し１個のパケットを抽出してパケットヘッダ解析手段に転送するとともに、抽出されなかったパケットを次のノードに転送するサンプリング手段と、
転送されてきたパケットのパケットヘッダ情報を読み込んでＴＣＰの通信開始を表すＳＹＮフラグが立っておりかつ前記ユーザフロー管理テーブルに空きがあれば、該パケットの到着時刻および該パケットがどのユーザフローからのパケットかを定めるパケットヘッダ情報を前記ユーザフロー管理テーブルに新規エントリ登録することを前記フロー管理手段に要請するパケットヘッダ解析手段と、
前記ユーザフロー管理テーブルにエントリされたフローの情報を用いて、当該リンクを経由するフロー全体のＴＣＰフロー通信品質を推定するフロー統計情報推定手段と
を有することを特徴とするＴＣＰフロー通信品質推定装置。
【請求項２】
請求項１記載のＴＣＰフロー通信品質推定装置において、
前記ユーザフロー管理テーブルは、フロー毎に、フローiからのパケットが最初に到着した時刻T_first_i、パケットが最後に到着した時刻T_last_i、転送されたパケットバイト数の総数B_iを記憶するものであり、
前記パケットヘッダ解析手段からの要請は、当該パケットの属するユーザフローiをユーザフロー管理テーブルに新規エントリし、T_first_iを現在の時刻、T_last_iを現在の時刻、B_iを該パケットサイズに設定する要請であり、
前記パケットヘッダ照合手段からの要請は、当該パケットに対する前記T_last_iを現在の時刻に更新し、前記B_iをB_i+該パケットサイズに更新する要請であり、
前記フロー統計情報推定手段は、前記一定期間毎に、もしT_last_i=T_first_iならばフローiは該ユーザフロー管理テーブルのエントリから除外し、もしT_last_i>T_first_iならば該ユーザフロー管理テーブルにエントリされているフローiのフロー持続時間T_iをT_i=（T_last_i - T_first_i）と計算し、フローレートR_iをR_i=B_i／T_iと計算するとともに、R_i（i=１〜エントリされたフロー数）を用いてフローレートに関する分布を作成し、該分布を以って元のフロー全体のフローレート分布として推定するものである
ことを特徴とするＴＣＰフロー通信品質推定装置。
【請求項３】
請求項２記載のＴＣＰフロー通信品質推定装置において、
前記パケットヘッダ照合手段は、さらに、受信したパケットのパケットヘッダ情報を参照し、ＴＣＰ通信の終了を示すＦＩＮフラグあるいはＴＣＰ通信の中断を示すＲＳＴフラグが立っているか否かを判定し、到着したパケットが既にユーザフロー管理テーブルにエントリされているフローiからのパケットであり、かつ、前記ＦＩＮフラグあるいは前記ＲＳＴフラグが立っていたら、前記フロー管理手段に、前記T_last_iおよび前記B_iを更新することを要請するものであり、
前記フロー管理手段は、該パケットヘッダ照合手段からの該要請によりユーザフロー管理テーブルの前記T_last_iおよび前記B_iを更新するとともに、該フローiを削除するものであり、
前記フロー統計情報推定手段は、該ユーザフロー管理テーブルのT_last_iおよびB_iの更新に基づいてフローレートR_iを計算するものであることを特徴とするＴＣＰフロー通信品質推定装置。
【請求項４】
請求項１記載のＴＣＰフロー通信品質推定装置において、
前記ユーザフロー管理テーブルは、フロー毎に、フローiからのパケットが最初に到着した時刻T_first_i、パケットが最後に到着した時刻T_last_i、転送されたパケットバイト数の総数B_iを記憶するものであり、
前記パケットヘッダ解析手段からの要請は、当該パケットの属するユーザフローiをユーザフロー管理テーブルに新規エントリし、T_first_iを現在の時刻、T_last_iを現在の時刻、B_iを該パケットサイズに設定する要請であり、
前記パケットヘッダ照合手段からの要請は、当該パケットに対する前記T_last_iを現在の時刻に更新し、前記B_iをB_i+該パケットサイズに更新する要請であり、
前記フロー統計情報推定手段は、前記一定期間毎に、フローiのフローサイズS_iをB_iとし、B_i（i=１〜エントリされたフロー数）を用いてフローサイズBに関する分布を作成し、その分布を以って元のフロー全体のフローサイズ分布として推定するするものである
ことを特徴とするＴＣＰフロー通信品質推定装置。
【請求項５】
請求項１記載のＴＣＰフロー通信品質推定装置において、
前記ユーザフロー管理テーブルは、フロー毎に、フローiからのパケットが最初に到着した時刻T_first_i、パケットが最後に到着した時刻T_last_i、転送されたパケットバイト数の総数B_iを記憶するものであり、
前記パケットヘッダ解析手段からの要請は、当該パケットの属するユーザフローiをユーザフロー管理テーブルに新規エントリし、T_first_iを現在の時刻、T_last_iを現在の時刻、B_iを該パケットサイズに設定する要請であり、
前記パケットヘッダ照合手段からの要請は、当該パケットに対する前記T_last_iを現在の時刻に更新し、前記B_iをB_i+該パケットサイズに更新する要請であり、
前記フロー統計情報推定手段は、前記一定期間毎に、もしT_last_i=T_first_iならばフローiは該ユーザフロー管理テーブルのエントリから除外し、もしT_last_i>T_first_iならば該ユーザフロー管理テーブルにエントリされているフローiのフロー持続時間T_iをT_i=（T_last_i - T_first_i）と計算し、該T_i（i=１〜エントリされたフロー数）を用いてフロー持続時間Tに関する分布を作成し、該分布を以って元のフロー全体のフロー持続時間分布として推定するものである
ことを特徴とするＴＣＰフロー通信品質推定装置。
【請求項６】
通信網におけるあるリンクを経由するＴＣＰフローの通信品質を推定するＴＣＰフロー通信品質推定装置であって、
受信したフローのユーザフロー情報を登録するユーザフロー管理テーブルを管理するフロー管理手段と、
受信したパケットのパケットヘッダ情報を前記ユーザフロー管理テーブルに登録されたユーザフロー情報と照合し、受信したパケットが前記ユーザフロー管理テーブルに登録されているフローに属するものである場合に、前記ユーザフロー管理テーブルを管理しているフロー管理手段にユーザフロー情報の更新を要請するとともに、受信したパケットが前記ユーザフロー管理テーブルに登録されているフローに属するものでない場合に、該パケットを後述のパケットヘッダ解析手段に転送するパケットヘッダ照合手段と、
転送されてきたパケットのパケットヘッダ情報を読み込んでＴＣＰの通信開始を表すＳＹＮフラグが立っていた場合に、Ｎ個のパケットに対し１個のパケットを抽出し、前記ユーザフロー管理テーブルに空きがあれば、該パケットの到着時刻および該パケットがどのユーザフローからのパケットかを定めるパケットヘッダ情報を前記ユーザフロー管理テーブルに新規エントリ登録することを前記フロー管理手段に要請するパケットヘッダ解析手段と、
前記パケットヘッダ照合手段および前記パケットヘッダ解析手段からの要請を受け、該要請を実行するフロー管理手段と、
前記ユーザフロー管理テーブルにエントリされたフローの情報を用いて、当該リンクを経由するフロー全体のＴＣＰフロー通信品質を推定するフロー統計情報推定手段と
を有することを特徴とするＴＣＰフロー通信品質推定装置。
【請求項７】
請求項１から６のいずれかに記載のＴＣＰフロー通信品質推定装置において、
パケットヘッダ解析手段により、前記ユーザフロー管理テーブルに空きがないと判断された場合に、既にエントリされているユーザフローの中から１つを選択し、該フロー情報をクリアしてそこに新規エントリすることを特徴とするＴＣＰフロー通信品質推定装置。
【請求項８】
通信網におけるあるリンクを経由するＴＣＰフローの通信品質を推定するＴＣＰフロー通信品質推定方法において、
Ｎ個の到着パケットに対し１個のパケットを抽出し、該パケットヘッダを読み込んでＴＣＰの通信開始を表すＳＹＮフラグが立っておりかつ予め用意したユーザフロー管理テーブルに空きがあれば、該パケットの到着時刻および該パケットがどのユーザフローからのパケットかを定めるパケットヘッダ情報を前記ユーザフロー管理テーブルに新規エントリ登録するステップと、
前記Ｎ個に１個のパケット抽出とは独立に、パケット到着毎に該パケットが既にユーザフロー管理テーブルにエントリされているユーザフローからのパケットがどうかを調査し、既にエントリされているユーザフローiからのパケットであった場合、該パケットヘッダ情報を読み込んで、前記ユーザフロー管理テーブル内のユーザフローiの情報を更新するステップと、
上記２つのステップの処理を一定期間継続した後、前記ユーザフロー管理テーブルにエントリされたフローの情報を用いて、当該リンクを経由するフロー全体のＴＣＰフロー通信品質を推定するステップと
を有することを特徴とするＴＣＰフロー通信品質推定方法。
【請求項９】
通信網におけるあるリンクを経由するＴＣＰフローの通信品質を推定するＴＣＰフロー通信品質推定方法をコンピュータに実行させるＴＣＰフロー通信品質推定用プログラムであって、
コンピュータを請求項１から７のいずれかに記載のＴＣＰフロー通信品質推定装置における各手段として機能させるためのＴＣＰフロー通信品質推定用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＩＰネットワークの通信品質状態を管理するＴＣＰフロー通信品質推定装置およびその方法ならびにそのためのプログラムに関し、特に、フロー管理に必要となるテーブルサイズを削減できるとともに、フローサイズの大きな通信に偏らずに通信品質を推定できる技術に関するものである。
【背景技術】
【０００２】
ＩＰネットワークが広く利用されてくるに伴って、ＩＰネットワーク上での通信品質保証に対する要求が高まっている。それに伴い、ＩＰネットワークを流れるトラヒックを測定して現在の通信品質状態を把握することが重要になってきている。特に、ユーザの体感する品質を直接表すユーザフローレベル（ここでのフローとはＴＣＰコネクションを指す）で品質測定する技術が着目されている。
【０００３】
しかしながら、ユーザフローレベルでの通信品質を測定するためには、回線を流れるパケットを全てキャプチャ（捕獲）し、その全てのパケットのパケットヘッダ情報を解析したりフロー情報の解析を行う必要があり、またフロー管理に要するテーブルのサイズ（メモリ量）が膨大となる。そのため、回線速度が高速になるにつれて全てのパケットをキャプチャして上記の如き処理を実行することは事実上困難になってきている。
【０００４】
そこで、近年、パケットサンプリングを実施することによってフロー管理に必要とされる処理を軽減する手法が着目されている。パケットサンプリング手法は、全てのパケットをキャプチャして参照するのではなく、Ｎ個に１個のパケットを周期的にキャプチャして参照し、該サンプリングされたＮ個に１個のパケットから元のフロー統計情報を推定するものである。
【０００５】
また、森，内田，川原，後藤 “サンプルされたパケットからエレファントフローを特定する手法” 電子情報通信学会技術研究報告NS2004-13, pp.17-20, 2004-04.（非特許文献１）では、パケットサンプリングを用いてリンク帯域の占有率が高いフローを特定する方法を提案している。
【０００６】
また、C. Estan and G. Varghese “New Directions in Traffic Measurement and Accounting” ACM SIGCOMM2002, Aug. 2002（非特許文献２）では、フローサイズが大きいフローの統計を精度よく得る方法を提案している。
【０００７】
しかし、上述した非特許文献１および２で提案されたものは、サイズの大きい、あるいは帯域の占有率が高いフローを特定し、それらフローを過剰に発生するユーザを迅速に切り分けることを目的としており、あるリンク上のフロー全体の通信品質や、フロー全体の統計情報（フローレートの分布等）の把握を可能にするものではなかった。
【０００８】
この方法によって元のフロー情報に関する分布を推定すると、分布がフローサイズの大きいフローに偏ってしまい、適切に推定できないという問題点があった。その理由は、Ｎ個に１個のパケットを抽出するといった通常のパケットサンプリングでは、サイズの大きいフローがサンプルされやすく、サイズの小さいフローが無視される確率が高くなってしまうからである。
【０００９】
さらに、N. Duffield, C. Lund, and M. Thorup “Properties and Prediction of Flow Statistics from Sampled Packet Streams” ACM SIGCOMM Internet Measurement Conference 2002, Nov. 2002（非特許文献３）およびN. Duffield, C. Lund, and M. Thorup “Estimating Flow Distributions from Sampled Flow Statistics” In Proceedings of ACM SIGCOMM, pp. 325-336, Aug. 2003.（非特許文献４）では、Ｎ個に１個のパケットを抽出する通常のパケットサンプリングにおいて、サンプルされたパケットのうち、ＳＹＮパケット（ＴＣＰフラグの一つで、通信開始を意味する）の数を用いて、サンプルされていない全体のフロー発生数やフローサイズの平均や分布を推定する方法を提案している。
【００１０】
しかしながら、これらの非特許文献に提案されたものは、フローサイズに関する統計情報を推定するに留まっており、ユーザの品質を表すフローレート（ＴＣＰスループットに相当する）やフロー持続時間（ファイル転送時間に相当）に関する推定を可能にするものではなかった。
【００１１】
【非特許文献１】森，内田，川原，後藤 “サンプルされたパケットからエレファントフローを特定する手法” 電子情報通信学会技術研究報告NS2004-13, pp.17-20, 2004-04.
【非特許文献２】C. Estan and G. Varghese “New Directions in Traffic Measurement and Accounting” ACM SIGCOMM2002, Aug. 2002.
【非特許文献３】N. Duffield, C. Lund, and M. Thorup “Properties and Prediction of Flow Statistics from Sampled Packet Streams” ACM SIGCOMM Internet Measurement Conference 2002, Nov. 2002.
【非特許文献４】N. Duffield, C. Lund, and M. Thorup “Estimating Flow Distributions from Sampled Flow Statistics” In Proceedings of ACM SIGCOMM, pp. 325-336, Aug. 2003.
【発明の開示】
【発明が解決しようとする課題】
【００１２】
上述したように、全てのパケットを対象にした場合には、フロー管理に要するテーブルとして膨大なサイズ（メモリ量）が必要となり、高速処理が必要とされるという問題点があり、また通常のパケットサンプリングを行った場合には、あるリンク上のフロー全体の通信品質やフロー全体の統計情報（フローレートの分布等）の把握が可能でないという問題点、分布がフローサイズの大きいフローに偏ってしまい適切に推定できないという問題点、ユーザの品質を表すフローレート（ＴＣＰスループットに相当する）やフロー持続時間（ファイル転送時間に相当）に関する推定が可能でないという問題点などがあった。
【００１３】
本発明の目的は、上述の問題点を解消し、フロー管理に要するテーブルのサイズ（メモリ量）を軽減しつつ、当該リンクにおけるフロー全体の通信品質を大きなフローサイズの通信に偏らずに適切に推定することが可能なＴＣＰフロー通信品質推定装置およびＴＣＰフロー通信品質推定方法ならびにそのためのプログラムを提供することにある。
【課題を解決するための手段】
【００１４】
本発明は、上記目的を達成するために、前述の非特許文献２のサンプルアンドホールド法というサンプリング方法を改良している。サンプルアンドホールド法とは、通常のパケットサンプリングでパケットが一旦サンプルされたフローに対して、それ以降はそのフローに属するパケット全てをキャプチャしてフロー情報を更新していく方法である。
【００１５】
この方法だと、前記〔背景技術〕でも述べたようにサイズの大きいフローに偏って抽出されてしまうため、それを回避できるような新たなサンプリング法を考案する。
【００１６】
本発明においては、 ＳＹＮパケットがサンプルされたフローについてのみそのフローに属するパケットをキャプチャしてフロー情報を更新して各フローの通信品質（フローレート、フロー持続時間）を計算する。
【００１７】
このように、本発明ではＳＹＮパケットがサンプルされたフローのみ情報を収集するため、管理すべきフロー数は非特許文献３のサンプルアンドホールド法を用いた場合よりも大幅に削減できる。
【００１８】
また、ＳＹＮパケットはフローサイズに関わらず等確率で抽出されるという性質がある（非特許文献３，４参照）ので、サイズの大きいフローに偏ることなく元の分布を推定できると考えられる。フロー管理数削減の効果、および、元の分布推定精度の大幅な向上については、後述する〔発明の効果〕の項において実測データ分析結果を交えて言及することとする。以下、本発明が特徴とする構成を記す。
【００１９】
ａ）本発明のＴＣＰフロー通信品質推定装置（３０）は、受信したパケットのパケットヘッダ情報をユーザフロー管理テーブル（４０）に登録されたユーザフロー情報と照合し、受信したパケットがユーザフロー管理テーブル（４０）に登録されているフローに属するものである場合に、ユーザフロー管理テーブル（４０）を管理しているフロー管理手段（フロー管理部３３）にユーザフロー情報の更新を要請するとともに、受信したパケットがユーザフロー管理テーブル（４０）に登録されているフローに属するものでない場合に、該パケットを後述のサンプリング手段（サンプリング部３４）に転送するパケットヘッダ照合手段（パケットヘッダ照合部３２）と、転送されてきたＮ個のパケットに対し１個のパケットを抽出してパケットヘッダ解析手段（パケットヘッダ解析部３５）に転送するとともに、抽出されなかったパケットを次のノードに転送するサンプリング部と、転送されてきたパケットのパケットヘッダ情報を読み込んでＴＣＰの通信開始を表すＳＹＮフラグが立っておりかつユーザフロー管理テーブル（４０）に空きがあれば、該パケットの到着時刻および該パケットがどのユーザフローからのパケットかを定めるパケットヘッダ情報をユーザフロー管理テーブル（４０）に新規エントリ登録することをフロー管理手段に要請するパケットヘッダ解析手段（パケットヘッダ解析部３５）と、パケットヘッダ照合手段（パケットヘッダ照合部３２）およびパケットヘッダ解析手段（パケットヘッダ解析部３５）からの要請を受け、該要請を実行するフロー管理手段（フロー管理部３３）と、ユーザフロー管理テーブル（４０）にエントリされたフローの情報を用いて、当該リンクを経由するフロー全体のＴＣＰフロー通信品質を推定するフロー統計情報推定手段（フロー統計情報推定部３６）とを有することを特徴としている。
【００２０】
ｂ）さらにユーザフロー管理テーブル（４０）は、フロー毎に、フローiからのパケットが最初に到着した時刻T_first_i、パケットが最後に到着した時刻T_last_i、転送されたパケットバイト数の総数B_iを記憶するものであり、パケットヘッダ解析手段（パケットヘッダ解析部３５）からの要請は、当該パケットの属するユーザフローiをユーザフロー管理テーブル（４０）に新規エントリし、T_first_iを現在の時刻、T_last_iを現在の時刻、B_iを該パケットサイズに設定する要請であり、パケットヘッダ照合手段からの要請は、当該パケットに対するT_last_iを現在の時刻に更新し、B_iをB_i+該パケットサイズに更新する要請であり、フロー統計情報推定手段（フロー統計情報推定部３６）は、一定期間毎に、もしT_last_i=T_first_iならばフローiは該ユーザフロー管理テーブル（４０）のエントリから除外し、もしT_last_i>T_first_iならば該ユーザフロー管理テーブル（４０）にエントリされているフローiのフロー持続時間T_iをT_i=（T_last_i - T_first_i）と計算し、フローレートR_iをR_i=B_i／T_iと計算するとともに、R_i（i=１〜エントリされたフロー数）を用いてフローレートに関する分布を作成し、該分布を以って元のフロー全体のフローレート分布として推定するものであることを特徴としている。
【００２１】
ｃ）また、パケットヘッダ照合手段は、受信したパケットのパケットヘッダ情報を参照し、ＴＣＰ通信の終了を示すＦＩＮフラグあるいはＴＣＰ通信の中断を示すＲＳＴフラグが立っているか否かを判定し、到着したパケットが既にユーザフロー管理テーブルにエントリされているフローiからのパケットであり、かつ、ＦＩＮフラグあるいはＲＳＴフラグが立っていたら、フロー管理手段（フロー管理部３３）に、T_last_iおよびB_iを更新することを要請するものであり、フロー管理手段（フロー管理部３３）は、該パケットヘッダ照合手段（パケットヘッダ照合部３２）からの該要請によりユーザフロー管理テーブル（４０）のT_last_iおよびB_iを更新するとともに、該フローiを削除するものであり、フロー統計情報推定手段（フロー統計情報推定部３６）は、該ユーザフロー管理テーブル（４０）のT_last_iおよびB_iの更新に基づいてフローレートR_iを計算するものであることを特徴としている。
【００２２】
ｄ）さらに、前記ユーザフロー管理テーブル（４０）は、フロー毎に、フローiからのパケットが最初に到着した時刻T_first_i、パケットが最後に到着した時刻T_last_i、転送されたパケットバイト数の総数B_iを記憶するものであり、パケットヘッダ解析手段（パケットヘッダ解析部３５）からの要請は、当該パケットの属するユーザフローiをユーザフロー管理テーブル（４０）に新規エントリし、T_first_iを現在の時刻、T_last_iを現在の時刻、B_iを該パケットサイズに設定する要請であり、パケットヘッダ照合手段（パケットヘッダ照合部３２）からの要請は、当該パケットに対するT_last_iを現在の時刻に更新し、B_iをB_i+該パケットサイズに更新する要請であり、フロー統計情報推定手段（フロー統計情報推定部３６）は、一定期間毎に、フローiのフローサイズS_iをB_iとし、B_i（i=１〜エントリされたフロー数）を用いてフローサイズBに関する分布を作成し、その分布を以って元のフロー全体のフローサイズ分布として推定するするものであることを特徴としている。
【００２３】
ｅ）また、前記ユーザフロー管理テーブル（４０）は、フロー毎に、フローiからのパケットが最初に到着した時刻T_first_i、パケットが最後に到着した時刻T_last_i、転送されたパケットバイト数の総数B_iを記憶するものであり、パケットヘッダ解析手段（パケットヘッダ解析部３５）からの要請は、当該パケットの属するユーザフローiをユーザフロー管理テーブル（４０）に新規エントリし、T_first_iを現在の時刻、T_last_iを現在の時刻、B_iを該パケットサイズに設定する要請であり、パケットヘッダ照合手段（パケットヘッダ照合部３２）からの要請は、当該パケットに対するT_last_iを現在の時刻に更新し、B_iをB_i+該パケットサイズに更新する要請であり、フロー統計情報推定手段（フロー統計情報推定部３６）は、一定期間毎に、もしT_last_i=T_first_iならばフローiは該ユーザフロー管理テーブル（４０）のエントリから除外し、もしT_last_i>T_first_iならば該ユーザフロー管理テーブル（４０）にエントリされているフローiのフロー持続時間T_iをT_i=（T_last_i - T_first_i）と計算し、該T_i（i=１〜エントリされたフロー数）を用いてフロー持続時間Tに関する分布を作成し、該分布を以って元のフロー全体のフロー持続時間分布として推定するものであることを特徴としている。
【００２４】
ｆ）また、通信網におけるあるリンクを経由するＴＣＰフローの通信品質を推定するＴＣＰフロー通信品質推定装置であって、受信したフローのユーザフロー情報を登録するユーザフロー管理テーブル（８０）を管理するフロー管理手段（フロー管理部７２）と、受信したパケットのパケットヘッダ情報をユーザフロー管理テーブル（８０）に登録されたユーザフロー情報と照合し、受信したパケットがユーザフロー管理テーブル（８０）に登録されているフローに属するものである場合に、ユーザフロー管理テーブル（８０）を管理しているフロー管理手段（フロー管理部７２）にユーザフロー情報の更新を要請するとともに、受信したパケットがユーザフロー管理テーブル（８０）に登録されているフローに属するものでない場合に、該パケットを後述のパケットヘッダ解析手段（パケットヘッダ解析部７３）に転送するパケットヘッダ照合手段（パケットヘッダ照合部７１）と、転送されてきたパケットのパケットヘッダ情報を読み込んでＴＣＰの通信開始を表すＳＹＮフラグが立っていた場合に、Ｎ個のパケットに対し１個のパケットを抽出し、ユーザフロー管理テーブル（８０）に空きがあれば、該パケットの到着時刻および該パケットがどのユーザフローからのパケットかを定めるパケットヘッダ情報をユーザフロー管理テーブル（８０）に新規エントリ登録することをフロー管理手段（フロー管理部７２）に要請するパケットヘッダ解析手段（パケットヘッダ解析部７３）と、パケットヘッダ照合手段（パケットヘッダ照合部７１）およびパケットヘッダ解析手段（パケットヘッダ解析部７３）からの要請を受け、該要請を実行するフロー管理手段（フロー管理部７２）と、ユーザフロー管理テーブル（８０）にエントリされたフローの情報を用いて、当該リンクを経由するフロー全体のＴＣＰフロー通信品質を推定するフロー統計情報推定手段（フロー統計情報推定部７６）とを有することを特徴としている。
【００２５】
ｇ）また、フロー管理手段（フロー管理部３３，７２）により、ユーザフロー管理テーブル（４０，８０）に空きがないと判断された場合に、既にエントリされているユーザフローの中から１つを選択し、該フロー情報をクリアしてそこに新規エントリすることを特徴としている。
【００２６】
ｈ）本発明のＴＣＰフロー通信品質推定方法は、Ｎ個の到着パケットに対し１個のパケットを抽出し、該パケットヘッダを読み込んでＴＣＰの通信開始を表すＳＹＮフラグが立っておりかつ予め用意したユーザフロー管理テーブルに空きがあれば、該パケットの到着時刻および該パケットがどのユーザフローからのパケットかを定めるパケットヘッダ情報をユーザフロー管理テーブルに新規エントリ登録するステップと、Ｎ個に１個のパケット抽出とは独立に、パケット到着毎に該パケットが既にユーザフロー管理テーブルにエントリされているユーザフローからのパケットがどうかを調査し、既にエントリされているユーザフローiからのパケットであった場合、該パケットヘッダ情報を読み込んで、前記ユーザフロー管理テーブル内のユーザフローiの情報を更新するステップと、上記２つのステップの処理を一定期間継続した後、前記ユーザフロー管理テーブルにエントリされたフローの情報を用いて、当該リンクを経由するフロー全体のＴＣＰフロー通信品質を推定するステップとを有することを特徴としている。
【００２７】
ｉ）また、本発明にかかるプログラムは、通信網におけるあるリンクを経由するＴＣＰフローの通信品質を推定するＴＣＰフロー通信品質推定方法をコンピュータに実行させるＴＣＰフロー通信品質推定用プログラムであって、コンピュータを上記ＴＣＰフロー通信品質推定装置における各手段として機能させるためのＴＣＰフロー通信品質推定用プログラムである。
【発明の効果】
【００２８】
本発明は、上述した構成を採用することにより、フロー管理に必要なテーブルのサイズ（メモリ量）を削減しつつ、当該リンクにおけるフロー全体のＴＣＰフロー通信品質をフローサイズの大きな通信に偏らないで精度良く推定することが可能なＴＣＰフロー通信品質推定装置およびＴＣＰフロー通信品質推定方法ならびにそのためのプログラムを提供することができる。
【００２９】
以下、本発明による効果を、図面を用いて詳細に説明する。
図７は、実際に本発明の動作を、実測データを用いて検証した結果を示す図である。これは、ある企業ＬＡＮ−ＩＳＰ間の回線において、２００３年８月の数日間、全パケットヘッダをキャプチャしたデータを用いた結果である。図７において、横軸はx[byte]、縦軸はフローサイズがx[byte]を超える割合（=P[フローサイズ>x]）を表している。
【００３０】
図７には、ある１時間におけるフローサイズの元の分布（図中“original”）と、Ｎ=１００に設定して本発明で提案した方式で推定した分布（図中“proposed”）を示してある。また、比較のために、通常のパケットサンプリングで少なくとも１つのパケットが抽出されたフローのサイズ（図中“sampled”）と、サンプルアンドホールド法（非特許文献２参照）でフローサイズを求めたときの結果（図中“sample-hold”）も示してある。
【００３１】
これより、“sampled”、“sample-hold”では、“original”の結果とは一致せずにサイズの大きいフローに分布が偏っているのに対し、本発明で提案した方式では元の分布を精度良く推定できている（つまり、“original”の結果とは一致している）ことが分かる。図８は、各方式でサンプルされたフロー数を示す図である。
【００３２】
これより、本発明で提案した方式では、他の方式に比べ、管理フロー数を非常に小さくできており、元のフロー数の約１／１００に削減できていることが分かる。
【００３３】
図９は、フローレートに対する推定結果を示す図である。図９において、横軸はx[kbps]、縦軸はフローレートがx[kbps]を超える割合（=P[フローレート>x]）を表している。本発明で提案した方式が、サンプルアンドホールド法（非特許文献２参照）の場合（“sample-hold”）よりもフローレートの分布を精度良く推定できていることが分かる。
【発明を実施するための最良の形態】
【００３４】
（発明の概要）
まず、本発明の具体的実施例を説明する前に、本発明の最も特徴とする構成を記す。本発明は、ＩＰ網の通信品質を推定する技術において、特に、ＴＣＰにおけるＳＹＮ（シンクロナイズ）フラグをみてＳＹＮパケットか否かを判定するパケットヘッダ解析部（パケットヘッダ解析手段）と、ＳＹＮパケットである場合に、当該パケットに関する情報を所定のテーブルに登録し、以降の受信パケットに関しては登録済みのパケットフローについてのみ情報更新をするフロー管理部（フロー管理手段）とを設けたものであり、この構成によって、フロー管理に要するテーブルのサイズ（メモリ量）を軽減しつつ、当該リンクにおけるフロー全体の通信品質を大きなフローサイズの通信に偏らずに適切に推定することを可能にしている。
【００３５】
（実施例）
以下、図面を用いて本発明の実施例を説明する。
図１は、本発明が適用されるＩＰネットワークの基本構成の一例を示す構成図である。図１に示すように、本発明に係るＴＣＰフロー通信品質推定装置３０はノード１０とノード２０の間のリンクに挿入される形態で利用される。
【００３６】
＜実施例１＞
まず、本発明の実施例１を説明する。
図２は、本発明の実施例１に係るＴＣＰフロー通信品質推定装置の構成例を示すブロック図である。図３は、本発明にの実施例１に係るＴＣＰフロー通信品質推定装置を用いた通信品質推定方法を説明するためのフローチャートである。図４は、本発明で用いられるユーザフロー管理テーブルの一例を示す図である。
【００３７】
図３のフローチャートに示すように、図２に示すＴＣＰフロー通信品質推定装置３０において、前段ノードからパケットが到着した場合（ステップＳ１）、パケットカウント部３１においてカウンターＣをカウントアップし（ステップＳ２）、その後、パケットヘッダ照合部３２において、そのパケットからヘッダ情報（送信元ＩＰアドレス、着信先ＩＰアドレス、送信元ポート番号、着信先ポート番号、プロトコル番号）を読み出し、既にフロー管理部３３内に存在するユーザフロー管理テーブル４０にエントリされているフローからのパケットかどうかを調べ（ステップＳ３）、エントリされているフローからのパケットであれば（ステップＳ３：Ｙ）、フロー管理部３３にヘッダ情報が通知され、フロー管理部３３では後述するユーザフロー管理テーブル４０のフローの情報を更新するとともに（ステップＳ４）、該パケットは後段ノード２０に転送される。
【００３８】
もし、ステップＳ３において、前段ノードから到着したパケットがフロー管理部３３内に存在するユーザフロー管理テーブル４０にエントリされているフローからのパケットでないと判断された場合には（ステップＳ３：Ｎ）、該パケットはサンプリング部３４に転送される。
【００３９】
サンプリング部３４では、パケットカウント部３１のカウンターＣの値を読み出し、カウンターＣの値をＮ（Ｎは予め定めたサンプリング周期）で割った余りが０と等しいかチェックする（ステップＳ５）。
【００４０】
もし余りが０であれば（ステップＳ５：Ｙ）、該パケットはパケットヘッダ解析部３５に転送され、同時に該パケットは後段ノード２０へ転送される。
【００４１】
もし余りが０でなければ（ステップＳ５：Ｎ）、単に後段ノード２０へのみ該パケットを転送する（あるいは、パケット到着毎に０から１の範囲で乱数を発生させ、その結果が１／Ｎ以下であれば、該パケットをパケットヘッダ解析部３５に転送してから後段ノード２０にも転送し、そうでなければ単に後段ノード２０へのみ転送するようにしてもよい）。
【００４２】
パケットヘッダ解析部３５では、ＴＣＰのＳＹＮ（シンクロナイズ）フラグが立っているかどうかチェックし（ステップＳ６）、もしＳＹＮフラグが立っていれば（ステップＳ６：Ｙ）、ヘッダ情報（送信元ＩＰアドレス、着信先ＩＰアドレス、送信元ポート番号、着信先ポート番号、プロトコル番号）を読み出し、その情報をフロー管理部３３に通知して、ユーザフロー管理テーブル４０に新規ユーザフローエントリを登録要請する。
【００４３】
フロー管理部３３には、フロー毎に状態を管理するユーザフロー管理テーブル４０が予め用意されている。ユーザフロー管理テーブル４０は、例えば図４に示すように、フローid（i＝１、２、・・・）毎に、フローiからのパケットが最初に到着した時刻T_first_i、該パケットが最後に到着した時刻T_last_i、転送されたパケットバイト数の総数B_iを記憶している。
【００４４】
図４の例は、フロー１に対して送信元ＩＰアドレス、着信先ＩＰアドレス、送信元ポート番号、着信先ポート番号、プロトコル番号）が（111.11.1.1、123.45.6.7、80、6321、tcp）、T_first_iが10.2ｓ、T_last_iが15.5ｓ、B_iが100byteで、フロー２に対して送信元ＩＰアドレス、着信先ＩＰアドレス、送信元ポート番号、着信先ポート番号、プロトコル番号）が（211.11.1.1、223.45.6.7、20、6321、tcp）、T_first_iが0.5ｓ、T_last_iが0.82ｓ、B_iが50byteの場合の例を示している。
【００４５】
フロー管理部３３は、パケットヘッダ解析部３５から新規ユーザフローエントリの要請を受けたら、ユーザフロー管理テーブル４０にエントリされているフロー数が予め定めた上限値より小さいかどうかを調べ（すなわち、ユーザフロー管理テーブル４０に空きがあるかどうかを調べ）（ステップＳ７）、そうであれば（ステップＳ７：Ｙ）、ユーザフロー管理テーブル４０にそのパケットの属するフローをエントリ登録し、対応するT_first_i、T_last_iを現在の時刻に設定し、B_iを該パケットサイズに設定し（ステップＳ８）処理を終了する（ステップＳ９）。
【００４６】
パケットヘッダ照合部３２から、既にエントリされているユーザフローidからのパケットのヘッダ情報が通知されたら、 T_last_iを現在の時刻に更新し、B_i←B_i+該パケットサイズに更新する。
【００４７】
以上の手順を、測定を開始してから予め定めた時間周期t0経過するまで行い、時間t0経過したら、ユーザフロー管理テーブル４０内の情報をフロー統計情報推定部３６に通知する。
【００４８】
フロー統計情報推定部３６では、エントリされている各フローに対し、もしT_last_i=T_first_iならばフローiは該ユーザフロー管理テーブル４０のエントリから除外し、もしT_last_i>T_first_iならば該ユーザフロー管理テーブル４０にエントリされているフローiのフロー持続時間T_iをT_i=（T_last_i - T_first_i）と計算し、フローレートR_iをR_i=B_i／T_iと計算する。
【００４９】
フローレートR_i（i=１〜Num, Numはエントリされたフロー数）をR_iに関して昇順に並び替えたものをR'_iとし、フローレートRに関する元の分布P[フローレート≦x] を、P[フローレート≦R'_i] = i／Num として推定する。なお、ここで、P[フローレート≦x] とは、フローレートがx以下となるフロー数が全フロー数の中で占める割合を意味する。
【００５０】
例えば、エントリされたフロー数NumがNum=5本で、各フローのレートを昇順に並び換えた結果が、R_1'=10kbps, R_2'=50kbps,R_3'=60kbps,R_4'=100kbps,R_5'=200kbpsであったとする。このとき、フローレート分布P[フローレート≦x] を以下のように推定する。
P[フローレート≦10kbps]=1/5
P[フローレート≦50kbps]=2/5
P[フローレート≦60kbps]=3/5
P[フローレート≦100kbps]=4/5
P[フローレート≦200kbps]=1
【００５１】
＜実施例２＞
次に、本発明の実施例２を説明する。
上記実施例１では、あらかじめ決められた時間周期t0が経過するまでにユーザフロー管理テーブル４０にエントリされたフローの情報を用いてフローレートを計算し、フローレートの分布を推定するようにしていたが、本実施例２では、時間周期t0の代わりにＴＣＰ通信の終了を示すＦＩＮフラグあるいはＴＣＰ通信の中断を示すＲＳＴフラグが立って場合にフローレートを計算し、フローレートの分布を推定するようにしたものである。
【００５２】
すなわち、実施例２では、到着したパケットが既にユーザフロー管理テーブル４０にエントリされているフローからのパケットであり、かつ、ＴＣＰ通信の終了を示すＦＩＮフラグあるいはＴＣＰ通信の中断を示すＲＳＴフラグが立っていたら、フローiからのパケットが最後に到着した時刻T_last_i, フローiから転送されたパケットバイト数の総数B_iを更新してからフローレートR_iを計算し、フローiをユーザフロー管理テーブル４０から削除する。それ以外の処理は実施例１と同様である。
【００５３】
＜実施例３＞
次に、本発明の実施例３を説明する。
上記実施例１では、ユーザフロー管理テーブル４０にエントリされたフローの情報を用いてフローレートを計算し、フローレートの分布を推定するようにしていたが、本実施例３では、フローレートを計算する代わりに、時間t0経過時点において、フローiのフローサイズS_iをS_i=B_iと計算するようにしたものである。
【００５４】
すなわち、実施例３では、フローiのフローサイズをフローiから転送されたパケットバイト数の総数B_i（i=１〜Num, Numはエントリされたフロー数）とし、該パケットバイト数の総数B_iを昇順に並び替えたものをB'_iとし、フローサイズBに関する元の分布P[フローサイズ≦B'_i] をP[フローサイズ≦B'_i] = i／Num として推定するようにしたものである。それ以外の処理は実施例１と同様である。
【００５５】
＜実施例４＞ 
次に、本発明の実施例４を説明する。
上記実施例１ではユーザフロー管理テーブル４０にエントリされたフローの情報を用いてフローレートを計算し、フローレートの分布を推定するようにしていたが、本実施例４では、フローレートを計算する代わりにフロー持続時間を計算し、フロー持続時間の分布を推定するようにしたものである。
【００５６】
すなわち、実施例４では、実施例１がフローレートを計算していた代わりに、フローiのフロー持続時間T_iを実施例１と同様の方法で計算し、フローiのフロー持続時間T_i（i=１〜Num, Numはエントリされたフロー数）を昇順に並び替えたものをT'_iとし、フロー持続時間Tに関する元の分布P[フロー持続時間≦T'_i] を、P[フロー持続時間≦T'_i] = i／Num として推定する。それ以外の処理は実施例１と同様である。
【００５７】
＜実施例５＞
次に、本発明の実施例５を説明する。
図５は、本発明の実施例５に係るＴＣＰフロー通信品質推定装置の構成例を示すブロック図である。図６は、本発明の実施例５に係るＴＣＰフロー通信品質推定装置を用いた通信品質推定方法を説明するためのフローチャートである。
【００５８】
上記実施例１では、Ｎ個に１個のパケットを抽出してそのヘッダにＳＹＮフラグが立っておりかつユーザフロー管理テーブルに空きがあればテーブルにエントリするとしていたが、本実施例５では、処理の順序を変えたことを特徴とし、まずパケット到着毎にＳＹＮフラグが立っているかどうか調べ、ＳＹＮフラグが立っていた場合にＮ個に１個のパケットを抽出し、そのパケットのパケットヘッダ情報を新規エントリとして登録するようにしたものである。
【００５９】
本実施例５では、図６のフローチャートに示すように、図５に示す通信品質推定装置７０において、前段ノードからパケットが到着した場合（ステップＳ１１）、パケットヘッダ照合部７１において、そのパケットからヘッダ情報（送信元ＩＰアドレス、着信先ＩＰアドレス、送信元ポート番号、着信先ポート番号、プロトコル番号）を読み出し、既にフロー管理部７２内に存在するユーザフロー管理テーブル８０にエントリされているフローからのパケットかどうかを調べ（ステップＳ１２）、エントリされているフローからのパケットであれば（ステップＳ１２：Ｙ）、フロー管理部７２にヘッダ情報が通知され、フロー管理部７２では後述するユーザフロー管理テーブル８０のフローの情報を更新するとともに（ステップＳ１３）、該パケットは後段ノード６０に転送される。
【００６０】
もし、ステップＳ１２において、前段ノードから到着したパケットがフロー管理部７２内に存在するユーザフロー管理テーブル８０にエントリされているフローからのパケットでないと判断された場合には（ステップＳ１２：Ｎ）、該パケットはパケットヘッダ解析部７３に転送される。
【００６１】
パケットヘッダ解析部７３では、ＴＣＰのＳＹＮ（シンクロナイズ）フラグが立っているかどうかチェックし（ステップＳ１４）、もしＳＹＮフラグが立っていれば（ステップＳ１４：Ｙ）、該パケットをパケットカウンタ部７４に送る。
【００６２】
パケットカウント部７４は、パケットを受け取ったらカウンターＣをカウントアップし（ステップＳ１５）、その後、該パケットはサンプリング部７５に転送される。
【００６３】
サンプリング部７５では、パケットカウント部７４のカウンターＣの値を読み出し、カウンターＣの値をＮ（Ｎは予め定めたサンプリング周期）で割った余りが０と等しいかチェックする（ステップＳ１６）。
【００６４】
もし余りが０であれば（ステップＳ１６：Ｙ）、該パケットはパケットヘッダ解析部７３に転送され、同時に該パケットは後段ノード６０へ転送される。
【００６５】
もし余りが０でなければ（ステップＳ１６：Ｎ）、単に後段ノード６０へのみ該パケットを転送する（あるいは、パケット到着毎に０から１の範囲で乱数を発生させ、その結果が１／Ｎ以下であれば、該パケットをパケットヘッダ解析部７３に転送してから後段ノード６０にも転送し、そうでなければ単に後段ノード６０へのみ転送するようにしてもよい）。
【００６６】
パケットヘッダ解析部７３では、該パケットからヘッダ情報（送信元ＩＰアドレス、着信先ＩＰアドレス、送信元ポート番号、着信先ポート番号、プロトコル番号）を読み出し、その情報をフロー管理部７２に通知して、ユーザフロー管理テーブル８０への新規ユーザフローエントリを登録要請する。
【００６７】
実施例１と同様に、フロー管理部７２には、フロー毎に状態を管理するユーザフロー管理テーブル８０が予め用意されている。ユーザフロー管理テーブル８０は、例えば図４に示すように、フローid（i＝１、２、・・・）毎に、フローiからのパケットが最初に到着した時刻T_first_i、該パケットが最後に到着した時刻T_last_i、転送されたパケットバイト数の総数B_iを記憶している。
【００６８】
フロー管理部７２では、パケットヘッダ解析部７３から新規ユーザフローエントリの登録要請を受けたら、ユーザフロー管理テーブル８０にエントリされているフロー数が予め定めた上限値より小さいかどうか調べ、そうであれば（すなわち、ユーザフロー管理テーブル８０に空きがあれば）、ユーザフロー管理テーブル８０にそのパケットの属するフローをエントリ登録し（ステップＳ１８）、処理を終了する（ステップＳ２１）。
【００６９】
そうでなければ（すなわち、ユーザフロー管理テーブル８０に空きがなければ）、０から１の範囲で乱数を発生させ、その結果がｐ（ただし、ｐは予め定めた上書き許可率で、0≦ｐ≦1）以下であれば（ステップＳ１９：Ｙ）、既にエントリされているユーザフローの中から、例えば最も古いフローの情報を選択し、そのフローの情報をクリアし（ステップＳ２０）、そこに新規エントリを登録し（ステップＳ１８）、処理を終了する（ステップＳ２１）。
【００７０】
上記ステップＳ１９〜２０の処理は、実施例１のステップＳ７：Ｎの場合にも適用できる。
【００７１】
なお、ｐの値を大きく設定すれば、過去のデータは頻繁にクリアされ最新のデータばかりを収集することになり、逆にｐを小さく設定すれば、過去のデータがより多く残るので、ネットワーク運用者がどちらを重視するかによって値を決定すればよい。
【００７２】
なお、本発明のＴＣＰフロー通信品質推定装置におけるパケットヘッダ照合部、パケットヘッダ解析部、パケットカウンタ部、サンプリング部、フロー管理部、フロー統計情報推定部は、記憶部に格納された各処理に対応するプログラムをＣＰＵ（コンピュータ）で実行することで実現されるものである。
【００７３】
これらのプログラムは、フローチャートを用いて説明した本発明のＴＣＰフロー通信品質推定装置における各部で行わせる処理をプログラムコード化して作成したものであり、該作成したプログラムはＣＤ−ＲＯＭ、ＤＶＤ、ＦＤなどのコンピュータ読み取り可能な記録媒体やインターネットなどのネットワークを介して利用者に配布され、利用者のコンピュータの記憶部にインストールされてＣＰＵで実行される。
【図面の簡単な説明】
【００７４】
【図１】本発明が適用されるネットワークの基本構成例を示す構成図である。
【図２】本発明に係るＴＣＰフロー通信品質推定装置の構成例を示すブロック図である。
【図３】本発明に係るＴＣＰフロー通信品質推定装置のフローチャートである。
【図４】本発明において用いるユーザフロー管理テーブルの一例を示す図である。
【図５】本発明の実施例５に係るＴＣＰフロー通信品質推定装置の構成例を示すブロック図である。
【図６】本発明の実施例５に係るＴＣＰフロー通信品質推定装置を用いた通信品質推定方法を説明するためのフローチャートである。
【図７】本発明によってフローサイズ分布を推定した結果の一例を示す図である。
【図８】各方式でサンプルされたフロー数を示す図である。
【図９】本発明によってフローレート分布を推定した結果の一例を示す図である。
【符号の説明】
【００７５】
１０，２０：ノード
３０：ＴＣＰフロー通信品質推定装置
３１：パケットカウント部
３２：パケットヘッダ照合部
３３：フロー管理部
３４：サンプリング部
３５：パケットヘッダ解析部
３６：フロー統計情報推定部
４０：ユーザフロー管理テーブル
５０，６０：ノード
７０：ＴＣＰフロー通信品質推定装置
７１：パケットヘッダ照合部
７２：フロー管理部
７３：パケットヘッダ解析部
７４：パケットカウント部
７５：サンプリング部
７６：フロー統計情報推定部
８０：ユーザフロー管理テーブル
【図１】
2006229701.tif 000003
【図２】
2006229701.tif 000004
【図３】
2006229701.tif 000005
【図４】
2006229701.tif 000006
【図５】
2006229701.tif 000007
【図６】
2006229701.tif 000008
【図７】
2006229701.tif 000009
【図８】
2006229701.tif 000010
【図９】
2006229701.tif 000011