JP6064593B2 - プログラム、情報処理装置、及び通信方法 - Google Patents

プログラム、情報処理装置、及び通信方法 Download PDF

Info

Publication number
JP6064593B2
JP6064593B2 JP2012285313A JP2012285313A JP6064593B2 JP 6064593 B2 JP6064593 B2 JP 6064593B2 JP 2012285313 A JP2012285313 A JP 2012285313A JP 2012285313 A JP2012285313 A JP 2012285313A JP 6064593 B2 JP6064593 B2 JP 6064593B2
Authority
JP
Japan
Prior art keywords
data
information processing
amount
processing apparatus
packet
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012285313A
Other languages
English (en)
Other versions
JP2014127969A (ja
Inventor
稔 井上
井上  稔
隆宏 武中
隆宏 武中
大丞 藤田
大丞 藤田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012285313A priority Critical patent/JP6064593B2/ja
Priority to US14/105,978 priority patent/US9401775B2/en
Publication of JP2014127969A publication Critical patent/JP2014127969A/ja
Application granted granted Critical
Publication of JP6064593B2 publication Critical patent/JP6064593B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/27Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1825Adaptation of specific ARQ protocol parameters according to transmission conditions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1829Arrangements specially adapted for the receiver end
    • H04L1/1835Buffer management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/30Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Description

本発明は、プログラム、情報処理装置、及び通信方法に関する。
現在、データ通信用のネットワークとして、インターネット、Local Area Network(LAN)、Wide Area Network(WAN)、携帯電話網などの様々なネットワークが利用されている。多くのデータ通信では、データを生成する送信装置とデータの最終的な宛先である受信装置との間のエンドツーエンドの通信を制御し、アプリケーション層に適切にデータを渡すため、何れかのトランスポート層のプロトコルが利用される。トランスポート層のプロトコルの例として、コネクション型のTransmission Control Protocol(TCP)と、コネクションレス型のUser Datagram Protocol(UDP)とが挙げられる。
TCPでは、データパケットが受信装置に到達したことを保証するため、受信装置が、データパケットを正常に受信したときにACKnowledgement(ACK)パケットを送信装置に向かって返信する。送信装置は、データパケットを送信してから一定時間内に期待されるACKパケットを受信できないとき、当該データパケットを再送する。但し、1つのデータパケットを送信した後、送信装置がACKを待ってから次のデータパケットを送信すると、データ送信のスループットが低くなるおそれがある。そこで、TCPでは、受信装置の受信ウィンドウサイズの範囲内で、送信装置がACKを待たずに連続して複数のデータパケットを送信することができる。受信ウィンドウサイズは、受信装置がもつトランスポート層のバッファの空き領域に基づいて決定され、受信装置から送信装置に通知される。
上記のように、TCPは信頼性の高いトランスポート層のプロトコルであり、File Transfer Protocol(FTP)やHypertext Transfer Protocol(HTTP)などのアプリケーション層のプロトコルと組み合わせて用いられることが多い。一方、UDPは、ACKによる到達確認が行われない軽量なトランスポート層のプロトコルであり、通信のスループットやリアルタイム性を重視するデータ通信について用いられることが多い。但し、UDPは自由度の高いプロトコルであるため、UDPの上位層のプロトコルにおいて信頼性を高めるための機能を独自に実装することも可能である。
例えば、UDPと組み合わせて、前方誤り訂正(FEC:Forward Error Correction)符号化や再送制御などの機能を実装することで、通信のリアルタイム性と信頼性とのバランスを図った通信システムが提案されている。なお、再送制御に関して、ファイルを複数のデータブロックに分割して各データブロックに順序番号を付して送信し、1ファイルのデータブロックを全て送信し終えてから再送要求を受け付けることで、トラフィック量を抑えるファイル配信方法が提案されている。
国際公開第00/13357号 特開2002−169738号公報
上記のように、到達確認が行われる通信システムにおいて、送信装置が受信装置からの到達確認を待たずにある程度の量のデータを連続して送信できることがある。しかし、従来、到達確認を待たずに送信できるデータの量は、受信装置における現在のデータ処理の負荷を適切に反映しているとは限らない。このため、受信装置が過負荷になって受信したデータを処理しきれずに、オーバーフローが発生し得るという問題がある。
例えば、TCPの場合、受信装置の受信ウィンドウサイズは、トランスポート層のバッファの空き領域に基づいて決定される。このため、データがトランスポート層からアプリケーション層などの上位層に渡されると、トランスポート層のバッファの空き領域が増えて、受信ウィンドウサイズが大きくなる。しかしながら、上位層のプロトコルにおいて、計算量の大きな処理(例えば、誤り訂正復号)や低速な処理(例えば、補助記憶装置へのデータの書き出し)が行われる場合、上位層のデータ処理がボトルネックとなり得る。この場合、上位層のプロトコルのメモリ領域がオーバーフローしてしまう可能性がある。
そこで、1つの側面では、本発明は、データを受信する装置が過負荷になるのを抑制できるプログラム、情報処理装置、及び通信方法を提供することを目的とする。
1つの態様では、他のコンピュータにデータを送信可能なコンピュータに実行させるプログラムが提供される。プログラムを実行するコンピュータは、他のコンピュータからの応答を待たずに送信できるデータの量の閾値を第1の閾値に設定し、第1の閾値以下の量の第1のデータを他のコンピュータに送信する。他のコンピュータが第1のデータの処理に要した時間に応じた処理時間情報を他のコンピュータから取得する。処理時間情報に基づいて、データの量の閾値を第1の閾値から第2の閾値に変更し、第2の閾値以下の量の第2のデータを他のコンピュータに送信する。
また、1つの態様では、他の情報処理装置にデータを送信可能な、通信部と制御部とを有する情報処理装置が提供される。また、1つの態様では、他の情報処理装置にデータを送信可能な情報処理装置が実行する通信方法が提供される。
1つの側面では、データを受信する装置が過負荷になるのを抑制できる。
第1の実施の形態に係る情報処理装置等の例を示した図である。 第2の実施の形態に係る通信システムの例を示した図である。 第2の実施の形態に係る情報処理装置のハードウェアの例を示した図である。 第2の実施の形態に係る送信側の情報処理装置の機能の例を示したブロック図である。 マッピング表の例を示した図である。 第2の実施の形態に係る受信側の情報処理装置の機能の例を示したブロック図である。 RPS符号及びUDPを利用したアプリケーションデータの送信方法を説明した図である。 RPS符号化及びRPS復号の処理について説明した図である。 RPS符号及びUDPを利用したデータ送信方法における再送制御の方法を説明した図である。 第2の実施の形態に係る送信制御方法を説明した第1の図である。 第2の実施の形態に係る送信制御方法を説明した第2の図である。 第2の実施の形態に係る送信制御方法を説明した第3の図である。 第2の実施の形態に係る送信制御方法を説明した第4の図である。 第2の実施の形態に係るチェックポイントデータ及びACKの送信処理について説明した図である。 TCPに係るACKの送信方法と第2の実施の形態に係るACKの送信方法とを比較した図である。 第2の実施の形態に係る処理時間について説明した図である。 第2の実施の形態に係る送信処理の流れについて説明した第1の図である。 第2の実施の形態に係る送信処理の流れについて説明した第2の図である。 第2の実施の形態に係る受信処理の流れについて説明した図である。
以下、図面を参照しながら実施の形態について説明する。
[第1の実施の形態]
第1の実施の形態について説明する。
図1は、第1の実施の形態に係る情報処理装置等の例を示した図である。
図1に示すように、第1の実施の形態に係る情報処理装置10は、通信部11及び制御部12を有する。また、情報処理装置10は、ネットワーク5を介して他の情報処理装置7と接続されている。
また、図示しないが、情報処理装置10及び他の情報処理装置7は、記憶装置を有している。この記憶装置は、Random Access Memory(RAM)などの揮発性記憶装置であってもよいし、Hard Disk Drive(HDD)やフラッシュメモリなどの不揮発性記憶装置であってもよい。
また、制御部12は、Central Processing Unit(CPU)やDigital Signal Processor(DSP)などのプロセッサであってもよい。また、制御部12は、Application Specific Integrated Circuit(ASIC)やField Programmable Gate Array(FPGA)などのプロセッサ以外の電子回路であってもよい。また、制御部12は、上述した記憶装置又は他のメモリに記憶されたプログラムを実行する。
通信部11は、第1のデータ#1〜#3を他の情報処理装置7に送信し、他の情報処理装置7が第1のデータ#1〜#3の処理に要した時間に応じた処理時間情報22を他の情報処理装置7から受信し、第2のデータ#1〜#4を他の情報処理装置7に送信する。
制御部12は、他の情報処理装置7からの応答を待たずに送信できるデータの量の閾値を第1の閾値Th1に設定して、第1のデータの量を第1の閾値Th1以下に制限する。さらに、制御部12は、処理時間情報22に基づいてデータの量の閾値を第1の閾値Th1から第2の閾値Th2に変更して、第2のデータ#1〜#4の量を第2の閾値Th2以下に制限する。
このように、処理時間情報22に応じて応答を待たずに送信できるデータ21の量を調整することで、他の情報処理装置7の負荷状況を考慮した送信データ量の制御が可能になる。例えば、他の情報処理装置7でデータを記憶装置に格納する際に遅延が発生した場合でも、送信データ量が少なく調整されることで、記憶装置の前段に設けられたバッファがオーバーフローするような事態を回避することができる。その結果、安定して高いスループットを維持することが可能になる。
以上、第1の実施の形態について説明した。
[第2の実施の形態]
第2の実施の形態について説明する。
(システムについて)
まず、図2を参照しながら、第2の実施の形態に係る通信システム100について説明する。図2は、第2の実施の形態に係る通信システムの例を示した図である。
図2に示すように、通信システム100は、情報処理装置110と、ネットワーク94を介して情報処理装置110に接続された情報処理装置130とを有する。なお、以下の説明では、情報処理装置110を送信側、情報処理装置130を受信側と表現することがある。また、説明の都合上、情報処理装置110から情報処理装置130へとデータを送信する場合を想定して説明を進める。但し、情報処理装置130から情報処理装置110へと情報が送信されることもある。
図2の例では情報処理装置110、130が共に据え置き型のコンピュータの形状で表現されているが、情報処理装置110、130は据え置き型のコンピュータ以外の形態であってもよい。例えば、情報処理装置110は、ノート型パーソナルコンピュータ、タブレット型コンピュータ、携帯電話機、スマートフォン、デジタルカメラ、カーナビゲーションシステムなどであってもよい。また、情報処理装置110は、無線基地局、無線通信端末、ルータ、ハブ、モデム、衛星通信用の通信機器、その他の通信機器であってもよい。なお、情報処理装置130の形態についても同様である。
また、図2の例では情報処理装置110を1台のコンピュータで表現しているが、複数台のコンピュータを接続した並列型のコンピュータであってもよいし、クラウドコンピューティングシステムであってもよい。この場合、情報処理装置110が有する機能の一部又は全部は、複数のコンピュータを利用して実現される。なお、情報処理装置130についても同様である。また、情報処理装置110、130のうち一方の機能を1台のコンピュータで実現させ、他方の機能を複数台のコンピュータで実現させてもよい。
(ハードウェアについて)
また、情報処理装置110の機能は、図3に示すようなハードウェアにより実現される。図3は、第2の実施の形態に係る情報処理装置のハードウェアの例を示した図である。なお、図3に示したハードウェア要素の組み合わせは一例であり、実施の態様に応じて一部の要素を省略することや、新たな要素を追加することも可能である。
図3に示すように、情報処理装置110は、例えば、CPU901、RAM902、HDD903、画像信号処理部904、入力信号処理部905、ディスクドライブ906、及び通信インターフェース907を有する。
なお、CPU901は、第1の実施の形態に係る制御部12の一例である。また、RAM902やHDD903は、第1の実施の形態に係る記憶装置の一例である。また、通信インターフェース907は、第1の実施の形態に係る通信部11の一例である。
CPU901は、プログラムに記述された命令を実行する演算器を含むプロセッサである。CPU901は、HDD903に記憶されているプログラムやデータの少なくとも一部をRAM902にロードし、プログラムに記述された命令を実行する。なお、CPU901は、複数のプロセッサコアを含んでいてもよい。また、情報処理装置110は、複数のCPU901を搭載していてもよい。この場合、情報処理装置110は、処理を並列実行することができる。
RAM902は、CPU901が実行するプログラムや、処理に用いられるデータを一時的に記憶するための揮発性メモリである。なお、情報処理装置110は、RAM902とは異なる種類のメモリを有していてもよい。また、情報処理装置110は、複数のメモリを備えていてもよい。
HDD903は、Operating System(OS)、ファームウェア、或いは、アプリケーションソフトウェアなどのプログラムや、処理に用いられるデータなどを記憶する不揮発性記憶装置の一例である。なお、情報処理装置110は、フラッシュメモリやSolid State Drive(SSD)など、HDD903とは異なる種類の記憶装置を有していてもよい。また、情報処理装置110は、複数の記憶装置を有していてもよい。
画像信号処理部904は、CPU901による制御を受け、情報処理装置110に接続された表示装置91に画像を出力する。表示装置91は、例えば、Cathode Ray Tube(CRT)ディスプレイ、Liquid Crystal Display(LCD)、Plasma Display Panel(PDP)、Organic Electro-Luminescence Display(OELD)などの表示デバイスである。
入力信号処理部905は、情報処理装置110に接続された入力デバイス92から入力信号を取得し、CPU901に通知する。入力デバイス92としては、例えば、マウス、キーボード、タッチパネル、タッチパッド、トラックボール、リモートコントローラ、ボタンスイッチなどを用いることができる。
ディスクドライブ906は、記録媒体93に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体93としては、例えば、Flexible Disk(FD)、HDDなどの磁気ディスク、Compact Disc(CD)やDigital Versatile Disc(DVD)などの光ディスク、Magneto-Optical disk(MO)などの光磁気ディスクを用いることができる。ディスクドライブ906は、例えば、CPU901による制御を受け、記録媒体93から読み取ったプログラムやデータをRAM902又はHDD903に格納する。
通信インターフェース907は、ネットワーク94を介して他のコンピュータと通信を行うためのインターフェースである。通信インターフェース907は、有線インターフェースであってもよいし、無線インターフェースであってもよい。また、通信インターフェース907は、衛星通信用の通信インターフェースであってもよいし、携帯電話網に接続するための通信インターフェースであってもよい。
(情報処理装置110の機能について)
上記のハードウェアを用いることで、情報処理装置110は、図4に示すような機能を実現することができる。図4は、第2の実施の形態に係る送信側の情報処理装置の機能の例を示したブロック図である。
図4に示すように、情報処理装置110は、データ入力部111と、ブロック化部112と、パケット生成部113と、消失訂正符号化部114と、通信部115と、制御部116とを有する。
なお、ブロック化部112、パケット生成部113、消失訂正符号化部114、通信部115、及び制御部116が有する機能の一部又は全部は、CPU901が実行するプログラムのモジュールとして実現できる。また、ブロック化部112、パケット生成部113、消失訂正符号化部114、通信部115、及び制御部116が有する機能の一部又は全部をソフトウェアではなく電子回路として実現することも可能である。
データ入力部111には、受信側の情報処理装置130に送信するデータが入力される。データ入力部111に入力されるデータは、情報処理装置110とは異なる外部のコンピュータが実行しているアプリケーションソフトウェアから提供されたものであってもよいし、情報処理装置110が実行しているアプリケーションソフトウェアから提供されたものであってもよい。データ入力部111に入力されたデータは、ブロック化部112に入力される。
ブロック化部112は、データ入力部111から入力されたデータをブロック化する。ここで言うブロック化とは、予め設定した量のデータを蓄積し、蓄積したデータを1つのデータブロックとして管理することを意味する。ブロック化部112により形成された各データブロックは、パケット生成部113に入力される。パケット生成部113は、各データブロックを複数のデータ部に分け、それぞれにヘッダを付加して複数のデータパケットを生成する。ヘッダには、例えば、対応するデータ部のデータを出力したアプリケーションソフトウェアの識別情報やデータ長などの情報が含まれる。
パケット生成部113により生成された各ブロックに対応する複数のデータパケットは、消失訂正符号化部114に入力される。消失訂正符号化部114は、パケット生成部113から入力された各ブロックに対応する複数のデータパケットを符号化して複数のパリティパケットを生成する。符号化の方式としては、例えば、RPS符号などの消失訂正符号を用いる方式が適用される。消失訂正符号はFEC符号の一種である。FEC符号を用いる方式では、送信側で予めデータに冗長性を付加しておき、伝送路でパケットの一部が消失しても受信側で追加の情報を得ずに元のデータを復元できるようにする。
消失訂正符号化部114によりブロック毎に生成された複数のパリティパケットは、通信部115に入力される。なお、各パリティパケットには、Cyclic Redundancy Check(CRC)などの誤り検出符号が付加されていてもよい。通信部115は、消失訂正符号化部114により生成された複数のパリティパケットを受信側の情報処理装置130へと送信する。
また、通信部115は、受信側の情報処理装置130から、少なくとも消失訂正復号の処理を実行する際に要した処理時間の情報を取得する。また、通信部115は、受信側の情報処理装置130で復元された複数のデータパケットに含まれるデータのデータ量を示す情報を取得する。これらの情報は、例えば、1回の消失訂正処理が終わった時点で受信側の情報処理装置130から送信される送達確認に含めて提供される。通信部115により取得された処理時間の情報及びデータ量の情報は、制御部116に入力される。
なお、1回の消失訂正処理で全てのデータパケットが復元されなかった場合、受信側の情報処理装置130は、送信側の情報処理装置110にパリティパケットの再送を要求する。この場合、通信部115は、受信側の情報処理装置130から再送要求を受信する。この再送要求には、処理時間の情報及びデータ量の情報が含まれる。この場合も、通信部115により取得された処理時間の情報及びデータ量の情報は、制御部116に入力される。
制御部116は、通信部115から入力された処理時間の情報及びデータ量の情報に基づいて、受信側の情報処理装置130において単位時間当たりに処理されたデータ量を示す処理速度を計算する。なお、制御部116は、計算した処理速度の情報を保持する。但し、制御部116は、今回送信したブロック(現在のブロック)についての処理速度の情報、及び前回送信したブロック(1つ前のブロック)についての処理速度の情報だけを保持するようにしてもよい。
制御部116は、1つ前のブロックについての処理速度よりも現在のブロックについての処理速度の方が遅い場合、受信側の情報処理装置130の処理負荷が増大したと判断する。この場合、制御部116は、例えば、1つのブロックに含めるデータのデータ量を低減させる。なお、制御部116は、受信側の情報処理装置130の処理負荷が増大したと判断した場合に、各データパケットを復元可能なパリティパケットの組み合わせ数を低減させてもよい。
一方、1つ前のブロックについての処理速度よりも現在のブロックについての処理速度の方が速い場合、制御部116は、受信側の情報処理装置130の処理負荷が低下したと判断する。この場合、制御部116は、例えば、1つのブロックに含めるデータのデータ量を増加させる。なお、制御部116は、受信側の情報処理装置130の処理負荷が低下したと判断した場合に、各データパケットを復元可能なパリティパケットの組み合わせ数を増加させてもよい。
また、制御部116は、通信速度、パケットロス率、及びRound Trip Time(RTT)などを計算する。通信速度は、単位時間当たりに送信できたデータ量から算出される。パケットロス率は、送信したデータパケットのうち受信側で復元できたデータパケットの割合である。但し、パケットロス率は、再送制御が開始される前に復元されたデータパケットの数に基づいて計算される。
なお、RTTは、送信が開始されてから送達確認を受信するまでにかかった時間から処理時間を差し引いた時間である。TCPの場合、トランスポート層の処理が済むとACKが返されるため、データの送信からACKの受信までの時間がRTTとなる。しかし、第2の実施の形態に係る方式の場合、アプリケーション層の処理が済んだ後、アプリケーション層の処理に要した時間の情報を送達確認に含めて返送するため、アプリケーション層における処理時間を差し引いた時間がRTTとなる。
制御部116は、1つ前のブロックと現在のブロックとについて処理速度、通信速度、パケットロス率、RTTが変化した場合に1つのブロックに含めるデータの数や各データパケットを復元可能なパリティパケットの組み合わせ数を調整する。
制御部116は、1つ前のブロックについてのパケットロス率よりも現在のブロックについてのパケットロス率の方が大きい場合、1つのブロックに含めるデータの数の仮設定値αを1つ前のブロックに含めたデータの数にする。逆に、1つ前のブロックについてのパケットロス率よりも現在のブロックについてのパケットロス率の方が大きいか、同じ場合、制御部116は、1つのブロックに含めるデータの数の仮設定値αを現在のブロックに含めたデータの数にする。
そして、制御部116は、後述するマッピング表を参照し、処理速度、通信速度、パケットロス率、RTTの変化を総合的に考慮して、上記の仮設定値αを基準に1つのブロックに含めるデータの数を調整する。なお、制御部116は、各データパケットを復元可能なパリティパケットの組み合わせ数を調整してもよい。
例えば、1つ前のブロックと現在のブロックとについて処理速度、パケットロス率、RTTが同じで、通信速度が増加した場合、制御部116は、1つのブロックに含めるデータの数を上記の仮設定値αよりも大きくする。なお、この場合において、制御部116は、各データパケットを復元可能なパリティパケットの組み合わせ数を大きくしてもよい。
逆に、1つ前のブロックと現在のブロックとについて処理速度、パケットロス率、RTTが同じで、通信速度が低下した場合、制御部116は、1つのブロックに含めるデータの数を上記の仮設定値αよりも小さくする。なお、この場合において、制御部116は、各データパケットを復元可能なパリティパケットの組み合わせ数を小さくしてもよい。
また、1つ前のブロックと現在のブロックとについて処理速度、通信速度、RTTが同じで、パケットロス率が低下した場合、制御部116は、1つのブロックに含めるデータの数を上記の仮設定値αよりも大きくする。なお、この場合において、制御部116は、各データパケットを復元可能なパリティパケットの組み合わせ数を小さくしてもよい。
RTTが大きい場合、1つのブロックに含めるデータの数を増加させて送達確認の頻度を低減させることでスループットを向上させることができる。そこで、1つ前のブロックと現在のブロックとについて処理速度、通信速度、パケットロス率が同じで、RTTが増加した場合、制御部116は、1つのブロックに含めるデータの数を上記の仮設定値αよりも大きくする。逆に、1つ前のブロックと現在のブロックとについて処理速度、通信速度、パケットロス率が同じで、RTTが低下した場合、制御部116は、1つのブロックに含めるデータの数を上記の仮設定値αよりも小さくする。
1つのブロックに含めるデータの数を増加させることで、送達確認を待たずに一度に多くのデータを送信することができ、送達確認の頻度を低減できる。また、データパケットを復元可能なパリティパケットの組み合わせ数を増加させることで、消失訂正の能力が向上し、再送制御の頻度を低減できる。
また、1つのブロックに含めるデータの数を減少させることで、復号処理の負荷を低減することができる。また、各データパケットを復元可能なパリティパケットの組み合わせ数を減少させることで復号処理の負荷を低減することができる。さらに、各データパケットを復元可能なパリティパケットの組み合わせ数を減少させることで、1つのデータパケットを復元するために送信されるパリティパケットの数を減らすことができる。
上記のように処理速度、通信速度、パケットロス率、及びRTTを考慮して1つのブロックに含めるデータの数や1つのデータパケットを復元するために用いるパリティパケットの数を制御することで安定して高いスループットを維持することが可能になる。
また、制御部116は、受信側の情報処理装置130で一部のデータパケットが復元できなかった場合に、パリティパケットの再送制御を実行する。このとき、制御部116は、復元できなかったデータパケットの復元に用いるパリティパケットを再送させる。例えば、パリティパケットA及びBを用いてデータパケット#1が復元される場合、パリティパケットBが伝送路で失われるとデータパケット#1が復元不能になる。この場合、制御部116は、少なくともパリティパケットBを再送させる。
以上、送信側の情報処理装置110の機能について説明した。
(マッピング表について)
ここで、図5を参照しながら、マッピング表について説明する。図5は、マッピング表の例を示した図である。マッピング表には、処理速度、通信速度、パケットロス率、RTTと、変動量βとの間の関係が記述されている。変動量βは、1つのブロックに含めるデータの量について仮設定値αから増減させるデータの量を示す。例えば、仮設定値αから1増加させる場合、変動量βは+1となる。逆に、仮設定値αから1減少させる場合、変動量βは−1となる。なお、1つ前のブロックと現在のブロックとについて変化がない項目の欄には「−」が表示されている。
例えば、1つ前のブロックと現在のブロックとについて通信速度、パケットロス率、RTTが同じで処理速度が増加した場合、変動量βは「+1」となる。この場合、制御部116は、1つのブロックに含めるデータの数を上記の仮設定値αよりも1大きくする。逆に、1つ前のブロックと現在のブロックとについて通信速度、パケットロス率、RTTが同じで処理速度が減少した場合、変動量βは「−1」となる。この場合、制御部116は、1つのブロックに含めるデータの数を上記の仮設定値αよりも1小さくする。
また、1つ前のブロックと現在のブロックとについてパケットロス率、RTTが同じで処理速度及び通信速度が増加した場合、変動量βは「+2」となる。この場合、制御部116は、1つのブロックに含めるデータの数を上記の仮設定値αよりも2大きくする。このように、処理速度、通信速度、パケットロス率、RTTのうち2つの要素が良い方向に変化した場合については、1つの要素が良い方向(通信状況が改善する方向)に変化した場合に比べて変動量βが大きく設定される。
また、1つ前のブロックと現在のブロックとについてパケットロス率、RTTが同じで処理速度が増加し、通信速度が減少した場合、変動量βは「0」となる。この場合、制御部116は、1つのブロックに含めるデータの数を上記の仮設定値αのままとする。このように、処理速度、通信速度、パケットロス率、RTTのうち1つの要素が良い方向に変化し、他の1つの要素が悪い方向(通信状況が劣化する方向)に変化した場合については、両者の効果が相殺し合うように変動量βが設定される(図5の例では0)。
上記のように、処理速度、通信速度、パケットロス率、RTTのそれぞれが変化した方向を考慮し、1つのブロックに含めるデータの数を総合的に決定できるように、マッピング表には4つの要素の組み合わせ毎に変動量βが設定されている。なお、図5に示したマッピング表は一例である。例えば、1つの要素が良い方向に変化した場合に、1つのブロックに含めるデータの数が2以上大きくなるように変動量βを設定してもよい。
以上、マッピング表について説明した。
(情報処理装置130の機能について)
次に、図6を参照しながら、受信側の情報処理装置130の機能について説明する。図6は、第2の実施の形態に係る受信側の情報処理装置の機能の例を示したブロック図である。なお、受信側の情報処理装置130が有する機能は、送信側の情報処理装置110と同じハードウェアを用いて実現できる。
図6に示すように、情報処理装置130は、通信部131と、消失訂正復号部132と、処理時間計測部133と、再送制御部134と、データ出力部135と、記憶部136とを有する。
なお、通信部131、消失訂正復号部132、処理時間計測部133、再送制御部134、及びデータ出力部135が有する機能の一部又は全部は、CPU901が実行するプログラムのモジュールとして実現できる。また、通信部131、消失訂正復号部132、処理時間計測部133、再送制御部134、及びデータ出力部135が有する機能の一部又は全部をソフトウェアではなく電子回路として実現することも可能である。また、記憶部136は、RAM902やHDD903に確保された記憶領域である。
通信部131は、送信側の情報処理装置110から送信された1つのブロックに対応する複数のパリティパケットを受信する。通信部131により受信された複数のパリティパケットは、消失訂正復号部132に入力される。消失訂正復号部132は、各パリティパケットに対する誤り検出を実行する。また、消失訂正復号部132は、当該ブロックに対応する複数のパリティパケットのうち正しく受信されたパリティパケットを利用し、消失訂正復号の処理を実行して元のデータパケットを復元する。
また、消失訂正復号部132は、あるブロックについての消失訂正復号の処理を開始する際、処理時間の計測を開始するように処理時間計測部133に指示する。消失訂正復号部132は、復元したデータパケットをデータ出力部135に入力し、データ出力部135が当該ブロックのデータパケットのデータを記憶部136に記録し終わった時点で処理時間の計測を終了するように処理時間計測部133に指示する。
消失訂正復号部132は、復元不能なデータパケットが存在する場合、再送制御部134に対し、復元不能なデータパケットを復元するために用いるパリティパケットの再送を要求するように依頼する。例えば、データパケット#1を復元するためにパリティパケットA及びBが用いられる場合、伝送路でパリティパケットBが失われると、データパケット#1が復元不能になる。この場合、消失訂正復号部132は、少なくともパリティパケットBの再送を要求するように再送制御部134に依頼する。この依頼を受けた再送制御部134は、送信側の情報処理装置110に対して復元不能なデータパケットの復元に用いるパリティパケットの再送を要求する。
再送されたパリティパケットは、通信部131により受信され、消失訂正復号部132に入力される。消失訂正復号部132は、再送されたパリティパケット、及び再送前に受信していたパリティパケットを利用して復元不能となっていたデータパケットを復元する。上記のような再送制御は、あるブロックの全てのデータパケットが復元されるまで繰り返し実行される。
なお、あるブロックのデータパケットを復元する際に再送制御が行われる場合、1回目の再送要求には、処理時間計測部133により計測された処理時間の情報及び復元できたデータのデータ量を示す情報が含まれる。
消失訂正復号部132は、データパケットが復元される度に、復元されたデータパケットをデータ出力部135に入力する。データ出力部135は、復元されたデータパケットのデータを記憶部136に記録する。
例えば、1つのブロックのデータは、データパケットより大きくブロックより細かい単位(セグメント)でRAM902などのメモリ上に格納される。データ出力部135は、あるセグメント内のデータが全て揃った際に、そのセグメントをファイルに書き出す。データが揃っていないセグメントは、データ出力部135によりファイルに書き出されずにメモリ上に残る。この場合に再送制御が行われる。
消失訂正復号部132は、1つのブロックに対応する全てのデータパケットを復元すると、通信部131に対して送達確認を送信するように依頼する。この依頼を受けた通信部131は、送信側の情報処理装置110に送達確認を送信する。再送要求が送信されなかった場合、送達確認には、処理時間計測部133により計測された処理時間の情報及び復号されたデータのデータ量を示す情報が含まれる。
以上、受信側の情報処理装置130の機能について説明した。
(RPS+UDPによるデータ送信方法について)
次に、消失訂正符号の一例としてRPS符号を取り上げ、RPS符号化したアプリケーションデータをUDPにより送信するデータ送信方法について説明する。
まず、図7を参照しながら、RPS符号及びUDPを利用したアプリケーションデータの送信方法について説明する。図7は、RPS符号及びUDPを利用したアプリケーションデータの送信方法を説明した図である。図7の例は、送信側のアプリケーションソフトウェアATからアプリケーションソフトウェアARへとデータDAを送信する処理を示している。
アプリケーションソフトウェアATから出力されたデータDAは、ミドルウェアMTにより複数のブロックBL1、…、BLNに分散して割り当てられる。なお、ミドルウェアMTは、送信側の情報処理装置110上で動作しているソフトウェアである。ミドルウェアMTは、ブロックBL1に割り当てたデータをパケット化及びRPS符号化してRPS符号RPS1を生成する。同様に、ミドルウェアMTは、ブロックBL2、…、BLNにそれぞれ対応するRPS符号RPS2、…、RPSNを生成する。なお、RPS符号RPS1、…、RPSNは、パリティパケットの一例である。
RPS符号RPS1、…、RPSNは、UDPに従って受信側の情報処理装置130上で動作しているミドルウェアMRへと送信される。ミドルウェアMRは、RPS符号RPS1をRPS復号してブロックBL1に割り当てられたデータを復元する。同様に、ミドルウェアMRは、ブロックBL2、…、BLNにそれぞれ割り当てられたデータを復元する。そして、ミドルウェアMRは、ブロックBL1、…、BLNに割り当てられたデータを組み合わせてデータDAを復元し、アプリケーションソフトウェアARに入力する。
以上、RPS符号及びUDPを利用したアプリケーションデータの送信方法について説明した。上記のように、UDPに従ってデータを送信することで、送達確認の頻度を抑制することができる分だけスループットを向上させることができる。また、データがRPS符号化されるため、伝送路で一部のRPS符号が消失してもデータを復元することができる。そのため、データ転送の確実性が向上する。また、消失訂正能力の高いRPS符号を適用することで、再送要求の頻度が低減され、スループットがさらに向上する。
ここで、図8を参照しながら、RPS符号化及びRPS復号の処理について具体例を挙げて説明する。図8は、RPS符号化及びRPS復号の処理について説明した図である。図8の例は、データパケット#1〜#4をRPS符号化して送信し、RPS復号によりデータパケット#1〜#4を復元する処理を示している。
図8に示すように、RPS符号化方式では、送信する複数のデータパケットを組み合わせ、全てのデータパケットが複数のパリティパケットに変換される。各パリティパケットを生成するために用いるデータパケットの組み合わせは、パリティパケットの消失に対して全てのデータパケットが復元できる可能性が高くなるような組み合わせに設定される。例えば、シミュレーションなどを用いてパリティパケットの組み合わせが決定される。
また、所定数のデータパケットに対してRPS符号化により生成されるパリティパケットの数は自由に変更することが可能である。そのため、パケットロス率が高い伝送路を用いる場合にはパリティパケットの数を増加させ、パケットロス率が低い伝送路を用いる場合にはパリティパケットの数を減少させるなど、状況に応じた柔軟な対応が可能になる。
図8の例では、データパケット#1、#2を用いてパリティパケットAが、データパケット#2、#3を用いてパリティパケットBが生成されている。また、データパケット#1、#3を用いてパリティパケットCが、データパケット#1、#2、#3、#4を用いてパリティパケットDが生成されている。また、データパケット#3、#4を用いてパリティパケットEが、データパケット#1、#2、#3を用いてパリティパケットFが、データパケット#2、#3、#4を用いてパリティパケットGが生成されている。このように、各パリティパケットは、複数のデータパケットを用いて生成される。
図8に示すように、パリティパケットA〜Gは、UDPに従って送信される。伝送路で一部のパリティパケットB、E、Fが失われた場合、データパケット#1はパリティパケットA、Dを用いて復元され、データパケット#2はパリティパケットA、D、Gを用いて復元される。また、データパケット#3はパリティパケットC、D、Gを用いて復元され、データパケット#4はパリティパケットD、Gを用いて復元される。図8の例ではパリティパケットB、E、Fが伝送路で失われているが、データパケット#1〜#4が全て復元されている。このように、各データパケットの復元に用いるパリティパケットの組み合わせが適当であれば、伝送路で一部のパリティパケットが消失しても、各データパケットを正しく復元することができる。
RPS符号は消失訂正能力の高い符号であるが、伝送路で多くのパリティパケットが消失した場合には、一部のデータパケットが復元不能となることがある。例えば、図9に示すように、パリティパケットB、D、E、Fが消失した場合、データパケット#4が復元不能になる。この場合、データパケット#4の復元に用いるパリティパケットの再送制御が行われる。図9は、RPS符号及びUDPを利用したデータ送信方法における再送制御の方法を説明した図である。
データパケット#4は、例えば、パリティパケットD、Gがあれば復元することが可能である。つまり、パリティパケットDが再送されればデータパケット#4を復元することができる。そのため、図9の例ではパリティパケットDの再送が要求される。
但し、データパケット#4はパリティパケットE、Gの組み合わせでも復元可能であるため、パリティパケットEの再送が要求されてもよい。このように、再送を要求するパリティパケットの選択が可能な場合もある。
再送を要求するパリティパケットの選択が可能な場合、再送するパリティパケットの数がより少なくなるように、再送を要求するパリティパケットの組み合わせを選択することが好ましい。例えば、2つのデータパケットを復号可能にするパリティパケットXと、4つのデータパケットを復号可能にするパリティパケットYとがある場合、パリティパケットXの再送を要求する方が好ましい。このような方法でパリティパケットを選択することで、効率的に全てのデータパケットを復元することが可能になる。
以上説明したように、RPS符号は、所定数のデータパケットを送信するために用いるパリティパケットの数を自由に変更することができる。そのため、パケットロス率が低い伝送路ではパリティパケットの数を少なくし、パケットロス率が高い伝送路ではパリティパケットの数を多くするなどの調整を行うことができる。
また、各ブロックに対応するパリティパケットの数は変更せず、受信側の処理負荷や通信環境などに応じて各ブロックに割り当てるデータの数を調整することも可能である。このような調整を行うことで、例えば、受信側のアプリケーション層で利用されるバッファがオーバーフローするなどの事態を回避することが可能になる。以下、このような方法について説明する。
(送信制御方法について)
図10は、第2の実施の形態に係る送信制御方法を説明した第1の図である。
図10の例では、ブロックBL1、BL2、BL3に割り当てられたデータが順番に送信される。まず、ブロックBL1に割り当てられたデータがRPS符号化され、複数のパリティパケットで形成されるRPS符号RPS1が生成される。RPS符号RPS1はUDPに従って送信される。
受信側では、受信されたRPS符号RPS1が、ブロックBL1に対応するデータに復元される。このとき、RPS復号の開始から復号されたデータをファイルへ書き出すまでに要した処理時間が計測され、送信側へと通知される。例えば、処理時間の情報は、送達確認に含めて送信側へと送信される。
ブロックBL1に割り当てられたデータの復元時に要した処理時間が長い場合、ブロックBL2に割り当てられるデータの量(ブロックサイズ)を少なくする。ブロックBL2に割り当てられたデータは、RPS符号RPS2に変換されて受信側へと送信される。受信側では、RPS符号RPS2からブロックBL2に割り当てられたデータが復元される。このとき、RPS復号の開始から復号されたデータをファイルへ書き出すまでに要した処理時間が計測され、送信側へと通知される。
ブロックBL2に割り当てられたデータの復元時に要した処理時間が依然として長い場合、ブロックBL3に割り当てられるデータの量を少なくする。ブロックBL3に割り当てられたデータは、RPS符号RPS3に変換されて受信側へと送信される。受信側では、RPS符号RPS3からブロックBL3に割り当てられたデータが復元される。なお、処理時間が短い場合には、図10の例とは逆に、各ブロックに割り当てるデータの量を増加させる。
上記のように、受信側の処理時間が長い場合に1つのブロックに割り当てるデータの量を減少させることで復元すべきデータの量が減って処理負担が軽減される。さらに、1つのブロック当たりに復元されるデータの量が減るため、受信側のアプリケーション層で利用するバッファがオーバーフローする事態を回避できる。
なお、一部のデータパケットが復号不能となった場合、図11に示すように再送制御が行われる。図11は、第2の実施の形態に係る送信制御方法を説明した第2の図である。
例えば、ブロックBL1に割り当てられたデータから生成されるRPS符号RPS1の一部が伝送路で失われ、受信側で一部のデータパケットが復元不能となった場合、復元不能となったデータパケットの復元に用いるパリティパケットの再送が要求される。このとき、パケットロス率の計算に用いられる情報が、再送要求に含めて受信側から送信側へと通知される。この要求に応じてパリティパケットが再送され、このパリティパケットを利用して、復元不能となっていたデータパケットが復元される。
なお、再送要求に含めて送信される情報としては、例えば、再送要求を行う前に復元できたデータパケットの数を示す情報がある。この情報を用いると、ブロックBL1に対応するデータパケットのうち、1回目の送信の際に復元不能となったデータパケットの割合を計算することができる。つまり、パケットロス率を計算することが可能になる。
上記のパケットロス率は、次に送信されるブロックBL2に割り当てられるデータの量を決める際に利用される。例えば、パケットロス率が高い場合、ブロックBL2に割り当てるデータの量を減少させる。
なお、ブロックに割り当てるデータの量を減少させる場合、減少量又は減少率は受信側の処理速度を考慮して決められる。そのため、処理時間の情報及び復元できたデータの量を示す情報も再送要求に含めて送信される。減少量又は減少率が大き過ぎると、受信側の処理負荷が低くなり過ぎて演算リソースの無駄が生じる上、一度に転送されるデータ量が減るためにスループットの低下を招いてしまう。従って、受信側のアプリケーション層で利用するバッファがオーバーフローしない範囲で、受信側の演算リソースが十分に生かせるようにブロックに割り当てるデータの量が決定される。
上記のように、処理速度に加えてパケットロス率を考慮することで、受信側の処理負荷を考慮しつつ、再送制御が発生する頻度を低減することが可能になる。その結果、更なるスループットの向上が期待できる。また、処理速度及びパケットロス率に応じて動的に設定を変更するため、時々刻々と変化する処理負荷の状況及び伝送路の状況に応じた好適な設定でデータを転送することが可能になり、安定して高いスループットを維持することができるようになる。
以下、一変形例として、処理速度などに応じて符号化率を調整する送信制御方法について説明する。
図12は、第2の実施の形態に係る送信制御方法を説明した第3の図である。
図12の例では、ブロックBL1、BL2、BL3に割り当てられたデータが順番に送信される。まず、ブロックBL1に割り当てられたデータがRPS符号化され、複数のパリティパケットで形成されるRPS符号RPS1が生成される。RPS符号RPS1はUDPに従って送信される。また、受信されたRPS符号RPS1は、ブロックBL1に対応するデータに復元される。このとき、RPS復号の開始から復号されたデータをファイルへ書き出すまでに要した処理時間が計測され、送信側へと通知される。例えば、処理時間の情報は、送達確認に含めて送信側へと送信される。
ブロックBL1に割り当てられたデータの復元に要した処理時間が長い場合、ブロックBL2に割り当てられたデータを符号化する際に、各データパケットの復元に用いるパリティパケットの組み合わせ数を少なくする。ブロックBL2に割り当てられたデータは、RPS符号RPS2に変換されて受信側へと送信される。受信側では、RPS符号RPS2からブロックBL2に割り当てられたデータが復元される。このとき、RPS復号時に要した処理時間が計測され、送信側へと通知される。
ブロックBL2に割り当てられたデータの復元時に要した処理時間が依然として長い場合、ブロックBL3に割り当てられたデータを符号化する際に、各データパケットの復元に用いるパリティパケットの組み合わせ数を少なくする。ブロックBL3に割り当てられたデータは、RPS符号RPS3に変換されて受信側へと送信される。受信側では、RPS符号RPS3からブロックBL3に割り当てられたデータが復元される。なお、処理時間が短い場合には、図12の例とは逆に、消失訂正能力を向上させるため、各データパケットの復元に用いるパリティパケットの組み合わせ数を増加させる。
上記のように、受信側の処理負荷に係る処理時間が長い場合に各データパケットの復元に用いるパリティパケットの組み合わせ数を減少させることで、復号処理が間に合わずに処理遅延が発生してしまう事態を回避することができる。また、処理時間が短い場合に各データパケットの復元に用いるパリティパケットの組み合わせ数を増加させることで、より高い消失訂正能力を発揮することが可能になる。この場合、再送制御の頻度が低減するため、スループットの向上に寄与する。
なお、一部のデータパケットが復号不能となった場合、図13に示すように再送制御が行われる。図13は、第2の実施の形態に係る送信制御方法を説明した第4の図である。
例えば、ブロックBL1に割り当てられたデータから生成されるRPS符号RPS1の一部が伝送路で失われ、受信側で一部のデータパケットが復元不能となった場合、復元不能となったデータパケットの復元に用いるパリティパケットの再送が要求される。この要求に応じてパリティパケットが再送され、このパリティパケットを利用して、復元不能となっていたデータパケットが復元される。
なお、パケットロス率の計算に用いられる情報は再送要求に含めて受信側から送信側へと通知される。例えば、再送要求を行う前に復元できたデータパケットの数を示す情報が受信側から送信側へと通知される。この情報を用いると、ブロックBL1に対応するデータパケットのうち、復元不能となったデータパケットの割合を計算することができる。つまり、パケットロス率を計算することが可能になる。このようにして計算したパケットロス率は、次に送信されるブロックBL2に割り当てられたデータの送信時に利用される。
例えば、パケットロス率が高い場合、RPS符号RPS2を形成するパリティパケットの数を増加させる。つまり、各データパケットの復元に利用可能なパリティパケットの数が増加する。各データパケットの復元に利用可能なパリティパケットの数が増加することで、伝送路におけるパリティパケットの消失に対する耐性が向上し、パケットロス率を低減することが可能になる。
なお、各データパケットの復元に利用可能なパリティパケットの数を増加させる場合、増加数又は増加率は受信側の処理速度を考慮して決められる。そのため、処理時間の情報及び復元できたデータの量を示す情報も再送要求に含めて送信される。例えば、処理速度が速い状況では再送をほぼ発生させない程度に十分に増加数又は増加率を大きくし、処理速度が遅い状況では多少の再送を許容して増加数又は増加率を小さめに設定する。
上記のように、処理速度に加えてパケットロス率を考慮することで、受信側の処理負荷を考慮しつつ、再送制御が発生する頻度を低減することが可能になる。その結果、さらにスループットが向上する。また、処理速度及びパケットロス率に応じて動的に設定を変更するため、時々刻々と変化する処理負荷の状況及び伝送路の状況に応じた好適な設定でデータを転送することが可能になり、安定して高いスループットを維持することが可能になる。
(チェックポイントデータ及びACKの送信について)
ここで、図14を参照しながら、RPS符号の送信処理及び送達確認の返信処理について説明を補足する。図14は、第2の実施の形態に係るチェックポイントデータ及びACKの送信処理について説明した図である。
これまでも説明してきたように、各ブロックに割り当てられたデータは、RPS符号に符号化されて受信側へと送信される。
図14の例では、あるブロックに割り当てられたデータ#1がRPS符号RPS1に変換され、受信側へと送信されている。このとき、RPS符号RPS1の後に、チェックポイントデータCP1が送信される。このチェックポイントデータCP1は、RPS符号RPS1で送信したデータのデータ量を示す情報を含んでいる。そのため、受信側でRPS符号RPS1から復元したデータのデータ量と、チェックポイントデータCP1に含まれる情報が示すデータ量とを比較することで、ブロックに割り当てられたデータが全て復元されたか否かを受信側で確認することができる。
ブロックに割り当てられたデータが全て復元された場合、受信側から送信側へと送達確認ACK1が送信される。この送達確認ACK1には、少なくとも復号処理にかかった時間及び復元したデータを記憶部に書き込む際の書き込み処理にかかった時間を含む処理時間の情報が含まれる。また、送達確認ACK1には、復元したデータのデータ量を示す情報が含まれる。その他にも、送達確認ACK1には、パリティパケットの受信処理に要した時間や、最初のパリティパケットを受信した時刻から送達確認ACK1を送信する時刻までの時間などを示す情報が含まれていてもよい。
上記のような情報を含む送達確認ACK1が得られると、単位データ量当たりの処理時間を示す処理速度や、データ#1の送信開始から送達確認ACK1の受信までに要した時間から処理時間を差し引いて計算されるRTTなどを計算することが可能になる。また、最初の再送制御が行われる前に復元できたデータパケットの数を示す情報が送達確認ACK1に含まれていれば、その情報を利用してパケットロス率が計算可能になる。
上記のようにして計算される処理速度やパケットロス率などに応じて、次に送信されるデータ#2の送信設定が決定される。つまり、次のブロックに割り当てるデータ#2のデータ量や、データ#2の送信に利用するRPS符号RPS2を形成するパリティパケットの数などが処理速度やパケットロス率などに応じて変更される。
データ#1と同様に、データ#2もRPS符号RPS2に変換されて送信側から受信側へと送信される。この場合も、RPS符号RPS2と共にチェックポイントデータCP2が送信側から受信側へと送信される。そして、受信側でデータ#2が復元された場合、受信側から送信側へと送達確認ACK2が送信される。
送達確認ACK2にも、送達確認ACK1と同様に処理時間などの情報が含まれる。送達確認ACK2が得られると、処理速度やパケットロス率などが計算され、次に送信されるデータ#3の送信設定が決定される。このように、各ブロックに割り当てられたデータが送信される度に、伝送路の状況や受信側の負荷状況に応じて送信設定が変更される。
上記のようなRPS符号の送信処理及び送達確認の返信処理を適用することで、時々刻々と変化する伝送路の状況や受信側の負荷状況に適した送信設定でデータが転送され、安定して高いスループットを実現することが可能になる。
次に、図15を参照しながら、通常のTCPに係るACKの送信方法及び第2の実施の形態に係る送達確認の送信方法について説明を補足する。図15は、TCPに係るACKの送信方法と第2の実施の形態に係るACKの送信方法とを比較した図である。
図15(A)に示すように、TCPの場合、送信側から受信側へと送信されたパケットが受信側のトランスポート層で受信されると、トランスポート層の処理により受信完了を示すACKが受信側から送信側へと返信される。また、トランスポート層で受信されたパケットのデータは、アプリケーション層の処理によりファイルに書き出される。
一方、図15(B)に示すように、第2の実施の形態に係る方法の場合、送信側から受信側へと送信されたパケット(パリティパケット)は、アプリケーション層の処理によりデータパケットへと復元され、復元されたデータパケットのデータがファイルに書き出される。なお、データパケットの復元処理には、RPS復号の他、順序が入れ替わって到達したパケットの整列なども含まれる。また、処理時間や復元できたデータのデータ量などを示す情報が送達確認に付加された後、これらの情報が付加された送達確認がトランスポート層の機能により受信側から送信側へと送信される。
なお、再送制御が行われる場合、第2の実施の形態に係る方法においては、RPS復号の開始から復元したデータをファイルへと書き出すまでの処理時間及び復元できたデータのデータ量を示す情報を受信側で再送要求に付加して送信側へと送信する。
(処理時間の計測方法について)
ここで、図16を参照しながら、処理時間の計測方法について説明を補足する。図16は、第2の実施の形態に係る処理時間について説明した図である。
図16に示すように、送信側から受信側へとパケット(パリティパケット)が送信され、受信側のトランスポート層で処理される。パリティパケットは、トランスポート層の上位に位置するソケット層で処理され、アプリケーション層へと転送される。あるブロックについてアプリケーション層に転送されたパリティパケットに対する復号処理が開始されるタイミングで受信側において処理時間の計測が開始される。
アプリケーション層では、伝送路で入れ替わったパケットの整列やRPS復号の処理がさらに実行され、復元されたデータがファイルに書き出される。
例えば、1つのブロックのデータは、データパケットより大きくブロックより細かい単位(セグメント)でRAM902などのメモリ(アプリケーション層のバッファ)上に格納される。あるセグメントSg1内のデータが全て揃った際に、そのセグメントSg1がファイルに書き込まれる。ファイルへの書き込みが終了したタイミングで処理時間の計測が終了する。なお、データが揃っていないセグメントはファイルに書き出されずにメモリ上に残され、再送制御が行われる。処理時間の情報は、送信側で処理速度の計算及び送信設定の決定に利用される。
ファイルへの書き込みが遅延すると、復元したデータを一時的に蓄積するアプリケーション層のメモリの空き容量が不足することがある。アプリケーション層のメモリの空き容量が不足すると、トランスポート層から転送されるパリティパケットをアプリケーション層で受け取れなくなるなど、受信処理が滞ってしまう原因となる。しかし、上記のようにデータの書き出しに要する時間を処理時間に含むことで、ファイルへの書き込みが遅延している状況を考慮した送信設定の動的な変更が行われるようになり、書き込み遅延に起因して受信処理が滞ってしまう事態を回避することができる。
例えば、記憶装置にデータを書き込む場合、時々刻々と記憶装置の負荷状況が変化している。そのため、受信側の演算リソースに余裕があっても、データの書き込み処理が滞ってしまうことがある。データの書き込み処理が滞ると後続の処理が滞ってしまうため、送信側から受信側へと続々と送信されるパケットの処理が追い付かなくなる可能性がある。しかし、図16に示したような処理時間に基づいて送信設定を動的に変更すれば、受信側においてアプリケーション層のバッファがオーバーフローするなどの状況を回避することができ、安定して高いスループットを実現することが可能になる。
以上、第2の実施の形態に係る送信制御方法について説明した。
(送信処理の流れについて)
次に、図17及び図18を参照しながら、第2の実施の形態に係る送信処理の流れについて説明する。なお、図17及び図18に示した処理は、送信側の情報処理装置110により実行される。
図17は、第2の実施の形態に係る送信処理の流れについて説明した第1の図である。
(S101)制御部116は、送信するデータのデータ量を示すチェックポイントサイズを設定する。制御部116により設定されたチェックポイントサイズの情報は、ブロック化部112に入力される。
(S102)ブロック化部112は、チェックポイントサイズのデータをブロックに割り当てる。パケット生成部113は、ブロックに割り当てられたデータを分割してヘッダを付加することで、複数のデータパケットを生成する。消失訂正符号化部114は、これらデータパケットをRPS符号化して複数のパリティパケットを生成する。通信部115は、パリティパケット及びチェックポイントデータを送信する。
(S103)制御部116は、受信側の情報処理装置130から再送要求を受け取ったか否かを確認し、再送要求の有無によりパケットロスが発生したか否かを判定する。パケットロスが発生した場合(再送要求を受け取った場合)、処理はS104に進む。パケットロスが発生していない場合(再送要求を受け取っていない場合)、処理はS105に進む。
なお、あるブロックについて再送制御なしに全てのデータが復元できた場合、制御部116は、処理時間の情報及び復元したデータのデータ量を示す情報を含む送達確認を受け取る。一方、あるブロックについて再送制御が行われた場合、制御部116は、1回目の再送要求から処理時間の情報及び復元したデータのデータ量を示す情報を取得する。さらに、全てのデータが復元できた際に送信される送達確認を受け取る。
(S104)制御部116は、受信側の情報処理装置130から受け取った再送要求に応じて、復元不能なデータパケットの復元に用いるパリティパケットを再送させる。S104の処理が終了すると、処理はS103に進む。
(S105)制御部116は、処理時間の情報や復元したデータのデータ量を示す情報に基づき、単位時間当たりに処理したデータ量を示す処理速度を計算する。そして、制御部116は、処理速度の情報を保持する。
(S106)制御部116は、パリティパケットの送信時刻やパリティパケットの受信時刻などの情報に基づいて通信速度を計算する。
(S107)制御部116は、再送制御を行う前に復元できなかったデータパケットのパケット数、及び送信したデータパケットのパケット数に基づいてパケットロス率を計算する。また、制御部116は、計算したパケットロス率を保持する。
(S108)制御部116は、パリティパケットを送信してから送達確認を受信するまでに要した時間から処理時間を差し引いてRTTを計算する。S108の処理を終了すると、処理は図18に示すS109に進む。
図18は、第2の実施の形態に係る送信処理の流れについて説明した第2の図である。
(S109)制御部116は、1つ前のブロックのデータ送信時に計算したパケットロス率が、今回のブロックのデータ送信時に計算したパケットロス率よりも低いか否かを判定する。1つ前のブロックのデータ送信時に計算したパケットロス率の方が低い場合、処理はS110に進む。一方、1つ前のブロックのデータ送信時に計算したパケットロス率の方が低くない場合、処理はS111に進む。
(S110)制御部116は、1つ前のブロックのチェックポイントサイズを仮設定値αに設定する。S110の処理を終了すると、処理はS112に進む。
(S111)制御部116は、今回のブロックのチェックポイントサイズを仮設定値αに設定する。S111の処理を終了すると、処理はS112に進む。
(S112)制御部116は、1つ前のブロックのデータ送信時に計算した処理速度が、今回のブロックのデータ送信時に計算した処理速度よりも速いか否かを判定する。1つ前のブロックのデータ送信時に計算した処理速度の方が速い場合、処理はS113に進む。一方、1つ前のブロックのデータ送信時に計算した処理速度の方が速くない場合、処理はS114に進む。
(S113)制御部116は、受信側の情報処理装置130における処理負荷が高いと判断し、上述したマッピング表に基づいて変動量βを設定する。なお、通信速度・パケットロス率・RTTが1つ前のブロックと今回のブロックとで大きく変化していない場合、変動量βの値は負(マイナス)になることが期待される。S113の処理を終了すると、処理はS115に進む。
(S114)制御部116は、受信側の情報処理装置130における処理負荷が低いと判断し、上述したマッピング表に基づいて変動量βを設定する。なお、通信速度・パケットロス率・RTTが1つ前のブロックと今回のブロックとで大きく変化していない場合、変動量βの値は正(プラス)になることが期待される。S114の処理を終了すると、処理はS115に進む。
(S115)制御部116は、データの送信を終了するか否かを判定する。例えば、制御部116は、ユーザ又はアプリケーションによる終了指示の有無や、送信すべきデータの有無に基づいてデータの送信を終了するか否かを判定する。データの送信を終了しない場合、処理はS116に進む。一方、データの送信を終了する場合、S101〜S116に係る一連の処理を終了する。
(S116)制御部116は、次回のブロックのデータ送信時に用いるチェックポイントサイズを(α+β)に設定する。S116の処理を終了すると、処理は図17のS102に進む。
以上、第2の実施の形態に係る送信処理の流れについて説明した。
(受信処理の流れについて)
次に、図19を参照しながら、第2の実施の形態に係る受信処理の流れについて説明する。なお、図19に示した処理は、受信側の情報処理装置130により実行される。図19は、第2の実施の形態に係る受信処理の流れについて説明した図である。
(S201)通信部131は、送信側の情報処理装置110から送信されたパリティパケットを受信する。
(S202)消失訂正復号部132は、RPS復号を実施してパリティパケットからデータパケットを復元する。このとき、伝送路でパケットの順序が入れ替わっている場合にはパケットの順序が整列される。また、処理時間計測部133は、1つのブロックについての復元処理が開始されたタイミングで処理時間の計測を開始する。
(S203)データ出力部135は、復元されたデータを記憶部136に書き込む。データ出力部135は、復元されたデータを順次バッファに蓄積していき、連続する所定量(セグメント単位)のデータが揃った時点で、揃ったデータを記憶部136に書き込む。但し、パケットロスなどに起因してセグメント単位でデータが揃っていない場合には、再送制御などによりデータが揃うまで、そのセグメントのデータはバッファに保持される。
(S204)処理時間計測部133は、復元されたデータが記憶部136に書き込まれたタイミングで処理時間の計測を終了し、処理時間を計算する。
(S205)消失訂正復号部132は、復元したデータのデータ量を計算する。
(S206)消失訂正復号部132は、チェックポイントデータが示すデータ量のデータが全て復元されたか否かを判定する。データが全て復元された場合、処理はS207に進む。復元不能なデータが存在する場合、再送制御部134は、送信側の情報処理装置110に対して再送要求を送信する。再送要求を送信した場合、処理はS201に進む。
1回目の再送要求を送信する場合、その再送要求は、処理時間及び復元したデータのデータ量を示す情報を含めて送信される。2回目以降の再送要求を送信する場合には、S204及びS205の処理をスキップし、処理時間及び復元したデータのデータ量を示す情報を含まない再送要求を送信側の情報処理装置110に送信する。
(S207)通信部131は、送達確認を送信側の情報処理装置110に送信する。再送制御が行われなかった場合、処理時間及び復元したデータのデータ量を示す情報を含む送達確認が送信される。一方、再送制御が行われた場合、処理時間及び復元したデータのデータ量を示す情報を含まない送達確認が送信される。
(S208)データの受信を終了する場合、S201〜S208に係る一連の受信処理は終了する。一方、データの受信を終了しない場合、処理はS201に進む。例えば、ユーザ又はアプリケーションによる終了指示や送信側の情報処理装置110から受けた終了指示に応じて受信処理が終了する。
以上、第2の実施の形態に係る受信処理の流れについて説明した。
以上説明したように、第2の実施の形態に係る技術を適用すれば、受信側の処理負荷が高い場合でも、処理遅延により受信側のアプリケーション層のバッファがオーバーフローするといった困難な事態を回避することが可能になる。また、パケットロス率が高い状況では消失訂正能力を高めるなどの制御が動的に実施されるため、再送要求の頻度が低減される。このように、時々刻々と変化する伝送路の状況や受信側の負荷状況に応じて送信設定を動的に変更することで、安定して高いスループットを維持することが可能になる。
ところで、これまでは一例としてRPS符号化方式を前提に説明を進めてきたが、RPS符号に代えてLDPC符号やターボ符号などの誤り訂正符号を適用する方法も考えられる。例えば、LDPC符号を適用する場合、受信側の処理速度が遅い場合に符号長を短く変更し、受信側の処理速度が速い場合に符号長を長く変更する仕組みに変形すればよい。さらに、パケットロス率が高い場合に符号長を長く、パケットロス率が低い場合に符号長を短くする仕組みに変形すればよい。
また、上記説明においては、符号化の対象となるブロックに含めるデータの量を受信側の処理速度などに応じて調整する方法を示したが、TCPのウィンドウサイズのように、ACKを待たずに送信できるパケット量を調整する方法も考えられる。この方法を適用した場合でも、ファイルの書き込み遅延に起因してアプリケーション層のメモリがオーバーフローするような事態を回避することが可能である。
10、110、130 情報処理装置
11、115、131 通信部
12、116 制御部
21 データ
22 処理時間情報
111 データ入力部
112 ブロック化部
113 パケット生成部
114 消失訂正符号化部
132 消失訂正復号部
133 処理時間計測部
134 再送制御部
135 データ出力部
136 記憶部

Claims (5)

  1. 他のコンピュータにデータを送信可能なコンピュータに、
    前記他のコンピュータからの応答を待たずに送信できるデータの量の閾値を第1の閾値に設定し、前記第1の閾値以下の量の第1のデータを符号化して前記他のコンピュータに送信し、
    前記他のコンピュータが前記第1のデータの復号を開始してから復号されたデータを記憶装置に書き込むまでの時間を含む処理時間情報を前記他のコンピュータから取得し、
    前記処理時間情報に基づいて、前記データの量の閾値を前記第1の閾値から第2の閾値に変更し、前記第2の閾値以下の量の第2のデータを前記他のコンピュータに送信する、
    処理を実行させるプログラム。
  2. 前記処理時間情報と前記第1のデータが送信されたときの通信状況を示す通信状況情報との組み合わせに基づいて、前記データの量の閾値を変更する、
    請求項1に記載のプログラム。
  3. 前記第2のデータは符号化されて送信され、
    前記第2のデータの送信では、符号化前の前記第2のデータの量を前記第2の閾値に基づいて制限するか、又は、符号化率を変更することで符号化後の前記第2のデータの量を前記第2の閾値に基づいて制限する、
    請求項1に記載のプログラム。
  4. 他の情報処理装置にデータを送信可能な情報処理装置であって、
    第1のデータを符号化して前記他の情報処理装置に送信し、前記他の情報処理装置が前記第1のデータの復号を開始してから復号されたデータを記憶装置に書き込むまでの時間を含む処理時間情報を前記他の情報処理装置から受信し、第2のデータを前記他の情報処理装置に送信する通信部と、
    前記他の情報処理装置からの応答を待たずに送信できるデータの量の閾値を第1の閾値に設定して、前記第1のデータの量を前記第1の閾値以下に制限し、前記処理時間情報に基づいて前記データの量の閾値を前記第1の閾値から第2の閾値に変更して、前記第2のデータの量を前記第2の閾値以下に制限する制御部と、
    を有する情報処理装置。
  5. 他の情報処理装置にデータを送信可能な情報処理装置が実行する通信方法であって、
    前記他の情報処理装置からの応答を待たずに送信できるデータの量の閾値を第1の閾値に設定し、前記第1の閾値以下の量の第1のデータを符号化して前記他の情報処理装置に送信し、
    前記他の情報処理装置が前記第1のデータの復号を開始してから復号されたデータを記憶装置に書き込むまでの時間を含む処理時間情報を前記他の情報処理装置から取得し、
    前記処理時間情報に基づいて、前記データの量の閾値を前記第1の閾値から第2の閾値に変更し、前記第2の閾値以下の量の第2のデータを前記他の情報処理装置に送信する、
    通信方法。
JP2012285313A 2012-12-27 2012-12-27 プログラム、情報処理装置、及び通信方法 Expired - Fee Related JP6064593B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012285313A JP6064593B2 (ja) 2012-12-27 2012-12-27 プログラム、情報処理装置、及び通信方法
US14/105,978 US9401775B2 (en) 2012-12-27 2013-12-13 Communication method, information processing apparatus, and recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012285313A JP6064593B2 (ja) 2012-12-27 2012-12-27 プログラム、情報処理装置、及び通信方法

Publications (2)

Publication Number Publication Date
JP2014127969A JP2014127969A (ja) 2014-07-07
JP6064593B2 true JP6064593B2 (ja) 2017-01-25

Family

ID=51017074

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012285313A Expired - Fee Related JP6064593B2 (ja) 2012-12-27 2012-12-27 プログラム、情報処理装置、及び通信方法

Country Status (2)

Country Link
US (1) US9401775B2 (ja)
JP (1) JP6064593B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110495120B (zh) 2017-04-03 2022-04-29 瑞典爱立信有限公司 用于具有可变处理时间的节点的harq处理
CN107147481A (zh) * 2017-07-19 2017-09-08 北京数码视讯科技股份有限公司 丢包重传方法、装置及电子设备
WO2019146098A1 (ja) 2018-01-29 2019-08-01 三菱電機株式会社 制御システム、制御方法、及び、プログラム
CN116134391A (zh) * 2020-02-04 2023-05-16 发那科株式会社 控制系统
JPWO2023058078A1 (ja) * 2021-10-04 2023-04-13

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6141324A (en) 1998-09-01 2000-10-31 Utah State University System and method for low latency communication
US6643259B1 (en) * 1999-11-12 2003-11-04 3Com Corporation Method for optimizing data transfer in a data network
JP2002169738A (ja) 2000-11-30 2002-06-14 Mitsubishi Electric Corp ファイル配信方法
JP3763812B2 (ja) * 2002-11-01 2006-04-05 松下電器産業株式会社 通信システム及び方法
US8125910B2 (en) * 2004-06-25 2012-02-28 Nec Corporation Communication system
JP2007201702A (ja) * 2006-01-25 2007-08-09 Mitsubishi Electric Corp 受信装置、通信装置および通信方法
JP4808054B2 (ja) * 2006-03-17 2011-11-02 富士通株式会社 データ転送方法及び,これを適用する通信システム及びプログラム
JP2009071360A (ja) * 2007-09-10 2009-04-02 Ricoh Co Ltd 通信装置および通信方法
WO2010038108A1 (en) * 2008-09-30 2010-04-08 Freescale Semiconductor, Inc. Data processing
US8514715B2 (en) * 2010-04-22 2013-08-20 Akamai Technologies, Inc. Congestion window control based on queuing delay and packet loss
EP2695388B1 (en) * 2011-04-07 2017-06-07 ActiveVideo Networks, Inc. Reduction of latency in video distribution networks using adaptive bit rates

Also Published As

Publication number Publication date
US9401775B2 (en) 2016-07-26
US20140185444A1 (en) 2014-07-03
JP2014127969A (ja) 2014-07-07

Similar Documents

Publication Publication Date Title
US10009259B2 (en) Multi-path data transfer using network coding
JP6064593B2 (ja) プログラム、情報処理装置、及び通信方法
JP6023368B1 (ja) インタラクティブなリアルタイムメディアの転送プロトコル
WO2017005055A1 (zh) 流媒体网络传输的带宽计算方法、服务器端和系统
US20160323062A1 (en) Packet recovery in interactive real-time media protocol
US9007905B2 (en) System to improve an Ethernet network
JP2017508372A (ja) 輻輳制御ビットレート・アルゴリズム
US20170118673A1 (en) Random Linear Network Encoded Data Transmission
EP2719132A1 (en) System and method for reliable virtual bi-directional data stream communications with single socket point-to-multipoint capability
KR101607773B1 (ko) 데이터 송신 장치 및 이를 이용하는 데이터 통신 방법
JPWO2014147774A1 (ja) 通信方法、通信装置、および、通信プログラム
US9130740B2 (en) Variable acknowledge rate to reduce bus contention in presence of communication errors
US7764616B2 (en) Transmitter device for controlling data transmission
CN102664718A (zh) 无线侧tcp数据重传的方法和设备
US8607114B2 (en) Communication device and communication method
CN104579601A (zh) 一种重传请求处理方法和装置
CN112995685A (zh) 数据发送方法及装置、数据接收方法及装置、介质、设备
JP2019106697A (ja) 相互接続ネットワークでのメッセージ再送遅延を動的に管理するための方法及びデバイス
US9509623B2 (en) Information processing device, information processing system, and method for processing packets from transmitting devices
JP5998923B2 (ja) プログラム、情報処理装置、及び通信方法
JP2007235674A (ja) 通信装置および通信方法
WO2023078222A1 (zh) 数据传输方法、装置、设备和介质
CN116318545A (zh) 视频数据传输方法、装置、设备及存储介质
US9294409B2 (en) Reducing round-trip times for TCP communications
CN110299973B (zh) 一种数据滚动传输的接收方法及装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150804

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160414

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160426

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160624

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20161122

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161205

R150 Certificate of patent or registration of utility model

Ref document number: 6064593

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees