[実施の形態1]
図1に、ネットワーク構成例を示す。携帯無線端末101は、無線ネットワークを介してノード装置103に接続する。無線ネットワークがセルラー方式であれば、ノード装置103は基地局に相当する。無線ネットワークが無線LAN(Local Area Network)方式であれば、ノード装置103はアクセスポイントに相当する。
更に、ノード装置103は、有線ネットワークに接続している。有線ネットワークは、例えばインターネットに接続している。
この例で、携帯無線端末101は、中継装置107を介してコンテンツサーバ105からコンテンツを取得する。コンテンツサーバ105は、例えば動画サイトであって、動画のコンテンツを配信する。
コンテンツサーバ105aのURL(Uniform Resource Locator)は、「https//jp.tube.com/」であって、コンテンツサーバ105aは動画サービスAを提供するものとする。コンテンツサーバ105bのURLは、「http://www.motion.com/」であって、コンテンツサーバ105bは動画サービスBを提供するものとする。コンテンツサーバ105cのURLは、「http://xxx.video.com/」であって、コンテンツサーバ105cは動画サービスCを提供するものとする。
図2に、別のネットワーク構成例を示す。図2に示すように、ノード装置103が、中継装置107を兼ねるようにしてもよい。中継装置107は、携帯無線端末101とコンテンツサーバ105との間に設けられていれば、図1及び図2に示した位置以外の位置に設けられていてもよい。
中継装置107は、サーバ装置の態様であってもよい。また、中継装置107は、例えばhttp(Hypertext Transfer Protocol)リクエストを中継するプロキシサーバであってもよいし、IP(Internet Protocol)を全般的に中継する透過型プロキシサーバであってもよい。また、図2に示した中継装置107の態様以外のネットワーク機器であってもよい。更に、中継装置107は、コンテンツサーバ105と一体であってもよい。中継装置107は、管理者が使用するコンソールと接続していてもよい。
携帯無線端末101は、動画サービスから取得した動画のコンテンツをストリーミングによって再生するアプリケーションプログラムを有している。そして、アプリケーションプログラムは、プリバッファリングの機能を有している。プリバッファリングを行うことによって、一時的に通信が滞ることがあったとしても、コンテンツの再生が中断しにくくなる。また、ストリーミングを行うアプリケーションプログラムは、繰り返しコンテンツ取得のリクエストを送出する。但し、リクエストが発生する間隔は、一定とは限らない。
図3に、リクエストの発生間隔の例を示す。横軸は、時間の経過を示している。縦軸は、コンテンツ取得のリクエストが発生する間隔を示している。図示した通り、ブラウザにおいて動画の再生を開始した直後に、リクエストが頻繁に発生している。また、再生ポイントをスライドさせた場合にも、リクエストが頻繁に発生している。いずれの場合も、プリバッファ残量が少ない場合に、ブラウザがコンテンツ取得のリクエストを頻繁に発行していることを示している。
このようにすれば、早い段階で或る程度のプリバッファ残量を確保することができるようになる。この特性に着目すれば、アプリケーションプログラムにプリバッファ残量を問い合わせなくとも、外部からアプリケーションプログラムにおけるプリバッファ残量を推定することができる。
一方、プリバッファリングの機能を有していても、通信状況が悪い場合には、アプリケーションプログラムにおけるコンテンツの再生に支障が生じることがある。例えば、セルラー方式における基地局又は無線LAN方式におけるアクセスポイントにアクセスが集中した場合には、携帯無線端末101におけるスループットが低下する。例えば、以下のような場合に、輻輳が生じ、携帯無線端末101におけるスループットが低下すると考えられる。
(A)スポーツスタジアムで、ゲームの休憩時間に、他のスタジアムで行われているゲーム結果の速報動画を見る場合、(B)イベント会場において、観客がクラウドにアップロードしている動画のうち、自席から直接見えなかったアングルからの動画を見る場合、(C)高速道路で事故発生時に,ドライブ計画を変更する目的で、事故現場の車の流れを動画で確認する場合。
本実施の形態では、プリバッファ残量に余裕が無い携帯無線端末101に対する応答を先に行い、プリバッファ残量に余裕が有る携帯無線端末101に対しては応答を遅らせるようにする。つまり、プリバッファ残量を、コンテンツ取得のリクエストに対する応答の優先度を示す評価情報として用いる。
このようにすれば、1つのノード装置103にアクセスが集中したとしても、アプリケーションプログラムによる再生に支障が生じにくくなる。そして、ユーザによるアプリケーションプログラムに対する体感品質が向上することになる。また、無線ネットワークにおけるトラフィックが平準化される面もある。
図4に、本実施の形態におけるコンテンツ転送のタイミング例を示す。時刻T11に、中継装置107は、携帯無線端末101aからコンテンツA取得のリクエストを受信し、当該リクエストに応じてコンテンツサーバ105aからコンテンツAを取得し始める。同様に、時刻T21に、中継装置107は、携帯無線端末101bからコンテンツB取得のリクエストを受信し、当該リクエストに応じてコンテンツサーバ105bからコンテンツBを取得し始める。同様に、時刻T31に、中継装置107は、携帯無線端末101cからコンテンツC取得のリクエストを受信し、当該リクエストに応じてコンテンツサーバ105cからコンテンツCを取得し始める。同様に、時刻T41に、中継装置107は、携帯無線端末101dからコンテンツD取得のリクエストを受信し、当該リクエストに応じてコンテンツサーバ105aからコンテンツDを取得し始める。
本実施の形態では、同時に行われるコンテンツ転送処理の数を制限する。図4に示した例では、説明の便宜のためにコンテンツ転送処理の最大数を2とする。
コンテンツAを取得する期間P11が経過した時点T12で、コンテンツ転送処理は1つも行われていないので、中継装置107は、コンテンツAを携帯無線端末101aへ転送する処理を開始する。
コンテンツBを取得する期間P21が経過した時点T22で、コンテンツ転送処理は1つしか行われていないので、中継装置107は、コンテンツBを携帯無線端末101bへ転送する処理を開始する。
コンテンツCを取得する期間P31が経過した時点T32で、コンテンツ転送処理は2つ行われているので、中継装置107は、コンテンツCの転送を行わずに待機する。
コンテンツDを取得する期間P41が経過した時点T42で、上述した2つのコンテンツ転送処理は、継続しているので、中継装置107は、コンテンツDの転送を行わずに待機する。
コンテンツAを転送する期間P12が経過した時点T13で、コンテンツ転送処理は1つ減る。従って、中継装置107は、待機しているコンテンツCの転送処理あるいはコンテンツDの転送処理のうち、いずれかを開始させる。本実施の形態では、コンテンツCの転送先である携帯無線端末101cのアプリケーションプログラムにおけるプリバッファ残量と、コンテンツDの転送先である携帯無線端末101dのアプリケーションプログラムにおけるプリバッファ残量とを比較する。
この例では、携帯無線端末101dのアプリケーションプログラムにおけるプリバッファ残量の方が少なかったものとする。プリバッファ残量が少ない方のアプリケーションプログラムへのコンテンツの転送を先に行うようにする。従って、時点T13に、中継装置107は、コンテンツDを携帯無線端末101dへ転送する処理を開始する。
そして、コンテンツBを転送する期間P22が経過した時点T23で、コンテンツ転送処理はまた1つ減る。このとき、中継装置107は、待機していたコンテンツDの転送処理を開始する。以上で、本実施の形態における概要の説明を終える。
続いて、中継装置107について説明する。図5に、中継装置107のモジュール構成例を示す。中継装置107は、第1受信部501、起動部503、第1取得部505、記録処理部507、特定部509、転送部511、判別部513、監視部515、開始部517、リクエストテーブル記憶部521、ルール記憶部523、スレッドテーブル記憶部525及びコンテンツ記憶部527を有する。
第1受信部501は、携帯無線端末101からコンテンツ取得のリクエストを受信する。起動部503は、第1取得部505によるコンテンツ取得処理を起動する。起動部503は、更に、転送部511による転送処理を起動する。第1取得部505は、コンテンツサーバ105からコンテンツを取得する処理を行う。記録処理部507は、リクエストテーブルにおけるリクエストレコードを記録する処理を行う。特定部509は、携帯無線端末101のアプリケーションプログラムにおけるプリバッファ残量の推定値を特定する。転送部511は、コンテンツを携帯無線端末101へ転送する処理を行う。尚、転送部511は、リクエスト単位で設けられるスレッドとして動作する。判別部513は、コンテンツの転送を開始させる転送部511を特定する。監視部515は、無線ネットワークの状況を監視する。開始部517は、転送の開始を指示する。
リクエストテーブル記憶部521は、リクエストテーブルを記憶する。リクエストテーブルについては、後述する。ルール記憶部523は、プリバッファ残量の推定値を特定するためのルールを記憶する。ルールについては、後述する。スレッドテーブル記憶部525は、スレッドテーブルを記憶する。スレッドテーブルについては、後述する。コンテンツ記憶部527は、コンテンツサーバ105から取得したコンテンツを記憶する。
上述した第1受信部501、起動部503、第1取得部505、記録処理部507、特定部509、転送部511、判別部513、監視部515及び開始部517は、ハードウエア資源(例えば、図34)と、以下で述べる処理をプロセッサに実行させるプログラムとを用いて実現される。
上述したリクエストテーブル記憶部521、ルール記憶部523、スレッドテーブル記憶部525及びコンテンツ記憶部527は、ハードウエア資源(例えば、図34)を用いて実現される。
中継装置107におけるメイン処理について説明する。図6に、メイン処理(A)フローを示す。起動部503は、第1受信部501が携帯無線端末101からコンテンツ取得のリクエストを受信したか否かを判定する(S601)。携帯無線端末101からコンテンツ取得のリクエストを受信したと判定した場合には、起動部503は、第1取得部505によるコンテンツ取得処理を起動する(S603)。
この例におけるコンテンツ取得処理は、メイン処理と並行して実行される。つまり、コンテンツ取得処理は、例えばスレッドとして非同期に動作する。但し、コンテンツ取得処理が、メイン処理と同期するようにしてもよい。
第1取得部505は、コンテンツサーバ105へコンテンツ取得のリクエストを送信し、コンテンツサーバ105からコンテンツを受信する。コンテンツは、コンテンツ記憶部527に記憶される。コンテンツを取得すると、第1取得部505は、コンテンツの取得完了を特定部509に通知する。
ここでは、コンテンツの取得完了を待たずに、S605の処理に移る。そして、記録処理部507は、リクエストテーブルにおけるリクエストレコードを登録又は更新する(S605)。
リクエストテーブルについて説明する。図7に、リクエストテーブルの例を示す。リクエストテーブルは、コンテンツ取得のリクエストの受信日時を管理するために用いられる。以下に述べるリクエストテーブルの説明で、コンテンツ取得のリクエストを単にリクエストという。本実施の形態では、URLによって特定されるコンテンツサーバ105が発行したセッション識別子が共通するリクエストを一連のもの(以下、グループという。)として扱う。尚、セッション識別子は、コンテンツサーバ105において携帯無線端末101を識別するために用いられるものである。
この例におけるリクエストテーブルは、グループに対応するレコード(以下、リクエストレコードという。)を有している。リクエストレコードは、グループIDを設定するためのフィールドと、セッション識別子を設定するためのフィールドと、URLを設定するためのフィールドと、今回のリクエストの受信日時を設定するためのフィールドと、前回のリクエストの受信日時を設定するためのフィールドとを有している。
この例における第1リクエストレコードは、URL「https//jp.tube.com/」で特定されるコンテンツサーバ105aが発行したセッション識別子Session#1を用いるリクエストをグループとして扱い、当該グループにID「R01」が割り当てられていることを示している。更に、第1リクエストレコードは、当該グループに属する最近のリクエストが「2014/10/01 10:40:00.000」に受信され、同じくその前のリクエストが「2014/10/01 10:39:59.000」に受信されたことを示している。
同じく第2リクエストレコードは、URL「http://www.motion.com/」で特定されるコンテンツサーバ105bが発行したセッション識別子Session#2を用いるリクエストをグループとして扱い、当該グループにID「R02」が割り当てられていることを示している。更に、第2リクエストレコードは、当該グループに属する最近のリクエストが「2014/10/01 10:40:01.100」に受信され、同じくその前のリクエストが「2014/10/01 10:40:00.000」に受信されたことを示している。
同じく第3リクエストレコードは、URL「http://xxx.video.com/」で特定されるコンテンツサーバ105cが発行したセッション識別子Session#3を用いるリクエストをグループとして扱い、当該グループにID「R03」が割り当てられていることを示している。更に、第3リクエストレコードは、当該グループに属する最近のリクエストが「2014/10/01 10:40:02.000」に受信され、同じくその前のリクエストが「2014/10/01 10:40:01.500」に受信されたことを示している。
URLによってコンテンツサーバ105を特定すれば、コンテンツサーバ105毎の特性(リクエストの発生間隔とプリバッファ残量との相関)に応じて、より正しくプリバッファ残量を推定できる。尚、コンテンツ取得のリクエストに含まれるURLには、上述したURLの例に加えて、パラメータが付加されている場合がある。
図6に示したS605の処理の説明に戻る。S601で受信したと判定したリクエストが属するグループが無い場合、つまり初回のリクエストである場合には、記録処理部507は、リクエストテーブルに新たなリクエストレコードを登録する。そして、記録処理部507は、当該リクエストレコードに新たなグループIDを設定する。記録処理部507は、当該リクエストレコードに、更にセッション識別子及びURLも設定する。この時点でセッション識別子が特定されていない場合には、記録処理部507は、セッション識別子が特定された時点で当該セッション識別子を設定するようにしてもよい。また、記録処理部507は、当該リクエストレコードに、今回のリクエストの受信日時を設定する。初回であれば、前回のリクエストの受信日時は設定されない。
一方、S601で受信したと判定したリクエストが属するグループが有る場合、つまり2回目以降のリクエストである場合には、記録処理部507は、この時点で今回のリクエストの受信日時のフィールドに設定されている日時を前回のリクエストの受信日時にコピーする。そして、記録処理部507は、今回のリクエストの受信日時のフィールドに新たな受信日時を設定する。
そして、S601に示した処理に戻る。S601において、携帯無線端末101からコンテンツ取得のリクエストを受信していないと判定した場合には、特定部509は、第1取得部505から取得完了の通知を受けたか否かを判定する(S607)。
第1取得部505から取得完了の通知を受けたと判定した場合には、特定部509は、URL及びリクエストの受信間隔に基づいて、携帯無線端末101のアプリケーションプログラム(例えば、ブラウザである。)におけるプリバッファ残量の推定値を特定する(S609)。
プリバッファ残量の推定値を特定するためのルールについて説明する。図8に、ルールの例を示す。この例におけるルールは、サービスと、リクエストの発生間隔のレンジとの組み合わせに対して、プリバッファ残量の推定値を定めている。
例えば、動画サービスAにおいてリクエストの発生間隔が500ミリ秒である場合には、動画サービスAと、リクエストの発生間隔のレンジ「100ミリ秒〜1秒」との組み合わせに対応する推定量「30秒分」が特定される。つまり、30秒間の再生に供されるデータがプリバッファに格納されていると推定される。この例では、プリバッファ残量は、再生時間を単位としている。但し、プリバッファ残量は、データの大きさで表すようにしてもよい。尚、本実施の形態では、リクエストの受信間隔がリクエストの発生間隔であると看做す。また、動画サービス毎のルールをプラグインで追加できるようにしてもよい。
図6の説明に戻る。特定部509は、URLに基づいてサービスを特定する。また、特定部509は、今回のリクエストの受信日時から前回のリクエストの受信日時を引いて、リクエストの受信間隔を得る。そして、図8に示したルールに従って、サービスとリクエストの発生間隔のレンジとの組み合わせに対応するプリバッファ残量の推定値を特定する。この例では、表によるルールの例を示したが、ルールは、サービス毎に設けられた、リクエストの発生間隔を変数とする算出式であってもよい。その場合には、特定部509は、算出式に従ってプリバッファ残量の推定値を算出する。
この例では、リクエストの受信間隔に基づいてプリバッファ残量の推定値を特定するが、例えばTCP(Transmission Control Protocol)におけるACK(ACKnowledgment )の受信間隔に基づいてプリバッファ残量の推定値を特定するようにしてもよい。
また、アプリケーションプログラムにおける再生によってプリバッファ残量が減少することを考慮すれば、このとき特定されたプリバッファ残量の推定値を、時間の経過とともに減らすようにしてもよい。
次に、起動部503は、転送部511による転送処理を起動する(S611)。転送処理は、メイン処理と並行して処理される。この例では、1つのリクエストに応じた転送処理を行うスレッドが、1つ生成されるものとする。
図9に、転送処理(A)フローを示す。転送部511は、スレッドテーブルに新たなスレッドレコードを登録する(S901)。
図10に、スレッドテーブルの例を示す。この例におけるスレッドテーブルは、その時点で存在するスレッドに対応するレコード(以下、スレッドレコードという。)を有している。スレッドレコードは、スレッドIDを設定するためのフィールドと、グループIDを設定するためのフィールドと、ステータスを設定するためのフィールドと、プリバッファ残量の推定値を設定するためのフィールドとを有している。
スレッドIDは、スレッドを識別する。グループIDは、当該スレッドで転送するコンテンツを求めたリクエストが属するグループのIDである。つまり、グループIDは、スレッドレコードをリクエストレコードに関連付ける。スレッドが未だコンテンツの転送を開始していない場合に、ステータスには「待機中」が設定される。他方、スレッドがコンテンツの転送を開始した場合に、ステータスには「転送中」が設定される。プリバッファ残量の推定値は、コンテンツの転送先である携帯無線端末101におけるアプリケーションプログラムにおけるプリバッファ残量を推定した値である。
この例における第1スレッドレコードは、スレッドID「T01」で識別されるスレッドが、グループID「R01」のグループに属するリクエストに基づいて起動され、未だコンテンツの転送を開始していないことを示している。更に、第1スレッドレコードは、このスレッドによるコンテンツの転送先である携帯無線端末101におけるアプリケーションプログラムのプリバッファ残量がB1であると推定されていることを示している。
同じく第2スレッドレコードは、スレッドID「T02」で識別されるスレッドが、グループID「R02」のグループに属するリクエストに基づいて起動され、コンテンツの転送を開始したことを示している。更に、第2スレッドレコードは、このスレッドによるコンテンツの転送先である携帯無線端末101におけるアプリケーションプログラムのプリバッファ残量がB2であると推定されていることを示している。
同じく第3スレッドレコードは、スレッドID「T03」で識別されるスレッドが、グループID「R03」のグループに属するリクエストに基づいて起動され、未だコンテンツの転送を開始していないことを示している。更に、第3スレッドレコードは、このスレッドによるコンテンツの転送先である携帯無線端末101におけるアプリケーションプログラムのプリバッファ残量がB3であると推定されていることを示している。
図9の説明に戻る。S901において、転送部511は、新たなスレッドレコードに新たなスレッドIDを割り当てる。また、転送部511は、当該スレッドにおいて転送すべきコンテンツを取得するリスエストが属するグループのIDを設定する。ステータスのフィールドには、「待機中」が設定される。プリバッファ残量の推定値のフィールドには、図6のS609で特定した値が設定される。
転送部511は、判別部513から転送開始の指示を受けたか否かを判定する(S903)。判別部513から未だ転送開始の指示を受けていないと判定した場合には、転送開始の指示を受けるまで、転送部511は、そのまま待機する。
そして、判別部513から転送開始の指示を受けたと判定した場合には、転送部511は、コンテンツの転送を開始する(S905)。つまり、転送部511は、コンテンツ記憶部527に記憶されているコンテンツを携帯無線端末101に送信する。そして、転送部511は、自らのスレッドレコードにおけるステータスを「転送中」に変更する(S907)。
転送部511は、コンテンツの転送が完了したか否かを判定する(S909)。コンテンツの転送が完了していないと判定した場合には、コンテンツの転送が完了するまで、転送部511は、そのまま待機する。
そして、コンテンツの転送が完了したと判定した場合には、転送部511は、コンテンツの転送完了を判別部513に通知する(S911)。そして、転送部511は、S901で登録した自らのスレッドレコードを削除する(S913)。転送処理(A)を終えると、当該スレッドは消滅する。
図6の説明に戻る。判別部513は、監視部515から無線ネットワークの状況を取得する(S613)。この例で、監視部515は、中継装置107と携帯無線端末101との間の通信状況を監視する。但し、判別部513は、他の装置からノード装置103と携帯無線端末101との間の通信状況を取得するようにしてもよい。この例で、無線ネットワークの状況には空き帯域幅が含まれるものとする。尚、中継装置107がノード装置103と一体である場合、あるいはノード装置103に近い位置にある場合には、より正確な通信状況を得やすくなるという面がある。
判別部513は、判別処理を実行する(S615)。判別処理では、コンテンツの転送を開始させるべきスレッド(転送部511に相当する。)を判別する。この処理を、スケジューリングと呼んでもよい。
図11に、判別処理フローを示す。判別部513は、利用する帯域幅を所定帯域幅で割って、並行してコンテンツを転送するスレッドの最大数を求める(S1101)。利用する帯域幅は、空き帯域幅であってもよいし、空き帯域幅の一部であってもよい。所定帯域幅は、1つのスレッド(転送部511に相当する。)に割り当てられる帯域幅に相当する。
判別部513は、S1101で求めたスレッドの最大数から、転送中であるスレッドの数を引くことによって、新たに転送を開始させるスレッドの数を求める(S1103)。転送中であるスレッドの数は、ステータスのフィールドに「転送中」が設定されているスレッドレコードの数である。新たに転送を開始させるスレッドの数は、無線ネットワークにおける空き帯域が割り当てられるコンテンツ転送処理の許容数に相当する。
判別部513は、新たに転送を開始させるスレッドの数が1以上であるか否かを判定する(S1105)。新たに転送を開始させるスレッドの数が0である場合には、そのまま判別処理を終了する。新たに転送を開始させるスレッドの数を、空きスロット数と呼んでもよい。
新たに転送を開始させるスレッドの数が1以上である場合には、判別部513は、「待機中」のスレッドのうち、プリバッファ残量の推定値が小さい方から順に、新たに転送を開始させるスレッドの数だけスレッドを選択する(S1107)。そして、判別処理を終えると、図6に示したS617の処理に移る。
図6の説明に戻る。開始部517は、判別結果に従って、新たに転送を開始させるスレッド(転送部511に相当する。)にコンテンツの転送の開始を指示する(S617)。新たに転送を開始させるスレッドが無い場合には、S617の処理は省かれる。そして、S601に示した処理に戻って、上述した処理を繰り返す。
S607の説明に戻る。S607において、第1取得部505から取得完了の通知を受けていないと判定した場合には、判別部513は、いずれかのスレッド(転送部511に相当する。)からコンテンツの転送完了の通知を受けたか否かを判定する(S619)。コンテンツの転送完了の通知を受けたと判定した場合には、S613に示した処理に移る。コンテンツの転送が完了すると、空き帯域が広がる。従って、空いた帯域を用いて、別のスレッドが、新たにコンテンツの転送を開始するようになる。
一方、S619においてコンテンツの転送完了の通知を受けていないと判定した場合には、S601に示した処理に戻って、上述した処理を繰り返す。以上で、中継装置107における処理についての説明を終える。
本実施の形態によれば、無線ネットワークに接続する携帯無線端末101におけるストリーミングをより円滑にできる。
また、コンテンツサーバ105及びアプリケーションプログラムに、特別な仕組みを設けなくて済むという面がある。
また、同一のセッションにおけるコンテンツ取得リクエストの受信間隔に基づいて、プリバッファ残量を特定するので、間接的に携帯無線端末101におけるプリバッファ残量を把握することができる。
[実施の形態2]
本実施の形態では、同一の携帯無線端末101から受信したコンテンツ取得のリクエストに含まれるリクエスト発生時刻の間隔に基づいて、携帯無線端末101におけるプリバッファ残量を特定する例について説明する。また、この例では、ストリーミングを行うアプリケーションプログラムの種類に応じて、プリバッファ残量を特定する。つまり、アプリケーションプログラムのロジックに応じたルールを採用する。
本実施の形態では、携帯無線端末101にプロキシ機能を設ける。図12に、携帯無線端末101のモジュール構成例を示す。携帯無線端末101は、ローカルプロキシ部1201、アプリケーションプログラム1203及びオペレーティングシステム1221を有する。ローカルプロキシ部1201は、携帯無線端末101内部におけるプロキシとして動作する。アプリケーションプログラム1203は、コンテンツを再生する。アプリケーションプログラム1203は、例えばブラウザ又は各動画サービス専用の表示プログラムである。携帯無線端末101は、種類の異なる複数のアプリケーションプログラム1203を有する場合がある。
ローカルプロキシ部1201は、受付部1205、付加部1207、送信部1209、第2受信部1211、引渡部1213、リクエスト記憶部1214、コンテンツ記憶部1215、復元部1217及びフラグメント記憶部1219を有する。
受付部1205は、アプリケーションプログラム1203からコンテンツ取得のリクエストを受け付ける。付加部1207は、コンテンツ取得のリクエストのヘッダに各種のデータを付加する。送信部1209は、コンテンツ取得のリクエストを、中継装置107に送信する。第2受信部1211は、中継装置107からデータ(例えば、コンテンツ)を受信する。引渡部1213は、アプリケーションプログラム1203へコンテンツを渡す。リクエスト記憶部1214は、コンテンツ取得のリクエストを記憶する。コンテンツ記憶部1215は、受信したコンテンツを記憶する。
復元部1217及びフラグメント記憶部1219は、後述する実施の形態3及び実施の形態4において用いられる。復元部1217は、コンテンツから分割されたフラグメントを連結することによって、コンテンツを復元する。フラグメント記憶部1219は、フラグメントを記憶する。
上述したローカルプロキシ部1201、アプリケーションプログラム1203、受付部1205、付加部1207、送信部1209、第2受信部1211、引渡部1213、復元部1217及びオペレーティングシステム1221は、ハードウエア資源(例えば、図33)と、以下で述べる処理をプロセッサに実行させるプログラムとを用いて実現される。
上述したリクエスト記憶部1214、コンテンツ記憶部1215及びフラグメント記憶部1219は、ハードウエア資源(例えば、図33)を用いて実現される。
ローカルプロキシ部1201によるローカルプロキシ処理について説明する。図13に、ローカルプロキシ処理(A)フローを示す。受付部1205は、アプリケーションプログラム1203からコンテンツ取得のリクエストを受け付ける(S1301)。コンテンツ取得のリクエストは、リクエスト記憶部1214に記憶される。
受付部1205は、受付日時を特定し(S1303)、更に要求元のアプリケーションプログラム1203を特定する(S1305)。例えば、ソケットにアクセスしてきたプロセスのIDに基づいて、アプリケーションプログラム名を特定する。
付加部1207は、コンテンツ取得のリクエストのヘッダに端末識別子及びアプリケーション識別子を付加する(S1307)。付加部1207は、当該ヘッダに、更にS1303で特定した受付日時を付加する(S1309)。コンテンツ取得のリクエストの受付日時は、コンテンツ取得のリクエストの発生時刻に相当する。受付日時は、無線ネットワークにおける遅延の影響を受けていない。端末識別子は、例えばMAC(Media Access Control)アドレスである。
図14に、コンテンツ取得のリクエストにおけるヘッダの例を示す。この例におけるコンテンツ取得のリクエストは、httpリクエストの一種である。破線で囲まれた部分が、付加部1207によって付加されたデータである。破線で囲まれた部分における第1行は、当該リクエストの送信元である携帯無線端末101を識別する端末識別子が「aa:aa:aa:aa:aa:aa」であることを示している。同じく第2行は、当該リクエストの要求元であるアプリケーションプログラム1203が、ブラウザであることを示している。同じく第3行は、当該リクエストの送信元である携帯無線端末101において、当該リクエストが日時「2014/10/01 10:40:00.000」に受け付けられたことを示している。
この例では、コンテンツ取得のリクエストの受付日時をヘッダに付加するが、携帯無線端末101におけるバッテリ残量又は無線通信のスループットなどの情報をヘッダに付加するようにしてもよい。また、携帯無線端末101におけるオペレーティングシステム1221の種類又はバージョンをヘッダに付加するようにしてもよい。
図13の説明に戻る。送信部1209は、ヘッダが更新されたコンテンツ取得のリクエストを、中継装置107に送信する(S1311)。第2受信部1211は、待機して、中継装置107からコンテンツを受信する(S1313)。受信したコンテンツは、コンテンツ記憶部1215に記憶される。そして、引渡部1213は、アプリケーションプログラム1203へコンテンツを渡す(S1315)。そして、S1301に示した処理に戻って、上述した処理を繰り返す。
続いて、中継装置107における処理について説明する。本実施の形態では、図6に示したメイン処理(A)に代えて、メイン処理(B)を行う。図15に、メイン処理(B)フローを示す。S601及びS603の処理は、図6の場合と同様である。
記録処理部507は、リクエストレコードを登録又は更新する(S1501)。
実施の形態2に係るリクエストテーブルについて説明する。図16に、実施の形態2に係るリクエストテーブルの例を示す。リクエストテーブルは、コンテンツ取得のリクエストの受付日時を管理するために用いられる。但し、本実施の形態では、同じ携帯無線端末101における同じアプリケーションプログラム1203から発行された、同じURLに対するリクエストを一連のもの(グループ)として扱う。
リクエストレコードは、グループIDを設定するためのフィールドと、端末識別子を設定するためのフィールドと、アプリケーション識別子を設定するためのフィールドと、URLを設定するためのフィールドと、今回のリクエストの受付日時を設定するためのフィールドと、前回のリクエストの受付日時を設定するためのフィールドとを有している。リクエストの受付日時は、携帯無線端末101のローカルプロキシ部1201においてリクエストを受け付けた日時である。端末識別子、アプリケーション識別子及び今回のリクエストの受付日時は、リクエストのヘッダから抽出される。
この例における第1リクエストレコードは、端末識別子「aa:aa:aa:aa:aa:aa」で識別される携帯無線端末101aで動作するブラウザから、URL「https//jp.tube.com/」で特定されるコンテンツサーバ105aへ要求されたリクエストをグループとして扱い、当該グループにID「R01」が割り当てられていることを示している。更に、第1リクエストレコードは、当該グループに属する最近のリクエストが「2014/10/01 10:40:00.000」に受け付けられ、同じくその前のリクエストが「2014/10/01 10:39:59.000」に受け付けられたことを示している。
同じく第2リクエストレコードは、端末識別子「bb:bb:bb:bb:bb:bb」で識別される携帯無線端末101bで動作する動画サービスB専用の表示プログラムから、URL「http://www.motion.com/」で特定されるコンテンツサーバ105bへ要求されたリクエストをグループとして扱い、当該グループにID「R02」が割り当てられていることを示している。更に、第2リクエストレコードは、当該グループに属する最近のリクエストが「2014/10/01 10:40:01.100」に受け付けられ、同じくその前のリクエストが「2014/10/01 10:40:00.000」に受け付けられたことを示している。
同じく第3リクエストレコードは、端末識別子「cc:cc:cc:cc:cc:cc」で識別される携帯無線端末101cで動作するブラウザから、URL「http://xxx.video.com/」で特定されるコンテンツサーバ105cへ要求されたリクエストをグループとして扱い、当該グループにID「R03」が割り当てられていることを示している。更に、第3リクエストレコードは、当該グループに属する最近のリクエストが「2014/10/01 10:40:02.000」に受け付けられ、同じくその前のリクエストが「2014/10/01 10:40:01.500」に受け付けられたことを示している。
図15に示したS1501の説明に戻る。初回のリクエストに基づいて、新たなリクエストレコードを登録する場合には、記録処理部507は、セッション識別子に代えて、コンテンツ取得のリクエストヘッダに含まれる端末識別子を設定する。記録処理部507は、加えて、当該ヘッダに含まれるアプリケーション識別子も、新たなリクエストレコードに設定する。また、記録処理部507は、今回のリクエストの受付日時に、当該ヘッダに含まれる受付日時を設定する。
2回目以降のリクエストに基づいて、リクエストレコードを更新する場合には、記録処理部507は、この時点で今回のリクエストの受付日時のフィールドに設定されている日時を前回のリクエストの受付日時にコピーする。そして、記録処理部507は、今回のリクエストの受付日時のフィールドに、コンテンツ取得のリクエストヘッダに含まれる受付日時を設定する。
S607の処理は、図6の場合と同様である。
S607において、第1取得部505から取得完了の通知を受けたと判定した場合には、特定部509は、アプリケーション識別子、URL及びリクエストの受付間隔に基づいて、携帯無線端末101のアプリケーションプログラム1203(例えば、ブラウザ又は各動画サービス専用の表示プログラムである。)のプリバッファ残量の推定値を特定する(S1503)。
プリバッファ残量の推定値を特定するためのルールについて説明する。図17に、実施の形態2に係るルールの例を示す。この例は、動画サービス専用の表示プログラムを用いた場合の推定ルールを定めている。
この例におけるルールは、図8に示した例と同様に、サービスと、リクエストの発生間隔のレンジとの組み合わせに対して、プリバッファ残量の推定値を定めている。但し、図8に示した例は、ブラウザで動画を再生させる場合におけるプリバッファ量の推定値を定めたものであるが、図17は、各動画サービス専用の表示プログラムで動画を再生させる場合におけるプリバッファ量の推定値を定めたものである。
例えば、動画サービスAを動画サービスA専用の表示プログラムを利用し、リクエストの発生間隔が500ミリ秒である場合には、リクエストの発生間隔のレンジ「100ミリ秒〜1秒」との組み合わせに対応する推定量「35秒分」が特定される。つまり、35秒間の再生に供されるデータがプリバッファに格納されていると推定される。この例では、プリバッファ残量は、再生時間を単位としている。但し、プリバッファ残量は、データの大きさで表すようにしてもよい。尚、ブラウザを利用する場合には、図8に示したルールを用いる。
図15に示したS1503の処理の説明に戻る。特定部509は、実施の形態1の場合と同様に、URLに基づいてサービスを特定する。特定部509は、今回のリクエストの受付日時から前回のリクエストの受付日時を引いて、リクエストの受付間隔を得る。そして、アプリケーション識別子がブラウザに該当する場合には、図8に示したルールに従って、サービスとリクエストの発生間隔のレンジとの組み合わせに対応するプリバッファ残量の推定値を特定する。一方、アプリケーション識別子が動画サービス専用の表示プログラムに該当する場合には、図17に示したルールに従って、サービスとリクエストの発生間隔のレンジとの組み合わせに対応するプリバッファ残量の推定値を特定する。実施の形態1の場合と同様に、ルールは、サービス毎に設けられた、リクエストの発生間隔を変数とする算出式であってもよい。
S611乃至S619の処理は、図6の場合と同様である。以上で処理についての説明を終える。
本実施の形態によれば、間接的に携帯無線端末101におけるプリバッファ残量を把握することができる。
また、ストリーミングを行うプログラムの種類に応じて、プリバッファ残量を特定するので、携帯無線端末101におけるプリバッファ残量をより正しく把握することができる。
[実施の形態3]
本実施の形態では、コンテンツをフラグメントに分割する例について説明する。
上述した例では、同時に転送先となる携帯無線端末101の数における上限を定めて、その範囲内で優先度の高い携帯無線端末101を選択する。しかし、サイズの大きなコンテンツを送信している間は、帯域に空きが生まれない。従って、優先度が高い携帯無線端末101からのリクエストを受信した場合に、直ぐに対応できないという面がある。
本実施の形態では、コンテンツのサイズが一定以上の場合に、コンテンツをいくつかのフラグメントに分割し、例えばhttpのChunked Transferという仕組みを利用して応答する。
このようにすれば、1回の転送時間を短縮でき、優先度が高い携帯無線端末101からのリクエストに応えるタイミングが早まる。
携帯無線端末101における処理について説明する。本実施の形態では、図13に示したローカルプロキシ処理(A)の処理に代えて、ローカルプロキシ処理(B)を行う。図18及び後述する図21に、ローカルプロキシ処理(B)フローを示す。
S1301乃至S1311の処理は、図13の場合と同様である。つまり、ローカルプロキシ部1201がコンテンツ取得のリクエストを中継装置107へ送信するまでの処理は、実施の形態2の場合と同様である。S1311の処理を終えると、端子Aを介して、図21に示したS2101の処理に移る。図21に示したS2101以降の処理については、後述する。
一旦、中継装置107における処理の説明に移る。この例では、実施の形態2をベースとして説明する。従って、中継装置107は、メイン処理(B)を行う。但し、実施の形態1をベースとする場合には、中継装置107は、メイン処理(A)を行うようにしてもよい。
そして、本実施の形態では、図9に示した転送処理(A)の処理に代えて、転送処理(B)を行う。図19に、転送処理(B)フローを示す。転送部511は、フラグメントサイズ及びフラグメント数を決定する(S1901)。この例で、フラグメントサイズは、所定値とする。フラグメント数は、コンテンツのサイズをフラグメントサイズで除することによって求められる。尚、余りがある場合には、余りも1つと数える。転送部511は、スレッドテーブルに新たなスレッドレコードを登録する(S1903)。
図20に、実施の形態3に係るスレッドテーブルの例を示す。この例におけるスレッドレコードは、図10の場合におけるフィールドの他に、フラグメント数を設定するためのフィールドと、フラグメント番号を設定するためのフィールドとを有している。フラグメント数は、転送対象であるコンテンツから分割されたフラグメントの数である。フラグメント番号は、転送を開始したフラグメントの番号である。例えば、フラグメント番号が1である場合には、先頭のフラグメントの転送が完了したことを意味する。フラグメント番号がフラグメント数と一致する場合には、最後のフラグメントの転送が完了したことを意味する。
図19の説明に戻る。S1901において、転送部511は、スレッドID、グループID及びプリバッファ残量の推定値を、図9の場合と同様に設定する。フラグメント数のフィールドには、S1901で決定されたフラグメント数が設定される。フラグメント番号には、初期値「0」が設定される。
転送部511は、判別部513から転送開始の指示を受けたか否かを判定する(S1905)。判別部513から転送開始の指示を受けていないと判定した場合には、転送開始の指示を受けるまで、転送部511は、そのまま待機する。
そして、判別部513から転送開始の指示を受けたと判定した場合には、転送部511は、フラグメントの転送を開始する(S1907)。つまり、転送部511は、コンテンツ記憶部527に記憶されているコンテンツのうち、未だ転送していない部分から、S1901で決定したフラグメントサイズに従ってフラグメントを切り出し、当該フラグメントを携帯無線端末101に送信する。尚、未だ転送していない部分がS1901で決定したサイズよりも小さい場合には、当該部分を最後のフラグメントとする。
S1901の処理において、コンテンツを予め各フラグメントに分割するようにしてもよい。その場合には、S1907におけるフラグメントの切り出しは省いてもよい。
転送部511は、自らのスレッドレコードにおけるステータスを「転送中」に変更する(S1909)。転送部511は、フラグメントの転送が完了したか否かを判定する(S1911)。フラグメントの転送が完了していないと判定した場合には、フラグメントの転送が完了するまで、転送部511は、そのまま待機する。
そして、フラグメントの転送が完了したと判定した場合には、転送部511は、フラグメント番号を更新する(S1913)。つまり、転送部511は、フラグメント番号に1を加える。
転送部511は、コンテンツの転送が完了したか否かを判定する(S1915)。具体的には、転送部511は、フラグメント番号がフラグメント数と一致する場合に、コンテンツの転送が完了したと判定する。
コンテンツの転送が完了していないと判定した場合には、転送部511は、自らのスレッドレコードにおけるステータスを「待機中」に変更する(S1917)。そして、S1905の処理に戻って、上述した処理を繰り返す。
一方、コンテンツの転送が完了したと判定した場合には、転送部511は、コンテンツの転送完了を判別部513及び携帯無線端末101に通知する(S1919)。そして、転送部511は、S1903で登録した自らのスレッドレコードを削除する(S1921)。転送処理(B)を終えると、当該スレッドは消滅する。
判別処理は、上述した通りである。尚、本実施の形態の場合における図11に示したS1101の処理では、利用する帯域幅を所定帯域幅で割って、並行してフラグメントを転送するスレッドの最大数を求めることになる。但し、処理自体は、変わりが無い。
携帯無線端末101における処理の説明に戻る。図21を用いて、携帯無線端末101側でコンテンツ取得のリクエストを送信した後のローカルプロキシ処理(B)について説明する。第2受信部1211は、待機して、中継装置107からの応答を受信する(S2101)。復元部1217は、応答がコンテンツの転送完了の通知であるか否かを判定する(S2103)。
応答がコンテンツの転送完了の通知ではないと判定した場合には、復元部1217は、応答がフラグメントであるか否かを判定する(S2105)。応答がフラグメントであると判定した場合には、復元部1217は、フラグメントをフラグメント記憶部1219に記憶する(S2107)。そして、S2101に示した処理に戻る。
一方、応答がフラグメントではないと判定した場合には、この例では、無効な応答であると看做して、S2101に戻る。但し、コンテンツの転送完了の通知又はフラグメント以外の応答が想定されない場合には、S2103におけるNoルートで直接S2107の処理に移るようにしてもよい。
S2103の説明に戻る。S2103において、応答がコンテンツの転送完了の通知であると判定した場合には、復元部1217は、フラグメント記憶部1219に蓄積したフラグメントを連結することによって、コンテンツを復元する(S2109)。復元されたコンテンツは、コンテンツ記憶部1215に記憶される。
引渡部1213は、アプリケーションプログラム1203へコンテンツを渡すと(S2111)、端子Bを介して、図18に示したS1301の処理に戻って、上述した処理を繰り返す。
本実施の形態によれば、空き帯域の割り当てをより緻密に行うことができる。
[実施の形態4]
本実施の形態では、携帯無線端末101との通信スループット又は携帯無線端末101におけるバッテリ残量に基づいて、フラグメントのサイズを決定する例について説明する。
携帯無線端末101又は無線ネットワークの状況によっては、フラグメントのサイズを一律にしない方がよい場合がある。
例えばデータ通信の頻度が多くなると、携帯無線端末101におけるバッテリの消費が増える。従って、バッテリ残量が少ない携帯無線端末101に転送するフラグメントを大きくした方が、バッテリ切れを防げる。逆にバッテリ残量が多い携帯無線端末101に転送するフラグメントを小さくした方が、他の優先度の高い携帯無線端末101に対する転送の機会が早まる。
また、携帯無線端末101毎の通信スループットに応じて,フラグメントのサイズを変えるようにしてもよい。プリバッファ量が少なく、且つ通信スループットの低い携帯無線端末101に転送するフラグメントを大きくすれば、当該携帯無線端末101における再生が安定しやすい。逆に、プリバッファ量が多く、且つスループットが高い携帯無線端末101転送するフラグメントを小さくすれば、他の優先度の高い携帯無線端末101に対する転送の機会が早まる。
実施の形態3をベースにして本実施の形態について説明する。まず、携帯無線端末101における処理について説明する。本実施の形態では、ローカルプロキシ処理(B)に代えて、ローカルプロキシ処理(C)を行う。図22に、ローカルプロキシ処理(C)フローを示す。S1301乃至S1309の処理は、図13の場合と同様である。
付加部1207は、オペレーティングシステム1221から携帯無線端末101のバッテリー残量を取得する。或いは、付加部1207は、通信部からスループットを取得する。そして、付加部1207は、コンテンツ取得のリクエストのヘッダにバッテリー残量(又はスループット)を付加する(S2201)。
S1311の処理は、図13の場合と同様である。そして、端子Aを介して、図21に示した処理に移る。ローカルプロキシ処理(C)においても、ローカルプロキシ処理(B)と同様に、図21に示した処理を行う。
中継装置107における処理の説明に移る。本実施の形態では、転送処理(B)に代えて、転送処理(C)を行う。図23に、転送処理(C)フローを示す。転送部511は、スレッドテーブルに新たなスレッドレコードを登録する(S2301)。
図24に、実施の形態4に係るスレッドテーブルの例を示す。この例におけるスレッドレコードは、図10の場合におけるフィールドの他に、フラグメントのサイズを設定するためのフィールドと、未転送量を設定するためのフィールドとを有している。
フラグメントのサイズは、新たに生成するフラグメントの大きさである。未転送量は、コンテンツのうち、未だ転送されていない部分の大きさである。例えば、未転送量がコンテンツの大きさと等しい場合には、未だ先頭のフラグメントが転送されていないことを意味する。未転送量が0である場合には、最後のフラグメントの転送が完了したことを意味する。
図23の説明に戻る。S2301において、転送部511は、スレッドID、グループID及びプリバッファ残量の推定値を、図9の場合と同様に設定する。フラグメントのサイズは、この段階では未だ設定されない。未転送量のフィールドには、コンテンツのサイズが設定される。
転送部511は、判別部513から転送開始の指示を受けたか否かを判定する(S2303)。判別部513から転送開始の指示を受けていないと判定した場合には、転送開始の指示を受けるまで、転送部511は、そのまま待機する。
そして、判別部513から転送開始の指示を受けたと判定した場合には、転送部511は、フラグメントサイズを決定する(S2305)。本実施の形態では、バッテリ残量が多い場合には、フラグメントサイズを小さくし、バッテリ残量が少ない場合には、フラグメントサイズを大きくする。
例えば、以下のようにする。(A)プリバッファ残量が多く(例えば50%以上)、且つバッテリ残量が多い(例えば50%以上)場合には、フラグメントサイズを小さくする(例えば10Kbyte)。(B)プリバッファ残量が多く(例えば50%以上)、且つバッテリ残量が少ない(例えば50%未満)場合には、フラグメントサイズを中程度にする(例えば50Kbyte)。(C)プリバッファ残量が少なく(例えば50%未満)、且つバッテリ残量が多い(例えば50%以上)場合には、フラグメントサイズを中程度にする(例えば50Kbyte)。(D)プリバッファ残量が少なく(例えば50%未満)、且つバッテリ残量が少ない(例えば50%未満)場合には、フラグメントサイズを大きくする(例えば100Kbyte)。
或いは、転送部511は、スループットが閾値より高い場合には、フラグメントサイズを小さくする。他方、スループットが閾値を超えない場合には、転送部511は、フラグメントサイズを大きくする。このとき、転送部511は、監視部515から、携帯無線端末101との間におけるスループットを取得するようにしてもよい。
判別部513から転送開始の指示を受けたと判定した場合には、転送部511は、フラグメントの転送を開始する(S2307)。つまり、転送部511は、コンテンツ記憶部527に記憶されているコンテンツのうち、未だ転送していない部分から、S2305で決定したフラグメントサイズに従ってフラグメントを切り出し、当該フラグメントを携帯無線端末101に送信する。尚、未だ転送していない部分がS2305で決定したサイズよりも小さい場合には、当該部分を最後のフラグメントとする。従って、この場合におけるフラグメントサイズは、未だ転送していない部分の大きさとなる。
転送部511は、自らのスレッドレコードにおけるステータスを「転送中」に変更する(S2309)。転送部511は、フラグメントの転送が完了したか否かを判定する(S2311)。フラグメントの転送が完了していないと判定した場合には、フラグメントの転送が完了するまで、転送部511は、そのまま待機する。
そして、フラグメントの転送が完了したと判定した場合には、転送部511は、未転送量を更新する(S2313)。つまり、転送部511は、自らのスレッドレコードにおける未転送量から、フラグメントサイズを減ずる。転送部511は、コンテンツの転送が完了したか否かを判定する(S2315)。具体的には、転送部511は、自らのスレッドレコードにおける未転送量が0である場合に、コンテンツの転送が完了したと判定する。
コンテンツの転送が完了していないと判定した場合には、転送部511は、自らのスレッドレコードにおけるステータスを「待機中」に変更する(S2317)。そして、S2303の処理に戻って、上述した処理を繰り返す。
一方、コンテンツの転送が完了したと判定した場合には、転送部511は、コンテンツの転送完了を判別部513及び携帯無線端末101に通知する(S2319)。そして、転送部511は、S2301で登録した自らのスレッドレコードを削除する(S2321)。転送処理(C)を終えると、当該スレッドは消滅する。
本実施の形態によれば、携帯無線端末101との通信スループットに応じて、フラグメントのサイズを決定するので、無線ネットワークにおける通信状況に応じて、より緻密に空き帯域を割り当てることができる。
また、携帯無線端末101におけるバッテリ残量に基づいて、フラグメントのサイズを決定するので、携帯無線端末101におけるバッテリー切れを予防しやすくなる。
[実施の形態5]
本実施の形態では、アプリケーションプログラム1203からコンテンツの再生状況を取得するためのアダプタモジュールの取得方法を定めた定義データを、携帯無線端末101に配信する例について説明する。
ユーザが新たなアプリケーションプログラム1203をインストールした場合、中継装置107において収集すべきデータが、従前のアプリケーションプログラム1203から得ていたものと異なることも考えられる。本実施の形態では、新たなアプリケーションプログラム1203に応じて、中継装置107がデータを収集できるようにする。
また、本実施の形態では、新たなアプリケーションプログラム1203は、コンテンツの再生状況に係るデータを提供するインターフェース(例えば、API(Application Programming Interface))を備えるものとする。アダプタモジュールは、新たなアプリケーションプログラム1203のインターフェースを呼び出して得た情報を、汎用的なインターフェースで提供するものである。
図25に、実施の形態5に係る携帯無線端末101のモジュール構成例を示す。携帯無線端末101は、図12に示したモジュールの他に、インストール部2551、定義データ記憶部2553、アダプタモジュール2555及びアンインストール部2559を有する。
インストール部2551は、アダプタモジュール2555をインストールする。定義データ記憶部2553は、コンテンツ取得のリクエストのヘッダに付加すべきデータ、及びそのデータを得るために用いられるアダプタモジュール2555を定義するデータ(定義データ)を記憶している。ヘッダに付加すべきデータは、アプリケーションプログラム1203の再生状況に係るデータであって、以下、アプリケーション品質という。アダプタモジュール2555は、アプリケーションプログラム1203からアプリケーション品質を得る。アンインストール部2559は、アダプタモジュール2555をアンインストールする。
また、ローカルプロキシ部1201は、図12に示したモジュールの他に、第2取得部2557を有する。第2取得部2557は、アダプタモジュール2555を介して、アプリケーションプログラム1203からアプリケーション品質を取得する。
上述したインストール部2551、アダプタモジュール2555、第2取得部2557及びアンインストール部2559は、ハードウエア資源(例えば、図33)と、以下で述べる処理をプロセッサに実行させるプログラムとを用いて実現される。
上述した定義データ記憶部2553は、ハードウエア資源(例えば、図33)を用いて実現される。
図26に、インストール処理フローを示す。インストール部2551は、オペレーティングシステム1221から、アプリケーションプログラム1203のインストール完了のイベントを受け付ける(S2601)。インストール部2551は、中継装置107に、インストールされたアプリケーションプログラム1203に対応する定義データを求める。具体的には、インストール部2551は、中継装置107へ、定義データの要求(アプリケーションプログラム1203を識別するアプリケーション識別子を含む。)を送信する(S2603)。
図27に、定義データの例を示す。まず、上側の破線で囲まれた部分について説明する。headerタグによって、コンテンツ取得のリクエストのヘッダに付加するデータが定義されている。name属性は、ヘッダに付与する項目名を示している。更に、付加されるデータの取得方法も指定されている。この例は、アダプタモジュール「com.foo.bar.MyVideoServiceAdapter」に対して、パラメータ「prebuffer」を指定してアクセスして得られる結果を、項目「X-MyVideoService-Buffer」のパラメータとしてヘッダに付加することを意味する。
次に、下側の破線で囲まれた部分について説明する。moduleタグによって、アプリケーションプログラム1203からデータを取得する際に使用されるアダプタモジュールが定義されている。class属性は、アダプタモジュールのクラス名である。url属性は、アダプタモジュールを配信するサイトのURLである.この例は、サイト「http://repository.foo.bar.com/MyVideoServiceAdapter.apk」からアダプタモジュール「com.foo.bar.MyVideoServiceAdapter」が得られることを示している。
本実施の形態では、このような定義データを用いることによって、ヘッダに付加させるパラメータを任意に設定できるようにする。
図26の説明に戻る。インストール部2551は、中継装置107から応答を受信すると(S2605)、受信した応答に基づいて、インストールされたアプリケーションプログラム1203に対応する定義データがあったか否かを判定する(S2607)。具体的には、インストール部2551は、定義データが無い旨の通知を応答として受信した場合には、インストールされたアプリケーションプログラム1203に対応する定義データが無かったと判定する。インストールされたアプリケーションプログラム1203に対応する定義データが無かったと判定した場合には、S2601の処理に戻って、上述した処理を繰り返す。
一方、S2605において定義データを受信した場合には、インストールされたアプリケーションプログラム1203に対応する定義データが有ったと判定する。インストールされたアプリケーションプログラム1203に対応する定義データが有ったと判定した場合には、インストール部2551は、受信した定義データを定義データ記憶部2553に保存する(S2609)。
インストール部2551は、定義データによって特定されるアダプタモジュール2555が既にインストールされているか否かを判定する(S2611)。当該アダプタモジュール2555が既にインストールされていると判定した場合には、S2601の処理に戻って、上述した処理を繰り返す。
一方、当該アダプタモジュール2555が既にインストールされていないと判定した場合には、インストール部2551は、定義データに設定されているURLが示すサイトから当該アダプタモジュール2555をインストールする(S2613)。そして、S2601の処理に戻って、上述した処理を繰り返す。
一旦、中継装置107における動作について説明する。図28に、実施の形態5に係る中継装置107のモジュール構成例を示す。中継装置107は、上述したモジュールに加えて、配信部2801及び定義データ格納部2803を有している。配信部2801は、定義データを配信する。定義データ格納部2803は、定義データを記憶している。
図29に、配信処理フローを示す。配信部2801は、携帯無線端末101から定義データの要求を受信すると(S2901)、当該要求に含まれるアプリケーション識別子に対応する定義データが定義データ格納部2803に格納されているか否かを判定する(S2903)。当該定義データが定義データ格納部2803に格納されていないと判定した場合には、配信部2801は、定義データが無い旨を携帯無線端末101に通知する(S2905)。そして、S2901に示した処理に戻って、上述した処理を繰り返す。
一方、S2903において当該定義データが定義データ格納部2803に格納されていると判定した場合には、配信部2801は、当該定義データを定義データ格納部2803から取得し(S2907)、取得した定義データを携帯無線端末101に送信する(S2909)。そして、S2901に示した処理に戻って、上述した処理を繰り返す。
携帯無線端末101における動作の説明に戻る。本実施の形態では、ローカルプロキシ処理(B)に代えて、ローカルプロキシ処理(D)を行う。図30に、ローカルプロキシ処理(D)フローを示す。S1301乃至S1307の処理は、図13の場合と同様である。
第2取得部2557は、アプリケーションプログラム1203から、定義データにおいて指定されているアプリケーション品質を取得する(S3001)。第2取得部2557は、インストールされているアダプタモジュール2555を介して、アプリケーションプログラム1203からアプリケーション品質を取得する。
アプリケーション品質は、例えばアプリケーションプログラム1203におけるプリバッファ残量のようなコンテンツの再生状況に関するデータである。この例では、定義データにおいて、取得するアプリケーション品質としてプリバッファ残量が指定されているものとする。付加部1207は、コンテンツ取得のリクエストのヘッダに、取得したアプリケーション品質を付加する(S3003)。
S1311の処理は、図13の場合と同様である。そして、端子Aを介して、図21に示した処理に移る。ローカルプロキシ処理(D)においても、ローカルプロキシ処理(B)と同様に、図21に示した処理を行う。
中継装置107における動作について説明する。本実施の形態では、図6に示したメイン処理(A)に代えて、メイン処理(C)を行う。図31に、メイン処理(C)フローを示す。
S601及びS603の処理は、図6の場合と同様である。
記録処理部507は、リクエストレコードを登録又は更新する(S3101)。
本実施の形態に係るリクエストテーブルでは、図16に示したリクエストレコードに、アプリケーション品質を設定するためのフィールドが追加されているものとする。
初回のリクエストに基づいて、新たなリクエストレコードを登録する場合には、図15に示したS1501における処理に加えて、当該リクエストレコードにアプリケーション品質を設定する。このとき、アプリケーション品質は、コンテンツ取得のリクエストのヘッダから読み取られる。
2回目以降のリクエストに基づいて、リクエストレコードを更新する場合には、図15に示したS1501の場合と同様の処理を行う。
S607の処理は、図6の場合と同様である。
S607において、第1取得部505から取得完了の通知を受けたと判定した場合には、特定部509は、アプリケーション品質に基づいて、プリバッファ残量を特定する(S3103)。この例では、アプリケーション品質が、プリバッファ残量そのものである。但し、アプリケーション品質に基づいて、プリバッファ残量の推定値を求めるようにしてもよい。
S611乃至S619の処理は、図6の場合と同様である。
携帯無線端末101における動作の説明に戻る。図32に、アンインストール処理フローを示す。アンインストール部2559は、オペレーティングシステム1221から、アプリケーションプログラム1203のアンインストール完了のイベントを受け付ける(S3201)。アンインストール部2559は、アンインストールされたアプリケーションプログラム1203に対応する定義データが定義データ記憶部2553に保存されているか否かを判定する(S3203)。当該定義データが定義データ記憶部2553に保存されていないと判定した場合には、S3201に示した処理に戻って、上述した処理を繰り返す。
一方、当該定義データが定義データ記憶部2553に保存されていると判定した場合には、アンインストール部2559は、当該定義データによって特定されるアダプタモジュール2555が、他のアプリケーションプログラム1203によって使用されているか否かを判定する(S3205)。
当該定義データによって特定されるアダプタモジュール2555が、他のアプリケーションプログラム1203によって使用されていると判定した場合には、S3201に示した処理に戻って、上述した処理を繰り返す。
一方、当該定義データによって特定されるアダプタモジュール2555が、他のアプリケーションプログラム1203によって使用されていないと判定した場合には、アンインストール部2559は、当該アダプタモジュール2555をアンインストールする(S3207)。アンインストール部2559は、更に当該定義データを削除する(S3209)。
そして、S3201に示した処理に戻って、上述した処理を繰り返す。
本実施の形態によれば、携帯無線端末101におけるコンテンツの再生状況をより正しく把握することができる。
図33に、携帯無線端末101のハードウエア構成例を示す。携帯無線端末101は、CPU(Central Processing Unit)3301、記憶回路3303、無線通信用アンテナ3311、無線通信制御回路3313、スピーカ制御回路3315、スピーカ3317、マイク制御回路3319、マイク3321、LCD(Liquid Crystal Display)制御回路3323、LCD3325、タッチパッド3327、キー群3329、GPS(Global Positioning System)装置3331及びカメラ3333を有している。
CPU3301は、モデムCPUとアプリケーションCPUとからなることもある。記憶回路3303は、例えば、ROM(Read Only Memory)3305とRAM(Random Access Memory)3307とフラッシュメモリ3309とを有している。ROM3305は、例えば、オペレーティングシステムなどのプログラムや予め設定されているデータを格納している。RAM3307は、例えばアプリケーションなどのプログラムを展開する領域を含んでいる。RAM3307は、一時的なデータを格納する領域も含んでいる。フラッシュメモリ3309は、例えば、アプリケーションなどのプログラムや保持すべきデータを格納している。
LCD制御回路3323は、所定の動作周波数でクロック回路を動作させ、LCD3325を駆動させる。LCD3325は、表示画面を表示する。タッチパッド3327は、例えば、LCD3325の表示面上に配置されたパネル状のセンサであり、タッチ操作による指示を受け付ける。具体的には、LCD3325とタッチパッド3327とは、一体としたタッチパネルとして用いられる。キー群3329の各ハードキーは、筐体の一部に設けられている。
無線通信用アンテナ3311は、近距離無線通信方式、セルラー方式及び無線LAN方式による無線電波を受信する。無線通信用アンテナ3311は、複数のアンテナを含んでいてもよい。無線通信制御回路3313は、各方式における使用周波数に応じて無線通信の制御を行う。
スピーカ制御回路3315は、音データに関するデジタル/アナログ変換を行う。スピーカ3317は、アナログデータを音として出力する。マイク制御回路3319は、音データに関するアナログ/デジタル変換を行う。マイク3321は、音をアナログデータに変換する。
GPS装置3331は、位置を計測する。カメラ3333は、例えば静止画像及び動画像を撮影する。
以上本発明の実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上述の機能ブロック構成はプログラムモジュール構成に一致しない場合もある。
また、上で説明した各記憶領域の構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ、処理の順番を入れ替えることや複数の処理を並列に実行させるようにしても良い。
なお、上で述べた中継装置107は、コンピュータ装置であって、図34に示すように、メモリ2501とCPU2503とハードディスク・ドライブ(HDD:Hard Disk Drive)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。CPU2503は、アプリケーション・プログラムの処理内容に応じて表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ2501に格納されるが、HDD2505に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
中継装置107は、複数の通信制御部2517を有するようにしてもよい。
以上述べた本発明の実施の形態をまとめると、以下のようになる。
本実施の形態に係る中継方法は、(A)ストリーミングを行う端末から無線ネットワークを介して受信したコンテンツ取得リクエストに応じて、コンテンツ配信装置からコンテンツを取得する処理と、(B)コンテンツの転送先である端末におけるプリバッファ残量を特定する特定処理と、(C)無線ネットワークにおける空き帯域が割り当てられるコンテンツ転送処理の許容数が、待機しているコンテンツ転送処理の数に満たない場合に、プリバッファ残量が少ない方の端末へのコンテンツの転送を開始させる処理とを含む。
このようにすれば、無線ネットワークに接続する端末におけるストリーミングをより円滑にできる。
上記特定処理において、同一のセッションにおけるコンテンツ取得リクエストの受信間隔に基づいて、プリバッファ残量を特定するようにしてもよい。
このようにすれば、間接的に端末におけるプリバッファ残量を把握することができる。
上記特定処理において、同一の端末から受信したコンテンツ取得のリクエストに含まれるリクエスト発生時刻の間隔に基づいて、当該端末におけるプリバッファ残量を特定するようにしてもよい。
このようにすれば、間接的に端末におけるプリバッファ残量を把握することができる。
上記特定処理において、ストリーミングを行うプログラムの種類に応じて、プリバッファ残量を特定するようにしてもよい。
このようにすれば、端末におけるプリバッファ残量をより正しく把握することができる。
上記コンテンツ転送処理は、コンテンツを複数回に分けて転送する処理であってもよい。そして、上記コンテンツ転送処理において、1回分の転送を終えると、再開されるまで待機するようにしてもよい。
このようにすれば、空き帯域の割り当てをより緻密に行うことができる。
上記コンテンツ転送処理において、端末との通信スループットに応じて、1回に転送されるデータのサイズを決定するようにしてもよい。
このようにすれば、無線ネットワークにおける通信状況に応じて、より緻密に空き帯域を割り当てることができる。
上記コンテンツ転送処理において、端末におけるバッテリ残量に基づいて、1回に転送されるデータのサイズを決定するようにしてもよい。
このようにすれば、端末におけるバッテリー切れを予防しやすくなる。
更に、ストリーミングを行うプログラムからコンテンツの再生状況を取得するためのアダプタモジュールの取得方法を定めたデータを、端末に配信する処理を含むようにしてもよい。
このようにすれば、端末におけるコンテンツの再生状況をより正しく把握することができる。
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納されるようにしてもよい。尚、中間的な処理結果は、一般的にメインメモリ等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
ストリーミングを行う端末から無線ネットワークを介して受信したコンテンツ取得リクエストに応じて、コンテンツ配信装置からコンテンツを取得する処理と、
前記コンテンツの転送先である前記端末におけるプリバッファ残量を特定する特定処理と、
前記無線ネットワークにおける空き帯域が割り当てられるコンテンツ転送処理の許容数が、待機しているコンテンツ転送処理の数に満たない場合に、前記プリバッファ残量が少ない方の端末への前記コンテンツの転送を開始させる処理と
を含み、コンピュータにより実行される中継方法。
(付記2)
前記特定処理において、
同一のセッションにおけるコンテンツ取得リクエストの受信間隔に基づいて、前記プリバッファ残量を特定する
付記1記載の中継方法。
(付記3)
前記特定処理において、
同一の端末から受信したコンテンツ取得のリクエストに含まれるリクエスト発生時刻の間隔に基づいて、当該端末における前記プリバッファ残量を特定する
付記1記載の中継方法。
(付記4)
前記特定処理において、
前記ストリーミングを行うプログラムの種類に応じて、前記プリバッファ残量を特定する
付記1乃至3のいずれか1つ記載の中継方法。
(付記5)
前記コンテンツ転送処理は、前記コンテンツを複数回に分けて転送する処理であって、
前記コンテンツ転送処理において、1回分の転送を終えると、再開されるまで待機する
付記1乃至4のいずれか1つ記載の中継方法。
(付記6)
前記コンテンツ転送処理において、前記端末との通信スループットに応じて、1回に転送されるデータのサイズを決定する
付記5記載の中継方法。
(付記7)
前記コンテンツ転送処理において、前記端末におけるバッテリ残量に基づいて、1回に転送されるデータのサイズを決定する
付記5記載の中継方法。
(付記8)
更に、
前記ストリーミングを行うプログラムからコンテンツの再生状況を取得するためのアダプタモジュールの取得方法を定めたデータを、前記端末に配信する処理
を含む付記1記載の中継方法。
(付記9)
ストリーミングを行う端末から無線ネットワークを介して受信したコンテンツ取得リクエストに応じて、コンテンツ配信装置からコンテンツを取得する処理と、
前記コンテンツの転送先である前記端末におけるプリバッファ残量を特定する処理と、
前記無線ネットワークにおける空き帯域が割り当てられるコンテンツ転送処理の許容数が、待機しているコンテンツ転送処理の数に満たない場合に、前記プリバッファ残量が少ない方の端末への前記コンテンツの転送を開始させる処理と
をコンピュータに実行させる中継プログラム。
(付記10)
ストリーミングを行う端末から無線ネットワークを介して受信したコンテンツ取得リクエストに応じて、コンテンツ配信装置からコンテンツを取得する取得部と、
前記コンテンツの転送先である前記端末におけるプリバッファ残量を特定する特定部と、
前記無線ネットワークにおける空き帯域が割り当てられるコンテンツ転送処理の許容数が、待機しているコンテンツ転送処理の数に満たない場合に、前記プリバッファ残量が少ない方の端末への前記コンテンツの転送を開始させる開始部と
を含む中継装置。