(57)【要約】【課題】あるセッションの送信遅延が大きくなるリスクを低減すること。【解決手段】複数のセッションのデータ２１、２２を他の情報処理装置７に送信可能な情報処理装置１０が提供される。情報処理装置１０は、通信部１１及び制御部１２を有する。通信部１１は、他の情報処理装置７が受信した第１のデータ２４の処理に要した時間に応じた処理時間情報２５を、他の情報処理装置７から受信し、また、１又は２以上のセッションのデータ２１、２２を含む第２のデータ２３を他の情報処理装置７に送信する。制御部１２は、処理時間情報２５を用いて、複数のセッションそれぞれについて送信を許可する単位時間当たりのデータ量の上限値を算出し、第２のデータ２３を送信するとき、算出した上限値に基づいてセッション毎のデータ量を制限する。【選択図】図１
2014131093.tif 000002
【特許請求の範囲】
【請求項１】
複数のセッションのデータを他のコンピュータに送信可能なコンピュータに、
前記他のコンピュータが受信した第１のデータの処理に要した時間に応じた処理時間情報を、前記他のコンピュータから取得し、
前記処理時間情報を用いて、前記複数のセッションそれぞれについて送信を許可する単位時間当たりのデータ量の上限値を算出し、
１又は２以上のセッションのデータを含む第２のデータを前記他のコンピュータに送信するとき、前記算出した上限値に基づいてセッション毎のデータ量を制限する、
処理を実行させるプログラム。
【請求項２】
前記第１及び第２のデータはそれぞれ符号化されて送信され、
前記第１のデータの処理に要した時間は、前記他のコンピュータが前記第１のデータを復号する時間を含む、
請求項１に記載のプログラム。
【請求項３】
セッション毎のデータ量の制限は、当該セッションを確立したアプリケーションソフトウェアから当該セッションのデータを受け付けることを制限することにより行う、
請求項１又は２に記載のプログラム。
【請求項４】
前記複数のセッションそれぞれは、複数のアプリケーションソフトウェアの何れかによって確立され、前記複数のセッションのうち第１及び第２のセッションは、同一のアプリケーションソフトウェアによって確立されており、
前記上限値の算出では、前記複数のアプリケーションソフトウェアそれぞれの上限値を算出し、前記同一のアプリケーションソフトウェアの上限値から前記第１及び第２のセッションそれぞれの上限値を算出する、
請求項１乃至３の何れか一項に記載のプログラム。
【請求項５】
複数のセッションのデータを他の情報処理装置に送信可能な情報処理装置であって、
前記他の情報処理装置が受信した第１のデータの処理に要した時間に応じた処理時間情報を、前記他の情報処理装置から受信し、また、１又は２以上のセッションのデータを含む第２のデータを前記他の情報処理装置に送信する通信部と、
前記処理時間情報を用いて、前記複数のセッションそれぞれについて送信を許可する単位時間当たりのデータ量の上限値を算出し、前記第２のデータを送信するとき、前記算出した上限値に基づいてセッション毎のデータ量を制限する制御部と、
を有する情報処理装置。
【請求項６】
複数のセッションのデータを他の情報処理装置に送信可能な情報処理装置が実行する通信方法であって、
前記他の情報処理装置が受信した第１のデータの処理に要した時間に応じた処理時間情報を、前記他の情報処理装置から取得し、
前記処理時間情報を用いて、前記複数のセッションそれぞれについて送信を許可する単位時間当たりのデータ量の上限値を算出し、
１又は２以上のセッションのデータを含む第２のデータを前記他の情報処理装置に送信するとき、前記算出した上限値に基づいてセッション毎のデータ量を制限する、
通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、情報処理装置、及び通信方法に関する。
【背景技術】
【０００２】
現在、データ通信用のネットワークとして、インターネット、Local Area Network（ＬＡＮ）、Wide Area Network（ＷＡＮ）、携帯電話網などの様々なネットワークが利用されている。データ通信ネットワークにおいては、有限の通信リソースに対して過大なトラフィックが発生し障害が起こらないように、帯域制御を行うことが多い。帯域制御においては、ユーザや情報処理装置やアプリケーションソフトウェアなどの通信主体の間の公平を図る観点から、通信主体毎に帯域を制限することもある。
【０００３】
例えば、ユーザ毎に当該ユーザによって確立された１又は２以上のTransmission Control Protocol（ＴＣＰ）セッションの使用帯域を合計し、合計帯域が閾値を超えたユーザについて帯域制限を行う帯域制御装置が提案されている。この帯域制御装置は、帯域制限を行うユーザのＴＣＰウィンドウサイズを減少させるか、又はＴＣＰのＡＣＫパケットの返信を遅延させることで、ユーザ毎の帯域制限を実現する。
【０００４】
なお、ある通信用端末において利用可能な最大帯域を計測し、最大帯域が閾値以上であるか否かに応じて、符号化速度、パケット長、パケット送信間隔、パケット優先度、コーデック種別などを動的変換する呼接続システムが提案されている。この呼接続システムは、通信用端末における最大帯域を、パケットの往復遅延時間やパケットロス率に基づいて算出する。また、複数のソースから供給されるデータを多重化して転送するデータ多重化方法が提案されている。このデータ多重化方法では、データを多重化する際に、セッション識別子とパケット通し番号をヘッダ情報としてデータに付加する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２００５／００６６７３号
【特許文献２】特開２００７−３６９６０号公報
【特許文献３】特開２００７−２３５３５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
送信装置が複数のセッションのデータを受信装置に対して送信し得るとき、セッション間の公平性の観点から、セッション毎に帯域制限が行われることが好ましい。しかし、従来の帯域制限は、主にネットワークの通信状態に基づいて行われていた。そのため、受信装置のデータ処理の負荷がボトルネックになっていると、送信装置が空いた通信帯域を用いて受信装置にとって過大な量のデータを送信してしまう可能性があった。その結果、従来の帯域制限の方法では、複数のセッションの間の公平を十分に図れなくなり、帯域制限の目的を十分に達成できなくなるおそれがあるという問題があった。
【０００７】
例えば、セッション＃１のデータを、ネットワークの通信帯域を占有しないように送信し始め、その後にセッション＃２のデータを送信し始めるとする。通信帯域に余裕があることから、セッション＃２のデータも円滑に送信できると期待される。しかしながら、受信装置が先に受信したセッション＃１のデータについて、計算量の大きい処理（例えば、誤り訂正復号）や低速な処理（例えば、補助記憶装置へのデータの書き込み）を行うと、データ処理がボトルネックになり得る。その場合、例えば、受信装置から、後続のセッション＃２のデータの受信が一時的に拒否されることも有り得る。これは、セッション＃１のデータを多く送信し過ぎたことが一因であると考えられる。
【０００８】
なお、上記の問題が生じる場合の「セッション」は、複数のデータストリームを互いに区別できるような論理的な通信単位であればよい。例えば、ユーザや情報処理装置やアプリケーションソフトウェアなどの通信主体が同じデータ群を、同一のセッションに属するデータ群として扱ってもよい。また、ＴＣＰセッションのように、同じ通信主体が並行して複数確立できる論理的な通信単位を「セッション」として扱ってもよい。
【０００９】
１つの側面では、本発明は、あるセッションの送信遅延が大きくなるリスクを低減したプログラム、情報処理装置、及び通信方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
１つの態様では、複数のセッションのデータを他のコンピュータに送信可能なコンピュータに実行させるプログラムが提供される。プログラムを実行するコンピュータは、他のコンピュータが受信した第１のデータの処理に要した時間に応じた処理時間情報を、他のコンピュータから取得する。処理時間情報を用いて、複数のセッションそれぞれについて送信を許可する単位時間当たりのデータ量の上限値を算出する。１又は２以上のセッションのデータを含む第２のデータを他のコンピュータに送信するとき、算出した上限値に基づいてセッション毎のデータ量を制限する。
【００１１】
また、１つの態様では、複数のセッションのデータを他の情報処理装置に送信可能な情報処理装置が提供される。また、１つの態様では、複数のセッションのデータを他の情報処理装置に送信可能な情報処理装置が実行する通信方法が提供される。
【発明の効果】
【００１２】
１つの側面では、あるセッションの送信遅延が大きくなるリスクを低減できる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施の形態に係る情報処理装置の例を示した図である。
【図２】第２の実施の形態に係る通信システムの例を示した図である。
【図３】第２の実施の形態に係る情報処理装置のハードウェアの例を示した図である。
【図４】第２の実施の形態に係る送信側の情報処理装置の機能ブロックの例を示した図である。
【図５】第２の実施の形態に係る受信側の情報処理装置の機能ブロックの例を示した図である。
【図６】ＲＰＳ符号及びＵＤＰを利用したデータの送信方法の例を示した図である。
【図７】ＲＰＳ符号化及びＲＰＳ復号の処理について説明した図である。
【図８】ＲＰＳ符号及びＵＤＰを利用したデータ送信方法における再送要求の方法について説明した図である。
【図９】第２の実施の形態に係るデータの送信方法の例を示した図である。
【図１０】第２の実施の形態に係るデータパケットの構造例を示した図である。
【図１１】第２の実施の形態に係る送信処理の流れについて説明した図である。
【図１２】第２の実施の形態に係る処理速度の取得方法について説明した図である。
【図１３】第２の実施の形態に係る処理速度の計測方法について説明した図である。
【図１４】第２の実施の形態に係る受信処理の流れについて説明した図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照しながら実施の形態について説明する。
［第１の実施の形態］
第１の実施の形態について説明する。
【００１５】
図１は、第１の実施の形態に係る情報処理装置の例を示した図である。
図１に示すように、第１の実施の形態に係る情報処理装置１０は、通信部１１及び制御部１２を有する。また、情報処理装置１０は、ネットワーク５を介して他の情報処理装置７と接続されている。
【００１６】
また、図示しないが、送信側の情報処理装置１０及び受信側の情報処理装置７は、記憶装置を有している。この記憶装置は、Random Access Memory（ＲＡＭ）などの揮発性記憶装置であってもよいし、Hard Disk Drive（ＨＤＤ）やフラッシュメモリなどの不揮発性記憶装置であってもよい。
【００１７】
また、制御部１２は、Central Processing Unit（ＣＰＵ）やDigital Signal Processor（ＤＳＰ）などのプロセッサであってもよい。また、制御部１２は、Application Specific Integrated Circuit（ＡＳＩＣ）やField Programmable Gate Array（ＦＰＧＡ）などのプロセッサ以外の電子回路であってもよい。また、制御部１２は、上述した記憶装置又は他のメモリに記憶されたプログラムを実行する。
【００１８】
情報処理装置１０は、複数のセッションのデータ２１、２２を他の情報処理装置７に送信可能である。例えば、情報処理装置１０は、データ２１、２２にセッションを識別する識別情報を付加したデータパケットを生成し、そのデータパケットを符号化して他の情報処理装置７に送信することができる。
【００１９】
通信部１１は、他の情報処理装置７が受信した第１のデータ２４の処理に要した時間に応じた処理時間情報２５を、他の情報処理装置７から受信する。例えば、通信部１１は、既知のデータを含むデータパケットを他の情報処理装置７に送信し、既知のデータの処理に要した時間を含む処理時間の情報を取得する。処理時間には、例えば、復号処理やデータの書き込み処理などに要した時間が含まれる。
【００２０】
また、通信部１１は、１又は２以上のセッションのデータ２１、２２を含む第２のデータ２３を他の情報処理装置７に送信する。
制御部１２は、処理時間情報２５を用いて、複数のセッションそれぞれについて送信を許可する単位時間当たりのデータ量の上限値を算出する。制御部１２は、第２のデータ２３を送信するとき、算出した上限値に基づいてセッション毎のデータ量を制限する。このように、受信側の処理時間に応じてセッション毎の送信可能なデータ量を制限することで、あるセッションの送信遅延が大きくなるリスクを低減できる。
【００２１】
以上、第１の実施の形態について説明した。
［第２の実施の形態］
図２は、第２の実施の形態に係る通信システムの例を示した図である。
【００２２】
（システムについて）
まず、図２を参照しながら、第２の実施の形態に係る通信システム１００について説明する。図２は、第２の実施の形態に係る通信システムの例を示した図である。
【００２３】
図２に示すように、通信システム１００は、情報処理装置１１０と、ネットワーク９４を介して情報処理装置１１０に接続された情報処理装置１３０とを有する。なお、以下の説明では、情報処理装置１１０を送信側、情報処理装置１３０を受信側と表現することがある。また、説明の都合上、情報処理装置１１０から情報処理装置１３０へとデータを送信する場合を想定して説明を進める。但し、情報処理装置１３０から情報処理装置１１０へと情報が送信されることもある。
【００２４】
図２の例では情報処理装置１１０、１３０が共に据え置き型のコンピュータの形状で表現されているが、情報処理装置１１０、１３０は据え置き型のコンピュータ以外であってもよい。例えば、情報処理装置１１０は、ノート型パーソナルコンピュータ、タブレット型コンピュータ、携帯電話、スマートフォン、デジタルカメラ、カーナビゲーションシステムなどであってもよい。また、情報処理装置１１０は、無線基地局、無線通信端末、ルータ、ハブ、モデム、衛星通信用の通信機器、その他の通信機器であってもよい。なお、情報処理装置１３０についても同様である。
【００２５】
また、図２の例では情報処理装置１１０を１台のコンピュータで表現しているが、複数台のコンピュータを接続した並列型のコンピュータであってもよいし、クラウドコンピューティングシステムであってもよい。この場合、情報処理装置１１０が有する機能の一部又は全部は、複数のコンピュータを利用して実現される。なお、情報処理装置１３０についても同様である。また、情報処理装置１１０、１３０のうち一方の機能を１台のコンピュータで実現させ、他方の機能を複数台のコンピュータで実現させてもよい。
【００２６】
（ハードウェアについて）
情報処理装置１１０の機能は、図３に示すようなハードウェアにより実現される。図３は、第２の実施の形態に係る情報処理装置のハードウェアの例を示した図である。なお、図３に示したハードウェア要素の組み合わせは一例であり、実施の態様に応じて一部の要素を省略してもよいし、新たな要素を追加することも可能である。
【００２７】
図３に示すように、情報処理装置１１０は、例えば、ＣＰＵ９０１、ＲＡＭ９０２、ＨＤＤ９０３、画像信号処理部９０４、入力信号処理部９０５、ディスクドライブ９０６、及び通信インターフェース９０７を有する。
【００２８】
なお、ＣＰＵ９０１は、第１の実施の形態に係る制御部１２の一例である。ＲＡＭ９０２やＨＤＤ９０３は、第１の実施の形態に係る記憶装置の一例である。ＣＰＵ９０１及び通信インターフェース９０７は、第１の実施の形態に係る通信部１１の一例である。
【００２９】
ＣＰＵ９０１は、プログラムに記述された命令を実行する演算器を含むプロセッサである。ＣＰＵ９０１は、ＨＤＤ９０３に記憶されているプログラムやデータの少なくとも一部をＲＡＭ９０２にロードし、プログラムに記述された命令を実行する。なお、ＣＰＵ９０１は、複数のプロセッサコアを含んでいてもよい。また、情報処理装置１１０は、複数のＣＰＵ９０１を搭載していてもよい。この場合、情報処理装置１１０は、処理を並列実行することができる。
【００３０】
ＲＡＭ９０２は、ＣＰＵ９０１が実行するプログラムや、処理に用いられるデータを一時的に記憶するための揮発性メモリである。なお、情報処理装置１１０は、ＲＡＭ９０２とは異なる種類のメモリを有していてもよい。また、情報処理装置１１０は、複数のメモリを備えていてもよい。
【００３１】
ＨＤＤ９０３は、Operating System（ＯＳ）、ファームウェア、或いは、アプリケーションソフトウェアなどのプログラムや、処理に用いられるデータなどを記憶する不揮発性記憶装置の一例である。なお、情報処理装置１１０は、フラッシュメモリやSolid State Drive（ＳＳＤ）など、ＨＤＤ９０３とは異なる種類の記憶装置を有していてもよい。また、情報処理装置１１０は、複数の記憶装置を有していてもよい。
【００３２】
画像信号処理部９０４は、ＣＰＵ９０１による制御を受け、情報処理装置１１０に接続された表示装置９１に画像を出力する。表示装置９１は、例えば、Cathode Ray Tube（ＣＲＴ）ディスプレイ、Liquid Crystal Display（ＬＣＤ）、Plasma Display Panel（ＰＤＰ）、Organic Electro-Luminescence Display（ＯＥＬＤ）などの表示デバイスである。
【００３３】
入力信号処理部９０５は、情報処理装置１１０に接続された入力デバイス９２から入力信号を取得し、ＣＰＵ９０１に通知する。入力デバイス９２としては、例えば、マウス、キーボード、タッチパネル、タッチパッド、トラックボール、リモートコントローラ、ボタンスイッチなどを用いることができる。
【００３４】
ディスクドライブ９０６は、記録媒体９３に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体９３としては、例えば、Flexible Disk（ＦＤ）、ＨＤＤなどの磁気ディスク、Compact Disc（ＣＤ）やDigital Versatile Disc（ＤＶＤ）などの光ディスク、Magneto-Optical disk（ＭＯ）などの光磁気ディスクを用いることができる。ディスクドライブ９０６は、例えば、ＣＰＵ９０１による制御を受け、記録媒体９３から読み取ったプログラムやデータをＲＡＭ９０２又はＨＤＤ９０３に格納する。
【００３５】
通信インターフェース９０７は、ネットワーク９４を介して他のコンピュータと通信を行うためのインターフェースである。通信インターフェース９０７は、有線インターフェースであってもよいし、無線インターフェースであってもよい。また、通信インターフェース９０７は、衛星通信用の通信インターフェースであってもよいし、携帯電話網に接続するための通信インターフェースであってもよい。
【００３６】
（情報処理装置１１０の機能について）
上記のハードウェアを用いることで、情報処理装置１１０は、図４に示すような機能を実現することができる。図４は、第２の実施の形態に係る送信側の情報処理装置の機能ブロックの例を示した図である。
【００３７】
図４に示すように、情報処理装置１１０は、データ入力部１１１と、ブロック化部１１３と、パケット生成部１１２と、消失訂正符号化部１１４と、通信部１１５と、制御部１１６とを有する。
【００３８】
なお、ブロック化部１１３、パケット生成部１１２、消失訂正符号化部１１４、通信部１１５、及び制御部１１６が有する機能の一部又は全部は、ＣＰＵ９０１が実行するプログラムのモジュールとして実現できる。また、ブロック化部１１３、パケット生成部１１２、消失訂正符号化部１１４、通信部１１５、及び制御部１１６が有する機能の一部又は全部をソフトウェアではなく電子回路として実現することも可能である。
【００３９】
データ入力部１１１には、受信側の情報処理装置１３０に送信するデータが入力される。データ入力部１１１に入力されるデータは、情報処理装置１１０とは異なる外部のコンピュータ上で動作しているアプリケーションソフトウェアから提供されたものであってもよいし、情報処理装置１１０上で動作しているアプリケーションソフトウェアから提供されたものであってもよい。ここでは、複数の異なるアプリケーションソフトウェアからデータ入力部１１１にデータが入力された状況を想定して説明を進める。
【００４０】
なお、アプリケーションソフトウェアの例として、情報処理装置１１０の起動後に固定的に起動されて常駐するアプリケーションソフトウェアを想定する。このようなアプリケーションソフトウェアの数は予め設定されているものとする。但し、起動中のアプリケーションソフトウェアやデータの送信を行っているアプリケーションソフトウェアをデータ入力部１１１が動的に検知するような仕組みに変形してもよい。
【００４１】
１つのアプリケーションソフトウェアは、複数のセッションを確立することができる。セッションは、アプリケーションソフトウェアがポート番号をトランスポート層に指定することで確立される。このとき、送信側のアプリケーションソフトウェアは送信元ポート番号を指定し、受信側のアプリケーションソフトウェアは宛先ポート番号を指定する。各アプリケーションソフトウェアが確立するセッションの数は動的に変化する。ある時点で確立されているセッションの数はトランスポート層により把握されている。
【００４２】
上記のようなアプリケーションソフトウェアからデータ入力部１１１に入力されたデータは、パケット生成部１１２に入力される。パケット生成部１１２は、データにヘッダを付加してデータパケットを生成する。ヘッダには、各データに対応するセッションの識別情報（セッションＩＤ）やデータ長などの情報が含まれる。なお、各データは、セッション毎（トランスポート層のポート番号毎）に分類されてアプリケーションソフトウェアと受け渡しされる。このとき、セッションＩＤが参照される。パケット生成部１１２により生成されたデータパケットは、ブロック化部１１３に入力される。
【００４３】
ブロック化部１１３は、パケット生成部１１２から入力されたデータパケットをブロック化する。ここで言うブロック化とは、予め設定した数のデータパケットを蓄積し、蓄積したデータパケットを１つのパケット群（ブロック）として管理することを意味する。このとき、ブロック化部１１３は、複数の異なるアプリケーションソフトウェアから入力されたデータのデータパケットを同じブロックに割り当てることを許容してデータパケットのブロック化を実行する。
【００４４】
このように、複数のアプリケーションソフトウェアから入力されたデータのデータパケットが混在することを許容することで、１つのブロックを１つのアプリケーションソフトウェアが占有する場合と比べ、他のアプリケーションソフトウェアのデータ送信の遅延を抑制できる。
【００４５】
ブロック化部１１３は、ブロックにデータパケットを割り当てていき、割り当てたデータパケットの数が当該ブロックに割り当て可能なデータパケットの数に達した場合（ブロックが満杯になった場合）、当該ブロックをブロックリストに登録する。このブロックリストは、符号化可能なブロックを登録するための情報である。あるブロックが満杯になった場合、ブロック化部１１３は、当該ブロックの次のブロックに対してデータパケットを割り当てる。
【００４６】
消失訂正符号化部１１４は、ブロックリストに登録された１つのブロックに対応する複数のデータパケットを符号化して複数のパリティパケットを生成する。このように、ブロックリストを利用することで、ブロック化部１１３によるブロック化の処理と、消失訂正符号化部１１４による符号化の処理とを非同期に実行することができる。
【００４７】
符号化の方式としては、例えば、ＲＰＳ符号などの消失訂正符号を用いる方式が適用される。消失訂正符号はForward Error Correction（ＦＥＣ）符号の一種である。消失訂正符号を用いるデータ転送方式では、送信側で予めデータに冗長性を付加しておき、伝送路でパケットの一部が消失しても受信側で追加の情報を得ずに元のデータを復元できるようにする。
【００４８】
消失訂正符号化部１１４によりブロック毎に生成された複数のパリティパケットは、通信部１１５に入力される。なお、各パリティパケットには、Cyclic Redundancy Check（ＣＲＣ）などの誤り検出符号が付加されていてもよい。通信部１１５は、消失訂正符号化部１１４により生成された複数のパリティパケットを受信側の情報処理装置１３０へと送信する。
【００４９】
制御部１１６は、受信側の情報処理装置１３０における負荷状況を示す情報を取得する。例えば、制御部１１６は、予め用意したダミーパケットを消失訂正符号化したダミーのパリティパケットを通信部１１５により受信側の情報処理装置１３０へと送信し、受信側の情報処理装置１３０でダミーパケットの復元に要した処理時間を計測させる。そして、制御部１１６は、負荷状況を示す情報として、受信側の情報処理装置１３０から単位時間当たりの処理データ量を示す処理速度の情報を取得する。
【００５０】
なお、処理速度の情報を取得する方法に代えて、処理時間及び復元したデータのデータ量を示す情報を取得し、取得した情報から制御部１１６が処理速度の情報を計算する方法も考えられる。この場合、処理時間及びデータ量の情報を取得した制御部１１６は、取得した情報を利用して、単位時間当たりの処理データ量を示す処理速度の情報を計算する。但し、以下では処理速度の情報が受信側の情報処理装置１３０から得られることを前提に説明を進める。
【００５１】
制御部１１６は、受信側の情報処理装置１３０から取得した処理速度の情報に基づいて、受信側の情報処理装置１３０へデータを送信する際の帯域を制限する。制御部１１６は、受信側の情報処理装置１３０へ出力可能なデータの送信レートを、取得した処理速度に設定する。制御部１１６は、この送信レートをセッション毎に割り当てる。
【００５２】
まず、制御部１１６は、アプリケーションソフトウェア毎に送信レートを割り当てる。例えば、３つのアプリケーションソフトウェアが存在する場合、制御部１１６は、設定した送信レートを３分割する。あるアプリケーションソフトウェアが複数のセッションを確立している場合、制御部１１６は、そのアプリケーションソフトウェアに割り当てた送信レートをセッション数でさらに分割し、分割した送信レートをセッション毎に割り当てる。
【００５３】
なお、制御部１１６は、受信側の情報処理装置１３０から取得した処理速度の情報に基づいて１つのブロックに含めるデータパケットの数を制御してもよい。
上記のように、制御部１１６は、受信側の情報処理装置１３０の負荷状況に応じてセッション毎に割り当てる帯域を制御する。例えば、前回計測された処理速度よりも今回計測された処理速度の方が遅い場合、制御部１１６は、受信側の情報処理装置１３０の処理負荷が高い状態にあると判断して、セッション毎に割り当てる帯域を低減させる。一方、前回計測された処理速度よりも今回計測された処理速度の方が速い場合、制御部１１６は、セッション毎に割り当てる帯域を増加させる。
【００５４】
なお、上記のような帯域制御は、トランスポート層がアプリケーションソフトウェアに対して行う受理応答を制御することで実現される。データを送信する際、アプリケーションソフトウェアは、セッション（送信元ポート番号）を指定してトランスポート層にデータを渡す。このアプリケーションソフトウェアが次のデータを送信するには、前に渡したデータに対する受理応答をトランスポート層から受け取ることが求められる。そのため、この受理応答を遅延させることで帯域を制限することができる。
【００５５】
例えば、制御部１１６は、アプリケーションソフトウェアから単位時間当たりに受理するデータ量がセッション毎に割り当てた帯域を超えないように受理応答を遅延させる。このような制御を実施することで、受信側の情報処理装置１３０による復号処理が追い付かずに受信バッファがオーバーフローすることなどを回避することができる。
【００５６】
また、制御部１１６は、処理速度に加えて、通信速度、パケットロス率、及びRound Trip Time（ＲＴＴ）などのネットワーク状況をさらに考慮してセッション毎に割り当てる帯域を制御してもよい。通信速度は、単位時間当たりに送信できたデータ量から算出される。
【００５７】
パケットロス率は、送信したデータパケットのうち消失訂正復号によって復元されたデータパケットの割合である。但し、パケットロス率は、再送制御が開始される前に復元されたデータパケットの数に基づいて計算される。また、ＲＴＴは、送信が開始されてから、データパケットの復元完了後に送達される送達確認を受信するまでにかかった時間と処理時間との差分である。つまり、データパケットの送受信にかかった時間から、アプリケーション層で実行される処理にかかった時間を差し引いた時間をＲＴＴとする。
【００５８】
例えば、パケットロス率が高い場合、制御部１１６は、セッション毎に割り当てる帯域や各ブロックに割り当てるデータのデータ量を低減させる。通信速度が速い場合、制御部１１６は、処理速度から判断される処理可能なデータ量の範囲内でセッション毎に割り当てる帯域や各ブロックに割り当てるデータのデータ量を増加させる。ＲＴＴが大きい場合、制御部１１６は、セッション毎に割り当てる帯域や各ブロックに割り当てるデータのデータ量を大きくする。
【００５９】
なお、各ブロックに割り当てるデータのデータ量を増加させることで、一度に多くのデータを送信することができる上、一又は複数のブロックを単位として受信処理が完了した際に送信される送達確認の頻度を低減できる。逆に、各ブロックに割り当てるデータのデータ量を減少させることで、復号処理の負荷を低減することができる。
【００６０】
上記のように、受信側の処理速度から判断される処理可能なデータ量の範囲内で、通信速度、パケットロス率、及びＲＴＴを考慮してセッション毎に割り当てる帯域や各ブロックに割り当てるデータのデータ量を調整することにより、スループットを良好な状態に保つことが可能になる。
【００６１】
なお、受信側の情報処理装置１３０で一部のデータパケットが復元できなかった場合、制御部１１６は、パリティパケットの再送制御を実行する。例えば、パリティパケットＡ及びＢからデータパケット＃１が復元できる設定において、パリティパケットＢが伝送路で失われるとデータパケット＃１が復元不能になる。この場合、制御部１１６は、少なくともパリティパケットＢを再送させる。
【００６２】
以上、送信側の情報処理装置１１０の機能について説明した。
（情報処理装置１３０の機能について）
次に、図５を参照しながら、受信側の情報処理装置１３０の機能について説明する。図５は、第２の実施の形態に係る受信側の情報処理装置の機能ブロックの例を示した図である。なお、受信側の情報処理装置１３０が有する機能は、送信側の情報処理装置１１０と同じハードウェアを用いて実現できる。
【００６３】
図５に示すように、情報処理装置１３０は、通信部１３１と、消失訂正復号部１３２と、再送制御部１３３と、整列部１３４と、データ出力部１３５とを有する。
なお、通信部１３１、消失訂正復号部１３２、再送制御部１３３、整列部１３４、及びデータ出力部１３５が有する機能の一部又は全部は、ＣＰＵ９０１が実行するプログラムのモジュールとして実現できる。また、通信部１３１、消失訂正復号部１３２、再送制御部１３３、整列部１３４、及びデータ出力部１３５が有する機能の一部又は全部をソフトウェアではなく電子回路として実現することも可能である。
【００６４】
通信部１３１は、送信側の情報処理装置１１０から送信された１つのブロックに対応する複数のパリティパケットを受信する。通信部１３１により受信された複数のパリティパケットは、消失訂正復号部１３２に入力される。消失訂正復号部１３２は、各パリティパケットに対する誤り検出を実行して、当該パリティパケットが正しく受信されたか確認する。また、消失訂正復号部１３２は、各ブロックに対応する複数のパリティパケットのうち正しく受信されたパリティパケットを利用し、消失訂正復号の処理を実行して元のデータパケットを復元する。
【００６５】
また、消失訂正復号部１３２は、復元不能なデータパケットが存在する場合、再送制御部１３３に対し、復元不能なデータパケットを復元するために利用するパリティパケットの再送を要求するように依頼する。
【００６６】
例えば、データパケット＃１を復元するためにパリティパケットＡ及びＢが利用される場合、伝送路でパリティパケットＢが失われると、データパケット＃１が復元不能になる。この場合、消失訂正復号部１３２は、少なくともパリティパケットＢの再送を要求するように再送制御部１３３に依頼する。この依頼を受けた再送制御部１３３は、送信側の情報処理装置１１０に対して復元不能なデータパケットの復元に用いるパリティパケットの再送を要求する。
【００６７】
再送されたパリティパケットは、通信部１３１により受信され、消失訂正復号部１３２に入力される。消失訂正復号部１３２は、再送されたパリティパケット、及び再送前に受信していたパリティパケットを利用して復元不能となっていたデータパケットを復元する。
【００６８】
上記のような再送制御に係る処理は、全てのデータパケットが復元されるまで繰り返し実行される。全てのデータパケットが復元された場合、消失訂正復号部１３２は、復元されたデータパケットを整列部１３４に入力する。整列部１３４は、復元されたデータパケットをセッション毎に分類する。また、順序が入れ替わったデータパケットがある場合、整列部１３４は、データパケットの順序を元に戻す。
【００６９】
整列部１３４によりセッション毎に分類されたデータパケットは、データ出力部１３５に入力される。データ出力部１３５は、セッション毎に分類されたデータパケットのデータをアプリケーションソフトウェアに出力する。例えば、データ出力部１３５は、受信側のアプリケーションソフトウェアにデータを渡すか、或いは、受信側の情報処理装置１３０に内蔵又は外部接続された記憶装置（例えば、ＨＤＤなどの補助記憶装置）にデータを格納する。
【００７０】
なお、通信部１３１がダミーパケットを消失訂正符号化したパリティパケットを受信した場合、消失訂正復号部１３２は、そのパリティパケットを対象に誤り検出及び消失訂正復号の処理を実行してダミーパケットを復元する。この場合、消失訂正復号部１３２は、消失訂正復号の処理に要した処理時間を計測する。また、消失訂正復号部１３２は、計測した処理時間の情報を用いて単位時間当たりの処理データ量を示す処理速度を計算する。
【００７１】
但し、消失訂正復号部１３２は、ダミーパケットの復元処理を開始した時点から、データ出力部１３５がダミーパケットのデータを出力するまで（例えば、補助記憶装置へのデータの書き込みが完了するまで）の時間を処理時間として計測してもよい。この場合、復号処理以外にアプリケーション層で実行された種々の処理の時間を含む処理時間が計測されるため、受信側の情報処理装置１３０の負荷状況をより的確に反映した処理速度の情報が得られることもある。例えば、記憶装置へのアクセスが集中することで処理が滞っている場合など、復号処理以外の処理が過負荷となっている状態を送信側の情報処理装置１１０で考慮することが可能になる。
【００７２】
さて、ダミーパケットの復元処理が完了すると、通信部１３１は、送信側の情報処理装置１１０に対して送達確認を送信する。この送達確認には、上記のようにして計算された処理速度の情報が含まれる。但し、送達確認には、処理速度の情報に代えて、処理時間及び復元したデータのデータ量を示す情報が含まれていてもよい。このように、処理速度の情報を含む送達確認を送信側の情報処理装置１１０に送信することで、送信側の情報処理装置１１０において処理速度に応じた帯域の制御を行うことが可能になる。
【００７３】
なお、処理速度の情報を含む送達確認は、ダミーパケットの復元処理を完了したタイミングのみで送信されてもよいし、一又は複数のブロックに対応するデータの復元処理が完了したタイミングでも送信されてもよい。後者の場合、実際にデータパケットが転送されている期間に、送達確認に含まれる処理速度の情報に基づいてセッション毎の帯域を制御できるようになり、時々刻々と変化する負荷状況をリアルタイムに反映させる動的な制御が可能になる。
【００７４】
以上、受信側の情報処理装置１３０の機能について説明した。
（ＲＰＳ符号＋ＵＤＰを用いたデータ送信方法について）
次に、消失訂正符号の一例としてＲＰＳ符号を取り上げ、ＲＰＳ符号化したアプリケーションソフトウェアのデータをUser Datagram Protocol（ＵＤＰ）により送信するデータ送信方法について説明する。
【００７５】
まず、図６を参照しながら、ＲＰＳ符号及びＵＤＰを利用したアプリケーションソフトウェアのデータの送信方法について説明する。図６は、ＲＰＳ符号及びＵＤＰを利用したデータの送信方法の例を説明した図である。図６の例は、送信側のアプリケーションソフトウェアＡT、ＢTから、それぞれ受信側のアプリケーションソフトウェアＡR、ＢRへとデータＤA、ＤBを送信する処理を示している。
【００７６】
アプリケーションソフトウェアＡTから提供されたデータＤAは、ミドルウェアＭTによりブロックＢＬ1などに割り当てられる。また、アプリケーションソフトウェアＢTから提供されたデータＤBは、ミドルウェアＭTによりブロックＢＬ2などに割り当てられる。
【００７７】
なお、ミドルウェアＭTは、送信側の情報処理装置１１０上で動作しているソフトウェアである。ミドルウェアＭTは、ブロックＢＬ1に割り当てたデータをパケット化及びＲＰＳ符号化してＲＰＳ符号ＲＰＳ1を生成する。同様に、ミドルウェアＭTは、ブロックＢＬ2、…、ＢＬNにそれぞれ対応するＲＰＳ符号ＲＰＳ2、…、ＲＰＳNを生成する。なお、ＲＰＳ符号ＲＰＳ1、…、ＲＰＳNは、パリティパケットの一例である。
【００７８】
ＲＰＳ符号ＲＰＳ1、…、ＲＰＳNは、ＵＤＰに従って受信側の情報処理装置１３０上で動作しているミドルウェアＭRへと送信される。ミドルウェアＭRは、ＲＰＳ符号ＲＰＳ1をＲＰＳ復号してブロックＢＬ1に割り当てられたデータを復元する。
【００７９】
同様に、ミドルウェアＭRは、ブロックＢＬ2、…、ＢＬNにそれぞれ割り当てられたデータを復元する。また、ミドルウェアＭRは、アプリケーションソフトウェアＡTに対応するデータＤA、及びアプリケーションソフトウェアＢTに対応するデータＤBを仕分ける。そして、ミドルウェアＭRは、データＤAをアプリケーションソフトウェアＡRに入力し、データＤBをアプリケーションソフトウェアＢRに入力する。
【００８０】
上記のように、ＵＤＰに従ってデータを送信することで、送達確認の頻度を抑制することができる分だけスループットを向上させることができる。また、データがＲＰＳ符号化されるため、伝送路で一部のＲＰＳ符号が消失してもデータを復元することができる。そのため、データ転送の確実性が向上する。また、消失訂正能力の高いＲＰＳ符号を適用することで、再送要求の頻度が低減され、スループットがさらに向上する。
【００８１】
（ＲＰＳ符号化及び復号について）
ここで、図７を参照しながら、ＲＰＳ符号化及びＲＰＳ復号の処理について説明を補足する。図７は、ＲＰＳ符号化及びＲＰＳ復号の処理について説明した図である。図７の例は、データパケット＃１〜＃４をＲＰＳ符号化して送信し、ＲＰＳ復号によりデータパケット＃１〜＃４を復元する処理を示している。
【００８２】
図７に示すように、ＲＰＳ符号化方式では、送信する複数のデータパケットを組み合わせ、全てのデータパケットが複数のパリティパケットに変換される。各パリティパケットを生成するために用いるデータパケットの組み合わせは、一部のパリティパケットの消失に対して全てのデータパケットが復元できる可能性が高くなるような組み合わせに設定される。例えば、シミュレーションなどを用いてパリティパケットの組み合わせが決定される。
【００８３】
また、所定数のデータパケットに対してＲＰＳ符号化により生成されるパリティパケットの数は自由に変更することが可能である。そのため、パケットロス率が高い伝送路を用いる場合にはパリティパケットの数を増加させ、パケットロス率が低い伝送路を用いる場合にはパリティパケットの数を減少させるなど、状況に応じた柔軟な対応が可能になる。
【００８４】
図７の例では、データパケット＃１、＃２を用いてパリティパケットＡが、データパケット＃２、＃３を用いてパリティパケットＢが生成されている。また、データパケット＃１、＃３を用いてパリティパケットＣが、データパケット＃１、＃２、＃３、＃４を用いてパリティパケットＤが生成されている。
【００８５】
また、データパケット＃３、＃４を用いてパリティパケットＥが、データパケット＃１、＃２、＃３を用いてパリティパケットＦが、データパケット＃２、＃３、＃４を用いてパリティパケットＧが生成されている。このように、各パリティパケットは、複数のデータパケットを用いて生成される。
【００８６】
図７に示すように、パリティパケットＡ〜Ｇは、ＵＤＰに従って送信される。伝送路で一部のパリティパケットＢ、Ｅ、Ｆが失われた場合、データパケット＃１はパリティパケットＡ、Ｄを用いて復元され、データパケット＃２はパリティパケットＡ、Ｄ、Ｇを用いて復元される。また、データパケット＃３はパリティパケットＣ、Ｄ、Ｇを用いて復元され、データパケット＃４はパリティパケットＤ、Ｇを用いて復元される。
【００８７】
図７の例ではパリティパケットＢ、Ｅ、Ｆが伝送路で失われているが、データパケット＃１〜＃４が全て復元されている。このように、各データパケットの復元に用いるパリティパケットの組み合わせが適当であれば、伝送路で一部のパリティパケットが消失しても、各データパケットを正しく復元することができる。
【００８８】
ＲＰＳ符号は消失訂正能力の高い符号であるが、伝送路で多くのパリティパケットが消失した場合には、一部のデータパケットが復元不能となることがある。例えば、図８に示すように、パリティパケットＢ、Ｄ、Ｅ、Ｆが消失した場合、データパケット＃４が復元不能になる。この場合、データパケット＃４の復元に用いるパリティパケットの再送制御が行われる。図８は、ＲＰＳ符号及びＵＤＰを利用したデータ送信方法における再送要求の方法について説明した図である。
【００８９】
データパケット＃４は、例えば、パリティパケットＤ、Ｇがあれば復元することが可能である。つまり、パリティパケットＤが再送されればデータパケット＃４を復元することができる。そのため、図８の例ではパリティパケットＤの再送が要求される。但し、データパケット＃４はパリティパケットＥ、Ｇの組み合わせでも復元可能であるため、パリティパケットＥの再送が要求されてもよい。このように、再送を要求するパリティパケットの選択が可能な場合もある。
【００９０】
再送を要求するパリティパケットの選択が可能な場合、再送するパリティパケットの数がより少なくなるように、再送を要求するパリティパケットの組み合わせを選択することが好ましい。
【００９１】
例えば、２つのデータパケットを復号可能にするパリティパケットＸと、４つのデータパケットを復号可能にするパリティパケットＹとがある場合、パリティパケットＹの再送を要求する方が好ましい。このような方法でパリティパケットを選択することにより、効率的に全てのデータパケットを復元することが可能になる。
【００９２】
以上説明したように、ＲＰＳ符号は、所定数のデータパケットを送信するために用いるパリティパケットの数を自由に変更することができる。そのため、パケットロス率が低い伝送路ではパリティパケットの数を少なくし、パケットロス率が高い伝送路ではパリティパケットの数を多くするなどの調整を行うことができる。
【００９３】
（データ送信方法について）
図９は、第２の実施の形態に係るデータの送信方法の例を示した図である。図９の例は、送信側のアプリケーションソフトウェアＡT、ＢTから、それぞれ受信側のアプリケーションソフトウェアＡR、ＢRへとデータＤA、ＤBを送信する処理を示している。
【００９４】
アプリケーションソフトウェアＡTから提供されたデータＤAのデータパケットは、例えば、ミドルウェアＭTによりブロックＢＬ1に割り当てられる。但し、図９の例において、ミドルウェアＭTは、ブロックＢＬ1に割り当て可能なデータ量の全てをデータＤAのデータパケットで満たすような割り当てを行わない。そのため、データＤAのデータパケットの割り当て後も、ブロックＢＬ1には割り当て可能なデータ量が残存する。
【００９５】
ミドルウェアＭTは、残存するデータ量の分だけ、アプリケーションソフトウェアＢTから提供されたデータＤBのデータパケットをブロックＢＬ1に割り当てる。同様に、ミドルウェアＭTは、ブロックＢＬ2、…、ＢＬNに対してもデータＤA、ＤBのデータパケットを公平に割り当てる。
【００９６】
ミドルウェアＭTは、ブロックＢＬ1に割り当てたデータパケットをＲＰＳ符号化してＲＰＳ符号ＲＰＳ1を生成する。同様に、ミドルウェアＭTは、ブロックＢＬ2、…、ＢＬNにそれぞれ対応するＲＰＳ符号ＲＰＳ2、…、ＲＰＳNを生成する。ＲＰＳ符号ＲＰＳ1、…、ＲＰＳNは、ＵＤＰに従って受信側の情報処理装置１３０上で動作しているミドルウェアＭRへと送信される。
【００９７】
ミドルウェアＭRは、ＲＰＳ符号ＲＰＳ1をＲＰＳ復号してブロックＢＬ1に割り当てられたデータパケットを復元する。同様に、ミドルウェアＭRは、ブロックＢＬ2、…、ＢＬNにそれぞれ割り当てられたデータパケットを復元する。また、ミドルウェアＭRは、復元したデータパケットをセッション毎に分類し、アプリケーションソフトウェアＡTに対応するデータＤA、及びアプリケーションソフトウェアＢTに対応するデータＤBを復元する。そして、ミドルウェアＭRは、データＤAをアプリケーションソフトウェアＡRに入力し、データＤBをアプリケーションソフトウェアＢRに入力する。
【００９８】
上記の方法でも図６の例と同様にＵＤＰに従ってデータを送信するため、送達確認の頻度を抑制することができる分だけスループットを向上させることができる。また、データがＲＰＳ符号化されるため、伝送路で一部のＲＰＳ符号が消失してもデータを復元することができる。そのため、データ転送の確実性が向上する。また、消失訂正能力の高いＲＰＳ符号を適用することで、再送要求の頻度が低減され、スループットがさらに向上する。
【００９９】
さらに、１つのブロックに対し、アプリケーションソフトウェアＡT、ＢTからそれぞれ提供されたデータＤA、ＤBが公平に割り当てられるため、１つのブロックを１つのアプリケーションソフトウェアが占有する場合と比べて、他のアプリケーションソフトウェアのデータ送信の遅延を抑制できる。その結果、アプリケーションソフトウェアＡT、ＢTの公平性を確保することができる。
【０１００】
ところで、上記の方法を用いる場合、１つのブロックに複数のアプリケーションソフトウェアから提供されるデータのデータパケットが混在することになる。そのため、データパケットに含まれるヘッダには、図１０に示すように、セッションを識別するための識別情報（セッションＩＤ）が含まれる。図１０は、第２の実施の形態に係るデータパケットの構造例を示した図である。
【０１０１】
図１０に示すように、データパケットは、ヘッダ部及びデータ部を有する。データ部には、アプリケーションソフトウェアから提供されるデータが含まれる。ヘッダ部には、セッションＩＤ及びデータ長を示す情報が含まれる。
【０１０２】
セッションＩＤは、例えば、アプリケーションソフトウェアＡTとミドルウェアＭTとの間で確立したセッションを特定するための識別情報である。受信側でデータパケットに含まれるセッションＩＤを利用することで、セッション毎にデータパケットを仕分けることができるようになる。
【０１０３】
上記のデータ送信方法によれば、あるアプリケーションソフトウェアが多量のデータを続けて入力し、そのデータが複数のブロックを占有してしまう場合や頻繁に再送要求が行われるような場合でも、他のアプリケーションソフトウェアが長い間待たされることが少なくなる。
【０１０４】
ところで、送信側のアプリケーションソフトウェアと送信側のトランスポート層との間では複数のポート番号（セッション）が使われる。同様に、受信側のアプリケーションソフトウェアと受信側のトランスポート層との間では複数のポート番号（セッション）が使われる。しかし、送信側のトランスポート層と受信側のトランスポート層との間（ミドルウェアＭT、ＭR間（ＷＡＮ区間））では、１つのポート番号（セッション）しか使われない。つまり、１つのブロックに複数セッション分のデータを詰め込むことに伴い、ポート変換が発生し、ＷＡＮ区間では１つのセッションへの多重化が行われていることになる。
【０１０５】
（送信処理について）
次に、図１１を参照しながら、第２の実施の形態に係る送信処理の流れについて説明する。図１１は、第２の実施の形態に係る送信処理の流れについて説明した図である。なお、図１１に示した送信処理は送信側の情報処理装置１１０により実行される。
【０１０６】
（Ｓ１０１）制御部１１６は、ダミーパケットを受信側の情報処理装置１３０に送信し、受信側の情報処理装置１３０から処理速度の情報を取得する。なお、処理速度の情報は、定期的に取得されるようにしてもよい。
【０１０７】
（Ｓ１０２）制御部１１６は、受信側の情報処理装置１３０から取得した処理速度の情報に基づいてセッション毎に割り当てる帯域を設定する。
制御部１１６は、受信側の情報処理装置１３０へ出力可能なデータの送信レートを、取得した処理速度に設定する。制御部１１６は、この送信レートをセッション毎に割り当てる。まず、制御部１１６は、設定した送信レートをアプリケーションソフトウェアの数で分割する。あるアプリケーションソフトウェアが複数のセッションを確立している場合、制御部１１６は、そのアプリケーションソフトウェアに割り当てた送信レートをセッション数でさらに分割し、分割した送信レートをセッション毎に割り当てる。
【０１０８】
（Ｓ１０３）データ入力部１１１は、１つのアプリケーションソフトウェアからデータを取得する。
（Ｓ１０４）パケット生成部１１２は、１つのアプリケーションソフトウェアから取得したデータに対し、セッションの識別情報（セッションＩＤ）を含むヘッダを付加してデータパケットを生成する。
【０１０９】
（Ｓ１０５）ブロック化部１１３は、Ｓ１０４で生成されたデータパケットをブロックに割り当てる。
（Ｓ１０６）１つのブロックに割り当て可能な数のデータパケットが１つのブロックに割り当てられた場合（ブロックが満杯になった場合）、処理はＳ１０７に進む。一方、ブロックが満杯になっていない場合、処理はＳ１０３に進む。
【０１１０】
（Ｓ１０７）消失訂正符号化部１１４は、ブロックに割り当てられたデータパケットをＲＰＳ符号化してパリティパケットを生成する。
（Ｓ１０８）通信部１１５は、Ｓ１０６の処理で生成されたパリティパケットを受信側の情報処理装置１３０へと送信する。Ｓ１０８の処理を終えると、図１１に示した一連の処理は終了する。
【０１１１】
（処理速度の取得方法について）
ここで、図１２を参照しながら、Ｓ１０１の処理に係る処理速度の取得方法について処理の流れをさらに説明する。図１２は、第２の実施の形態に係る処理速度の取得方法について説明した図である。
【０１１２】
（Ｓ１３１）制御部１１６は、予め用意されたダミーデータを取得する。
（Ｓ１３２）パケット生成部１１２は、ダミーデータにヘッダを付加してダミーパケットを生成する。ブロック化部１１３は、ダミーパケットをブロックに割り当てる。
【０１１３】
（Ｓ１３３）消失訂正符号化部１１４は、ブロックに割り当てられたダミーパケットをＲＰＳ符号化してダミーのパリティパケットを生成する。
（Ｓ１３４）通信部１１５は、Ｓ１３３の処理で生成されたダミーのパリティパケットを受信側の情報処理装置１３０へと送信する。このダミーのパリティパケットを受信した受信側の情報処理装置１３０は、ダミーパケットの復号処理に要した処理時間及びダミーデータのデータ量から処理速度を計算し、処理速度の情報を送達確認に含めて送信する。
【０１１４】
（Ｓ１３５）通信部１１５は、処理速度の情報を含む送達確認を受信する。また、制御部１１６は、送達確認から処理速度の情報を抽出する。Ｓ１３５の処理を終えると、図１２に示した一連の処理は終了する。
【０１１５】
（処理速度の計測処理について）
次に、図１３を参照しながら、受信側の情報処理装置１３０による処理速度の計測処理の流れについて説明する。図１３は、第２の実施の形態に係る処理速度の計測方法について説明した図である。
【０１１６】
（Ｓ１５１）通信部１３１は、送信側の情報処理装置１１０からダミーのパリティパケットを受信する。
（Ｓ１５２）消失訂正復号部１３２は、ダミーのパリティパケットに対するＲＰＳ復号の処理を開始すると共に、処理時間の計測を開始する。
【０１１７】
（Ｓ１５３）消失訂正復号部１３２は、ダミーのパリティパケットに対するＲＰＳ復号の処理を実行し、元のダミーパケットを復元する。
（Ｓ１５４）消失訂正復号部１３２は、ダミーパケットの復元を完了し、処理時間の計測を終了する。
【０１１８】
（Ｓ１５５）消失訂正復号部１３２は、復元したダミーデータのデータ量及び計測した処理時間に基づいて、単位時間当たりに復元できたデータ量を示す処理速度を計算する。
（Ｓ１５６）通信部１３１は、ダミーデータの復元完了を通知するための送達確認にＳ１５５の処理で計算された処理速度の情報を付加する。
【０１１９】
（Ｓ１５７）通信部１３１は、送達確認を送信側の情報処理装置１１０に送信する。Ｓ１５７の処理を終えると、図１３に示した一連の処理は終了する。
（受信処理について）
次に、図１４を参照しながら、第２の実施の形態に係る受信処理の流れについて説明する。図１４は、第２の実施の形態に係る受信処理の流れについて説明した図である。図１４に示した受信処理は受信側の情報処理装置１３０により実行される。
【０１２０】
（Ｓ１７１）通信部１３１は、１つのブロック分のパリティパケットを受信する。
（Ｓ１７２）消失訂正復号部１３２は、パリティパケットの誤り検出を実行する。
（Ｓ１７３）消失訂正復号部１３２は、誤りが検出されなかったパリティパケットを用いてＲＰＳ復号の処理を実行し、データパケットを復元する。
【０１２１】
（Ｓ１７４）Ｓ１７３の処理で１つのブロック分の全てのデータパケットが復元された場合、処理はＳ１７６へと進む。一方、Ｓ１７３の処理で一部のデータパケットが復元できなかった場合、処理はＳ１７５へと進む。
【０１２２】
（Ｓ１７５）再送制御部１３３は、Ｓ１７３の処理で復元できなかったデータパケットの復元に用いるパリティパケットの再送を送信側の情報処理装置１１０に要求する。この要求に応じて送信側の情報処理装置１１０からパリティパケットが再送され、通信部１３１により再送されたパリティパケットが受信された場合、処理はＳ１７３に進む。
【０１２３】
（Ｓ１７６）通信部１３１は、全てのデータパケットを受信した旨を通知する送達確認を送信側の情報処理装置１１０に送信する。
（Ｓ１７７）整列部１３４は、データパケットの到達順序が入れ替わっている場合にデータパケットの入れ替わりを修正する。
【０１２４】
（Ｓ１７８）データ出力部１３５は、データパケットに含まれるセッションＩＤから宛先ポート番号を判定し、宛先ポート番号を指定して当該データパケットのデータをアプリケーションソフトウェアに出力する。Ｓ１７８の処理を終えると、図１４に示した一連の処理は終了する。
【０１２５】
以上説明したように、ＵＤＰに従ってデータを送信することで、送達確認の頻度を抑制することができる分だけスループットを向上させることができる。また、データがＲＰＳ符号化されるため、伝送路で一部のＲＰＳ符号が消失してもデータを復元することができる。そのため、データ転送の確実性が向上する。また、消失訂正能力の高いＲＰＳ符号を適用することで、再送要求の頻度が低減され、スループットがさらに向上する。また、各ブロックに対し、複数のアプリケーションソフトウェアからそれぞれ提供されたデータが公平に割り当てられるため、各ブロックに割り当てられたデータの処理が完了するまで一方のアプリケーションソフトウェアが待たされることがない。その結果、アプリケーションソフトウェア間の公平性を確保することができる。
【０１２６】
ところで、これまでは一例としてＲＰＳ符号化方式を前提に説明を進めてきたが、ＲＰＳ符号に代えてＬＤＰＣ符号やターボ符号などの誤り訂正符号を適用する方法も考えられる。この場合、符号化の対象とするデータパケット群に、複数の異なるアプリケーションソフトウェアから提供されたデータのデータパケットを混在させ、受信側で復元したデータパケットの仕分けを行うことにより、アプリケーションソフトウェア間の公平性を確保することができる。また、受信側の処理速度に応じて符号長を調整する方法や、符号化対象とするデータのデータ量を調整する方法を適用することで、安定して高いスループットを維持することができる。
【０１２７】
以上、第２の実施の形態について説明した。
【符号の説明】
【０１２８】
７、１０、１１０、１３０  情報処理装置
１１、１１５、１３１  通信部
１２、１１６  制御部
２１、２２、２３、２４  データ
２５  処理時間情報
１００  通信システム
１１１  データ入力部
１１２  パケット生成部
１１３  ブロック化部
１１４  消失訂正符号化部
１３２  消失訂正復号部
１３３  再送制御部
１３４  整列部
１３５  データ出力部
【図１】
2014131093.tif 000003
【図２】
2014131093.tif 000004
【図３】
2014131093.tif 000005
【図４】
2014131093.tif 000006
【図５】
2014131093.tif 000007
【図６】
2014131093.tif 000008
【図７】
2014131093.tif 000009
【図８】
2014131093.tif 000010
【図９】
2014131093.tif 000011
【図１０】
2014131093.tif 000012
【図１１】
2014131093.tif 000013
【図１２】
2014131093.tif 000014
【図１３】
2014131093.tif 000015
【図１４】
2014131093.tif 000016