ユーザ待ち時間推定装置、ユーザ待ち時間推定方法、及びプログラム
【課題】取得データのサイズを軽減し、アプリケーション層等に対して暗号化を行うプロトコルが使用された場合でも、ユーザ待ち時間を推定することを可能とする。
【解決手段】ユーザ待ち時間推定装置において、アプリケーションサーバからユーザ端末に向けて送信された各パケットを取得し記憶手段に格納する手段と、予め定めた時間幅を有するタイムスロット毎のパケット数を算出する手段と、パケット数が検知閾値以上であるタイムスロット群を、抽出タイムスロット群として抽出する手段と、スライディングウィンドウに含まれる抽出タイムスロットの合計時間とウィンドウ時間長とに基づき、パケットが連続して出現した連続区間を識別する手段と、各パケットにおけるTCPヘッダ情報を参照することにより、サーバ処理時間を推定する手段と、連続区間とサーバ処理時間とを結合するし、結合された時間区間を、推定されたユーザ待ち時間として出力する手段とを備える。
【解決手段】ユーザ待ち時間推定装置において、アプリケーションサーバからユーザ端末に向けて送信された各パケットを取得し記憶手段に格納する手段と、予め定めた時間幅を有するタイムスロット毎のパケット数を算出する手段と、パケット数が検知閾値以上であるタイムスロット群を、抽出タイムスロット群として抽出する手段と、スライディングウィンドウに含まれる抽出タイムスロットの合計時間とウィンドウ時間長とに基づき、パケットが連続して出現した連続区間を識別する手段と、各パケットにおけるTCPヘッダ情報を参照することにより、サーバ処理時間を推定する手段と、連続区間とサーバ処理時間とを結合するし、結合された時間区間を、推定されたユーザ待ち時間として出力する手段とを備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、クライアント/サーバ型のTCPベースアプリケーションを利用するユーザが、ユーザ端末上で体感する待ち時間を推定するための技術に関するものである。
【背景技術】
【0002】
クライアント/サーバ型のTCPベースのアプリケーションが広く普及している。当該アプリケーションをユーザが快適に使用するためには、ユーザがユーザ端末に対する操作を行ってから、当該操作に対する結果がユーザ端末の画面上に表示されるまでの時間である待ち時間(以下、これをユーザ待ち時間と呼ぶ)が短いことが好ましい。そのため、アプリケーションの品質を評価するにあたって、ユーザ待ち時間は重要な指標の一つであり、ユーザ待ち時間を適切に推定することが求められている。
【0003】
ユーザ待ち時間を推定する従来技術としては、事前評価型とインサービス評価型がある。
【0004】
事前評価型の技術は、実際の利用環境ではなく、擬似的な利用環境を用いて、被験者にアプリケーションを利用してもらい、待ち時間を計測するものである。また、擬似的な利用環境で、擬似クライアントを用いて待ち時間を計測する技術もある。
【0005】
インサービス評価型の技術としては、サーバに蓄積されたログを解析することによりユーザ待ち時間を推定する技術、サーバとユーザ端末間で送受信される情報を収集、解析し、解析結果からユーザ待ち時間を推定する技術、実際の利用環境で擬似クライアントプログラムをユーザ端末で実行させることにより待ち時間を計測する技術等がある。
【0006】
なお、先行技術文献として、TCP上でのデータ転送における遅延等の品質を推定する技術を開示した特許文献1がある。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2004−140596号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、従来の事前評価型の技術では、実際にユーザがアプリケーションを利用しているときのユーザ待ち時間を推定することができない。従って、通信ネットワークの状況等に応じて変化する場合があるユーザ待ち時間を適切に推定できない。また、事前評価型の技術では、通信ネットワークの状況等によりユーザ待ち時間が悪化した場合等に、それに対する対応をとるといったことができない。
【0009】
インサービス評価型の技術を用いることにより、事前評価型の問題を解決できる。しかし、従来のインサービス評価型の技術には次のような問題がある。
まず、サーバに蓄積されたログを解析することによりユーザ待ち時間を推定する技術では、サーバでの処理時間に関わる時間しか推定できず、通信ネットワークに起因するユーザ待ち時間の変化等を把握することができない。
【0010】
また、擬似クライアントプログラムを用いる技術では、サーバ及び通信ネットワークに測定用のオーバヘッドを生じさせることになり、測定に起因してアプリケーションの品質劣化等が生じてしまう可能性があるという問題がある。
【0011】
また、サーバとユーザ端末間で送受信される情報を収集、解析する従来の技術では、ユーザ待ち時間を推定するために、ユーザ端末とサーバ間で双方向に送受信される全てのデータを取得する必要があり、取得するべきデータのサイズが非常に大きくなってしまうという問題がある。更に、従来技術では、トランスポート層よりも上位の層までの情報を解析する必要があるため、HTTPSのようなトランスポート層よりも上位の層に対して暗号化を行うプロトコルが使用された場合、取得した情報の解析が不可能となり、ユーザ待ち時間の算出が行えないという問題がある。
【0012】
本発明は上記の点に鑑みてなされたものであり、ユーザ端末とサーバ間で送受信されるデータを取得することによりユーザ待ち時間を推定する技術において、取得するべきデータのサイズを軽減し、トランスポート層よりも上位の層に対して暗号化を行うプロトコルが使用された場合でも、ユーザ待ち時間を推定することを可能とした技術を提供することを目的とする。
【課題を解決するための手段】
【0013】
上記の課題を解決するために、本発明は、TCPベースのアプリケーションサービスを提供するアプリケーションサーバに通信ネットワークを介して接続され、前記アプリケーションサービスを利用するユーザ端末におけるユーザ待ち時間を推定するユーザ待ち時間推定装置であって、前記アプリケーションサーバから前記ユーザ端末に向けて送信された各パケットを取得し、当該パケットを取得した時刻の情報とともに、当該パケットを記憶手段に格納するパケット取得手段と、前記パケット取得手段により取得されたパケット群から、予め定めた時間幅を有するタイムスロット毎のパケット数を算出するパケット数集計手段と、前記パケット数集計手段により算出されたタイムスロット毎のパケット数に基づき、パケット数が予め定めた検知閾値以上であるタイムスロット群を、抽出タイムスロット群として抽出する抽出手段と、所定のウィンドウ時間長を有するスライディングウィンドウを定め、スライディングウィンドウに含まれる抽出タイムスロットの合計時間と前記ウィンドウ時間長とに基づき、スライディングウィンドウを時間進行方向にずらしながら、パケットが連続して出現した時間区間である連続区間を識別する連続区間識別手段と、前記パケット取得手段により取得された各パケットにおけるTCPヘッダ情報を参照することにより、前記アプリケーションサーバが前記ユーザ端末にTCPパケットを送信せずに処理を行った時間であるサーバ処理時間を推定するサーバ処理時間推定手段と、前記連続区間識別手段により識別された連続区間と、前記サーバ処理時間推定手段により推定されたサーバ処理時間とが時間的に連続しているか否かを判定し、連続している場合に、前記連続区間と前記サーバ処理時間とを結合する結合処理手段と、前記結合処理手段により結合された時間区間を、推定されたユーザ待ち時間として出力する出力手段とを備えることを特徴とするユーザ待ち時間推定装置として構成される。
【0014】
前記サーバ処理時間推定手段は、データなしのACKパケットであると識別された対象パケットの次のパケットがデータ付きのTCPパケットであり、なおかつ、当該次のパケットのACK番号が、前記対象パケットのACK番号と同じであると判定した場合に、前記対象パケットの時刻から前記次のパケットの時刻までを前記サーバ処理時間とするように構成できる。
【0015】
また、前記連続区間識別手段は、ある抽出タイムスロットに対応する連続性判定開始位置から時間進行方向に伸びるスライディングウィンドウに含まれる抽出タイムスロットの合計時間を算出し、前記ウィンドウ時間長に対する前記合計時間の割合が予め定めた閾値以上であるか否かを判定する判定手段と、前記判定手段により、前記ウィンドウ時間長に対する前記合計時間の割合が前記予め定めた閾値以上であると判定された場合に、連続性判定開始位置を次の抽出タイムスロットにずらし、当該ずらした連続性判定開始位置に基づき前記判定手段による処理を行うスライディング手段と、前記判定手段と前記スライディング手段による処理を、前記ウィンドウ時間長に対する前記合計時間の割合が前記予め定めた閾値未満であると判定されるまで繰り返し行い、最初の連続性判定開始位置から、最後に前記合計時間の割合が前記閾値以上であると判定されたスライディングウィンドウの末尾までの時間を前記パケットが連続して出現した時間区間であると決定する手段とを備えるように構成することができる。
【発明の効果】
【0016】
本発明によれば、アプリケーションサーバからユーザ端末に向けて送信されたパケットを取得することによりユーザ待ち時間を推定できるので、ユーザ端末とサーバ間で双方向に送受信されるパケットを取得しなければならない従来技術に比べて、取得すべきデータ量を削減できる。また、本発明では、トランスポート層よりも上位の層のプロトコルに係るヘッダの内容等を参照する必要がないので、トランスポート層よりも上位の層に対して暗号化を行うプロトコルが使用された場合でも、ユーザ待ち時間を推定することが可能になる。
【0017】
更に、アプリケーションサーバにおいて、ユーザ端末にTCPパケットを送信せずに処理を行うサーバ処理時間が長くなる場合があったとしても、本発明によれば、サーバ処理時間をパケットのTCPヘッダから推定し、連続区間と結合し、結合された時間区間をユーザ待ち時間と推定するので、より実際に近いユーザ待ち時間を求めることができる。
【図面の簡単な説明】
【0018】
【図1】本発明の実施の形態に係るシステムの全体構成図である。
【図2】「ユーザ待ち時間」を説明するための図である。
【図3】「ユーザ待ち時間」を説明するための図である。
【図4】ユーザ待ち時間推定装置1の機能構成図である。
【図5】ユーザ待ち時間推定装置1の動作を説明するためのフローチャートである。
【図6】パケット格納部12に格納されるパケットの例を示す図である。
【図7】パケット格納部12に格納されるパケットの例を示す図である。
【図8】トラヒック分類部13により分類されたパケットの例を示す図である。
【図9】パケット数集計部14により得られた集計結果を示すヒストグラムである。
【図10】連続区間識別部15が実行する処理を説明するためのフローチャートである。
【図11】連続区間識別部15が実行する処理を説明するための概念図である。
【図12】連続区間識別部15が実行する処理を説明するためのフローチャートである。
【図13】連続区間識別部15が実行する処理を説明するための概念図である。
【図14】サーバ処理時間推定部18が実行する処理を説明するための概念図である。
【図15】サーバ処理時間推定部18が実行する処理を説明するためのフローチャートである。
【図16】マージ処理部19が実行する処理を説明するための概念図である。
【発明を実施するための形態】
【0019】
以下、図面を参照して本発明の実施の形態を説明する。
【0020】
(システム構成)
図1に、本発明の実施の形態に係るユーザ待ち時間推定装置1を含むシステムの全体構成図を示す。
【0021】
図1に示すように、本実施の形態に係るシステムは、ユーザ待ち時間推定装置1、アプリケーションサーバ2、ユーザ端末3を備え、これらが通信ネットワーク4に接続されて構成されている。
【0022】
アプリケーションサーバ2は、アプリケーションサービスをユーザ端末3に対して提供するサーバである。アプリケーションサーバ2が提供するアプリケーションサービスは、例えば、Webページ提供サービス、ストレージ系サービス等である。
【0023】
ユーザ待ち時間推定装置1は、アプリケーションサーバ2と通信を行うユーザ端末3を操作するユーザが体感する待ち時間を推定する装置である。また、ユーザ端末3は、Webブラウザ等を備えた一般的なPC端末である。通信ネットワーク4は、インターネットやLAN等を含むIP(Internet Protocol)によるデータ通信可能なネットワークである。
【0024】
また、アプリケーションサーバ2とユーザ端末3間で送受信される全てのパケット(IPパケット)をユーザ待ち時間推定装置1が受信できるように通信ネットワーク4が構成されているものとする。例えば、ユーザ待ち時間推定装置1は、通信ネットワーク4内で、アプリケーションサーバ2を接続するLANスイッチのミラーポートに接続される。
【0025】
ただし、ユーザ待ち時間推定装置1は、必ずしも通信ネットワーク4から直接にパケットを取得しなくてもよい。例えば、通信ネットワーク4から他の装置により取得されたパケットを、当該装置からユーザ待ち時間推定装置1に入力する構成としてもよい。
【0026】
なお、本実施の形態では、ユーザ端末3とアプリケーションサーバ2間におけるデータ通信のトランスポート層のプロトコルとしてTCP(Transmission Control Protocol)を用いることを前提としている。TCPは、フロー制御等の制御のための通信が頻繁に発生するとともに、要求に対応する応答が必ず発生するので、本発明に係る技術に適しているからである。また、図1では、アプリケーションサーバ2とユーザ端末3がそれぞれ1つづつ示されているが、それぞれ複数台備えられてよいことはいうまでもない。
【0027】
次に、図2を参照して、本実施の形態に係る"ユーザ待ち時間"について説明する。図2は、アプリケーションサーバ2とユーザ端末3間でのTCPの通信シーケンスの概要を表している図である。
【0028】
図2に示すように、ユーザがユーザ端末3上で、所望の表示結果を得るための所定の操作(例えば、ブラウザ画面上に表示された特定のボタンをクリックする操作)を行うと、パケットがアプリケーションサーバ2とユーザ端末3間で送受信され、上記操作に対応する結果(例えば、表示されることを期待していたWebページ画面)がユーザ端末3上に表示される。
【0029】
図3に、ユーザ待ち時間の別の例を示す。図3で示す例は、ストレージ系のアプリケーションの例であり、アプリケーションサーバ2側において、TCPパケットをユーザ端末3に返すことなく行う処理(この例ではデータのHDDへの書き込み処理)にある程度の時間を要する場合の例である。
【0030】
図3の例では、ユーザによる操作(データのアップロード指示等)を行ってから、アプリケーションサーバ2とユーザ端末3間での連続的なパケットの送受信を経て、アプリケーションサーバ2において上記の書き込み処理が行われて、その後、アプリケーションサーバ2とユーザ端末3間での連続的なパケットの送受信を経て、ユーザ端末3上に、操作に対応する結果(例えば、アップロードが終了したことを示す画面)が表示される。この場合、図3に示す時刻Aから時刻Bまでがユーザ待ち時間となる。本実施の形態の技術では、このような場合のユーザ待ち時間も適切に求めることができる。
【0031】
本明細書及び特許請求の範囲では、上記のように所定の操作を行った時刻から、当該所定の操作に対応する結果が表示される時刻までをユーザ待ち時間としている。
【0032】
図4に、本実施の形態に係るユーザ待ち時間推定装置1の機能構成図を示す。図4に示すように、ユーザ待ち時間推定装置1は、入力部11、パケット格納部12、トラヒック分類部13、パケット数集計部14、連続区間識別部15、RTT(Round Trip Time)提供部16、出力部17、サーバ処理時間推定部18、及びマージ処理部19を有する。
【0033】
各機能部の処理の内容については、後述するシステムの動作説明のところで詳細に説明することとし、以下では各機能部の機能の概要を説明する。
【0034】
入力部11は、ユーザ端末3とアプリケーションサーバ2間で送受信されるパケットのうち、アプリケーションサーバ2からユーザ端末3に向かうパケットを通信ネットワーク4等から取得し、各パケットにタイムスタンプ(現在時刻、パケットを取得した時刻)を付してパケット格納部12に格納する機能部である。
【0035】
トラヒック分類部13は、アプリケーションサーバ2からユーザ端末3に向かうパケットを宛先毎に分類する機能部である。パケット数集計部14は、特定のユーザ端末宛であると識別されたパケット群毎に、予め定めた時間幅(タイムスロット)毎のパケット数を算出する処理を行う機能部である。
【0036】
連続区間識別部15は、パケット数集計部14により得られた予め定めた時間幅毎のパケット数を用いて、所定の時間幅内に一定量以上のパケットが連続して出現しているか否かを識別することにより、ユーザによる待ち時間が継続していると推定できる時間区間である連続区間を求める機能部である。
【0037】
また、RTT提供部16は、RTT(Round Trip Time:ユーザ端末3からアプリケーションサーバ2にパケットを送信して、確認応答パケットがアプリケーションサーバ2からユーザ端末3に返されるまでの時間)を取得し、それを連続区間識別部15及びサーバ処理時間推定部に提供する機能部である。
【0038】
サーバ処理時間推定部18は、トラヒック分類部13により抽出されたパケットにおけるTCPヘッダの情報を参照することにより、ユーザ端末3からアプリケーションサーバ2への処理要求(例えば、データアップロード処理要求)に関するデータ送信完了を把握するとともに、当該処理要求に対応した処理完了の応答を把握することにより、TCPパケットがユーザ端末3に返されることなくアプリケーションサーバ2で実行された処理の時間を推定する機能部である。
【0039】
マージ処理部19は、連続区間識別部15で算出された連続区間と、サーバ処理時間推定部18で算出されたサーバ処理時間とを結合する機能部である。
【0040】
出力部17は、マージ処理部19により得られた時間区間を、推定されたユーザ待ち時間の情報として出力する機能部である。
【0041】
ユーザ待ち時間推定装置1は、メモリやハードディスク等の記憶手段及びCPUを備える一般的なコンピュータに、各機能部に対応する処理を行うためのプログラムを搭載することにより実現できる。当該プログラムは、可搬メモリやディスク等の記録媒体から上記コンピュータにインストールしてもよいし、ネットワーク上のサーバから上記コンピュータにダウンロードし、インストールすることとしてもよい。
【0042】
(システムの動作)
次に、ユーザ待ち時間推定装置1の動作の例を、図5のフローチャートに沿って説明する。まず、ユーザ待ち時間推定装置1の入力部11は、通信ネットワーク4から、アプリケーションサーバ2を送信元とするパケットを順次取得し、取得した時刻の情報であるタイムスタンプを付してパケット格納部12に格納する(図5のステップ1)。
【0043】
ユーザ待ち時間推定装置1は、特定のアプリケーションサーバ2から送信されるパケットを常にパケット格納部12に格納し、当該アプリケーションサーバ2に関するユーザ待ち時間推定の必要が生じたときに、特定の時間区間に取得されたパケットを解析の対象としてもよいし、ユーザ指示等により特定の時間区間だけパケット収集を行い、そこで収集されたパケットを解析の対象としてもよい。また、常にパケットをパケット格納部12に格納し、一定時間毎に特定のアプリケーションサーバに関するユーザ待ち時間推定処理を実行することとしてもよい。もちろん、その他の形態を用いてもよい。
【0044】
パケット格納部12に格納されるパケットの例を図6(a)に示す。例えば、図6(a)の第1行目は、送信元IPアドレスがIPアドレス1、送信元ポート番号がポート番号1、宛先IPアドレスがIPアドレス3、宛先ポート番号がポート番号1であるIPパケットが、時刻1に取得され、格納されたことを示している。他の行も同様である。
【0045】
なお、図6(a)では、宛先IPアドレスがIPアドレス3であるIPパケットのみを示しているが、一般には、種々の宛先IPアドレスのIPパケットが取得される。また、パケット格納部12に格納する対象となるパケットの送信元IPアドレスと宛先IPアドレスとを予め決めている場合には、取得したパケットからIPヘッダを除き、TCPヘッダが付されたTCPパケットの形式でパケット格納部12に格納することとしてもよい。
【0046】
続いて、図5のステップ2において、トラヒック分類部13が、パケット格納部12に格納されたパケットを、宛先ユーザ端末毎に分類する処理を行う。分類にあたって、本実施の形態では、宛先IPアドレスと宛先ポート番号の1つの組が1つの宛先ユーザ端末に対応するものとし、宛先IPアドレスと宛先ポート番号の組毎にパケットを分類する処理を行う。
【0047】
ただし、NAT経由の通信等の場合に、1つの宛先ユーザ端末に対して、1つの宛先IPアドレスと、連続する複数の宛先ポート番号が割り当てられる場合があることを考慮して、同じ宛先IPアドレスの複数のパケットであって、連続するポート番号を有する複数のパケットが所定の短い時間(例えば0.5秒)内に現れた場合は、それらのパケットは1つのユーザ端末宛のパケットであるとみなしている。
【0048】
例えば、パケット格納部12に格納されたパケットが図6(a)に示すとおりのものであった場合、宛先IPアドレスは同一なので、トラヒック分類部13は、図6(b)に示すようにパケットを分類(ソート)する。図6(b)の例において、宛先ポート番号1のIPパケットはユーザ端末A宛てのパケット、宛先ポート番号8のパケットはユーザ端末Aと異なるユーザ端末B宛てのパケットなどとみなすことができる。
【0049】
また、例えば、パケット格納部12に格納されたパケットが図7(a)に示すようなものであり、時刻1から時刻4までの時間及び時刻5から時刻7までの時間のそれぞれが所定の時間より短い場合、トラヒック分類部13は、パケットを図7(b)に示すように分類する。図7(b)の例において、宛先ポート番号1〜4のパケットはユーザ端末X宛てのパケット、宛先ポート番号10〜12のパケットはユーザ端末Xと異なるユーザ端末Y宛てのパケットとみなすことができる。
【0050】
なお、以下で説明する処理は、分類されたパケット群のうち、特定の1つのユーザ端末宛のパケットに対する処理であるものとする。また、分類がなされたパケットは、パケット格納部12に格納してもよいし、パケット格納部12以外のメモリ等の記憶手段に格納してもよい。
【0051】
また、宛先ユーザ端末毎に分類されたパケットを取得する方法は、上記の方法に限られるわけではなく、結果として、宛先ユーザ端末毎に分類されたパケットを取得できるのであればどのような手段を用いてもよい。
【0052】
次に、図5のステップ3において、ユーザ待ち時間推定装置1のパケット数集計部14は、分類されたパケットについて、予め定めた時間幅(Wで表し、タイムスロットとも呼ぶ)毎の個数を算出する処理を行う。
【0053】
例えば、トラヒック分類部13により、図8に示すパケットが、アプリケーションサーバ2からユーザ端末3宛(IPアドレス3及び宛先ポート番号10で識別されるユーザ端末)のパケットとして抽出されたものとする。また、例えば、タイムスロットの大きさWとして0.1秒(以下、時間の単位は秒であるとする)を使用するものとする。
【0054】
この場合、パケット数集計部14は、時刻0から時刻0.1の間のタイムスロットのパケット数を3として求め、時刻0.1から時刻0.2の間のタイムスロットのパケット数を4として求める。他のタイムスロットでも同様である。このようにして算出した結果から、図9に示すヒストグラムが得られる。
【0055】
<連続区間識別部15の動作>
続いて、図5のステップ4において、連続区間識別部15が、パケット数集計部14により得られたタイムスロット毎のパケット数に基づき、ユーザ待ち時間が継続していると推定することができるパケットの連続区間を識別する処理を行う。
【0056】
本実施の形態では、連続区間識別部15は、ユーザ端末3からアプリケーションサーバ2にパケットが送信されてから、確認応答パケットがアプリケーションサーバ2からユーザ端末3に返されるまでの時間であるRTTを利用して連続区間を識別することもできるし、RTTを利用しないで連続区間を識別することもできる。RTTを利用するかしないかは、例えば、アプリケーションサーバ2の位置(国内か外国か等)や、通信ネットワーク4の状態等で判断し、ユーザによりRTTを利用するかしないかを設定することができる。
【0057】
―――RTTを利用しない場合―――
まず、RTTを利用しない場合の処理について、図10のフローチャート、及び、図11に示す処理の概念図を用いて説明する。
【0058】
なお、以下の処理の前提として、タイムスロットにおけるパケット数の閾値である検知閾値と、スライディングウィンドウの時間長さLと、連続性判定閾値Sとが予め連続区間識別部15に入力され、メモリ等に保持されているものとする。
【0059】
まず、図10のステップ10において、連続区間識別部15は、パケット数が検知閾値以上の全てのタイムスロットを抽出する。ここで、検知閾値は、0以上の整数である。検知閾値は、対象とする通信(ユーザによる操作に起因する通信)以外の通信に係るパケットを、ユーザ待ち時間推定において検知しないようにするために設けられるものである。また、各タイムスロットは、その開始時間位置と終了時間位置で識別される情報である。ステップ10の処理は、図11において、パケット数が点線と重なるか、点線を越えているタイムスロットを抽出する処理に相当する。以下、ここで抽出されたタイムスロットを、抽出タイムスロットと呼ぶ。
【0060】
次に、図10のステップ20において、連続区間識別部15は、複数の抽出タイムスロットのうちの、後述する連続性判定開始位置になったことがない抽出タイムスロットの中で、時間的に最初に位置する抽出タイムスロットの開始位置(時刻Tとする)を特定する。
【0061】
そして、連続区間識別部15は、連続区間識別のためにスライディングウィンドウをずらす時間長さを示す変数であるCを初期化(C=0とする)する(ステップ30)。続いて、連続区間識別部15は、上記抽出タイムスロットの開始位置である時刻Tから始まるスライディングウィンドウに含まれる抽出タイムスロットの合計の時間長さを求め、スライディングウィンドウの時間長さLに対する当該抽出タイムスロットの合計の時間長さの割合Rを求める(ステップ40)。以下では、スライディングウィンドウの開始位置を連続性判定開始位置と呼ぶことにする。
【0062】
ステップ40において、タイムスロットの時間幅がWであり、連続性判定開始位置から始まるスライディングウィンドウの時間長さLの中に、抽出タイムスロット(パケット数が検知閾値以上のタイムスロット)がM個含まれるとした場合、抽出タイムスロットの合計の時間長さはW×Mであるから、R=W×M/Lとなる。また、図11の場合について、タイムスロットの幅を0.1、各スライディングウィンドウの長さを1とすると、スライディングウィンドウAの中に、8個の抽出タイムスロットが含まれるから、R=0.1×8/1=0.8となる。
【0063】
続いて、連続区間識別部15は、Rが連続性判定閾値S以上であるか否かを判定する(ステップ50)。本実施の形態において、Sは、0から1の間の定数であり、例えばS=0.5である。
【0064】
ステップ50において、Rが連続性判定閾値S以上であると判定された場合、連続区間識別部15は、連続性判定開始位置を、時間進行方向において次に位置する抽出タイムスロットの開始位置とする。また、連続性判定開始位置をずらした長さ(前の連続性判定開始位置から次の連続性判定開始位置までの時間)をKとし、C=C+Kとする(ステップ60)。その後、ステップ40に戻る。
【0065】
また、ステップ50において、Rが連続性判定閾値S以上でないと判定された場合、連続区間識別部15は、ステップ70に進み、C=C−Kとするとともに、TからT+C+Lの区間を連続区間としてメモリ等の記憶手段に記録し、ステップ20に戻る。ただし、ステップ50の判定処理において、一度もYesの判定がされずに最初からNoと判定された場合には、ステップ70を経ずにステップ20に戻る。ステップ20において、現在の連続性開始判定位置の次の抽出タイムスロットの開始位置がTとなり、それ以降の処理が繰り返される。ここで、次の抽出タイムスロットが存在しなければ処理を終了する(ステップ80)。
【0066】
上記の処理の概念を図11を参照して説明する。図11の例では、スライディングウィンドウの時間長さがタイムスロット10個分の長さであり、連続性判定閾値S=1/2=0.5であるものとする。つまり、この場合、スライディングウィンドウ内に、5個以上の抽出タイムスロットが含まれる場合に、ステップ50においてYESと判定される。
【0067】
図11の例では、点線よりパケット数の多いタイムスロットがまず抽出される。そして、スライディングウィンドウAの開始位置Tが最初の連続性判定開始位置となり、スライディングウィンドウAには、8個の抽出タイムスロットが含まれるので、ステップ50においてYESと判定され、連続性判定開始位置がスライディングウィンドウBの開始位置までずらされ、同様の判定処理及び連続性判定開始位置をずらす処理等が繰り返される。
【0068】
図11の例では、スライディングウィンドウEには、5個の抽出タイムスロットが含まれるが、スライディングウィンドウFには、4個の抽出タイムスロットしか含まれず、ここではステップ50の判定はNoになる。従って、スライディングウィンドウAの開始位置Tから、スライディングウィンドウEの終了位置(T+C+L)までの時間区間が、ユーザ待ち時間に対応する連続区間であるとして記憶手段に記録されることになる。
【0069】
上述した本実施の形態における技術を用いることにより、安定したネットワーク環境において、ユーザ待ち時間に対応する連続区間を適切に推定することが可能となる。TCPパケットを用いる場合において、TCPヘッダの中の情報から、データ転送開始及び終了を判定することにより、ユーザ待ち時間に対応する連続区間を推定することも考えられるが、ユーザ待ち時間の中で、TCP上でのデータ転送開始及び終了が連続的に複数回発生する場合があるので、TCPヘッダの中の情報からでは、適切にユーザ待ち時間を推定することはできない。
【0070】
本実施の形態のように、TCPベースのアプリケーションサーバ2からユーザ端末3に送信されるパケットが、ある程度の短い時間間隔で連続的に発生している場合はユーザの待ちが継続していると判定する手法により、より適切にユーザ待ち時間を推定することが可能になる。
【0071】
上記の例において、タイムスロットの時間幅W、スライディングウィンドウの時間長さL、及び、連続性判定閾値Sについては、実験等により適切な値を定めればよいが、安定したネットワーク環境での一例として、タイムスロットの時間幅Wとして0.1を用い、スライディングウィンドウの時間長さLとしてタイムスロット10個分である1を用い、連続性判定閾値Sとして1/2を用いることにより、良好な結果が得られている。
【0072】
−−−RTTを利用する場合―――
次に、RTTを利用する場合の連続区間の識別処理のフローチャートを図12に示す。以下では、RTTを利用しない場合との相違点を中心に説明する。
【0073】
RTTを利用しない場合は、スライディングウィンドウの時間長さLとして予め定めた長さを用いていたのに対し、RTTを利用する場合の処理は、図12のステップ35において、スライディングウィンドウの長さLをRTTに基づき算出し、それ以降の処理において、RTTに基づき求めたLを用いて連続区間を判定している。その他の処理については図10の場合と同じである。より詳細には以下のとおりである。
【0074】
本実施の形態では、入力部11は、RTTを求めるためのデータとして、アプリケーションサーバ2からユーザ端末3に向かうパケットの他に、ユーザ端末3からプリケーションサーバ2に向かうパケットのうちの一部のパケットを取得してパケット格納部12に格納することができる。RTT提供部16は、パケット格納部12に格納されたデータを参照することにより、例えば、シーケンス番号で送信パケットとそれに対応する応答パケットを識別し、所定の時間毎のRTTを算出することができる。なお、TCPパケットからRTTを算出すること自体は従来技術である。もちろん、RTT提供部16は、その他の方法でRTTを算出することとしてもよい。例えば、ユーザ待ち時間推定装置1の外部にある装置でRTTを取得し、その装置からRTTを受信することとしてもよい。
【0075】
ステップ35において、連続区間識別部15は、RTT提供部16から、連続性判定開始位置に最も近い時刻に対応するRTTを取得する。ここでRTTをTRと表すと、連続区間識別部15は、L=(TR+W)×N(Nは自然数)としてLを求める。例えば、TR=0.01、W=0.1、N=10であるとすると、L=0.11×10=1.1となる。また、例えば、R=0.05、W=0.1、N=10であるとすると、L=0.15×10=1.5となる。
【0076】
RTTを用いる場合の処理の概念を図13を用いて説明する。図13において、(A)で示される部分は、L=1.1の場合であり、(B)で示される部分は、L=1.5の場合を示している。図13に示すとおり、スライディングウィンドウの長さLをRTTに応じて伸ばすことにより、RTTの影響でパケットの出現間隔が間延びする場合であっても、適切に連続区間(ユーザ待ち時間が継続していると推定できる区間)を識別できる。
【0077】
<サーバ処理時間推定部18の動作>
続いて、サーバ処理時間推定部18により、サーバ処理時間推定処理が実行される(図5のステップ5)。まず、サーバ処理時間推定部18による処理の概要を、図14に示す概念図を用いて説明する。
【0078】
TCPの通信では、ユーザ端末3からアプリケーションサーバ2に対するデータ(この例ではサーバ2に対する処理要求に係るデータ)の送信が完了した場合に、アプリケーションサーバ2からユーザ端末3に対して、データの受信が完了したことを示すTCPパケットであるデータなしのACKパケット(TCPヘッダのACKフラグがONであるパケット)が送信される。このACKパケットには、ユーザ端末3から受信したデータに対応するACK番号(図14の例では100)が含まれている。このACK番号は、これ以降、ユーザ端末3からデータを受信しない限り変化しない番号である。
【0079】
ACKパケット送信の後、アプリケーションサーバ2ではデータ書き込み等の処理が行われ、この時間区間では、ユーザ端末3に対してパケットは送信されない。また、アプリケーションサーバ2が高負荷の状態にある場合には、この時間区間は長くなる。
【0080】
アプリケーションサーバ2での処理が終了すると、アプリケーションサーバ2は、処理が終了したことを示すデータを載せたTCPパケットをユーザ端末3に送信する。
【0081】
データなしのACKパケットを送信した以降、この時点までで、アプリケーションサーバ2はユーザ端末3からデータを受信していないので、このTCPパケットのACK番号は、データなしのACKパケットにおけるACK番号と同じ100である。
【0082】
以上の処理内容から、アプリケーションサーバ2からユーザ端末3に対して、データなしのACKパケットが送信された時刻から、アプリケーションサーバ2からユーザ端末3に対して、データ付きのTCPパケットであって、ACK番号が、上記ACKパケットと同じパケットが送信された時刻までの時間が、アプリケーションサーバ2による処理時間であると推定できる。
【0083】
本実施の形態では、以上の原理を利用して、アプリケーションサーバ2による処理時間を推定している。もちろん、TCPヘッダから判定可能な方法であれば、上記以外の方法を用いてサーバ処理時間を推定してもよい。
【0084】
以下、図15のフローチャートを参照して、サーバ処理時間推定部18の処理を説明する。
【0085】
まず、サーバ処理時間推定部18は、トラヒック分類部13により抽出されたパケット群(例:図8)を取得する(ステップ100)。取得したパケット群の各パケットについて1つづつ、時刻の進む順番に、以下の処理が実行されることになる。
【0086】
サーバ処理時間推定部18は、処理対象のパケット(=着目しているパケット)の時刻に対応する閾値を算出する(ステップ101)。ここでは、例えば、処理対象のパケットに対応するRTTをRTT提供部16から取得し、それを閾値とする。もちろん、予め定めた固定値を閾値としてもよい。
【0087】
次に、サーバ処理時間推定部18は、処理対象のパケットと、当該パケットの次のパケットとの間の時間間隔が閾値以上か否かを判定する(ステップ102)。ここでの判定結果がNoであれば、処理対象のパケットを次のパケットとして、ステップ101に戻る(ステップ201、202)。パケット間の時間間隔が閾値未満といった小さい値であれば、連続区間識別部15による処理により、連続であると判定される蓋然性が高いからである。
【0088】
ステップ102において、パケット間の時間間隔が閾値以上であると判定された場合、サーバ処理時間推定部18は、処理対象のパケットがデータなしのACKパケットであるかどうかの判定を行う(ステップ103)。ここでの判定結果がNoであれば、処理対象のパケットを次のパケットとして、ステップ101に戻る。
【0089】
ステップ103での判定結果がYesである場合、サーバ処理時間推定部18は、処理対象のパケットの次のパケットが、データ付きのTCPパケットであり、かつ、処理対象のパケットのACK番号と同じACK番号を有するかどうかの判定を行う(ステップ104)。ここでの判定結果がNoであれば、処理対象のパケットを次のパケットとして、ステップ101に戻る。
【0090】
ステップ104での判定結果がYesである場合、サーバ処理時間推定部18は、処理対象のパケットと、当該パケットの次のパケットとの間の時間間隔をサーバ処理時間として算出し、当該サーバ処理時間を、処理対象のパケットの時刻と、当該パケットの次のパケットの時刻とともに、メモリ等の記憶手段に記録する(ステップ105)。そして、次のパケットを処理対象のパケットとして、ステップ101に戻る。全てのパケットの処理が終了すれば、サーバ処理時間推定処理を終了する(ステップ201、203)。
【0091】
<マージ処理部19の処理>
サーバ処理時間推定処理が終了した後、マージ処理部19は、連続区間識別部15により得られた連続区間群と、サーバ処理時間推定部18により得られたサーバ処理時間群とを参照し、各サーバ処理時間に関して、サーバ処理時間と時間的に連続している連続区間が存在するか否かをチェックし、存在する場合に、サーバ処理時間と連続区間とを結合(マージ)し、結合された時間区間を、推定されたユーザ待ち時間として出力部17に渡す処理を行う(図5のステップ6)。また、マージ処理部19は、サーバ処理時間と結合されない連続区間に関しては、当該連続区間そのものを推定されたユーザ待ち時間として出力部17に渡す。
【0092】
この処理を、図16を参照してより具体的に説明する。図16は、パケット数集計部14により集計された結果のヒストグラムを表す図である。図16の例において、連続区間識別部15により、連続区間A(開始時刻SA、終了時刻EAとする)と連続区間B(開始時刻SB、終了時刻EBとする)が識別されたものとする。更に、サーバ処理時間推定部18により、サーバ処理時間C(開始時刻SC、終了時刻EC)が推定されたものとする。
【0093】
マージ処理部19は、サーバ処理時間Cの開始時刻SCと一致するか、又は、開始時刻SCとの差の絶対値が所定の閾値以下である終了時刻を持つ連続区間を、連続区間識別部15により得られた連続区間群を参照して検索し、連続区間Aを抽出する。また、マージ処理部19は、サーバ処理時間Cの終了時刻ECと一致するか、又は、終了時刻ECとの差の絶対値が所定の閾値以下である開始時刻を持つ連続区間を、連続区間識別部15により得られた連続区間群を参照して検索し、連続区間Bを抽出する。
【0094】
そして、マージ処理部19は、連続区間A、サーバ処理時間C、及び連続区間Bを結合した時間区間(連続区間Aの開始時刻SAから連続区間Bの終了時刻EBまでの時間区間)をユーザ待ち時間として出力部17に渡す。
【0095】
仮に、連続区間Bが検出されずに、連続区間Aとサーバ処理時間Cが結合された場合は、連続区間Aの開始時刻SAからサーバ処理時間Cの終了時刻ECまでの時間区間が、ユーザ待ち時間として出力部17に渡される。また、仮に、連続区間Aが検出されずに、サーバ処理時間Cと連続区間Bとが結合された場合は、サーバ処理時間Cの開始時刻SCから連続区間Bの終了時刻EBまでの時間区間が、ユーザ待ち時間として出力部17に渡される。また、いずれのサーバ処理時間も、連続区間Aと連続区間Bに結合されなかった場合には、マージ処理部19は、連続区間Aと連続区間Bのそれぞれをユーザ待ち時間として出力部17に渡す。
【0096】
その後は、出力部17が、マージ処理部19からの結果を出力する(図5のステップ7)。例えば、出力部17は、ユーザ待ち時間情報として、対象となっているアプリケーションサーバ2のIPアドレス及びポート番号、ユーザ端末3に対応するIPアドレス及びポート番号、及び、推定されたユーザ待ち時間の開始時刻と終了時刻を出力する。また、ユーザ端末3に対応するIPアドレス及びポート番号から、ユーザ端末もしくはユーザの名前を識別可能である場合には、ユーザ端末もしくはユーザの名前を出力してもよい。
【0097】
出力部17から出力された情報は、例えば、ネットワーク管理者の端末に転送され、表示される。
【0098】
(実施の形態の効果について)
上記のように、本実施の形態で説明した技術によれば、アプリケーションサーバ2からユーザ端末3に向けて送信されたパケットを取得することによりユーザ待ち時間を推定できるので、ユーザ端末とサーバ間で双方向に送受信されるパケットを取得しなければならない従来技術に比べて、取得すべきデータ量を削減できる。また、本実施の形態の技術では、トランスポート層よりも上位の層のプロトコルに係るヘッダの内容等を参照する必要がないので、トランスポート層よりも上位の層に対して暗号化を行うプロトコルが使用された場合でも、ユーザ待ち時間を推定することが可能になる。
【0099】
また、本実施の形態の技術では、RTTに応じてスライディングウィンドウの時間長さを変更することが可能なので、通信ネットワークの状況に応じたユーザ待ち時間を推定できる。
【0100】
更に、アプリケーションサーバ2がストレージ系アプリケーションサーバである場合や、アプリケーションサーバ2が高負荷となる場合のように、ユーザ端末3にTCPパケットを送信せずに処理を行うサーバ処理時間が長くなる場合があったとしても、本実施の形態の技術によれば、サーバ処理時間をパケットのTCPヘッダから推定し、連続区間と結合し、結合された時間区間をユーザ待ち時間と推定するので、より実際に近いユーザ待ち時間を求めることができる。
【0101】
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。
【符号の説明】
【0102】
1 ユーザ待ち時間推定装置
2 アプリケーションサーバ
3 ユーザ端末
4 通信ネットワーク
11 入力部
12 パケット格納部
13 トラヒック分類部
14 パケット数集計部
15 連続区間識別部
16 RTT提供部
17 出力部
18 サーバ処理時間推定部
19 マージ処理部
【技術分野】
【0001】
本発明は、クライアント/サーバ型のTCPベースアプリケーションを利用するユーザが、ユーザ端末上で体感する待ち時間を推定するための技術に関するものである。
【背景技術】
【0002】
クライアント/サーバ型のTCPベースのアプリケーションが広く普及している。当該アプリケーションをユーザが快適に使用するためには、ユーザがユーザ端末に対する操作を行ってから、当該操作に対する結果がユーザ端末の画面上に表示されるまでの時間である待ち時間(以下、これをユーザ待ち時間と呼ぶ)が短いことが好ましい。そのため、アプリケーションの品質を評価するにあたって、ユーザ待ち時間は重要な指標の一つであり、ユーザ待ち時間を適切に推定することが求められている。
【0003】
ユーザ待ち時間を推定する従来技術としては、事前評価型とインサービス評価型がある。
【0004】
事前評価型の技術は、実際の利用環境ではなく、擬似的な利用環境を用いて、被験者にアプリケーションを利用してもらい、待ち時間を計測するものである。また、擬似的な利用環境で、擬似クライアントを用いて待ち時間を計測する技術もある。
【0005】
インサービス評価型の技術としては、サーバに蓄積されたログを解析することによりユーザ待ち時間を推定する技術、サーバとユーザ端末間で送受信される情報を収集、解析し、解析結果からユーザ待ち時間を推定する技術、実際の利用環境で擬似クライアントプログラムをユーザ端末で実行させることにより待ち時間を計測する技術等がある。
【0006】
なお、先行技術文献として、TCP上でのデータ転送における遅延等の品質を推定する技術を開示した特許文献1がある。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2004−140596号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、従来の事前評価型の技術では、実際にユーザがアプリケーションを利用しているときのユーザ待ち時間を推定することができない。従って、通信ネットワークの状況等に応じて変化する場合があるユーザ待ち時間を適切に推定できない。また、事前評価型の技術では、通信ネットワークの状況等によりユーザ待ち時間が悪化した場合等に、それに対する対応をとるといったことができない。
【0009】
インサービス評価型の技術を用いることにより、事前評価型の問題を解決できる。しかし、従来のインサービス評価型の技術には次のような問題がある。
まず、サーバに蓄積されたログを解析することによりユーザ待ち時間を推定する技術では、サーバでの処理時間に関わる時間しか推定できず、通信ネットワークに起因するユーザ待ち時間の変化等を把握することができない。
【0010】
また、擬似クライアントプログラムを用いる技術では、サーバ及び通信ネットワークに測定用のオーバヘッドを生じさせることになり、測定に起因してアプリケーションの品質劣化等が生じてしまう可能性があるという問題がある。
【0011】
また、サーバとユーザ端末間で送受信される情報を収集、解析する従来の技術では、ユーザ待ち時間を推定するために、ユーザ端末とサーバ間で双方向に送受信される全てのデータを取得する必要があり、取得するべきデータのサイズが非常に大きくなってしまうという問題がある。更に、従来技術では、トランスポート層よりも上位の層までの情報を解析する必要があるため、HTTPSのようなトランスポート層よりも上位の層に対して暗号化を行うプロトコルが使用された場合、取得した情報の解析が不可能となり、ユーザ待ち時間の算出が行えないという問題がある。
【0012】
本発明は上記の点に鑑みてなされたものであり、ユーザ端末とサーバ間で送受信されるデータを取得することによりユーザ待ち時間を推定する技術において、取得するべきデータのサイズを軽減し、トランスポート層よりも上位の層に対して暗号化を行うプロトコルが使用された場合でも、ユーザ待ち時間を推定することを可能とした技術を提供することを目的とする。
【課題を解決するための手段】
【0013】
上記の課題を解決するために、本発明は、TCPベースのアプリケーションサービスを提供するアプリケーションサーバに通信ネットワークを介して接続され、前記アプリケーションサービスを利用するユーザ端末におけるユーザ待ち時間を推定するユーザ待ち時間推定装置であって、前記アプリケーションサーバから前記ユーザ端末に向けて送信された各パケットを取得し、当該パケットを取得した時刻の情報とともに、当該パケットを記憶手段に格納するパケット取得手段と、前記パケット取得手段により取得されたパケット群から、予め定めた時間幅を有するタイムスロット毎のパケット数を算出するパケット数集計手段と、前記パケット数集計手段により算出されたタイムスロット毎のパケット数に基づき、パケット数が予め定めた検知閾値以上であるタイムスロット群を、抽出タイムスロット群として抽出する抽出手段と、所定のウィンドウ時間長を有するスライディングウィンドウを定め、スライディングウィンドウに含まれる抽出タイムスロットの合計時間と前記ウィンドウ時間長とに基づき、スライディングウィンドウを時間進行方向にずらしながら、パケットが連続して出現した時間区間である連続区間を識別する連続区間識別手段と、前記パケット取得手段により取得された各パケットにおけるTCPヘッダ情報を参照することにより、前記アプリケーションサーバが前記ユーザ端末にTCPパケットを送信せずに処理を行った時間であるサーバ処理時間を推定するサーバ処理時間推定手段と、前記連続区間識別手段により識別された連続区間と、前記サーバ処理時間推定手段により推定されたサーバ処理時間とが時間的に連続しているか否かを判定し、連続している場合に、前記連続区間と前記サーバ処理時間とを結合する結合処理手段と、前記結合処理手段により結合された時間区間を、推定されたユーザ待ち時間として出力する出力手段とを備えることを特徴とするユーザ待ち時間推定装置として構成される。
【0014】
前記サーバ処理時間推定手段は、データなしのACKパケットであると識別された対象パケットの次のパケットがデータ付きのTCPパケットであり、なおかつ、当該次のパケットのACK番号が、前記対象パケットのACK番号と同じであると判定した場合に、前記対象パケットの時刻から前記次のパケットの時刻までを前記サーバ処理時間とするように構成できる。
【0015】
また、前記連続区間識別手段は、ある抽出タイムスロットに対応する連続性判定開始位置から時間進行方向に伸びるスライディングウィンドウに含まれる抽出タイムスロットの合計時間を算出し、前記ウィンドウ時間長に対する前記合計時間の割合が予め定めた閾値以上であるか否かを判定する判定手段と、前記判定手段により、前記ウィンドウ時間長に対する前記合計時間の割合が前記予め定めた閾値以上であると判定された場合に、連続性判定開始位置を次の抽出タイムスロットにずらし、当該ずらした連続性判定開始位置に基づき前記判定手段による処理を行うスライディング手段と、前記判定手段と前記スライディング手段による処理を、前記ウィンドウ時間長に対する前記合計時間の割合が前記予め定めた閾値未満であると判定されるまで繰り返し行い、最初の連続性判定開始位置から、最後に前記合計時間の割合が前記閾値以上であると判定されたスライディングウィンドウの末尾までの時間を前記パケットが連続して出現した時間区間であると決定する手段とを備えるように構成することができる。
【発明の効果】
【0016】
本発明によれば、アプリケーションサーバからユーザ端末に向けて送信されたパケットを取得することによりユーザ待ち時間を推定できるので、ユーザ端末とサーバ間で双方向に送受信されるパケットを取得しなければならない従来技術に比べて、取得すべきデータ量を削減できる。また、本発明では、トランスポート層よりも上位の層のプロトコルに係るヘッダの内容等を参照する必要がないので、トランスポート層よりも上位の層に対して暗号化を行うプロトコルが使用された場合でも、ユーザ待ち時間を推定することが可能になる。
【0017】
更に、アプリケーションサーバにおいて、ユーザ端末にTCPパケットを送信せずに処理を行うサーバ処理時間が長くなる場合があったとしても、本発明によれば、サーバ処理時間をパケットのTCPヘッダから推定し、連続区間と結合し、結合された時間区間をユーザ待ち時間と推定するので、より実際に近いユーザ待ち時間を求めることができる。
【図面の簡単な説明】
【0018】
【図1】本発明の実施の形態に係るシステムの全体構成図である。
【図2】「ユーザ待ち時間」を説明するための図である。
【図3】「ユーザ待ち時間」を説明するための図である。
【図4】ユーザ待ち時間推定装置1の機能構成図である。
【図5】ユーザ待ち時間推定装置1の動作を説明するためのフローチャートである。
【図6】パケット格納部12に格納されるパケットの例を示す図である。
【図7】パケット格納部12に格納されるパケットの例を示す図である。
【図8】トラヒック分類部13により分類されたパケットの例を示す図である。
【図9】パケット数集計部14により得られた集計結果を示すヒストグラムである。
【図10】連続区間識別部15が実行する処理を説明するためのフローチャートである。
【図11】連続区間識別部15が実行する処理を説明するための概念図である。
【図12】連続区間識別部15が実行する処理を説明するためのフローチャートである。
【図13】連続区間識別部15が実行する処理を説明するための概念図である。
【図14】サーバ処理時間推定部18が実行する処理を説明するための概念図である。
【図15】サーバ処理時間推定部18が実行する処理を説明するためのフローチャートである。
【図16】マージ処理部19が実行する処理を説明するための概念図である。
【発明を実施するための形態】
【0019】
以下、図面を参照して本発明の実施の形態を説明する。
【0020】
(システム構成)
図1に、本発明の実施の形態に係るユーザ待ち時間推定装置1を含むシステムの全体構成図を示す。
【0021】
図1に示すように、本実施の形態に係るシステムは、ユーザ待ち時間推定装置1、アプリケーションサーバ2、ユーザ端末3を備え、これらが通信ネットワーク4に接続されて構成されている。
【0022】
アプリケーションサーバ2は、アプリケーションサービスをユーザ端末3に対して提供するサーバである。アプリケーションサーバ2が提供するアプリケーションサービスは、例えば、Webページ提供サービス、ストレージ系サービス等である。
【0023】
ユーザ待ち時間推定装置1は、アプリケーションサーバ2と通信を行うユーザ端末3を操作するユーザが体感する待ち時間を推定する装置である。また、ユーザ端末3は、Webブラウザ等を備えた一般的なPC端末である。通信ネットワーク4は、インターネットやLAN等を含むIP(Internet Protocol)によるデータ通信可能なネットワークである。
【0024】
また、アプリケーションサーバ2とユーザ端末3間で送受信される全てのパケット(IPパケット)をユーザ待ち時間推定装置1が受信できるように通信ネットワーク4が構成されているものとする。例えば、ユーザ待ち時間推定装置1は、通信ネットワーク4内で、アプリケーションサーバ2を接続するLANスイッチのミラーポートに接続される。
【0025】
ただし、ユーザ待ち時間推定装置1は、必ずしも通信ネットワーク4から直接にパケットを取得しなくてもよい。例えば、通信ネットワーク4から他の装置により取得されたパケットを、当該装置からユーザ待ち時間推定装置1に入力する構成としてもよい。
【0026】
なお、本実施の形態では、ユーザ端末3とアプリケーションサーバ2間におけるデータ通信のトランスポート層のプロトコルとしてTCP(Transmission Control Protocol)を用いることを前提としている。TCPは、フロー制御等の制御のための通信が頻繁に発生するとともに、要求に対応する応答が必ず発生するので、本発明に係る技術に適しているからである。また、図1では、アプリケーションサーバ2とユーザ端末3がそれぞれ1つづつ示されているが、それぞれ複数台備えられてよいことはいうまでもない。
【0027】
次に、図2を参照して、本実施の形態に係る"ユーザ待ち時間"について説明する。図2は、アプリケーションサーバ2とユーザ端末3間でのTCPの通信シーケンスの概要を表している図である。
【0028】
図2に示すように、ユーザがユーザ端末3上で、所望の表示結果を得るための所定の操作(例えば、ブラウザ画面上に表示された特定のボタンをクリックする操作)を行うと、パケットがアプリケーションサーバ2とユーザ端末3間で送受信され、上記操作に対応する結果(例えば、表示されることを期待していたWebページ画面)がユーザ端末3上に表示される。
【0029】
図3に、ユーザ待ち時間の別の例を示す。図3で示す例は、ストレージ系のアプリケーションの例であり、アプリケーションサーバ2側において、TCPパケットをユーザ端末3に返すことなく行う処理(この例ではデータのHDDへの書き込み処理)にある程度の時間を要する場合の例である。
【0030】
図3の例では、ユーザによる操作(データのアップロード指示等)を行ってから、アプリケーションサーバ2とユーザ端末3間での連続的なパケットの送受信を経て、アプリケーションサーバ2において上記の書き込み処理が行われて、その後、アプリケーションサーバ2とユーザ端末3間での連続的なパケットの送受信を経て、ユーザ端末3上に、操作に対応する結果(例えば、アップロードが終了したことを示す画面)が表示される。この場合、図3に示す時刻Aから時刻Bまでがユーザ待ち時間となる。本実施の形態の技術では、このような場合のユーザ待ち時間も適切に求めることができる。
【0031】
本明細書及び特許請求の範囲では、上記のように所定の操作を行った時刻から、当該所定の操作に対応する結果が表示される時刻までをユーザ待ち時間としている。
【0032】
図4に、本実施の形態に係るユーザ待ち時間推定装置1の機能構成図を示す。図4に示すように、ユーザ待ち時間推定装置1は、入力部11、パケット格納部12、トラヒック分類部13、パケット数集計部14、連続区間識別部15、RTT(Round Trip Time)提供部16、出力部17、サーバ処理時間推定部18、及びマージ処理部19を有する。
【0033】
各機能部の処理の内容については、後述するシステムの動作説明のところで詳細に説明することとし、以下では各機能部の機能の概要を説明する。
【0034】
入力部11は、ユーザ端末3とアプリケーションサーバ2間で送受信されるパケットのうち、アプリケーションサーバ2からユーザ端末3に向かうパケットを通信ネットワーク4等から取得し、各パケットにタイムスタンプ(現在時刻、パケットを取得した時刻)を付してパケット格納部12に格納する機能部である。
【0035】
トラヒック分類部13は、アプリケーションサーバ2からユーザ端末3に向かうパケットを宛先毎に分類する機能部である。パケット数集計部14は、特定のユーザ端末宛であると識別されたパケット群毎に、予め定めた時間幅(タイムスロット)毎のパケット数を算出する処理を行う機能部である。
【0036】
連続区間識別部15は、パケット数集計部14により得られた予め定めた時間幅毎のパケット数を用いて、所定の時間幅内に一定量以上のパケットが連続して出現しているか否かを識別することにより、ユーザによる待ち時間が継続していると推定できる時間区間である連続区間を求める機能部である。
【0037】
また、RTT提供部16は、RTT(Round Trip Time:ユーザ端末3からアプリケーションサーバ2にパケットを送信して、確認応答パケットがアプリケーションサーバ2からユーザ端末3に返されるまでの時間)を取得し、それを連続区間識別部15及びサーバ処理時間推定部に提供する機能部である。
【0038】
サーバ処理時間推定部18は、トラヒック分類部13により抽出されたパケットにおけるTCPヘッダの情報を参照することにより、ユーザ端末3からアプリケーションサーバ2への処理要求(例えば、データアップロード処理要求)に関するデータ送信完了を把握するとともに、当該処理要求に対応した処理完了の応答を把握することにより、TCPパケットがユーザ端末3に返されることなくアプリケーションサーバ2で実行された処理の時間を推定する機能部である。
【0039】
マージ処理部19は、連続区間識別部15で算出された連続区間と、サーバ処理時間推定部18で算出されたサーバ処理時間とを結合する機能部である。
【0040】
出力部17は、マージ処理部19により得られた時間区間を、推定されたユーザ待ち時間の情報として出力する機能部である。
【0041】
ユーザ待ち時間推定装置1は、メモリやハードディスク等の記憶手段及びCPUを備える一般的なコンピュータに、各機能部に対応する処理を行うためのプログラムを搭載することにより実現できる。当該プログラムは、可搬メモリやディスク等の記録媒体から上記コンピュータにインストールしてもよいし、ネットワーク上のサーバから上記コンピュータにダウンロードし、インストールすることとしてもよい。
【0042】
(システムの動作)
次に、ユーザ待ち時間推定装置1の動作の例を、図5のフローチャートに沿って説明する。まず、ユーザ待ち時間推定装置1の入力部11は、通信ネットワーク4から、アプリケーションサーバ2を送信元とするパケットを順次取得し、取得した時刻の情報であるタイムスタンプを付してパケット格納部12に格納する(図5のステップ1)。
【0043】
ユーザ待ち時間推定装置1は、特定のアプリケーションサーバ2から送信されるパケットを常にパケット格納部12に格納し、当該アプリケーションサーバ2に関するユーザ待ち時間推定の必要が生じたときに、特定の時間区間に取得されたパケットを解析の対象としてもよいし、ユーザ指示等により特定の時間区間だけパケット収集を行い、そこで収集されたパケットを解析の対象としてもよい。また、常にパケットをパケット格納部12に格納し、一定時間毎に特定のアプリケーションサーバに関するユーザ待ち時間推定処理を実行することとしてもよい。もちろん、その他の形態を用いてもよい。
【0044】
パケット格納部12に格納されるパケットの例を図6(a)に示す。例えば、図6(a)の第1行目は、送信元IPアドレスがIPアドレス1、送信元ポート番号がポート番号1、宛先IPアドレスがIPアドレス3、宛先ポート番号がポート番号1であるIPパケットが、時刻1に取得され、格納されたことを示している。他の行も同様である。
【0045】
なお、図6(a)では、宛先IPアドレスがIPアドレス3であるIPパケットのみを示しているが、一般には、種々の宛先IPアドレスのIPパケットが取得される。また、パケット格納部12に格納する対象となるパケットの送信元IPアドレスと宛先IPアドレスとを予め決めている場合には、取得したパケットからIPヘッダを除き、TCPヘッダが付されたTCPパケットの形式でパケット格納部12に格納することとしてもよい。
【0046】
続いて、図5のステップ2において、トラヒック分類部13が、パケット格納部12に格納されたパケットを、宛先ユーザ端末毎に分類する処理を行う。分類にあたって、本実施の形態では、宛先IPアドレスと宛先ポート番号の1つの組が1つの宛先ユーザ端末に対応するものとし、宛先IPアドレスと宛先ポート番号の組毎にパケットを分類する処理を行う。
【0047】
ただし、NAT経由の通信等の場合に、1つの宛先ユーザ端末に対して、1つの宛先IPアドレスと、連続する複数の宛先ポート番号が割り当てられる場合があることを考慮して、同じ宛先IPアドレスの複数のパケットであって、連続するポート番号を有する複数のパケットが所定の短い時間(例えば0.5秒)内に現れた場合は、それらのパケットは1つのユーザ端末宛のパケットであるとみなしている。
【0048】
例えば、パケット格納部12に格納されたパケットが図6(a)に示すとおりのものであった場合、宛先IPアドレスは同一なので、トラヒック分類部13は、図6(b)に示すようにパケットを分類(ソート)する。図6(b)の例において、宛先ポート番号1のIPパケットはユーザ端末A宛てのパケット、宛先ポート番号8のパケットはユーザ端末Aと異なるユーザ端末B宛てのパケットなどとみなすことができる。
【0049】
また、例えば、パケット格納部12に格納されたパケットが図7(a)に示すようなものであり、時刻1から時刻4までの時間及び時刻5から時刻7までの時間のそれぞれが所定の時間より短い場合、トラヒック分類部13は、パケットを図7(b)に示すように分類する。図7(b)の例において、宛先ポート番号1〜4のパケットはユーザ端末X宛てのパケット、宛先ポート番号10〜12のパケットはユーザ端末Xと異なるユーザ端末Y宛てのパケットとみなすことができる。
【0050】
なお、以下で説明する処理は、分類されたパケット群のうち、特定の1つのユーザ端末宛のパケットに対する処理であるものとする。また、分類がなされたパケットは、パケット格納部12に格納してもよいし、パケット格納部12以外のメモリ等の記憶手段に格納してもよい。
【0051】
また、宛先ユーザ端末毎に分類されたパケットを取得する方法は、上記の方法に限られるわけではなく、結果として、宛先ユーザ端末毎に分類されたパケットを取得できるのであればどのような手段を用いてもよい。
【0052】
次に、図5のステップ3において、ユーザ待ち時間推定装置1のパケット数集計部14は、分類されたパケットについて、予め定めた時間幅(Wで表し、タイムスロットとも呼ぶ)毎の個数を算出する処理を行う。
【0053】
例えば、トラヒック分類部13により、図8に示すパケットが、アプリケーションサーバ2からユーザ端末3宛(IPアドレス3及び宛先ポート番号10で識別されるユーザ端末)のパケットとして抽出されたものとする。また、例えば、タイムスロットの大きさWとして0.1秒(以下、時間の単位は秒であるとする)を使用するものとする。
【0054】
この場合、パケット数集計部14は、時刻0から時刻0.1の間のタイムスロットのパケット数を3として求め、時刻0.1から時刻0.2の間のタイムスロットのパケット数を4として求める。他のタイムスロットでも同様である。このようにして算出した結果から、図9に示すヒストグラムが得られる。
【0055】
<連続区間識別部15の動作>
続いて、図5のステップ4において、連続区間識別部15が、パケット数集計部14により得られたタイムスロット毎のパケット数に基づき、ユーザ待ち時間が継続していると推定することができるパケットの連続区間を識別する処理を行う。
【0056】
本実施の形態では、連続区間識別部15は、ユーザ端末3からアプリケーションサーバ2にパケットが送信されてから、確認応答パケットがアプリケーションサーバ2からユーザ端末3に返されるまでの時間であるRTTを利用して連続区間を識別することもできるし、RTTを利用しないで連続区間を識別することもできる。RTTを利用するかしないかは、例えば、アプリケーションサーバ2の位置(国内か外国か等)や、通信ネットワーク4の状態等で判断し、ユーザによりRTTを利用するかしないかを設定することができる。
【0057】
―――RTTを利用しない場合―――
まず、RTTを利用しない場合の処理について、図10のフローチャート、及び、図11に示す処理の概念図を用いて説明する。
【0058】
なお、以下の処理の前提として、タイムスロットにおけるパケット数の閾値である検知閾値と、スライディングウィンドウの時間長さLと、連続性判定閾値Sとが予め連続区間識別部15に入力され、メモリ等に保持されているものとする。
【0059】
まず、図10のステップ10において、連続区間識別部15は、パケット数が検知閾値以上の全てのタイムスロットを抽出する。ここで、検知閾値は、0以上の整数である。検知閾値は、対象とする通信(ユーザによる操作に起因する通信)以外の通信に係るパケットを、ユーザ待ち時間推定において検知しないようにするために設けられるものである。また、各タイムスロットは、その開始時間位置と終了時間位置で識別される情報である。ステップ10の処理は、図11において、パケット数が点線と重なるか、点線を越えているタイムスロットを抽出する処理に相当する。以下、ここで抽出されたタイムスロットを、抽出タイムスロットと呼ぶ。
【0060】
次に、図10のステップ20において、連続区間識別部15は、複数の抽出タイムスロットのうちの、後述する連続性判定開始位置になったことがない抽出タイムスロットの中で、時間的に最初に位置する抽出タイムスロットの開始位置(時刻Tとする)を特定する。
【0061】
そして、連続区間識別部15は、連続区間識別のためにスライディングウィンドウをずらす時間長さを示す変数であるCを初期化(C=0とする)する(ステップ30)。続いて、連続区間識別部15は、上記抽出タイムスロットの開始位置である時刻Tから始まるスライディングウィンドウに含まれる抽出タイムスロットの合計の時間長さを求め、スライディングウィンドウの時間長さLに対する当該抽出タイムスロットの合計の時間長さの割合Rを求める(ステップ40)。以下では、スライディングウィンドウの開始位置を連続性判定開始位置と呼ぶことにする。
【0062】
ステップ40において、タイムスロットの時間幅がWであり、連続性判定開始位置から始まるスライディングウィンドウの時間長さLの中に、抽出タイムスロット(パケット数が検知閾値以上のタイムスロット)がM個含まれるとした場合、抽出タイムスロットの合計の時間長さはW×Mであるから、R=W×M/Lとなる。また、図11の場合について、タイムスロットの幅を0.1、各スライディングウィンドウの長さを1とすると、スライディングウィンドウAの中に、8個の抽出タイムスロットが含まれるから、R=0.1×8/1=0.8となる。
【0063】
続いて、連続区間識別部15は、Rが連続性判定閾値S以上であるか否かを判定する(ステップ50)。本実施の形態において、Sは、0から1の間の定数であり、例えばS=0.5である。
【0064】
ステップ50において、Rが連続性判定閾値S以上であると判定された場合、連続区間識別部15は、連続性判定開始位置を、時間進行方向において次に位置する抽出タイムスロットの開始位置とする。また、連続性判定開始位置をずらした長さ(前の連続性判定開始位置から次の連続性判定開始位置までの時間)をKとし、C=C+Kとする(ステップ60)。その後、ステップ40に戻る。
【0065】
また、ステップ50において、Rが連続性判定閾値S以上でないと判定された場合、連続区間識別部15は、ステップ70に進み、C=C−Kとするとともに、TからT+C+Lの区間を連続区間としてメモリ等の記憶手段に記録し、ステップ20に戻る。ただし、ステップ50の判定処理において、一度もYesの判定がされずに最初からNoと判定された場合には、ステップ70を経ずにステップ20に戻る。ステップ20において、現在の連続性開始判定位置の次の抽出タイムスロットの開始位置がTとなり、それ以降の処理が繰り返される。ここで、次の抽出タイムスロットが存在しなければ処理を終了する(ステップ80)。
【0066】
上記の処理の概念を図11を参照して説明する。図11の例では、スライディングウィンドウの時間長さがタイムスロット10個分の長さであり、連続性判定閾値S=1/2=0.5であるものとする。つまり、この場合、スライディングウィンドウ内に、5個以上の抽出タイムスロットが含まれる場合に、ステップ50においてYESと判定される。
【0067】
図11の例では、点線よりパケット数の多いタイムスロットがまず抽出される。そして、スライディングウィンドウAの開始位置Tが最初の連続性判定開始位置となり、スライディングウィンドウAには、8個の抽出タイムスロットが含まれるので、ステップ50においてYESと判定され、連続性判定開始位置がスライディングウィンドウBの開始位置までずらされ、同様の判定処理及び連続性判定開始位置をずらす処理等が繰り返される。
【0068】
図11の例では、スライディングウィンドウEには、5個の抽出タイムスロットが含まれるが、スライディングウィンドウFには、4個の抽出タイムスロットしか含まれず、ここではステップ50の判定はNoになる。従って、スライディングウィンドウAの開始位置Tから、スライディングウィンドウEの終了位置(T+C+L)までの時間区間が、ユーザ待ち時間に対応する連続区間であるとして記憶手段に記録されることになる。
【0069】
上述した本実施の形態における技術を用いることにより、安定したネットワーク環境において、ユーザ待ち時間に対応する連続区間を適切に推定することが可能となる。TCPパケットを用いる場合において、TCPヘッダの中の情報から、データ転送開始及び終了を判定することにより、ユーザ待ち時間に対応する連続区間を推定することも考えられるが、ユーザ待ち時間の中で、TCP上でのデータ転送開始及び終了が連続的に複数回発生する場合があるので、TCPヘッダの中の情報からでは、適切にユーザ待ち時間を推定することはできない。
【0070】
本実施の形態のように、TCPベースのアプリケーションサーバ2からユーザ端末3に送信されるパケットが、ある程度の短い時間間隔で連続的に発生している場合はユーザの待ちが継続していると判定する手法により、より適切にユーザ待ち時間を推定することが可能になる。
【0071】
上記の例において、タイムスロットの時間幅W、スライディングウィンドウの時間長さL、及び、連続性判定閾値Sについては、実験等により適切な値を定めればよいが、安定したネットワーク環境での一例として、タイムスロットの時間幅Wとして0.1を用い、スライディングウィンドウの時間長さLとしてタイムスロット10個分である1を用い、連続性判定閾値Sとして1/2を用いることにより、良好な結果が得られている。
【0072】
−−−RTTを利用する場合―――
次に、RTTを利用する場合の連続区間の識別処理のフローチャートを図12に示す。以下では、RTTを利用しない場合との相違点を中心に説明する。
【0073】
RTTを利用しない場合は、スライディングウィンドウの時間長さLとして予め定めた長さを用いていたのに対し、RTTを利用する場合の処理は、図12のステップ35において、スライディングウィンドウの長さLをRTTに基づき算出し、それ以降の処理において、RTTに基づき求めたLを用いて連続区間を判定している。その他の処理については図10の場合と同じである。より詳細には以下のとおりである。
【0074】
本実施の形態では、入力部11は、RTTを求めるためのデータとして、アプリケーションサーバ2からユーザ端末3に向かうパケットの他に、ユーザ端末3からプリケーションサーバ2に向かうパケットのうちの一部のパケットを取得してパケット格納部12に格納することができる。RTT提供部16は、パケット格納部12に格納されたデータを参照することにより、例えば、シーケンス番号で送信パケットとそれに対応する応答パケットを識別し、所定の時間毎のRTTを算出することができる。なお、TCPパケットからRTTを算出すること自体は従来技術である。もちろん、RTT提供部16は、その他の方法でRTTを算出することとしてもよい。例えば、ユーザ待ち時間推定装置1の外部にある装置でRTTを取得し、その装置からRTTを受信することとしてもよい。
【0075】
ステップ35において、連続区間識別部15は、RTT提供部16から、連続性判定開始位置に最も近い時刻に対応するRTTを取得する。ここでRTTをTRと表すと、連続区間識別部15は、L=(TR+W)×N(Nは自然数)としてLを求める。例えば、TR=0.01、W=0.1、N=10であるとすると、L=0.11×10=1.1となる。また、例えば、R=0.05、W=0.1、N=10であるとすると、L=0.15×10=1.5となる。
【0076】
RTTを用いる場合の処理の概念を図13を用いて説明する。図13において、(A)で示される部分は、L=1.1の場合であり、(B)で示される部分は、L=1.5の場合を示している。図13に示すとおり、スライディングウィンドウの長さLをRTTに応じて伸ばすことにより、RTTの影響でパケットの出現間隔が間延びする場合であっても、適切に連続区間(ユーザ待ち時間が継続していると推定できる区間)を識別できる。
【0077】
<サーバ処理時間推定部18の動作>
続いて、サーバ処理時間推定部18により、サーバ処理時間推定処理が実行される(図5のステップ5)。まず、サーバ処理時間推定部18による処理の概要を、図14に示す概念図を用いて説明する。
【0078】
TCPの通信では、ユーザ端末3からアプリケーションサーバ2に対するデータ(この例ではサーバ2に対する処理要求に係るデータ)の送信が完了した場合に、アプリケーションサーバ2からユーザ端末3に対して、データの受信が完了したことを示すTCPパケットであるデータなしのACKパケット(TCPヘッダのACKフラグがONであるパケット)が送信される。このACKパケットには、ユーザ端末3から受信したデータに対応するACK番号(図14の例では100)が含まれている。このACK番号は、これ以降、ユーザ端末3からデータを受信しない限り変化しない番号である。
【0079】
ACKパケット送信の後、アプリケーションサーバ2ではデータ書き込み等の処理が行われ、この時間区間では、ユーザ端末3に対してパケットは送信されない。また、アプリケーションサーバ2が高負荷の状態にある場合には、この時間区間は長くなる。
【0080】
アプリケーションサーバ2での処理が終了すると、アプリケーションサーバ2は、処理が終了したことを示すデータを載せたTCPパケットをユーザ端末3に送信する。
【0081】
データなしのACKパケットを送信した以降、この時点までで、アプリケーションサーバ2はユーザ端末3からデータを受信していないので、このTCPパケットのACK番号は、データなしのACKパケットにおけるACK番号と同じ100である。
【0082】
以上の処理内容から、アプリケーションサーバ2からユーザ端末3に対して、データなしのACKパケットが送信された時刻から、アプリケーションサーバ2からユーザ端末3に対して、データ付きのTCPパケットであって、ACK番号が、上記ACKパケットと同じパケットが送信された時刻までの時間が、アプリケーションサーバ2による処理時間であると推定できる。
【0083】
本実施の形態では、以上の原理を利用して、アプリケーションサーバ2による処理時間を推定している。もちろん、TCPヘッダから判定可能な方法であれば、上記以外の方法を用いてサーバ処理時間を推定してもよい。
【0084】
以下、図15のフローチャートを参照して、サーバ処理時間推定部18の処理を説明する。
【0085】
まず、サーバ処理時間推定部18は、トラヒック分類部13により抽出されたパケット群(例:図8)を取得する(ステップ100)。取得したパケット群の各パケットについて1つづつ、時刻の進む順番に、以下の処理が実行されることになる。
【0086】
サーバ処理時間推定部18は、処理対象のパケット(=着目しているパケット)の時刻に対応する閾値を算出する(ステップ101)。ここでは、例えば、処理対象のパケットに対応するRTTをRTT提供部16から取得し、それを閾値とする。もちろん、予め定めた固定値を閾値としてもよい。
【0087】
次に、サーバ処理時間推定部18は、処理対象のパケットと、当該パケットの次のパケットとの間の時間間隔が閾値以上か否かを判定する(ステップ102)。ここでの判定結果がNoであれば、処理対象のパケットを次のパケットとして、ステップ101に戻る(ステップ201、202)。パケット間の時間間隔が閾値未満といった小さい値であれば、連続区間識別部15による処理により、連続であると判定される蓋然性が高いからである。
【0088】
ステップ102において、パケット間の時間間隔が閾値以上であると判定された場合、サーバ処理時間推定部18は、処理対象のパケットがデータなしのACKパケットであるかどうかの判定を行う(ステップ103)。ここでの判定結果がNoであれば、処理対象のパケットを次のパケットとして、ステップ101に戻る。
【0089】
ステップ103での判定結果がYesである場合、サーバ処理時間推定部18は、処理対象のパケットの次のパケットが、データ付きのTCPパケットであり、かつ、処理対象のパケットのACK番号と同じACK番号を有するかどうかの判定を行う(ステップ104)。ここでの判定結果がNoであれば、処理対象のパケットを次のパケットとして、ステップ101に戻る。
【0090】
ステップ104での判定結果がYesである場合、サーバ処理時間推定部18は、処理対象のパケットと、当該パケットの次のパケットとの間の時間間隔をサーバ処理時間として算出し、当該サーバ処理時間を、処理対象のパケットの時刻と、当該パケットの次のパケットの時刻とともに、メモリ等の記憶手段に記録する(ステップ105)。そして、次のパケットを処理対象のパケットとして、ステップ101に戻る。全てのパケットの処理が終了すれば、サーバ処理時間推定処理を終了する(ステップ201、203)。
【0091】
<マージ処理部19の処理>
サーバ処理時間推定処理が終了した後、マージ処理部19は、連続区間識別部15により得られた連続区間群と、サーバ処理時間推定部18により得られたサーバ処理時間群とを参照し、各サーバ処理時間に関して、サーバ処理時間と時間的に連続している連続区間が存在するか否かをチェックし、存在する場合に、サーバ処理時間と連続区間とを結合(マージ)し、結合された時間区間を、推定されたユーザ待ち時間として出力部17に渡す処理を行う(図5のステップ6)。また、マージ処理部19は、サーバ処理時間と結合されない連続区間に関しては、当該連続区間そのものを推定されたユーザ待ち時間として出力部17に渡す。
【0092】
この処理を、図16を参照してより具体的に説明する。図16は、パケット数集計部14により集計された結果のヒストグラムを表す図である。図16の例において、連続区間識別部15により、連続区間A(開始時刻SA、終了時刻EAとする)と連続区間B(開始時刻SB、終了時刻EBとする)が識別されたものとする。更に、サーバ処理時間推定部18により、サーバ処理時間C(開始時刻SC、終了時刻EC)が推定されたものとする。
【0093】
マージ処理部19は、サーバ処理時間Cの開始時刻SCと一致するか、又は、開始時刻SCとの差の絶対値が所定の閾値以下である終了時刻を持つ連続区間を、連続区間識別部15により得られた連続区間群を参照して検索し、連続区間Aを抽出する。また、マージ処理部19は、サーバ処理時間Cの終了時刻ECと一致するか、又は、終了時刻ECとの差の絶対値が所定の閾値以下である開始時刻を持つ連続区間を、連続区間識別部15により得られた連続区間群を参照して検索し、連続区間Bを抽出する。
【0094】
そして、マージ処理部19は、連続区間A、サーバ処理時間C、及び連続区間Bを結合した時間区間(連続区間Aの開始時刻SAから連続区間Bの終了時刻EBまでの時間区間)をユーザ待ち時間として出力部17に渡す。
【0095】
仮に、連続区間Bが検出されずに、連続区間Aとサーバ処理時間Cが結合された場合は、連続区間Aの開始時刻SAからサーバ処理時間Cの終了時刻ECまでの時間区間が、ユーザ待ち時間として出力部17に渡される。また、仮に、連続区間Aが検出されずに、サーバ処理時間Cと連続区間Bとが結合された場合は、サーバ処理時間Cの開始時刻SCから連続区間Bの終了時刻EBまでの時間区間が、ユーザ待ち時間として出力部17に渡される。また、いずれのサーバ処理時間も、連続区間Aと連続区間Bに結合されなかった場合には、マージ処理部19は、連続区間Aと連続区間Bのそれぞれをユーザ待ち時間として出力部17に渡す。
【0096】
その後は、出力部17が、マージ処理部19からの結果を出力する(図5のステップ7)。例えば、出力部17は、ユーザ待ち時間情報として、対象となっているアプリケーションサーバ2のIPアドレス及びポート番号、ユーザ端末3に対応するIPアドレス及びポート番号、及び、推定されたユーザ待ち時間の開始時刻と終了時刻を出力する。また、ユーザ端末3に対応するIPアドレス及びポート番号から、ユーザ端末もしくはユーザの名前を識別可能である場合には、ユーザ端末もしくはユーザの名前を出力してもよい。
【0097】
出力部17から出力された情報は、例えば、ネットワーク管理者の端末に転送され、表示される。
【0098】
(実施の形態の効果について)
上記のように、本実施の形態で説明した技術によれば、アプリケーションサーバ2からユーザ端末3に向けて送信されたパケットを取得することによりユーザ待ち時間を推定できるので、ユーザ端末とサーバ間で双方向に送受信されるパケットを取得しなければならない従来技術に比べて、取得すべきデータ量を削減できる。また、本実施の形態の技術では、トランスポート層よりも上位の層のプロトコルに係るヘッダの内容等を参照する必要がないので、トランスポート層よりも上位の層に対して暗号化を行うプロトコルが使用された場合でも、ユーザ待ち時間を推定することが可能になる。
【0099】
また、本実施の形態の技術では、RTTに応じてスライディングウィンドウの時間長さを変更することが可能なので、通信ネットワークの状況に応じたユーザ待ち時間を推定できる。
【0100】
更に、アプリケーションサーバ2がストレージ系アプリケーションサーバである場合や、アプリケーションサーバ2が高負荷となる場合のように、ユーザ端末3にTCPパケットを送信せずに処理を行うサーバ処理時間が長くなる場合があったとしても、本実施の形態の技術によれば、サーバ処理時間をパケットのTCPヘッダから推定し、連続区間と結合し、結合された時間区間をユーザ待ち時間と推定するので、より実際に近いユーザ待ち時間を求めることができる。
【0101】
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。
【符号の説明】
【0102】
1 ユーザ待ち時間推定装置
2 アプリケーションサーバ
3 ユーザ端末
4 通信ネットワーク
11 入力部
12 パケット格納部
13 トラヒック分類部
14 パケット数集計部
15 連続区間識別部
16 RTT提供部
17 出力部
18 サーバ処理時間推定部
19 マージ処理部
【特許請求の範囲】
【請求項1】
TCPベースのアプリケーションサービスを提供するアプリケーションサーバに通信ネットワークを介して接続され、前記アプリケーションサービスを利用するユーザ端末におけるユーザ待ち時間を推定するユーザ待ち時間推定装置であって、
前記アプリケーションサーバから前記ユーザ端末に向けて送信された各パケットを取得し、当該パケットを取得した時刻の情報とともに、当該パケットを記憶手段に格納するパケット取得手段と、
前記パケット取得手段により取得されたパケット群から、予め定めた時間幅を有するタイムスロット毎のパケット数を算出するパケット数集計手段と、
前記パケット数集計手段により算出されたタイムスロット毎のパケット数に基づき、パケット数が予め定めた検知閾値以上であるタイムスロット群を、抽出タイムスロット群として抽出する抽出手段と、
所定のウィンドウ時間長を有するスライディングウィンドウを定め、スライディングウィンドウに含まれる抽出タイムスロットの合計時間と前記ウィンドウ時間長とに基づき、スライディングウィンドウを時間進行方向にずらしながら、パケットが連続して出現した時間区間である連続区間を識別する連続区間識別手段と、
前記パケット取得手段により取得された各パケットにおけるTCPヘッダ情報を参照することにより、前記アプリケーションサーバが前記ユーザ端末にTCPパケットを送信せずに処理を行った時間であるサーバ処理時間を推定するサーバ処理時間推定手段と、
前記連続区間識別手段により識別された連続区間と、前記サーバ処理時間推定手段により推定されたサーバ処理時間とが時間的に連続しているか否かを判定し、連続している場合に、前記連続区間と前記サーバ処理時間とを結合する結合処理手段と、
前記結合処理手段により結合された時間区間を、推定されたユーザ待ち時間として出力する出力手段と
を備えることを特徴とするユーザ待ち時間推定装置。
【請求項2】
前記サーバ処理時間推定手段は、データなしのACKパケットであると識別された対象パケットの次のパケットがデータ付きのTCPパケットであり、なおかつ、当該次のパケットのACK番号が、前記対象パケットのACK番号と同じであると判定した場合に、前記対象パケットの時刻から前記次のパケットの時刻までを前記サーバ処理時間とすることを特徴とする請求項1に記載のユーザ待ち時間推定装置。
【請求項3】
前記連続区間識別手段は、
ある抽出タイムスロットに対応する連続性判定開始位置から時間進行方向に伸びるスライディングウィンドウに含まれる抽出タイムスロットの合計時間を算出し、前記ウィンドウ時間長に対する前記合計時間の割合が予め定めた閾値以上であるか否かを判定する判定手段と、
前記判定手段により、前記ウィンドウ時間長に対する前記合計時間の割合が前記予め定めた閾値以上であると判定された場合に、連続性判定開始位置を次の抽出タイムスロットにずらし、当該ずらした連続性判定開始位置に基づき前記判定手段による処理を行うスライディング手段と、
前記判定手段と前記スライディング手段による処理を、前記ウィンドウ時間長に対する前記合計時間の割合が前記予め定めた閾値未満であると判定されるまで繰り返し行い、最初の連続性判定開始位置から、最後に前記合計時間の割合が前記閾値以上であると判定されたスライディングウィンドウの末尾までの時間を前記パケットが連続して出現した時間区間であると決定する手段と
を備えることを特徴とする請求項1又は2に記載のユーザ待ち時間推定装置。
【請求項4】
前記スライディングウィンドウのウィンドウ時間長を、前記通信ネットワークにおけるRTTに基づき算出する算出手段を備えることを特徴とする請求項1ないし3のうちいずれか1項に記載のユーザ待ち時間推定装置。
【請求項5】
前記算出手段は、予め定めた時間長に、前記RTTの値を加えることにより得た値から、前記スライディングウィンドウのウィンドウ時間長を算出することを特徴とする請求項4に記載のユーザ待ち時間推定装置。
【請求項6】
TCPベースのアプリケーションサービスを提供するアプリケーションサーバに通信ネットワークを介して接続され、前記アプリケーションサービスを利用するユーザ端末におけるユーザ待ち時間を推定するユーザ待ち時間推定装置が実行するユーザ待ち時間推定方法であって、
前記アプリケーションサーバから前記ユーザ端末に向けて送信された各パケットを取得し、当該パケットを取得した時刻の情報とともに、当該パケットを記憶手段に格納するパケット取得ステップと、
前記パケット取得ステップにより取得されたパケット群から、予め定めた時間幅を有するタイムスロット毎のパケット数を算出するパケット数集計ステップと、
前記パケット数集計ステップにより算出されたタイムスロット毎のパケット数に基づき、パケット数が予め定めた検知閾値以上であるタイムスロット群を、抽出タイムスロット群として抽出する抽出ステップと、
所定のウィンドウ時間長を有するスライディングウィンドウを定め、スライディングウィンドウに含まれる抽出タイムスロットの合計時間と前記ウィンドウ時間長とに基づき、スライディングウィンドウを時間進行方向にずらしながら、パケットが連続して出現した時間区間である連続区間を識別する連続区間識別ステップと、
前記パケット取得ステップにより取得された各パケットにおけるTCPヘッダ情報を参照することにより、前記アプリケーションサーバが前記ユーザ端末にTCPパケットを送信せずに処理を行った時間であるサーバ処理時間を推定するサーバ処理時間推定ステップと、
前記連続区間識別ステップにより識別された連続区間と、前記サーバ処理時間推定ステップにより推定されたサーバ処理時間とが時間的に連続しているか否かを判定し、連続している場合に、前記連続区間と前記サーバ処理時間とを結合する結合処理ステップと、
前記結合処理ステップにより結合された時間区間を、推定されたユーザ待ち時間として出力する出力ステップと
を備えることを特徴とするユーザ待ち時間推定方法。
【請求項7】
コンピュータを、TCPベースのアプリケーションサービスを提供するアプリケーションサーバに通信ネットワークを介して接続され、前記アプリケーションサービスを利用するユーザ端末におけるユーザ待ち時間を推定するユーザ待ち時間推定装置として機能させるためのプログラムであって、コンピュータを、
前記アプリケーションサーバから前記ユーザ端末に向けて送信された各パケットを取得し、当該パケットを取得した時刻の情報とともに、当該パケットを記憶手段に格納するパケット取得手段、
前記パケット取得手段により取得されたパケット群から、予め定めた時間幅を有するタイムスロット毎のパケット数を算出するパケット数集計手段、
前記パケット数集計手段により算出されたタイムスロット毎のパケット数に基づき、パケット数が予め定めた検知閾値以上であるタイムスロット群を、抽出タイムスロット群として抽出する抽出手段、
所定のウィンドウ時間長を有するスライディングウィンドウを定め、スライディングウィンドウに含まれる抽出タイムスロットの合計時間と前記ウィンドウ時間長とに基づき、スライディングウィンドウを時間進行方向にずらしながら、パケットが連続して出現した時間区間である連続区間を識別する連続区間識別手段、
前記パケット取得手段により取得された各パケットにおけるTCPヘッダ情報を参照することにより、前記アプリケーションサーバが前記ユーザ端末にTCPパケットを送信せずに処理を行った時間であるサーバ処理時間を推定するサーバ処理時間推定手段、
前記連続区間識別手段により識別された連続区間と、前記サーバ処理時間推定手段により推定されたサーバ処理時間とが時間的に連続しているか否かを判定し、連続している場合に、前記連続区間と前記サーバ処理時間とを結合する結合処理手段、
前記結合処理手段により結合された時間区間を、推定されたユーザ待ち時間として出力する出力手段と、
として機能させるためのプログラム。
【請求項1】
TCPベースのアプリケーションサービスを提供するアプリケーションサーバに通信ネットワークを介して接続され、前記アプリケーションサービスを利用するユーザ端末におけるユーザ待ち時間を推定するユーザ待ち時間推定装置であって、
前記アプリケーションサーバから前記ユーザ端末に向けて送信された各パケットを取得し、当該パケットを取得した時刻の情報とともに、当該パケットを記憶手段に格納するパケット取得手段と、
前記パケット取得手段により取得されたパケット群から、予め定めた時間幅を有するタイムスロット毎のパケット数を算出するパケット数集計手段と、
前記パケット数集計手段により算出されたタイムスロット毎のパケット数に基づき、パケット数が予め定めた検知閾値以上であるタイムスロット群を、抽出タイムスロット群として抽出する抽出手段と、
所定のウィンドウ時間長を有するスライディングウィンドウを定め、スライディングウィンドウに含まれる抽出タイムスロットの合計時間と前記ウィンドウ時間長とに基づき、スライディングウィンドウを時間進行方向にずらしながら、パケットが連続して出現した時間区間である連続区間を識別する連続区間識別手段と、
前記パケット取得手段により取得された各パケットにおけるTCPヘッダ情報を参照することにより、前記アプリケーションサーバが前記ユーザ端末にTCPパケットを送信せずに処理を行った時間であるサーバ処理時間を推定するサーバ処理時間推定手段と、
前記連続区間識別手段により識別された連続区間と、前記サーバ処理時間推定手段により推定されたサーバ処理時間とが時間的に連続しているか否かを判定し、連続している場合に、前記連続区間と前記サーバ処理時間とを結合する結合処理手段と、
前記結合処理手段により結合された時間区間を、推定されたユーザ待ち時間として出力する出力手段と
を備えることを特徴とするユーザ待ち時間推定装置。
【請求項2】
前記サーバ処理時間推定手段は、データなしのACKパケットであると識別された対象パケットの次のパケットがデータ付きのTCPパケットであり、なおかつ、当該次のパケットのACK番号が、前記対象パケットのACK番号と同じであると判定した場合に、前記対象パケットの時刻から前記次のパケットの時刻までを前記サーバ処理時間とすることを特徴とする請求項1に記載のユーザ待ち時間推定装置。
【請求項3】
前記連続区間識別手段は、
ある抽出タイムスロットに対応する連続性判定開始位置から時間進行方向に伸びるスライディングウィンドウに含まれる抽出タイムスロットの合計時間を算出し、前記ウィンドウ時間長に対する前記合計時間の割合が予め定めた閾値以上であるか否かを判定する判定手段と、
前記判定手段により、前記ウィンドウ時間長に対する前記合計時間の割合が前記予め定めた閾値以上であると判定された場合に、連続性判定開始位置を次の抽出タイムスロットにずらし、当該ずらした連続性判定開始位置に基づき前記判定手段による処理を行うスライディング手段と、
前記判定手段と前記スライディング手段による処理を、前記ウィンドウ時間長に対する前記合計時間の割合が前記予め定めた閾値未満であると判定されるまで繰り返し行い、最初の連続性判定開始位置から、最後に前記合計時間の割合が前記閾値以上であると判定されたスライディングウィンドウの末尾までの時間を前記パケットが連続して出現した時間区間であると決定する手段と
を備えることを特徴とする請求項1又は2に記載のユーザ待ち時間推定装置。
【請求項4】
前記スライディングウィンドウのウィンドウ時間長を、前記通信ネットワークにおけるRTTに基づき算出する算出手段を備えることを特徴とする請求項1ないし3のうちいずれか1項に記載のユーザ待ち時間推定装置。
【請求項5】
前記算出手段は、予め定めた時間長に、前記RTTの値を加えることにより得た値から、前記スライディングウィンドウのウィンドウ時間長を算出することを特徴とする請求項4に記載のユーザ待ち時間推定装置。
【請求項6】
TCPベースのアプリケーションサービスを提供するアプリケーションサーバに通信ネットワークを介して接続され、前記アプリケーションサービスを利用するユーザ端末におけるユーザ待ち時間を推定するユーザ待ち時間推定装置が実行するユーザ待ち時間推定方法であって、
前記アプリケーションサーバから前記ユーザ端末に向けて送信された各パケットを取得し、当該パケットを取得した時刻の情報とともに、当該パケットを記憶手段に格納するパケット取得ステップと、
前記パケット取得ステップにより取得されたパケット群から、予め定めた時間幅を有するタイムスロット毎のパケット数を算出するパケット数集計ステップと、
前記パケット数集計ステップにより算出されたタイムスロット毎のパケット数に基づき、パケット数が予め定めた検知閾値以上であるタイムスロット群を、抽出タイムスロット群として抽出する抽出ステップと、
所定のウィンドウ時間長を有するスライディングウィンドウを定め、スライディングウィンドウに含まれる抽出タイムスロットの合計時間と前記ウィンドウ時間長とに基づき、スライディングウィンドウを時間進行方向にずらしながら、パケットが連続して出現した時間区間である連続区間を識別する連続区間識別ステップと、
前記パケット取得ステップにより取得された各パケットにおけるTCPヘッダ情報を参照することにより、前記アプリケーションサーバが前記ユーザ端末にTCPパケットを送信せずに処理を行った時間であるサーバ処理時間を推定するサーバ処理時間推定ステップと、
前記連続区間識別ステップにより識別された連続区間と、前記サーバ処理時間推定ステップにより推定されたサーバ処理時間とが時間的に連続しているか否かを判定し、連続している場合に、前記連続区間と前記サーバ処理時間とを結合する結合処理ステップと、
前記結合処理ステップにより結合された時間区間を、推定されたユーザ待ち時間として出力する出力ステップと
を備えることを特徴とするユーザ待ち時間推定方法。
【請求項7】
コンピュータを、TCPベースのアプリケーションサービスを提供するアプリケーションサーバに通信ネットワークを介して接続され、前記アプリケーションサービスを利用するユーザ端末におけるユーザ待ち時間を推定するユーザ待ち時間推定装置として機能させるためのプログラムであって、コンピュータを、
前記アプリケーションサーバから前記ユーザ端末に向けて送信された各パケットを取得し、当該パケットを取得した時刻の情報とともに、当該パケットを記憶手段に格納するパケット取得手段、
前記パケット取得手段により取得されたパケット群から、予め定めた時間幅を有するタイムスロット毎のパケット数を算出するパケット数集計手段、
前記パケット数集計手段により算出されたタイムスロット毎のパケット数に基づき、パケット数が予め定めた検知閾値以上であるタイムスロット群を、抽出タイムスロット群として抽出する抽出手段、
所定のウィンドウ時間長を有するスライディングウィンドウを定め、スライディングウィンドウに含まれる抽出タイムスロットの合計時間と前記ウィンドウ時間長とに基づき、スライディングウィンドウを時間進行方向にずらしながら、パケットが連続して出現した時間区間である連続区間を識別する連続区間識別手段、
前記パケット取得手段により取得された各パケットにおけるTCPヘッダ情報を参照することにより、前記アプリケーションサーバが前記ユーザ端末にTCPパケットを送信せずに処理を行った時間であるサーバ処理時間を推定するサーバ処理時間推定手段、
前記連続区間識別手段により識別された連続区間と、前記サーバ処理時間推定手段により推定されたサーバ処理時間とが時間的に連続しているか否かを判定し、連続している場合に、前記連続区間と前記サーバ処理時間とを結合する結合処理手段、
前記結合処理手段により結合された時間区間を、推定されたユーザ待ち時間として出力する出力手段と、
として機能させるためのプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【公開番号】特開2011−142474(P2011−142474A)
【公開日】平成23年7月21日(2011.7.21)
【国際特許分類】
【出願番号】特願2010−1587(P2010−1587)
【出願日】平成22年1月6日(2010.1.6)
【出願人】(399035766)エヌ・ティ・ティ・コミュニケーションズ株式会社 (321)
【Fターム(参考)】
【公開日】平成23年7月21日(2011.7.21)
【国際特許分類】
【出願日】平成22年1月6日(2010.1.6)
【出願人】(399035766)エヌ・ティ・ティ・コミュニケーションズ株式会社 (321)
【Fターム(参考)】
[ Back to top ]