【国等の委託研究の成果に係る記載事項】(出願人による申告)平成22年度、総務省、クラウドサービスを支える高信頼・省電力ネットワーク制御技術の研究開発事業、産業技術力強化法第19条の適用を受ける特許出願
【文献】
佐野香,Starting&Closing Standby Pages方式によるオンライン定期試験,情報処理学会研究報告,日本,社団法人情報処理学会,2003年10月17日,第2003巻,第103号,p.43−49
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0018】
本発明の実施の形態について図面を参照しながら説明する。本発明の実施の形態に係る情報処理システムは、
図1に例示するように、情報処理装置1と、端末2と、サーバ装置3とを含んで構成されている。この情報処理システムにおいては少なくとも一つの情報処理装置1が含まれる。また
図1ではサーバ装置3は一つだけ図示しているが、サーバ装置3は複数あってもよい。
【0019】
情報処理装置1は、例えば無線LANのアクセスポイントとして動作する装置であり、制御部11、記憶部12、無線通信部13、有線通信部14を含んで構成される。またサーバ装置3は、制御部31、記憶部32、有線通信部34を含んで構成される。情報処理装置1の制御部11は、CPU等のプログラム制御デバイスであり、記憶部12に格納されたプログラムに従って動作する。本実施の形態の制御部11は、端末2からいずれかのサーバ装置3宛に送信するべきデータを、無線通信部13を介して受信する。そして制御部11は当該受信したデータを記憶部12に確保したキャッシュ用の領域に保持する。制御部11は、データを保持させてから、予め定められたタイミングまで待機し、当該タイミングが到来したときに、保持されているデータを、宛先として指定されているサーバ装置3宛に、有線通信部14を介して送信するよう制御する。すなわち、本実施の形態の制御部11は、受信手段及び送信制御手段として機能する。これらの情報処理装置1の具体的動作については、後に述べる。
【0020】
記憶部12は、メモリデバイスやディスクデバイスを含む。この記憶部12は、制御部11によって実行されるプログラムを格納している。このプログラムは、DVD−ROM(Digital Versatile Disc Read Only Memory)等のコンピュータ可読な記録媒体に格納されて提供され、この記憶部12に複写されたものであってよい。また本実施の形態では、この記憶部12が、送信の対象となるデータを保持する保持手段として機能する。さらに記憶部12は、制御部11のワークメモリとしても動作する。
【0021】
無線通信部13は、無線LANインタフェースであり、802.11nなどの予め定めたプロトコルにて、端末2との間で種々のデータを授受する。この無線通信部13は、制御部11から入力される指示に従って、端末2に対して制御部11が指示するデータを送信する。また、この無線通信部13は、端末2を介して受信したデータを制御部11に対して出力する。有線通信部14は、有線LANインタフェースであり、インターネット等の情報通信回線を介してサーバ装置3と通信可能に接続されている。この有線通信部14は、制御部11から入力される指示に従って、宛先となったインターネット上の送信先に対して制御部11が指示するデータを送信する。また、この有線通信部14は、インターネットを介して受信したデータを制御部11に対して出力する。
【0022】
端末2は、例えば携帯電話機やスマートフォン等の情報通信端末であり、情報処理装置1との間で無線にてデータを授受する。本実施の形態では、情報処理装置1が備える無線LANインタフェースを介してデータを授受するものとするが、本実施の形態はこれに限らず、例えば携帯電話通信網の基地局として動作する情報処理装置1に対し、IMT2000等の移動体通信プロトコルを利用してデータを送信するものであってもよい。また、無線WANを介してデータを授受するものであってもよい。
【0023】
サーバ装置3の制御部31は、CPU等のプログラム制御デバイスであり、記憶部32に格納されたプログラムに従って動作する。この制御部31は、情報処理装置1から有線通信部34を介してデータを受信し、記憶部32に格納する。また、有線通信部34を介して、記憶部32に格納されているデータの提供要求を受信する。制御部31は、当該提供要求に応答して、要求されたデータを記憶部32から読み出し、当該読出したデータを要求元宛に送出する。さらにこの制御部31は、有線通信部31から受信する指示に従い、記憶部32に格納したデータを検索し、検索の結果を指示元へ送信する処理を行ってもよい。
【0024】
記憶部32は、メモリデバイスやディスクデバイス等を含み、制御部31によって実行されるプログラムを保持している。このプログラムも、DVD−ROM等のコンピュータ可読な記録媒体に格納されて提供され、この記憶部32に複写されたものであってよい。
【0025】
有線通信部34は、有線LANインタフェースであり、インターネット等の情報通信回線を介して情報処理装置1と通信可能に接続されている。この有線通信部34は、制御部31から入力される指示に従って、宛先となったインターネット上の送信先に対して制御部31が指示するデータを送信する。また、この有線通信部34は、インターネットを介して受信したデータを制御部31に対して出力する。
【0026】
ここで本実施の形態の制御部11の動作例について説明する。本実施の形態の制御部11は、Linux(登録商標)等のマルチタスク・オペレーティングシステム(OS)を動作させている。そしてこのOSの管理下において、次の各処理を実行している。すなわち制御部11は、端末2からサーバ装置3宛のデータを受信する。ここで端末2からのデータは、TCP/IP(Transmission Control Protocol/Internet Protocol)通信によって送出され、パケットに分割されて受信される。また本実施の形態の制御部11は、例えば動画データであれば、当該動画データの全体(サーバ装置3にて保持されるべき一体のデータ単位)を端末2から受信する。
【0027】
つまり、端末2は情報処理装置1に対してTCP−SYN(通信開始)の信号を送出し、情報処理装置1がこれに対してACK(了解)を返答する。すると端末2が例えばHTTPのPOSTメソッド等によってデータを情報処理装置1側へアップロードする。データの全体がアップロードされ、情報処理装置1が正常に受信したこと(HTTP 200(OK)など)を端末2側に通知すると、端末2はTCP−FIN(通信終了)の信号を送信し、情報処理装置1もまた、TCP−FIN(通信終了)の信号を返信する。ここまでの間に情報処理装置1はサーバ装置3への通信を開始しない。
【0028】
ここで端末2からアップロードされたデータは、サーバ装置3のURL(Uniform Resource Locator)宛のデータとして情報処理装置1によって受信される。情報処理装置1の制御部11は、この受信したデータを、その宛先となったサーバ装置3を特定する情報(サーバ装置3のURLでよい)に関連付けて、記憶部12に保持させる処理を実行している。また制御部11は、これとは並行して
図2に例示する処理を実行している。この
図2に例示する処理では、まず予め定められたタイミングが到来したか否かを調べる(S1)。
【0029】
ここでタイミングは、例えば時間帯を定めたものであってもよい。一例として地方時で深夜2時から5時が定められていてもよい。この場合、制御部11は、図示しないカレンダーIC等で計時している時刻(現在時刻と呼ぶ)の情報を参照し、当該時間帯であるか否かを判断することによって、予め定められたタイミングが到来したか否かを調べることとなる。
【0030】
そして処理S1において、当該タイミングが到来したと判断すると(Yesであると)、制御部11は、記憶部12に保持しているデータを読み出して(S2)、有線通信部34を介して、読出したデータに関連付けて記録されている情報で特定される、サーバ装置3宛に送信する(S3)。この送信処理は、記憶部12に保持されているデータを例えばパケット単位で、ネットワークのスループットにより徐々に送信するものであり、具体的には
図2にてループで示す通り、処理S2とS3とを繰返し、送信するべきデータがなくなるまで実行することによって行われる。
【0031】
ここでも情報処理装置1とサーバ装置3との間はTCP/IP通信が行われる。つまり、情報処理装置1は上記タイミングが到来すると、サーバ装置3に対してTCP−SYN(通信開始)の信号を送出する。サーバ装置3がこれに対してACK(了解)を返答すると、情報処理装置1は、例えばHTTPのPOSTメソッド等によってデータをサーバ装置3側へアップロードする。データの全体がアップロードされ、サーバ装置3が正常に受信したこと(HTTP 200(OK)など)を情報処理装置1側に通知すると、情報処理装置1はTCP−FIN(通信終了)の信号を送信し、サーバ装置3もまた、TCP−FIN(通信終了)の信号を返信する。これによりサーバ装置3へのアップロードが完了する。
【0032】
なお、HTTPによってアップロードを行う場合、情報処理装置1は、端末2からデータのアップロードを受け入れたときに、予めサーバ装置3との間でセッションを開始しておいてもよい。この場合、情報処理装置1はTCP−SYNをサーバ装置3へ送出し、これに対してサーバ装置3からACKが返答されたときに、HTTPのPOSTメソッドにより、任意の情報(アップロードの対象となるデータより短いデータ)をサーバ装置3宛に送信する。サーバ装置3は、これにより例えばHTTP 202(ACCEPTED)のデータを返信する。このとき、この返信されたデータにはセッション識別情報(セッションID)が含まれている。情報処理装置1は、このセッション識別情報を記憶しておき、一旦、TCP−FINをサーバ装置3に送信して、通信を終了しておく。その後、送信の対象となるデータをアップロードする際には、HTTPのPOSTメソッドを送出する際に、このセッションIDを含めてリクエストを送信することとしてもよい。
【0033】
具体的にタイミングを時間帯で定める場合、制御部11が、現在時刻が当該予め定められた時間帯に含まれると判断すると、端末2から受信して保持していたデータの送信を開始することとなる。また処理S1において、予め定められたタイミングが到来していないと判断すると(Noであると)、制御部11は処理S1を繰返し実行する。
【0034】
なお、ここではタイミングが単に時間帯によって定められる例について述べたが、本実施の形態はこれに限られない。例えば、このタイミングは、
図3に例示するように、サーバ装置3ごとにそれぞれ個別に時間帯が設定されて、サーバ装置3を特定する情報と、当該サーバ装置3へデータを送信するタイミングを表す時間帯の情報とが互いに関連付けられて設定テーブルデータとして記憶部12に格納されたものであってもよい。また時間ではなく、ネットワークの実績のスループットによって定められてもよい。
【0035】
サーバ装置3ごとに個別に時間帯が定められる場合は、制御部11は、現在時刻の属する時間帯が設定テーブルデータに記録されているか否かを調べることになる。そして、現在時刻の属する時間帯が設定テーブルデータに記録されていれば、制御部11は、当該時間帯の情報に関連付けられた情報で特定されるサーバ装置3宛のデータを選択的に記憶部12から読み出して、当該読出したデータを、宛先となったサーバ装置3に対して送信する。なお、このサーバ装置3ごとの時間帯の情報は、サーバ装置3が送信し、制御部11がサーバ装置3から受信して記憶部12の設定テーブルデータに記録したものであってもよい。
【0036】
またスループットによって定められる場合、制御部11は、記憶部12に保持した各データのそれぞれの宛先となっているサーバ装置3に対して、例えばpingパケットなどを送出し、その結果として得られるラウンドトリップタイム(RTT)の情報等を参照し、RTTが予め定めた値を下回る場合に、当該pingパケットの送出先となったサーバ装置3に対してのデータの送信のタイミングが到来したと判断し、当該サーバ装置3宛のデータを選択的に記憶部12から読み出して、当該読出したデータを、宛先となったサーバ装置3に対して送信するようにしてもよい。
【0037】
さらに別のタイミングの例については後述するが、本実施の形態の一例に係る情報処理システムは、このような構成を備えてなり、次のように動作する。
【0038】
端末2がサーバ装置3宛のデータ(動画データ等)を、無線にて情報処理装置1へ送信する。ネットワークは、その設定にも依存するが、一般的には不等コスト負荷分散が行われている。不等コスト負荷分散では、ネットワーク上の経路の距離(コスト)に反比例して、通信の帯域幅が決定される。すなわち距離が増大するほど帯域幅は狭くなり、通信速度は低下する。
【0039】
ここで端末2と情報処理装置1とは無線LAN通信回線を介して直接的に通信を行っているので、経路のコストは小さく、サーバ装置3への通信よりも比較的高速な通信を行うことが可能となっている。つまり、端末2はサーバ装置3宛に直接データを送信するよりも短時間で、情報処理装置1へのデータ送信を完了できる。
【0040】
情報処理装置1は、端末2から受信したデータを、その宛先であるサーバ装置3を特定する情報に関連付けて保持する。例えば受信したデータが動画データであれば、情報処理装置1は、当該動画データの全体を受信する。そして予め定めたタイミングが到来したか否かを調べる。ここでは上述のように、タイミングが時間帯によって定められているものとすると、情報処理装置1は、現在時刻(図示しないカレンダーIC(内蔵)によって計時しているものとする)が、当該定められた時間帯に含まれるか否かを判断する。そして、現在時刻が定められた時間帯に含まれない場合は、データの送信を行わないよう制御する。
【0041】
なお、このようにデータがサーバ装置3に送信されていない段階で、端末2の利用者から、サーバ装置3に送信したデータの要求を受けると、情報処理装置1は、要求されたデータを記憶部12から読み出して、要求元の端末2へ送信することとしてもよい。
【0042】
やがて、現在時刻が定められた時間帯に含まれることとなると、端末2から受信して保持しているデータを読み出す。そして、当該読出したデータに関連付けられている情報で特定されるサーバ装置3宛に、当該読出したデータを送信するよう制御する。このサーバ装置3宛の送信は、端末2と情報処理装置1との間よりもコストの大きい経路を経由するので、端末2と情報処理装置1との間の通信よりも一般に遅い速度で行われる。
【0043】
サーバ装置3は、情報処理装置1からデータを受信して、当該データを蓄積して保持する。以後、ネットワークを介して、当該蓄積して保持したデータの提供要求を受けたサーバ装置3は、当該要求されたデータを要求元へ送信することとなる。
【0044】
ここで、送信のタイミングの別の例について説明する。この例では、情報処理装置1の制御部11は、端末2から受信したデータを、宛先となるサーバ装置3を特定する情報に関連付けて保持させた後、当該データの宛先となるサーバ装置3に対し、送信対象となるデータがある旨を表す通知を送信する。制御部11はまた、当該サーバ装置3からデータを送信するべきタイミングの指示を受け入れる。この指示は、例えば「X秒後」、「X時以降」等といった相対的な情報(現在時刻からの差の情報)ないし絶対的な情報(時刻を特定する情報)によって行われる。
【0045】
制御部11は、この指示されたタイミングが到来するまで待機し、当該タイミングが到来すると、記憶部12に保持しているデータを、サーバ装置3へ送信するよう制御する。
【0046】
この例では、サーバ装置3がデータを受け入れるタイミングを主体的に決定できる。つまり、サーバ装置3の制御部31は、情報処理装置1から送信の対象となるデータがある旨の通知を受信する通知受信手段として機能する。また制御部31は、当該通知を受け入れると、データの受け入れ処理を行うべきタイミングを推定する推定手段、並びに、当該推定したタイミングを、データを送信するべきタイミングとして情報処理装置1に通知する手段としても機能する。
【0047】
次にこの例による情報処理システムの動作について説明する。この例では
図4に例示するように、情報処理装置1が端末2からサーバ装置3宛のデータを当該データ単位で(つまりデータ全体を)受信すると(S11)、情報処理装置1は、この受信したデータを、その宛先となったサーバ装置3を特定する情報(サーバ装置3のURLでよい)に関連付けて、記憶部12に保持させる(S12)。
【0048】
情報処理装置1は、当該データの宛先となるサーバ装置3に対し、送信対象となるデータがある旨を表す通知を送信する(S13)。サーバ装置3は、この通知を受け入れると、データの受け入れ処理を行うべきタイミングを推定する(S14)。
【0049】
この推定は、例えば次のようにして行う。具体的な例としてサーバ装置3が、処理負荷がいつでも略一定となるよう制御する(平滑化する)ことを考える。すなわちサーバ装置3は、複数の送信元から時分割的にデータを受信している。このときサーバ装置3は、処理の時点で受信しているデータの送信元の数を調べ、この数が予め定めたしきい値を超えているか否かを調べる。そしてしきい値を超えていなければ、データの受け入れ処理を直ちに行うことができると判断して、データの受け入れ処理を行うべきタイミングを、「現在(0秒後)」と推定する。
【0050】
また、しきい値を超えている場合は、サーバ装置3は、処理の時点での各送信元から受信しているデータについて、それぞれの受信されるデータのサイズの情報A(送信元から受け入れておく)と、この推定の処理の時点までに既に受信しているデータのサイズの情報Dと、単位時間Δtあたりのデータ受信量(スループット)の情報vとから、各送信元からのデータの送信完了時刻を、現在時刻よりT=(v/(A−D))×Δtだけ後と推定する。そこで本実施の形態のある例では、サーバ装置3は、処理の時点で受信しているデータの送信元のそれぞれについて、データの送信完了時刻を上記の方法で推定する。そして各送信元のうち、もっとも早い送信完了時刻の情報(「T秒後」とする情報)を、データの受け入れ処理を行うべきタイミングとして推定する。
【0051】
サーバ装置3は、ここで推定したタイミングの情報を、情報処理装置1へ送信する(S15)。情報処理装置1は、受信したタイミングの情報(「X秒後」との情報)に現在時刻(図示しないカレンダーIC等で計時しておく)を加算して、送信するべきタイミングの情報を算出して得る。そして情報処理装置1は、この算出したタイミングの情報を、処理S12で保持させたデータに関連付けて記録する(S16)。
【0052】
また、情報処理装置1は、この処理と並行して、次の
図5に例示する処理を実行している。すなわち情報処理装置1は、記憶部12に保持されている、各データに関連付けられているタイミングの情報のうち、到来しているタイミングがあるか否かを調べる(S21)。
【0053】
ここでのタイミングは、既に述べたように時刻を表す情報となっているので、情報処理装置1は、現在時刻より前となっている時刻の情報に関連付けられたデータを記憶部12に保持したデータのうちから検索することになる。
【0054】
そして情報処理装置1は、処理S21において、送信するべきタイミングが到来しているデータがあると判断すると(Yesであると)、記憶部12に保持している当該データを読み出して(S22)、有線通信部34を介して、読出したデータに関連付けて記録されている情報で特定される、サーバ装置3宛に送信する(S23)。この送信処理は、記憶部12に保持されているデータを、例えばパケット単位で、ネットワークのスループットにより徐々に送信するものである。つまり、
図5にてループで示す通り、処理S22とS23とを繰返し、送信するべきデータがなくなるまで実行することによって行われる。また処理S21において、送信するべきタイミングが到来しているデータがないと(Noであると)、情報処理装置1は、処理S21を繰返し実行する。
【0055】
この例によると、データの送信元が予め定めた数より少ない場合は、サーバ装置3は直ちに情報処理装置1からのデータの送信を受け入れることとなる。またデータの送信元が予め定めた数より多い場合、サーバ装置3は、送信元の一つからの送信が終る時点を推定し、その時点以降に送信を開始するよう、情報処理装置1に求めることとなる。
【0056】
さらにここまでの例に限らず、本実施の形態の情報処理装置1は、端末2の利用者によって、または送信の対象となるデータによって、あるいはこれらの組み合せによって、上述の処理を行うか否かを異ならせてもよい。例えば情報処理装置1は、無線通信部13を介して通信可能に接続されている各端末2の利用者を認証する。この認証は予め設定された利用者名とパスワードとの組が入力されたか否かによって行うなど、広く知られた方法を利用できる。
【0057】
そして情報処理装置1の制御部11は、認証に成功した利用者の端末2からサーバ装置3宛のデータ(データ全体)が受信されると、ここまでに説明した処理を実行し、受信したデータを記憶部12に保持して、定められたタイミングが到来するまで待機し、定められたタイミングが到来すると、当該保持したデータを宛先となるサーバ装置3へ送信する。また、認証を経ていない、または認証に失敗した利用者の端末2からサーバ装置3宛のデータが受信されると、制御部11は、当該端末2からデータを例えばパケットごとに受信し、当該受信したデータをそのまま有線通信部14を介してサーバ装置3へ送信する。サーバ装置3では、情報処理装置1から受信されるデータを受け入れて、蓄積して保持する。
【0058】
この例によると、認証された利用者は、その端末2からサーバ装置3宛のデータを送信すると、情報処理装置1がそのデータの全体をデータ単位で一旦保持し、後にサーバ装置3へ送信することとなるので、既に述べたように端末2の通信は比較的短時間に完了する。一方、認証されていない利用者に対しては、情報処理装置1は単にサーバ装置3への中継(ブリッジ)を行う装置としてしか機能しない。このためデータがパケット単位でサーバ装置3に伝送されていくこととなって、情報処理装置1とサーバ装置3との間の通信速度(比較的低速)に影響され、端末2の通信は、完了までに比較的長時間を要することとなる。
【0059】
また本実施の形態の別の例では、利用者ではなく、例えばデータの種類に応じて処理を異ならせてもよい。一例として情報処理装置1は、送信の対象となるデータのサイズによって処理を異ならせてもよい。例えば端末2から受信したデータのサイズが予め定めたデータサイズしきい値を超える場合には、情報処理装置1の制御部11は、端末2から受信したデータ(データ全体)を記憶部12に保持して、定められたタイミングが到来するまで待機し、定められたタイミングが到来すると、当該保持したデータを、宛先となるサーバ装置3へ送信する処理(適時アップロード処理と呼ぶ)を実行する。一方、端末2から受信したデータのサイズが予め定めたデータサイズしきい値を超えない場合は、制御部11は、当該端末2からデータを例えばパケットごとに受信し、当該受信したデータをそのまま有線通信部14を介してサーバ装置3へ送信する。
【0060】
この例によると、例えば次のような動作が行われることとなる。すなわち、ユーチューブ等に対するデータのアップロードは、一般に次のような手順で行われる。
(1)端末2からのアップロードの要求
(2)サーバ装置3が当該要求に応答して、タイトル等書誌的事項の入力を求めるインタフェース画面を提示
(3)端末2は当該画面を表示して利用者からデータを受け入れ、受け入れたデータをサーバ装置3へ送信
(4)サーバ装置3が動画データ等、主となるデータ(一般にデータサイズの比較的大きいデータ)のアップロードを求める
(5)サーバ装置3がアップロードされた主となるデータへアクセスするためのURLを提供
【0061】
ここで端末2からサーバ装置3へ送信されるデータのうち、(1)での要求と、(3)での書誌的事項に係るデータは、比較的サイズの小さいものである。従って上述のように、情報処理装置1が送信の対象となるデータのサイズによって処理を異ならせる場合、情報処理装置1は、端末2からのアップロードの要求を受信すると、この要求については、そのまま(予め定めたタイミングを待つことなく)サーバ装置3へ送信する。そして情報処理装置1は、サーバ装置3から当該要求への応答としてのインタフェース画面を記述するHTMLデータ等を受信して、このデータを端末2へ送信する。
【0062】
端末2の利用者がこのインタフェース画面を利用して書誌的なデータを入力し、送信を指示すると、端末2が当該入力されたデータを情報処理装置1へ送信する。このデータも比較的サイズが小さいので、情報処理装置1ではデータサイズしきい値を下回るデータであるとして、そのまま(予め定めたタイミングを待つことなく)サーバ装置3へ当該データを送信する。
【0063】
サーバ装置3では、書誌的事項のデータを受け入れてこれを記憶し、動画像データのアップロードを求める。情報処理装置1は、当該動画像データ等、主たるデータのアップロードの求めを端末2へ送信する。そして端末2がこの求めに応じて、動画像データ等主たるデータのアップロードを開始する。
【0064】
この主たるデータがデータサイズしきい値を超えると、情報処理装置1は、主たるデータの全体を端末2から受信し、記憶部12に保持する。そして情報処理装置1は、定められたタイミングが到来するまで待機し、定められたタイミングが到来すると、サーバ装置3に対して、当該保持している主たるデータを送信する。
【0065】
なお、この主たるデータの送信では情報処理装置1とサーバ装置3は次のように動作してもよい。すなわち情報処理装置1は、主たるデータの全体を端末2から受信して、記憶部12に保持すると、当該データの宛先となるサーバ装置3に対し、送信対象となるデータがある旨を表す通知を送信する。
【0066】
サーバ装置3は、この通知を受け入れて、データの受け入れ処理を行うべきタイミングを推定し、当該推定したタイミングの情報を、情報処理装置1へ送信するとともに、アップロードが完了したときに、当該主たるデータに対してアクセスをするためのURLの情報を生成して情報処理装置1へ送信する。このURLの情報は、具体的にユーチューブの場合、蓄積した動画データの閲覧画面のURLに相当する。
【0067】
情報処理装置1では、受信したタイミングの情報と、URLの情報とを受け入れる。そして情報処理装置1は、受信したタイミングの情報に現在時刻(図示しないカレンダーIC等で計時しておく)を加算して、送信するべきタイミングの情報を算出して得る。情報処理装置1は、この算出したタイミングの情報と、受信したURLの情報とを、保持させたデータに関連付けて記録する。
【0068】
また情報処理装置1は、この処理と並行して、
図5に例示する処理を実行する。さらに情報処理装置1は、端末2からURLを指定したデータのアクセス要求を受け入れると、指定されたURLが記憶部12に保持されたデータに関連付けて記録されたURLのうちにあるかを検索する。ここで情報処理装置1は、記憶部12に保持されたデータに関連付けて記録されたURLのうちに、指定されたURLがあることを見出すと、当該記録されたURLに関連付けられたデータを端末2へ送信する。また、情報処理装置1は、記憶部12に保持されたデータに関連付けて記録されたURLのうちに、指定されたURLがなければ、当該URLへのアクセス要求を、有線通信部14を介して、インターネット側へ送出する。
【0069】
この例によると、例えばエバーノート(Evernote)などのように、利用者のデータを受け入れて蓄積し、要求に応じて提供するサービスを利用するにあたり、端末2の利用者は、アップロードの対象となったデータを比較的短時間に情報処理装置1へ送信完了でき、情報処理装置1からサーバ装置3側へは適宜のタイミングで後から送信させることができる。また送信したデータは、情報処理装置1との通信が可能な範囲では、サーバ装置3への送信がなされていない段階でも、情報処理装置1から配信を受けることができ、その後サーバ装置3へのデータの送信が完了すれば、サーバ装置3から送信したデータの配信を受けることができるようになる。
【0070】
また認証した利用者であって、かつ、予め定めたデータサイズしきい値を超えるデータについて、情報処理装置1が、上記の適時アップロード処理を行うこととしてもよい。さらに、適時アップロード処理を行うか否かを利用者が端末2からの指示により設定できるようにしてもよい。例えば利用者による適時アップロード処理を行うべき旨の設定がされた場合にはデータのヘッダにその旨の情報を含め、情報処理装置1が、データのヘッダに適時アップロード処理を行うべき旨の設定がされた旨の情報があるときに限り、適時アップロード処理を行うこととしてもよい。
【0071】
また別の例では情報処理装置1が、データごとに、その宛先となるサーバ装置3によって、適時アップロード処理を行うか否かを決定してもよい。例えば適時アップロード処理を行うサーバ装置3のリストを記憶部12に保持しておき、端末2からデータを受信するごとに、情報処理装置1の制御部11が、上記リストを参照して、受信したデータの宛先がリストにある場合に適時アップロード処理を行い、リストにない場合は、従来通り、パケットごとに受信してはサーバ装置3へ送信するといった処理を行うこととしてもよい。
【0072】
さらに本実施の形態の情報処理システムでは、情報処理装置1は、複数あってもよい。この場合、情報処理装置1の制御部11は、サーバ装置3に対してデータを送信するべき、予め定めたタイミングを次のように定めてもよい。すなわち本実施の形態のある例では、複数の情報処理装置1の各々がデータを輪番で送信することとなるよう、予め定めた方法により、情報処理装置1の各々に、順序の情報を設定しておく。この順序の情報は例えば、自分がデータの送信を完了した後に次にどの情報処理装置1が送信を行うべきかを表す情報を、各情報処理装置1に記録しておくことで設定できる。この設定は、輪番での送信が可能となるよう、循環的に設定する。つまり最後の情報処理装置1には、次に送信を行う情報処理装置1として最初の情報処理装置1を設定しておく。
【0073】
具体的に制御部11は、他の情報処理装置1から順番が到来したことを表す通知を、有線通信部14を介して受けると、予め定められたタイミングが到来したものとして、端末2から受け入れて記憶部12に保持しているデータのそれぞれを、それぞれに関連付けられた情報で特定されるサーバ装置3宛に送信する。そして保持しているデータの送信が完了すると、設定された、次の情報処理装置1を特定する情報(例えば情報処理装置1のネットワークアドレス(IPアドレスなど)でよい)を取り出す。そして当該情報で特定される他の情報処理装置1に対して順番が到来したことを表す通知を有線通信部14を介して送信する。
【0074】
さらに情報処理装置1の制御部11における、サーバ装置3に対してデータを送信するべき、タイミングを定める方法は、次のようなものでもよい。本実施の形態のまた別のある例では、複数の情報処理装置1の各々が、あるサーバ装置3を注目サーバとして、この注目サーバに対する送信の対象として、記憶部12に保持しているデータ量の情報を送受し、データ量の大きい順に注目サーバへの送信を行うようにしてもよい。
【0075】
具体的に制御部11は、あるサーバ装置3(注目サーバとする)への送信を行おうとするにあたり、他の情報処理装置1に対して、注目サーバへデータを送信中であるか否かを問い合せる。各情報処理装置1の制御部11は、注目サーバへデータを送信中であればその旨を返答し、そうでなければ記憶部12に格納されているデータのうち、注目サーバへ送信するべきデータの量を表す情報を生成して返答する。
【0076】
制御部11は、この返答を受けて、注目サーバへデータを送信中である情報処理装置1の数が予め定めた数を超えない場合には、各情報処理装置1の返答に含まれるデータ量と自己が記憶部12に保持している、注目サーバ宛のデータの量とを比較する。そしてデータ量が最も大きい場合に、制御部11は、注目サーバに対して、当該注目サーバ宛のデータを記憶部12から読み出して送信する。
【0077】
また、制御部11は、注目サーバへデータを送信中である旨の返答を行った情報処理装置1の数が、予め定めた数を超える場合は、記憶部12に格納されたデータに関連付けられた情報で特定される他のサーバ装置3があれば、当該他のサーバ装置3の一つを注目サーバとして選択して、他の情報処理装置1への問い合せの処理から処理を繰返す。
【0078】
このように、本実施の形態の情報処理装置1は、相互に通信を行って、各サーバ装置3に対して通信する情報処理装置1が、予め定めた台数を超えないように制御することとしてもよい。
【0079】
なお、ここまでの説明において情報処理装置1の制御部11は、記憶部12に保持しているデータのうち、宛先となったサーバ装置3への送信が完了したものについては、記憶部12から削除するようにしてもよい。
【0080】
また、ここまでの例では、TCP/IP、並びにHTTPを利用する例について述べたが、例えばTCPではなくUDP(User Datagram Protocol)を用いるなど、他のプロトコルを利用する場合も同様の処理を適用できる。
【0081】
また本実施の形態の別の例では、情報処理装置1が、次のような構成を備えてもよい。すなわち実施の形態のある側面(aspect)では、この制御部11は、複数のプログラム実行環境を並列的に動作させることのできるホストオペレーティングシステム(ホストOS)の処理を実行している。この例の制御部11は、概念的には、自分自身のCPU資源や、バッファ等のストレージ資源、あるいはネットワークの帯域の資源等を、これら複数のプログラムに分割して割り当てる。また、各プログラム実行環境では、さらにオペレーティングシステム(ゲストOS)が動作してもよく、当該ゲストOS上で、複数のタスクが時分割的ないし並列的に実行されてもよい。
【0082】
このような例の一つでは、制御部11は、ホストOS及びゲストOSとしてLinuxを動作させており、ホストOS上で複数の仮想的なプログラム実行環境を形成する方法として、リソースコンテナ(resource containers)の一種である、Linux Containersを用いる。またこの例では無線通信部13は、例えば、一つないし複数の無線LANチップを備えるネットワークカードである。この無線通信部13は、制御部11の制御により、時分割多重により複数の通信チャネルを多重化する。この時分割多重は例えば、multiple SSID機能として広く知られている機能と同じようにして実現可能であるので、ここでの詳しい説明は省略する。
【0083】
そしてこの無線通信部13は、802.11nなどの予め定めたプロトコルにて、各通信チャネルを介して、それぞれの通信チャネルで接続された端末2との間で、無線通信を行う。具体的に通信チャネルには互いに異なるssidが設定され、端末2の利用者は、どの通信チャネルで接続するかをssidを選択することで変更できる。
【0084】
制御部11は、機能的には
図6に例示するように、ホストOS40と、各通信チャネルに対応して形成される複数のプログラム実行環境50とを含む。また、ホストOS40には、デバイスドライバ41を含む。プログラム実行環境50の各々の上では、ゲストOS51が実行され、当該ゲストOS51上で動作するユーザプログラムとして、データ処理モジュール55と通信制御モジュール56とが実行される。プログラム実行環境を形成する方法としてLinux Containersを用いる場合、各プログラム実行環境50は、ホストOS40上で、それぞれ独立したLXC(Linux Containers) Guest環境として実現される。
【0085】
ゲストOS51は、一般的な無線通信のためのプロトコルスタックを備える。ここでゲストOS51のプロトコルスタックには、OSI参照モデルにおける上位側の層の処理を行うモジュールからより下位の、データリンク層の処理を行うモジュールまで(MAC(Media Access Control)副層に対応するモジュール)が少なくとも含まれる。一例として、Linuxであれば、nl80211、mac80211、ath9k等を含む。
【0086】
このゲストOS51は、起動時に新たな通信チャネルの開設(open)をホストOS40に要求する。そして対応する通信チャネルが開設されると、当該対応する通信チャネルにおける物理的な通信路の確保の処理や、競合制御の処理を実行する。またゲストOS51は、ユーザプログラムであるデータ処理モジュール55との間で、対応する通信チャネルを介して送受信するデータを授受する。さらにゲストOS51は、通信制御モジュール56から入力される指示に従い、対応する通信チャネルにおける通信のパラメータ(後述)を設定する。
【0087】
一例として、このゲストOS51は、対応する通信チャネルの仮想的な無線通信デバイスのインタフェースを、ユーザプログラム側に提供する。具体的にLinuxでは、無線通信デバイスのインタフェースは、wlanp及びmon.wlanp(これらにおいて末尾のpは0から始まる数値)で識別されるデバイスとして仮想化される。そこで、このゲストOS51は、通信チャネルに対する仮想的無線通信デバイスインタフェース(wlan0及びmon.wlan0等)としてユーザプログラム側に提供する。
【0088】
データ処理モジュール55は、それが実行されているプログラム実行環境50に対応する通信チャネルを介して送受される情報を、予めプログラムされた指示に従って処理する。この処理の内容はプログラム実行環境50ごとに異なるものとしてもよい。具体的に、このデータ処理モジュール55がLinux上で動作するものであれば、データ処理モジュール55は、通信データを処理する一般的なプログラムと同様に、wlan0へアクセスする。ここではゲストOS51により、wlan0への書き込みは、対応する通信チャネルを介して送信するデータとして、また、wlan0からの読み出しは、対応する通信チャネルを介して受信したデータの読み出しとして扱われる。
【0089】
通信制御モジュール56は、対応する通信チャネル(対応通信チャネル)を介した通信において、通信のパラメータを設定する。ここで通信のパラメータには、識別情報(対応通信チャネルがアクセスポイントとして動作する場合のssid等)や、ブロードキャストのためのキー長さ、暗号化処理の有無、暗号化のパラメータ(暗号処理の種類等)が含まれる。この通信制御モジュール56は、例えばLinux等におけるhostapdをそのまま利用できる。この例のようにhostapdである場合、通信制御モジュール56としてのhostapdは、ゲストOS51が提供するインタフェースmon.wlan0を介して通信のパラメータの設定等を行う。
【0090】
ホストOS40のデバイスドライバ41は、無線通信部13を制御する。このデバイスドライバ41は、ゲストOS51からの通信チャネルの開設の要求に応答して、新たに設定する通信チャネルに対応するバッファ45を形成し、無線通信部13に新たな通信チャネルの開設を行わせる。このとき、既に無線通信部13が少なくとも一つの通信チャネルを介した通信を行っているならば、デバイスドライバ41は、時分割多重により当該通信チャネルでの通信を追加的に開始させる。
【0091】
ここでこの例における制御部11の詳しい処理の例について述べる。制御部11が実行しているホストOS40は、各プログラム実行環境50上のゲストOS51に対して、それぞれ互いに異なるネットワーク名前空間(network namespace)を設定する。つまり、各プログラム実行環境50での仮想的無線通信デバイスインタフェースごとに、互いに異なるIPアドレスや、ルーティングテーブル等を設定する。そしてホストOS40では、有線通信部14を介して受信するデータの宛先を参照し、当該宛先となったノードに対応するネットワーク名前空間が設定されたプログラム実行環境50がある場合、そのプログラム実行環境50上で動作するゲストOS51に対して受信したデータを受け渡す。
【0092】
またいずれかのプログラム実行環境50上で動作するデータ処理モジュール55から、有線通信部14を介して送出するべきデータが受け渡されると、ホストOS40は、当該データの受け渡し元であるプログラム実行環境50に対応するルーティングテーブル等の設定に従い、有線通信部14を介して当該データを送出する。
【0093】
制御部11が実行するデータ処理モジュール55は、ゲストOS51を介して、ホストOS40のデバイスドライバ41内に形成された複数のバッファ45のうち、対応する通信チャネルに関わるバッファ45に対してアクセスする。
【0094】
制御部11は、ホストOS40としての動作において、ゲストOS51からのバッファ45へのアクセス要求に応答し、要求元のゲストOS51が実行されているプログラム実行環境50に対応するバッファ45にアクセスし、要求されたデータの書き込みまたはデータの取り出しを行う。ここでホストOS40が取り出したデータは要求元のゲストOS51に受け渡される。このようにして、プログラム実行環境50のそれぞれが、複数のバッファ45のうち、プログラム実行環境50に対応した通信チャネルに係るバッファ45(以下、アクセスの対象となったバッファ45と呼ぶ)に対して排他的にアクセスすることが可能となる。すなわち、これにより、プログラム実行環境ごとに、それぞれの上で実行されるプログラムに対してのみ、それぞれのプログラム実行環境が提供する仮想的無線通信デバイスインタフェースを介しての通信を行わせることとなり、IPアドレスやルーティングテーブル等をそれぞれ独立して設定できる。
【0095】
データ処理モジュール55は、アクセスの対象となったバッファ45に格納されているデータを、ゲストOS51が提供するインタフェース(wlan0等)を介して受け取る。そしてデータ処理モジュール55は、当該受け取ったデータに対して予め定められた処理を行う。本実施の形態では、データ処理モジュール55は、基本的には、受け取ったデータを、有線通信部14を介して送出するよう、ゲストOS51に対して要求する。またこのとき、データ処理モジュール55は有線通信部14を介して受信したデータを受け入れて、これを対応する通信チャネルを介して送出するようゲストOS51に対して要求する(wlan0等へ書き込む)。
【0096】
ゲストOS51では、通信チャネルを介して送出するべきデータをユーザプログラムから受け入れて、アクセスの対象となったバッファ45に格納するようホストOS40に要求する。
【0097】
このように構成された制御部11を利用する場合、複数のプログラム実行環境50a,50b…を起動し、それぞれのプログラム実行環境50において、それぞれゲストOS51a,51b…を動作させる。さらにこれらのプログラム実行環境50a,b…のそれぞれにおいて、ユーザプログラムであるデータ処理モジュール55a,b…及び通信制御モジュール56a,b…を動作させることができる。
【0098】
ここでデータ処理モジュール55aが従来通り、アクセスの対象となったバッファ45に格納されているデータを、ゲストOS51aが提供するインタフェース(wlan0)を介してパケット単位で受け取り、当該受け取ったパケット単位で受取ったデータを、有線通信部14を介して、その宛先となったサーバ装置3へ送信するものとする。またデータ処理モジュール55bは、適時アップロード処理を実行し、端末2から受信され、バッファ45に格納されているデータ(データ全体)をゲストOS51bが提供するインタフェース(wlan1)を介してデータ単位で(つまりデータ全体を)受け取り、当該受け取ったデータを記憶部12に保持するものとする。そしてデータ処理モジュール55bは、定められたタイミングが到来するまで待機し、定められたタイミングが到来したときに、記憶部12に保持したデータを、宛先となるサーバ装置3へ送信するものとする。
【0099】
このようにすると、利用するssidを異ならせることで、適時アップロード処理を利用可能な端末利用者とそうでない利用者とを区別させることが可能となる。
【実施例】
【0100】
図7は、約2.8メガバイト、約6メガバイト、約11.6メガバイト、約23.6メガバイト、約45メガバイトの5種類の動画データを、適時アップロード処理を行う場合に端末2が送信を完了するまでの時間(つまり情報処理装置1がデータ全体を受信完了するまでの時間)と、適時アップロード処理を行わない場合に端末2が送信を完了するまでの時間(つまり、サーバ装置3がデータの全体を受信完了するまでの時間)とを縦軸に表して比較したものである。
【0101】
ここでは複数回のアップロードを試し、その平均と誤差とを図示している。
図7から理解されるように、適時アップロード処理を行う場合、全体的に端末2が送信を完了するまでの時間は短縮された。また、誤差を表すバーから理解されるように、適時アップロード処理を行わない場合に比べ、適時アップロード処理を行う場合は、端末2が送信を完了するまでの時間のばらつきが少なく、比較的安定した通信を行うことができた。