近年、イーサネット(登録商標)に代表されるパケット化技術による映像信号伝送システムの開発が盛んに行われている。イーサネットでは、送信装置から送信されたイーサネットパケットが、イーサネット伝送路を構成するネットワーク機器(例えばルータ、スイッチ等)を経由して受信装置へ到達する。
一般に、送信装置は、送信するイーサネットパケット各々に対してチェックサムによりFCS(フレームチェックシーケンス)を計算し、イーサネットパケットにFCSを付加して送信する。各ネットワーク機器は、受信したイーサネットパケットと、イーサネットパケットに付加されたFCSとに基づいて、イーサネットパケットにおけるビット誤り及びビット欠落の有無を検知する。このような検知処理により、ビット誤りまたはビット欠落が検知されると、そのイーサネットパケットは破棄される。
これらのビット誤り及びビット欠落は、雑音に起因して発生したり、ネットワーク機器を経由する信号の処理能力が当該ネットワーク機器において不足していることに起因して発生したり、または、イーサネット伝送路の切り替えに起因して発生したりする等が考えられる。そのため、イーサネットパケットは、送信装置からイーサネット伝送路を経由して受信装置へ伝送される際に、消失することがあり得る。
このようなイーサネットパケットが伝送路にて消失した際のデータ回復手法としては、排他的論理和(XOR)を用いた誤り訂正手法が用いられる(例えば、非特許文献1,2を参照)。この手法は、比較的小さい処理負荷にて、データを回復することができる。
(従来のパリティパケット生成手法及びデータ回復手法)
図16は、非特許文献2のAnnex Bに記載された従来のNon Block−Aligned FEC Arrangement(以下、2次元FECという。)によるパリティパケット生成処理を説明する図である。図16において、Lはデータパケットに関する列数、Dは行数を示し、列数L=4、行数D=4である。
また、0,1等の数字を囲む四角は、送信されるデータパケットを示し、四角内の数字は、データパケットが送信される順番を示す。R(0),R(1)等を囲む四角は、行方向のパリティパケットを示し、四角内のRにおける括弧内の数字は、行方向のパリティパケットが送信される順番を示す。C(0),C(1)等を囲む四角は、列方向のパリティパケットを示し、四角内のCにおける括弧内の数字は、列方向のパリティパケットが送信される順番を示す。これらの送信される順番を示す番号は、それぞれのパケットのシーケンス番号として、パケットヘッダに格納される。
送信装置は、2次元FECにより、データパケットを行方向及び列方向に分け、所定数(図16では4)のデータパケット単位に排他的論理和(XOR)を計算し、行方向のパリティパケットR(0),R(1)等及び列方向のパリティパケットC(0),C(1)等を生成する。例えば、送信装置は、データパケット0,1,2,3のXORを計算し、行方向のパリティパケットR(0)を生成する。同様に、送信装置は、データパケット0,4,8,12のXORを計算し、列方向のパリティパケットC(4)を生成する。データパケットのビット数とパリティパケットのビット数は同じである。
ここで、行方向のパリティパケットR(0)の生成を“{0,1,2,3}→R(0)”とすると、他の行方向のパリティパケットの生成は、{4,5,6,7}→R(1)、{8,9,10,11}→R(2)、{12,13,14,15}→R(3)、・・・で表される。同様に、列方向のパリティパケットの生成は、{0,4,8,12}→C(4)、{5,9,13,17}→C(5)、{10,14,18,22}→C(6)、{15,19,23,27}→C(7)、・・・で表される。列方向のパリティパケットは、インタリーブしたデータパケットから生成される。
送信装置は、データパケットと共に、データパケットから生成したパリティパケットを、伝送路を介して受信装置へ送信する。図16の例では、16個のデータパケットに対して8個のパリティパケットが定期的に生成され、これらのパケット群が1つの送信単位αとして送信される。
受信装置は、送信装置から送信されたデータパケット及びパリティパケットを受信し、データパケットが消失している場合、受信したパリティパケットに基づいて、消失したデータパケットを回復する。
図16の例では、受信装置は、パリティパケットに基づいて、当該パリティパケットに対応する4個のデータパケット(当該パリティパケットを生成するために用いた4個のデータパケット)のうちの1個が消失した場合に、当該消失したデータパケットを回復することができる。例えば、{0,1,2,3}→R(0)であり、データパケット3が消失した場合、受信装置は、データパケット0,1,2及びパリティパケットR(0)からデータパケット3を回復することができる。
尚、パリティパケットに対応するデータパケットが2個以上消失した場合、または、パリティパケット及び当該パリティパケットに対応する1個のデータパケットが消失した場合、受信装置は、消失したデータパケットを回復することができない。例えば、{0,1,2,3}→R(0)であり、データパケット1,2またはデータパケット0,3が消失した場合、または、パリティパケットR(0)及びデータパケット3が消失した場合には、消失したデータパケットを回復することができない。
ここで、データパケット及びパリティパケットは、送信装置においてシリアル化され、送信装置から伝送路を介して受信装置へ送信される。すなわち、図16の例では、データパケット0,パリティパケットC(0),データパケット1,2,3,パリティパケットR(0),データパケット4,5,パリティパケットC(1),データパケット6,・・・の順序で送信される。列方向のパリティパケットC(0),C(1)等は、当該パリティパケットが生成された後、L個のデータパケットの時間分((L+1)個のデータパケット及び行方向のパリティパケット)だけ遅延して送信される。
(パリティパケット生成手法及びデータ回復手法の条件)
このようなパリティパケット生成手法及びデータ回復手法においては、以下の2つの条件<1><2>を満たすことが望ましい。
<1>送信信号(データパケットと、生成されたパリティパケットとから構成される送信信号)の伝送速度が大きく変動しないこと。
<2>伝送路の消失特性(ランダム消失、バースト消失)に関わらず、受信装置において、より多くの消失したデータパケットを回復可能なこと。
前記<1>の条件について、伝送速度が大きく変動した場合には、送信装置及び伝送路内のネットワーク機器の信号処理がその処理可能な能力を瞬間的に超えて、過負荷となる確率が高まる。そして、パケットは、結果として破棄される。
そこで、伝送速度が大きく変動することがないように、冗長なパリティパケットは、単位時間において定期的に平滑化して(均一に)生成されることが望ましい。ここで、単位時間とは、列数L×行数D毎のデータパケットの伝送に係る時間とする。尚、生成されるパリティパケットの平滑化のために、パリティパケットを一時的にバッファに蓄積して送信することも可能であるが、パリティパケットを蓄積するための回路が必要になる点、及び信号遅延の点で不利である。そのため、このような回路を用いることなく、パリティパケットを平滑化して生成し、伝送速度が大きく変動しないようにすることが望ましい。
図16に示した従来の手法では、角丸四角で囲んだ列数4×行数4=16個毎のデータパケットの伝送に係る単位時間において、16個のデータパケットに対して8個のパリティパケットが定期的に生成される。この場合、パリティパケットは、バッファに一旦蓄積して送信しなくても、伝送速度の変動は小さい。したがって、図16に示した従来の手法は、前記<1>の条件を満たしているといえる。
次に、前記<2>の条件について、パケットの消失特性には、ランダム消失とバースト消失の2種類がある。ランダム消失では、パケットがランダムに消失(主に雑音に起因して消失)し、バースト消失では、パケットが連続的に消失(主にネットワーク機器の処理能力または切り替えに起因して消失)する。受信装置では、これらの消失特性に関わらず、より多くの消失したデータパケットを回復可能なことが望ましい。
(ランダム消失)
図17は、従来手法におけるランダム消失の一例を示す図であり、図16に対応している。四角、四角内の数字、R,C等は、図16と同様である。
前述のとおり、データパケット及びパリティパケットは、送信装置から伝送路内のネットワーク機器を経由して送信され、受信装置にて受信する際に、消失していることがあり得る。図17は、7個のデータパケット0,3,5,6,8,14,15及び2個のパリティパケットC(1),C(3)がランダム消失した例を示している。“×”で示したパケットが消失パケットである。
図18は、従来手法におけるランダム消失からの回復の一例を示す図であり、図17に対応している。前述のとおり、パリティパケットに対応する4個のデータパケット(当該パリティパケットを生成するために用いた4個のデータパケット)のうちの1個が消失した場合に、パリティパケット及び消失していない3個のデータパケットから、消失したデータパケットを回復することができる。
図17において、消失したデータパケット8は、パリティパケットR(2)及びデータパケット9,10,11から回復することができ、消失したデータパケット0は、パリティパケットC(4)及びデータパケット4,8,12(データパケット8は回復済み)から回復することができる。このように、図18に示すように、図17においてランダム消失した7個のデータパケット0,3,5,6,8,14,15は、回復することができる。この場合の残留消失データパケットの割合は、0パケット/7パケット=0となる。
(バースト消失)
図19は、従来手法におけるバースト消失の一例を示す図であり、図16に対応している。四角、四角内の数字、R,C等は、図16及び図17と同様である。
図19は、時間的に連続して送信されたパケットのうち、7個のデータパケット5〜11及び3個のパリティパケットC(1),R(1),C(2)がバースト消失した例を示している。“×”で示したパケットが消失パケットである。このように、バースト消失においては、データパケットと関連するパリティパケットが消失する可能性が高い。
図20は、従来手法におけるバースト消失からの回復の一例を示す図であり、図19に対応している。図19において、消失したデータパケット8は、パリティパケットC(4)及びデータパケット0,4,12から回復することができ、消失したデータパケット10も回復することができる。
しかし、消失したその他のデータパケット5〜7,9,11は、正常に受信したパリティパケットが存在するにも関わらず、回復することができず、消失したデータパケットが残留してしまう。この場合の残留消失データパケットの割合は、5パケット/7パケット=0.71となり、消失したデータパケットのうち71%のデータパケットが、回復できないことになる。
以下、本発明を実施するための形態について図面を用いて詳細に説明する。本発明は、所定の列数(L:正の整数)及び所定の行数(D:正の整数)からなるL×D個のデータパケット群を送信順に列方向(例えば、後述する図3において下方向、列が延びる方向)に連続して構成した場合に、斜め方向の複数のデータパケットのXOR演算により、パリティパケットを生成することを特徴とする。
〔伝送システム〕
まず、伝送システムについて説明する。図1は、本発明の実施形態による送信装置及び受信装置を含む伝送システムの概略を示す全体図である。この伝送システムは、送信装置1及び受信装置2を備えて構成される。送信装置1及び受信装置2は、イーサネットの伝送路3を介して接続される。尚、伝送路3は、インターネット等の他のネットワークであってもよい。
〔送信装置1〕
次に、図1に示した送信装置1について説明する。図2は、送信装置1の構成を示すブロック図である。この送信装置1は、メモリ10、パリティパケット生成部11及び送信部12を備えている。送信装置1の図示しない入力部は、データパケットを順次入力し、入力したデータパケットをメモリ10に格納する。
パリティパケット生成部11は、所定のパリティパケット生成規則に従って、メモリ10から所定数の斜め方向のデータパケット(所定の列数及び所定の行数のデータパケット群を送信順に列方向(列が延びる方向)に連続して構成した場合の斜め方向のデータパケット)を読み出し、読み出した所定数のデータパケットに対してXOR演算を施し、パリティパケットを生成する。そして、パリティパケット生成部11は、生成したパリティパケットを送信部12に出力する。
送信部12は、メモリ10からデータパケットを読み出すと共に、パリティパケット生成部11からパリティパケットを入力し、所定のパリティパケット生成規則に従って、データパケットにデータパケットのシーケンス番号を付与し、当該シーケンス番号、及びデータパケットであることを示す識別フラグをヘッダに格納する。また、送信部12は、パリティパケットにパリティパケットのシーケンス番号を付与し、当該シーケンス番号、及びパリティパケットであることを示す識別フラグをヘッダに格納する。
送信部12は、所定のパケット送信順序規則に従って、送信する順番にデータパケット及びパリティパケットを並べる。そして、送信部12は、送信する順番に並べたデータパケット及びパリティパケットをイーサネットパケットのペイロードに格納することでイーサネットパケットを生成し、生成したイーサネットパケットを受信装置2へ送信する。
これにより、送信装置1から、所定のパリティパケット生成規則に従って、所定の列数及び所定の行数のデータパケット群を送信順に列方向に連続して構成した場合の斜め方向のデータパケットからパリティパケットが生成され、所定のパケット送信順序規則に従って、データパケット及びパリティパケットが伝送路3を介して受信装置2へ送信される。
以下、図2に示した送信装置1のパリティパケット生成部11について、実施例1,2を挙げて説明する。実施例1のパリティパケット生成部11は、所定のパリティパケット生成規則に従って、右下方向(右下への斜め方向)の複数のデータパケットからパリティパケットを生成すると共に、左下方向(左下への斜め方向)の複数のデータパケットからパリティパケットを生成する。
実施例2のパリティパケット生成部11は、所定のパリティパケット生成規則に従って、左下方向の複数のデータパケットからパリティパケットを生成すると共に、列方向の複数のデータパケットからパリティパケットを生成する。そして、送信部12は、所定のパケット送信順序規則に従って、データパケット及び実施例1,2のパリティパケット生成部11により生成されたパリティパケットを送信する。
(パリティパケット生成部11/実施例1)
実施例1のパリティパケット生成部11について詳細に説明する。前述のとおり、実施例1のパリティパケット生成部11は、右下方向のパリティパケット及び左下方向のパリティパケットを生成する。
図3は、実施例1におけるパリティパケット生成処理を説明する図である。図3において、0,1等の数字を囲む四角等は、図16と同様である。R(0),R(1)等を囲む四角は、右下方向の4個のデータパケットから生成されるパリティパケット(右下方向のパリティパケット)を示し、C(0),C(1)等を囲む四角は、左下方向の4個のデータパケットから生成されるパリティパケット(左下方向のパリティパケット)を示す。列数L=4、行数D=4である。
図3において、データパケット0〜15、データパケット16〜31等のそれぞれが、列数L=4及び行数D=4のデータパケット群であり、これらのデータパケット群が送信順に列方向に連続して構成されている。後述する図13及び図24も同様である。
パリティパケット生成部11は、所定のパリティパケット生成規則に従って、データパケットを右下方向及び左下方向に分け、所定数(本例では4)のデータパケット単位にXORを計算し、右下方向のパリティパケットR(0),R(1)等及び左下方向のパリティパケットC(0),C(1)等を生成する。例えば、パリティパケット生成部11は、データパケット0,5,10,15のXORを計算し、右下方向のパリティパケットR(3)を生成する。同様に、パリティパケット生成部11は、データパケット3,6,9,12のXORを計算し、左下方向のパリティパケットC(3)を生成する。
図16の説明と同様に表記すると、右下方向のパリティパケットの生成は、{0,5,10,15}→R(3)、{4,9,14,19}→R(4)、{8,13,18,23}→R(5)、{12,17,22,27}→R(6)、・・・で表される。同様に、左下方向のパリティパケットの生成は、{3,6,9,12}→C(3)、{7,10,13,16}→C(4)、{11,14,17,20}→C(5)、{15,18,21,24}→C(6)、・・・で表される。
そして、送信部12は、所定のパケット送信順序規則に従って、データパケット及びパリティパケット生成部11により生成されたパリティパケットをシリアル化し、イーサネットパケットとして伝送路3を介して受信装置2へ送信する。すなわち、図3の例では、送信部12は、・・・,パリティパケットC(0),データパケット4,5,6,7,パリティパケットR(0),C(1),データパケット8,9,10,11,・・・の順番で送信する。
このように、図3において、角丸四角で囲んだ単位時間で見た場合、16個のデータパケットに対して8個のパリティパケットが定期的に生成され、これらのパケット群が1つの送信単位αとして送信される。また、パリティパケットは、2個連続して送信されるが、送信単位α内において分散しているといえる。したがって、送信信号の伝送速度の変動は小さいから、図16に示した従来手法と同様に、前記<1>の条件(送信信号の伝送速度が大きく変動しないこと)を満たすことになる。
図4は、実施例1における右下方向のパリティパケットの生成処理を示すフローチャートであり、図5は、実施例1における左下方向のパリティパケットの生成処理を示すフローチャートである。D(i−L×(D−1)+k×(L+1))は、(i−L×(D−1)+k×(L+1))番目のデータパケット、D(i−L×(D−2)−1+k×(L−1))は、(i−L×(D−2)−1+k×(L−1))番目のデータパケットをそれぞれ示す。R(j)はj番目の右下方向のパリティパケット、C(j)はj番目の左下方向のパリティパケットをそれぞれ示す。
まず、図4を参照して、右下方向のパリティパケットの生成処理について説明する。パリティパケット生成部11は、1個目のデータパケットを入力した時点で、右下方向のパリティパケットの生成処理を開始する。
パリティパケット生成部11は、変数i,jに0を設定し(ステップS401)、終了条件を満たしているか否かを判定する(ステップS402)。終了条件とは、データパケットの入力がなくなることをいう。
パリティパケット生成部11は、ステップS402において、終了条件を満たしていないと判定した場合(ステップS402:N)、変数kに0を設定すると共に、右下方向のパリティパケットR(j)に0を設定する(ステップS403)。
パリティパケット生成部11は、変数kが所定の列数Lよりも小さいか否かを判定する(ステップS404)。パリティパケット生成部11は、ステップS404において、変数kが所定の列数Lよりも小さいと判定した場合(ステップS404:Y)、以下の式により、XOR演算にて右下方向のパリティパケットR(j)を生成する(ステップS405)。すなわち、パリティパケット生成部11は、パリティパケット生成規則に従って、メモリ10から所定のデータパケットを読み出し、XOR演算にて右下方向のパリティパケットR(j)を生成する。
ここで、
は、XORを表す演算子である。
パリティパケット生成部11は、変数kをインクリメントし(ステップS406)、ステップS404へ移行する。そして、パリティパケット生成部11は、ステップS404の条件を満たす限り、ステップS404〜ステップS406の処理を繰り返す。図3の例では、パリティパケット生成部11は、ステップS404〜ステップS406の処理を4回繰り返す。
図6(a)は、実施例1におけるパリティパケット生成規則を示す図である。このパリティパケット生成規則には、図3において、送信装置1の送信部12が一連のパケットを送信する時間的な流れの中で、列数L×行数D(4×4=16)のデータパケット0〜15を送信する時間単位に対応して、さらに右下方向のパリティパケットR(−1)〜R(2)及び左下方向のパリティパケットC(−1)〜C(2)のパケット群を送信単位αとして送信する場合に、データパケットから右下方向のパリティパケットR(−1)〜R(2)及び左下方向のパリティパケットC(−1)〜C(2)を生成する規則が定められている。
図6(a)の左側に示すように、パリティパケット生成部11は、ステップS404〜ステップS406を4回繰り返すことで、ステップS405の前記数式(1)により、データパケット−16,−11,−6,−1からパリティパケットR(−1)を生成する。同様に、パリティパケット生成部11は、データパケット−12,−7,−2,3からパリティパケットR(0)を、データパケット−8,−3,2,7からパリティパケットR(1)を、データパケット−4,1,6,11からパリティパケットR(2)をそれぞれ生成する。ここで、例えばデータパケット−16は、データパケット0よりも16個手前に入力したデータパケットを示す。
尚、図16に示した従来手法では、行方向のパリティパケットを生成するために、以下の式により、XOR演算が行われる。
図21は、従来手法における行方向のパリティパケットの生成処理を示すフローチャートである。この従来手法における行方向のパリティパケットの生成処理と、図4に示す実施例1における右下方向のパリティパケットの生成処理とを比較すると、従来手法のステップS2101〜ステップS2104と実施例1のステップS401〜ステップS404とが同一であるが、従来手法のステップS2105〜ステップS2107と実施例1のステップS405〜ステップS407とが異なる点で相違する。ステップS2105の処理において、前記数式(2)のXOR演算が行われる。この場合のパリティパケット生成規則は、図23(a)の左側に示すとおりである。
図4に戻って、パリティパケット生成部11は、ステップS404において、変数kが所定の列数Lよりも小さくないと判定した場合(ステップS404:N)、ステップS407へ移行する。これにより、右下方向の4個のデータパケットから右下方向のパリティパケットR(j)が生成される。
パリティパケット生成部11は、ステップS404から移行して、変数iにLを加算して新たな変数iを算出すると共に、変数jをインクリメントし(ステップS407)、ステップS402へ移行し、ステップS402の終了条件を満たさない限り、ステップS403〜ステップS407の処理を繰り返す。
パリティパケット生成部11は、ステップS402において、終了条件を満たしていると判定した場合(ステップS402:Y)、すなわち、データパケットの入力がなくなった場合に、右下方向のパリティパケットの生成処理を終了する。
次に、図5を参照して、左下方向のパリティパケットの生成処理について説明する。パリティパケット生成部11は、図4に示した右下方向のパリティパケットの生成処理と同様に、1個目のデータパケットを入力した時点で、左下方向のパリティパケットの生成処理を開始する。
パリティパケット生成部11は、変数i,jに0を設定し(ステップS501)、前述と同じ終了条件を満たしているか否かを判定する(ステップS502)。パリティパケット生成部11は、ステップS502において、終了条件を満たしていないと判定した場合(ステップS502:N)、変数kに0を設定すると共に、左下方向のパリティパケットC(j)に0を設定する(ステップS503)。
パリティパケット生成部11は、変数kが所定の列数Lよりも小さいか否かを判定する(ステップS504)。パリティパケット生成部11は、ステップS504において、変数kが所定の列数Lよりも小さいと判定した場合(ステップS504:Y)、以下の式により、XOR処理にて左下方向のパリティパケットC(j)を生成する(ステップS505)。すなわち、パリティパケット生成部11は、パリティパケット生成規則に従って、メモリ10から所定のデータパケットを読み出し、XOR演算にて左下方向のパリティパケットC(j)を生成する。
パリティパケット生成部11は、変数kをインクリメントし(ステップS506)、ステップS504へ移行する。そして、パリティパケット生成部11は、ステップS504の条件を満たす限り、ステップS504〜ステップS506の処理を繰り返す。図3の例では、パリティパケット生成部11は、ステップS504〜ステップS506の処理を4回繰り返す。
図6(a)を参照して、図6(a)の右側に示すように、パリティパケット生成部11は、送信部12が一連のパケットを送信する時間的な流れの中で、前記数式(3)により、データパケット−13,−10,−7,−4からパリティパケットC(−1)を生成する。同様に、パリティパケット生成部11は、データパケット−9,−6,−3,0からパリティパケットC(0)を、データパケット−5,−2,1,4からパリティパケットC(1)を、データパケット−1,2,5,8からパリティパケットC(2)をそれぞれ生成する。ここで、例えばデータパケット−13は、データパケット0よりも13個手前に入力したデータパケットを示す。
尚、図16に示した従来手法では、列方向のパリティパケットを生成するために、以下の式により、XOR演算が行われる。
ここで、“mod”は剰余演算を表す。
図22は、従来手法における列方向のパリティパケットの生成処理を示すフローチャートである。この従来手法における列方向のパリティパケットの生成処理と、図5に示す実施例1における左下方向のパリティパケットの生成処理とを比較すると、従来手法のステップS2201〜ステップS2203,ステップS2206,ステップS2207と実施例1のステップS501〜ステップS503,ステップS506,ステップS507とが同一であるが、従来手法のステップS2204,ステップS2205と実施例1のステップS504,ステップS505とが異なる点で相違する。ステップS2205の処理において、前記数式(4)のXOR演算が行われる。この場合のパリティパケット生成規則は、図23(a)の右側に示すとおりである。
図5に戻って、パリティパケット生成部11は、ステップS504において、変数kが所定の列数Lよりも小さくないと判定した場合(ステップS504:N)、ステップS507へ移行する。これにより、左下方向の4個のデータパケットから左下方向のパリティパケットC(j)が生成される。
パリティパケット生成部11は、ステップS504から移行して、変数iにLを加算して新たな変数iを算出すると共に、変数jをインクリメントし(ステップS507)、ステップS502へ移行し、ステップS502の終了条件を満たさない限り、ステップS503〜ステップS507の処理を繰り返す。
パリティパケット生成部11は、ステップS502において、終了条件を満たしていると判定した場合(ステップS502:Y)、すなわち、データパケットの入力がなくなった場合に、左下方向のパリティパケットの生成処理を終了する。
このように、図4の処理により右下方向のパリティパケットが生成され、図5の処理により、左下方向のパリティパケットが生成される。
(送信部12/実施例1)
図6(b)は、実施例1におけるパケット送信順序規則を示す図である。このパケット送信順序規則には、図3において、送信部12が一連のパケットを送信する時間的な流れの中で、列数L×行数D(4×4=16)のデータパケット0〜15を送信する時間単位に対応して、さらに右下方向のパリティパケットR(−1)〜R(2)及び左下方向のパリティパケットC(−1)〜C(2)のパケット群を送信単位αとして送信する場合の送信順序が定められている。
送信部12は、データパケット0〜15、右下方向のパリティパケットR(−1)〜R(2)及び左下方向のパリティパケットC(−1)〜C(2)のパケット群を送信単位αとして送信する際に、メモリ10からデータパケット0〜15を読み出すと共に、パリティパケット生成部11からパリティパケットR(−1)〜R(2),C(−1)〜C(2)を入力する。
送信部12は、図6(b)のパケット送信順序規則に従って、パリティパケットC(−1),データパケット0,1,2,3,パリティパケットR(−1),C(0),データパケット4,5,6,7,パリティパケットR(0),・・・,パリティパケットR(2)を順番に並べてシリアル化する。そして、送信部12は、これらのパケットを格納したイーサネットパケットを生成し、生成したイーサネットパケットを、伝送路3を介して受信装置2へ送信する。
以上のように、本発明の実施形態の送信装置1によれば、実施例1のパリティパケット生成部11は、所定の列数L(=4)及び行数D(=4)のデータパケットを単位とした場合に、図6(a)のパリティパケット生成規則に従って、右下方向の4個のデータパケットから右下方向のパリティパケットを生成すると共に、左下方向の4個のデータパケットから左下方向のパリティパケットを生成するようにした。そして、実施例1の送信部12は、図6(b)のパケット送信順序規則に従って、データパケット、右下方向のパリティパケット及び左下方向のパリティパケットを順番に並べ、イーサネットパケットに格納して送信するようにした。
これにより、パリティパケットに対応する複数のデータパケット(パリティパケットを生成するために用いる複数のデータパケット)は、時間的に連続して送信されることがない。つまり、時間的に連続してパケットが消失するバースト消失が発生した場合、パリティパケットに対応する複数のデータパケットのうち2個以上のパリティパケットが消失する可能性は、図16に示した従来手法よりも低くなり、後述する受信装置2において、消失したデータパケットは回復しやすくなる。これは、図16に示した従来手法では、行方向のパリティパケットに対応する複数のデータパケットが時間的に連続して送信され、バースト消失が発生した場合、行方向のパリティパケットに対応する複数のデータパケットが消失しやすいからである。
また、図3に示したとおり、16個のデータパケットに対して8個のパリティパケットが定期的に生成され、8個のパリティパケットは分散しており、これらのパケット群が1つの送信単位αとして送信されるから、図16に示した従来手法と同様に、伝送速度の変動は小さい。
また、ランダムにパケットが消失するランダム消失が発生した場合、消失が発生するタイミングが不定であるから、パリティパケットに対応する複数のデータパケットのうち2個以上のパリティパケットが消失する可能性は、図16に示した従来手法と同等である。
したがって、送信信号の伝送速度の変動を従来手法と同等とすることができ、ランダム消失が発生した場合には、残留消失データパケットの割合を、図16に示した従来手法と同等に保つことができる。また、バースト消失が発生した場合には、残留消失データパケットの割合を、従来手法よりも小さくすることができる。
〔受信装置2〕
次に、図1に示した受信装置2について説明する。図7は、受信装置2の構成を示すブロック図である。この受信装置2は、受信部20、メモリ21及びデータパケット回復部22を備えている。
受信部20は、送信装置1から送信されたイーサネットパケットを受信し、イーサネットパケットのペイロードからデータパケット及びパリティパケットを抽出する。そして、受信部20は、抽出したデータパケットのヘッダから識別フラグ及びシーケンス番号を抽出し、識別フラグに基づいて、データパケット及びパリティパケットを区別する。
受信部20は、データパケットについて、そのシーケンス番号に基づいて、データパケットを昇順に並び替える。
受信部20は、昇順に並び替えたデータパケットのシーケンス番号が不連続の場合、不連続のシーケンス番号の間で抜けているシーケンス番号のデータパケットが消失データパケットであると判定する。そして、受信部20は、予め設定された固定値で構成する(例えば、全てのデータをビット“0”で構成する)と共に、抜けているシーケンス番号をヘッダに格納したデータパケットを消失データパケットとして生成する。受信部20は、昇順に並び替えたデータパケットに対し、生成した消失データパケットを不連続の箇所に挿入する。
受信部20は、抽出したパリティパケット、及びシーケンス番号順に並べたデータパケット(消失データパケットを含む)をメモリ21に格納する。これにより、メモリ21には、パリティパケットが格納されると共に、消失データパケットを含む昇順に並んだデータパケットが、受信データパケット列として格納される。
つまり、メモリ21には、パリティパケット、及び、送信順であるシーケンス番号順に並び替えたデータパケット及び消失データパケットからなるデータパケット群であって、所定の列数L及び所定の行数Dのデータパケット群を送信順に列方向に連続して構成した場合の複数のデータパケット群が格納されている。
データパケット回復部22は、メモリ21から昇順にデータパケットを読み出し、読み出したデータパケットのうち、予め設定された固定値で構成された消失データパケットを検出する。
データパケット回復部22は、消失データパケットに対応するパリティパケット、及び当該パリティパケットに対応する消失データパケット以外のデータパケットに基づいて、消失データパケットを回復する。これにより、消失データパケットを、元のデータパケットに復元することができる。
具体的には、データパケット回復部22は、所定のデータパケット回復規則に従って、消失データパケットに対応するパリティパケットを特定し、メモリ21から特定したパリティパケットを読み出す。そして、データパケット回復部22は、メモリ21に格納された前述の複数のデータパケット群から、当該パリティパケットに対応する所定数の斜め方向のデータパケットを読み出し、消失データパケットを回復する。所定のデータパケット回復規則は、前述のパリティパケット生成規則に対応して、その逆の規則が定義されたものである。例えば、送信装置1は、パリティパケット生成規則を表したテーブルを備えており、受信装置2は、パリティパケット生成規則に対応するパリティパケット回復規則を表したテーブルを備えている。
データパケット回復部22は、メモリ21から読み出したデータパケット及び回復したデータパケットを、シーケンス番号順に出力する。
これにより、所定のデータパケット回復規則に従って、所定の列数及び所定の行数のデータパケット群を送信順に列方向に連続して構成した場合の斜め方向のデータパケット及びこれらのデータパケットに対応するパリティパケットに基づいて、消失データパケットが回復する。
(データパケット回復部22/実施例1)
次に、実施例1のデータパケット回復部22について詳細に説明する。図8は、実施例1におけるデータ回復処理を示すフローチャートであり、列数L×行数Dのデータパケットの伝送に係る単位時間に対応した回復処理を示している。D(i+j)は、(i+j)番目のデータパケットを示す。
データパケット回復部22は、ある単位時間の最初のパリティパケットを入力してからデータ回復処理を開始する。データパケット回復部22は、変数iをある単位時間の先頭データパケットのシーケンス番号に設定し(ステップS801)、終了条件を満たしているか否かを判定する(ステップS802)。終了条件とは、パリティパケットの入力がなくなることをいう。例えば、ステップS801において、変数i=0が先頭データパケットのシーケンス番号として設定される。
データパケット回復部22は、ステップS802において、終了条件を満たしていないと判定した場合(ステップS802:N)、変数j及び変数kに0をそれぞれ設定する(ステップS803)。
データパケット回復部22は、データパケットD(i+j)が消失しており、かつ当該データパケットD(i+j)が回復可能であるか否かを判定する(ステップS804)。ここで、データパケットD(i+j)が回復可能であると判定されるのは、当該データパケットD(i+j)に対応するパリティパケット(当該データパケットD(i+j)を含む所定数のデータパケットから生成されたパリティパケット)が存在し(消失しておらず)、かつ、当該パリティパケットに対応する所定数のデータパケット(当該パリティパケットを生成するために用いた所定数のデータパケット)のうち、当該データパケットD(i+j)のみが消失している場合である。
この場合、データパケット回復部22は、予め設定された固定値で構成された消失データパケットを検索する。つまり、データパケット回復部22は、データパケットが予め設定された固定値で構成されたデータパケットである場合、当該データパケットD(i+j)を消失データパケットと判定する。そして、データパケット回復部22は、消失データパケットの回復を試みる。
例えば、消失データパケットのシーケンス番号(i+j)=2とした場合、データパケット回復部22は、図6(a)に示したパリティパケット生成規則に対応するデータパケット回復規則に従って、消失データパケットD(2)に対応する右下方向のパリティパケットR(1)を特定する。そして、データパケット回復部22は、特定したパリティパケットR(1)に対応する斜め方向の4個のデータパケットD(−8),D(−3),D(2),D(7)のうち、消失データパケットD(2)以外のデータパケットD(−8),D(−3),D(7)の全てが消失データパケットでないと判定した場合、消失データパケットD(2)が回復可能であると判定する。
また、データパケット回復部22は、パリティパケットR(1)を用いた場合、消失データパケットD(2)が回復可能でないと判定した場合、さらに、データパケット回復規則に従って、消失データパケットD(2)に対応する左下方向のパリティパケットC(2)を特定する。そして、データパケット回復部22は、特定したパリティパケットC(2)に対応する斜め方向の4個のデータパケットD(−1),D(2),D(5),D(8)のうち、消失データパケットD(2)以外のデータパケットD(−1),D(5),D(8)の全てが消失データパケットでないと判定した場合、消失データパケットD(2)が回復可能であると判定する。
データパケット回復部22は、ステップS804において、データパケットD(i+j)が消失しており、かつ当該データパケットD(i+j)が回復可能であると判定した場合(ステップS804:Y)、データパケットD(i+j)を回復する(ステップS805)。そして、データパケット回復部22は、変数kをインクリメントする(ステップS806)。
前述の例では、データパケット回復部22は、特定したパリティパケットR(1)、及び当該パリティパケットR(1)に対応する斜め方向の4個のデータパケットD(−8),D(−3),D(2),D(7)のうち、消失していないデータパケットD(−8),D(−3),D(7)に基づいて、消失データパケットD(2)を回復する。または、データパケット回復部22は、特定したパリティパケットC(2)、及び当該パリティパケットC(2)に対応する斜め方向の4個のデータパケットD(−1),D(2),D(5),D(8)のうち、消失していないデータパケットD(−1),D(5),D(8)に基づいて、消失データパケットD(2)を回復する。
データパケット回復部22は、ステップS804において、データパケットD(i+j)が消失していないと判定し、若しくは当該データパケットD(i+j)が回復可能でないと判定した場合(ステップS804:N)、または、ステップS806から移行して、変数jをインクリメントする(ステップS807)。
データパケット回復部22は、変数jが列数Lに行数Dを乗算した結果(L×D)よりも小さいか否かを判定する(ステップS808)。データパケット回復部22は、変数jが乗算結果(L×D)よりも小さいと判定した場合(ステップS808:Y)、単位時間における列数L×行数D個の全てのデータパケット(図3の例では、i=0の場合、データパケットD(0)〜D(15))に対し、消失したデータパケットD(i+j)の探索が完了していないとして、ステップS804へ移行する。一方、データパケット回復部22は、変数jが乗算結果(L×D)よりも小さくないと判定した場合(ステップS808:N)、単位時間における全てのデータパケットに対し、消失したデータパケットD(i+j)の探索が完了したとして、ステップS809へ移行する。
データパケット回復部22は、ステップS808から移行して、変数kが0であるか否かを判定する(ステップS809)。データパケット回復部22は、ステップS809において、変数kが0でないと判定した場合(ステップS809:N)、ステップS803へ移行し、単位時間における列数L×行数D個のデータパケットを対象とした再度の回復処理を行う。すなわち、回復したデータパケットを含む単位時間における列数L×行数D個のデータパケットを対象として、同様に、消失したデータパケットD(i+j)を検索し、その回復処理を試みる。
ここで、変数kは、単位時間における列数L×行数D個のデータパケットを対象とした回復処理において、回復したデータパケットの数を示す。したがって、変数k=0でない場合は、回復したデータパケットが存在することを示しているから、当該データパケットにより、他の消失したデータパケットが回復する可能性がある。そこで、単位時間における列数L×行数D個のデータパケットを対象とした再度の回復処理が行われる。
データパケット回復部22は、ステップS809において、変数kが0であると判定した場合(ステップS809:Y)、変数iを次の単位時間の先頭データパケットのシーケンス番号に設定し(ステップS810)、ステップS802へ移行する。例えば、変数i=16が設定される。尚、変数k=0の場合は、単位時間における列数L×行数D個のデータパケットの処理が完了した時点にて、消失した全てのデータパケットが回復しているか、または、回復処理を繰り返しても、消失したデータパケットが回復できず、消失したデータパケットが残留している。
このように、ステップS803〜ステップS809の処理により、変数k=0でない限り、単位時間における列数L×行数D個のデータパケットを対象とした再度の回復処理が行われ、ステップS809において、変数k=0の場合に、列数L×行数D個のデータパケットを対象とした回復処理が完了する。
データパケット回復部22は、ステップS802において、終了条件を満たしていると判定した場合(ステップS802:Y)、すなわち、パリティパケットの入力がなくなった場合に、データ回復処理を終了する。
このように、図8のデータ回復処理により、列数L×行数Dのデータパケットの伝送に係る単位時間に対応した回復処理が、列数L×行数D個のデータパケット毎に行われ、消失したデータパケットが回復する。
(ランダム消失)
図9は、実施例1におけるランダム消失の一例を示す図であり、図3に対応している。四角、四角内の数字、R,C等は、図3と同様である。図9は、7個のデータパケット0,3,5,6,8,14,15及び2個のパリティパケットC(0),R(2)がランダム消失した例を示している。“×”で示したパケットが消失パケットである。
図10は、実施例1におけるランダム消失の回復の一例を示す図であり、図9に対応している。前述のとおり、パリティパケットに対応する4個のデータパケット(当該パリティパケットを生成するために用いた4個のデータパケット)のうちの1個が消失した場合に、パリティパケット及び消失していない3個のデータパケットから、消失したデータパケットを回復することができる。
図9において、消失したデータパケット8は、パリティパケットR(5)及びデータパケット13,18,23から回復することができ、消失したデータパケット5は、パリティパケットC(2)及びデータパケット−1,2,8(データパケット8は回復済み)から回復することができる。
このように、図10に示すように、図9においてランダム消失した7個のデータパケット0,3,5,6,8,14,15は、回復することができる。この場合の残留消失データパケットの割合は、0パケット/7パケット=0となり、図17及び図18に示した従来手法と同様である。
(バースト消失)
図11は、実施例1におけるバースト消失の一例を示す図であり、図3に対応している。四角、四角内の数字、R,C等は、図3及び図9と同様である。図11は、時間的に連続して送信されたパケットのうち、7個のデータパケット5〜11及び3個のパリティパケットR(0),C(1),R(1)がバースト消失した例を示している。“×”で示したパケットが消失パケットである。
図12は、実施例1におけるバースト消失からの回復の一例を示す図であり、図11に対応している。図11において、消失したデータパケット8は、パリティパケットR(5)及びデータパケット13,18,23から回復することができ、消失したデータパケット9,11も回復することができる。
そして、消失したデータパケット5は、パリティパケットC(2)及びデータパケット−1,2,8(データパケット8は回復済み)から回復することができ、消失したデータパケット6は、パリティパケットC(3)及びデータパケット3,9,12(データパケット9は回復済み)から回復することができる。同様に、データパケット10も回復することができ、データパケット7も回復することができる。
このように、図12に示すように、図11においてバースト消失した7個のデータパケット5〜11の全てが回復することができる。この場合の残留消失データパケットの割合は、0パケット/7パケット=0となり、図19及び図20に示した従来手法(残留消失データパケットの割合は0.71)よりも小さい。
したがって、ランダム消失及びバースト消失の消失特性に関わらず、受信装置2において、より多くの消失したデータパケットを回復することができるから、図16に示した従来手法と同様に、前記<2>の条件(伝送路の消失特性に関わらず、より多くの消失したデータパケットを回復可能なこと)を満たすことになる。
以上のように、本発明の実施形態の受信装置2によれば、受信部20は、受信したデータパケットのシーケンス番号が不連続の場合、不連続のシーケンス番号の間で抜けているシーケンス番号のデータパケットが消失データパケットであると判定し、予め設定された固定値で構成する消失データパケットを生成するようにした。そして、実施例1のデータパケット回復部22は、予め設定された固定値で構成された消失データパケットを検出し、図6(a)のデータパケット生成規則に対応するデータパケット回復規則に従って、右下方向のパリティパケット及び右下方向の4個のデータパケットのうち消失データパケット以外のデータパケットに基づいて、または、左下方向のパリティパケット及び左下方向の4個のデータパケットのうち消失データパケット以外のデータパケットに基づいて、消失データパケットを回復するようにした。
これにより、パリティパケットに対応する複数のデータパケット(送信装置1において、パリティパケットを生成するために用いた複数のデータパケット)は、時間的に連続して受信されることがない。つまり、時間的に連続してパケットが消失するバースト消失が発生した場合、パリティパケットに対応する複数のデータパケットのうち2個以上のパリティパケットが消失する可能性は、図16に示した従来手法よりも低くなり、消失したデータパケットは回復しやすくなる。これは、図16に示した従来手法では、行方向のパリティパケットに対応する複数のデータパケットが時間的に連続して受信され、バースト消失が発生した場合には、行方向のパリティパケットに対応する複数のデータパケットが消失しやすいからである。
また、前述のとおり、図16に示した従来手法と同様に、伝送速度の変動は小さい。また、前述のとおり、ランダム消失が発生した場合には、パリティパケットに対応する複数のデータパケットのうち2個以上のパリティパケットが消失する可能性は、図16に示した従来手法と同等である。
したがって、送信信号の伝送速度の変動を従来手法と同等とすることができ、ランダム消失が発生した場合には、残留消失データパケットの割合を、図16に示した従来手法と同等に保つことができる。また、バースト消失が発生した場合には、残留消失データパケットの割合を、従来手法よりも小さくすることができる。
〔送信装置1のパリティパケット生成部11/実施例2〕
次に、図2に示した送信装置1において、実施例2のパリティパケット生成部11について説明する。前述のとおり、実施例2のパリティパケット生成部11は、左下方向のパリティパケット及び列方向のパリティパケットを生成する。
図13は、実施例2におけるパリティパケット生成処理を説明する図である。図13において、0,1等の数字を囲む四角等は、図3と同様である。R(0),R(1)等を囲む四角は、左下方向の4個のデータパケットから生成されるパリティパケット(左下方向のパリティパケット)を示し、C(0),C(1)等を囲む四角は、列方向の4個のデータパケットから生成されるパリティパケット(列方向のパリティパケット)を示す。列数L=4、行数D=4である。
パリティパケット生成部11は、後述する図14(a)のパリティパケット生成規則に従って、データパケットを左下方向及び列方向に分け、所定数(本例では4)のデータパケット単位にXORを計算し、左下方向のパリティパケットR(0),R(1)等及び列方向のパリティパケットC(0),C(1)等を生成する。
図16及び図3の説明と同様に表記すると、左下方向のパリティパケットの生成は、{3,6,9,12}→R(3)、{7,10,13,16}→R(4)、{11,14,17,20}→R(5)、{15,18,21,24}→R(6)、・・・で表され、列方向のパリティパケットの生成は、{0,4,8,12}→C(4)、{5,9,13,17}→C(5)、{10,14,18,22}→C(6)、{15,19,23,27}→C(7)、・・・で表される。
そして、送信部12は、後述する図14(b)のパケット送信順序規則に従って、データパケット及びパリティパケット生成部11により生成されたパリティパケットをシリアル化し、イーサネットパケットとして伝送路3を介して受信装置2へ送信する。すなわち、図13の例では、送信部12は、・・・,データパケット0,パリティパケットC(0),データパケット1,2,3,パリティパケットR(0),データパケット4,5,パリティパケットC(1),データパケット6,7,・・・の順番で送信する。
このように、図13において、角丸四角で囲んだ単位時間で見た場合、16個のデータパケットに対して8個のパリティパケットが定期的に生成され、これらのパケット群が1つの送信単位αとして送信される。また、パリティパケットは、送信単位α内において分散しているといえる。したがって、伝送速度の変動は小さく、図16に示した従来手法と同様に、前記<1>の条件(送信信号の伝送速度が大きく変動しないこと)を満たすことになる。
実施例2における左下方向のパリティパケットの生成処理は、図5に示した処理と同様であり、実施例2における列方向のパリティパケットの生成処理は、図22に示した処理と同様である。
図14(a)は、実施例2におけるパリティパケット生成規則を示す図である。このパリティパケット生成規則は、図13において、送信装置1の送信部12が一連のパケットを送信する時間的な流れの中で、列数L×行数D(4×4=16)のデータパケット0〜15を送信する時間単位に対応して、さらに左下方向のパリティパケットR(−1)〜R(2)及び列方向のパリティパケットC(0)〜C(3)のパケット群を送信単位αとして送信する場合に、データパケットから左下方向のパリティパケットR(−1)〜R(2)及び列方向のパリティパケットC(0)〜C(3)を生成するための規則を定めている。
(送信部12/実施例2)
図14(b)は、実施例2におけるパケット送信順序規則を示す図である。このパケット送信順序規則は、図13において、送信部12が一連のパケットを送信する時間的な流れの中で、列数L×行数D(4×4=16)のデータパケット0〜15を送信する時間単位に対応して、さらに左下方向のパリティパケットR(−1)〜R(2)及び列方向のパリティパケットC(0)〜C(3)のパケット群を送信単位αとして送信する場合の送信順序を定めている。
送信部12は、データパケット0〜15、左下方向のパリティパケットR(−1)〜R(2)及び列方向のパリティパケットC(0)〜C(3)のパケット群を送信単位αとして送信する際に、メモリ10からデータパケット0〜15を読み出すと共に、パリティパケット生成部11からパリティパケットR(−1)〜R(2),C(0)〜C(3)を入力する。
送信部12は、図14(b)のパケット送信順序規則に従って、パリティパケットR(−1),データパケット0,パリティパケットC(0),データパケット1,2,3,パリティパケットR(0),データパケット4,5,パリティパケットC(1),・・・,パリティパケットC(3)を順番に並べる。そして、送信部12は、これらのパケットを格納したイーサネットパケットを生成し、生成したイーサネットパケットを、伝送路3を介して受信装置2へ送信する。
以上のように、本発明の実施形態の送信装置1によれば、実施例2のパリティパケット生成部11は、所定の列数L(=4)及び行数D(=4)のデータパケットを単位とした場合に、図14(a)のパリティパケット生成規則に従って、左下方向の4個のデータパケットから左下方向のパリティパケットを生成すると共に、列方向の4個のデータパケットから列方向のパリティパケットを生成するようにした。そして、実施例2の送信部12は、図14(b)のパケット送信順序規則に従って、データパケット、左下方向のパリティパケット及び列方向のパリティパケットを順番に並べ、イーサネットパケットに格納して送信するようにした。
これにより、実施例1と同様に、送信信号の伝送速度の変動を従来手法と同等とすることができ、ランダム消失が発生した場合には、残留消失データパケットの割合を、図16に示した従来手法と同等に保つことができる。また、バースト消失が発生した場合には、残留消失データパケットの割合を、従来手法よりも小さくすることができる。
(受信装置2のデータパケット回復部22/実施例2)
図7に示した受信装置2において、実施例2のデータパケット回復部22によるデータ回復処理は、図8に示した処理と同様である。この場合、図14(a)のデータパケット生成規則に対応するデータパケット回復規則が用いられる。
以上のように、本発明の実施形態の受信装置2によれば、受信部20は、受信したデータパケットのシーケンス番号が不連続の場合、不連続のシーケンス番号の間で抜けているシーケンス番号のデータパケットが消失データパケットであると判定し、予め設定された固定値で構成する消失データパケットを生成するようにした。そして、実施例2のデータパケット回復部22は、予め設定された固定値で構成された消失データパケットを検出し、図14(a)のデータパケット生成規則に対応するデータパケット回復規則に従って、左下方向のパリティパケット及び左下方向の4個のデータパケットのうち消失データパケット以外のデータパケットに基づいて、または、列方向のパリティパケット及び列方向の4個のデータパケットのうち消失データパケット以外のデータパケットに基づいて、消失データパケットを回復するようにした。
これにより、実施例1と同様に、送信信号の伝送速度の変動を従来手法と同等とすることができ、ランダム消失が発生した場合には、残留消失データパケットの割合を、図16に示した従来手法と同等に保つことができる。また、バースト消失が発生した場合には、残留消失データパケットの割合を、従来手法よりも小さくすることができる。
〔シミュレーション結果〕
次に、実施例1,2及び従来手法のシミュレーション結果について説明する。図15は、実施例1,2及び従来手法における消失データパケットの回復特性のシミュレーション結果を示す図である。このシミュレーション結果は、計算機により、消失パケット数分のランダム消失またはバースト消失を発生させた場合の、列数L=25及び行数D=25の単位時間における残留消失データパケットの割合を示している。横軸は消失パケット数、縦軸は残留消失データパケットの割合を示す。
図15(a)は、ランダム消失の場合のシミュレーション結果であり、シリアル化したパリティパケット及びデータパケットに対して、設定した消失パケット数のパケットをランダムに消失させた場合の回復特性を示す。図15(b)は、バースト消失の場合のシミュレーション結果であり、シリアル化したパリティパケット及びデータパケットに対して、バースト消失の先頭位置をランダムに設定し、そして、設定した消失パケット数分のパケットを連続的に消失させた場合の回復特性を示す。
例えば、図15(b)のバースト消失において、消失パケット数が10の場合、従来手法では、図19に示したように連続するデータパケット5,パリティパケットC(1),データパケット6,7,パリティパケットR(1),データパケット8,9,10,パリティパケットC(2),データパケット11を消失させる。また、実施例1では、図11に示したように連続するデータパケット5,6,7,パリティパケットR(0),C(1),データパケット8,9,10,11,パリティパケットR(1)を消失させる。このようなバースト消失に対して回復処理を行った後、単位時間の残留消失データパケットの割合を求めると、図15(b)の回復特性となる。
図15(a)のランダム消失のシミュレーション結果によれば、実施例1,2の回復特性は、従来手法とほぼ同等であることがわかる。また、図15(b)のバースト消失のシミュレーション結果によれば、実施例1では、消失パケット数が1〜50の場合に、残留消失データパケットの割合が0であり、実施例2及び従来手法では、消失パケット数が1〜25の場合に、残留消失データパケットの割合が0であり、また、消失パケット数が26〜50の場合に、実施例1,2の残留消失データパケットの割合が従来手法よりも極端に小さくなっていることがわかる。
このように、実施例1,2は、従来手法よりもバースト耐性に優れている。図15(b)のバースト消失のシミュレーション結果によれば、特に実施例1において、残留消失データパケットの割合が0となる消失パケット数を、従来手法の2倍に増大させることができる。一方、実施例1,2において、消失パケット数が75を超える場合には、パリティパケットに対応するデータパケットが2個以上誤る可能性が高くなるため、残留消失データパケットの割合は、従来手法とほぼ同等になる。
したがって、従来手法では、正常に受信したパリティパケットが存在するにも関わらず、残留消失データパケットの割合が大きいのに対し、実施例1,2では、残留消失データパケットの割合を、従来手法よりも小さくすることができる。
尚、本発明の実施形態による送信装置1及び受信装置2のハードウェア構成としては、通常のコンピュータを使用することができる。送信装置1及び受信装置2は、CPU、RAM等の揮発性の記憶媒体、ROM等の不揮発性の記憶媒体、及びインターフェース等を備えたコンピュータによって構成される。送信装置1に備えたパリティパケット生成部11及び送信部12の各機能は、これらの機能を記述したプログラムをCPUに実行させることによりそれぞれ実現される。また、受信装置2に備えた受信部20及びデータパケット回復部22の各機能は、これらの機能を記述したプログラムをCPUに実行させることによりそれぞれ実現される。これらのプログラムは、前記記憶媒体に格納されており、CPUに読み出されて実行される。また、これらのプログラムは、磁気ディスク(フロッピー(登録商標)ディスク、ハードディスク等)、光ディスク(CD−ROM、DVD等)、半導体メモリ等の記憶媒体に格納して頒布することもでき、ネットワークを介して送受信することもできる。
以上、実施例1,2を挙げて本発明を説明したが、本発明は前記実施例1,2に限定されるものではなく、その技術思想を逸脱しない範囲で種々変形可能である。例えば、前記実施例1,2では、列数L=4と行数D=4とが同じ場合の例を挙げて説明したが、本発明は、列数Lと行数Dとが異なる場合も、同様に適用することができる。
また、前記実施例1,2では、受信装置2の受信部20は、昇順に並び替えたデータパケットのシーケンス番号が不連続の場合に、予め設定された固定値で構成するデータパケットを消失データパケットとして生成するようにした。そして、データパケット回復部22は、予め設定された固定値で構成されたデータパケットを消失データパケットとして検出し、回復処理を行う。これに対し、受信部20は、消失データパケットを生成する際に、消失データパケットの場所(シーケンス番号)を示す消失リストを作成するようにしてもよい。この場合、データパケット回復部22は、消失リストを用いて、消失データパケットの場所(シーケンス番号)を特定し、回復処理を行う。
また、前記実施例2では、送信装置1のパリティパケット生成部11は、左下方向の複数のデータパケットから左下方向のパリティパケットを生成すると共に、列方向の複数のデータパケットから列方向のパリティパケットを生成するようにした。これに対し、パリティパケット生成部11は、左下方向の複数のデータパケットから左下方向のパリティパケットを生成する代わりに、右下方向の複数のデータパケットから右下方向のパリティパケットを生成するようにしてもよい。要するに、本発明では、時間的に連続して送信されない複数のデータパケットからパリティパケットを生成すればよい。
また、前記実施例1では、送信装置1のパリティパケット生成部11は、図6(a)のパリティパケット生成規則に従って、右下方向のパリティパケット及び左下方向のパリティパケットを生成し、送信部12は、図6(b)のパケット送信順序規則に従って、データパケット、及びパリティパケット生成部11により生成された右下方向のパリティパケット及び左下方向のパリティパケットを順番に並べてシリアル化し、送信するようにした。この場合、図3に示したとおり、2個のパリティパケットが連続して送信される。これに対し、2個のパリティパケットが連続して送信されないように、パリティパケットをさらに分散させるようにしてもよい。
図24は、実施例1の変形例におけるパリティパケット生成処理を説明する図であり、図25(a)は、実施例1の変形例におけるパリティパケット生成規則を示す図であり、図25(b)は、実施例1の変形例におけるパケット送信順序規則を示す図である。このパケット送信順序規則には、パリティパケットが連続して送信されないように、データパケット及びパリティパケットの送信順序が定められている。図24において、0,1等の数字を囲む四角等は、図3と同様である。R(0),R(1)等を囲む四角は、右下方向の4個のデータパケットから生成されるパリティパケット(右下方向のパリティパケット)を示し、C(0),C(1)等を囲む四角は、左下方向の4個のデータパケットから生成されるパリティパケット(左下方向のパリティパケット)を示す。列数L=4、行数D=4である。
パリティパケット生成部11は、図25(a)のパリティパケット生成規則に従って、右下方向のパリティパケット及び左下方向のパリティパケットを生成する。図25(a)及び図6(a)は同じであり、パリティパケット生成部11は、実施例1と同様の処理を行う。
送信部12は、図25(b)のパケット送信順序規則に従って、パリティパケットC(−1),データパケット0,1,2,パリティパケットR(−1),データパケット3,パリティパケットC(0),データパケット4,5,6,パリティパケットR(0),データパケット7,・・・,データパケット15を順番に並べてシリアル化し、送信する。この場合、図24の送信単位αに示すように、パリティパケットが連続して送信されることがない。
このように、2個以上のパリティパケットが連続して送信されないように、送信単位α内でパリティパケットを分散させることにより、送信信号の伝送速度の変動を一層小さくすることができる。また、バースト消失の場合、複数のパリティパケットが消失する可能性が一層低くなるから、消失データパケットは回復しやすくなり、残留消失データパケットの割合を、一層小さくすることができる。
また、前記実施例1,2では、送信装置1のパリティパケット生成部11は、所定のパリティパケット生成規則に従って、メモリ10から所定数のデータパケットを読み出し、読み出した所定数のデータパケットからパリティパケットを生成し、送信部12に出力するようにした。また、送信部12は、メモリ10からデータパケットを読み出すと共に、パリティパケット生成部11からパリティパケットを入力し、所定のパケット送信順序規則に従って、送信する順番にデータパケット及びパリティパケットを並べて送信するようにした。
これに対し、送信部12は、所定のパケット送信順序規則に従って、送信する順番にデータパケット及びパリティパケットを並べる処理において、パリティパケットを並べる処理に先立って(パリティパケットを並べる時点以前のタイミングにおいて)、当該パリティパケットを生成する指示をパリティパケット生成部11に出力し、パリティパケット生成部11に、当該パリティパケットを生成させるようにしてもよい。そして、送信部12は、パリティパケット生成部11から当該パリティパケットを入力し、当該パリティパケットを並べる処理を行う。例えば、図3を参照して、送信部12は、図6(b)のパケット送信順序規則に従って、パリティパケットR(0)を並べる処理に先立って(パリティパケットR(0)を並べる以前のタイミングにおいて)、パリティパケットR(0)を生成する指示をパリティパケット生成部11に出力し、パリティパケット生成部11に、パリティパケットR(0)を生成させる。
パリティパケット生成部11は、送信部12からパリティパケットを生成する指示を入力したタイミングで、所定のパリティパケット生成規則に従って、メモリ10から当該パリティパケットに対応する所定数のデータパケットを読み出し、読み出した所定数のデータパケットからパリティパケットを生成し、送信部12に出力する。
ここで、送信部12は、所定のパリティパケット生成規則に従って、パリティパケットを生成するために用いる所定数のデータパケットのうち、最後に生成するデータパケットの位置を特定する。そして、送信部12は、所定のパケット送信順序規則に従って、送信する順番にデータパケット及びパリティパケットを並べる処理において、特定した位置のデータパケットを並べる処理のタイミングにて、当該パリティパケットを生成する指示をパリティパケット生成部11に出力し、パリティパケット生成部11から当該パリティパケットを入力するようにしてもよい。
図3の例では、送信部12は、パリティパケット生成部11から入力した右下方向のパリティパケットR(0),R(1)等について、当該パリティパケットを生成する指示をパリティパケット生成部11に出力してから6個(L+2個)のパケットの時間分だけ遅延させる。これにより、図6(b)のパケット送信順序規則に従った順序で、パリティパケットを並べることができる。
また、送信部12は、パリティパケット生成部11から入力した左下方向のパリティパケットC(0),C(1)等について、当該パリティパケットを生成する指示をパリティパケット生成部11に出力してから4個(L個)のパケットの時間分だけ遅延させることで、データパケット及びパリティパケットを並べることができる。
このように、送信部12によりデータパケット及びパリティパケットを並べる処理と、パリティパケット生成部11によりパリティパケットを生成する処理とを同期させることにより、送信部12は、パリティパケット生成部11から入力したパリティパケットを遅延させれば済むから、パリティパケットを一時的に蓄積するバッファを備える必要がない。したがって、送信装置1の回路規模を小さくすることができる。