説明

フロー通信品質推定方法と装置およびプログラム

【課題】ネットワーク全体の品質のリアルタイムでの推定を可能とする。
【解決手段】フロー通信品質推定装置51は、IPネットワークの全体の通信品質状態を管理する際、フロー管理部51bにおいて、ルータ等のノード間のリンクにおいて1方向に流れるパケットストリームに関して、N個の到着パケットに対して1個のパケットを抽出し、フロー情報を読み出して蓄積管理する処理を一定期間継続し、品質推定部51cにおいて、当該フロー情報を用いて測定対象リンクを通過するフローの通信品質を推定することで、能動的な測定が不要で、かつ、ネットワークの全パケットキャプチャを行うことなく、また、片方向のみのトラヒック測定によって、ネットワーク全体の品質をオンラインで推定することを可能とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、IP(Internet Protocol)ネットワークの通信品質状態を管理する技術に係り、特に、ネットワーク全体の通信品質状態を効率的に管理するのに好適な技術に関するものである。
【背景技術】
【0002】
インターネットとしてIPネットワークが広く利用されてくるに伴って、IPネットワーク上での通信品質保証に対する要求が高まっている。それに伴い、ネットワークを流れるトラヒックを測定して現在の通信品質状態を把握することが重要になってきている。
【0003】
エンドエンド遅延時間やパケット損失率、スループットといったネットワークの通信品質を把握する直接的な技術としては、エンドエンド間で試験パケットを送受信することにより品質を能動的に測定する技術(アクティブ測定)がある。
【0004】

このアクティブ測定では、pingコマンドによる往復遅延測定や、例えば、非特許文献1等に記載のpathchar]等が用いられる。
【0005】
また、例えば、非特許文献2に記載のように、着目するエンドホスト間において、試験パケットによるラウンドトリップタイムやパケット損失率の測定および経路上のボトルネック帯域の測定を実施し、かつ、実際にTCP(Transmission Control Protocol)で通信を行ってスループットを測定し、ウインドーサイズを徐々に大きくしていったときにTCPスループットが増加するかどうか等を詳細に解析する技術を提案している。
【0006】
しかし、これらの技術は、一般に、ある特定のエンドホスト間で品質の把握やトラブルシューティング的に品質劣化要因を特定するのに適した技術であり、ネットワーク提供者が、ネットワーク内の通信を全体的に管理するのに直接適用すると、測定コストの増大およびネットワークへの測定負荷の増大が生じてしまう。
【0007】
具体的には、監視対象となるネットワークの入り側および出側全てに試験パケット送受信機を設置して、試験パケットを送信することによって品質測定を能動的に行う必要があり、測定装置コストが増大してしまう。
【0008】
さらに、試験パケットをネットワークへ付加するため、ネットワークへ余分なトラヒックが加わるという問題と、その結果、試験トラヒックによってネットワークの品質自体が劣化してしまうという問題があった。
【0009】
このような能動的測定以外の技術として、着目するエンドエンド間トラヒックの流れる箇所において、そこを通過するパケットをキャプチャして解析し、ネットワークの状態を把握する技術(パッシブ測定)がある。
【0010】
例えば、非特許文献3等に記載のACEと呼ばれるツールでは、パケットキャプチャデータから、エンド間のレスポンス時間や、その内訳(ネットワーク内での遅延とサーバでの遅延)を分析することができる。また、非特許文献4に記載のツールでも往復遅延等を分析することが可能である。
【0011】
しかし、これらの技術は、一般に、ある特定のエンドホスト間で品質の把握やトラブルシューティング的に品質劣化要因を特定するのに適した技術であり、ネットワーク全体でのユーザフロー通信品質を測定するためには、回線を流れるパケットを全てキャプチャしてパケットヘッダ情報の解析、およびフロー情報の解析が必要となり、回線速度が高速になるにつれて、全てのパケットをキャプチャして処理することが困難となる。
【0012】
そこで、本発明者らは、非特許文献5に記載のように、双方向に流れるパケットストリームに対して、パケットサンプリングを行って必要なTCPパケットを蓄積した後、オフラインで蓄積パケットを処理することで、ネットワーク全体の品質を推定する技術を提案している。
【0013】
この技術では、能動的な測定を行うことなく、かつ、ネットワークの全パケットのキャプチャを行うことなく、ネットワーク全体の品質を推定することを可能にしている。
【0014】
しかしながら、この技術は、双方向のパケットをキャプチャする必要があり、インターネットルーチングでは非対称になるケースもあるため、必ずしも監視ポイントで双方向パケットをキャプチャできるとは限らない。
【0015】
また、一旦パケットを蓄積した後で、オフライン処理を行う必要があるため、リアルタイムに品質を推定できないという問題点がある。
【先行技術文献】
【非特許文献】
【0016】
【非特許文献1】「Pathchar」、[online]、[平成21年12月03日検索]、インターネット<URL:http://www.caida.org/tools/utilities/others/pathchar/>.
【非特許文献2】的場 一峰, 阿多 信吾, 村田 正幸, "インターネットにおける計測に基づいたボトルネック特定手法," 電子情報通信学会 テレコミュニケーションマネジメント研究会, pp. 65 - 70, November 2000.
【非特許文献3】「Application Performance Analysis | Application Troubleshooting」、[online]、[平成21年12月03日検索]、インターネット<URL:http://www.opnet.com/solutions/application_performance/ace.html>.
【非特許文献4】「tcptrace - Official Homepage」、[online]、[平成21年12月03日検索]、インターネット<URL:http://www.tcptrace.org/>.
【非特許文献5】川原他, "フローサンプリングによるフロー品質推定方法, " 電子情報通信学会2009年ソサイエティ大会, B-7, 2009.
【発明の概要】
【発明が解決しようとする課題】
【0017】
解決しようとする問題点は、従来のアクティブ測定技術では、ネットワーク全体でのユーザフロー通信品質を測定するのは困難である点と、従来のパッシブ測定技術では、必ずしも監視ポイントで双方向パケットをキャプチャできるとは限らない点と、リアルタイムに品質を推定できない点である。
【0018】
本発明の目的は、これら従来技術の課題を解決し、ネットワーク全体の品質のリアルタイムでの推定を可能とすることである。
【課題を解決するための手段】
【0019】
上記目的を達成するため、本発明では、IPネットワークの全体の通信品質状態を管理する際、ルータ間のリンクにおいて1方向に流れるパケットストリームに関して、N個の到着パケットに対して1個のパケットを抽出し、フロー情報を読み出して蓄積管理する処理を一定期間継続し、当該フロー情報を用いて測定対象リンクを通過するフローの通信品質を推定する。
【発明の効果】
【0020】
本発明によれば、ネットワークへの余分な負荷を加えてしまう能動的な測定が不要で、かつ、ネットワークの全パケットキャプチャを行うことなく、また、片方向のみのトラヒック測定によって、ネットワーク全体の品質をオンラインで推定することが可能となる。
【図面の簡単な説明】
【0021】
【図1】本発明に係るフロー通信品質推定方法の第1の手順例を示す説明図である。
【図2】本発明に係るフロー通信品質推定方法の第2の手順例を示す説明図である。
【図3】本発明に係るフロー通信品質推定方法の第3の手順例を示す説明図である。
【図4】本発明に係るフロー通信品質推定装置の設置例を示すブロック図である。
【図5】本発明に係るフロー通信品質推定装置の内部構成例を示すブロック図である。
【発明を実施するための形態】
【0022】
以下、図を用いて本発明を実施するための形態例を説明する。図5に示す本例のフロー通信品質推定装置(図中「フロー品質推定装置」と記載)51は、CPU(Central Processing Unit)や主メモリ、表示装置、入力装置、外部記憶装置等を具備したコンピュータ構成からなり、光ディスク駆動装置等を介してCD−ROM等の記憶媒体に記録されたプログラムやデータを外部記憶装置内にインストールした後、この外部記憶装置から主メモリに読み込みCPUで処理することにより、各処理部の機能を実行する。
【0023】
すなわち、フロー通信品質推定装置51は、プログラムされたコンピュータ処理を実行する手段として、パケットヘッダ解析部51a、フロー管理部51b、品質推定部51c、パケットカウント部51d、サンプリング部51eを有し、IPネットワークの通信品質の推定処理を行う。
【0024】
このような構成からなるフロー通信品質推定装置51による本発明に係るネットワーク全体の通信品質の推定技術について説明する。
【0025】
フロー通信品質推定装置51は、図4においてフロー通信品質推定装置42として示すように、IPネットワークを構成するスイッチやルータ等のノードA41とノードB43間のリンクに挿入される形態で利用される。あるいは、ノードにおいてパケットをポートへミラーして、そのポートの先にフロー通信品質推定装置42を設置する構成としても良い。
【0026】
図5において、フロー通信品質推定装置51は、前段ノードからパケットが到着したら、パケットヘッダ解析部51aにおいて、そのパケットのフローキー={発信元IPアドレス(srcIP)、着信先IPアドレス(dstIP)、発信元ポート番号(srcPort)、着信先ポート番号(dstPort)、プロトコル(Protocol)}を読み出し、フロー管理部51bにフローキーを通知する。
【0027】
その後、フロー通信品質推定装置51は、パケットをパケットカウント部51dに転送する。
【0028】
フロー管理部51bは、パケット解析部51aから受信したフローキーが、フロー管理部51b内に存在するフローテーブルFT50にエントリされているフローからのパケットであるか否かを調べ、もしそうであれば、フローテーブルFT50内の到着時刻Tiを読み出して、その値を品質推定部51cに通知する。
【0029】
品質推定部51cは、フロー管理部51bから到着時刻Tiを受け取ったら、フロー通信品質推定装置51自体が測定している現在の時刻Tnowから到着時刻Tiを差し引いた値RTTi=Tnow-Tiを算出し、算出したRTTiを、当該フローiの往復遅延時間の推定値として出力する。
【0030】
パケットカウント部51dでは、パケット到着数Cをカウントしており、パケット到着毎にその方向をみて、該当する方向のカウンタをカウントアップする。そして、その後、カウンタ値をN(Nは予め定めたサンプリング周期)で割った余りが0と等しいか否かをチェックする。
【0031】
もし余りが0であれば、パケットカウント部51dは、当該パケットをサンプリング部51eに転送し、同時に当該パケットを後段ノードに転送する。もし余りが0でなければ、パケットカウント部51dは、単に後段ノードへのみ該パケットを転送する。
【0032】
サンプリング部51eでは、到着パケットのヘッダを読み込み、TCPの通信開始を表すSYNフラグが立っていれば、パケットヘッダ解析部51aへ転送する。
【0033】
あるいは、パケットカウント部51dにおいて、パケット到着毎に0から1の範囲で乱数を発生させ、その結果が1/N以下であれば、当該パケットをパケットヘッダ解析部51aに転送した後に後段ノードにも該パケットを転送し、発生させた乱数が1/N以下でなければ、単に後段ノードへのみ当該パケットを転送するとしても良い。
【0034】
パケットヘッダ解析部51aでは、サンプリング部51eからSYNパケットが転送されてきたならば、当該パケットのフローキーを読み出し、その旨をフロー管理部51bに通知する。
【0035】
フロー管理部51bは、SYNパケットをパケットヘッダ解析部51aから受け取ると、そのフローキーをフローテーブルFT50に新規エントリし、同時に現在の時刻を、フローテーブルFT50内の到着時刻Tiに書き込む。もし、例えばSYNパケットが2回送信されている場合等により、既にフローテーブルFT50にエントリされていた場合には、フローテーブルFT50内の到着時刻Ti現在の時刻に更新する。
【0036】
このようなフロー通信品質推定装置51による処理動作の<第1の実施例>を、図2を用いて説明する。
【0037】
図5に示すフロー通信品質推定装置51は、図2(a)において、ルータA22とルータB24の間に位置する監視点23(監視ポイント)に設置され、エンドホストa21とエンドホストb25間で送受信されるパケットを監視することで、エンドホストa21とエンドホストb25、ルータA22とルータB24を含むネットワークにおける通信品質を推定する。
【0038】
監視点23では、図2(b)に示すフローテーブル(FT)20を保持している。この例では、上述のSYNサンプリングによって、時刻10:00:01に、エンドホストa21とb25の間で通信しているフロー(フローキー{192.168.1.1,192.168.1.2,80,1024,6})のSYNパケットがサンプルされた状態を示しており、フローテーブル(FT)20内のSYNパケット到着時刻Tiに、10:00:01が記録されている。
【0039】
その後、図2(a)のシーケンス図で示すように、10:00:05に同フローiからパケット(Ack)が到着すると、フローテーブル(FT)20においてフローiがエントリされているか否かをチェックし、エントリされていれば、当該SYNパケット到着時刻Tiを読み出し、RTTi=Tnow-Ti=4sと推定する。
【0040】
この例から分かるように、ルータB24からルータA22方向のSYNACKパケットをサンプルすることなく、ルータA22からルータB24方向の、SYNパケット、および(SYN-ACKに対する)Ackパケットさえキャプチャできれば、ネットワーク通信品質の推定を行うのに十分である。
【0041】
また、AckパケットとSYNパケットの到着時刻の差がRTTそのものであるため、Ackパケット到着時に、オンラインで、リアルタイムでRTTを算出することが可能である。
【0042】
このような第1の実施例におけるフロー通信品質推定装置51の処理動作を、図1を用いて説明する。
【0043】
図2のルータA22とルータB24をつなぐリンクにおいて、ルータA22からルータB24の方向に流れるパケットストリームに対して、N個の到着パケットに対し1個のパケットを抽出し(ステップS103)、当該パケットのヘッダ情報を読み込んでTCPの通信開始を表すSYNフラグが立っておりかつ予め用意したフローテーブル(以下、フローテーブルFTとよぶ)に該フローの情報がエントリされていなければ(ステップS104)、当該パケットのフローキー={発信元IPアドレス(srcIP)、着信先IPアドレス(dstIP)、発信元ポート番号(srcPort)、着信先ポート番号(dstPort)、プロトコル(Protocol)}をフローテーブルFT100に新規エントリする(ステップS105)。同時に、当該フローiからのSYNパケット到着時刻TiをフローテーブルFT100にエントリする。
【0044】
ステップS103におけるN個に1個のパケット抽出とは独立に、ルータA22からルータB24方向のパケット到着毎に、当該パケットのフローキー{srcIP#i、dstIP#i、srcPort#i、dstPort#i、Protocol#i}を読み出し、この5つ組のキーが既にフローテーブルFT100にエントリされているか否かを調査し(ステップS101)、既にエントリされている場合、該当するSYNパケットの到着時刻TiをフローテーブルFT100から読み出し、現在の時刻Tnowから到着時刻Tiを差し引いた値Tnow-Tiを当該フローiの往復遅延時間RTTiとして推定し(ステップS102)、これを一定期間継続して測定対象リンクを通過するフローの通信品質を推定する。
【0045】
次に、図3を用いて、<第2の実施例>について説明する。この第2の実施例では、上述の第1の実施例のように、パケット到着毎にパケットヘッダを解析する代わりに、N個に1個の頻度で抽出された当該パケットのフローキー{srcIP#i、dstIP#i、srcPort#i、dstPort#i、Protocol#i}が既にフローテーブルFT30にエントリされている場合、当該パケットのTCPヘッダ内のシーケンス番号SNを読み出し、フローテーブルFT30にエントリされているシーケンス番号SNiと比較して、SN-SNi<閾値であれば、当該パケットはフローテーブルFT30にエントリされているSYNパケットの次に送信されてきたパケットであると判定し、フローテーブルFT30内の当該SYNパケットの到着時刻Tiを読み出し、現在の時刻Tnowから到着時刻Tiを差し引いた値(Tnow-Ti)を当該フローiの往復遅延時間RTTiとして推定する。
【0046】
すなわち、図3(a)に示すように、まず、図2のルータA22からルータB24の方向に流れるパケットストリームに対して、N個の到着パケットに対し1個のパケットを抽出する(ステップS301)。
【0047】
その後、当該パケットのヘッダ情報を読み込んでTCPの通信開始を表すSYNフラグが立っているか否かを判別する(ステップS302)。SYNフラグが立っており、かつ予め用意したフローテーブルFT30に該フローの情報がエントリされていなければ(ステップS304)、当該パケットのフローキー={srcIP、dstIP、srcPort、dstPort、Protocol}をフローテーブルFT30に新規エントリする(ステップS303)。
【0048】
この際、同時に、当該フローiからのSYNパケットの到着時刻Tiおよび当該パケットのTCPヘッダ内のシーケンス番号SNiをフローテーブルFT30にエントリする。
【0049】
N個に1個のパケット抽出された当該パケットのフローキー{srcIP#i、dstIP#i、srcPort#i、dstPort#i、Protocol#i}が既にフローテーブルFT30に既にエントリされている場合(ステップS304)、当該パケットのTCPヘッダ内のシーケンス番号SNを読み出し、フローテーブルFT30にエントリされているSNiと比較して、SN-SNi<閾値であれば(ステップS305)、当該パケットはフローテーブルFT30にエントリされているSYNパケットの次に送信されてきたパケットであると判定し、フローテーブルFT30内のSYNパケット到着時刻Tiを読み出し、現在の時刻TnowからTiを差し引いた値Tnow-Tiを当該フローiの往復遅延時間RTTiとして推定し(ステップS306)、これを一定期間継続して測定対象リンクを通過するフローの通信品質を推定する。
【0050】
この第2の実施例では、第1の実施例のようにパケット到着毎にフローIDがFTにエントリされているかのチェックを行わず、パケットサンプルされたパケットのみの情報を用いている。その際、SYNパケットの次にサンプルされたパケットが、本当にSYNパケットの次のパケットであるかどうかをチェックする必要がある。そこで、シーケンス番号の差をみることで、その判断を行っている。
【0051】
次に<第3の実施例>について説明する。この第3の実施例では、上述の第1の実施例のように{srcIP、dstIP、srcPort、dstPort、Protocol}をキーとしたフローテーブルを、出現した全てのフローを収容できるように作成する代わりに、BloomFilter(BF)を用いる。
【0052】
このBFでは、異なるK個のハッシュ関数(それぞれがキー値をサイズbの範囲内でハッシュ値を返す)と、サイズbのビットマップ(初期状態では全てをゼロにリセットされる)を用意する。
【0053】
N個の到着パケットに対し1個のパケットを抽出し、該パケットヘッダを読み込んでTCPの通信開始を表すSYNフラグが立っていれば、そのパケットの{srcIP、dstIP、srcPort、dstPort、Protocol}を読み出し、それをキーとしてBFのK個のハッシュ関数に入力して得られるK個のハッシュ値を調べ、各ハッシュ値に対応するビットマップ上のビットのうち1つ以上がゼロである場合には、新規フローからのパケットだと判断し、K個の各ハッシュ値に対応するビットマップ上のビットに1をセットする。
【0054】
また、別途用意したフローテーブルFTにフローIDと当該SYNパケット到着時刻Tiをエントリする。
【0055】
N個に1個のパケット抽出とは独立に、パケット到着毎に、当該パケットiのフロー情報{srcIP#i、dstIP#i、srcPort#i、dstPort#i、Protocol#i}を読み出し、これをキーとしてBFのK個のハッシュ関数に入力して得られるK個のハッシュ値を調べ、各ハッシュ値に対応するビットマップ上のビットが全て1である場合には、既にエントリされているフローからのパケットと判断して、フローテーブルFTから当該フローIDの到着時刻Tiを読み出し、現在時刻Tnowを用いて、Tnow-Ti=RTTiとして、当該フローiの往復遅延時間RTTiを推定する。そして、この処理を一定期間継続して測定対象リンクを通過するフローの通信品質を推定する。
【0056】
このように、BFを使うことにより、全てのサンプルフローを管理することなく、必要なパケット収集を可能としている。
【0057】
尚、BloomFilter(BF)を用いる場合に、一定期間BFによるパケット監視を実施した後、BF内のビットを全て0にクリアする。
【0058】
次に<第4の実施例>について説明する。この第4の実施例では、上述の第3の実施例のように、BFを用いて0か1のビット情報を管理する代わりに、K個のハッシュ関数およびb個の時刻情報をエントリする時刻テーブル(初期状態では全てをゼロにリセットされる)を用意する。このメモリは、パケットの到着時刻を記憶するために用いる。
【0059】
例えば図2におけるルータA22からルータB24方向のパケットに関して、N個の到着パケットに対し1個のパケットを抽出し、このパケットのヘッダ情報を読み込んでTCPの通信開始を表すSYNフラグが立っていれば、そのパケットのフロー情報{srcIP、dstIP、srcPort、dstPort、Protocol}を読み出し、それをキーとしてBFのK個のハッシュ関数に入力して得られるK個のハッシュ値を調べ、時刻テーブル内においてK個のハッシュ値に対応する各々の位置(K箇所)における時刻情報を調べ、1つ以上がゼロである場合には、新規フローからのパケットだと判断し、対応する位置に現在の時刻を書き込む。
【0060】
N個に1個のパケット抽出とは独立に、ルータA22からルータB24方向のパケット到着毎にこのパケットiのフロー情報{srcIP#i、dstIP#i、srcPort#i、dstPort#i、Protocol#i}を読み出し、これをキーとしてBFのK個のハッシュ関数に入力して得られるK個のハッシュ値を調べ、時刻テーブル内においてK個のハッシュ値に対応する各々の位置(K箇所)における時刻情報を調べ、全てゼロ以外の値である場合には、その中で最も古い時刻T_oldiを読み出し、現在の時刻Tnowからその最も古い時刻T_oldiを差し引いた値Tnow-T_oldiを、当該フローの往復遅延時間RTTiとして推定する。
【0061】
そして、この処理を一定期間継続して測定対象リンクを通過するフローの通信品質を推定する。尚、BloomFilter(BF)を用いる場合に、一定期間BFによるパケット監視を実施した後、BF内のビットを全て0にクリアする。
【0062】
通常のBFでは、ビットマップを用意するのに対し、ここでは、ビット情報ではなく、パケット到着時刻情報を管理するようにすることにより、第3の実施例のように、別途フローテーブルFTを用意して時刻情報を管理することを不要としている。
【0063】
ビットマップ上の時刻情報のうち、他のフローのSYN到着時にいくつかの時刻情報は上書きされるが、全部が上書きはされないであろうとみなして、最も古い時刻情報を、当該フローのSYNパケット到着時刻とみなし、往復遅延時間RTTを推定している。
【0064】
尚、BloomFilter(BF)は、定期的にクリアしないで長時間継続的に利用すると、全てのビットが1で埋まってしまい、適切な新規フロー判定が困難になるため、上述の第3,第4の実施例のように、一定期間BFによるパケット監視を実施した後、BF内のビットを全て0にクリアする。
【0065】
次に<第5の実施例>について説明する。上述の第3,第4の実施例において、一定期間BFによるパケット監視を実施したらBF内のビットを全て0にクリアしていたが、以下のようにしてもよい。
【0066】
BFを2つ用意し(BF1とBF2とする)、最初の測定期間は、いずれのBFにも同じ処理を施し、2番目以降(偶数番目)の測定期間においては、BF1のみをクリアし、BloomFilterへの書き込み処理、すなわち、上述の第4の実施例における処理のうち、N個に1個サンプルしてSYNがたっていればBFへ入力する処理は、BF1に対してのみ実施する。
【0067】
一方、BloomFilterからの読み出し処理、すなわち、上述の第4の実施例における処理のうち、N個に1個のパケット抽出とは独立にパケット到着毎に到着時刻T_oldiを読み出す処理)は、BF1,2両方に対して実施する。
【0068】
BF2テーブル内の到着時刻T_iが全てゼロ(0)以外の値である場合には、BF2の中で最も古い時刻T_oldiを読み出し、BF2では1つ以上のゼロがありかつBF1は全てゼロ以外の値であればBF1の中で最も古い時刻T_oldiを読み出し、現在の時刻Tnowから上記読み出したT_oldiを差し引いた値(Tnow-T_oldi)を、当該フローiの往復遅延時間RTTiとして算出する。
【0069】
3番目以降(奇数番目)の測定期間では、BF2をクリアし、BloomFilterへの書き込み処理はBF2に対してのみ行う。
【0070】
一方、BloomFilterからの読み出し処理はBF1,2両方に対して実施する。
【0071】
BF1テーブル内の到着時刻T_iが全てゼロ(0)以外の値である場合には、BF1の中で最も古い時刻T_oldiを読み出し、BF1では1つ以上のゼロがありかつBF2は全てゼロ以外の値であればBF2の中で最も古い時刻T_oldiを読み出し、現在の時刻Tnowから上記読み出したT_oldiを差し引いた値(Tnow-T_oldi)を、当該フローiの往復遅延時間RTTiとして算出する。この処理を交互に繰り返す。
【0072】
以下、このように、BFを2つ用意する理由を述べる。
【0073】
フローによっては、遅延時間RTTが非常に大きいものもあるため、SYNパケットを観測してから、その次のAckパケットを検出するのに時間を要する場合がある。対処法としては、BFクリアの周期を長めに設定することが考えられるが、第3,4の実施例でも述べたように、測定周期が長くなると、BFが正しく新規フローの検出をできない可能性がある。
【0074】
そこで、BFを2つ用意して、新規フロー検出(つまりSYNパケット検出)についてはBF1とBF2を交互に使うことにより適切に検出し、その次のAckパケットについては、BF1,2の両方に対して入力し、いずれかのBFに該当するエントリがあるかどうかをみることで、遅延時間RTTの長いAckに対しても対応できるようにしている。
【0075】
次に<第6の実施例>について説明する。上述の第1〜第4の実施例のいずれかによりフローiのRTTiを推定する処理を実行する前に、フローiの{発信元IPアドレスsrcIP#i,着信先IPアドレスdstIP#i}を、予め用意した地理データベースを用いてsrcIP#iの所属するエリアArea#A,およびdstIP#iの所属するエリアArea#Bへマップし、エリアAとエリアBのペア毎に用意したフローテーブルFTにエントリさせる。
【0076】
エリアペア毎に、第1〜第4の実施例のいずれかの処理でフローiの往復遅延時間RTTiを推定し、その処理を一定期間実施して、エリアAとエリアBの間の品質d(A,B)をd(A,B)=ΣsrcIP#i∈A∧dstIP#i∈BRTTi/|srcIP#i∈A∧dstIP#i∈B|により推定する。
【0077】
尚、|srcIP#i∈A∧dstIP#i∈B|は、srcIP#iがエリアAに所属し、かつdstIP#iがエリアBに所属した、フローの数を意味する。
【0078】
このようにすることにより、例えば、県別の品質がどのようになっているかを把握可能である。
【0079】
以上、図1〜図5を用いて説明したように、本例のフロー通信品質推定装置51は、IPネットワークの全体の通信品質状態を管理する際、フロー管理部51bにおいて、ルータ等のノード間のリンクにおいて1方向に流れるパケットストリームに関して、N個の到着パケットに対して1個のパケットを抽出し、フロー情報を読み出して蓄積管理する処理を一定期間継続し、品質推定部51cにおいて、当該フロー情報を用いて測定対象リンクを通過するフローの通信品質を推定する。
【0080】
このように、ネットワークへの余分な負荷を加えてしまう能動的な測定を行わず、かつ、ネットワークの全パケットキャプチャを行うことなく、また、片方向のみのトラヒック測定によって、ネットワーク全体の品質をオンラインで推定することが可能である。
【0081】
尚、本発明は、図1〜図5を用いて説明した例に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能である。例えば、図2の例では、監視点の設置個所としてルータA,B間を例示しているが、スイッチ間であっても良い。
【0082】
また、本例のコンピュータ構成に関しても、キーボードや光ディスクの駆動装置の無いコンピュータ構成としても良い。また、本例では、光ディスクを記録媒体として用いているが、FD(Flexible Disk)等を記録媒体として用いることでも良い。また、プログラムのインストールに関しても、通信装置を介してネットワーク経由でプログラムをダウンロードしてインストールすることでも良い。
【符号の説明】
【0083】
22,30,50,100:フローテーブルFT、21:エンドホストa、22:ルータA、23:監視点、24:ルータB、25:エンドホストb、41:ノードA、42:フロー通信品質推定装置、43:ノードB、51:フロー通信品質推定装置、51a:パケットヘッダ解析部、51b:フロー管理部、51c:品質推定部、51d:パケットカウント部、51e:サンプリング部。

【特許請求の範囲】
【請求項1】
コンピュータ装置により、通信網を構成するノードAとノードB間のリンクにおけるトラヒックを監視してフローの通信品質を算出するフロー通信品質推定方法であって、
上記コンピュータ装置は、プログラムされたコンピュータ処理を実行する手段として、パケット処理手段を具備し、
該パケット処理手段は、
上記ノードAから上記ノードBの方向に流れるパケットストリームに対して、N個の到着パケット毎に1個のパケットを抽出する第1の手順と、
抽出したパケットのヘッダ情報を読み込んでTCPの通信開始を表すSYNフラグが立っておりかつ予め用意したフローテーブルFTに当該パケットの発信元IPアドレス(srcIP)、着信先IPアドレス(dstIP)、発信元ポート番号(srcPort)、着信先ポート番号(dstPort)、プロトコル(Protocol)からなるフロー情報がエントリされていなければ、該SYNパケットのフロー情報{発信元IPアドレス(srcIP)、着信先IPアドレス(dstIP)、発信元ポート番号(srcPort)、着信先ポート番号(dstPort)、プロトコル(Protocol)}をフローキーとして該SYNパケットの到着時刻を上記フローテーブルFTに新規エントリする第2の手順と、
上記N個毎のパケット抽出とは独立に、上記ノードAから上記ノードB方向のパケットが到着する毎に、当該パケット#iのフローキー{srcIP#i、dstIP#i、srcPort#i、dstPort#i、Protocol#i}を読み出し、該読み出したフローキーが既に上記フローテーブルFTにエントリされているか否かを調査する第3の手順と、
既にエントリされている場合、該フローテーブルFTにおいて当該フローキーに対応付けてエントリされているSYNパケットiの到着時刻Tiを読み出し、現在の時刻Tnowから上記読み出した到着時刻Tiを差し引いた値(Tnow-Ti)を当該フローiの往復遅延時間RTTiとして算出する第4の手順とを実行し、
上記第1から第4の手順を、予め定められた期間継続して繰り返すことで、測定対象リンクを通過するフローの通信品質を推定することを特徴とするフロー通信品質推定方法。
【請求項2】
コンピュータ装置により、通信網を構成するノードAとノードB間のリンクにおけるトラヒックを監視してフローの通信品質を算出するフロー通信品質推定方法であって、
上記コンピュータ装置は、プログラムされたコンピュータ処理を実行する手段として、パケット処理手段を具備し、
該パケット処理手段は、
上記ノードAから上記ノードBの方向に流れるパケットストリームに対して、N個の到着パケット毎に1個のパケットを抽出する第1の手順と、
抽出したパケットのヘッダ情報を読み込んでTCPの通信開始を表すSYNフラグが立っておりかつ予め用意したフローテーブルFTに当該パケットの発信元IPアドレス(srcIP)、着信先IPアドレス(dstIP)、発信元ポート番号(srcPort)、着信先ポート番号(dstPort)、プロトコル(Protocol)からなるフロー情報がエントリされていなければ、該SYNパケットiのフロー情報をフローキーとして該SYNパケットiの到着時刻TiおよびTCPヘッダ内のシーケンス番号SNiを上記フローテーブルFTに新規にエントリする第2の手順と、
上記N個毎に抽出されたパケットのフロー情報が上記フローテーブルFTに既にエントリされている場合、当該パケットのTCPヘッダ内のシーケンス番号SNを読み出し、上記フローテーブルFTに既にエントリされているシーケンス番号SNiと比較する第3の手順と、
比較の結果、SN-SNi<閾値であれば、当該パケットは上記フローテーブルFTにエントリされているSYNパケットの次に送信されてきたパケットであると判定して、上記フローテーブルFTにエントリされているSYNパケットの到着時刻Tiを読み出し、現在の時刻Tnowから上記到着時刻Tiを差し引いた値(Tnow-Ti)を当該フローiの往復遅延時間RTTiとして算出する第4の手順とを実行し、
上記第1から第4の手順を、予め定められた期間継続して繰り返すことで、測定対象リンクを通過するフローの通信品質を推定することを特徴とするフロー通信品質推定方法。
【請求項3】
コンピュータ装置により、通信網を構成するノードAとノードB間のリンクにおけるトラヒックを監視してフローの通信品質を算出するフロー通信品質推定方法であって、
上記コンピュータ装置は、プログラムされたコンピュータ処理を実行する手段として、パケット処理手段を具備し、
該パケット処理手段は、
上記ノードAから上記ノードBの方向に流れるパケットに対して、N個の到着パケット毎に1個のパケットを抽出する第1の手順と、
抽出したパケットのヘッダ情報を読み込んでTCPの通信開始を表すSYNフラグが立っていれば、該SYNパケットの発信元IPアドレス(srcIP)、着信先IPアドレス(dstIP)、発信元ポート番号(srcPort)、着信先ポート番号(dstPort)、プロトコル(Protocol)からなるフロー情報を読み出し、読み出したフロー情報をフローキーとして、BloomFilter(BF)のK個のハッシュ関数に入力して得られるK個のハッシュ値を調べ、各ハッシュ値に対応するビットマップ上のビットのうち1つ以上がゼロである場合には、新規フローからのパケットだと判断し、K個の各ハッシュ値に対応するビットマップ上のビットに1をセットすると共に、予め用意したフローテーブルFTに、上記フローキーと当該SYNパケットの到着時刻Tiをエントリする第2の手順と、
上記N個毎のパケット抽出とは独立に、上記ノードAから上記ノードB方向のパケット到着毎に当該パケットiのフロー情報{srcIP#i、dstIP#i、srcPort#i、dstPort#i、Protocol#i}を読み出し、読み出したフロー情報をフローキーとして上記BFのK個のハッシュ関数に入力して得られるK個のハッシュ値を調べる第3の手順と、
調べた結果、各ハッシュ値に対応するビットマップ上のビットが全て1である場合には、上記パケットiが既に上記フローテーブルFTにエントリされているフローからのパケットと判断して、上記フローテーブルFTから当該SYNパケットiの到着時刻Tiを読み出し、Tnow-Ti=RTTiとして当該フローiの往復遅延時間RTTiを算出する第4の手順とを実行し、
上記第1から第4の手順を、予め定められた期間継続して繰り返すことで、測定対象リンクを通過するフローの通信品質を推定することを特徴とするフロー通信品質推定方法。
【請求項4】
コンピュータ装置により、通信網を構成するノードAとノードB間のリンクにおけるトラヒックを監視してフローの通信品質を算出するフロー通信品質推定方法であって、
上記コンピュータ装置は、プログラムされたコンピュータ処理を実行する手段として、パケット処理手段を具備し、
該パケット処理手段は、
上記ノードAから上記ノードBの方向に流れるパケットに対して、N個の到着パケット毎に1個のパケットを抽出する第1の手順と、
抽出したパケットのヘッダ情報を読み込んでTCPの通信開始を表すSYNフラグが立っていれば、該SYNパケットの発信元IPアドレス(srcIP)、着信先IPアドレス(dstIP)、発信元ポート番号(srcPort)、着信先ポート番号(dstPort)、プロトコル(Protocol)からなるフロー情報を読み出し、読み出したフロー情報をフローキーとして、BloomFilter(BF)のK個のハッシュ関数に入力して得られるK個のハッシュ値を調べ、予め用意された、K個のハッシュ関数およびb個の時刻情報をエントリする時刻テーブル内においてK個のハッシュ値に対応する各々の位置(K箇所)における時刻情報を調べ、1つ以上がゼロである場合には、新規フローからのパケットだと判断し、上記時刻テーブル内において対応する位置に現在の時刻を、当該SYNパケットの到着時刻Tiとしてエントリする第2の手順と、
上記N個毎のパケット抽出とは独立に、上記ノードAから上記ノードB方向のパケット到着毎に当該パケットiのフロー情報{srcIP#i、dstIP#i、srcPort#i、dstPort#i、Protocol#i}を読み出し、読み出したフロー情報をフローキーとして上記BFのK個のハッシュ関数に入力して得られるK個のハッシュ値を調べる第3の手順と、
調べた結果、上記時刻テーブル内においてK個のハッシュ値に対応する各々の位置(K箇所)における時刻情報を調べ、全てゼロ以外の値である場合には、最も古い時刻T_oldiを読み出し、現在の時刻Tnowから上記読み出した最も古い時刻T_oldiを差し引いた値(Tnow-T_oldi)を、当該フローiの往復遅延時間RTTiとして算出する第4の手順とを実行し、
上記第1から第4の手順を、予め定められた期間継続して繰り返すことで、測定対象リンクを通過するフローの通信品質を推定することを特徴とするフロー通信品質推定方法。
【請求項5】
請求項3もしくは請求項4のいずれかに記載のフロー通信品質推定方法であって、
上記パケット処理手段は、
予め定められた期間、上記BloomFilter(BF)を用いたパケット監視を実施した後、該BF内のビットを全て0にクリアする手順を実行することを特徴とするフロー通信品質推定方法。
【請求項6】
コンピュータ装置により、通信網を構成するノードAとノードB間のリンクにおけるトラヒックを監視してフローの通信品質を算出するフロー通信品質推定方法であって、
上記コンピュータ装置は、プログラムされたコンピュータ処理を実行する手段として、パケット処理手段を具備し、
該パケット処理手段は、第1,第2のBloomFilter(BF)を用いた下記第1から第4の手順を、予め定められた期間継続して繰り返すことで、測定対象リンクを通過するフローの通信品質を推定することを特徴とするフロー通信品質推定方法。
第1の手順:
上記ノードAから上記ノードBの方向に流れるパケットに対して、N個の到着パケット毎に1個のパケットを抽出する。
第2の手順:
最初の期間では、上記抽出したパケットのヘッダ情報を読み込んでTCPの通信開始を表すSYNフラグが立っていれば、該SYNパケットの発信元IPアドレス(srcIP)、着信先IPアドレス(dstIP)、発信元ポート番号(srcPort)、着信先ポート番号(dstPort)、プロトコル(Protocol)からなるフロー情報を読み出し、読み出したフロー情報をフローキーとして、第1および第2のBloomFilter(BF)それぞれ両方のK個のハッシュ関数に入力して得られるK個のハッシュ値を調べ、予め上記第1,第2のBF毎に用意された、K個のハッシュ関数およびb個の時刻情報をエントリする時刻テーブル内においてK個のハッシュ値に対応する各々の位置(K箇所)における時刻情報を調べ、1つ以上がゼロである場合には、新規フローからのパケットだと判断し、上記各時刻テーブル内において対応する位置に現在の時刻を、当該SYNパケットの到着時刻Tiとしてエントリし、
2番目以降の偶数番目の期間では、上記第1のBFのみをクリアして、該第1のBFに対してのみ上記時刻テーブルに対する上記SYNパケットの到着時刻Tiのエントリ処理を行い、
3番目以降の奇数番目の期間では、上記第2のBFのみをクリアして、該第2のBFに対してのみ上記時刻テーブルに対する上記SYNパケットの到着時刻Tiのエントリ処理を行う。
第3の手順:
上記N個毎のパケット抽出とは独立に、上記ノードAから上記ノードB方向のパケット到着毎に当該パケットiのフロー情報{srcIP#i、dstIP#i、srcPort#i、dstPort#i、Protocol#i}を読み出し、読み出したフロー情報をフローキーとして上記第1,第2のBFそれぞれ両方のK個のハッシュ関数に入力して得られるK個のハッシュ値を調べる。
第4の手順:
上記第3の手順で調べた結果、上記各時刻テーブル内においてK個のハッシュ値に対応する各々の位置(K箇所)における時刻情報を調べ、
奇数番目の期間では、上記第1のBFが全てゼロ以外の値である場合には、該第1のBFの中で最も古い時刻T_oldiを読み出し、該第1のBFでは1つ以上のゼロがありかつ上記第2のBFは全てゼロ以外の値であれば該第2のBFの中で最も古い時刻T_oldiを読み出し、現在の時刻Tnowから上記読み出したT_oldiを差し引いた値(Tnow-T_oldi)を、当該フローiの往復遅延時間RTTiとして算出し、
偶数番目の期間では、上記第2のBFが全てゼロ以外の値である場合には、該第2のBFの中で最も古い時刻T_oldiを読み出し、該第2のBFでは1つ以上のゼロがありかつ上記第1のBFは全てゼロ以外の値であれば該第1のBFの中で最も古い時刻T_oldiを読み出し、現在の時刻Tnowから上記読み出したT_oldiを差し引いた値(Tnow-T_oldi)を、当該フローiの往復遅延時間RTTiとして算出する。
【請求項7】
請求項1から請求項4のいずれかに記載のフロー通信品質推定方法であって、
上記パケット処理手段は、
上記フローiのフロー情報の内の発信元IPアドレスsrcIP#iと着信先IPアドレスdstIP#iを、予め用意した地理データベースを用いて、発信元IPアドレスsrcIP#iの所属するエリアArea#A、および、着信先IPアドレスdstIP#iの所属するエリアArea#Bに分けて登録すると共に、
上記エリアArea#Aおよび上記エリアArea#Bのエリアペア毎に用意した上記フローテーブルFTに上記第2の手順による新規エントリを行い、
上記エリアペア毎に、上記第3の手順と上記第4の手順によるフローiの往復遅延時間RTTiの算出を行い、
上記第1から第4の手順を、予め定められた期間継続して繰り返すことで、上記エリアArea#Aと上記エリアArea#B間のフローの通信品質d(A,B)を、
上記エリアArea#Aおよび上記エリアArea#Bに所蔵するフローの数(|srcIP#i∈A∧dstIP#i∈B|)を用いて、
d(A,B)=ΣsrcIP#i∈A∧dstIP#i∈BRTTi/|srcIP#i∈A∧dstIP#i∈B|により算出する
ことを特徴とするフロー通信品質推定方法。
【請求項8】
プログラムされたコンピュータ処理により、通信網を構成するノードAとノードB間のリンクにおけるトラヒックを監視してフローの通信品質を算出する通信品質推定装置であって、
プログラムされたコンピュータ処理を実行する手段として、
請求項1から請求項7のいずれかに記載のフロー通信品質推定方法における各手順を実行するパケット処理手段を具備したことを特徴とするフロー通信品質推定装置。
【請求項9】
コンピュータに、請求項1から請求項7のいずれかに記載のフロー通信品質推定方法におけるパケット処理手段による各手順を実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate