(57)【特許請求の範囲】
【請求項１】
通信網において、ノードAとノードBを接続するリンクにおいてトラヒックを監視してフローの通信品質を推定するためのフロー通信品質推定装置が実行するフロー通信品質推定方法であって、
前記フロー通信品質推定装置は、各要素i（iは１以上の整数）がカウンター値Ciを保持するビットマップを格納するビットマップ記憶手段と、時刻テーブルを格納する時刻テーブル記憶手段とを有し、
ノードAからノードBの方向に流れる第１パケットを検知すると、当該第１パケットのフローキーi＝{srcIP#i，dstIP#i，srcPort#i，dstPort#i}を読み出し、これをキーとしてK（Kは１以上の整数）個のハッシュ関数に入力して得られるK個のハッシュ値を求め、前記ビットマップ記憶手段を参照し、そのハッシュ値に対応するビットマップ位置のカウンター値Ciを１つ増加させるとともに、前記時刻テーブル記憶手段における時刻テーブル上のK個のハッシュ値に対応する位置の時刻を現在の時刻Tnowにセットする第１ステップと、
ノードBからノードAの方向に流れる第２パケットを検知すると、フローキーi＝{srcIP#i，dstIP#i，srcPort#i，dstPort#i}を読み出し、srcIPとdstIP、srcPortとdstPortを入れ替えたキーである逆転キーを作成し、当該逆転キーを入力としてK個のハッシュ値を求める第２ステップと、
第２ステップで求めたK個のハッシュ値に対応するK箇所のビットマップ位置のカウンター値CiがいずれもCi≧１であるか否かを判断する第３ステップと、
第３ステップにおいて、K箇所のビットマップ位置のカウンター値CiがいずれもCi≧１である場合に、当該K箇所のカウンター値を１つ減少させ、前記時刻テーブルから該当するK箇所の時刻を読み出し、その中で最も古い時刻T_oldiを抽出し、現在の時刻Tnowからその最も古い時刻T_oldiを差し引いた値Tnow - T_oldiを求め、当該値をフローキーiに対応するフローの往復伝播遅延時間RTTiとして推定する第４ステップと
を有することを特徴とするフロー通信品質推定方法。
【請求項２】
通信網において、ノードAとノードBを接続するリンクにおいてトラヒックを監視してフローの通信品質を推定するためのフロー通信品質推定装置が実行するフロー通信品質推定方法であって、
前記フロー通信品質推定装置は、各要素i（iは１以上の整数）がカウンター値Ciを保持するビットマップを格納するビットマップ記憶手段と、時刻テーブルを格納する時刻テーブル記憶手段とを有し、
ノードAからノードBの方向に流れる第１パケットを検知すると、当該第１パケットのフローキーi＝{srcIP#i，dstIP#i，srcPort#i，dstPort#i}を読み出し、これをキーとしてK（Kは１以上の整数）個のハッシュ関数に入力して得られるK個のハッシュ値を求め、前記ビットマップ記憶手段を参照し、そのハッシュ値に対応するビットマップ位置のカウンター値Ciを１つ増加させるとともに、前記時刻テーブル記憶手段における時刻テーブル上のK個のハッシュ値に対応する位置の時刻を現在の時刻Tnowにセットする第１ステップと、
ノードBからノードAの方向に流れる第２パケットを検知すると、フローキーi＝{srcIP#i，dstIP#i，srcPort#i，dstPort#i}を読み出し、srcIPとdstIP、srcPortとdstPortを入れ替えたキーである逆転キーを作成し、当該逆転キーを入力としてK個のハッシュ値を求める第２ステップと、
第２ステップで求めたK個のハッシュ値に対応するK箇所のビットマップ位置のカウンター値CiがいずれもCi≧１であるか否かを判断する第３ステップと、
第３ステップにおいて、K箇所のビットマップ位置のカウンター値CiがいずれもCi≧１である場合に、前記時刻テーブルからハッシュ値に対応するK個の時刻情報Tiを読み出し、予め定めたタイムアウト時間Toutを閾値として、Tnow - Ti>Toutかどうかを判断し、K個のうち少なくとも１つの時刻がタイムアウトしている場合に、前記ビットマップにおけるタイムアウトしている要素のみのカウンター値Ciを１つ減少させ、RTT計算を実施せず、K個の時刻がいずれもタイムアウトしていない場合に、該当するK箇所の時刻を読み出し、その中で最も古い時刻T_oldiを抽出し、現在の時刻Tnowからその最も古い時刻T_oldiを差し引いた値Tnow - T_oldiを求め、当該値をフローキーiに対応するフローの往復伝播遅延時間RTTiとして推定し、K箇所のカウンター値を１つ減少させる第４ステップと
を有することを特徴とするフロー通信品質推定方法。
【請求項３】
前記第１ステップ及び前記第２ステップにおいて、
K個のハッシュ値を求めた後、K個のハッシュ値hi (i=1〜K)に対して、hi/max（maxはハッシュ関数の取りうる値の最大値）を調べ、K個のハッシュ値のいずれもhi/max<p^(1/K) (pは予め定めるサンプリングレートで、0<p<1) を満たす場合にのみ、K個のハッシュ値を求めた後の各処理を実行する
ことを特徴とする請求項１または２に記載のフロー通信品質推定方法。
【請求項４】
前記第１パケットはSYNパケットであり、前記第２パケットはSYN ACKパケットであることを特徴とする請求項１ないし３のうちいずれか１項に記載のフロー通信品質推定方法。
【請求項５】
前記第１パケットはSYN ACKパケットであり、前記第２パケットはACKパケットであることを特徴とする請求項１ないし３のうちいずれか１項に記載のフロー通信品質推定方法。
【請求項６】
請求項１ないし５のうちいずれか１項に記載のフロー通信品質推定方法における各ステップを実行する手段を備えたことを特徴とするフロー通信品質推定装置。
【請求項７】
前記ビットマップ記憶手段と前記時刻テーブル記憶手段を備えるコンピュータに、請求項１ないし５のうちいずれか１項に記載のフロー通信品質推定方法における各ステップを実行させるためのフロー通信品質推定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、IPネットワークの通信品質状態を管理する方法に関するものである。
【背景技術】
【０００２】
近年、IPネットワークが広く利用されてくるに伴って、IPネットワーク上での通信品質保証に対する要求が高まっている。それに伴い、ネットワークを流れるトラヒックを測定して現在の通信品質状態を把握することが重要になってきている。エンドエンド遅延時間やパケット損失率、スループットといった品質を把握する直接的な方法としては、エンドエンド間で試験パケットを送受信することにより品質を能動的に測定する方法がある。このような方法の例として、pingコマンドによる往復遅延測定や、非特許文献１に開示さされたpathchar等がある。その他、例えば非特許文献２では着目するエンドホスト間において、試験パケットによるラウンドトリップタイムやパケット損失率の測定および経路上のボトルネック帯域の測定を実施し、かつ、実際にTCPで通信を行ってスループットを測定し、ウインドーサイズを徐々に大きくしていったときにTCPスループットが増加するかどうか等を詳細に解析する方法を提案している。
【０００３】
しかし、一般にこれらの方法は、ある特定のエンドホスト間で品質の把握やトラブルシューティング的に品質劣化要因を特定するのに適した方法であり、ネットワーク提供者がネットワーク内の通信を全体的に管理するのに直接適用すると測定コストの増大およびネットワークへの測定負荷の増大が生じてしまう。具体的には、監視対象となるネットワークの入り側および出側全てに試験パケット送受信機を設置して、試験パケットを送信することによって品質測定を能動的に行う必要があり、測定装置コストが増大してしまう。さらに、試験パケットをネットワークへ付加するため、ネットワークへ余分なトラヒックが加わるという問題と、その結果、試験トラヒックによってネットワークの品質自体が劣化してしまうという問題があった。
【０００４】
上記能動的測定以外の方法として、着目するエンドエンド間トラヒックの流れる箇所において、そこを通過するパケットをキャプチャして解析し、ネットワークの状態を把握する方法がある。例えば、ACEと呼ばれる非特許文献３に開示されたツールでは、パケットキャプチャデータから、エンドエンド間のレスポンス時間や、その内訳（ネットワーク内での遅延とサーバでの遅延）を分析可能とする。また、非特許文献４に開示されたツールでも往復遅延等を分析可能である。
【０００５】
しかし、上記の方法は、一般に、ある特定のエンドホスト間で品質の把握やトラブルシューティング的に品質劣化要因を特定するのに適した方法であり、ネットワーク全体でのユーザフロー通信品質を測定するためには、回線を流れるパケットを全てキャプチャしてパケットヘッダ情報の解析、およびフロー情報の解析が必要だが、回線速度が高速になるにつれて全てのパケットをキャプチャして処理することが困難になってきている。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】http://www.caida.org/tools/utilities/others/pathchar/  （平成２４年３月１３日検索）
【非特許文献２】的場 一峰, 阿多 信吾, 村田 正幸, "インターネットにおける計測に基づいたボトルネック特定手法," 電子情報通信学会 テレコミュニケーションマネジメント研究会, pp. 65 - 70, November 2000.
【非特許文献３】http://www.opnet.com/solutions/application_performance/ace.html（平成２４年３月１３日検索）
【非特許文献４】http://www.tcptrace.org/（平成２４年３月１３日検索）
【非特許文献５】川口, "広域ネットワークの遅延分布モニタリング分析," 信学技報CQ2010-20, 2010 年7 月.
【非特許文献６】川原，川口，森，上山，石橋，``ハッシュベースサンプリングとbloom filterを用いたRTT推定法とその評価,'' 信学技報, vol. 110, no. 341, IN2010-102, pp. 31-36, 2010年12月.
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は上記の問題点に鑑みてなされたものであり、能動的な測定を行わず、かつ、ネットワークの全パケットキャプチャや全フローの状態管理を行うことなく、オンラインで通信品質を推定する技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記の課題を解決するために、本発明は、通信網において、ノードAとノードBを接続するリンクにおいてトラヒックを監視してフローの通信品質を推定するためのフロー通信品質推定装置が実行するフロー通信品質推定方法であって、
前記フロー通信品質推定装置は、各要素i（iは１以上の整数）がカウンター値Ciを保持するビットマップを格納するビットマップ記憶手段と、時刻テーブルを格納する時刻テーブル記憶手段とを有し、
ノードAからノードBの方向に流れる第１パケットを検知すると、当該第１パケットのフローキーi＝{srcIP#i，dstIP#i，srcPort#i，dstPort#i}を読み出し、これをキーとしてK（Kは１以上の整数）個のハッシュ関数に入力して得られるK個のハッシュ値を求め、前記ビットマップ記憶手段を参照し、そのハッシュ値に対応するビットマップ位置のカウンター値Ciを１つ増加させるとともに、前記時刻テーブル記憶手段における時刻テーブル上のK個のハッシュ値に対応する位置の時刻を現在の時刻Tnowにセットする第１ステップと、
ノードBからノードAの方向に流れる第２パケットを検知すると、フローキーi＝{srcIP#i，dstIP#i，srcPort#i，dstPort#i}を読み出し、srcIPとdstIP、srcPortとdstPortを入れ替えたキーである逆転キーを作成し、当該逆転キーを入力としてK個のハッシュ値を求める第２ステップと、
第２ステップで求めたK個のハッシュ値に対応するK箇所のビットマップ位置のカウンター値CiがいずれもCi≧１であるか否かを判断する第３ステップと、
第３ステップにおいて、K箇所のビットマップ位置のカウンター値CiがいずれもCi≧１である場合に、当該K箇所のカウンター値を１つ減少させ、前記時刻テーブルから該当するK箇所の時刻を読み出し、その中で最も古い時刻T_oldiを抽出し、現在の時刻Tnowからその最も古い時刻T_oldiを差し引いた値Tnow - T_oldiを求め、当該値をフローキーiに対応するフローの往復伝播遅延時間RTTiとして推定する第４ステップと、を有することを特徴とするフロー通信品質推定方法として構成される。
【０００９】
また、本発明は、前記フロー通信品質推定方法において、第４ステップを以下の第４ステップに変更したフロー通信品質推定方法として構成することもできる。
【００１０】
当該第４ステップは、第３ステップにおいて、K箇所のビットマップ位置のカウンター値CiがいずれもCi≧１である場合に、前記時刻テーブルからハッシュ値に対応するK個の時刻情報Tiを読み出し、予め定めたタイムアウト時間Toutを閾値として、Tnow - Ti>Toutかどうかを判断し、K個のうち少なくとも１つの時刻がタイムアウトしている場合に、前記ビットマップにおけるタイムアウトしている要素のみのカウンター値Ciを１つ減少させ、RTT計算を実施せず、K個の時刻がいずれもタイムアウトしていない場合に、該当するK箇所の時刻を読み出し、その中で最も古い時刻T_oldiを抽出し、現在の時刻Tnowからその最も古い時刻T_oldiを差し引いた値Tnow - T_oldiを求め、当該値をフローキーiに対応するフローの往復伝播遅延時間RTTiとして推定し、K箇所のカウンター値を１つ減少させるステップである。
【００１１】
前記各フロー通信品質推定方法での前記第１ステップ及び前記第２ステップにおいて、K個のハッシュ値を求めた後、K個のハッシュ値hi (i=1〜K)に対して、hi/max（maxはハッシュ関数の取りうる値の最大値）を調べ、K個のハッシュ値のいずれもhi/max<p^(1/K) (pは予め定めるサンプリングレートで、0<p<1) を満たす場合にのみ、K個のハッシュ値を求めた後の各処理を実行するようにしてもよい。
【００１２】
例えば、前記第１パケットはSYNパケットであり、前記第２パケットはSYN ACKパケットである。また、前記第１パケットはSYN ACKパケットであり、前記第２パケットはACKパケットであることとしてもよい。
【００１３】
また、本発明は、フロー通信品質推定方法における各ステップを実行する手段を備えたことを特徴とするフロー通信品質推定装置として構成することもできるし、前記ビットマップ記憶手段と前記時刻テーブル記憶手段を備えるコンピュータに、フロー通信品質推定方法における各ステップを実行させるためのフロー通信品質推定プログラムとして構成することもできる。
【発明の効果】
【００１４】
本発明によれば、ネットワークへの余分な負荷を加えてしまう能動的な測定を行わず、かつ、ネットワークの全パケットキャプチャを行うことなく、ネットワーク全体の通信品質をオンラインで推定することが可能となる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施の形態の原理を説明するための図である。
【図２】本発明の実施例に係るシステム構成例を示す図である。
【図３】本発明の実施例に係るフロー通信品質推定装置１０の構成例を示す図である。
【図４】フロー通信品質推定装置１０の処理のフローチャートを示す図である。
【図５】本発明の実施例を適用した実験結果である。
【発明を実施するための形態】
【００１６】
以下、図面を参照して本発明の実施の形態を説明する。なお、以下で説明する実施の形態は一例に過ぎず、本発明が適用される実施の形態は、以下の実施の形態に限られるわけではない。
【００１７】
（実施の形態の原理、概要）
まず、図１を用いて、本実施の形態における基本的な考え方について説明する。図１に示すように、ルータAとルータBの間に監視点（後述するフロー通信品質推定装置１０に相当する）を設ける。この監視点において、ルータAからルータB方向およびルータBからルータA方向のパケットを監視しているとする。本実施の形態では、TCP通信における３way handshake（SYN, SYN ACK, ACK）を用いたRTT推定を行うため、SYNパケット、SYN ACKパケット、ACKパケットのいずれかを監視する。なお、本実施の形態では、TCP通信における３way handshakeを用いてRTT推定を行うが、本発明は、TCP通信における３way handshakeに限らずに適用可能である。
【００１８】
図１に示すように、エンドホストXとYの間のフローiからSYNパケットが監視点に時刻Ti=10:00:01に到着したとし、それを記憶しておく。それに対する応答SYN ACKが時刻Tnow=10:00:03に観測されたら、監視点からエンドホストYまでの往復遅延時間RTT_SAiをRTT_SAi=Tnow - Ti=２秒、と推定できる。さらに、SYN ACKに対するACKがTnow=10:00:05に観測されたら、エンドホストX-Y間の往復遅延時間RTTi=Tnow - Ti=4秒と推定できる。また、RTT_AiもRTT_SAi推定と同様に、RTT_Ai={SYN ACK到着時刻 - ACK到着時刻}により推定できる。
【００１９】
本実施の形態では、上記のRTT推定の動作をベースにしている。ただし、本実施の形態では、フロー毎にTiを管理する代わりに、フローの通信状態を管理するためのメモリとしてBloom Filter(BF)を利用する。BFでは、異なるK（Kは１以上の整数）個のハッシュ関数（それぞれが入力キーに対してb（ｂは１以上の整数）個の配列位置のいずれかにマッピングする）とサイズbのビットマップ（各要素i (i=1からb)は、カウンター値Ciを保持できるものとし、初期状態では全てのiに対してCi=0とする）を用意する。また、b個の時刻情報をエントリする時刻テーブル（初期状態では全てをゼロにリセットされる）を用意する。この時刻テーブルメモリは、パケットの到着時刻を記憶するために用いられ、BFにおけるビットマップのi番目の要素に対応するパケットが到着した場合に、本時刻管理テーブルのi番目のエントリにそのときの時刻をエントリする。こうすることで、全フローの状態に要するフローテーブルメモリコストを削減する。 
＜第１の方法＞
本実施の形態の第１の方法においては、ルータAからルータBの方向に流れるSYNパケットに対して、該パケットのフローキーi＝{srcIP#i，dstIP#i，srcPort#i，dstPort#i}を読み出し、これをキーとしてK個のハッシュ関数に入力して得られるK個のハッシュ値を調べ、そのハッシュ値に対応するK個のビットマップ位置のカウンター値Ciを１つ増加させる。また、対応する時刻テーブル上の時刻を現在の時刻Tnowにセットする。
【００２０】
一方、ルータBからルータA方向に流れるSYN ACKパケットに対して、フローキーi＝{srcIP#i，dstIP#i，srcPort#i，dstPort#i}を読み出し、srcIPとdstIP、srcPortとdstPortを入れ替えたキー（逆転キーとよぶ）を作成し、K個のハッシュ値を調べ、対応するビットマップ位置のカウンターの値をチェックする。該当するK箇所のカウンター値CiのいずれもCi≧１であれば、Ci←Ci-1とし、また該当するK箇所の時刻を読み出し、その中で最も古い時刻T_oldiを抽出し、現在の時刻Tnowからその最も古い時刻T_oldiを差し引いた値Tnow - T_oldiを該フローの往復伝播遅延時間RTTiとして推定する。
【００２１】
本第１の方法においては、時刻テーブル上の時刻情報のうち、他のフローのSYN到着時にいくつかの時刻情報は上書きされるが、全部が上書きはされないであろうとみなして、最も古い時刻情報を該フローのSYNパケット到着時刻とみなし、RTTを推定している。
【００２２】
また、BA方向のSYN ACKパケット到着時に、ビットマップ上のK箇所のカウンター値Ciが全て１以上かどうかをチェックすることで、対応するSYNパケットがAB方向で以前に観測されているかどうかを判断している。
【００２３】
また、SYN ACK到着時にCiを減少させることで、RTT計算処理が済んだSYN-SYNACKパケットの組についての情報をビットマップ上から削減可能としている。このようにすることで、SYN floodingのような異常トラヒックが発生した場合でも、ビットマップが埋め尽くされてしまうことを回避できる。
【００２４】
＜第２の方法＞
本実施の形態の第２の方法においては、ルータBからルータA方向のSYN ACKパケット監視時の第１の方法での手順を以下のように変える。  
K個のハッシュ値を求めた後、該当するK箇所のカウンター値CiのいずれもCi≧１であれば、次に、K個の時刻情報Tiを読み出す。予め定めたタイムアウト時間Toutを閾値として、Tnow - Ti>Toutかどうかチェックし、K個のうち一つでもタイムアウトしている場合には、タイムアウトしている要素のみCi←Ci-1とし、RTT計算は実施しない。K個ともタイムアウトしていない場合、該当するK箇所の時刻を読み出し、その中で最も古い時刻T_oldiを読み出し、現在の時刻Tnowからその最も古い時刻T_old iを差し引いた値Tnow - T_oldiを該フローの往復伝播遅延時間RTTiとして推定する。その後、K個のカウンター値をそれぞれCi←Ci-1とする。
【００２５】
本第２の方法においては、このようにタイムアウト値を設定することで、ネットワーク上での遅延時間とは考えにくいRTT計算結果を出力するエントリを除外している。タイムアウト値としては、例えば３秒と設定することが考えられる。その理由として、数秒以上のRTT が観測される場合、これは、ネットワーク上での遅延とは考えにくく、SYN パケット損失に伴う再送のためと考えられる。非特許文献５によると、TCPの初期RTO (retransmission time out) は通常3 秒に設定されているためにそれ以上のRTT が観測されてしまう点が指摘されているからである。
【００２６】
＜第３の方法＞
第１または２の方法において、AB方向のSYNパケット、およびBA方向のSYN ACKパケットについてRTTを推定していた代わりに、AB方向のSYN ACKパケットおよびBA方向のACKパケットについて同様の手順を実施してRTTを推定する。
【００２７】
＜第４の方法＞
第１または２の方法のように全てのSYNパケット、SYN ACKパケットに対してBFを適用してRTTを推定する代わりに、K個のハッシュ値hi (i=1〜K)に対して、hi/max（maxはハッシュ関数の取りうる値の最大値）を調べ、K個のハッシュ値のいずれもhi/max<p^(1/K) (pは予め定めるサンプリングレートで、0<p<1) を満たす場合にのみ、BFを用いたRTT推定を行うこととする。
【００２８】
この条件を満たす確率は、hi/maxが一様分布に従うと仮定すると、P[h1/max<p^(1/K) ∧h2/max<p^(1/K)∧  ......  ∧hk/max<p^(1/K)] = {p^(1/K)}^K = pとなる。つまり、あるフローからのSYNパケット（と対応するSYN ACKパケット）は確率pでサンプルされることになる。
【００２９】
このようにサンプリングを実施することで、BFへの入力を削減でき、ビットマップで管理すべき情報量を削減することが可能となる。
【００３０】
以下、上述した各方法を実現する実施例を説明する。
【００３１】
（実施例１）
まず、第１の方法に対応する実施例１を説明する。
【００３２】
図２は本実施例におけるIPネットワークの基本構成の一例を示すシステム構成図である。図２に示すように本実施例でのフロー通信品質推定装置１０はノードA、B間のリンクに挿入される形態で利用される。図２に示すノードA、ノードBは、図１に示したルータA、Bに対応するものである。ノードA、ノードBは、それぞれルータでもよいし、スイッチでもよい。また、ノードA、ノードBには、図１に示したようなエンドホストが接続されている。
【００３３】
フロー通信品質推定装置１０をノード間のリンクに挿入して利用する代わりに、あるノードにおいて、パケットをポートへミラーして、そのポートの先にフロー通信品質推定装置１０を設置してもよい。ノードA、B間を流れるパケットを監視できるのであれば、フロー通信品質推定装置１０の設置形態は特定の形態に限定されない。
【００３４】
図３に、本実施例に係るフロー通信品質推定装置１０の機能構成例を示す。図３に示すように、本実施例のフロー通信品質推定装置１０は、パケットヘッダ解析部１１、フロー管理部１２、及び品質推定部１３を備える。パケットヘッダ解析部１１は、前段ノードから到着するパケットのヘッダを解析して、SYNパケット、SYN ACKパケット、ACKパケット等を識別するとともに、パケットからフローキーを読み出す機能を備える。本実施例のフローキーは、{srcIP（送信元IPアドレス）、dstIP（宛先IPアドレス）、srcPort（送信元ポート）、dstPort（宛先ポート）｝である。
【００３５】
フロー管理部１２は、K個のハッシュ関数を用いて、フローキーからK個のハッシュ値を求める機能、ビットマップを格納する記憶手段（ビットマップメモリ）、時刻テーブルを格納する記憶手段（時刻テーブルメモリ）、ビットマップのカウンター値をセットする機能、時刻テーブルに時刻をセットする機能等を含む。
【００３６】
品質推定部１３は、時刻テーブルにおける時刻の情報を用いて、該当フローの往復伝播遅延時間を推定する機能を有する。
【００３７】
なお、図３に示す構成は、本発明に関わる機能部を主に示すものであり、パケットを送受信する装置としての図示しない既存の機能を含むことは言うまでもない。フロー通信品質推定装置１０は、例えば、通信機能を有するコンピュータ（サーバ等）、もしくはコンピュータの機能を含む通信装置（ルータ、スイッチ等）に、本実施の形態で説明する処理に対応するプログラムを実行させることにより実現可能である。当該プログラムは、可搬メモリ等の記憶媒体に格納して配布し、上記装置にインストールして用いてもよいし、ネットワーク上のサーバからダウンロードして上記装置にインストールしてもよい。また、本実施の形態で説明する処理をハードウェア回路として実現し、当該ハードウェア回路を備える装置としてフロー通信品質推定装置１０を実現してもよい。
【００３８】
また、フロー通信品質推定装置１０の構成は、図３に示す構成に限られるわけではない。本実施の形態で説明するフロー通信品質推定方法における各処理手順を実行する手段を備えた装置であればよい。図３に示すフロー通信品質推定装置１０は、このような装置の一例である。
【００３９】
また、フロー通信品質推定装置を、第１または第２の方法で、AからB方向のSYNパケットに対して、Bloom Filter(BF)を用いて到着時刻の管理を行い、BからA方向のSYN ACKパケットに対して対応するSYN到着時刻を読み出してRTTを推定する手段、第３の方法で、{SYNACK、ACK}パケットの組についてRTTを推定する手段、第４の方法でサンプリングを実施する手段を備える構成としてもよい。
【００４０】
次に、フロー通信品質推定装置１０が実行するフロー通信品質推定方法の処理内容を図４のフローチャートの手順に沿って説明する。
【００４１】
フロー通信品質推定装置１０におけるパケットヘッダ解析部１１は、前段ノードAからSYNパケットが到着したことを検知すると（図４のステップS1）、そのパケットのフローキー＝{srcIP#i，dstIP#i，srcPort#i，dstPort#i}を読み出し、フロー管理部１２にフローキーを通知する。その後、パケットを後段ノードに転送する。
【００４２】
フロー管理部１２は、パケットヘッダ解析部１１から受信したフローキーをK個のハッシュ関数に入力して得られるK個のハッシュ値を調べ、ビットマップメモリを参照して、そのK個のハッシュ値に対応するビットマップ位置のカウンター値Ciを１つ増加させる（図４のステップS2）。また、時刻テーブルメモリを参照して、上記ビットマップ位置に対応する時刻テーブル上の位置の時刻を現在の時刻Tnowにセットする（図４のステップS3）。
【００４３】
一方、フロー通信品質推定装置１０におけるパケットヘッダ解析部１１が、前段ノードBからSYN ACKパケットが到着したことを検知すると（図４のステップS1'）、当該パケットからフローキーi＝{srcIP#i，dstIP#i，srcPort#i，dstPort#i}を読み出し、フロー管理部１２にフローキーを通知する。その後、パケットを後段ノードに転送する。
【００４４】
フロー管理部１２は、パケットヘッダ解析部１１から受信したフローキーから、srcIPとdstIP、srcPortとdstPortを入れ替えたキー（逆転キーとよぶ）を作成し、それをキーとしてK個のハッシュ値を調べ、対応するビットマップ位置のカウンター値をチェックする（図４のステップS2'）。該当するK箇所のカウンター値CiのいずれもCi≧１であれば、Ci←Ci-1とする（図４のステップS3'）。その後、品質推定部１３にK個のハッシュ値を通知する。
【００４５】
品質推定部１３では、時刻テーブルメモリを参照し、時刻テーブルにおけるK個のハッシュ値に該当するK箇所の時刻を読み出し、その中で最も古い時刻T_oldiを抽出し、現在の時刻Tnowからその最も古い時刻T_oldiを差し引いた値Tnow - T_oldiを該フローの往復伝播遅延時間RTTiとして推定する（図４のステップS4'）。
【００４６】
（実施例２）
次に、第２の方法に対応する実施例２を説明する。実施例２では、BからA方向のSYN ACKパケット検知時の実施例１での手順において、図４のステップS3'を以下のように変更する。本実施例では、フロー管理部１２がタイムアウト時間Toutを予め有しているものとする。
【００４７】
フロー管理部１２は、該当するK箇所の時刻情報Tiを読み出し、予め定めたタイムアウト時間Toutを閾値として、Tnow - Ti>Toutかどうかチェックし、K個のうち一つでもタイムアウトしている（Tnow-Ti>Toutを満たす）場合には、タイムアウトしている要素のみビットマップにおけるカウンター値をCi←Ci-1とし、RTT計算は実施しない。K個ともタイムアウトしていない場合、品質推定部１３にK個のハッシュ値を通知することにより、図４のステップS4'へ進み、品質推定部１３がRTT推定を行う。その後、K個のカウンター値をCi←Ci-1とする。なお、RTT推定に進む前にK個のカウンター値をCi←Ci-1としてもよい。
【００４８】
（実施例３）
次に、第３の方法に対応する実施例３を説明する。
【００４９】
実施例１または２において、AB方向のSYNパケット、およびBA方向のSYN ACKパケットについてRTTを推定していた代わりに、AB方向のSYN ACKパケットおよびBA方向のACKパケットについて同様の手順を実施してRTTを推定する。すなわち、本例では、図４におけるステップS1で検知するパケットがSYN ACKパケットとなり、ステップS1'で検知するパケットがACKパケットとなる。このようにパケットの種類が実施例１または２と異なるだけで、RTT推定のための処理内容は実施例１または２と同じである。
【００５０】
（実施例４）
次に、第４の方法に対応する実施例４を説明する。実施例４では、実施例１の処理フロー（図４）に以下の処理を追加する。以下の条件が追加されること以外は実施例１〜３と同じである。
【００５１】
ステップS1の後段において、フロー管理部１２が該当するビットマップ位置のカウンター値Ciを更新するステップS2に進む前に、フロー管理部１２は、K個のハッシュ値hi (i=1〜K)に対して、hi/max（maxはハッシュ関数の取りうる値の最大値）を調べ、K個のハッシュ値のいずれもhi/max<p^(1/K) (pは予め定めるサンプリングレートで、0<p<1) を満たすかどうかを判断する。この条件を満たす場合にのみ、ステップS2へ進むようにする。
【００５２】
同様に、ステップS1'の後段における逆転フローキーに対するハッシュ値についても同様の条件を追加する。すなわち、ステップS1'の後、ステップS2'の前において、フロー管理部１２は、K個のハッシュ値hi (i=1〜K)に対して、hi/max（maxはハッシュ関数の取りうる値の最大値）を調べ、K個のハッシュ値のいずれもhi/max<p^(1/K) (pは予め定めるサンプリングレートで、0<p<1) を満たすかどうかを判断する。この条件を満たす場合にのみ、ステップS2'へ進むようにする。
【００５３】
（実施の形態の効果）
以上説明したように、本実施の形態によれば、ネットワークへの余分な負荷を加えてしまう能動的な測定を行わず、かつ、ネットワークの全パケットキャプチャを行うことなく、ネットワーク全体の品質をオンラインで推定することが可能となる。
【００５４】
図５に実験結果を示す。これは、あるインターネット回線上で観測されたトラヒック（２時間分）に対して、本発明の提案手法を適用したときの、推定RTTの累積補分布を示している。図中、「フロー毎」は、フロー毎に状態を管理してRTTを計算した結果（これを正解とする）、「BF」は、本発明の提案のようにカウンターを用いず、非特許文献６に開示されたように単純にBFのみを用いた場合（つまり、K箇所のビットマップ位置にエントリがあれば1をセットするのみ）、「提案」が本発明の第２の方法を用いた場合の結果である。ここで、ハッシュ関数Kの値をK=3、ビットマップの長さを2^16、タイムアウト値Tout=3秒としている。これより、提案がフロー毎の結果と近いRTT分布を推定できていることが確認できる。
【００５５】
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。
【符号の説明】
【００５６】
１０  フロー通信品質推定装置
１１  パケットヘッダ解析部
１２  フロー管理部
１３  品質推定部
【図１】
0005687650.tif 000002
【図２】
0005687650.tif 000003
【図３】
0005687650.tif 000004
【図４】
0005687650.tif 000005
【図５】
0005687650.tif 000006