JP4506185B2 - 受信装置および方法、並びにプログラム - Google Patents

受信装置および方法、並びにプログラム Download PDF

Info

Publication number
JP4506185B2
JP4506185B2 JP2004030402A JP2004030402A JP4506185B2 JP 4506185 B2 JP4506185 B2 JP 4506185B2 JP 2004030402 A JP2004030402 A JP 2004030402A JP 2004030402 A JP2004030402 A JP 2004030402A JP 4506185 B2 JP4506185 B2 JP 4506185B2
Authority
JP
Japan
Prior art keywords
data
unit
determinant
packet
coefficient matrix
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
JP2004030402A
Other languages
English (en)
Other versions
JP2005223684A (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.)
Sony Corp
Original Assignee
Sony Corp
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 Sony Corp filed Critical Sony Corp
Priority to JP2004030402A priority Critical patent/JP4506185B2/ja
Priority to EP20050250595 priority patent/EP1562317A3/en
Priority to US11/051,291 priority patent/US7734946B2/en
Publication of JP2005223684A publication Critical patent/JP2005223684A/ja
Application granted granted Critical
Publication of JP4506185B2 publication Critical patent/JP4506185B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0057Block codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3761Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using code combining, i.e. using combining of codeword portions which may have been transmitted separately, e.g. Digital Fountain codes, Raptor codes or Luby Transform [LT] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/63Joint error correction and other techniques
    • H03M13/6306Error control coding in combination with Automatic Repeat reQuest [ARQ] and diversity transmission, e.g. coding schemes for the multiple transmission of the same information or the transmission of incremental redundancy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L2001/0092Error control systems characterised by the topology of the transmission link
    • H04L2001/0093Point-to-multipoint

Description

本発明は、信装置および方法、びにプログラムに関し、特に、パケットロスの復元処理の負荷を軽減させ、より正確な通信を、より容易に行うことができるようにした信装置および方法、びにプログラムに関する。
従来、データ通信における誤り訂正方法として、様々な方法が提案されている。例えば、広い帯域に分散するレベルの大きい雑音が重畳するような有線,無線,光等の伝送媒体や記録媒体を介した複数チャネルのデータに対して、複数チャネルの中の少なくとも1チャネルをエラー訂正チャネルとし、他のチャネルの排他的論理和又はモジュロ加算の結果をエラー訂正チャネルのデータとして、受信判定した複数チャネルのデータ又は再生判定した複数チャネルのデータについて、エラー訂正チャネルの判定データと、そのエラー訂正チャネルと組としたチャネルの判定データとの排他的論理和又はモジュロ加算の結果が“0”等の予め定めた特定の値でない場合にエラー発生と判定し、且つチャネル毎の品質を検出して品質劣化のチャネルのデータのエラー発生確率が高いので、このチャネルのデータを除く他のチャネルのデータの排他的論理和又はモジュロ加算の結果を、品質劣化のチャネルのデータと置換することにより、エラー訂正を行う方法がある(例えば、特許文献1参照)。
データ通信としては、近年、ブロードバンド通信網の発達などにより、インターネットに代表されるネットワークを介して音声や映像等のデータのストリーミング配信やリアルタイムな放送等が数多く行われるようになってきた。
このようなネットワークを介したデータ配信においては、ネットワークにおいてパケットロスが発生する場合があり、上述したような受信したデータに対するエラー訂正だけでは対処できない場合があった。
そこで、ロスしたパケットに対するエラー訂正方法として、例えば、受信側が、ロスしたパケットの再送を送信側に要求する再送制御を行う方法やリードソロモン符号を用いた誤り検出訂正方法(FEC:Forward Error Correction)が提案されている(例えば、特許文献2参照)。
リードソロモン符号によるパケットロスに対するエラー訂正処理において、送信装置は、所定の大きさのブロック単位ごとに、送信データの誤り訂正コードを生成し、その誤り訂正コードより冗長パケットを生成し、その生成した冗長パケットをパケット化した元のデータとともに配信する。
受信装置は、このように配信された元のデータのパケットおよび冗長パケットを受信する。そして、元のデータのパケットをロスした場合は、受信した冗長パケットを用いて、そのロスしたパケットを復元する。
特許3427382号
特開平11−136220号公報
しかしながら、上述した再送制御を行う方法においては、パケットロスが発生する度に、受信側から送信側に対して再送要求が供給されるため、高い確率でエラー訂正を行うことができるが、例えば、マルチキャストのように、複数の装置に対してデータを送信する場合、受信側の各装置より供給される再送要求が、送信側の装置に集中し、送信側の装置の負荷が増大する恐れがある。また、このような再送制御は、通信を伴うため、エラー訂正処理に所定の時間が必要になり、例えば、ストリーミング配信のように、受信側の再生処理にリアルタイム性が求められる場合、処理が間に合わない恐れがあった。
また、上述したようなリードソロモン符号を用いた誤り検出訂正方法の場合、冗長データの作成処理やロスパケットの復元処理において、ガロア体上の演算が必要であり、送受信処理の負荷が増大してしまうという課題があった。
従って、例えば、コンテンツの配信サーバが、マルチキャストやブロードキャスト等にように、多数の端末装置に対してコンテンツデータをストリーミング配信する際に、上述したようなリードソロモン符号を用いた誤り検出訂正方法を適用する場合、ストリーミング配信のために配信処理にリアルタイム性が求められるので、配信サーバには、負荷の高い冗長パケット生成処理を高速で実行するような高性能なハードウェアスペックが要求されるので、製造コストが増大してしまう。同様に、復元処理を実行する端末装置も、高性能なハードウェアスペックが要求され、製造コストが増大してしまう。
そこで、製造コストが下がるように、ガロア体上の演算処理を減らすために、生成する冗長パケットを削減する方法が考えられるが、冗長パケットを削減すると、端末装置において、パケットの復元性能が低下してしまい、エラー訂正ができない場合はパケットの再送を要求する必要が生じる場合がある。
しかしながら、マルチキャストやブロードキャストの場合、配信サーバが配信を行いながら各端末装置からの再送要求を全て処理すると、負荷が増大し、配信処理に影響を与えてしまう恐れがあった。さらに、ストリーミング配信の場合、その再送要求にもリアルタイム性を求められるため、再送要求に正常に応答するのは事実上困難であり、ストリーミング配信を正常に行うことができなくなってしまう恐れがあった。
本発明は、このような状況に鑑みてなされたものであり、復元処理の負荷を軽減させることにより、高速であり、かつ、復元性能の高い復元処理を、製造コストを増大せずに実現し、より容易に、より正確な通信を行うことができるようにするものである。
本発明の受信装置は、パケットデータである第1のデータ、並びに、複数の第1のデータの排他的論理和演算結果である第2のデータの両方を受信する受信手段と、前記受信手段により受信された前記第2のデータに付加されているパケット番号順に前記第2のデータを整列させ整列手段と、所定の係数行列から、前記受信手段により受信された前記第1のデータに付加されているパケット番号と、前記受信手段により受信された前記第2のデータに付加されているパケット番号とに対応する第1の部分行列を取得する第1の取得手段と、前記第1の取得手段により取得された前記第1の部分行列を用いて、計算用の前記第2のデータを算出するための第1の行列式を作成する第1の行列式作成手段と、前記第1の行列式作成手段により作成された前記第1の行列式を演算し、前記計算用の第2のデータを算出する算出手段と、前記係数行列から、前記受信手段により受信できなかった前記第1のデータのパケット番号と、前記受信手段により受信された前記第2のデータのパケット番号とに対応する第2の部分行列を取得する第2の取得手段と、前記第2の取得手段により取得された前記第2の部分行列を用いて、前記計算用の第2のデータを算出するための第2の行列式を作成する第2の行列式作成手段と、前記第2の行列式作成手段により作成された前記第2の行列式を解くことにより、前記受信手段により受信できなかった前記第1のデータを復元する復元手段とを備えることを特徴とする。
所定の種データを用いて前記係数行列を生成する生成手段をさらに備えることができる。
前記生成手段は、前記送信装置と同一の前記所定の種データを用いて、前記送信装置が前記第2のデータを生成するために生成した係数行列と同一の係数行列を生成することができる。
前記生成手段は、前記送信装置から送信される前記所定の種データを用いて前記係数行列を生成することができる。
前記生成手段は、前記受信手段により受信された前記第2のデータのパケット番号を前記種データとして前記係数行列を生成することができる。
本発明の受信方法は、送信装置が送信する送信用データのブロックデータが分割されたパケットデータを受信する受信装置の受信方法であって、前記受信装置の受信手段が、前記パケットデータである第1のデータ、並びに、複数の前記第1のデータの排他的論理和演算結果である第2のデータの両方を受信し、前記受信装置の整列手段が、受信された前記第2のデータに付加されているパケット番号順に前記第2のデータを整列させ、前記受信装置の第1の取得手段が、所定の係数行列から、受信された前記第1のデータに付加されているパケット番号と、受信された前記第2のデータに付加されているパケット番号とに対応する第1の部分行列を取得し、前記受信装置の第1の行列式作成手段が、取得された前記第1の部分行列を用いて、計算用の前記第2のデータを算出するための第1の行列式を作成し、前記受信装置の算出手段が、作成された前記第1の行列式を演算し、前記計算用の第2のデータを算出し、前記受信装置の第2の取得手段が、前記係数行列から、受信できなかった前記第1のデータのパケット番号と、受信された前記第2のデータのパケット番号とに対応する第2の部分行列を取得し、前記受信装置の第2の行列式作成手段が、取得された前記第2の部分行列を用いて、前記計算用の第2のデータを算出するための第2の行列式を作成し、前記受信装置の復元手段が、作成された前記第2の行列式を解くことにより、受信できなかった前記第1のデータを復元する。
本発明のプログラムは、送信装置が送信する送信用データのブロックデータが分割されたパケットデータを受信するコンピュータを、前記パケットデータである第1のデータ、並びに、複数の前記第1のデータの排他的論理和演算結果である第2のデータの両方を受信する受信手段と、前記受信手段により受信された前記第2のデータに付加されているパケット番号順に前記第2のデータを整列させ整列手段と、所定の係数行列から、前記受信手段により受信された前記第1のデータに付加されているパケット番号と、前記受信手段により受信された前記第2のデータに付加されているパケット番号とに対応する第1の部分行列を取得する第1の取得手段と、前記第1の取得手段により取得された前記第1の部分行列を用いて、計算用の前記第2のデータを算出するための第1の行列式を作成する第1の行列式作成手段と、前記第1の行列式作成手段により作成された前記第1の行列式を演算し、前記計算用の第2のデータを算出する算出手段と、前記係数行列から、前記受信手段により受信できなかった前記第1のデータのパケット番号と、前記受信手段により受信された前記第2のデータのパケット番号とに対応する第2の部分行列を取得する第2の取得手段と、前記第2の取得手段により取得された前記第2の部分行列を用いて、前記計算用の第2のデータを算出するための第2の行列式を作成する第2の行列式作成手段と、前記第2の行列式作成手段により作成された前記第2の行列式を解くことにより、前記受信手段により受信できなかった前記第1のデータを復元する復元手段として機能させる。
本発明の受信装置および方法、並びにログラムにおいては、パケットデータである第1のデータ、並びに、複数の第1のデータの排他的論理和演算結果である第2のデータの両方が受信され、受信された第2のデータに付加されているパケット番号順に第2のデータが整列させられ、所定の係数行列から、受信された第1のデータに付加されているパケット番号と、受信された第2のデータに付加されているパケット番号とに対応する第1の部分行列が取得され、取得された第1の部分行列を用いて、計算用の第2のデータを算出するための第1の行列式が作成され、作成された第1の行列式が演算され、計算用の第2のデータが算出され、係数行列から、受信できなかった第1のデータのパケット番号と、受信された第2のデータのパケット番号とに対応する第2の部分行列が取得され、取得された第2の部分行列を用いて、計算用の第2のデータを算出するための第2の行列式が作成され、作成された第2の行列式を解くことにより、受信できなかった第1のデータが復元される。
本発明によれば、データを送受信することができる。特に、より高性能な復元処理を行うことができ、より正確な通信を、より容易に行うことができる。
以下に、本発明の実施の形態について図面を参照して説明する。
図1は、本発明を適用した通信システムの構成例を表している。
図1の通信システム1は、データを送信する送信装置11、LAN(Local Area Network)やインターネット等に代表されるネットワークであり、送信装置11が接続されるネットワーク12、および、ネットワーク12に接続され、送信装置11より送信されるデータを受信する受信装置13により構成される。
送信装置11は、外部より供給されたストリームデータ等の、送信用のコンテンツデータ(送信用データ)を取得すると、その送信用データを、ネットワーク12を介して、データの送信先として設定されている受信装置13に送信する。その際、送信装置11は、送信用データを分割してパケット化し、UDP(User Datagram Protocol)等の所定のプロトコルを用いて各パケットを送信する。また、送信装置11は、後述するように、送信用データからデータ復元処理用の冗長データを生成し、その冗長データもパケット化し、元のデータ(送信用データ)とともに受信装置13に送信する。
受信装置13は、送信装置11より供給されるパケットを受信すると、受信したパケットに基づいて、元の送信用データ(コンテンツデータ)を復元し、復元したコンテンツデータを外部に供給する。その際、受信装置13は、受信できなかった(ロスした)パケット(送信用データのパケット)を、受信した冗長データを用いて復元する。
以上のように、通信システム1において、送信装置11は、送信用データの他に、その送信用データより生成した、パケットロスに対する誤り訂正用の冗長データを複数生成し、それらを送信用データとともに受信装置13に送信する。受信装置13は、その冗長データ(受信した冗長データ)に基づいて、受信できなかった元の送信用データの復元処理を行う。このようにすることにより、受信装置13は、送信装置11に再送要求を行うことなく、ロスしたデータを復元することができる。
図2は、送信装置11の詳細な構成例を示すブロック図である。なお、送信装置11により処理される送信用データの変化を、図3を用いて説明する。
例えば、図2において、送信装置11のデータ分割部31は、送信装置11の外部より供給されたコンテンツデータ等の送信データを所定のデータサイズのブロックに分割し、それをブロック分割部32に供給する。すなわち、データ分割部31は、供給される送信データを内蔵するバッファ(図示せず)に蓄積していき、所定のデータサイズのデータが蓄積される度に、それをブロックとしてブロック分割部32に供給する。
例えば、図3において、送信装置11に供給される送信データ51は、データ分割部31により、所定のデータサイズ単位の複数のブロック52に分割される。図3の場合、送信データ51は3個のブロック52に分割される。
ブロック分割部32は、データ分割部31と同様にして、データ分割部31より供給されるブロック単位の送信データを、さらに所定のデータサイズに分割する。すなわち、ブロック分割部32は、ブロック単位の送信データを、後段において、パケット化する際のデータサイズ(パケットサイズ)に分割し、パケット用のデータ(パケットデータ)を生成する。パケットデータを生成したブロック分割部32は、それを、冗長データ生成部33およびアプリケーションデータ生成部34に供給する。
例えば、図3において、ブロック52は、それぞれ、ブロック分割部32により、パケット化する際のデータサイズのパケットデータである元データ53に分割される。図3の場合、各ブロックはそれぞれ6個の元データ61に分割される。もちろん、この分割数は、パケットデータのデータサイズとブロックのデータサイズによって決定されるものであり、1つのブロックをいくつのパケットデータに分割するようにしてもよい。
冗長データ生成部33は、元の送信用データを分割したパケットデータ(元データ)を1ブロック分取得すると、その元データに基づいて、受信側においてロスしたパケットを復元するために用いられる冗長データを生成する。具体的には、冗長データ生成部33は、1ブロック分の元データより、任意の元データを選択し、それらをEOR演算(Exclusive OR:排他的論理和)により合成し、冗長データとする。より具体的な生成方法については後述する。
なお、この復元処理用の冗長データは、EOR演算により複数の元データを合成したものであり、そのまま元データとして利用することはできないが、実質、元データの内容を含んでいることになる。従って、元データと情報が重複しているので、この復元処理用のデータのことを「冗長データ」と称する。また、この冗長データは、後述するように、元データと同じデータサイズであり、この冗長データもパケット化されて送信される。
すなわち、パケットデータ(パケットサイズのデータ)には、元データ(送信用データを分割して生成されたパケットデータ)と、冗長データ(元データに基づいて作成されたロスパケット復元用のパケットデータ)とがあり、以下においては、元データと冗長データを区別する必要がない場合は、パケットデータと称し、区別する必要がある場合は、それぞれを元データ、冗長データと称する。
冗長データ生成部33は、生成した冗長データをアプリケーションデータ生成部34に供給する。
アプリケーションデータ生成部34は、ブロック分割部32より供給された元データ、および、冗長データ生成部33より供給された冗長データに、それぞれ、ヘッダを付加し、アプリケーションデータを生成する。すなわち、アプリケーションデータには、元データにヘッダが付加されたものと、冗長データにヘッダが付加されたものがある。ヘッダの内容については、後述する。
アプリケーションデータ生成部34は、生成したアプリケーションデータをUDPパケット化部35に供給する。
なお、ここまでの処理は、ISO(International Organization for Standardization)が制定した7階層のネットワークプロトコルの構造のモデルであるOSI階層モデル(Open Systems Interconnection layer model)における、アプリケーション層、プレゼンテーション層、およびセション層の処理である。
アプリケーションデータを供給されたUDPパケット化部35は、そのアプリケーションデータをUDPプロトコルに基づいてパケット化し、その生成したUDPパケットをバッファ36に供給する。
図4に示されるように、UDPパケット61は、64ビットのUDPヘッダ62およびアプリケーションデータ63によりにより構成される。UDPヘッダ62には、送信元のポート番号、送信先のポート番号、アプリケーションデータ63のデータ長、およびチェックサム等の情報が含まれる。アプリケーションデータのデータサイズは、任意に定められた所定の値であるが、通常1Kバイト程度である。
バッファ36は、RAM(Random Access Memory)等の半導体メモリ等により構成され、UDPパケット化部35より供給されるUDPパケットを蓄積し、出力制御部37の制御に基づいて、その蓄積しているUDPパケットを出力する。
出力制御部37は、バッファ36にUDPパケットが1ブロック分蓄積されると、それらのUDPパケットを任意の(ランダムな)順番で取得し、それらをIP(Internet Protocol)処理部38に供給する。すなわち、バッファ36および出力制御部37は、UDPパケット化部35において生成されたUDPパケットの出力順を変更(シャッフル)し、元データを含むUDPパケットと、冗長データを含むUDPパケットを任意の順番で出力させる。
一般に、パケットの送信時にネットワーク等において、受信側が連続する複数のパケットをバースト的にロスする(受信できない)場合がある。また、後述するように、受信装置13において、ロスした元データを復元する際の復元能力は、受信した冗長データの個数に約比例する。従って、送信装置11が元データと冗長データをそれぞれ順番に出力した場合、そのようなバースト的パケットロスにより、パケットのロスが冗長データに集中してしまうと、復元能力が極端に低下する恐れがある。
そこで、送信装置11のバッファ36および出力制御部37が、以上のようにUDPパケットの出力順をシャッフルして、元データと冗長データを混在させた順番で送信するようにすることにより、パケットの送信時にバースト的パケットロスが発生しても、そのロスが冗長データに集中することを抑制することができ、バースト的パケットロスに対する耐性を強くすることができる。すなわち、送信装置11は、より正確にデータを受信装置13に送信することができ、通信システム1は、より正確なデータの送受信を実現することができる。
例えば、図3において、元データ53および冗長データ54はUDPパケット化された後、その出力順がシャッフルされて、送信パケット55として任意の順番で送信される。
なお、これらのUDPパケット化部35乃至出力制御部37による処理は、OSI階層モデルにおける、トランスポート層の処理である。
IP処理部38は、OSI階層モデルにおける、ネットワーク層の処理を行い、IPプロトコルに基づいて、出力制御部37より供給されるUDPパケットをそれぞれIPパケット化し、イーサネット(R)(Ethernet(R))処理部39に供給する。
イーサネット(R)処理部39は、イーサネット(R)の規格に基づいて、データリンク層および物理層の処理を行い、IP処理部38より供給されたIPパケットをさらにパケット化し、受信装置13に送信するように、それを、ケーブル40を介してネットワーク12に出力する。
イーサネット(R)処理部39より出力されたパケットは、ネットワーク12を介して受信装置13に供給される。
次に、図2の冗長データ生成部33の詳細について説明する。なお、以下においては、送信装置11は、1ブロックの送信データより、N個の元データD(D1乃至DN)を生成し、そのN個の元データDよりM個の冗長データS(S1乃至SM)を生成する場合について説明する。図5は、冗長データ生成部33の詳細な構成例を示すブロック図である。
図5において、図2のブロック分割部32より供給された元データは、元データ保持部71に供給され、保持される。元データ保持部71は、1ブロック分の元データを保持すると、その元データを行列式生成部72に供給する。
1ブロック分の元データを取得すると、行列式生成部72は、係数行列供給部73に対して、冗長データを生成するための行列式の生成に用いられる係数行列を要求する(図中、点線矢印)。係数行列は、全成分が「1」または「0」のM行N列の行列であり、EOR演算を行う元データを選択するための行列である。後述するように、全冗長データは、係数行列と、各元データを成分とする行列との積算により求められる。従って、係数行列の各行は、互いに異なる冗長データに対応し、その各行の各成分は、それぞれ互いに異なる元データと積算される。すなわち、各冗長データは、係数行列の値が「1」の成分と積算された元データのEOR演算結果となる。
このような係数行列を要求された係数行列供給部73は、その要求に対して、後述するように、線形合同法を用いた擬似乱数により予め生成された係数行列を行列式生成部72に供給する。
行列式生成部72は、係数行列を取得すると、その係数行列と1ブロック分の元データを用いて、そのブロックに対する冗長データを生成するための行列式を生成する。具体的には、行列生成部72は、以下の式(1)に示されるような行列式を生成する。
Figure 0004506185
式(1)において、右辺第1項は、M行N列の係数行列であり、係数行列供給部73より供給された係数行列である。右辺第2項は、元データD(D1乃至DN)の行列であり、左辺の行列は、この行列式により算出される冗長データS(S1乃至SM)である。なお、式(1)において、加算の代わりにビット毎のEOR演算が行われる。係数行列の各成分の値は、後述するように、ランダムに決定される。すなわち、式(1)は、各冗長データS1乃至SMが係数行列により、元データD1乃至DNの中から任意に選択された元データのEOR演算結果であることを示している。
このような行列式を生成すると、行列式生成部72は、この行列式を行列式演算部74に供給する。なお、行列式は、所謂、連立方程式と同じものを示すものとする。以下においても同様である。
行列式演算部74は、式(1)に示されるような行列式を演算する。すなわち、行列式演算部74は、右辺第1項の係数行列の各行において、その行の各列成分を、それらが対応する、右辺第2項における各行成分(元データD1乃至DN)とそれぞれ積算し、得られた各積算結果を用いて、互いに対応するビット毎にEOR演算を行うことにより、各行に1つのEOR演算結果を算出し、それを冗長データSとする。
ここで、通常の10進数の場合の、2つの行列の積算における演算手順を説明すると、まず、第1項の行列の各行が第2項の行列の各列と積算される。具体的には、第1項の行列の各行と第2項の行列の各列が互いに対応する成分毎に積算される。例えば、第1項の第1行目について説明すると、その行の第i列目の成分は、第2項の各列の第i行目の成分と積算される。このように積算が行われると、次に、この積算毎に各成分の積算結果が全て加算される。例えば、第1項の行列がN列の行列であり、第2項の行列がN行の行列であるとすると、第1項の行列の各行と第2項の行列の各列の各積算において、それぞれ、N個の成分同士の積算結果が得られるので、それらのN個の積算結果が加算され、この加算結果が、第1項の行列の行と第2項の行列の列の積算結果とされる。
上述した式(1)の行列式においても、基本的にはこのような演算手順と同様の演算手順により演算が行われる。しかしながら、元データDや冗長データSは、2進数のビット列であるので、上述した10進数の場合の演算手順における、成分同士の積算結果の加算処理の代わりに、ビット毎のEOR演算が用いられる。
演算手順の順序で説明すると、行列式演算部74は、上述した10進数の場合と同様に、式(1)の右辺第1項の係数行列の各行を、右辺第2項の行列(元データD1乃至DNを成分とする行列)の列と積算する。具体的には、右辺第1項の係数行列の各行の各列成分を、右辺第2項の行列の各成分(元データD1乃至DN)と、それぞれ積算する。右辺第1項の係数行列の各成分の値は「1」または「0」であるので、各成分の積算結果は、右辺第2項の各成分(元データD1乃至DN)となるか、若しくは、「0」(具体的には、元データDと同じビット数であり、各ビットの値が「0」のビット列)となる。
次に、行列式演算部74は、これらの各成分の積算結果を、上述したように互いに対応するビット毎のEOR演算により合成する。なお、EOR演算について具体的に説明すると、値「0」と値「0」とのEOR演算結果の値は「0」であり、値「0」と値「1」とのEOR演算結果の値は「1」であり、値「1」と値「0」とのEOR演算結果の値は「1」であり、値「1」と値「1」とのEOR演算結果の値は「0」である。従って、例えば、「11110000」のビット列と、「10101010」のビット列とのEOR演算結果は、「01011010」となる。行列式演算部74は、このようなEOR演算を繰り返し、各成分の積算結果を全て合成する。そして、このEOR演算結果が、1つの冗長データSとされる。
以上のような演算を、式(1)の右辺第1項の係数行列の各行に対して繰り返し、全ての左辺第1項の行列の成分として示される冗長データS1乃至SMが求められる。
なお、上述したように、係数行列の各成分の値は、「0」または「1」であるので、その各成分と元データD1乃至DNとの積算結果は、右辺第2項の各成分(元データD1乃至DN)となるか、若しくは、「0」となる。従って、この積算について換言すると、行列式演算部62は、その各成分と元データD1乃至DNとの積算により、冗長データSを生成するために用いる元データDを選択(抽出)している。
また、上述したように、各成分の積算結果が互いに対応するビット毎のEOR演算により合成されるので、合成結果(EOR演算結果)の各ビットの値は、そのビットが対応する、EOR演算される各積算結果のビットにおいて、値が「1」である積算結果の数が奇数である場合、「1」になり、値が「1」である積算結果の数が偶数である場合、「0」になる。従って、このEOR演算について換言すると、行列式演算部62は、上述した成分毎の積算結果の各ビットの値を、互いに対応するビット毎に集計し、値が「1」である積算結果の数が奇数である場合、そのビットに対応する冗長データSのビットの値を「1」とし、値が「1」である積算結果の数が偶数である場合、そのビットに対応する冗長データSのビットの値を「0」とする。
すなわち、行列式演算部62は、元データD1乃至DNの中から、所定の方法により元データDを選択し、その選択した各元データDの、互いに対応するビットについて、値が「1」の数が奇数である場合、そのビットに対応する冗長データSのビットの値を「1」とし、値が「1」の数が偶数である場合、そのビットに対応する冗長データSのビットの値を「0」として、各冗長データSを求める。
行列式演算部62は、以上のように演算を行い、冗長データS(S1乃至SM)を求め、その解を解出力部75に供給する。すなわち、送信装置11においては、送信データより、図6に示されるようなパケットデータが生成されて送信される。
図6において、元データ81は、パケットデータ81−1乃至81−Nにより構成され、冗長データ82は、パケットデータ82−1乃至82−Mにより構成される。元データ81であるパケットデータ81−1乃至81−Nは、それぞれ、元データD1乃至DNに対応しており、冗長データ82であるパケットデータ82−1乃至82−Mは、元データD1乃至DNの中から任意に選択された元データのEOR演算結果(排他的論理和)である。
解出力部75は、それを、冗長データSとして、所定のタイミングで図2のアプリケーションデータ生成部34に供給する。
次に、以上のようなEOR演算に用いられる係数行列について説明する。
図7は、図5の係数行列供給部73の詳細な構成例を示すブロック図である。
図7において、種データ保持部91は、RAM等の記憶素子により構成され、後述する擬似乱数の生成に用いられる種データを保持する。なお、種データとしてはどのような値であってもよいが、以下においては、予め定められた任意の定数を種データとする場合について説明する。
擬似乱数生成部92は、例えば、電源投入時等の所定のタイミングになると、種データ保持部91に種データを要求する(図中点線矢印)。種データ保持部91は、その要求に基づいて、種データを擬似乱数生成部92に供給する。擬似乱数生成部92は、種データを取得すると、その種データに基づいて、以下の式(2)に示されるような線形合同法のモジュロ演算を行い、擬似乱数を生成する。
Figure 0004506185
式(2)において、変数Lは、種データである。また、右辺の変数randは、1回前の演算により算出された擬似変数(すなわち、1回前の演算における左辺のrand)である。変数randの初期値は「0」である。擬似乱数生成部92は、式(2)のモジュロ演算を例えば32ビット処理で行う。
擬似乱数生成部92は、式(2)を演算し、変数rand(擬似乱数)を算出すると、その値を擬似乱数バッファ93に供給して保持させるとともに、係数判定部94に供給する。擬似乱数バッファ93に保持されている変数randは、擬似乱数生成部92に再度読み出され、次回の擬似乱数演算において、式(2)の右辺の変数randに代入され、利用される。
以上の処理を繰り返し、擬似乱数生成部92は、擬似乱数をM×N個生成し、それらを順次、係数判定部94に供給する。
係数判定部94は、取得した擬似乱数の値に基づいて、係数行列の各成分の値を1つずつ判定する。このとき、係数判定部94は、取得した擬似乱数の値に対して、例えば、閾値を設け、取得した擬似乱数の値が、その閾値以上である場合は、係数行列の成分の値を「1」と判定し、閾値より小さい場合は、係数行列の成分の値を「0」と判定し、その判定結果を係数行列保持部95に供給し、保持させる。
その際、係数判定部94は、係数生成確率保持部95に保持されている係数生成確率pを取得し、この係数生成確率pの値に基づいて、閾値の値を決定する。すなわち、係数判定部94は、値が「0」と「1」で構成される係数行列の全成分の内、値が「1」の成分の割合が係数生成確率pの値になるように(近づくように)、閾値の値を設定する。
係数生成確率pは、予め定められた、「0」より大きく、かつ、「1」より小さい値の定数であり、係数行列の全成分の内、値が「1」の成分の割合がどの程度になるかを確率的に指定する値である。すなわち、例えば、係数生成確率pの値が「0.5」であった場合、係数判定部94は、生成された係数行列において、値が「0」の成分の数と、値が「1」の成分の数とがほぼ1対1となるように(近似するように)閾値を設定する。例えば、擬似乱数の値が、均一の確率で32ビット全体に分布すると仮定した場合、係数判定部94は、閾値の値を「2147483648」に設定する。
以上のようにして、係数行列保持部96には、係数判定部94より1つずつ判定結果(「0」または「1」)が供給され、係数行列保持部96は、それらの判定結果を成分とするM行×N行の係数行列を生成し保持する。
そして、係数行列出力部97は、図5の行列式生成部72より係数行列を要求されると、係数行列保持部96に、保持している係数行列を要求して取得し、その係数行列を行列式生成部72に供給する。
以上のようにして、係数行列供給部73は、係数行列を作成し、要求に基づいて、その係数行列を供給する。
なお、係数行列を算出するタイミングは、係数行列を要求される以前であれば、どのタイミングであってももちろんよい。また、係数行列は、全ブロック間で共通であってもよいし、ブロック毎に新たに生成し、互いに独立した行列としてもよい。ただし、図8のように、曲線101で示される、ブロック間で係数行列を共通にした場合の方が、曲線102で示される、ブロック毎に新たに係数行列を生成した場合よりも、受信側における復元能力が高い。図8は、復元能力の関係を示すグラフであり、横軸はパケットロス数を示し、縦軸は、復元能力(復元不能頻度の逆数)を示す。
次に、アプリケーションデータについて説明する。
図9は、図2のアプリケーションデータ生成部34の詳細な構成例を示すブロック図である。
最初に、パケットデータが供給される前に、元データカウンタ112、ブロックカウンタ113、および、冗長データカウンタ123は、初期化される。すなわち、元データカウンタ112およびブロックカウンタ113のカウント値は、値「0」に設定され、冗長データカウンタ123のカウント値は、オフセット値供給部122より供給されるオフセット値に設定される。オフセット値供給部122は、例えば、1ブロックにおける元データのデータ数等のような所定の値をオフセット値として保持しており、その値を冗長データカウンタに供給し、後述するように、冗長データのパケット番号が、元データのパケット番号と重複しないように設定する。
元データ受付部111は、ブロック分割部32より元データが供給されると、その元データがブロックの最初のパケットデータである場合、元データカウンタ112とブロックカウンタ113をカウントアップさせる。また、ブロック分割部32より供給された元データがブロックの最初のパケットデータでない場合、元データ受付部111は、元データカウンタ112のみをカウントアップさせる。元データカウンタ112およびブロックカウンタ113は、所定のタイミングで、そのカウント値をヘッダ付加部114に供給する。
また、元データ受付部111は、ブロックの最後のパケットデータを処理した後に、元データカウンタ112のカウント値を初期化する。
さらに、元データ受付部111は、各カウンタを調整すると、元データをヘッダ付加部114に供給する。ヘッダ付加部114は、元データ受付部111より供給された元データに対して、元データカウンタ112およびブロックカウンタ113より供給されたカウント値を、図10Aに示されるように、ヘッダとして元データに付加し、アプリケーションデータを生成する。
図10Aにおいて、アプリケーションデータ131は、ヘッダとして付加されたブロック番号132および元データパケット番号133、並びに、元データ134により構成される。ブロック番号132は、各ブロックを識別するための番号であり、各ブロックに対して互いに異なる値が割り当てられる。その値は、ブロックカウンタ113より供給されるカウント値である。元データパケット番号133は、各元データを識別するための番号であり、各元データに対して互いに異なる値が割り当てられる。その値は、元データカウンタ112より供給されるカウント値である。すなわち、図11の表151に示されるように、ブロック内において、ブロック番号132の値(図11の場合「0」)は、各アプリケーションデータにおいて共通であり、元データパケット番号133の値は、1つずつ増加している(図11の場合「0」乃至「999」)。
このようなヘッダが元データ134に付加されて、アプリケーションデータ131が生成される。なお、ブロック番号132は、受信装置13が取得したパケットデータがどのブロックに属するデータであるか(どのブロックデータに対応するか)を特定するための情報であり、元データパケット番号133は、受信装置13がロスしたパケットを特定するための情報である。これらの情報をパケットデータに付加しアプリケーションデータとすることにより、受信装置13は、アプリケーション層の処理において、これらの情報を参照することができる。すなわち、例えば、IPパケット等にもパケット番号が付加されるが、これは再送制御等に用いられる情報であり、データの復元処理等に利用することはできず、上述した情報とは用途や性質が異なる情報である。
図9に戻り、冗長データ受付部121は、冗長データ生成部33より冗長データが供給されると、冗長データカウンタ123をカウントアップさせる。冗長データカウンタ123およびブロックカウンタ113は、所定のタイミングで、そのカウント値をヘッダ付加部114に供給する。
また、冗長データ受付部121は、ブロックの最後のパケットデータを処理した後に、冗長データカウンタ123のカウント値を初期化し、オフセット値供給部122よりオフセット値を冗長データカウンタ123に供給させる。
さらに、冗長データ受付部121は、冗長データカウンタ123を調整すると、冗長データをヘッダ付加部114に供給する。ヘッダ付加部114は、冗長データ受付部121より供給された冗長データに対して、冗長データカウンタ123およびブロックカウンタ113より供給されたカウント値を、図10Bに示されるように、ヘッダとして冗長データに付加し、アプリケーションデータを生成する。
図10Bにおいて、アプリケーションデータ141は、ヘッダとして付加されたブロック番号142および冗長データパケット番号143、並びに、冗長データ144により構成される。ブロック番号142の値は、ブロックカウンタ113より供給されるカウント値である。冗長データパケット番号143は、各冗長データを識別するための番号であり、各冗長データに対して異なる値が割り当てられる。その値は、冗長データカウンタ123より供給されるカウント値である。すなわち、図11の表151に示されるように、ブロック内において、ブロック番号142の値(図11の場合「0」)は、各アプリケーションデータにおいて共通であり、冗長データパケット番号143の値は、1つずつ増加している(図11の場合「1000」乃至「1099」)。図11の場合、元データの1ブロック辺りの数が1000個に設定されているので、オフセット値が「1000」に設定されている。
このようなヘッダが冗長データ144に付加されて、アプリケーションデータ141が生成される。なお、ブロック番号142は、受信装置13が取得したパケットデータがどのブロックに属するデータであるかを特定するための情報であり、冗長データパケット番号143は、受信装置13が取得したパケットを整列させるための情報である。これらの情報をパケットデータに付加しアプリケーションデータとすることにより、受信装置13は、アプリケーション層の処理において、これらの情報を参照することができる。すなわち、例えば、IPパケット等にもパケット番号が付加されるが、これは再送制御等に用いられる情報であり、データの復元処理等に利用することはできず、上述した情報とは用途や性質が異なる情報である。
以上のように、アプリケーションデータには、元データを含むものと、冗長データを含むものが存在する。これらのアプリケーションデータは、上述したようにUDPやIP等に基づいてパケット化され、ネットワークを介して受信装置13に供給される。
このように、アプリケーションデータ生成部34がブロック番号を元データや冗長データに付加することにより、受信装置13は、後述するように、受信したデータのブロックを識別することができ、ブロック単位で処理することができる。
また、アプリケーションデータ生成部34が元データパケット番号を元データに付加することにより、受信装置13は、後述するように、そのパケット番号に基づいて、ロスした(受信できなかった)元データを特定することができる。
さらに、アプリケーションデータ生成部34が冗長データパケット番号を冗長データに付加することにより、受信装置13は、後述するように、元データを復元する際に、冗長データを整列させることができるので、元データを復元するための行列式を容易かつ正確に生成することができる。
さらに、アプリケーションデータ生成部34が元データパケット番号を元データに付加し、冗長データパケット番号を冗長データに付加することにより、受信装置13は、後述するように、元データを復元する際に、予め用意されたM行N列の係数行列より必要な部分を容易かつ正確に切り出すことができるので、元データを復元するための行列式を容易かつ正確に生成することができる。
次に、データの受信側について説明する。
図12は、図1の受信装置13の詳細な構成例を示すブロック図である。
ネットワーク12を介して受信装置13に送信されたパケットは、ケーブル210を介してイーサネット(R)(Ethernet(R))処理部221に供給される。イーサネット(R)処理部221は、イーサネット(R)の規格に基づいて、データリンク層および物理層の処理を行い、供給されたパケットからIPパケットを抽出し、IP処理部222に供給する。
IP処理部222は、IPプロトコルに基づいて、ネットワーク層の処理を行い、供給されたIPパケットよりUDPパケットを抽出し、アプリケーションデータ抽出部223に供給する。アプリケーションデータ抽出部223は、UDPプロトコルに基づいてトランスポート層の処理を行い、UDPパケットより、アプリケーションデータを抽出し、それをバッファ224に供給する。
バッファ224は、アプリケーションデータを保持し、アプリケーションデータに付加されたブロック番号に基づいて、アプリケーションデータをブロック単位で管理し、所定のタイミングでそれらをブロック毎にデータ分離部225に供給する。
データ分離部225は、供給されたアプリケーションデータに付加されたパケット番号に基づいて、アプリケーションデータが元データを含むか、または冗長データを含むかで分類し、元データを含むアプリケーションデータをパケットロス判定部226に供給するとともに、冗長データを含むアプリケーションデータをロスパケット復元部228に供給する。
送信装置11より送信されたパケットは、受信装置13に向けて送信されるが、様々な原因により、受信装置13に受信されない場合がある。従って、図13に示されるように、受信装置13が、1つのブロックを構成するパケットの一部をロスすることもある。図13においては、送信装置11より供給される元データ241の3つのパケットデータ241A乃至241Cと、冗長データ242の1つのパケットデータ242Aをロスしている。このような場合、受信装置13は、元データD1乃至D3が不足しており、受信できた元データ241だけでは、ブロックデータを復元することができない。そこで、受信装置13は、このような場合には、受信できた冗長データ142を用いて、ロスしたパケットデータ241A乃至241Cを復元する。
パケットロス判定部226は、供給された元データのパケット番号に基づいて、パケットをロスしたか否かを判定する。ロスしたと判定した場合、パケットロス判定部226は、元データを含むアプリケーションデータをブロックデータ復元部227に供給するとともに、その判定結果と、元データを含むアプリケーションデータをロスパケット復元部228に供給する。パケットをロスしていない場合、パケットロス判定部226は、元データを含むアプリケーションデータをブロックデータ復元部227に供給する。
ブロックデータ復元部227は、パケットロス判定部226より供給されたアプリケーションデータの元データを合成し、ブロックデータを復元する。また、受信装置13がパケットをロスし、元データが不足している場合は、ロスパケット復元部228において復元された元データを利用する。ブロックデータを復元したブロックデータ復元部227は、それをブロック合成部229に供給する。
ロスパケット復元部228は、パケットロス判定部226より供給された、元データを含むアプリケーションデータと、データ分離部225より供給された、冗長データを含むアプリケーションデータを用いて、EOR演算を行い、行列式を解くことにより、ロスした元データを復元し、それをブロックデータ復元部227に供給する。
ブロック合成部229は、ブロックデータ復元部227より供給されるブロックデータを一時的に保持し、出力するタイミングを調整することにより、ブロック同士を合成し、1つの連続する受信データ(すなわち、送信装置11における送信データ)として、受信装置13の外部に出力する。
なお、上述したバッファ224以降のモジュールが実行する処理は、OSI階層モデルにおける、アプリケーション層、プレゼンテーション層、およびセション層の処理である。
このようにデータを受信し、ロスした元データをEOR演算により復元することにより、受信装置13は、高速であり、かつ、復元性能の高い復元処理を、製造コストを増大せずに実現し、より容易に、より正確にデータを受信することができる。
次に、ロスパケットの復元について説明する。なお、以下においては、送信装置11より送信されたN個の元データおよびM個の冗長データSの内、K個の元データとL個の冗長データをロスする場合について説明する。
図14は、ロスパケット復元部228の詳細な構成例を示すブロック図である。
図14において、図12のパケットロス判定部226より供給される判定結果、および元データのアプリケーションデータは、判定結果取得部251に供給される。判定結果取得部は、それらの情報を取得すると、元データのアプリケーションデータを元データ保持部252に供給するとともに、判定結果に基づいて、行列式作成部253に行列式作成の指示を供給する。
また、図12のデータ分離部225より供給される冗長データのアプリケーションデータは、冗長データ保持部254に供給され、一時的に保持される。
判定結果取得部251より行列式の作成を指示された行列式作成部253は、元データ保持部252に元データを要求して取得し、冗長データ保持部254に冗長データを要求して取得し、さらに、係数行列供給部255に係数行列を要求して取得する。なお、係数行列供給部255は、図7の係数行列供給部73と基本的に同様の構成であり、同様に動作するので、その詳細な説明を省略する。
行列式作成部253は、以上のように各情報を取得すると、ロスした元データを演算する行列式に必要な演算用の冗長データQを算出するための行列式を生成する。ロスした元データは、後述するように、受信した元データと冗長データを用いて求めるが、受信した冗長データには、受信した元データの情報も含まれている場合があるため、第1段階として、まず、受信した元データの情報を受信した冗長データに代入し、ロスした元データのEOR演算結果のみで構成される演算用冗長データQを生成する。行列式作成部253は、演算用冗長データQを生成するために、式(3)を作成する。
Figure 0004506185
なお、式(3)において、加算はEOR演算を示す。式(3)の左辺の行列の各成分Q1乃至QM-Lは、それぞれ、右辺第3項の行列の各成分である、受信した冗長データJ1乃至JM-Lに対応する演算用冗長データである。式(3)の右辺第2項の行列の各成分R1乃至RN-Kは受信した元データを示す。右辺第1項の係数行列は、予め係数行列供給部255において生成されたM行N列の係数行列より切り出されたM−L行N−K列の係数行列である。
行列式作成部253は、受信した冗長データJ1乃至JM-Lを冗長データパケット番号に基づいて整列し、受信した元データR1乃至RN-Kを元データパケット番号に基づいて整列し、さらに、係数行列供給部255が保持しているM行N列の係数行列より、受信した元データR1乃至RN-Kおよび受信した冗長データJ1乃至JM-Lに対応する部分の成分を切り出して、式(3)を作成する。
式(3)に示されるように、演算用冗長データQ1乃至QM-Lは、それぞれ、受信した冗長データJ1乃至JM-Lから、受信した元データR1乃至RN-KのEOR演算結果を除去したものである。なお、各冗長データは元データのEOR演算結果であるので、式(3)において、受信した冗長データJは、再度、受信した元データRをEOR演算することにより、冗長データJに含まれる受信した元データの情報を除去することができる。
すなわち、以上のようにして求められた演算用冗長データQ1乃至QM-Lは、ロスした元データP1乃至PKのEOR演算結果となる。
行列式作成部253は、以上のような行列式を作成すると、それを行列式演算部256に供給する。行列式演算部256は、この行列式を演算し、演算用冗長データQを算出し、それを行列式作成部253に戻す。行列式作成部253は、演算用冗長データQを取得すると、今度は、それを用いて元データを復元するための行列式を作成する。行列式作成部253は、受信した冗長データのパケット番号と、ロスした元データのパケット番号に基づいて、係数行列供給部255に保持されているM行N列の係数行列より、それらのパケット番号に対応する部分(M−L行K列)を切り出し、式(4)に示されるような行列式を生成する。
Figure 0004506185
式(4)において、左辺第1項は、切り出した係数行列であり、左辺第2項の行列の各成分は、ロスした元データP1乃至PKであり、右辺の行列の各成分は、演算用冗長データQ1乃至QM-Lである。
なお、演算用冗長データQ1乃至QM-Lの数を示す(M−L)の値は、ロスした元データの数を示すKの値より大きい必要がある。すなわち、式(4)において係数行列は、列数よりも行数の方が多い必要がある。換言すると、受信装置13は、すべての、ロスした元データを復元するためには、少なくとも、そのロスした元データの数よりも多く、冗長データを受信する必要がある。
行列式作成部253は、式(4)に示されるような行列式を生成すると、それを行列式演算部256に供給する。行列式演算部256は、この行列式を取得すると、例えば、ガウスの消去法を用いて、ロスした元データP1乃至PKの解を求める。求解方法の例については後述するが、ロスした元データを算出することができるものであれば、どのようなものであってもよい。
ロスした元データP1乃至PKの解を求めると、行列式演算部256は、その解を解出力部257に供給する。解出力部257は、その解よりロスした元データのアプリケーションデータを復元し、それを図12のブロックデータ復元部227に供給する。
以上のように受信処理を行うことにより、受信装置13は、送信装置11に再送要求をすることなしに、ロスした元データを復元することができる。また、この復元処理のための冗長データをEOR演算により生成するため、演算の付加が軽減し、容易に冗長データを生成したり、冗長データを用いて復元処理を行ったりすることができる。従って、高速であり、かつ、復元性能の高い復元処理を、送信装置11および受信装置13の製造コストを増大せずに実現し、より容易に、より正確な通信を行うことができる
次に、送信装置11における、上述した各部の処理の流れについて説明する。
外部からの送信データの供給が開始されると、送信装置11は、データ送信処理を開始する。図2の送信装置11によるデータ送信処理を図15のフローチャートを参照して説明する。
最初に、送信データが外部より供給されると、送信装置11のデータ分割部31は、ステップS1において、送信データをブロックに分割し、分割したブロックデータをブロック分割部32に供給する。ブロック分割部32は、ステップS2において、供給されたブロックデータをさらにパケットデータに分割し、それを元データとして、冗長データ生成部33およびアプリケーションデータ生成部34に供給する。なお、以下の処理は、ブロック単位で行われる。
パケットデータを供給された冗長データ生成部33は、ステップS3において、冗長データ生成処理を実行して、EOR演算による冗長データを生成し、それをアプリケーションデータ生成部34に供給する。冗長データ生成処理の詳細については、図16のフローチャートを参照して説明する。
元データおよび冗長データを供給されたアプリケーションデータ生成部34は、ステップS4において、アプリケーションデータ生成処理を実行し、アプリケーションデータを生成し、生成したアプリケーションデータをUDPパケット化部35に供給する。なお、アプリケーションデータ生成処理の詳細については、図18のフローチャートを参照して後述する。
アプリケーションデータを供給されたUDPパケット化部35は、ステップS5において、アプリケーションデータをUDPパケット化し、それをバッファ36に供給する。バッファ36は、供給されたUDPパケットを一時保持し、出力制御部37がステップS6において、そのバッファ36に保持されているUDPパケットを任意の順序で取り出すことで、UDPパケットの送信順を変更する。出力制御部37は、取り出したUDPパケットをIP処理部38に供給する。ステップS7において、IP処理部38は、供給されたUDPパケットをIPパケット化してイーサネット(R)処理部39に供給し、イーサネット(R)処理部39は、供給されたIPパケットをさらにパケット化するなどして、出力制御部37が変更した順番で、そのパケット(それぞれUDPパケットを含む)を、ケーブル40を介してネットワーク12(受信装置13)に送信する。
そして、ブロック分割部32は、ステップS8において、外部より送信装置11に供給された送信データを構成する全ブロックに対して処理が終了したか否かを判定し、終了していないと判定した場合は、ステップS2に処理を戻し、それ以降の処理を繰り返す。また、全ブロックに対して送信処理が終了していないと判定した場合、ブロック分割部32は、ステップS2に処理を戻し、次のブロックに対してそれ以降の処理を繰り返す。
以上のようにしてデータ送信処理が実行される。これにより、送信装置11は、ガロア体の演算など、負荷の大きい処理を行わずに、高速に冗長データを生成することができ、データを容易かつ正確に送信することができる。また、送信装置11は、パケットデータの送信順をシャッフルし、パケット番号と独立した順序で送信するので、バースト的パケットロスへの耐性も上げることができる。さらに、このように送信装置11が送信処理を行うことにより、送信装置11が送信したパケットを受信する受信装置13は、高速であり、かつ、復元性能の高い復元処理を、製造コストを増大せずに実現することができる。すなわち、通信システム1は、より容易に、より正確な通信を行うことができる。
次に、図16のフローチャートを参照して、図15のステップS3において実行される冗長データ生成処理について説明する。
ブロック分割部32より元データを供給された冗長データ生成部33の元データ保持部71は、ステップS21において、供給された元データを一時的に保持していき、1ブロック分保持する。
元データ保持部71が1ブロック分の元データを保持すると、行列式生成部72は、ステップS23において、係数行列供給部73に対して係数行列を要求する。係数行列供給部73は、その要求に基づいて、予め用意した係数行列を行列式生成部72に供給する。係数行列の準備処理については、図17のフローチャートを参照して後述する。
係数行列を取得した行列式生成部72は、ステップS23において、元データ保持部71に保持されている1ブロック分の元データを取得して、式(1)のような、任意の元データのEOR演算により冗長データを生成するための行列式を生成する。行列式を生成した行列式生成部72は、それを行列式演算部74に供給する。
行列式を供給された行列式演算部74は、ステップS24において、EOR演算を行い、その行列式を演算して、その解を解出力部75に供給する。
解出力部75は、ステップS25において、供給された解を、ロスパケット復元処理用の冗長データとして、アプリケーションデータ生成部34に出力し、処理を図15のステップS4に戻してそれ以降の処理を実行させる。
以上のように、元データを用いてEOR演算を行い、冗長データを生成するので、冗長データ生成部33は、容易、かつ、高速に冗長データを生成することができる。これにより送信装置11は、ガロア体の演算など、負荷の大きい処理を行わずに、高速に冗長データを生成することができ、データを容易かつ正確に送信することができる。また、このように送信装置11が送信処理を行うことにより、送信装置11が送信したパケットを受信する受信装置13は、高速であり、かつ、復元性能の高い復元処理を、製造コストを増大せずに実現することができる。すなわち、通信システム1は、より容易に、より正確な通信を行うことができる。
次に、図17のフローチャートを参照して、図7の係数行列供給部73により実行される係数行列準備処理について説明する。係数行列供給部73は、例えば、送信装置11の電源投入時等に、この係数行列準備処理を実行する。
係数行列準備処理を開始した係数行列供給部73の係数判定部94は、最初に、ステップS41において、係数生成確率保持部95より係数生成確率pを取得し、その係数生成確率pに基づいて、係数の値を決定する閾値を設定する。
次に、擬似乱数生成部92は、ステップS42において、種データ保持部91に保持されている種データを取得し、さらに、擬似乱数バッファ93に保持されている前回の演算結果である擬似乱数を取得し、ステップS43において、取得した種データに基づいて、上述した式(2)のような線形合同法により擬似乱数を生成する。擬似乱数を生成した擬似乱数生成部92は、生成した擬似乱数を擬似乱数バッファ92に供給して保持させるとともに、生成した擬似乱数を係数判定部94にも供給する。
係数判定部94は、ステップS44において、供給された擬似乱数の値が、ステップS41において設定した閾値以上であるか否かを判定し、閾値以上であると判定した場合、ステップS45に処理を進め、今回出力する係数行列の成分の値を「1」に設定し、その成分を係数行列保持部96に出力し、ステップS47に処理を進める。逆に、ステップS44において、供給された擬似乱数の値が、閾値より小さいと判定した場合、係数判定部94は、ステップS46に処理を進め、今回出力する係数行列の成分の値を「0」に設定し、その成分を係数行列保持部96に出力し、ステップS47に処理を進める。
係数行列の成分を供給された係数行列保持部96は、ステップS47において、その係数行列の成分を保持する。そして、係数行列保持部96は、ステップS48において、保持した成分により、係数行列が完成したか否かを判定し、完成していないと判定した場合、ステップS42に処理を戻し、それ以降の処理を各部に実行させ、次の成分を供給させる。
ステップS48において、すべての成分が供給され、係数行列が完成したと判定した場合、係数行列保持部96は、係数行列準備処理を終了する。
以上のように生成され、係数行列保持部96に保持されている係数行列は、行列式生成部72により要求された係数行列出力部97により、要求され、出力される。
以上のように、擬似乱数を用いて係数行列の成分の値を決定することにより、冗長データ生成部33は、1ブロック分の元データからランダムに選択した元データを用いて、冗長データを生成することができ、冗長データの生成に用いられる元データの分布の偏りを抑制することができる。従って、受信装置13の復元処理において、元データ復元の可能性がロスした冗長データの内容に依存するのを抑制することができる。また、以上のように処理することにより、係数判定部94は、係数生成確率pによって冗長データに含まれる元データの数を確率的に制御することができる。
次に、図15のステップS4において実行されるアプリケーションデータ生成処理の詳細を図18のフローチャートを参照して説明する。
例えば、電源投入時等、パケットデータが供給される前に、ステップS61において、アプリケーションデータ生成部34の元データ受付部111は、元データカウンタ112およびブロックカウンタ113のカウント値をそれぞれ初期化し、例えば値「0」に設定する。また、アプリケーションデータ生成部34の冗長データ受付部121も、冗長データカウンタ123のカウント値を初期化し、オフセット供給部122より供給されるオフセット値に設定する。
ステップS62において、元データ受付部111は、元データを受け付けたか否かを判定し、ブロック分割部32より供給された元データを受け付けたと判定した場合、ステップS63に処理を進め、受け付けた元データがブロック内の最初のパケットデータであるか否かを判定する。ブロック内の最初のパケットデータであると判定した場合、元データ受付部111は、ステップS64に処理を進め、ブロックカウンタ113をカウントアップさせてカウント値を「1」増加させ、処理をステップS65に進める。なお、ステップS63において、既に、そのブロックの元データを受け付けており、受け付けた元データがブロック内の最初のパケットデータでないと判定した場合、元データ受付部111は、ステップS64の処理を省略し、ステップS65に処理を進める。
ステップS65において、元データ受付部111は、元データカウンタ112をカウントアップさせてカウント値を「1」増加させるとともに、受け付けた元データをヘッダ付加部114に供給する。元データを供給されたヘッダ付加部114は、ステップS66において、元データカウンタ112およびブロックカウンタ113よりそれぞれカウント値を取得し、元データにブロックカウンタ113のカウント値をブロック番号として、元データカウンタ112のカウント値を元データパケット番号として、それぞれ付加し、ステップS67において、カウント値を付加した元データをアプリケーションデータとしてUDPパケット化部35に供給する。
ステップS67の処理を終了したヘッダ付加部114は、ステップS68に処理を進める。また、ステップS62において、元データを受け付けていないと判定した場合、元データ受付部111は、ステップS63乃至ステップS67の処理を省略し、ステップS68に処理を進める。
ステップS68において、冗長データ受付部121は、冗長データを受け付けたか否かを判定し、冗長データ生成部33より供給された冗長データを受け付けたと判定した場合、ステップS69に処理を進め、冗長データカウンタ123をカウントアップさせてカウント値を「1」増加させるとともに、受け付けた冗長データをヘッダ付加部114に供給する。冗長データを供給されたヘッダ付加部114は、ステップS70において、ブロックカウンタ113および冗長データカウンタ123よりそれぞれカウント値を取得し、冗長データにブロックカウンタのカウント値をブロック番号として、冗長データカウンタのカウント値を冗長データパケット番号として、それぞれ付加し、ステップS71において、カウント値を付加した冗長データをアプリケーションデータとしてUDPパケット化部35に供給する。
ステップS71の処理を終了したヘッダ付加部114は、ステップS72に処理を進める。また、ステップS68において、冗長データを受け付けていないと判定した場合、冗長データ受付部121は、ステップS69乃至ステップS71の処理を省略し、ステップS72に処理を進める。
ステップS72において、ヘッダ付加部114は、ブロックの元データおよび冗長データを全て処理したか否かを判定し、まだ未処理のパケットデータが存在すると判定した場合、ステップS62に処理を戻し、それ以降の処理を繰り返す。ステップS72において、全てのパケットデータを処理したと判定した場合、ヘッダ付加部114は、アプリケーションデータ生成処理を終了し、図15のステップS5に処理を戻す。
以上のように、アプリケーションデータ生成部34のヘッダ付加部114がブロック番号を元データや冗長データに付加することにより、受信装置13は、後述するように、受信したデータのブロックを識別することができ、ブロック単位で処理することができる。
また、ヘッダ付加部114が元データパケット番号を元データに付加することにより、受信装置13は、後述するように、そのパケット番号に基づいて、ロスした(受信できなかった)元データを特定することができる。
さらに、ヘッダ付加部114が冗長データパケット番号を冗長データに付加することにより、受信装置13は、後述するように、元データを復元する際に、冗長データを整列させることができるので、元データを復元するための行列式を容易かつ正確に生成することができる。
さらに、ヘッダ付加部114が元データパケット番号を元データに付加し、冗長データパケット番号を冗長データに付加することにより、受信装置13は、後述するように、元データを復元する際に、予め用意されたM行N列の係数行列より必要な部分を容易かつ正確に切り出すことができるので、元データを復元するための行列式を容易かつ正確に生成することができる。
次に、受信装置13が実行する処理の流れについて説明する。
最初に、図12の受信装置13によるデータ受信処理を図19のフローチャートを参照して説明する。
受信装置13に対して、送信装置11よりパケットが送信され、そのパケットがケーブル210を介してイーサネット(R)処理部221に供給されると、イーサネット(R)処理部221は、ステップS91において、そのパケットを受信する。パケットを受信したイーサネット(R)処理部221は、そのパケットからIPパケットを抽出し、それをIP処理部222に供給する。IP処理部222は、そのIPパケットからUDPパケットを抽出し、それをアプリケーションデータ抽出部223に供給する。
UDPパケットを供給されたアプリケーションデータ抽出部223は、ステップS92において、そのUDPパケットからアプリケーションデータを抽出し、それをバッファ224に供給する。バッファ224は、ステップS93において、その供給されたアプリケーションデータを保持し、ステップS94において、所定の時間が経過したか否かを判定することにより、1ブロック分のアプリケーションデータを保持したか否かを判定する。すなわち、バッファ224は、各ブロックのアプリケーションデータを、所定の時間蓄積していき、所定の時間が経過すると、それまでに蓄積した対象ブロックのアプリケーションデータをデータ分離部225に供給する。
ステップS94において、所定の時間が経過しておらず、まだ1ブロック分のアプリケーションデータを保持していないと判定した場合、バッファ224は、ステップS91に処理を戻し、それ以降の処理を繰り返す。すなわち、受信装置13は、ステップS91乃至ステップS94の処理を繰り返しながら、バッファ224に所定の時間が経過するまで待機する。
ステップS94において、所定の時間が経過したことにより、1ブロック分のアプリケーションデータを保持したと判定した場合、バッファ224は、保持しているアプリケーションデータ(所定の時間の間に保持した、対象ブロックのアプリケーションデータ)を、データ分離部225に供給し、処理をステップS95に進める。ステップS95において、データ分離部225は、供給されたアプリケーションデータを、そのパケット番号等に基づいて、元データと冗長データに分離し、元データのアプリケーションデータをパケットロス判定部226に供給するとともに、冗長データのアプリケーションデータをロスパケット復元部228に供給する。
アプリケーションデータを供給されたパケットロス判定部226は、ステップS96において、供給されたアプリケーションデータの元データパケット番号に基づいて、ロスしたパケットを確認し、ステップS97において、元データをロスしたか否かを判定する。元データをロスしたと判定した場合、パケットロス判定部226は、元データのアプリケーションデータをブロックデータ復元部227に供給するとともに、その判定結果と、元データのアプリケーションデータをロスパケット復元部228に供給し、処理をステップS98に進める。ロスパケット復元部228は、ステップS98において、元データ復元処理を実行してロスした元データを復元し、復元した元データのアプリケーションデータをブロックデータ復元部227に供給する。なお、元データ復元処理の詳細については、図20のフローチャートを参照して後述する。
元データを復元したロスパケット復元部228は、処理をステップS99に進める。また、ステップS97において、全ての元データパケット番号が揃っており、元データをロスしていないと判定した場合、元データのアプリケーションデータをブロックデータ復元部227に供給し、ステップS98の処理を省略して、ステップS99に処理を進める。
ステップS99においてブロックデータ復元部227は、供給されたアプリケーションデータより元データを抽出し、それらを合体してブロックデータを復元し、復元したブロックデータをブロック合成部229に供給する。ブロック合成部229は、供給されたブロックデータを、一時的に保持し、所定のタイミングで出力することにより、ブロックデータ復元部227より順次供給されるブロックデータを連続して出力するようにしてブロックデータを合成し、送信前の送信データと同等の受信データとして受信装置13の外部に出力する。
ブロック合成部229は、ステップS100において、データ受信処理を終了するか否かを判定し、1つの受信データとしての全てのブロックデータを処理しておらず、データ受信処理を終了しないと判定した場合、処理をステップS91に戻し、それ以降の処理を各部に繰り返させる。
また、ステップS100において、データ受信処理を終了すると判定した場合、ブロック合成部229は、各部に終了処理を実行させ、データ受信処理を終了する。
以上のようにしてデータ受信処理を実行することにより、受信装置13は、高速であり、かつ、復元性能の高い復元処理を、製造コストを増大せずに実現し、より容易に、かつ、より正確にデータを受信することができる。
次に、図19のステップS98において実行される元データ復元処理の詳細を、図20のフローチャートを参照して説明する。
ロスパケット復元部228の判定結果取得部251は、パケットロス判定部226より判定結果を取得すると、判定結果とともに供給される元データのアプリケーションデータを取得し、それを元データ保持部252に供給して保持させる。そして、判定結果取得部251は、行列式作成部253に行列式の作成を指示する。
行列式作成部253は、その指示に基づいて、元データ復元処理を開始し、ステップS121において、元データ保持部252より元データのアプリケーションデータを取得し、ステップS122において、取得したアプリケーションデータの元データパケット番号を参照して、ロスした元データのパケット番号を特定する。
また、行列式作成部253は、ステップS123において、冗長データ保持部254に保持されている、データ分離部225より供給された冗長データのアプリケーションデータを取得し、ステップS124において、取得したアプリケーションデータの冗長データパケット番号を参照し、その冗長データパケット番号に基づいて、行列式を作成するために、冗長データを整列させる。
さらに、行列式作成部253は、ステップS125において、取得したアプリケーションデータの元データパケット番号および冗長データパケット番号を参照し、それらのパケット番号に基づいて、係数行列供給部255に保持されている係数行列(M行N列)より必要な部分(M−L行N−K列)を取得する。
なお、この処理は、係数行列供給部255が、係数行列から、行列式作成部253に要求された部分を切り出して、それを行列式作成部253に供給するようにしてもよいし、行列式作成部253が、係数行列供給部255より供給されたM行N列の係数行列から、必要な部分(M−L行N−K列)を切り出すようにしてもよい。
すなわち、行列式作成部253は、係数行列の、取得した冗長データに対応する行と、取得した元データに対応する列の、両方に対応する成分を抽出し、それらを成分とする新たな係数行列を取得する。
そして、ステップS126において、行列式作成部253は、取得した係数行列および冗長データより、計算用冗長データを求める行列式(例えば、式(3))を作成し、作成した行列式を行列式演算部256に供給する。
行列式演算部256は、ステップS127において、供給された行列式を演算し、計算用冗長データを算出し、算出した計算用冗長データを行列式作成部253に戻す。
計算用冗長データを取得した行列式作成部253は、ステップS128において、ロスした元データのパケット番号と、取得した冗長データのパケット番号に基づいて、係数行列供給部255に保持されている係数行列(M行N列)より必要な部分(M−L行K列)を取得する。
なお、この処理は、係数行列供給部255が、係数行列から、行列式作成部253に要求された部分を切り出して、それを行列式作成部253に供給するようにしてもよいし、行列式作成部253が、係数行列供給部255より供給されたM行N列の係数行列から、必要な部分(M−L行K列)を切り出すようにしてもよい。
すなわち、行列式作成部253は、係数行列の、取得した冗長データに対応する行と、ロスした元データに対応する列の、両方に対応する成分を抽出し、それらを成分とする新たな係数行列を取得する。
そして、ステップS129において、行列式作成部253は、取得した係数行列および算出した計算用冗長データを用いて、ロスした元データを求めるための行列式(例えば、式(4))を作成し、作成した行列式を行列式演算部256に供給する。
行列式演算部256は、ステップS130において、求解処理を実行し、EOR演算によって供給された行列式の解を求め、その解を解出力部257に供給する。なお、求解処理の詳細については、図21および図22のフローチャートを参照して後述する。解出力部257は、ステップS131において、供給された解を元データとしてアプリケーションデータを生成し、それをブロックデータ復元部227に供給し、元データ復元処理を終了して、図19のステップS99に処理を戻す。
以上のように復元処理を行うことにより、ロスパケット復元部228は、高速であり、かつ、復元性能の高い復元処理を、製造コストを増大せずに実現することができる。従って、受信装置13は、より容易、かつ、より正確にデータを受信することができる。また、ロスパケット復元部228は、元データのアプリケーションデータに付加された元データパケット番号を参照して、ロスした元データのパケット番号を特定するので、より容易に復元処理を行うことができる。さらに、ロスパケット復元部228は、冗長データのアプリケーションデータに付加された冗長データパケット番号を参照するので、容易に、受信した冗長データをパケット番号順に整列させることができ、予め用意された係数行列と、容易に対応付け、行列式を作成することができる。
次に、図21および図22のフローチャートを参照して、図20のステップS130において実行される求解処理の詳細を説明する。
ロスした元データを求めるための行列式を供給された行列式演算部256は、ステップS151において、行列式に含まれる係数行列(M−L行K列)を参照し、全ての列に値が「1」の成分が存在するか否かを判定する。係数行列の全列に、値が「1」の成分が少なくとも1つ存在しないと、その列に対応する、ロスした元データを算出することができないので、行列式演算部256は、ステップS151においてこの判定処理を行う。
ステップS151において、全ての列に値が「1」の成分が少なくとも1つ存在すると判定した場合、行列式演算部256は、処理をステップS152に進め、変数iの値を「1」に設定し、ガウスの消去法の、前進消去を開始する。前進消去は、行列式の係数行列において、値が「1」の成分の数を減らすように、係数行列の行間でEOR演算を行い、行列式を変形していく処理である。この前進消去の処理の具体的な例については、後述する。
前進消去処理を開始した行列式演算部256は、ステップS153に処理を進め、第i列の成分の値が「1」の行を、対象行の第1行目から順に検出する。対象行とは、係数行列において、前進消去処理の対象となる行のことである。後述するように、前進消去処理が進むごとに、この対象行が変化する。なお、初期状態において、対象行は全行である。
ステップS154において、行列式演算部256は、ステップS153の処理により、行が複数検出されたか否かを判定し、複数検出されたと判定した場合、ステップS155において、最初に検出された行と、2番目以降に検出された行とで各成分についてEOR演算を行う。このとき、行列式の他の項も、この係数行列のEOR演算に対応するようにEOR演算を行う。
行同士のEOR演算を行った行列式演算部256は、ステップS156に処理を進める。また、ステップS154において、第i列の成分の値が「1」である行を、1行しか検出できなかったと判定した場合(各列には、値が「1」の成分が少なくとも1つ存在するので、1行は検出される)、ステップS155の処理を省略し、ステップS156に処理を進める。
ステップS156において、行列式演算部256は、検出された(EOR演算により残された)、第i列の成分の値が「1」の行を、求解用に保持し、対象行から除外する。そして、行列式演算部256は、ステップS157に処理を進め、変数iの値に「1」を加算し、ステップS158において、変数iの値がKより大きいか否かを判定する。変数iの値がK以下である(すなわち、未処理の列が存在する)と判定した場合、行列式演算部256は、処理をステップS153に戻し、次の列に対して、それ以降の処理を繰り返す。
以上の処理を繰り返すことにより、行列式演算部256は、前進消去の処理を進め、全ての列に対して処理を行い、係数行列の値が「1」の成分の数を減らすようにする。
そして、ステップS158において、変数iの値がKより大きいと判定した場合、行列式演算部256は、処理を図22のステップS161に進める。
図22のステップS161において、行列式演算部256は、変数iの値をKに設定し、保持した行を用いて、後退代入を開始する。後退代入は、以上の前進消去により、値が「1」の成分が減らされた係数行列によって、元データの解を求め、求めた解を順次他の行の方程式に代入していく処理である。この後退代入の処理の具体的な例については、後述する。
後退代入を開始した行列式演算部256は、ステップS162において、前進消去によりi番目に保持した行の方程式を解く。なお、後述するように、行列式演算部256は、それ以前に求められた解を方程式の変数(元データ)に代入して方程式を解く。
ステップS162の処理を終了した、行列式演算部256は、ステップS163に処理を進め、変数iの値を「1」減算し、ステップS164において、全ての解(元データ)を求めたか否かを判定する。未知の変数(元データ)が存在し、全ての解を求めていないと判定した場合、行列式演算部256は、ステップS161に処理を戻し、全ての解が求まるまで、それ以降の処理を繰り返す。
ステップS164において、全ての解を求めたと判定した場合、行列式演算部256は、求解処理を終了し、図20のステップS131に処理を戻す。
また、図21のステップS151において、全ての列に値が「1」の成分が存在しないと判定した場合、上述したように、全ての解を求めることができないので、行列式演算部256は、図22のステップS165に処理を進め、エラー処理を行い、ロスしたパケットを復元できない旨のメッセージを出力する等して、求解処理を終了し、処理を図20のステップS131に戻す。
以上のように行列式演算部256が、ガウスの消去法を用いて行列式を解くことにより、ロスパケット復元部228は、容易にロスした元データを復元することができる。これにより、受信装置11は、高速な復元処理を、製造コストを増大せずに実現し、より容易、かつより正確にデータを受信することができる。
次に、図23乃至図26を参照して、上述したガウスの消去法の具体的な例について説明する。なお、ここでは、説明の簡略化のため、5個の演算用冗長データX1乃至X5を用いて、ロスした4個の元データD1乃至D4を求める場合について説明する。このとき、行列式の係数行列を、図23に示されるような成分の5行×4列の行列とし、行列式作成部253が図23に示されるような行列式を作成したとする。
図23に示される行列式を取得すると、行列式演算部256は、最初に、図21のステップS151の処理を実行し、係数行列(図23において左辺第1項)の各列に値が「1」の成分が存在するか否かを判定する。図23の係数行列においては、全ての列に、値が「1」の成分が存在するので、元データD1乃至D4を求めることができる。
次に、行列式演算部256は、前進消去を開始し、1回目の処理として、1列目(i=1)を処理の対象とする。そして、行列式演算部256は、全ての行を対象行として、1列目に注目し、値が「1」の成分が存在する行を対象行の1行目から順次検出する。図23の場合、点線枠271で示される1列目の成分の値が「1」である行が検出され、点線枠281乃至283で示される1行目、3行目、および5行目がその順番で検出される。
1列目の成分の値が「1」である行を検出した行列式演算部256は、次に、1番目に検出した行と、2番目以降に検出した行の各成分同士をEOR演算する。図23の場合、行列式演算部256は、点線枠281で示される1行目と、点線枠282で示される3行目とを成分ごとにEOR演算する。同様に、行列式演算部256は、点線枠281で示される1行目と、点線枠283で示される5行目とを成分ごとにEOR演算する。このEOR演算により、係数行列の各成分の値は、図24に示される係数行列(左辺第1項)のようになる。
また、このとき、行列式演算部256は、行列式が成立するように、右辺の行列においても係数行列に対応するようにEOR演算を行う。図23の場合、行列式演算部256は、右辺の演算用冗長データの行列に対して、点線枠291で示される1行目(X1)と、点線枠292で示される3行目(X3)とをEOR演算し、さらに、点線枠291で示される1行目(X1)と、点線枠293で示される5行目(X5)とをEOR演算する。このEOR演算により、演算用冗長データの行列の各成分の値は、図24に示される演算用冗長データの行列(右辺)のようになる。
以上のようにして、対象行における第1列目の成分の値が「1」である行を第1行目のみにすると、行列式演算部256は、次に、2回目の処理に移行し、係数行列の第2列目を処理の対象とし(i=2)、第1行目は保持し、第2行目乃至第5行目を対象行とする。そして、行列式演算部256は、1回目の場合と同様に、係数行列の第2列目について、値が「1」の成分が存在する行を対象行の1行目(図25の場合、係数行列の第2行目)から順次検出する。図24の場合、点線枠301で示される第2列目の成分の値が「1」である行が検出され、点線枠311および312で示される、係数行列の第2行目および第5行目がその順番で検出される。
第2列目の成分の値が「1」である行を検出した行列式演算部256は、1回目の場合と同様に、1番目に検出した行と、2番目以降に検出した行の各成分同士をEOR演算する。図24の場合、行列式演算部256は、点線枠311で示される第1行目と、点線枠312で示される第5行目とを成分ごとにEOR演算する。このEOR演算により、係数行列の各成分の値は、図25に示される係数行列(左辺第1項)のようになる。
また、このとき、行列式演算部256は、1回目の場合と同様に、行列式が成立するように、右辺の行列においても係数行列に対応するようにEOR演算を行う。図24の場合、行列式演算部256は、右辺の演算用冗長データの行列に対して、点線枠321で示される第2行目(X2)と、点線枠322で示される第5行目(X5+X1)とをEOR演算する。このEOR演算により、演算用冗長データの行列の各成分の値は、図25に示される演算用冗長データの行列(右辺)のようになる。
以上のようにして、対象行における第2列目の成分の値が「1」である行を第2行目のみにすると、行列式演算部256は、次に、3回目の処理に移行し、係数行列の第3列目を処理の対象とし(i=3)、第2行目をさらに保持し、第3行目乃至第5行目を対象行とする。そして、行列式演算部256は、1回目の場合と同様に、係数行列の第3列目について、値が「1」の成分が存在する行を対象行の1行目(図25の場合、係数行列の第3行目)から順次検出する。図25の場合、点線枠331で示される第3列目の成分の値が「1」である行が検出され、点線枠341で示される、係数行列の第4行目のみが検出される。
従って、この場合、行列式演算部256は、EOR演算を省略する。また、このとき、行列式演算部256は、EOR演算を省略したので、右辺の行列においてもEOR演算を省略する。図25の場合、右辺の演算用冗長データの行列において、点線枠351で示される第4行目(X4)が係数行列の第4行目に対応するが、EOR演算は省略される。従って、この3回目の処理により行列式の各項の行列の各成分の値は、図26に示されるように変化せず、図25の場合と同様になる。
行列式演算部256は、次に、4回目の処理に移行し、係数行列の第4列目を処理の対象とし(i=4)、前回検出した第4行目をさらに保持し、第3行目および第5行目を対象行とする。そして、行列式演算部256は、1回目の場合と同様に、係数行列の第4列目について、値が「1」の成分が存在する行を対象行の1行目(図25の場合、係数行列の第3行目)から順次検出する。図25の場合、点線枠361で示される第4列目の成分の値が「1」である行が検出され、点線枠371で示される、係数行列の第3行目のみが検出される(第5行目第4列目の成分の値は「0」である)。
従って、この場合も、3回目の処理と同様に、行列式演算部256は、EOR演算を省略する。また、このとき、行列式演算部256は、EOR演算を省略したので、右辺の行列においてもEOR演算を省略する。図26の場合、右辺の演算用冗長データの行列において、点線枠381で示される第3行目(X3+X1)が係数行列の第3行目に対応するが、EOR演算は省略される。従って、この4回目の処理によっても行列式の各項の値は変化しない。行列式演算部256は、この4回目の処理において検出された第3行目をさらに保持する。
以上のように、全列に対して前進消去を行うと行列式演算部256は、前進消去を終了し、次に後退代入を開始する。前進消去により、最後に保持した行には、値が「1」の成分が最後の列の1つしか存在しない。その他の列の成分の値は、それまでのEOR演算により「0」に変換されている。同様に、最後から2番目に保持した行の、値が「1」の成分は2個以下であり、その前に保持した行は3個以下である。このように、最後からY番目に保持した行には、値が「1」の成分がY個以下となる。
従って、行列式演算部256は、後退代入により、最後に保持した行から解を1つ求め、保持した順番と逆順にその解を代入していき、全ての解を求める。
このように、ガウスの消去法を用いることにより、行列式演算部256は、EOR演算等の単純な演算により行列式を解くことができるので、ロスパケット復元部228は、ロスした元データを容易にかつ高速に復元することができる。
次に、係数生成確率pの値の決定方法について説明する。
図27および図28は、受信装置13におけるパケット復元能力を示すグラフであり、いずれの場合も、横軸がパケットのロス数を示し、縦軸が復元能力(復元回数/復元不能の発生回数)を示している。図27は、係数生成確率pの値が1/2である場合の復元能力を示しており、図28は、係数生成確率pの値が1/6である場合の復元能力を示している。
図27と図28に示されるように、受信装置13の、ロスしたパケットの復元能力は、パケットロス数の減少するとともに増加し、係数生成確率pが高いほど復元能力は高くなる。しかしながら、当然、係数生成確率pが高いほど、復元処理における演算量が増加するので、復元処理の負荷が大きくなる。後述するように、例えば、リードソロモン符号を用いた復元処理と比較すると、EOR演算処理による復元処理の負荷は非常に少ないが、係数生成確率pの値が小さいほど、より高速に復元処理を行うことができる。従って、処理の負荷の観点からすれば、係数生成確率pの値をなるべく小さく設定する方が望ましいが、上述したように、係数生成確率pの値を大きくする方が復元能力は高くなる。
つまり、処理の負荷の大きさと復元能力の高さはトレードオフの関係にあり、係数生成確率pの値は、実際のシステムにおいて、ネットワーク12におけるパケットロス率がどの程度であるかを考慮した上で、復元能力が実用的な値となる範囲において、なるべく小さく設定するのが望ましい。
以上のように、通信システム1において、送信装置11は、送信用データの他に、その送信用データよりEOR演算を行って生成した、パケットロスに対する誤り訂正用の冗長データを複数生成し、それらを送信用データとともに受信装置13に送信する。受信装置13は、その冗長データ(受信した冗長データ)に基づいて、受信できなかった元の送信用データの復元処理を行う。このようにすることにより、受信装置13は、送信装置11に再送要求を行うことなく、ロスしたデータを復元することができる。従って、通信システム1は、より容易に、より正確な通信を行うことができる。
図29は、上述したEOR演算による復元処理(EOR)の処理時間と、リードソロモン符号を用いた復元処理(リードソロモンFEC(Forward Error Correction))の処理時間との関係の例を示す図である。
図29においては、送信されるコンテンツのブロックサイズを5秒とし、コンテンツのビットレートを4Mbpsとし、パケットデータのデータサイズを1KByteとする。この場合、1ブロックは2500パケットとなる。図29の表391は、このような通信システム1において、パケットロスを10%(250パケット)としたときの、EOR演算による復元処理の処理時間と、リードソロモン符号を用いた復元処理の処理時間との関係を示している。
表391に示されるように、EOR演算による復元処理の方が、リードソロモン符号を用いた復元処理と比較して、前処理、ガウス的消去による演算処理、データ復元処理、および、それらの総計の、全てにおいて非常に短く、また、CPU(Central Processing Unit)占有率(総計欄のカッコ内数字)も圧倒的に少ない。
従って、受信装置13は、リードソロモン符号を用いた復元方法の場合と比較して、非常に高速に、または、処理の負荷をかけずに復元処理を行うことができる。
図30は、上述したEOR演算による復元処理(EOR)の復元能力と、リードソロモン符号を用いた復元処理の復元能力(RS-FEC)との関係の例を示す図である。
図30の表401においては、1ブロックのパケット数として実用的な値を設定しており、EOR演算による復元処理の場合、1000パケットおよび2000パケットの例を示し、リードソロモンFECの場合、100パケットの例を示す。
表401において、エラー率(復元失敗率)が10-8となるときのパケットロス率と、エラー率が10-14となるパケットロス率が表示される。これらの値は、大きいほど、マージンがあることを示す。表401に示されるように、EOR演算を用いた復元処理の場合の方が、リードソロモン符号を用いた復元処理の場合と比較してマージンが大きい。なお、エラー率10-8は、リードソロモンFECの場合では連続視聴で約一年に一回の割合であり、EOR演算による復元処理の場合では10年に一回の割合である。従って、図1の通信システム1は、より容易かつより正確に処理を実行することができる。
なお、以上においては、アプリケーションデータ生成部34のヘッダ付加部114は、パケット番号を元データや冗長データに付加するように説明したが、アプリケーションデータのパケット番号の部分は、元データのパケット番号と、冗長データのパケットが識別可能な状態で供給されればよく、例えば、図31に示されるように、オフセット値の代わりに識別子が用いられるようにしてもよい。
図31においては、アプリケーションデータ411は、データ(元データまたは冗長データ)414に、ブロック番号412およびパケット番号413が付加されたデータであるが、パケット番号413の左1ビットは、元データ/冗長データ識別フィールド421に設定され、残りのビット列がパケット番号フィールド422に設定される。
すなわち、この場合、冗長データパケット番号は、オフセット値が付加されておらず、元データ/冗長データ識別フィールド421のデータ識別子により、元データパケット番号と識別される。例えば、データ識別子の値が「0」である場合、元データのアプリケーションデータであることを示し、そのパケット番号は元データパケット番号であることを示し、データ識別子の値が「1」である場合、冗長データのアプリケーションデータであることを示し、そのパケット番号は冗長データパケット番号であることを示している。
なお、このデータ識別子の値と、その値の示すデータの関係が上述した場合と逆であっても良い。また、元データ/冗長データ識別フィールド421が複数ビットにより構成されていてももちろんよい。
このようなアプリケーションデータを生成するアプリケーションデータ生成部34の構成例を示すブロック図を図32に示す。
図32において、図9を参照して説明したモジュールについては、図9の場合と同じ番号を付してある。図32に示されるアプリケーションデータ生成部430の構成は、図9に示されるアプリケーションデータ生成部34の構成と基本的に同一であるが、図32に示されるアプリケーションデータ生成部430の場合、冗長データカウンタ123にオフセット値を供給するオフセット値供給部122が省略され、データ識別子を設定するデータ識別子設定部431が新たに設けられている。
冗長データ受付部121は、冗長データカウンタ123を初期化する際、カウント値を「0」に設定する。すなわち、オフセット値供給部122が存在しないので、初期化された冗長データカウンタ123のカウント値は「0」である。
データ識別子設定部431は、ヘッダ部114は、ヘッダ付加部に供給するための、データ識別子を設定し、設定したデータ識別子の設定値をヘッダ付加部114に供給する。ヘッダ付加部114は、アプリケーションデータの元データ/冗長データ識別フィールド421に、供給されたデータ識別子の設定値を付加する。
図32のアプリケーションデータ生成部430により実行されるアプリケーションデータ生成処理を図33および図34のフローチャートを参照して説明する。
アプリケーションデータ生成部430の元データ受付部111および冗長データ受付部121は、ステップS181において、図18のステップS61の場合と同様に、各カウンタを初期化する。ただし、冗長データ受付部121は、冗長データカウンタ123のカウント値に、オフセット値を設定せず、他のカウンタと同様に、例えば「0」に設定する。
ステップS182において、元データ受付部111は、図18のステップS62の場合と同様に、元データを受け付けたか否かを判定し、受け付けたと判定した場合、図18のステップS63乃至S65の場合と同様に、ステップS183において、受け付けた元データがブロック内の最初のパケットデータであるか否かを判定し、最初のパケットデータであると判定した場合、ステップS184に処理を進め、ブロックカウンタ113をカウントアップさせ、ステップS185において元データカウンタ112をカウントアップさせる。また、ステップS183において、受け付けた元データがブロック内の最初のパケットデータでないと判定した場合、ステップS184の処理を省略し、ステップS185において、元データカウンタ112のみをカウントアップさせる。カウンタをカウントアップさせた元データ受付部111は、取得した元データをヘッダ付加部114に供給する。
ステップS186において、データ識別子設定部431は、ヘッダ付加部114が取得した元データに対して、データ識別子の値を「0」に設定し、ヘッダ付加部114に供給する。
ヘッダ付加部114は、ステップS187において、図18のステップS66の場合と同様に、元データに元データカウンタ112のカウント値を付加する。また、ヘッダ付加部114は、ステップS188において、データ識別子設定部431より供給されたデータ識別子を元データに付加する。さらに、ヘッダ付加部114は、ステップS189において、図18のステップS66の場合と同様に、元データにブロックカウンタ113のカウント値を付加する。そして、元データに必要なヘッダを付加したヘッダ付加部114は、ステップS190において、図18のステップS67の場合と同様に、それをアプリケーションデータとして、UDPパケット化部35に供給し、処理を図34のステップS201に進める。
なお、図33のステップS182において、元データを受け付けていないと判定した場合、元データ受付部111は、ステップS183乃至ステップS190の処理を省略し、図34のステップS201に処理を進める。
図34のステップS201において、冗長データ受付部121は、図18のステップS68の場合と同様に、冗長データを受け付けたか否かを判定し、冗長データを受け付けたと判定した場合、図18のステップS69の場合と同様に、ステップS202において冗長データカウンタ123をカウントアップさせる。冗長データカウンタ123をカウントアップさせた冗長データ受付部111は、取得した冗長データをヘッダ付加部114に供給する。
ステップS203において、データ識別子設定部431は、ヘッダ付加部114が取得した冗長データに対して、データ識別子の値を「1」に設定し、ヘッダ付加部114に供給する。
ヘッダ付加部114は、ステップS204において、図18のステップS70の場合と同様に、冗長データに冗長データカウンタ123のカウント値を付加する。また、ヘッダ付加部114は、ステップS205において、データ識別子設定部431より供給されたデータ識別子を冗長データに付加する。さらに、ヘッダ付加部114は、ステップS206において、図18のステップS70の場合と同様に、冗長データにブロックカウンタ113のカウント値を付加する。そして、冗長データに必要なヘッダを付加したヘッダ付加部114は、ステップS207において、図18のステップS71の場合と同様に、それをアプリケーションデータとして、UDPパケット化部35に供給し、処理をステップS208に進める。
ステップS208において、ヘッダ付加部114は、ブロックのデータを全て処理したか否かを判定し、未処理のパケットデータが存在すると判定した場合、図33ステップS182に処理を戻し、それ以降の処理を繰り返す。また、図34のステップS208において、全てのパケットデータを処理したと判定した場合、ヘッダ付加部114は、アプリケーションデータ生成処理を終了し、図15のステップS5に処理を戻す。
このように、識別子を用いて元データパケット番号と冗長データパケット番号を識別させることにより、受信装置13は、オフセット値を用いた場合と同様にパケットデータを分離することができる。
以上においては、送信装置11と受信装置13は、互いに等しい所定の値を種データとして生成した同じ係数行列を用いて冗長データの作成処理およびロスした元データの復元処理を実行するように説明した。具体的には、送信装置11は、受信装置13がロスしたパケットを特定するための情報として、元データパケット番号を元データに付加し、受信装置13が取得したパケットを整列させるための情報として、冗長データパケット番号を冗長データパケット番号に付加して送信する。すなわち、送信装置11は、ロスしたパケットを特定するための情報を元データに付加し、冗長データを整列させるための情報を冗長データに付加して送信する。
例えば、図35Aに示されるように、送信装置11は、所定の値を種データとして係数行列(行列番号1乃至3)を生成し、それを用いて冗長データ(冗長データパケット番号1乃至3)を算出し、それらを、それらのパケット番号順に、受信装置13に供給する。
しかしながら、送信装置11がその係数行列を用いて生成し、送信した冗長データは、受信装置13において、その一部がロスしたり、受信順が、送信順と一致しなかったりする場合がある。例えば、図35Aにおいて、受信装置13は、冗長データパケット番号が「2」と「3」のパケットのみを受信する。このときの受信順も、送信順と異なり、冗長データは、冗長データパケット番号「3」、「2」の順番で受信される。
受信装置13においても、係数行列は、送信装置11の場合と同様に所定の値を種データとして生成されるので、冗長データの受信順と係数行列の各行の並びは対応しない。従って、受信装置13は、それらを対応させるために、予め用意された係数行列に、受信した冗長データの順番を合わせるように、冗長データを整列させる。具体的には、受信装置13は、上述したように、冗長データパケット番号に基づいて、冗長データを整列させる。例えば、図35Aの場合、冗長データパケット番号が「3」、「2」の順番で受信した冗長データを、「2」、「3」の順に並べ替えて、冗長データの順番を係数行列に対応させる。このようにすることにより、受信装置13は、ロスした元データ(図35Aの場合、元データパケット番号「5」の元データ)を復元することができる。
しかしながら、それ以外の方法を用いてもよく、例えば、送信装置11と受信装置13とで種データを予め共有せずに、送信装置11が、通信時にパケットとともに、その種データの情報(すなわち、係数行列を生成するための情報)を受信装置13に送信するようにしてもよい(図35B)。
例えば、図35Bにおいては、送信装置11および受信装置13は、それぞれ、冗長データパケット番号を用いて種データを生成している。このとき、送信装置11および受信装置13は、1つの冗長データパケット番号を種データとして1行の係数行列を生成し、各行を合成して係数行列を完成させる。このようにすることにより、受信装置13は、受信した冗長データの受信順で冗長データパケット番号を種データとするので、必要な分だけ係数行列(受信した冗長データに対応する行のみの係数行列)を生成することができる。また、その生成された係数行列の行の順番は、受信した冗長データの受信順に対応することになる。
すなわち、送信装置11は、ロスしたパケットを特定するための情報(元データパケット番号)を元データに付加し、冗長データに対応した係数行列を生成させるための情報(冗長データパケット番号)を冗長データに付加して送信する。
なお、その場合の送信装置11の処理は、種データとして、所定の値の代わりに、これから生成する予定の冗長データパケット番号を用いるだけで、基本的には、上述した処理と同様の処理を実行するので、その説明を省略する。受信装置13も、上述した場合と基本的に同様にデータ受信処理を行う。ただし、ロスパケット復元部228は、元データ復元処理を実行する際に、図20の場合と異なる処理を実行する。
図36のフローチャートを参照して、ロスパケット復元部228による元データ復元処理を説明する。
図14のロスパケット復元部228の行列式作成部253は、判定結果取得部251からの指示に基づいて、元データ復元処理を開始し、ステップS221において、元データ保持部252より元データのアプリケーションデータを取得し、ステップS222において、取得したアプリケーションデータの元データパケット番号を参照して、ロスした元データのパケット番号を特定する。また、行列式作成部253は、ステップS223において、冗長データ保持部254より冗長データのアプリケーションデータを取得する。これらの処理は、図20のステップS121乃至ステップS123にそれぞれ対応する。
行列式作成部253は、取得したアプリケーションデータの冗長データパケット番号を参照し、その冗長データパケット番号を係数行列供給部255に供給する。係数行列供給部255は、ステップS224において、供給された冗長データパケット番号を種データとして係数行列を生成し、それを行列式作成部253に供給する。この係数行列は、受信装置13が取得した冗長データに対応する行と、全ての元データに対応する列とで構成されるM−L行N列の係数行列である。
次に、行列式作成部253は、ステップS225において、取得した元データのパケット番号に基づいて、ステップS224において生成された係数行列より必要な成分を取得する。すなわち、行列式作成部253は、M−L行N列の係数行列より、取得した元データに対応する列成分を抽出し、M−L行K列の係数行列とする。
ステップS226において、行列式作成部253は、計算用冗長データを求める行列式を作成し、それを行列式演算部256に供給する。そして、ステップS227において、供給された行列式を演算し、計算用冗長データを算出し、算出した計算用冗長データを行列式作成部253に戻す。なおこれらの処理は図20のステップS126の処理、およびステップS127の処理を終了する。
計算用冗長データを取得した行列式作成部253は、ステップS228において、ロスした元データのパケット番号と、取得した冗長データのパケット番号に基づいて、ステップS224において生成された係数行列(M―L行N列)より必要な部分(M−L行K列)を取得し、ステップS229において、ロスした元データを求めるための行列式(例えば、式(4))を作成し、作成した行列式を行列式演算部256に供給する。なおこれらの処理は図20のステップS128の処理、およびステップS129の処理を終了する。
行列式演算部256は、ステップS230において、求解処理を実行し、EOR演算によって供給された行列式の解を求め、ステップS231においてその行列式の解を元データとして出力し、元データ復元処理を終了して、図19のステップS99に処理を戻す。
行列式作成部253が、以上のように元データ復元処理を行うことにより、受信装置13は、送信装置11より供給される冗長データに付加された冗長データパケット番号を種データとして係数行列を生成し、その係数行列を用いてロスした元データを復元することができる。これにより、受信装置13は、より容易、かつ、より正確にデータを受信することができる。
以上において、送信装置11は、受信装置13がロスした元データを特定する情報として元データパケット番号を元データに付加して送信するように説明したが、受信装置13がロスした元データを特定する情報として他の情報を元データに付加するようにしてももちろんよい。また、送信装置11は、この受信装置13がロスした元データを特定する情報を、元データに付加せず、アプリケーションデータとは異なるデータとして送信するようにしてもよい。さらに、送信装置11は、この受信装置13がロスした元データを特定する情報を、例えば、磁気ディスクや書き込み可能な光ディスク等のような記録媒体等を用いて受信装置13に供給されるようにしてもよい。
また、以上において、送信装置11は、受信装置13が取得した冗長データを整列させる情報として冗長データパケット番号を冗長データに付加して送信するように説明したが、受信装置13が取得した冗長データを整列させる情報として他の情報を冗長データに付加するようにしてももちろんよい。また、送信装置11は、この受信装置13が取得した冗長データを整列させる情報を冗長データに付加せず、アプリケーションデータとは異なるデータとして送信するようにしてもよい。さらに、送信装置11は、この受信装置13が取得した冗長データを整列させる情報を、例えば、磁気ディスクや書き込み可能な光ディスク等のような記録媒体等を用いて受信装置13に供給されるようにしてもよい。
さらに、以上において、送信装置11は、受信装置13が係数行列を生成する情報として冗長データパケット番号を冗長データに付加して送信するように説明したが、受信装置13が係数行列を生成する情報として他の情報を冗長データに付加するようにしてももちろんよい。また、送信装置11は、この受信装置13が係数行列を生成する情報を冗長データに付加せず、アプリケーションデータとは異なるデータとして送信するようにしてもよい。さらに、送信装置11は、この受信装置13が係数行列を生成する情報を、例えば、磁気ディスクや書き込み可能な光ディスク等のような記録媒体等を用いて受信装置13に供給されるようにしてもよい。
なお、送信装置11は、受信装置13が取得したパケットデータがどのブロックに属するデータであるかを特定するための情報、受信装置13がロスした元データを特定するための情報、受信装置13が取得した冗長データを整列させるための情報、および、受信装置13が係数行列を生成するための情報等の復元処理に関する情報である復元関連情報の内、2つ以上を1つのパケットデータに付加して送信するようにしてもよい。また、同じ元データであっても、これらの情報を付加するパケットデータと、付加しないパケットデータを混在させるようにしてもよい。冗長データについても同様である。
また、復元性能は上述した方法より低いものの、係数行列をブロック毎に変更するようにしてもよい。その場合、予め複数の係数行列を、送信装置11および受信装置13の両方に用意するようにしてもよいし、種データをブロック毎に変更するようにしてもよい。種データを用いて係数行列を生成する場合、その種データとして、冗長データパケット番号を用いるように説明したが、種データをブロック毎に変更する場合、例えば、冗長データパケット番号の他にブロック番号も種データとして利用すれば、生成する行列を容易に変更することができる。
また、ブロックデータのデータサイズは、ブロック間で共通であっても良いし、互いに異なるようにしてもよい。ブロックデータのデータサイズが互いに異なるようにする場合、各ブロックのデータサイズ(または、各ブロックに対応するパケットデータ数)が受信装置13において把握することができるように、何らかの情報を送信装置11より受信装置13に供給する。
以上においては、通信システム1が、データを送信する送信装置11およびデータを受信する受信装置13により構成されるように説明したが、通信システムの構成は、これに限らず、通信システムは、例えば、図37に示されるように、図1の送信装置11および受信装置13を、それぞれモジュールとし、送信部および受信部とし、それらの両方を含む2台の送受信装置により構成されるようにしてもよい。
図37において、通信システム501は、図1のネットワーク12と同様の、ネットワーク512に接続された送受信装置511および送受信装置513により構成される。送受信装置511は、送信部521および受信部522を含み、送受信装置513は、送信部531および受信部532を含む。送信部521および送信部531は、図1の送信装置11と基本的に同様の構成であり、同様に動作するのでその詳細な説明は省略する。
また、図37において、受信部522および受信部532は、図1の受信装置13と基本的に同様の構成であり、同様に動作するのでその詳細な説明は省略する。
すなわち、図37の通信システム501は、内蔵する送信部および受信部をそれぞれ有する送受信装置511および送受信装置513により構成され、それらが互いに上述したようなEOR演算を用いた冗長データを利用して、再送制御なしに、通信処理を行う。
このようにすることにより、双方向の通信においても、受信部は、高速であり、かつ、復元性能の高い復元処理を、製造コストを増大せずに実現することができる。従って、送受信装置511および送受信装置513は、より容易、かつ、より正確にデータを受信することができる。
なお、図1においては、通信システム1は、1台の送信装置11および1台の受信装置13により構成されるように説明したが、これに限らず、複数台の送信装置または複数台の受信装置を含むようにしてもよい。
図38は、本発明を適用したコンテンツ配信システムの構成例を示す図である。コンテンツ配信システム601のサーバ611は、図1のネットワークと同等のネットワーク612に接続され、同様にネットワーク612に接続された複数の端末装置613および614により構成される。
図38において、サーバ611は、送信装置11と同様の機能を有しており、ネットワーク612を介して、端末装置613および端末装置614のそれぞれに対して、画像データや音声データ等のコンテンツデータをパケット化し、上述したようにEOR演算による冗長パケットを付加し、そのパケットをマルチキャストに送信する。
端末装置613および端末装置614は、それぞれ、受信装置13と同様の機能を有しており、サーバ611より供給されるパケットをそれぞれ受信し、上述したようにロスしたパケットを、冗長データを用いて復元する等して、コンテンツデータを復元し、再生する。
なお、サーバ611は、コンテンツデータをストリーミング配信するようにしてもよいし、ダウンロードしてから再生させるように配信するようにしてもよい。
以上のように、サーバ611が複数台の端末装置613および614に対してパケットを配信する場合、端末装置613および端末装置614がパケットをロスしたときに、そのパケットの再送要求をサーバ611にするようにすると、サーバ611に再生要求が集中し、サーバ611の負荷が大きくなり、ダウンしてしまう恐れがある。従って、サーバ611が、上述したように、負荷の軽いEOR演算による冗長データを生成し、それをコンテンツデータとともに配信することにより、端末装置613および端末装置614は、パケットをロスしても、再生要求をせずに、コンテンツデータを復元することができる。従って、サーバ611における負荷の増大を抑制することができ、安定したコンテンツデータの配信サービスを提供することができる。
なお、上述したEOR演算による冗長データを送信データに付加する方法と、再送要求を用いる方法とを組み合わせて利用するようにしてももちろんよい。その場合、受信側の装置は、パケットロスが発生した場合、まず、受信した冗長データにより元データの復元を試み、復元不能であった場合に、送信元に対してロスしたパケットの再送要求を行うようにする。このようにすることにより、再送要求の回数を削減することができるので、送信側と受信側の両方の装置において、再送要求による処理の負荷を軽減させることができる。すなわち、システム全体の負荷を削減することができる。
また、図1の通信システム1において、送信装置11と受信装置13が接続されるネットワーク12は、その一部または全部が有線により構成されるようにしてもよいし,無線により構成されるようにしてもよい。またネットワーク12が複数のネットワークにより構成されるようにしてもよい。すなわち、送信装置11と受信装置13とが複数のルータ等を介して接続されるようにしても良い。
さらに、送信装置11および受信装置13は、上述した構成以外の構成を含むようにしてもよい。例えば、モニタ等の表示部を設けるようにしても良いし、キーボードやボタン等の入力部を設けるようにしてもよい。
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。この場合、例えば、図1の送信装置11や受信装置13には、図39に示されるようなパーソナルコンピュータが含まれる。
図39において、パーソナルコンピュータ701のCPU711は、ROM(Read Only Memory)712に記憶されているプログラム、または記憶部723からRAM713にロードされたプログラムに従って各種の処理を実行する。RAM713にはまた、CPU711が各種の処理を実行する上において必要なデータなども適宜記憶される。
CPU711、ROM712、およびRAM713は、バス714を介して相互に接続されている。このバス714にはまた、入出力インタフェース720も接続されている。
入出力インタフェース720には、キーボード、マウスなどよりなる入力部721、CRT、LCDなどよりなるディスプレイ、並びにスピーカなどよりなる出力部722、ハードディスクなどより構成される記憶部723、モデムなどより構成される通信部724が接続されている。通信部724は、インターネットを含むネットワークを介しての通信処理を行う。
入出力インタフェース720にはまた、必要に応じてドライブ725が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア726が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部723にインストールされる。
上述した一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、ネットワークや記録媒体からインストールされる。
この記録媒体は、例えば、図39に示されるように、装置本体とは別に、ユーザにプログラムを配信するために配布される、プログラムが記録されている磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む)、光磁気ディスク(MD(Mini-Disk)(登録商標)を含む)、もしくは半導体メモリなどよりなるリムーバブルメディア726により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに配信される、プログラムが記録されているROM712や、記憶部723に含まれるハードディスクなどで構成される。
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
本発明を適用した通信システムの構成例を示す図である。 図1の送信装置の構成例を示すブロック図である。 図1の通信システムにおけるデータの処理の流れを示す図である。 UDPパケットの構成例を示す模式図である。 図2の冗長データ生成部の詳細な構成例を示すブロック図である。 パケットデータの構成例を示す模式図である。 図5の係数行列供給部の詳細な構成例を示すブロック図である。 係数行列の生成方法と復元能力の関係の例を示す図である。 図2のアプリケーションデータ生成部の詳細な構成例を示すブロック図である。 アプリケーションデータの構成例を示す模式図である。 パケット番号の例を示す図である。 図1の受信装置の構成例を示すブロック図である。 パケットをロスする様子の例を示す図である。 図12のロスパケット復元部の詳細な構成例を示すブロック図である。 データ送信処理の例を説明するフローチャートである。 冗長データ生成処理の例を説明するフローチャートである。 係数行列準備処理の例を説明するフローチャートである。 アプリケーションデータ生成処理の例を説明するフローチャートである。 データ受信処理の例を説明するフローチャートである。 元データ復元処理の例を説明するフローチャートである。 求解処理の例を説明するフローチャートである。 求解処理の例を説明する、図21に続くフローチャートである。 ガウス消去法の手順の例を説明する図である。 ガウス消去法の手順の例を説明する図である。 ガウス消去法の手順の例を説明する図である。 ガウス消去法の手順の例を説明する図である。 係数生成確率と復元能力の関係を説明する図である。 係数生成確率と復元能力の関係を説明する図である。 EOR演算による復元処理と、リードソロモン符号を用いた復元処理との、処理速度の比較結果の例を示す図である。 EOR演算による復元処理と、リードソロモン符号を用いた復元処理との、エラー率の比較結果の例を示す図である。 アプリケーションデータの、他の構成例を示す模式図である。 図2のアプリケーションデータ生成部の、他の構成例を示すブロック図である。 アプリケーションデータ生成処理の、他の例を説明するフローチャートである。 アプリケーションデータ生成処理の、他の例を説明する、図32に続くフローチャートである。 係数行列の生成方法の、他の例を説明する模式図である。 元データ復元処理の、他の例を説明するフローチャートである。 本発明を適用した通信システムの、他の構成例を示す図である。 本発明を適用したコンテンツ配信システムの構成例を示す図である。 パーソナルコンピュータの構成例を示すブロック図である。
符号の説明
1 通信システム, 11 送信装置 12 ネットワーク, 13 受信装置, 31 データ分割部, 32 ブロック分割部, 33 冗長データ生成部, 34 アプリケーションデータ生成部, 35 UDPパケット化部, 36 バッファ, 37 出力制御部, 38 IP処理部, 39 イーサネット(R)処理部, 40 ケーブル, 51 送信データ, 52 ブロック, 53 元データ, 54 冗長データ, 55 送信パケット, 71 元データ保持部, 72 行列式生成部, 73 係数行列供給部, 74 行列式演算部, 75 解出力部, 81 元データ, 82 冗長データ, 91 種データ保持部, 92 擬似乱数生成部, 93 擬似乱数バッファ, 94 係数判定部, 95 係数生成確率保持部, 96 係数行列保持部, 97 係数行列出力部, 111 元データ受付部, 112 元データカウンタ, 113 ブロックカウンタ, 114 ヘッダ付加部, 121 冗長データ受付部, 122 オフセット値供給部, 123 冗長データカウンタ, 131 アプリケーションデータ, 132 ブロック番号, 133 元データパケット番号, 134 元データ, 141 アプリケーションデータ, 142ブロック番号, 143 冗長データパケット番号, 144 冗長データ, 210 ケーブル, 221 イーサネット(R)処理部, 222 IP処理部, 223 アプリケーションデータ抽出部, 224 バッファ, 225 データ分離部, 226 パケットロス判定部, 227 ブロックデータ復元部, 228 ロスパケット復元部, 229 ブロック合成部, 241 元データ,242 冗長データ, 251 判定結果取得部, 252 元データ保持部, 253 行列式作成部, 254 冗長データ保持部, 255 係数行列供給部, 256 行列式演算部, 257 解出力部, 430 アプリケーションデータ生成部, 431 データ識別子設定部, 501 通信システム, 511 送受信装置, 512 ネットワーク, 513 送受信装置, 521 送信部, 522 受信部, 531 送信部, 532 受信部, 601 コンテンツ配信システム, 611 サーバ, 612 ネットワーク, 613 端末装置, 614 端末装置, 701 パーソナルコンピュータ, 711 CPU, 712 ROM, 713 RAM, 714 バス, 720 入出力インタフェース, 721 入力部, 722 出力部, 723 記憶部, 724 通信部, 725 ドライブ, 726 リムーバブルメディア

Claims (7)

  1. 送信装置が送信する送信用データのブロックデータが分割されたパケットデータを受信する受信装置であって、
    前記パケットデータである第1のデータ、並びに、複数の前記第1のデータの排他的論理和演算結果である第2のデータの両方を受信する受信手段と、
    前記受信手段により受信された前記第2のデータに付加されているパケット番号順に前記第2のデータを整列させ整列手段と、
    所定の係数行列から、前記受信手段により受信された前記第1のデータに付加されているパケット番号と、前記受信手段により受信された前記第2のデータに付加されているパケット番号とに対応する第1の部分行列を取得する第1の取得手段と、
    前記第1の取得手段により取得された前記第1の部分行列を用いて、計算用の前記第2のデータを算出するための第1の行列式を作成する第1の行列式作成手段と、
    前記第1の行列式作成手段により作成された前記第1の行列式を演算し、前記計算用の第2のデータを算出する算出手段と、
    前記係数行列から、前記受信手段により受信できなかった前記第1のデータのパケット番号と、前記受信手段により受信された前記第2のデータのパケット番号とに対応する第2の部分行列を取得する第2の取得手段と、
    前記第2の取得手段により取得された前記第2の部分行列を用いて、前記計算用の第2のデータを算出するための第2の行列式を作成する第2の行列式作成手段と、
    前記第2の行列式作成手段により作成された前記第2の行列式を解くことにより、前記受信手段により受信できなかった前記第1のデータを復元する復元手段と
    を備える受信装置。
  2. 所定の種データを用いて前記係数行列を生成する生成手段をさらに備える
    請求項1に記載の受信装置。
  3. 前記生成手段は、前記送信装置と同一の前記所定の種データを用いて、前記送信装置が前記第2のデータを生成するために生成した係数行列と同一の係数行列を生成する
    請求項2に記載の受信装置。
  4. 前記生成手段は、前記送信装置から送信される前記所定の種データを用いて前記係数行列を生成する
    請求項2に記載の受信装置。
  5. 前記生成手段は、前記受信手段により受信された前記第2のデータのパケット番号を前記種データとして前記係数行列を生成する
    請求項2に記載の受信装置。
  6. 送信装置が送信する送信用データのブロックデータが分割されたパケットデータを受信する受信装置の受信方法であって、
    前記受信装置の受信手段が、前記パケットデータである第1のデータ、並びに、複数の前記第1のデータの排他的論理和演算結果である第2のデータの両方を受信し、
    前記受信装置の整列手段が、受信された前記第2のデータに付加されているパケット番号順に前記第2のデータを整列させ、
    前記受信装置の第1の取得手段が、所定の係数行列から、受信された前記第1のデータに付加されているパケット番号と、受信された前記第2のデータに付加されているパケット番号とに対応する第1の部分行列を取得し、
    前記受信装置の第1の行列式作成手段が、取得された前記第1の部分行列を用いて、計算用の前記第2のデータを算出するための第1の行列式を作成し、
    前記受信装置の算出手段が、作成された前記第1の行列式を演算し、前記計算用の第2のデータを算出し、
    前記受信装置の第2の取得手段が、前記係数行列から、受信できなかった前記第1のデータのパケット番号と、受信された前記第2のデータのパケット番号とに対応する第2の部分行列を取得し、
    前記受信装置の第2の行列式作成手段が、取得された前記第2の部分行列を用いて、前記計算用の第2のデータを算出するための第2の行列式を作成し、
    前記受信装置の復元手段が、作成された前記第2の行列式を解くことにより、受信できなかった前記第1のデータを復元する
    信方法。
  7. 送信装置が送信する送信用データのブロックデータが分割されたパケットデータを受信すコンピュータ
    前記パケットデータである第1のデータ、並びに、複数の前記第1のデータの排他的論理和演算結果である第2のデータの両方を受信する受信手段と、
    前記受信手段により受信された前記第2のデータに付加されているパケット番号順に前記第2のデータを整列させ整列手段と、
    所定の係数行列から、前記受信手段により受信された前記第1のデータに付加されているパケット番号と、前記受信手段により受信された前記第2のデータに付加されているパケット番号とに対応する第1の部分行列を取得する第1の取得手段と、
    前記第1の取得手段により取得された前記第1の部分行列を用いて、計算用の前記第2のデータを算出するための第1の行列式を作成する第1の行列式作成手段と、
    前記第1の行列式作成手段により作成された前記第1の行列式を演算し、前記計算用の第2のデータを算出する算出手段と、
    前記係数行列から、前記受信手段により受信できなかった前記第1のデータのパケット番号と、前記受信手段により受信された前記第2のデータのパケット番号とに対応する第2の部分行列を取得する第2の取得手段と、
    前記第2の取得手段により取得された前記第2の部分行列を用いて、前記計算用の第2のデータを算出するための第2の行列式を作成する第2の行列式作成手段と、
    前記第2の行列式作成手段により作成された前記第2の行列式を解くことにより、前記受信手段により受信できなかった前記第1のデータを復元する復元手段
    として機能させるプログラム。
JP2004030402A 2004-02-06 2004-02-06 受信装置および方法、並びにプログラム Expired - Fee Related JP4506185B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2004030402A JP4506185B2 (ja) 2004-02-06 2004-02-06 受信装置および方法、並びにプログラム
EP20050250595 EP1562317A3 (en) 2004-02-06 2005-02-03 Transmission/reception system, apparatus and method
US11/051,291 US7734946B2 (en) 2004-02-06 2005-02-04 Transmission/reception system, transmission apparatus and method, reception apparatus and method, transmission/reception apparatus and method, and computer-readable storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004030402A JP4506185B2 (ja) 2004-02-06 2004-02-06 受信装置および方法、並びにプログラム

Publications (2)

Publication Number Publication Date
JP2005223684A JP2005223684A (ja) 2005-08-18
JP4506185B2 true JP4506185B2 (ja) 2010-07-21

Family

ID=34675550

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004030402A Expired - Fee Related JP4506185B2 (ja) 2004-02-06 2004-02-06 受信装置および方法、並びにプログラム

Country Status (3)

Country Link
US (1) US7734946B2 (ja)
EP (1) EP1562317A3 (ja)
JP (1) JP4506185B2 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4808054B2 (ja) * 2006-03-17 2011-11-02 富士通株式会社 データ転送方法及び,これを適用する通信システム及びプログラム
US8442070B1 (en) * 2008-02-01 2013-05-14 Hobnob, Inc. Fractional threshold encoding and aggregation
US20090213777A1 (en) * 2008-02-27 2009-08-27 Sanyo Electric Co., Ltd. Distribution apparatus and receiving apparatus for reproducing predetermined contents
US8477830B2 (en) 2008-03-18 2013-07-02 On-Ramp Wireless, Inc. Light monitoring system using a random phase multiple access system
US8520721B2 (en) 2008-03-18 2013-08-27 On-Ramp Wireless, Inc. RSSI measurement mechanism in the presence of pulsed jammers
US20100195553A1 (en) 2008-03-18 2010-08-05 Myers Theodore J Controlling power in a spread spectrum system
US8958460B2 (en) 2008-03-18 2015-02-17 On-Ramp Wireless, Inc. Forward error correction media access control system
US20100142522A1 (en) * 2008-12-04 2010-06-10 James Gardner Methods and apparatus for adaptive error correction in networks
JP5195557B2 (ja) * 2009-03-19 2013-05-08 富士通株式会社 データ処理装置および無瞬断切り替え方法
US8363699B2 (en) 2009-03-20 2013-01-29 On-Ramp Wireless, Inc. Random timing offset determination
CN101902315B (zh) * 2009-06-01 2013-04-17 华为技术有限公司 基于前向纠错的重传方法、设备和通信系统
US8419547B1 (en) 2010-11-04 2013-04-16 Wms Gaming, Inc. Iterative XOR-matrix forward error correction for gaming
US8953612B2 (en) * 2012-03-07 2015-02-10 Cmmb Vision Usa Inc Efficient broadcasting via random linear packet combining
US8972815B1 (en) * 2012-03-20 2015-03-03 Xilinx, Inc. Recovery of media datagrams
US9692630B2 (en) * 2012-11-28 2017-06-27 Sony Corporation Receiver for receiving data in a broadcast system
WO2014082933A1 (en) 2012-11-28 2014-06-05 Sony Corporation Control device and method for use in a broadcast system
US9838157B2 (en) * 2012-11-28 2017-12-05 Sony Corporation Receiver for receiving data in a broadcast system using redundancy data
US9942694B2 (en) * 2013-12-03 2018-04-10 The University Of Tokyo Information transmission/reception system and terminal apparatus
US9794025B2 (en) * 2015-12-22 2017-10-17 Qualcomm Incorporated Systems and methods for communication and verification of data blocks
JP2023095138A (ja) * 2021-12-24 2023-07-06 日本電気株式会社 通信装置、通信方法、プログラム

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003258776A (ja) * 2002-02-28 2003-09-12 Tama Tlo Kk 通信装置、通信システム及びテレビ会議システム

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5128665A (en) * 1989-08-21 1992-07-07 Motorola, Inc. Selective call signalling system
US5077743A (en) * 1989-09-20 1991-12-31 Board Of Trustees Of The University Of Illinois System and method for decoding of convolutionally encoded data
JP3181159B2 (ja) * 1993-11-16 2001-07-03 三洋電機株式会社 誤り訂正制御方法
US5432787A (en) * 1994-03-24 1995-07-11 Loral Aerospace Corporation Packet data transmission system with adaptive data recovery method
JPH08335040A (ja) * 1995-06-02 1996-12-17 Fujitsu Ltd 暗号化処理方式
JP3290331B2 (ja) * 1995-06-21 2002-06-10 シャープ株式会社 ブロック同期処理回路
KR100473536B1 (ko) * 1996-05-22 2005-05-16 마츠시타 덴끼 산교 가부시키가이샤 기기간통신의안전성을확보하는암호화장치및통신시스템
US6118790A (en) * 1996-06-19 2000-09-12 Microsoft Corporation Audio server system for an unreliable network
JP3571918B2 (ja) * 1997-06-04 2004-09-29 株式会社東芝 符号伝送方法、送信装置、受信装置および通信システム
US6307487B1 (en) * 1998-09-23 2001-10-23 Digital Fountain, Inc. Information additive code generator and decoder for communication systems
JP2001043031A (ja) * 1999-07-30 2001-02-16 Toshiba Corp 分散パリティ生成機能を備えたディスクアレイ制御装置
US6738355B1 (en) * 2000-11-01 2004-05-18 Agilent Technologies, Inc. Synchronization method for multi-probe communications network monitoring
US7349691B2 (en) * 2001-07-03 2008-03-25 Microsoft Corporation System and apparatus for performing broadcast and localcast communications
JP3427382B2 (ja) 2001-10-26 2003-07-14 富士通株式会社 エラー訂正装置及びエラー訂正方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003258776A (ja) * 2002-02-28 2003-09-12 Tama Tlo Kk 通信装置、通信システム及びテレビ会議システム

Also Published As

Publication number Publication date
EP1562317A3 (en) 2012-06-06
JP2005223684A (ja) 2005-08-18
US20050190762A1 (en) 2005-09-01
EP1562317A2 (en) 2005-08-10
US7734946B2 (en) 2010-06-08

Similar Documents

Publication Publication Date Title
JP4506185B2 (ja) 受信装置および方法、並びにプログラム
JP5550834B2 (ja) 可変fecオーバヘッド及び保護期間を利用したストリーミング及びバッファリング
JP7232891B2 (ja) 通信システムにおけるパケットの受信装置、及び、送信装置
JP6181654B2 (ja) データ通信システムにおける符号化装置及び方法
US7865811B2 (en) Distribution method, preferably applied in a streaming system
US9100180B2 (en) Method, device and communication system for retransmission based on forward error correction
US20130067030A1 (en) Streaming network coding
JP2004165922A (ja) 情報処理装置および方法、並びにプログラム
KR101983032B1 (ko) 방송 및 통신 시스템에서 패킷 송수신 장치 및 방법
US8942241B2 (en) Method for equalizing the size of data packets by blocks of a multimedia stream
JP2006042306A (ja) 映像配信システム、映像配信装置、映像受信装置、映像配信方法、映像受信方法、映像配信プログラム及び映像受信プログラム
JP2010233105A (ja) 誤り訂正制御装置、誤り訂正制御方法およびメディアデータ配信システム
JP5344541B2 (ja) データ送信装置、送信方法及びプログラム
JPWO2015015879A1 (ja) 情報処理装置、情報処理方法及びプログラム
US9473264B2 (en) Apparatus and method for transmitting/receiving packet in communication system
US10833710B2 (en) Bandwidth efficient FEC scheme supporting uneven levels of protection
JP6451629B2 (ja) 情報処理装置、情報処理方法及びプログラム
JP4088956B2 (ja) 情報処理装置
KR20160138382A (ko) 방송 및/또는 통신 시스템에서 패킷 생성 및 복원 방법 및 장치
CN111245566B (zh) 不可靠网络的抗丢包方法、装置、存储介质及电子设备
JP6412741B2 (ja) 通信装置、通信方法及びプログラム
JP2005223683A (ja) 送受信システム、送信装置および方法、受信装置および方法、送受信装置および方法、並びにプログラム
JP6650260B2 (ja) 送信装置、受信装置、送受信システム、プログラム、およびチップ
JP2016119537A (ja) 通信装置、通信方法及びプログラム
JP2013026917A (ja) コンテンツ配信装置、受信装置、中継装置、コンテンツ配信システム、コンテンツ配信方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070126

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091023

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091029

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091221

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: 20100406

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100419

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130514

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130514

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees