説明

通信装置、方法及びプログラム

【課題】適切な通信制御を行うための処理負担を軽減させる。
【解決手段】通信装置100は、ネットワークを介して通信制御を行う通信部104と、通信部104に対して通信を要求するアプリケーションを実行する実行部107と、通信部104が用いるネットワーク状態を示す状態情報を検出する検出部109と、ネットワーク状態を示す状態情報と、アプリケーションが通信部に対して要求する通信について当該ネットワーク状態に適した制御を行う通信制御情報と、を対応づけて記憶する記憶部101と、検出部109により検出された状態情報と、記憶部101で対応づけられた通信制御情報に基づいて、アプリケーションが通信部104に対して要求する通信を制御する制御部106と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、ネットワークに応じた通信を行う通信装置、方法及びプログラムに関するものである。
【背景技術】
【0002】
近年、コンピュータ技術の向上により、計算機が小型化する傾向にある。このため、小型化された計算機は、利用者が携帯することを容易になった。そして、利用者が一つの計算機を持ち運び、様々な状況の下で利用することが一般化している。また、当該計算機には、利用者が使用する様々なプログラムやデータが格納される傾向にある。
【0003】
このような計算機には、利用状況に応じてネットワークに接続するために様々なネットワークインターフェイスが用意されている。様々なネットワークインターフェイスを使い分けることで、例えば、オフィスにて使用する場合には有線接続のネットワークに接続し、外出先で使用する場合には携帯電話や公衆ワイヤレスネットワークなどに接続することが可能となる。そして、オフィスでネットワークに有線接続されている場合、オフィスアプリケーション、オフィス内のコミュニケーション手段としてショートメッセージやビジュアルコミュニケーションのアプリケーションの使用が考えられる。外出先で携帯電話や公衆ワイヤレスネットワークに接続された場合、電子メールなどの限られたアプリケーションを中心に使用すると考えられる。
【0004】
このように、計算機を使用する環境に応じて、接続手法および利用するプログラムが異なる傾向がある。しかしながら、環境に応じて計算機の利用方法が異なる場合であっても、通常の計算機では、環境にかかわらず、毎回同じ初期状態からアプリケーションを起動してネットワークを利用する。このため、環境に応じて最適なネットワーク状況を維持するのが難しい。
【0005】
そこで、特許文献1では、ネットワークや計算機の環境に応じて、リアルタイムにアプリケーションプロトコルやトランスポートプロトコルのパラメータを調整し、最適なネットワーク状況を維持する技術が提案されている。これにより、鉄道や自動車などで移動しながら使用する場合であっても、適切な通信状態を維持できる。
【0006】
【特許文献1】特開2000−78232号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
しかしながら、特許文献1に記載された技術では、ネットワーク状況に応じて適切な通信状態を維持できるが、リアルタイムに追従する必要があるため、常に最適化パラメータを導出するための演算処理が必要となる。
【0008】
このため、過去のネットワーク状況と同様のネットワーク状況になった場合でも、過去に導出した最適化パラメータを利用することができず、計算機の計算処理負担が大きくなる。また、計算機の計算処理負担の向上に応じて、消費する消費電力も増加する。これは、利用者が当該計算機を外出先で利用する場合に大きな問題となる。
【0009】
本発明は、上記に鑑みてなされたものであって、ネットワーク状況に応じた制御を行うとともに、計算処理負担を軽減する通信装置、方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0010】
上述した課題を解決し、目的を達成するために、本発明にかかる通信装置は、ネットワークを介して通信制御を行う通信部と、前記通信部に対して通信を要求するアプリケーションを実行する実行部と、前記通信部が用いるネットワーク状態を示す状態情報を検出する検出部と、ネットワーク状態を示す状態情報と、前記アプリケーションが前記通信部に対して要求する通信について当該ネットワーク状態に適した制御を行う通信制御情報と、を対応づけて記憶する記憶部と、前記検出部により検出された前記状態情報と、前記記憶部で対応づけられた前記通信制御情報に基づいて、前記アプリケーションが前記通信部に対して要求する通信を制御する制御部と、を備えることを特徴とする。
【0011】
また、本発明にかかる通信方法は、通信装置で実行される通信方法であって、前記通信装置は、ネットワーク状態を示す状態情報と、前記アプリケーションが前記通信部に対して要求する通信について当該ネットワーク状態に適した制御を行う通信制御情報と、を対応づけて記憶する記憶部を備え、通信部が、ネットワークを介して通信制御を行う通信ステップと、実行部が、前記通信部に対して通信を要求するアプリケーションを実行する実行ステップと、検出部が、前記通信部が用いるネットワーク状態を示す前記状態情報を検出する検出ステップと、前記検出ステップにより検出された前記状態情報と、前記記憶部で対応づけられた前記通信制御情報に基づいて、前記アプリケーションが前記通信部に対して要求する通信を制御する制御ステップと、を有することを特徴とする。
【0012】
また、本発明にかかる通信プログラムは、コンピュータが、ネットワーク状態を示す状態情報と、前記アプリケーションが前記通信部に対して要求する通信について当該ネットワーク状態に適した制御を行う通信制御情報と、を対応づけて記憶する記憶部を備え、ネットワークを介して通信制御を行う通信ステップと、前記通信部に対して通信を要求するアプリケーションを実行する実行ステップと、前記通信部が用いるネットワーク状態を示す前記状態情報を検出する検出ステップと、前記検出ステップにより検出された前記状態情報と、前記記憶部で対応づけられた前記通信制御情報に基づいて、前記アプリケーションが前記通信部に対して要求する通信を制御する制御ステップと、をコンピュータに実行させる。
【発明の効果】
【0013】
本発明によれば、通信制御情報に基づいて通信制御を行うことで、アプリケーションからの要求に基づく通信制御を適切に行うと共に、適切・:な通信制御を行うための処理負担を軽減させるという効果を奏する。
【発明を実施するための最良の形態】
【0014】
以下に添付図面を参照して、この発明にかかる通信装置、方法及びプログラムの最良な実施の形態を詳細に説明する。
【0015】
(第1の実施の形態)
図1に示すように、第1の実施の形態にかかる通信装置100は、記憶部101と、無線ネットワークI/F102と、有線ネットワークI/F103と、通信部104と、登録・更新部105と、制御部106と、実行部107と、環境情報取得部108と、検出部109とを備える。通信装置100は、上述した構成以外のその他の要素を含んでいてもよいが、本実施の形態において説明として不要のため省略する。そして、通信装置100が接続するネットワークを介して、例えばサーバ150との間で通信を行う。
【0016】
無線ネットワークI/F102は、無線を用いてネットワークに接続するネットワークインターフェイスとする。無線接続方式としては、周知を問わずあらゆる方式を含むものとする。
【0017】
有線ネットワークI/F103は、ネットワークに有線接続するネットワークインターフェイスとする。有線接続方式としては、例えば100BASE―Tなど、周知を問わずあらゆる方式を含むものとする。なお、通信装置100が備えるネットワークインターフェイスは、上記種類に制限するものではない。また通信装置100が備えるネットワークインターフェイスを2個に制限するものではなく、1個又は3個以上でも良い。
【0018】
通信部104は、無線ネットワークI/F102又は有線ネットワークI/F103を用いて接続されたネットワークを介して、データ通信を行う。データ通信は、後述する実行部107で実行されたアプリケーションがデータの送受信に使用する。
【0019】
検出部109は、通信部104が用いるネットワークの状態を示す状態情報を検出する。なお、状態情報の例については後述する。
【0020】
環境情報取得部108は、通信部104により通信しているネットワーク環境下において、実行部107で実行されたアプリケーション及び通信装置100自体又はこれら周辺を示す環境情報を検出する。環境情報としては、例えば、ログインしているユーザ情報、実行されているアプリケーションを識別するプログラムIDや、アプリケーションが通信を要求した通信先などを示した通信情報、そしてアプリケーションが送受信したデータの種類を示すデータ種類などとする。
【0021】
記憶部101は、実行部107で実行されるアプリケーションや、制御部106で使用する制御情報を記憶する。図2に示すように、記憶部101は、通常のアプリケーションプログラム201と、当該アプリケーションプログラム201に関する制御情報202とを対応付けて記憶する。
【0022】
この制御情報202は、対応付けられたアプリケーションプログラム201が実行されたときの状況に従って、登録・更新部105により登録又は更新が行われた情報とする。この制御情報202により、通信制御を行うことが可能になる。
【0023】
アプリケーションプログラム201は、実行を通じて変更されることはないが、制御情報202は、対応するアプリケーションプログラム201が実行されている場合に、ネットワーク状況の変化等に基づいて登録、更新が行われる。
【0024】
そして、図2に示すように、複数のアプリケーションについて、アプリケーションプログラム毎に制御情報が対応付けて記憶される。なお、記憶部101に記憶されるアプリケーションプログラムは、必ずしも上述した構成を備える必要はなく、制御情報と対応付けられていない状態で記憶されても良い。他の例としては、アプリケーションプログラムと制御情報が関連付けられた形式ではあるが、制御情報はなにも登録されておらず、アプリケーションプログラムのみ登録されているという形式でも良い。
【0025】
記憶部101が記憶する制御情報は、アプリケーションプログラム201毎に生成されたテーブルにおいて、ネットワークの状態を示す状態情報や、通信装置100やアプリケーションの状況を表す環境情報、アプリケーションが行う通信を制御するための通信制御情報を、検索キーと対応付けて記憶する。つまり、記憶部101は、検索キーを介して、ネットワークの状態を示す状態情報と、通信装置100やアプリケーションの状況を示す環境情報と、検出されたネットワーク環境下でアプリケーションによる通信制御を調整するための通信制御情報とを対応付けて記憶する。検索キーとしては、本実施の形態では、登録や更新が行われた時刻を示す記録時刻を用いる。なお、後述するコンテキスト等を用いてもよい。
【0026】
なお、図2に示す記憶部101の形式は、一例として示したものであり、アプリケーションプログラム毎に制御情報が対応付けられた構造に制限するものではない。例えば、アプリケーションプログラム及び制御情報を異なるファイルとし、当該ファイルの拡張子によってその形式を区別する手法を採用しても良い。また、アプリケーションプログラム毎の制御情報を全て一括管理し、アプリケーションプログラムを識別する情報を検索条件と設定することで、どのアプリケーションプログラムと対応付けられているのか特定可能な形式で保存しても良い。このように、アプリケーションプログラムと、当該アプリケーションプログラムに関連する制御情報との対応関係が把握できる構造が実現できればよい。
【0027】
本実施の形態においては、図3に示すように、記憶部101が記憶する制御情報は、情報IDと、コンテキストと、記録時刻と、値とを、対応付けて記憶する。
【0028】
情報IDは、当該エントリに保存された情報を識別する。本実施の形態にかかる情報IDは、例えば、接続インターフェイスの種別、インターフェイスに付与されたIPアドレス、通信ごとの単位時間あたりの送信バイト数、通信ごとの単位時間あたりの受信バイト数、(ノード全体の)単位時間あたりの送信バイト数、(ノード全体の)単位時間あたりの受信バイト数、及び通信ごとのTCP制御情報などを識別するIDがある。そして、値に、情報IDによって識別された情報についての実際の値を保持する。例えば、値は、上述した接続インターフェイスの種別を特定する値や、インターフェイスに付与されたIPアドレス、通信ごとの単位時間あたりの送信バイト数が格納されている。
【0029】
コンテキストは、情報IDにより識別される情報が生成されたときの、通信装置100やネットワーク接続先などの状況を特定する。記録時刻は、情報IDにより識別される情報を記憶した時刻を示す。なお、記録時刻は、各情報を取得した時刻でもよい。
【0030】
例えば、コンテキストと記録時刻とを検索条件に設定して検索した場合に、同一の記録時刻、同一状況で行われた動作についての各情報の値を検出できる。つまり、同一記録時刻、同一状況で使用された接続インターフェイスや、インターフェイスに付与されたIPアドレス、単位時間あたりの送信バイト数を検出できる。
【0031】
図3に示す例では、記憶部101には、3種類の情報について4個のエントリが記憶されている。エントリ301とエントリ302は、同じ情報IDを保持しているため、同一種類の情報を保存しているが、記録時刻が異なる。エントリ301及び302、エントリ303、エントリ304は、それぞれ情報IDが異なるため、異なる種類の情報が保存されていることを示している。エントリ301及び303は同一時刻に取得されたことを把握できる。また、エントリ301〜エントリ303は同じコンテキストCTX1を保持しているため、記録時刻が異なるものもあるが、同じ状況の元で記録されたものとなる。次に状況を識別するコンテキストについて詳細に説明する。
【0032】
本実施の形態にかかる記憶部101の制御情報に保持されるコンテキストは、複数のフィールドで構成される。図4に示すコンテキストの例では、プログラムIDと、ユーザ情報と、通信情報と、データ種類とを対応付けて記憶している。このように、本実施の形態にかかるコンテキストには、通信装置100にログインしているユーザ情報や、実行されているアプリケーションプログラム、通信情報(例えば送信先、プロトコル及びポート番号)等のネットワーク状況や通信装置100の環境情報を含むものとする。これらをコンテキストとして設定することで、同一環境下で制御に用いられる制御情報を特定することが可能となる。
【0033】
アプリケーションIDは、アプリケーションプログラムを識別するIDとする。ユーザ情報は、当該アプリケーションプログラムを使用したユーザを識別する情報とする。通信情報は、アプリケーションプログラムが通信するために設定された各種通信パラメータとする。データ種類は、当該アプリケーションプログラムが通信で利用したデータの種別とする。
【0034】
また、コンテキストに含まれる通信情報としては、アプリケーションプログラムが通信するために設定された各通信パラメータとして、プロトコル番号、IPアドレス、ポート番号から構成される組み合わせを保持する。
【0035】
図4に示すコンテキストの例では、2個のエントリ(エントリ401及びエントリ402)が登録されている。このエントリ401及びエントリ402は、一人のユーザ(userAで識別されるユーザ)が、一つのアプリケーションプログラム(Webブラウザ)を利用して、一つのサーバと通信を行うことで、複数の種類のデータ(HTML及びMPEGビデオ)を送受信していることが把握できる。
【0036】
このように、本実施の形態にかかるエントリにおいては、4個のフィールドのうち、1個でも異なる値のフィールドがあれば、別エントリとして登録される。本実施の形態においては、上述した様にコンテキストを細分化して詳細な情報を埋め込んだ。しかしながら、このようにコンテキストに詳細な情報を埋め込むのではなく、コンテキストの詳細な情報を保持する独立テーブルを生成し、この独立テーブルのエントリと、制御情報のテーブルのエントリと、を対応付ける対応表で管理しても良い。
【0037】
また、図4に示したコンテキストを用いて各エントリを生成すると、各エントリについてかなり詳細な情報が設定されているため、かなり多くの数のエントリが登録されるにもかかわらず、現在の状況と一致するエントリが少ないということも考えられる。つまり、エントリとして詳細な情報が設定可能であるが、状況によっては、ここまで詳細に情報を設定する必要がない場合もある。そこで、本実施の形態では、設定する必要がない情報については、不定として定義することで対応する。これにより、いくつかの要素をまとめて一つのコンテキストとして定義できる。図5に示す例では、コンテキストの通信情報として、プロトコルと通信相手のポート番号だけを特定してコンテキストを生成する例とする。
【0038】
図5に示す例では、TCPの80番ポートから送信されて、自通信装置100に向かう通信を含むコンテキストを表している。通信情報をこのように纏めることで、登録されるエントリの数を少なくすると供に、現在の状況と一致するエントリの抽出が容易になる。
【0039】
図1に戻り、制御部106は、検出部109により検出されたネットワークの状態を示す状態情報と、環境情報取得部108により取得された環境情報と、記憶部101の制御情報で対応付けられた通信制御情報を用いて、アプリケーションが前記通信部104に対して要求する通信を制御する。
【0040】
また、制御部106は、実行部107によりアプリケーションが実行される前に、検出部109に検出されたネットワーク状態、及び環境情報取得部108により取得された環境情報と、記憶部101の制御情報で対応付けられた通信制御情報に基づいて、アプリケーションが通信部104に対して要求する通信制御に対する初期値を設定する。
【0041】
また、制御部106は、通信制御情報を用いてアプリケーションを制御した後、さらに、検出部109により検出されたネットワークの状態の変化に対応して、当該状態に適切になるように、実行部107で実行されているアプリケーションを制御する。この際、適切な通信制御情報がない場合、制御部106は、検出された状況情報及び取得した環境情報に対して演算を施すことで、ネットワーク状況及び通信装置100の置かれている環境に適した通信制御情報を算出し、算出した通信制御情報でアプリケーションを制御する。この適切な通信制御情報の算出手法は、周知を問わずあらゆる手法を用いて良い。
【0042】
実行部107は、通信装置100上で様々なアプリケーションを実行する。実行するアプリケーションとしては、通信部104により通信された情報を用いるアプリケーションも、用いないアプリケーションも含まれる。
【0043】
登録・更新部105は、検出部109により検出されたネットワークの状態を示す状態情報、環境情報取得部108により取得された環境情報、及び制御部106が行った制御を示す通信制御情報を、上述した様に対応付けて記憶部101に登録、更新する。
【0044】
なお、図1に示した構成は一例であり、例えばネットワークインターフェイスが複数あってもよいし、実行部107が複数あってもよい。検出部109が監視対象とする状況に即した専用のセンサーを具備していてもよい。
【0045】
次に、本実施の形態にかかる通信装置100のアプリケーションプログラムの実行手順について、図6を用いて説明する。図6に示すシーケンス図では、通信装置100利用者がアプリケーションプログラムを起動する時点から開始される。図6に示す処理手順では、すでに通信装置100がネットワークに接続されているものとする。
【0046】
まず、制御部106は、利用者により図示しないユーザインターフェイスを介してアプリケーションの起動が指示された場合、記憶部101に対して、当該アプリケーションのロードを指示する(ステップS601)。
【0047】
これにより、記憶部101に記憶されたアプリケーションプログラムが、実行部107の作業領域にロードされる(ステップS602)。そして、作業領域に格納されたアプリケーションプログラムは実行指示があるまで待機する。
【0048】
次に、制御部106は、アプリケーションプログラムのロードに続いて、環境情報取得部108を介して環境情報を取得する(ステップS603)。
【0049】
その後、制御部106は、検出部109により検出された状態情報を取得する(ステップS604)。
【0050】
ステップS603及びステップS604で取得する環境情報及び状態情報は、実行するアプリケーションプログラムの通信制御に用いる通信制御情報に対応付けされた情報と同じ種類の情報に限定して取得してもよいし、より一般的な情報を取得しても良い。このように、取得する環境情報及び状態情報は、制御部106が、初期値導出処理に必要な情報であればよい。
【0051】
制御部106は、現在の状況を示した環境情報及び状態情報を取得した後、これら情報を検索条件に用いて、実行されるアプリケーションと記憶部101で対応付けられている制御情報から、現在の状況に類似する状況で使用された通信制御情報のエントリの検索を指示する(ステップS605)。
【0052】
そして、制御部106は、記憶部101から検索結果として、実行するアプリケーションの制御に適した通信制御情報のエントリを取得する(ステップS606)。また、検索条件に合致する通信制御情報のエントリがない場合は、その旨を制御部106に通知する(この場合の処理は図6では省略する)。
【0053】
例えば、取得した環境情報により、ネットワークAに接続されていることが判明した場合、かつてネットワークAに接続していたときにアプリケーションの制御に用いた最適なパラメータを取得する。このパラメータとしては、例えば実行するアプリケーションに適したTCPのウィンドウサイズなどがある。これにより、ネットワークの状況に応じたアプリケーションの実行が可能となる。
【0054】
取得した制御情報のエントリは、制御部106の作業領域に展開される。なお、制御部106の作業領域と、上述した実行部107の作業領域とは、通信装置100が備える、図示しないメインメモリ(RAM)上に設ける等が考えられる。
【0055】
次に、制御部106は、アプリケーションを制御するために必要な通信制御情報のエントリを全て取得した後、アプリケーションを制御するための初期値を導出する(ステップS607)。
【0056】
つまり、過去の状態情報及び環境情報と、今回の状態情報及び環境情報とが一致した場合に、過去にアプリケーションの制御に用いた最適なパラメータを初期値として設定すればよい。また、過去の状態情報及び環境情報と、今回の状態情報及び環境情報とが異なる場合にはこれらの値と過去にアプリケーションの制御に用いた最適なパラメータとに基づいて、今回に最適なパラメータを算出する。
【0057】
そして、制御部106は、初期値の導出が完了すると、該初期値を実行部107に対して設定する(ステップS608)。その後、制御部106は、設定した初期値を用いて、アプリケーションを実行するよう、実行部107に対して実行を指示する(ステップS609)。そして、実行部107が、作業領域に格納されているアプリケーションプログラムを実行する(ステップS610)。
【0058】
上述した処理手順が、本実施の形態にかかる通信装置100における、アプリケーションプログラムを実行するまでの処理とする。これにより、ネットワークや通信装置100の状況に応じた通信制御情報を算出することなく、最適な通信制御情報を用いてアプリケーションプログラムを実行できる。
【0059】
次に、本実施の形態にかかる通信装置100において、アプリケーションプログラムが実行されている間に行われる制御手順について、図7を用いて説明する。
【0060】
まず、アプリケーションプログラムが実行されている間、実行部107などの通信装置100の各構成及び周辺を示す環境情報を、環境情報取得部108が取得する(ステップS701)。なお、環境情報の例としては、アプリケーションが必要とするプロセッサ使用量、メモリの使用量などがある。
【0061】
なお、プロセッサ使用量とは、通信装置100に搭載された、図示しないOSが管理しているプロセッサのアプリケーションプログラムへの割り当て時間や、ハードウェアにより実現されたカウンタを用いて計測されたプロセッサのアプリケーションプログラムへの割り当て時間などから導き出された使用量とする。
【0062】
また、検出部109も、アプリケーションプログラムが実行されている間、通信部104が、無線ネットワークI/F102又は有線ネットワークI/F103を介して行われる通信の動作状態を状態情報として検出する(ステップS702)。状態情報の例としては、使用したネットワークインターフェイスや、単位時間あたりの送受信量などがある。
【0063】
これらステップS701及びS702で取得する環境情報及び状態情報は、図6のステップS606で取得した制御情報のエントリに含まれるパラメータ及びその導出に必要なパラメータとする。なお、本実施の形態で、取得対象となる具体的なパラメータは、上述した制御情報の各フィールド及びコンテキストを構成する詳細な情報で示したパラメータとする。なお、パラメータは、上述した名称に制限するものではなく、初期値導出ステップに用いるアルゴリズムやパラメータの調整に用いるアルゴリズム、統計値導出に用いるアルゴリズムに依存する。
【0064】
そして、環境情報取得部108が取得した環境情報は、制御部106に対して通知される(ステップS703)と共に、検出部109が検出した状態情報も、制御部106に対して通知される(ステップS704)。通知間隔は、通信装置100の能力などに応じて適切な値を設定する必要があり、実装依存のため説明を省略する。また、制御部106と、検出部109又は環境情報取得部108と、の間で行われる情報の交換について、どちらが主体的で行うかは、実装依存の事柄である。
【0065】
さらに、制御部106は、統計値を導出するために必要な情報を、記憶部101から取得する(ステップS705)。つまり、過去に検出された状態情報や、環境情報を取得する。
【0066】
そして、制御部106は、通知された環境情報及び状態情報、並びに記憶部101から読み出した情報に基づいて、環境情報及び状態情報で示された各パラメータに対する統計値を導出する(ステップS706)。つまり、今回新たに検出された状態情報と環境情報、そして過去に検出された状態情報と環境情報とから統計値を導出する。なお、本実施の形態では、統計値を算出したが、ステップS705及びS706の処理を省略し、新たに検出された状態情報や環境情報を用いて、パラメータを導出しても良い。
【0067】
また、統計値を導出する場合に、記憶部101に格納されている、過去にアプリケーションプログラムを制御する際にロードされた通信制御情報(図6のステップS606)や、繰り返し行われる本処理手順において、過去にステップS706で導出された統計値を用いても良い。なお、各パラメータの導出するための計算手法については、周知を問わずあらゆる手法を用いて良いため、説明を省略する。
【0068】
その後、制御部106は、新たに検出された状態情報や環境情報、さらには算出された状態情報や環境情報の統計値を用いて、動作中のアプリケーションプログラムの通信を制御する通信制御情報を導出する(ステップS707)。この導出手順は、図6のステップS607とほぼ同様とするが、初期値導出の際に、統計値等を用いた重み付け等を行うことができる。
【0069】
そして、制御部106は、環境情報及び状態情報で示された各パラメータに対する統計値、及び導出された通信制御情報の登録を、登録・更新部105に対して指示する(ステップS708)。当該指示を受けて、登録・更新部105が、環境情報及び状態情報の統計値、及び導出された通信制御情報の対応関係を明確にして、記憶部101の制御情報に登録、更新する(ステップS709)。このとき、既に保存されている情報を更新するか、新たに追加するかどうか、もしく古い情報を削除するか否かといった保存の方針は、記憶部101の容量や必要とされる予測精度に依存する。
【0070】
その後、制御部106は、導出された通信制御情報を設定し、実行されているアプリケーションプログラムが要求する通信を制御する(ステップS710)。
【0071】
以上の処理手順で、アプリケーションプログラムが実行部107で動作している間の通信装置100が行う動作を示した。
【0072】
次に、通信装置100が、アプリケーションプログラムが終了する際の動作について述べる。通信装置100において、アプリケーションプログラムが終了する際、実行部107で実行していたアプリケーションの制御に使用していた通信制御情報を、動作中と同様に記憶部101に記録する処理を行う。この際、通信制御情報に含まれるパラメータによっては、アプリケーションプログラムが動作していた全期間に対する特徴的な値を算出するなどの処理を行ってもよい。例えば、全期間を通じての最小/平均/最大パケットサイズや平均スループット、平均バースト率などを算出することができる。
【0073】
以上が、通信装置100におけるアプリケーションプログラムの起動から終了までの一連の流れである。
【0074】
次に、通信装置100における初期値の導出過程について、詳細に述べる。図6の処理手順で示したように、初期値の導出は、記憶部101が記憶している制御情報と検出部109が検出したネットワークの状態情報、及び通信装置100の構成や周辺の環境情報に基づいて行われる。まずは、記憶部101が記憶している制御情報と、検出部109が検出する状態情報の例について説明する。
【0075】
まず、記憶部101が記憶する制御情報を以下に示す。
1)アプリケーション/通信相手/データごとのネットワークインターフェイスの種類
2)アプリケーション/通信相手/データごとの自ノードIPアドレス、サブネットマスク
3)アプリケーション/通信相手/データごとの平均送信スループット
4)アプリケーション/通信相手/データごとの平均受信スループット
5)アプリケーション/通信相手/データごとのTCP制御情報
【0076】
なお、TCP制御情報は、輻輳制御ウィンドウサイズ(cwnd)、受信ウィンドウサイズ(rwin)やTCP輻輳制御アルゴリズムと制御アルゴリズムの閾値(ssthresh)が含まれる。これにより、アプリケーションプログラムの制御を行うことが可能となる。
【0077】
本実施の形態では、情報IDとして‘a’〜‘f’の6種類の情報を定義する。以下に、‘a’〜‘f’に割り当てられた情報を示す。
a)ネットワークインターフェイス
b)自ノードIPアドレス
c)自ノードサブネットマスク
d)平均送信スループット
e)平均受信スループット
f)TCP輻輳制御情報
【0078】
また、コンテキストは、図3に示した形式として説明を省略する。さらに、環境情報取得部108が取得する環境情報としては、実行するプログラムを識別するプログラムIDや、ログインしているユーザのユーザID、さらにアプリケーションプログラムが使用するデータのデータ種類、さらにはプロトコル名、ポート番号などコンテキストに含まれる通信情報や、アプリケーションプログラムが必要とするプロセッサ使用量、メモリの使用量等とするが、以下においては、理解を容易にするため、説明を省略する。
【0079】
記憶部101において、アプリケーションプログラムA(Web Browser)と対応付けられている制御情報を、図8に示す。この図8に示す制御情報では、コンテキストは、CTX1、CTX2及びCTX3の3種類が設定されている。
【0080】
この3種類のコンテキストは、図9に示す詳細情報を保持している。つまり、CTX1は、プログラムIDとユーザ情報のみ設定されている。CTX2は、プログラムIDとユーザ情報及び通信情報が設定されている。CTX3は、プログラムIDとユーザ情報及び通信情報が設定されているが、当該通信情報はCTX2の通信情報と異なる。なお、全てのコンテキストについて、データ種類は記録されていない。また、本実施の形態においては、これらコンテキストの詳細情報は、環境情報取得部108が取得する環境情報から設定されるものとする。なお、このコンテキストは一例であり、他の形のコンテキストも使用されうる。
【0081】
上述したコンテキストの説明を考慮すると、図8に示された情報ID‘a’〜‘c’のコンテキストは、プログラムID及びユーザ情報のみ設定されている。そして、情報ID‘d’及び‘e’のコンテキストは、プログラムID及びユーザ情報、さらに通信情報も併せて設定されている。
【0082】
なお、図8及び図9で示した情報は、図2に示したように、アプリケーションプログラムA(Web Browser)と対応付けて記憶部101に記憶されている。
【0083】
そして、通信装置100が接続可能な、無線ネットワーク及び有線ネットワークのうち、無線ネットワークに接続しているものとする。
【0084】
一方、検出部109は、通信部104から次の状態情報を検出する。
A)接続インターフェイスの種別
B)インターフェイスに付与されたIPアドレス及びサブネットマスク
C)通信ごとの単位時間あたりの送信バイト数
D)通信ごとの単位時間あたりの受信バイト数
E)(ノード全体の)単位時間あたりの送信バイト数
F)(ノード全体の)単位時間あたりの受信バイト数
【0085】
なお、制御部106により導出され、アプリケーションプログラムに設定された後の実際の通信ごとのTCP制御情報を、検出部109が検出することにしてもよい。
【0086】
なお、検出部109は、環境情報取得部108の代わりに、通信を特定するために用いるプロトコル、IPアドレス、ポート番号などの、コンテキストを構成する詳細情報のうち、ネットワークに関する情報を検出しても良い。
【0087】
上述した制御情報を記憶部101が記憶し、上述した状態情報を検出部109が検出している場合に、初期値の導出処理について、再度図6を用いて説明する。なお、通信装置100において、ユーザがWebブラウザの起動を指示したものとする。
【0088】
この場合、制御部106は、Webブラウザの実行コードのロードを指示する(ステップS601)。これにより、記憶部101に記憶されたWebブラウザが、実行部107の作業領域にロードされる(ステップS602)。
【0089】
次に、制御部106は、環境情報取得部108が取得する環境情報を取得する(ステップS603)。取得する環境情報の例としては、コンテキストとして設定される、実行されているアプリケーションプログラムのプログラムID、ユーザ情報、通信情報(プロトコル、送信先のポート番号など)、データ種類とする。
【0090】
続いて、制御部106は、検出部109により検出された状態情報を取得する(ステップS604)。
【0091】
状態情報として、A)接続インターフェイスの種別として、無線LANインターフェイスを、B)インターフェイスに付与されたIPアドレスとして、IP2'とサブネットマスクとしてMASK2を、C)通信ごとの単位時間あたりの送信バイト数として、0バイトを、D)通信ごとの単位時間あたりの受信バイト数として0バイトを、E)(ノード全体の)単位時間あたりの送信バイト数として、0バイトを、F)(ノード全体の)単位時間あたりの受信バイト数は0バイトを、取得する。なお、IP2'はIP2からホストアドレスの部分が変化したものを表す。
【0092】
このあと、制御部106は、記憶部101から検索結果として、実行するアプリケーションの制御に適した通信制御情報のエントリを取得するが(ステップS606)、この取得手法は実装するアルゴリズムに依存する。本実施の形態にかかるアルゴリズムにおいては、記憶部101に記憶されたエントリのうち、ネットワークの状態情報に一致/不一致/類似性を有するエントリを検出し、続いて当該エントリに対応付けられたエントリが有する通信制御情報(通信パラメータ)と上述した状態情報の一致/不一致/類似性とに基づいて、実際にWebブラウザを制御する通信制御情報を導出する。本実施の形態では、まず、検出されるエントリとして、ネットワークインターフェイスとサブネットとを用いる。
【0093】
つまり、本実施の形態にかかる制御部106は、検出部109が検出した状態情報から、接続インターフェイスの種別が、無線LANインターフェイスであることから、記憶部101において、情報IDが‘a’(ネットワークインターフェイス)で、値に‘無線IF’が格納されているエントリを、検出する。なお、この際、環境情報取得部108が取得した環境情報に基づくコンテキストも条件として設定してもよい。
【0094】
本実施の形態では、制御部106は、図8に示す制御情報から、エントリ801を取得できる。そして、本実施の形態において、制御部106が状態情報の一致/不一致/類似性を判断するためには、IPアドレスとサブネットマスクの情報をさらに必要とする。
【0095】
このため、制御部106は、エントリ801に含まれるコンテキストと記録時刻とを、検索条件とした上で、記憶部101から、情報IDが‘b’(自ノードIPアドレス)のエントリと、情報IDが‘c’(自ノードサブネットマスク)のエントリと、を取得する。
【0096】
図8に示すエントリ801のコンテキストがCTX1、記録時刻がT2であることから、制御部106は、「情報ID=b、コンテキスト=CTX1、記録時刻=T2」と、「情報ID=c、コンテキスト=CTX1、記録時刻=T2」の条件に一致するエントリを取得する。結果として、エントリ802とエントリ803が取得できる。
【0097】
このように、制御部106は、「コンテキスト=CTX1、記録時刻=T2」を検索条件として記憶部101に検索を行うことで、現在のネットワークの状態情報と一致する、過去のネットワークの状態情報を取得できる。
【0098】
つまり、制御部106は、現在のネットワークの状態情報として、ネットワークインターフェイスの種別:無線IF、自ノードIPアドレス:IP2'、自ノードサブネットマスク:MASK2、導出したサブネット:IP2'/MASK2=NET2を取得している。
【0099】
そして、制御部106は、検出した過去のネットワークの状態情報として、ネットワークインターフェイスの種別:無線I/F、自ノードIPアドレス:IP2、自ノードサブネットマスク:MASK2、導出したサブネット:IP2/MASK2=NET2を取得している。
【0100】
これらの情報に基づいて、制御部106は、現在のネットワークの状態情報と、検出した過去のネットワークの状態情報とが一致していると判断する。なお、この時点で、両者の情報が異なっており、制御部106が、不一致と判断した場合には以降の処理は行わず、S607においてOSもしくはプロトコル仕様により規定された値を初期値として導出する。または、現在のネットワークの状態情報と、検出した過去のネットワークの状態情報との類似性に注目して、エントリの再取得を試みても良い。例えば、上述した制御部106が行う検出処理において、記録情報を検索条件に含めずにコンテキストだけで検索を行うようにしてもよい。
【0101】
制御部106が、状態情報が一致していると判断した場合、過去の状態情報の記録時刻T2を検索条件として、記憶部101から他のエントリを取得する。図8に示した記憶部101からは、エントリ804、805、806及び807が取得できる。
【0102】
この結果、制御部106は、各エントリのコンテキストから、Webブラウザを用いたTCPの通信を行ったこと、エントリ804から平均送信スループットが100kbpsであること、エントリ805から平均受信スループットが700kbpsであること、エントリ806及び807からTCPのパラメータがPARAM3、PARAM4で有ることを認識できる。
【0103】
これらエントリのうち、TCPのパラメータがPARAM3、PARAM4が、Webブラウザを制御するための通信制御情報に相当する。
【0104】
そして、制御部106は、取得したエントリに含まれるコンテキストと現在のネットワークの状態情報との間の一致/不一致/類似性を確認する。各エントリのコンテキストでは、アプリケーションとして「Web Browser(Webブラウザ)」が登録されているので、現在の状態情報と、アプリケーションは一致する。その他の各種エントリについても同様の判断を行うものとして、説明を省略する。なお、判断結果としては、各エントリ共に、現在の状態情報と一致する情報が含まれていると判断したものとする。
【0105】
なお、この時点で、制御部106が、現在の状態情報と一致せず適切なエントリではない判断した場合には以降の処理は行わず、S607においてOSもしくはプロトコル仕様により規定された値を初期値として導出する。または、類似性の判断を行った上で取得したエントリの値を利用しても良い。例えば、アプリケーションがWebブラウザで一致するが、通信相手のポート番号が一致しないという場合を考える。この場合は「Webブラウザが使用できる範囲の通信」という視点で類似性があると考えることができる。この判断によれば、取得したエントリを用いた処理が継続しても良い。この類似性の判断基準としては、アプリケーションが一致する場合、ユーザ情報が一致する場合、通信情報の一部が一致する場合、データ種類が一致する場合、及びこれらいくつかの組み合わせ等を設定すればよい。なお、どの組み合わせをどのような優先順位で判断条件として用いればよいのかは、設計事項であるため、説明を省略する。
【0106】
適切なエントリと判断した後、制御部106は、記憶部101から取得したエントリに含まれる通信制御情報が、現在のネットワーク環境で再現可能か否か判断する。具体的には、制御部106は、現在実行中の他のアプリケーションが使用するネットワークの帯域と、記憶部101から取得したWebブラウザが過去に使用したネットワークの帯域とに基づいて、現在起動しているWebブラウザに対して、過去と同様のネットワークの帯域を提供できるか否か判断する。なお、今回は無線ネットワークインターフェイスを用いていることから、無線インターフェイスの実効帯域も考慮する必要がある。
【0107】
もし、制御部106は、過去に使用された帯域が、現在Webブラウザに提供できる帯域を上回る場合、取得したTCPパラメータ(通信制御情報)はそのままの値では使用できないと判断する。この場合、制御部106は、過去のTCP制御情報PARM3と、PARM4に含まれる値を小さくして、インターフェイスの実効速度を超えないように調整し(例えばウィンドウサイズを半分にしたり、4分の3にするなどの調整を行い)、初期値を導出する(ステップS607)。なお、調節後の値を、PARM3’、PARM4’とする。
【0108】
そして、制御部106は、初期値として、調整した値(PARM3’、PARM4’)を、実行部107に対して設定する(ステップS608)。その後、実行部107が、Webブラウザを実行する(ステップS609)。
【0109】
以上、図6に示す処理手順において、Webブラウザを実行する場合における、初期値の導出手順の一例を示した。
【0110】
なお、上述した通信制御情報(例えばTCP制御パラメータ)の導出手順は、通信の開始時点に制限するものではなく、通信装置100のネットワークインターフェイスの変更や、通信装置100のネットワーク環境が変化するタイミングで実行しても良い。例えば、通信装置100において、無線インターフェイスから有線インターフェイスへの切り替えが発生した時には、有線インターフェイスを使用した時のエントリ(例えば記録時刻T1で記録されたエントリ)を用いて、通信制御情報を再導出できる。
【0111】
なお、上述した例では、通信制御情報として、TCPのパラメータについて説明したが、他のパラメータでも良い。例えば、ビデオ会議を行うアプリケーションであれば、通信制御情報として、ビデオ映像の解像度やビットレートを導出する(予想帯域が大きくなってしまう場合には、解像度やビットレートを小さくするなど)などが考えられる。
【0112】
他にも、検出部109がアプリケーションプログラムの送受信パケットサイズについて、単位サイズごとの出現頻度を検出し、検出した出現頻度を記憶部101に通信制御情報として記録することで、制御部106が、通信制御情報として取得した出現頻度に基づいて、適切な送受信間隔を実現するためにスケジューリング間隔を実行部107に対して設定することも考えられる。さらに、CPUと外部のパケット処理エンジンとを使い分け分ける閾値を通信制御情報として導出したり、QOSパラメータを通信制御情報として導出しても良い。
【0113】
また、制御部106が、通信制御情報から初期値を導出する処理手順として、記憶部101に通信制御情報として格納されている値を半分にしたり、4分の3にする例について説明した。しかしながら、このような導出手順に制限するものではなく、より解析的な調整を行っても良い。
【0114】
例えば、典型的な無線ネットワークモデルを内蔵し、電波状況とアプリケーションから予想されるスループットを算出するなどの処理を行っても良い。ただし、これらの処理により多量の電力を消費してしまっては本末転倒であるため、簡易なモデルに留めることが望まれる。
【0115】
次に、通信装置100における、統計値導出の手順について説明する。本実施の形態においては、記憶部101に適切なエントリを記憶させるために、通信装置100では、検出部109が検出した状態情報に基づいて、登録・更新部105が逐次更新を行う。なお逐次更新の対象となる情報は、実行部107のアプリケーションプログラムを制御する通信制御情報でも良いが、以下に示す例では記憶部101に保存されている状態情報を更新する場合について説明する。
【0116】
まず、統計値導出を行わない状態情報について説明する。検出部109が検出した状態情報をそのまま記憶させたい場合、登録・更新部105は、検出した状態情報に加工などの特別な処理を行わず、記憶部101に対して登録、更新を行う。特別な処理を行わない状態情報としては、例えば、ネットワークインターフェイス、当該インターフェイスに付与されているIPアドレスとサブネットマスク、送受信パケット数、キューのサイズ、プロセッサ使用量などが該当する。これらの情報は、過去の情報との間で何らかの演算を行うことなく保存できる。
【0117】
一方、何らかの加工処理が必要な状態情報も存在する。さらには、検出部109に検出された状態情報と、記憶部101にすでに記憶されていた過去の状態情報との間で、何らかの演算が必要な状態情報が存在する。これら状態情報については、記憶部101に記憶された状態情報を取得した後、制御部106が、取得した過去の状態情報と、検出された状態情報との間で演算処理を行い、統計値を導出した後、登録・更新部105が、記憶部101に対して導出した統計値の登録、更新を行う。
【0118】
例えば、統計値の導出が必要な状態情報として、送受信パケット数がある。この場合、制御部106は、検出した送受信パケットに対して、時間要素を考慮にいれて、平均送受信パケット数やバースト率などを導出する。
【0119】
また、記憶部101に送受信バイト数が記録されていれば、制御部106は、平均送受信スループット、最小スループット、及び最大スループットなどが算出できる。
【0120】
制御部106が、これらの値を算出するにあたり、記憶部101に保存された過去の監視値や統計値を利用してもよい。(図7のステップS705)。例えば、制御部106は、スループットを導出する場合、直前に保存された送受信バイト数を記憶部101から読み出し、カウンタ値との差分を求めてスループットを導出する。もし、記憶部101に過去の平均送受信スループットが記憶されていれば、当該値と通信開始からの経過時間を用いて平均送受信スループットを更新する。
【0121】
制御部106が、導出する統計値の種類については、実際に動作させるアプリケーションプログラムに依存する。例えば、遅延に敏感なリアルタイムアプリケーションであれば、制御部106が平均遅延やバースト率を導出し、これらの値を調節することで通信品質が向上するため、それらの値を導出することに意味がある。
【0122】
しかし、スループットについては平均値ではなく一時的な落ち込みに対して敏感に調節することが重要と考えられ、統計的なスループット情報にはメリットが少ないと考えられる。一方、バルク転送を行うアプリケーションであれば継続して高いスループットが維持されることが好ましいと考えられ、平均送受信スループットを導出するメリットがあると考えられる。このように、制御部106は、必要に応じて適切な統計値を導出する。
【0123】
本実施の形態にかかる通信装置100では、当該通信装置100及びアプリケーションの使用環境の取得や、ネットワークの接続状況を検出し、それら情報を、通信を制御するための通信制御情報及びアプリケーションと関連づけて記憶部101に記憶したため、類似した状況に遭遇した場合には過去に設定した通信制御情報に基づいて初期値を導出し、当該初期値で設定を行うことを可能とした。
【0124】
これにより、通信装置100は、アプリケーションプログラムを利用する際に、特別な処理を行うことなく、現在のネットワーク環境に適切した通信制御情報(例えば初期値)を導出し、当該通信制御情報でアプリケーションプログラムを制御することができるので、状況に応じた通信状態を維持できる。さらに、通信装置100においては、適切な通信状態を維持するために、特別な計算処理が不要なことから、計算処理負担を軽減すると共に、消費電力を削減することができる。
【0125】
また、従来は通信環境と関係ない初期値を設定した上で、通信環境に応じた制御を行って、適切なパラメータを導出した。これに対し、通信装置100では、上述した様に過去に最適なものとして設定したパラメータを初期値として設定したので、適切なパラメータにより速く到達することができる。さらには、適切なパラメータにすぐに到達することが可能となったため、処理演算の負荷を軽減すると共に、処理演算による電力消費を抑止することができる。
【0126】
(第2の実施の形態)
第2の実施の形態では、一つのアプリケーションプログラムが、複数種類のデータを扱う例について説明する。なお、第2の実施の形態にかかる通信装置は、第1の実施の形態の通信装置100と同様の構成を備えるものとして説明を省略する。
【0127】
第2の実施の形態にかかる通信装置100では、アプリケーションプログラムとして、第1の実施の形態と同様に、Webブラウザを利用した例について説明する。このWebブラウザが、通信部104による通信で得られた複数種類のデータを同時に使用する例とする。
【0128】
図10に、本実施の形態で仮定するアプリケーションプログラムの動作画面例を示す。ウィンドウ1001は、Webブラウザ全体のウィンドウを示している。第1の領域1002は、ウィンドウ1001内でリアルタイムに受信している動画データを表示する領域とする。第2の領域1003は、ウィンドウ1001内で動画ではない情報(例えば、テキストデータ又は静止画など)を表示する領域とする。
【0129】
上述した各領域の表示は、通信部104の通信により得られる、複数種類のデータの取得により実現される。この受信する複数種類のデータのうち、動画データの通信は、動画データはリアルタイムで表示する必要があるため、低遅延で安定した帯域を保証して、正確にデータを取得するように通信を行う必要がある。そして、複数種類のデータのうち、テキストデータや静止画データは、帯域が空いている時間帯に受信できればよい。
【0130】
このため、同一アプリケーションプログラムが実行する通信であっても、データの種類毎に通信の制御を異ならせる必要がある。そこで、本実施の形態にかかる通信装置100では、同一アプリケーションプログラムであっても、データの種類に応じて制御に用いる通信制御情報を異ならせることとした。具体的には、データ種類に応じて、コンテキストを異ならせることで、別エントリとして、記憶部101に記憶されることとした。
【0131】
図11に示すコンテキストにおいては、エントリ1101にデータ種類として“video/mpeg”を登録し、エントリ1102にデータ種類として“text/html”を登録した。これにより、実行部107により実行されたアプリケーションプログラムが行う通信の制御を、データ種類に応じて明確に区別することを可能とした。つまり、第1の領域1002で使用される動画データの通信制御に用いる通信制御情報を取得するには、エントリ1101のコンテキストを用い、第2の領域1003で使用されるHTMLファイルの通信制御に用いる通信制御情報を取得するには、エントリ1102のコンテキストを用いる。なお、通信制御情報を取得する際の処理については、第1の実施の形態と同様として説明を省略する。
【0132】
このようにして、第1の実施の形態と同様に、ユーザがWebブラウザの起動を指示した場合に、Webブラウザが受信するデータ種類毎の通信制御に対して、通信制御情報に基づく初期値が設定される。
【0133】
しかしながら、通信装置100において実行されたWebブラウザが、Webページに実際にアクセスするまで、受信するデータの種類が不明な場合も多い。例えば、図12の例で示したWebページも、全体を表すWebページとして単一のHTMLで記述されており、当該Webページの内部を動画データとテキストデータとの領域に分かれているものとする。
【0134】
本実施の形態にかかる通信装置100では、このような場合においても、データ種類毎の通信を適切に識別して制御することができる。まず、記憶部101には、図12に示す制御情報を記憶しているものとする。
【0135】
図12に示す状態情報において、情報IDを以下に示すものとする。なお、図12に示すコンテキストCTX1は、図11に示したエントリ1101に該当し、コンテキストCTX2は、図11に示したエントリ1102に該当するものとする。
【0136】
そして、図12で示された‘e’〜‘h’の情報IDは、以下に示す情報と定義されている。
e)平均受信スループット
f)TCP輻輳制御情報
g)受信側平均遅延
h)受信側ジッタ
【0137】
ところで、本実施の形態にかかる通信装置100においても、第1の実施の形態と同様に、アプリケーションプログラムが起動した場合に、ネットワーク環境に応じた通信制御情報を取得して、初期値を導出して、当該初期値を実行部107に対して設定するが、Webブラウザを起動した直後では、どのWebページにもアクセスしていないため、データの種類が特定できず、記憶部101に記憶されたエントリを取得できないことになり、初期値の設定ができない。
【0138】
このような場合に対応する手段としては、二つの手法が考えられる。まず第1の手法としては、データの種類に拘わらず、アプリケーションプログラムに関連するエントリを予め取得しておく手法がある。第2の手法としては、アプリケーションプログラムがデータの取得などの事象が発生したことをトリガーとして、取得したデータの種類がコンテキストとして設定された各エントリの取得を行う手法である。
【0139】
第1の手法を用いて、予めエントリを取得し、取得したエントリに基づいて、導出された初期値を設定するという実装にしたと仮定する。この場合、制御部106は、実行するアプリケーションプログラムと対応付けられている、データ種類全てのエントリに基づいて初期値の導出と、導出した初期値の設定とを行う。本実施の形態にかかる制御部106は、HTMLファイルがデータ種類として登録されているコンテキストを有するエントリの通信制御情報に基づいて初期値の導出と、導出した初期値の設定を行うと共に、MPEGビデオがデータ種類として登録されているコンテキストを有するエントリの通信制御情報に基づいて初期値の導出と、導出した初期値の設定を行う。なお、具体的な処理手順は第1の実施の形態と同様として説明を省略する。
【0140】
これにより、図10に示すような一つのアプリケーションプログラムで、複数種類のデータの通信を実行する場合に対応することが可能となる。また、複数種類のデータに基づく複数の通信に制限するものではなく、同一種類のデータについて複数の通信が必要な場合に、通信毎に異なる初期値を設定してもよい。このように、本実施の形態にかかる通信装置100においては、異なる性質を有する複数の通信を行う場合に、通信毎に異なる通信制御情報に基づいてパラメータ(例えば初期値)を設定して制御することができる。
【0141】
また、第2の手法を用いて、アプリケーションプログラムがデータの取得などの事象が発生したことをトリガーとして、取得したデータの種類がコンテキストとして設定された各エントリの取得を行う手法を実装したと仮定する。この場合、通信部104がHTMLファイルを受信し、次の通信要求を生成する段階で、受信したデータに対応するコンテキストを有するエントリが記憶部101に記憶されているか否か判断し、記憶されていると判断した場合に、当該エントリを取得し、当該エントリに含まれている通信制御情報に基づいて、通信設定を行えばよい。
【0142】
上述した実施の形態にかかる通信装置100では、アプリケーションプログラムが様々なデータを扱う場合に、当該データ毎の状態情報及び通信制御情報を記憶部101に記憶しておくことで、一つのアプリケーションプログラムで様々な通信が行われた場合に、当該通信毎に適切に初期値を導出し、通信制御を行うことができる。これにより、各通信制御において適切なパラメータに速やかに到達することができる。
【0143】
本実施の形態にかかる通信装置100では、第1の実施の形態で示した効果を有する他、一つのアプリケーションが複数の用途で用いられる場合であっても、用途毎に適切にパラメータを設定することができる。
【0144】
(第3の実施の形態)
第3の実施の形態では、複数ユーザが、通信装置100を使用する場合について説明する。
【0145】
図4に示したように、記憶部101が記憶するコンテキストには、ユーザ情報が含まれている。通信制御を行う際に、ログインしているユーザと一致するユーザ情報を含むエントリを取得することで、ユーザ毎に適した通信制御を行うことができる。
【0146】
これにより、一つの通信装置100を、複数のユーザで共有している場合に、ログインしているユーザ毎に適切な制御を行うことができる。つまり、複数のユーザが利用する場合に、同一の通信装置100であっても起動するアプリケーションプログラムと考えられる。ユーザに応じて複数の異なるアプリケーションプログラムを起動することも考えられる。この場合、同一のアプリケーションプログラムであっても、ユーザ毎に割り当てる帯域を変更する方が好ましい。このように一つのアプリケーションプログラムを、複数のユーザで使用する場合に、ユーザ毎に適切な制御を行うことが可能となる。
【0147】
また、通信装置100は、図13に示すようなネットワークシステムを構成する各装置に適用することができる。
【0148】
図13に示すネットワークシステムにおいては、ストレージ1301と、サーバ1302と、端末1303〜1305と、これらを接続するネットワーク1306とで構成されている。ストレージ1301に通信装置100を実現するためのプログラムが格納されている。
【0149】
そして、サーバ1302、又は端末1303〜1305が、ネットワーク1306介してストレージ1301に記憶されたプログラムを実行することで、上記各装置が通信装置100と同等の構成を備えることになる。
【0150】
サーバ1302が、ストレージ1301に記憶されたアプリケーションで、通信装置100と同等の構成を実現する例としては、端末1303〜1305がプログラムをサーバ1302上でのみ実行されるシンクライアントの場合が考えられる。本実施の形態にかかる端末1303〜1305は、シンクライアントでも、プログラムをストレージ1301からダウンロード可能なクライアントのどちらであってもよい。
【0151】
さらに、ストレージ1301には、サーバ1302又は端末1303〜1305が実行する各プログラムが、図2に示す形式又はそれに準ずる形式で記憶されている。そして、ストレージ1301に記憶されたアプリケーションプログラム及び制御情報は、必要に応じて、サーバ1302や、端末1303〜1305に送信される。送信されたアプリケーションプログラム及び制御情報は、サーバ1302や、端末1303〜1305の図2に示す形式で、サーバ1302や、端末1303〜1305が備える記憶装置(例えばRAM)等に展開される。
【0152】
この場合に、ストレージ1301に記憶されている制御情報のコンテキストには、ユーザ情報が設定されている。これにより、ユーザが、どの装置(通常のクライアント又はシンクライアントして機能する端末1303〜1305)を利用しても、ネットワーク状況と使用するユーザに適切な通信制御を行うことが可能となる。
【0153】
このようにストレージ1301で複数のユーザが使用するアプリケーションプログラム及び制御情報を記憶し、当該制御情報のコンテキストにおいてユーザ情報を保持することで、各装置(端末1303〜1305)のそれぞれについて多数のユーザが共有して使用する場合に、装置に拘わらず、ログインしているユーザに適した通信制御を行うことが可能となる。
【0154】
図14に、サーバ1302又は端末1303〜1305が備える記憶部101に格納された後のアプリケーションプログラム1401及び制御情報1402の例を示す。図14に示す記憶部101に格納された後の制御情報1402では、情報ID‘a’が設定されたエントリが格納されている。そして、図14に示す各エントリのコンテキストには、ユーザA〜ユーザCを識別する情報が設定されていることが確認できる。なお、図14に示すコンテキストの形式においては、実際の形式は図3で示した通りであるが、説明を容易にするためにユーザ情報に着目して記載した。
【0155】
このように、アプリケーションプログラムが同一且つ情報IDが同一であっても、ユーザ毎に異なる値を保持させることができる。これにより、例えば、WebブラウザをWebメールを利用する目的で、端末1303〜1305のいずれかを利用するユーザAについては、平均受信スループットとして500kbpsという値が保存される。一方、端末1303〜1305のいずれかの端末で、動画を視聴する目的でWebブラウザを起動するユーザBについては、平均受信スループットとして3Mbpsという値が保存される。
【0156】
このとき、あるユーザはWebブラウザをWebメールサーバにアクセスするために利用することが多く、別のユーザは動画配信サーバにアクセスして動画を視聴するために利用することが多いと考えられる。つまり、ユーザ毎に適切な状態情報及び制御情報を記憶することができる。
【0157】
本実施の形態にかかる環境情報取得部108は、実際にアプリケーションプログラムを起動したユーザを示すユーザ情報を特定し、ストレージ1301がユーザの過去の使用状況を蓄積している。なお、蓄積手順については、記憶部101がストレージ1301に変更された他は、第1の実施の形態と同様として説明を省略する。
【0158】
また、端末1303〜1305がシンクライアントの場合、ユーザが任意の端末を使用した場合に、サーバ1302が、ユーザを識別するユーザ情報を特定し、当該ユーザ情報が含まれるコンテキストを有するエントリを、ストレージ1301から取得する。なお、ユーザ情報の特定手法は、いずれの手法でも良く、各端末1303〜1305のログイン認証時のユーザ情報を用いても良い。そして、取得したエントリから、ユーザに適した初期値の導出が可能となる。
【0159】
また、該アプリケーションプログラムを実行部107で実行している間にも、検出部109にてネットワークにおける動作傾向を示す情報を検出する。そして、制御部106が統計処理を施すことにより、特定のユーザの使用傾向を導出できる。さらに、導出した使用傾向をストレージ1301にアプリケーションプログラムと関連づけて記憶することで、次回の動作に備えることができる。
【0160】
この初期値導出過程および使用傾向の導出過程は、図6ならびに図7で述べた過程に準ずる。ただし、第1の実施の形態の詳細な説明で述べた過程とは細部が異なるため、補足する。
【0161】
第1の実施の形態においては一例として、ネットワークの状態情報の一致/不一致/類似性に基づいてエントリを取得し、当該エントリと関連付けられた通信に用いる制御情報の一致/不一致/類似性を判断して、初期値を導出すると説明した。これに対して、本実施の形態では、エントリを取得する際に、ユーザ情報を最高優先度で判断するように実装しても良い。こうすることでユーザ指向のパラメータ調整を確実に実行できるようになる。
【0162】
逆に、コンテキストに含まれるユーザ情報が異なっても他の情報が類似する場合、当該コンテキストを有するエントリを取得し、当該エントリの制御情報に基づいて、初期値を導出しても良い。例えば、ユーザAがWebブラウザを使った情報はストレージ1301に記憶されているが、ユーザCがWebブラウザを使った時の情報はストレージ1301に記憶されていないとする。その場合、ユーザAが設定されたエントリを用いて、ユーザCの初期値を導出しても良い。
【0163】
本実施の形態よれば、ユーザ情報を用いて、ストレージ1301に記憶されている制御情報から、適切なエントリを取得し、当該エントリに従ってパラメータの調整を行うこととしたため、一つのアプリケーションを複数のユーザで使用する場合であっても、適切にパラメータを調節することができる。特に、複数の端末を備えるネットワークシステムにおいて、ユーザがどの端末を使用しても、ユーザに適した通信制御を行うことが可能となる。
【0164】
本実施の形態の通信装置100は、図15に示すように、CPU1501と、ROM(Read Only Memory)1502と、RAM1503と、HDD1504、有線ネットワークI/F103と、無線ネットワークI/F102と、これらを接続するバス1505と、を備えており、通常のコンピュータを利用したハードウェア構成となっている。
【0165】
HDD1504は、記憶部101に相当する。さらに検出部109が検出を行うための専用ハードウェアを備えても良い。また、制御部106や実行部107は、OS(オペレーティング システム)で実現しても良い。また、実行部107が利用する作業領域等は、RAM1503上に作成される。
【0166】
本実施の形態の通信装置100で実行される通信プログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【0167】
また、本実施の形態の通信装置100で実行される通信プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施形態の通信装置100で実行される通信プログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【0168】
また、本実施形態の通信装置100で実行される通信プログラムを、ROM1502等に予め組み込んで提供するように構成してもよい。
【0169】
本実施の形態の通信装置100で実行される通信プログラムは、上述した各部(通信部、登録・更新部、制御部、実行部、環境情報取得部、検出部)を含むモジュール構成となっており、実際のハードウェアとしてはCPU1501が上記記憶媒体から通信プログラムを読み出して実行することにより上記各部が、主記憶装置となるRAM1503上にロードされ、通信部、登録・更新部、制御部、実行部、環境情報取得部、検出部がRAM1503上に生成されるようになっている。
【図面の簡単な説明】
【0170】
【図1】第1の実施の形態にかかる通信装置の構成を示すブロック図である。
【図2】記憶部が記憶している情報を表した概念図である。
【図3】記憶部が記憶する制御情報のテーブル構造を示した図である。
【図4】制御情報が有するコンテキストの詳細情報の第1の例を示した図である。
【図5】制御情報が有するコンテキストの詳細情報の第2の例を示した図である。
【図6】第1の実施の形態にかかる通信装置のアプリケーションプログラムの実行手順を示すフローチャートである。
【図7】第1の実施の形態にかかる通信装置のアプリケーションプログラムが実行されている間に行われる制御手順を示すフローチャートである。
【図8】記憶部において、アプリケーションプログラムAと対応付けられている制御情報の例を示した図である。
【図9】アプリケーションプログラムAと対応付けられている制御情報に格納されているコンテキストの例を示した図である。
【図10】第2の実施の形態で仮定するアプリケーションプログラムの動作画面例を示す図である。
【図11】制御情報が有するコンテキストの詳細情報の第1の例を示した図である。
【図12】第2の実施の形態にかかる記憶部が記憶する制御情報の例を示した図である。
【図13】第3の実施の形態にかかるネットワークシステムを構成を示す図である。
【図14】サーバ又は端末が備える記憶部に格納された後のアプリケーションプログラム及び制御情報の例を示す図である。
【図15】通信装置のハードウェア構成を示した図である。
【符号の説明】
【0171】
100 通信装置
101 記憶部
102 無線ネットワークI/F
103 有線ネットワークI/F
104 通信部
105 登録・更新部
106 制御部
107 実行部
108 環境情報取得部
109 検出部
111 検出部
150 サーバ
1301 ストレージ
1302 サーバ
1303〜1305 端末
1306 ネットワーク
1501 CPU
1502 ROM
1503 RAM
1504 HDD
1505 バス

【特許請求の範囲】
【請求項1】
ネットワークを介して通信制御を行う通信部と、
前記通信部に対して通信を要求するアプリケーションを実行する実行部と、
前記通信部が用いるネットワーク状態を示す状態情報を検出する検出部と、
ネットワーク状態を示す状態情報と、前記アプリケーションが前記通信部に対して要求する通信について当該ネットワーク状態に適した制御を行う通信制御情報と、を対応づけて記憶する記憶部と、
前記検出部により検出された前記状態情報と、前記記憶部で対応づけられた前記通信制御情報に基づいて、前記アプリケーションが前記通信部に対して要求する通信を制御する制御部と、
を備えることを特徴とする通信装置。
【請求項2】
前記制御部は、さらに、前記検出部により検出された前記ネットワーク状態に基づいて、前記アプリケーションが前記通信部に対して要求する通信を制御し、
前記検出部により検出された前記状態情報と、前記制御部が行った通信の制御を示す通信制御情報とを対応づけて、前記記憶部に登録する登録部を、
さらに備えることを特徴とする請求項1に記載の通信装置。
【請求項3】
前記制御部は、前記実行部により前記アプリケーションが実行される前に、前記検出部に検出された前記状態情報と、前記記憶部で対応付けられた前記制御情報に基づいて、前記アプリケーションが要求する通信を制御するための初期値を設定すること、
を特徴とする請求項1又は2に記載の通信装置。
【請求項4】
前記ネットワーク状態においてアプリケーションが実行されている環境を識別する環境情報を取得する環境情報取得部をさらに備え、
前記記憶部は、さらに、前記環境情報を対応づけて記憶し、
前記制御部は、さらに、前記環境情報取得部が取得した前記環境情報と対応づけられた、前記通信制御情報に基づいて、前記アプリケーションが要求する通信を制御すること、
を特徴とする請求項1乃至3のいずれか一つに記載の通信装置。
【請求項5】
前記環境情報取得部は、前記環境情報として、前記アプリケーションの実行ユーザ、プロトコル、ポート番号、受信先IPアドレス・ポート番号、アプリケーションデータの種類、処理負荷、及びメモリ使用量のいずれか一つ以上の組み合わせを取得すること、
を特徴とする請求項4に記載の通信装置。
【請求項6】
前記検出部は、前記ネットワーク状態として、使用するネットワークインターフェイス、送信元IPアドレス、送信先ポート番号、送信データ量、スループット、許容遅延、許容ジッタ、のいずれか一つ以上を検出すること、
を特徴とする請求項4又は5に記載の通信装置。
【請求項7】
前記制御部は、前記通信制御情報として、輻輳制御ウィンドウサイズ、受信ウィンドウサイズ、TCP輻輳制御アルゴリズム及び制御アルゴリズムの閾値を用いて通信の制御を行うこと、
を特徴とする請求項1乃至6のいずれか一つに記載の通信装置。
【請求項8】
通信装置で実行される通信方法であって、
前記通信装置は、ネットワーク状態を示す状態情報と、前記アプリケーションが前記通信部に対して要求する通信について当該ネットワーク状態に適した制御を行う通信制御情報と、を対応づけて記憶する記憶部を備え、
通信部が、ネットワークを介して通信制御を行う通信ステップと、
実行部が、前記通信部に対して通信を要求するアプリケーションを実行する実行ステップと、
検出部が、前記通信部が用いるネットワーク状態を示す前記状態情報を検出する検出ステップと、
前記検出ステップにより検出された前記状態情報と、前記記憶部で対応づけられた前記通信制御情報に基づいて、前記アプリケーションが前記通信部に対して要求する通信を制御する制御ステップと、
を有することを特徴とする通信方法。
【請求項9】
コンピュータが、ネットワーク状態を示す状態情報と、前記アプリケーションが前記通信部に対して要求する通信について当該ネットワーク状態に適した制御を行う通信制御情報と、を対応づけて記憶する記憶部を備え、
ネットワークを介して通信制御を行う通信ステップと、
前記通信部に対して通信を要求するアプリケーションを実行する実行ステップと、
前記通信部が用いるネットワーク状態を示す前記状態情報を検出する検出ステップと、
前記検出ステップにより検出された前記状態情報と、前記記憶部で対応づけられた前記通信制御情報に基づいて、前記アプリケーションが前記通信部に対して要求する通信を制御する制御ステップと、
をコンピュータに実行させるための通信プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate


【公開番号】特開2010−74279(P2010−74279A)
【公開日】平成22年4月2日(2010.4.2)
【国際特許分類】
【出願番号】特願2008−236823(P2008−236823)
【出願日】平成20年9月16日(2008.9.16)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】