(57)【要約】  誤り訂正符号を用いる場合の転送データのサイズが小さい通信における転送効率を向上させる。情報処理装置は、誤り訂正符号により送信データから作成される符号化データブロックのサイズが所定しきい値より大きく且つパケットの最大長よりも小さい場合には、１つのパケットに１つの符号化データブロックを格納し、符号化データブロックのサイズが所定しきい値以下である場合には、１つのパケットに複数の符号化データブロックを格納するパケット生成部と、パケット生成部によって生成されたパケットを送信する送信部と、を含む。
2016051451.tif 000002
【特許請求の範囲】
【請求項１】
誤り訂正符号により送信データから作成される複数の符号化データブロックのサイズに応じて、１つのパケットに前記符号化データブロックを複数格納するパケット生成部と、
前記パケット生成部によって生成されたパケットを送信する送信部と、
を含む情報処理装置。
【請求項２】
前記パケット生成部は、前記符号化データブロックのサイズが所定しきい値より大きく且つパケットの最大長よりも小さい場合には、１つのパケットに１つの符号化データブロックを格納し、前記符号化データブロックのサイズが所定しきい値以下である場合には、１つのパケットに複数の前記符号化データブロックを格納する、
請求項１に記載の情報処理装置。
【請求項３】
前記送信データを前記誤り訂正符号の符号長Ｎで割って前記符号化データブロックのサイズを求め、１つのパケットに格納される符号化データブロックの数を判定する判定部、
をさらに備える請求項１又は２に記載の情報処理装置。
【請求項４】
前記判定部は、パケットロス率を用いて、送信するパケット数を判定する、
請求項３に記載の情報処理装置。
【請求項５】
プロセッサとメモリとを含む情報処理装置において、
前記プロセッサが、
誤り訂正符号により送信データから作成される複数の符号化データブロックのサイズに応じて、１つのパケットに前記符号化データブロックを複数格納し、
前記複数の符号化データブロックが格納されたパケットを送信する、
情報処理方法。
【請求項６】
情報処理装置に、
誤り訂正符号により送信データから作成される複数の符号化データブロックのサイズに応じて、１つのパケットに前記符号化データブロックを複数格納させ、
前記複数の符号化データブロックが格納されたパケットを送信させる、
ための情報処理プログラム。
【請求項７】
誤り訂正符号により送信データから作成される複数の符号化データブロックのサイズに応じて、１つのパケットに前記符号化データブロックを複数格納するパケット生成部と、
前記パケット生成部によって生成されたパケットを送信する送信部と、
を含む送信側装置と、
前記送信側装置から前記パケットを受信する受信部と、
前記パケットから複数の符号化データブロックを取得する分割部と、
前記パケットから取得された複数の符号化データブロックを前記誤り訂正符号により復号して前記送信データを取得する復号部と、
を含む受信側装置と、
を備える情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、情報処理プログラム、及び、情報処理システムに関する。
【背景技術】
【０００２】
図１は、遠距離データ転送におけるパケットロス発生時の処理の一例を示す図である。遠距離データ転送では、拠点Ａ、Ｂ間の距離が遠いため、通信遅延が発生し、受信側装置からの確認応答が送信側装置に届くまでの時間が長くなる。通信経路でパケットロスが発生した場合には、受信側装置が、パケットが届かなかったことを検出してから送信側装置に再送要求を送信し、送信側装置は、該再送要求を受信してデータを再送する。そのため、パケットロスが発生した場合には、データが受信側装置に届くまでにさらに時間がかかる。【０００３】
通信経路でパケットロスが発生した場合の遅延を軽減する方法の一つに、誤り訂正符号技術がある。誤り訂正符号は、送信データに対する冗長データを用いることで、パケットロスが発生しても、受信側装置で受信されたデータから元のデータを復元可能にする技術である。誤り訂正符号には、例えば、パリティ符号、Ｒｅｅｄ−Ｓｏｌｏｍｏｎ符号、ＲＰＳ（Random Parity Stream）符号、Ｒａｐｔｏｒ符号等がある。【０００４】
例えば、図１では、パリティ符号が用いられる場合の例が示されている。送信側装置は、パケット１とパケット２とを足し合わせて冗長データであるパケットＰを生成し、パケット１、パケット２、パケットＰを送信する。通信経路上でパケット２が損失してしまった場合には、受信側装置は、パケット１とパケットＰとからパケット２を復元する。これによって、パケット２の再送要求及び再送の処理が省かれ、パケットロスの際の遅延を軽減することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−２５８７９６号公報
【特許文献２】特開２００９−１８８５８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、誤り訂正符号を用いることによって、送信効率が悪くなる場合があった。例えば、パケットのサイズが小さい通信や、小容量ファイルの転送の場合である。【０００７】
図２は、ＲＰＳ符号の処理の一例を示す図である。また、図２では、入力データのサイズが大きい場合と小さい場合との例が示されている。図２では、符号長Ｎ＝４とする。【０００８】
ＲＰＳ符号では、まず、例えば、入力データＡ、Ｂ、Ｃが１つに合わされてから符号長Ｎ（＝４）個に分割され、サブデータブロック１、２、３、４が作成される。次に、サブデータブロック１、２、３、４間で排他的論理和（ＸＯＲ）演算が行われ、ＸＯＲ演算結果である符号化データブロックがＫ（Ｋ＞Ｎ）個作成される。Ｋ個の符号化データブロックが冗長データである。Ｋ個の符号化データブロックのそれぞれに、ＸＯＲ演算のデータブロックの組み合わせの情報がヘッダとして付与され、送信される。【０００９】
上述の処理は、送信データ量の大小にかかわりなく行われる。例えば、図２に示されるように、入力データがサイズの小さいデータＡの場合でも、データＡが更に小さいサブデータブロック１、２、３、４に４分割され、これらのサブデータブロック１〜４からＫ個の符号化データブロックが作成される。ＲＰＳ符号の場合、排他的論理和演算で符号化データブロックが作成されるので、符号化データブロックのサイズは、サブデータブロックのサイズと同じである。そのため、１つのパケットにおいて、ヘッダ部分の割合が大きく、符号化データブロックを格納するペイロード部の割合が小さい。送信データのサイズが小さい通信は、例えば、リモートデスクトップの操作情報の転送や、サイズの小さいファイルの転送による通信がある。【００１０】
例えば、ＩＰパケットは最大１５００バイトと最大長が決まっている。ＲＰＳ符号において、送信データ量が多い場合には、ペイロード部を最大限に使用してデータを送信することができる。しかしながら、送信データ量が少ない場合には、ペイロード部の割合が小さくなり、同じ数のパケットを送信しても、１つのパケットに含まれるデータ量が小さいので、単位時間に送信されるデータ量は少なくなる。そのため、転送効率が悪く、データの転送速度が最大値まで出せなかったり、遅延が大きくなったりすることがある。このような問題は、ＲＰＳ符号に限らず、パリティ符号、Ｒｅｅｄ−Ｓｏｌｏｍｏｎ符号、Ｒａｐｔｏｒ符号等のＮ個の送信データからＫ個の符号化データブロックが作成されるその他の誤り訂正符号でも起こり得る。【００１１】
本発明の一態様は、誤り訂正符号が用いられる場合の転送データのサイズが小さい通信における転送効率を向上可能な情報処理装置、情報処理方法、情報処理プログラム、及び、情報処理システムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の態様の一つは、誤り訂正符号により送信データから作成される複数の符号化データブロックのサイズに応じて、１つのパケットに符号化データブロックを複数格納するパケット生成部と、パケット生成部によって生成されたパケットを送信する送信部と、を含む情報処理装置である。
【発明の効果】
【００１３】
開示の情報処理装置、情報処理方法、情報処理プログラム、及び、情報処理システムによれば、誤り訂正符号が用いられる場合の転送データのサイズが小さい通信における転送効率を向上させることができる。
【図面の簡単な説明】
【００１４】
【図１】遠距離データ転送におけるパケットロス発生時の処理の一例を示す図である。
【図２】ＲＰＳ符号の処理の一例を示す図である。
【図３】第１実施形態における情報処理装置の処理の一例を示す図である。
【図４】情報処理装置のハードウェア構成の一例である。
【図５】情報処理装置の機能構成の一例を示す図である。
【図６】送信パケットの構成の一例を示す図である。
【図７Ａ】送信側装置における誤り訂正符号化処理のフローチャートの一例である。
【図７Ｂ】送信側装置における誤り訂正符号化処理のフローチャートの一例である。
【図８】受信側装置における誤り訂正符号による符号化データブロックを含むパケットの受信処理のフローチャートの一例である。
【発明を実施するための形態】
【００１５】
以下、図面に基づいて、本発明の実施の形態を説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
【００１６】
＜第１実施形態＞
図３は、第１実施形態における情報処理装置の処理の一例を示す図である。第１実施形態では、情報処理装置は、誤り訂正符号によって送信データから作成した符号化データブロックのサイズに応じて、複数の符号化データブロックを１つのパケット内にまとめて送信する。これによって、転送データのサイズが小さい通信においても、パケットのペイロード部を最大限に使用することができ、転送効率を向上させることができる。
【００１７】
符号化データブロックとは、送信データに対して誤り訂正符号の処理が施されて作成されるデータブロックである。符号化データブロックは、冗長符号化データブロックともいう。また、データの消失の復元に特化した誤り訂正符号は、消失訂正符号ともいう。
【００１８】
第１実施形態では、情報処理装置は、１つの送信パケットに含める符号化データブロックの数、送信パケットの数等も決定する。なお、誤り訂正符号は、特定のものに限定されないが、第１実施形態では、ＲＰＳ符号を用いる場合を例として説明する。
【００１９】
＜装置構成＞
図４は、情報処理装置１００のハードウェア構成の一例である。情報処理装置１００は、例えば、ＰＣ（パーソナルコンピュータ）、スマートフォン、タブレット端末等の端末装置である。また、情報処理装置１００は、ネットワークの境界に位置するサーバ等であってもよい。
【００２０】
情報処理装置１００は、ＣＰＵ（Central Processing Unit）１０１、主記憶装置１０２、入力装置１０３、出力装置１０４、補助記憶装置１０５、ネットワークインタフェース１０７を備える。また、これらはバス１０９により互いに接続されている。
【００２１】
入力装置１０３は、例えば、操作ボタン、タッチパネル、キーボード、キーパッド等である。入力装置１０３から入力されたデータは、ＣＰＵ  １０１に出力される。入力装置は、例えば、マイクロフォンのような音声入力装置を含んでもよい。
【００２２】
補助記憶装置１０５は、様々なプログラムや、各プログラムの実行に際してＣＰＵ  １０１が使用するデータを格納する。補助記憶装置１０５は、例えば、ＥＰＲＯＭ（Erasable Programmable ROM）、フラッシュメモリ、又はハードディスクドライブ（Hard Disk Drive）等の不揮発性のメモリである。補助記憶装置１０５は、例えば、オペレーティングシステム（ＯＳ）、誤り訂正符号処理プログラム、その他様々なアプリケーションプログラムを保持する。誤り訂正符号処理プログラムは、アプリケーションプログラムから送信されるデータに対して誤り訂正符号の処理を行うためのプログラムである。誤り訂正符号処理プログラムは、「情報処理プログラム」の一例である。
【００２３】
主記憶装置１０２は、ＣＰＵ  １０１に、補助記憶装置１０５に格納されているプログラムをロードする記憶領域および作業領域を提供したり、バッファとして用いられたりする記憶装置である。主記憶装置１０２は、例えば、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）のような半導体メモリを含む。
【００２４】
ＣＰＵ  １０１は、補助記憶装置１０５に保持されたＯＳや様々なアプリケーションプログラムを主記憶装置１０２にロードして実行することによって、様々な処理を実行する。ＣＰＵ  １０１は、１つに限られず、複数備えられてもよい。
【００２５】
ネットワークインタフェース１０７は、ネットワークとの情報の入出力を行うインタフェースである。ネットワークインタフェース１０７は、有線のネットワークと接続するインタフェース、無線のネットワークと接続するインタフェースを含む。ネットワークインタフェース１０７は、例えば、ＮＩＣ（Network Interface Card）、無線ＬＡＮ（Local Area Network）、Ｗｉ−Ｆｉ（Wireless Fidelity）、ＷｉＭＡＸ（Worldwide Interoperability for Microwave Access）、ＬＴＥ（Long Term Evolution）、３ＧＰＰ（第三世代携帯電話システム）等の無線信号の処理回路等である。ネットワークインタフェース１０７で受信されたデータ等は、ＣＰＵ  １０１に出力される。
【００２６】
出力装置１０４は、ＣＰＵ  １０１の処理の結果を出力する。出力装置１０４は、スピーカ等の音声出力装置、ディスプレイ、プリンタを含む。
【００２７】
なお、図４に示される情報処理装置１００のハードウェア構成は、一例であり、上記に限られず、実施の形態に応じて適宜構成要素の省略や置換、追加が可能である。例えば、情報処理装置１００は、可搬記録媒体駆動装置を備え、可搬記録媒体に記録されたプログラムを実行してもよい。可搬記録媒体は、例えば、ＳＤカード、ｍｉｎｉＳＤカード、ｍｉｃｒｏＳＤカード、ＵＳＢ（Universal Serial Bus）フラッシュメモリ、ＣＤ（Compact Disc）、ＤＶＤ(Digital Versatile Disc)、Ｂｌｕ−ｒａｙ（登録商標）  Ｄｉｓｃ、又はフラッシュメモリカードのような記録媒体である。
【００２８】
また、情報処理装置１００がサーバである場合には、例えば、情報処理装置１００は、入力装置１０３、出力装置１０４を備えていなくてもよい。
【００２９】
図５は、情報処理装置１００の機能構成の一例を示す図である。図５に示される情報処理装置１００の機能構成は、情報処理装置１００のＣＰＵ１０１が誤り訂正符号処理プログラムの実行によって達成される機能構成である。誤り訂正符号処理プログラムは、データの送信処理に係るモジュールと受信処理に係るモジュールとを有する。したがって、図５では、情報処理装置１００の送信機能と受信機能とを別々に説明する。以下、情報処理装置１００の送信機能を送信側装置１として、受信機能を受信側装置２として説明する。
【００３０】
誤り訂正符号処理プログラムは、第１実施形態では、ＴＣＰ／ＩＰ参照モデルのアプリケーション層のプログラムである。ただし、これに限られず、誤り訂正符号処理プログラムは、例えば、ＴＣＰ／ＩＰ参照モデルのトランスポート層のプログラムとして作成されてもよい。また、第１実施形態では、誤り訂正符号処理プログラムは、トランスポート層のプログラムとして、ＵＤＰ（User Datagram Protocol）を用いる。ただし、これに限られず、誤り訂正符号処理プログラムは、トランスポート層のプログラムとして、ＴＣＰ（Transmission Control Protocol）を用いてもよい。
【００３１】
送信側装置１は、機能構成として、判定処理部１１、符号化処理部１２、送信パケット生成部１３、送信処理部１４、再送要求処理部１５を含む。これらの機能構成は、情報処理装置１００のＣＰＵ  １０１が補助記憶装置１０５に格納されている誤り訂正符号処理プログラムの送信処理に係るモジュールを実行することによって達成される機能構成である。なお、これらの機能構成は、ＦＰＧＡ（field-programmable gate array）等のハードウェア回路によって達成されてもよい。
【００３２】
判定処理部１１は、アプリケーションプログラムからのデータ入力を、例えば、所定の周期で受け付け、１周期の間に入力されたデータ量を処理単位とする。１周期の間にアプリケーションプログラムからデータ入力がない場合には、データ入力がないことを示すデータが入力データとなる。以降、データ入力の受け付けの周期の１周期の間に入力されたデータを入力データと称する。また、入力データには、シーケンス番号が付与される。
【００３３】
また、判定処理部１１は、受信側装置２からパケットロス率を受信する。判定処理部１１は、送信データ量とパケットロス率とに基づいて、誤り訂正符号に係るパラメータを決定する。誤り訂正符号に係るパラメータには、例えば、１つの送信パケットに含まれる符号化データブロックの数、送信パケット数、符号化データブロックの数（Ｋ）等がある。判定処理部１１の誤り訂正符号に係るパラメータの決定の処理の詳細については、後述される。判定処理部１１は、「判定部」の一例である。
【００３４】
符号化処理部１２は、判定処理部１１によって決定されたパラメータに従って、送信データに対して誤り訂正符号の処理を行い、符号化データブロックを作成する。第１実施形態では、符号化処理部１２は、ＲＰＳ符号の処理を行う。作成された符号化データブロックは、送信パケット生成部１３に出力される。
【００３５】
送信パケット生成部１３は、符号化処理部１２から符号化データブロックの入力を受け、判定処理部１１によって決定された数の符号化データブロックを１つに集約してデータ部を生成し、誤り訂正符号のヘッダを付与し、送信パケットを生成する。誤り訂正符号のヘッダの詳細については、後述する。送信パケット生成部１３は、「パケット生成部」の一例である。
【００３６】
送信処理部１４は、送信パケット生成部１３によって作成された送信パケットに、ＵＤＰヘッダ及びＩＰヘッダを付与し、ネットワークインタフェース１０７を通じてパケットを送信する。なお、誤り訂正符号処理プログラムがＴＣＰを用いる場合には、ＵＤＰヘッダの代わりにＴＣＰヘッダが付与される。送信処理部１４は、「送信部」の一例である。
【００３７】
再送要求処理部１５は、受信側装置２から再送要求を受信する。再送要求には、例えば、再送要求対象の入力データのシーケンス番号が含まれている。再送要求を受信すると、再送要求処理部１５は、符号化データブロックの再送を符号化処理部１２に指示する。再送の指示を受けると、符号化処理部１２によって該当の入力データから符号化データブロックが作成され、送信パケット生成部１３によって送信パケットが作成され、送信処理部１４によって該送信パケットが受信側装置２へ送信される。
【００３８】
次に、受信側装置２は、機能構成として、受信処理部２１、受信パケット分割部２２、復号処理部２３、再送要求処理部２４、ロス率計測部２５を含む。これらの機能構成は、情報処理装置１００のＣＰＵ  １０１が補助記憶装置１０５に格納されている誤り訂正符号処理プログラムの受信処理に係るモジュールを実行することによって達成される機能構成である。なお、これらの機能構成は、ＦＰＧＡ等のハードウェア回路によって達成されてもよい。
【００３９】
受信処理部２１は、送信側装置１から符号化データブロックを含むパケットを受信する。受信処理部２１は、受信パケットからＩＰヘッダ及びＵＤＰヘッダを取り除き、ＩＰヘッダ及びＵＤＰヘッダが取り除かれた受信パケットを受信パケット分割部２２に出力する。また、受信処理部２１は、受信パケットの情報をロス率計測部２５に出力する。
【００４０】
受信パケット分割部２２は、受信処理部２１からＩＰヘッダ及びＵＤＰヘッダが取り除かれた受信パケットの入力を受ける。すなわち、受信パケット分割部２２に入力される受信パケットは、ＲＰＳ符号のヘッダとデータ部とを含む。受信パケット分割部２２は、ＲＰＳ符号のヘッダ内の情報に基づいて、データ部から符号化データブロックを取り出す。取り出された符号化データブロックは、復号処理部２３に出力される。
【００４１】
復号処理部２３は、受信パケット分割部２２から入力される符号化データブロックに対して、ＲＰＳ符号の復号処理を行い、オリジナルデータを取得し、オリジナルデータを宛先のアプリケーションに出力する。符号化データブロックの復号に失敗した場合には、復号処理部２３は、再送要求処理部２４に通知する。
【００４２】
再送要求処理部２４は、復号処理部２３から通知を受けた場合に、送信側装置１に対して再送要求を送信する。再送要求には、例えば、再送を要求する入力データのシーケンス番号が含まれる。
【００４３】
送信側装置１の再送要求処理部１５は、再送要求を受信すると、符号化処理部１２に該当入力データの符号化データブロックの再送を通知する。符号化処理部１２、送信パケット生成部１３、送信処理部１４は、該当入力データに再度上述の処理を行い、該当入力データから生成された符号化データブロックを複数含む送信パケットを受信側装置２に再送する。なお、第１実施形態では、ＲＰＳ符号を用いる場合が想定されているので、再送される符号化データブロックは、損失されたパケットに含まれていたものと異なっていてもよい。また、再送される符号化データブロックは、生成されたすべてではなく、一部であってもよい。復元に必要最低限の数の符号化データブロックがそろえば、オリジナルデータが復元されるからである。
【００４４】
ロス率計測部２５は、受信処理部２１から受信パケットの情報の入力を受け、該情報に基づいてパケットロス率を計測し、計測結果を送信側装置１に送信する。パケットロス率の計測方法は、特定の方法に限定されず、周知の方法のいずれが用いられてもよい。パケットロス率の計測方法の一例の詳細については、後述する。
【００４５】
図６は、送信パケットの構成の一例を示す図である。図６に示される送信パケットは、送信側装置１の送信パケット生成部１３によって生成されるパケットである。送信パケットのヘッダ部は、ＲＰＳ符号に関する情報が含まれるＲＰＳ符号のヘッダである。
【００４６】
ヘッダ部には、例えば、パケットのシーケンス番号、符号長、符号化データブロック数、符号化データブロック長、入力データのシーケンス番号、入力データのサイズ、が含まれる。パケットのシーケンス番号は、送信パケット生成部１３によって送信パケットに付与される通し番号である。データ部には、符号化データブロックが１又は複数格納される。
【００４７】
パケットロス率は、例えば、以下のように求められる。パケットロス率の計測に用いられるパケット数Ｍは、ロス率計測部２５に予め設定されている。ロス率計測部２５は、送信側装置１からの受信パケット数がＭになるまで計測し、受信パケット数がＭに達したら、該Ｍ個の受信パケットのＲＰＳヘッダ内のパケットのシーケンス番号の最小値と最大値との差分を求める。該差分値をパケットロス率の計測に用いられるパケット数Ｍで割った値が、パケットロス率として求められる。ロス率計測部２５は、このような処理を繰り返し行う。
【００４８】
符号長は、ＲＰＳ符号の符号長Ｎである。符号長とは、符号化の際に組み合わせ得るデータの範囲を示しており、より具体的には、入力データ内に組み合わせの単位となる情報ブロックをいくつ設けるかを示している。言い換えれば、符号長Ｎは、１つの入力データの分割数である。
【００４９】
符号化データブロック数は、１つの送信パケットに含まれる符号化データブロックの数である。符号化データブロック数は、判定処理部１１によって決定される（後述）。
【００５０】
符号化データブロック長は、１つの符号化データブロックのサイズである。符号化データブロック長は、判定処理部１１によって、入力データのサイズを符号長で割ることによって求められる。
【００５１】
入力データのシーケンス番号は、入力データを識別するものであって、例えば、判定処理部１１によって、データの入力を受け付ける所定の周期で受信された入力データに対して付与される通し番号である。入力データのシーケンス番号及び入力データのサイズによって、受信側装置２はひとかたまりの入力データの始まりと終りとを検出することができる。
【００５２】
なお、送信パケットの構成は一例であり、ＲＰＳ符号のヘッダ内に含まれる情報は、図６に示されるものに限定されない。例えば、入力データのシーケンス番号と入力データのサイズとは、ＲＰＳ符号のヘッダ内ではなく、符号化データブロックそれぞれに付与されていてもよい。また、ロス率計測部２５のパケットロス率の計測方法は、上述のものに限定されない。
【００５３】
＜処理の流れ＞
図７Ａ及び図７Ｂは、送信側装置１における誤り訂正符号化処理のフローチャートの一例である。図７Ａに示されるフローチャートは、アプリケーションプログラムからのデータ入力が開始されたのち、データ入力を受け付ける所定の周期で実行される。
【００５４】
ＯＰ１では、判定処理部１１は、入力データのサイズ（Ｓｂ）を求める。次に処理がＯＰ２に進む。
【００５５】
ＯＰ２では、判定処理部１１は、入力データを符号長Ｎ個に分割し、Ｎ個のサブブロックデータを生成する。次に処理がＯＰ３に進む。
【００５６】
ＯＰ３では、判定処理部１１は、入力データのサイズ（Ｓｂ）を符号長Ｎで割って、符号化データブロックのサイズ（Ｓｒ）を求める。次に処理がＯＰ４に進む。
【００５７】
ＯＰ４では、判定処理部１１は、符号化データブロックのサイズ（Ｓｒ）がペイロードのサイズよりも大きいか否かを判定する。この判定は、１つの符号化データブロックが１つの送信パケットに納まるか否かの判定である。ペイロードのサイズは、例えば、ＩＰパケットの最大長１５００バイトから、ＩＰヘッダ、ＵＤＰヘッダ、ＲＰＳ符号のヘッダのサイズを差し引いた値である。符号化データブロックのサイズ（Ｓｒ）がペイロードのサイズよりも大きい場合には（ＯＰ４：ＹＥＳ）、処理がＯＰ５に進む。符号化データブロックのサイズ（Ｓｒ）がペイロードのサイズ以下である場合には（ＯＰ４：ＮＯ）、処理がＯＰ６に進む。
【００５８】
ＯＰ５では、符号化データブロックのサイズ（Ｓｒ）がペイロードのサイズよりも大きく、１つの符号化データブロックが１つの送信パケットに納まらないので、判定処理部１１は、入力データのサイズ（Ｓｂ）を調整する。入力データのサイズ（Ｓｂ）は、ペイロードサイズのＮ倍に調整される。入力データの余りは、次の処理単位の入力データに含められる。次に処理がＯＰ１に戻り、再度ＯＰ１からＯＰ４の処理が行われる。
【００５９】
ＯＰ６では、判定処理部１１は、ペイロードサイズをしきい値で割った値より符号化データブロックのサイズ（Ｓｒ）が大きいか否かを判定する。この判定は、１つの送信パケットに２つ以上の符号化データブロックを格納できるか否かの判定である。しきい値は、例えば、２や３の正の整数である。ペイロードサイズをしきい値で割った値より符号化データブロックのサイズ（Ｓｒ）が大きい場合には（ＯＰ６：ＹＥＳ）、処理がＯＰ７に進む。符号化データブロックのサイズ（Ｓｒ）がペイロードサイズをしきい値で割った値以下の場合には（ＯＰ６：ＮＯ）、処理がＯＰ８に進む。
【００６０】
ＯＰ７では、ペイロードサイズをしきい値で割った値より符号化データブロックのサイズ（Ｓｒ）が大きく、１つの送信パケットに２つ以上の符号化データブロックを格納することができない。そのため、判定処理部１１は、１パケット内の符号化データブロック数（Ｎｒ）を１に設定する。次に処理がＯＰ９に進む。
【００６１】
ＯＰ８では、符号化データブロックのサイズ（Ｓｒ）がペイロードサイズをしきい値で割った値以下であり、１つの送信パケットに２つ以上の符号化データブロックを格納することができるので、判定処理部１１は、１パケット内の符号化データブロック数（Ｎｒ）を求める（図３参照）。１パケット内の符号化データブロック数（Ｎｒ）は、ペイロードサイズを符号化データブロックのサイズ（Ｓｒ）で割ることによって求められる。ペイロードサイズを符号化データブロックのサイズ（Ｓｒ）で割った値が小数点を含む場合には、小数点以下を切り捨てた値を１パケット内の符号化データブロック数（Ｎｒ）とする。次に処理がＯＰ９に進む。
【００６２】
ＯＰ９では、判定処理部１１は、オリジナルデータを復元するために最低限必要な送信パケット数（Ｎｐ）を求める。以降、オリジナルデータを復元するために最低限必要な送信パケット数（Ｎｐ）を、最小パケット数（Ｎｐ）と表記する（図３参照）。例えば、ＲＰＳ符号では、少なくとも符号長Ｎ個の符号化データブロックがあれば、オリジナルデータを復元することが可能である。そのため、第１実施形態では、最小パケット数（Ｎｐ）は、符号長Ｎを１パケット内の符号化データブロック数（Ｎｒ）で割った値となる。符号長Ｎを１パケット内の符号化データブロック数（Ｎｒ）で割った値が小数点を含む場合には、小数点以下を繰り上げた値を最小パケット数（Ｎｐ）とする。次に処理がＯＰ１０に進む。
【００６３】
ＯＰ１０では、判定処理部１１は、パケットロス率が考慮された送信パケット数（Ｒｐ）を求める。以降、パケットロス率が考慮された送信パケット数を必要パケット数（Ｒｐ）と表記する（図３参照）。必要パケット数（Ｒｐ）は、例えば、最小パケット数（Ｎｐ）に（１＋パケットロス率（Ｎｌ）））を乗じた値である。最小パケット数（Ｎｐ）に（１＋パケットロス率（Ｎｌ）））を乗じた値が小数点を含む場合には、小数点以下を切り捨てた値を必要パケット数（Ｒｐ）とする。なお、これに限られず、小数点以下を繰り上げた値を必要パケット数（Ｒｐ）としてもよい。また、必要パケット数（Ｒｐ）の決定方法は、これに限られず、例えば、最小パケット数（Ｎｐ）に、１／（１−パケットロス率（Ｎｌ））を乗じた値であってもよい。次に処理がＯＰ１１に進む。
【００６４】
ＯＰ１１では、判定処理部１１は、必要パケット数（Ｒｐ）のパケットに格納される符号化データブロック数（Ｒｒ）を求める。以降、必要パケット数（Ｒｐ）のパケットに格納される符号化データブロックの数（Ｒｒ）を必要符号化データブロック数（Ｒｒ）と表記する（図３参照）。必要符号化データブロック数（Ｒｒ）は、必要パケット数（Ｒｐ）に１パケット内のデータブロック数（Ｎｒ）を乗じた値となる。次に、処理がＯＰ１２に進む。
【００６５】
ＯＰ１２では、符号化処理部１２は、ＲＰＳ符号に基づいて、入力データから必要符号化データ数（Ｒｒ）個の符号化データブロックを生成する。次に処理がＯＰ１３に進む。
【００６６】
ＯＰ１３では、送信パケット生成部１３は、１パケット内のデータブロック数（Ｎｒ）分の符号化データブロックを１つにまとめて送信パケットのデータ部を生成する。次に処理がＯＰ１４に進む。
【００６７】
ＯＰ１４では、送信パケット生成部１３は、送信パケットのヘッダ部に、入力データのサイズ（Ｓｂ）、符号化データブロックのサイズ（Ｓｒ）、１パケット内のデータブロック数（Ｎｒ）等の情報を格納し（図６参照）、送信パケットを生成する。その後、送信パケットは送信処理部１４に出力され、受信側装置２へ送信され、図７Ｂに示される処理が終了する。
【００６８】
なお、図７Ａ及び図７Ｂに示される処理は、一例であって、適宜変更可能である。例えば、１パケット内に含まれる符号化データブロック数（Ｎｒ）、最小パケット数（Ｎｐ）、必要パケット数（Ｒｐ）は、あらかじめ決められた固定値であり、ＯＰ８〜ＯＰ１０の処理は省略されてもよい。また、データ入力を受け付ける所定の周期の１周期分の入力データのサイズ（Ｓｂ）が所定のしきい値よりも小さい場合には、入力データのサイズ（Ｓｂ）が所定のしきい値を超えるサイズになるまで、図７Ａのフローチャートの開始を待機してもよい。
【００６９】
また、例えば、図７Ａ及び図７Ｂに示される処理の開始条件を、所定のアプリケーションに限定することも可能である。所定のアプリケーションは、例えば、リモートデスクトップ等の転送データ量の少ないアプリケーションである。この場合には、入力データサイズ（Ｓｂ）が小さく、符号化データブロックがペイロードサイズをしきい値で割った値よりも小さくなることが予め判明しているので、ＯＰ４の処理は省略されてもよい。
【００７０】
図８は、受信側装置２における誤り訂正符号による符号化データブロックを含むパケットの受信処理のフローチャートの一例である。図８に示されるフローチャートは、例えば、受信側装置２が、送信側装置１から、誤り訂正符号処理プログラムのパケットを受信すると開始される。
【００７１】
ＯＰ２１では、受信パケット分割部２２は、受信パケットのＲＰＳ符号のヘッダから、符号化データブロックのサイズ（Ｓｒ）、１パケットに含まれる符号化データブロック数（Ｎｒ）、符号長Ｎ、入力データのシーケンス番号を取得する。次に処理がＯＰ２２に進む。
【００７２】
ＯＰ２２では、受信パケット分割部２２は、受信パケットから取得した入力データのシーケンス番号に該当する入力データの復号が成功しているか否かを判定する。該当する入力データの復号が既に成功している場合には（ＯＰ２２：ＹＥＳ）、該当する入力データの復号処理を行わなくともよいので、図８に示される処理が終了し、次の受信パケットの処理が開始される。該当する入力データの復号がまだ成功していない場合には（ＯＰ２２：ＮＯ）、処理がＯＰ２３に進む。
【００７３】
ＯＰ２３では、受信パケット分割部２２は、受信パケットからＮｒ個の符号化データブロックを取得する。符号化データブロックのサイズは、ＯＰ２１で取得された符号化データブロックのサイズ（Ｓｒ）である。取得された符号化データブロックは、復号処理部２３に出力される。次に処理がＯＰ２４に進む。
【００７４】
ＯＰ２４では、復号処理部２３は、該当の入力データについて受信した符号化データブロックの数が、符号長Ｎ以上であるか否かを判定する。この判定は、受信した符号化データブロックが、オリジナルデータの復元に最低限必要な数に達しているか否かの判定である。該当の入力データについて受信した符号化データブロックの数が符号長Ｎ以上である場合には（ＯＰ２４：ＹＥＳ）、処理がＯＰ２５に進む。該当の入力データについて受信した符号化データブロックの数が符号長Ｎ未満である場合には（ＯＰ２４：ＮＯ）、復号処理を実行せずに、図８に示される処理が終了し、次の受信パケットの処理が開示される。
【００７５】
ＯＰ２５では、復号処理部２３は、符号化データブロックを復号し、オリジナルデータを復元する。復元方法は、第１実施形態では、ＲＰＳ符号に準ずる。次に処理がＯＰ２６に進む。
【００７６】
ＯＰ２６では、復号処理部２３は、オリジナルデータの復号に成功したか否かを判定する。オリジナルデータの復号に成功した場合には（ＯＰ２６：ＹＥＳ）、処理がＯＰ２７に進む。オリジナルデータの復号に失敗した場合には（ＯＰ２６：ＮＯ）、図８に示される処理が終了し、次の受信パケットについて処理が開始される。
【００７７】
ＯＰ２７では、復号処理部２３は、以前の入力データで復号できていないものがあるか否かを判定する。例えば、復号が失敗した場合には、処理が保留状態として、該入力データについての符号化データブロック等はバッファされている。この判定は、例えば、該当のバッファ内の以前の入力データの符号化データブロックの有無によって判定される。以前の入力データで復号できていないものがある場合には（ＯＰ２７：ＹＥＳ）、処理がＯＰ２８に進む。以前の入力データで復号できていないものがない場合には（ＯＰ２７：ＮＯ）、図８に示される処理が終了し、次の受信パケットについて処理が開始される。
【００７８】
ＯＰ２８では、復号処理部２３は、再送要求処理部２４に、復号ができていない入力データのシーケンス番号を通知し、再送要求処理部２４は、送信側装置１に対して該入力データの再送要求を送信する。再送要求には、例えば、復号ができていない入力データのシーケンス番号が含まれている。その後図８に示される処理が終了し、次の受信パケットについて処理が開始される。
【００７９】
なお、図８に示される処理は一例であって、受信側装置２の処理は、これに限定されない。例えば、送信側装置１との通信における最後尾の受信パケットについて、該当の入力データの復号ができない場合や、復号に最低限必要な符号化データブロックがそろわない場合には、所定の時間が経過した後、該当の入力データについて再送要求が行われるようにしてもよい。
【００８０】
＜第１実施形態の作用効果＞
第１実施形態では、送信側装置が、送信データに誤り訂正符号を施す場合に、符号化データブロックのサイズに応じて、複数の冗長符号化データブロックを１つのパケットに格納して送信する。これによって、転送データ量が少ないアプリケーションの通信の場合でも、１つのパケットのデータ部を最大長に近い値まで使用することができ、オーバーヘッドを減らすことができる。１つのパケットで送信される符号化データブロックの量が増えるので、転送速度を向上させることができる。したがって、第１実施形態によれば、誤り訂正符号を用いる場合の転送データ量が少ない通信におけるデータ転送効率を向上させることができる。
【００８１】
＜その他＞
第１実施形態では、誤り訂正符号の一例としてＲＰＳ符号が用いられる場合について説明された。ただし、その他の誤り訂正符号が用いられる場合でも、送信側装置１は、符号化データブロックのサイズに応じて、複数の冗長符号化データブロックを１つのパケットに格納して送信し、受信側装置２は該パケットから複数の冗長符号化データブロックを取得することができる。ＲＰＳ符号以外の誤り訂正符号が用いられる場合には、送信側装置１の判定処理部１１、符号化処理部１２、送信パケット生成部１３、受信側装置２の受信パケット分割部２２、復号処理部２３の処理を該当の誤り訂正符号に応じた処理に変更することによって実現可能である。
【００８２】
また、第１実施形態では、情報処理装置１００には、端末装置が想定されているが、情報処理装置１００は、ゲートウェイ装置やサーバ等であってもよい。例えば、情報処理装置１００は、複数の端末を収容するゲートウェイ装置である場合には、入力データは、複数の端末からの受信データとなる。なお、情報処理装置１００がゲートウェイ装置である場合には、送信側装置１は、データの送信元及び宛先ＩＰアドレス、送信元及び宛先ポート番号等を識別せずに、端末から受信するデータから符号化データブロックを作成して受信側装置２に送信する。受信側装置２では、符号化データブロックをオリジナルデータに復元し、オリジナルデータに含まれる情報を参照して、宛先の端末に転送する。
【００８３】
また、第１実施形態では、１台の送信側装置１が、誤り訂正符号のパラメータの決定、符号化データブロックの作成等の処理を行ったが、複数の装置で処理を分散させてもよい。また、受信側装置２の処理も、複数の装置間で分散させてもよい。
【００８４】
＜記録媒体＞
コンピュータその他の機械、装置（以下、コンピュータ等）に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
【００８５】
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる非一時的な記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／Ｗ、ＤＶＤ、ブルーレイディスク、ＤＡＴ、８ｍｍテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスク、ＲＯＭ（リードオンリーメモリ）等がある。さらに、ＳＳＤ（Solid State Drive）は、コンピュータ等から取り外し可能な記録媒体としても、コンピュータ等に固定された記録媒体としても利用可能である。
【符号の説明】
【００８６】
１      送信側装置
２      受信側装置
１１    判定処理部
１２    符号化処理部
１３    送信パケット生成部
１４    送信処理部
１５    再送要求処理部
２１    受信処理部
２２    受信パケット分割部
２３    復号処理部
２４    再送要求処理部
２５    ロス率計測部
１０１  ＣＰＵ
１０２  主記憶装置
１０５  補助記憶装置
【図１】
2016051451.tif 000003
【図２】
2016051451.tif 000004
【図３】
2016051451.tif 000005
【図４】
2016051451.tif 000006
【図５】
2016051451.tif 000007
【図６】
2016051451.tif 000008
【図７Ａ】
2016051451.tif 000009
【図７Ｂ】
2016051451.tif 000010
【図８】
2016051451.tif 000011
【国際調査報告】
2016051451.tif 000012
2016051451.tif 000013
2016051451.tif 000014
2016051451.tif 000015