(57)【特許請求の範囲】
【請求項１】
送信すべき情報に対し誤り訂正符号化処理を施して伝送する方法において、
送信側で、前記送信すべき情報に対して、所望の誤り訂正能力に対応する個数の送信側シンドローム値を該個数分のそれぞれ異なる一次式を用いて生成するステップと、
送信側から受信側へ、前記送信すべき情報を含む少なくともーつの情報パケットと、生成された前記送信側シンドローム値を誤り訂正符号の冗長部分として含む少なくとも一つの冗長パケットとを送信するステップとを備えたことを特徴とする符号伝送方法。
【請求項２】
前記生成するステップは、複数の送信側シンドローム値を、前記情報に対する符号語の定義の際に用いられる原始多項式の根の、それぞれ異なるべき乗に基づいて、生成するものであることを特徴とする請求項１記載の符号伝送方法。
【請求項３】
前記送信するステップは、前記送信すべき情報を分割して得られる複数の情報シンボルを、複数の情報パケットに分散させて含ませるものであることを特徴とする請求項１記載の符号伝送方法。
【請求項４】
前記送信するステップは、前記送信すべき情報に対して生成された複数の送信側シンドローム値を、複数の冗長パケットに分散させて含ませるものであることを特徴とする請求項１記載の符号伝送方法。
【請求項５】
前記生成するステップは、リード・ソロモン符号の復号に用いられる計算方法に従って、前記送信側シンドローム値を生成するものであることを特徴とする請求項１記載の符号伝送方法。
【請求項６】
受信側で、送信された前記情報パケット及び冗長パケットのうち少なくとも一部を受信するステップと、
受信された前記情報パケットに含まれる情報に対する少なくとも1つの受信側シンドローム値を生成するステップとと、
生成された前記受信側シンドローム値と受信された前記冗長パケットに含まれる送信側シンドローム値とに基づいて、必要であれば誤り訂正を行うステップとを更に備えたことを特徴とする請求項１記載の符号伝送方法。
【請求項７】
受信側で、受信されたパケットから前記送信すべき情報を復元できなかった場合に、送信側で、前記送信すべき情報に対する別の送信側シンドローム値を生成し、送信側から受信側へ、生成された前記別の送信側シンドローム値を含む少なくとも一つの冗長パケットを送信するステップを更に備えたことを特徴とする請求項１記載の符号伝送方法。
【請求項８】
前記送信するステップは、一つの送信側から複数の受信側へ、前記情報パケット及び冗長パケットをマルチキャスト送信するものであることを特徴とする請求項１記載の符号伝送方法。
【請求項９】
前記送信すべき情報はＩＰパケットであり、このＩＰパケットをｍ個（ｍは複数）のデータに分割するステップを更に備え、前記生成するステップは、前記各データをさらにｎ個（ｎは複数）の情報シンボルに分割し、前記各データから一つずつ選択した情報シンボルｍ個の集合に対して少なくとも一つの送信側シンドローム値を生成する処理をｎ個の情報シンボルの集合それぞれに対して行うものであり、
前記送信するステップは、前記各データをｍ個の情報パケットのぺイロード部分にそれぞれ含ませ、生成された前記ｎ個の送信側シンドローム値を冗長パケットに含ませるものであることを特徴とする請求項１記載の符号伝送方法。
【請求項１０】
送信すべき情報に対し送信側が誤り訂正符号化処理を施して生成したパケットを、受信側ヘ送信するステップと、
受信側で受信されたパケットから前記送信すべき情報を復元できず再送が要求された場合に、送信側で、前記送信すべき情報に対して、所望の誤り訂正能力に対応する個数の送信側シンドローム値を該個数分のそれぞれ異なる一次式を用いて生成し、送信側から受信側へ、生成された前記送信側シンドロ−ム値を誤り訂正符号の冗長部分として含む少なくとも一つの冗長パケットを送信するステップとを備えたことを特徴とする符号伝送方法。
【請求項１１】
前記送信するステップは、一つの送信側から複数の受信側へ、前記冗長パケットをマルチキャスト送信するものであることを特徴とする請求項１０記載の符号伝送方法。
【請求項１２】
送信すべき情報に対して所望の誤り訂正能力に対応する個数の送信側シンドローム値を該個数分のそれぞれ異なる一次式を用いて生成する手段と、
受信側へ、前記送信すべき情報を含む少なくとも一つの情報パケットと、生成された前記送信側シンドローム値を誤り訂正符号の冗長部分として含む少なくともーつの冗長パケットとを送信する手段とを備えたことを特徴とする送信装置。
【請求項１３】
少なくとも一つの情報パケットと、この情報パケットのぺイロード部分に対して、所望の誤り訂正能力に対応する個数のそれぞれ異なる一次式を用いて作成された前記個数分の送信側シンドローム値を含む少なくとも一つの冗長パケットとを受信する手段と、
受信した前記情報パケットに含まれる情報に対する少なくとも1つの受信側シンドローム値を生成する手段と、
生成された前記受信側シンドローム値と受信した前記冗長パケットに含まれる送信側シンドローム値とに基づいて、誤り訂正を行う手段とを備えたことを特徴とする受信装置。
【請求項１４】
送信すべき情報に対して所望の誤り訂正能力に対応する個数の送信側シンドローム値を該個数分のそれぞれ異なる一次式を用いて生成する手段と、
受信側へ、前記送信すべき情報を含む少なくとも一つの情報パケットと、生成された前記送信側シンドローム値を誤り訂正符号の冗長部分として含む少なくとも一つの冗長パケットとを送信する手段と、
送信された前記情報パケット及び冗長パケットの少なくとも一部を受信する手段と、
受信された情報パケットに含まれる情報に対する少なくとも1つの受信側シンドローム値を生成する手段と、
生成された前記受信側シンドローム値と受信された冗長パケットに含まれる送信側シンドローム値とに基づいて、誤り訂正を行う手段とを備えたことを特徴とする通信システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ネットワーク、特にコンピュータ間での通信を行う場合において、エンド・ツー・エンドでの信頼性のある通信を行うための技術に関わる。
【０００２】
【従来の技術】
コンピュータ通信は、これまでサブネットと呼ばれる小さなネットワークの間をブリッジ、ルータ等を介して順番に転送していく方法がとられてきている。この転送の単位はＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）パケットと呼ばれている。
【０００３】
ＩＰパケットの転送については、歴史的にはこれまでベストエフォートであり、ネットワーク内のスイッチやルータといったネットワーク機器において、データの廃棄や消失はあり得るものであるという前提があった。そして、送信側から送ったＩＰパケットが受信側に届かなかった場合には、エンド・ツー・エンドでの再送を行う（例えばＴＣＰ）か、あるいはその通信は失敗であったとして何も行わない（例えばＵＤＰ）ことが一般的であった。
【０００４】
また、従来、コンピュータを使った通信は、ポイント・ツー・ポイントのものがほとんどであった。しかしながら、昨今、マルチキャストを使った通信のニーズが高まってきている。従来はマルチキャストの場合は上位プロトコルにＵＤΡ等を使い、高い品質を要求しない方式を採ることが一般的であった。理由としては、マルチキャストを使ってもしエンド・ツー・エンドでの再送制御を行うと、受信側から受信が成功したか失敗したかのＡＣＫ（Ａｃｋｎｏｗｌｅｄｇｅｍｅｎｔ）／ＮＡＣＫ（Ｎｅｇａｔｉｖｅ  Ａｃｋｎｏｗｌｅｄｇｅｍｅｎｔ）  の信号が受信端末の数に比例して増えていき、送信端末の処理が増大するためである。
【０００５】
このような背景から、マルチキャストのようなシステムと信頼性のある通信を両立するような方法としてエンド・ツー・エンドでの誤り訂正を用いる方法が考えられている。第１の例としては、特開平８−１８６５７０号には複数のΑΤＭセルに対してリード・ソロモン符号（以下、ＲＳ符号と呼ぶ。）を用いた誤り訂正セルを付加してエンド・ツー・エンドでの信頼性を確保する通信方法が開示されている。
【０００６】
この方法によると、通常のリード・ソロモン符号の情報部分をデータ用ΑＴＭセル、冗長部分をコード用ＡＴＭセルとして分けておき、データ用をｍセル、コード用をｌセルとしたとき、ｍ＋ｌセルのうちｌセルまでの廃棄に対して誤り訂正により復元できる。このような誤り訂正符号の適用によって、エンド・ツー・エンドでの高品質な通信が行える。
【０００７】
しかし、この方法において次の問題点がある。一般に冗長の度合いは通信ネットワークによって個別に設定できることが望ましい。しかし、現在は通常の符号語を用いているため、冗長セルの付与数を変えると、異なる符号化計算処理を行わなくてはならない。
【０００８】
これを具体的には述べると、ＲＳ符号は情報部分に対して、Ｇ（Ｘ）という多項式を用いて割り算を行った時の余りを冗長部分とする。例えば冗長が１セルの場合は
Ｇ（Ｘ）＝Ｘ−α＾ｂ    ……（１）
のように記述できる。ここでαはこの符号作成のベースとなる原始多項式の元であり、＾はべき乗を表す。またｂの値は送受信の双方間であらかじめ決められている整数である。すなわちＧ（Ｘ）は送受信で共有している必要がある。ところが、例えば冗長が２セル、３セルの場合はそれぞれ
Ｇ（Χ）＝（Ｘ−α＾ｂ）（Ｘ−α＾（ｂ＋１））  ……（２）
Ｇ（Ｘ）＝（Ｘ−α＾ｂ）（Χ−α＾（ｂ＋１））（Χ−α＾（ｂ＋２））  ……（３）
のようになる。このような場合にそれぞれの多項式の次数は異なるので、それぞれに対して別々の割り算を行わなければならない。このことは、ハードウェア実装においては全く別々の回路を必要とすることから回路規模の増大を招く要因となる。また、ソフトウェアプログラムではそれぞれについて別々のプログラムを作成しなければならず、このこともプログラム量の増大を招いていた。
【０００９】
次に、第２の例として、誤り訂正と再送を組み合わせた技術として考えられている方式について説明する。これは特にマルチキャストにおいて有効であるとされている方式である。
【００１０】
まず送信者はｍ個の情報パケットとその情報パケットに付随したｌ個の冗長パケットを受信者に対して送信する。ｌは０または正の整数である。受信者はｍ＋ｌ個のうち、ｌ個以下のパケットが届かないことを検出すると、その冗長パケットを用いて訂正を行う。しかしながら、ｌ個を越えるｌ’個のパケットの廃棄が途中で発生すると、受信者は送信者に対して（ｌ’−ｌ）個のパケットの再送を要求する。これに応じて送信者は新たに（ｌ’−ｌ）個の冗長パケットを作成して送る。受信者はこれによってｌ’個の冗長パケットを得るので、ｌ’個のパケット廃棄に対して誤り訂正を行って、元の情報パケットを復元することが可能になる。
【００１１】
この方式において、送信者は初めは第１の例で示したような方法を用いてｌ個の冗長パケットを生成することは可能であるが、その後、（ｌ’−ｌ）個の冗長パケットをどのようにして作成するか、が問題となる。例えば、第１の例で示したように最初にｌ＝２として
Ｇ（Ｘ）＝（Ｘ−α＾ｂ）（Χ−α＾（ｂ＋１））  ……（４）
によって２パケットの冗長をつけて送信を行うとする。ところが受信側で４パケットが廃棄によって届かなかったとする。すると、残りの２パケットの再送要求が受信側から送信側へ出される。これに対して、送信側では例えば
Ｇ’（Χ）＝（Ｘ−α＾（ｂ＋２））（Ｘ−α＾（ｂ＋３））  ……（５）
という多項式を使って冗長パケットを作成することになる。このときに（４）式を使っても、同じ冗長パケットを送信するだけなので意味はなく、αの異なるべき乗を使った（５）式のような多項式を使わなければならない。このことから、受信側から要求される再送パケットの数に応じてＧ’（Χ）を新たに作成しなくてはならないことになり、第１の例と同様に回路規模の増大やソフトウェアプログラムの分量を増大させることになっていた。
【００１２】
【発明が解決しようとする課題】
上記のように、従来は信頼性を要求するデータはＴＣΡのようなプロトコルを用いて再送制御を行っていたが、マルチキャストに対応するために誤り訂正を用いる方式が出てきた。しかしながら、従来のような通常の誤り訂正符号の冗長部分をそのまま送信する方法においては、フレキシブルに冗長パケット数を変えることができないという問題がある。また、再送制御と組み合わせた場合でも、やはり再送時の冗長パケットのフレキシブルな提供において問題があった。
【００１３】
本発明は、この点を鑑みてなされたものであり、その目的とするところは、誤り訂正の能力を変更せずに回路規模／ソフトウェアコード量を削減することのできる符号伝送方法、送信装置、受信装置および通信システムの提供を目的としている。
【００１４】
そして特に本発明の目的とするところは、第１には、通信ネットワークの状況に応じたフレキシブルな誤り訂正方式を提供すること、第２には第１の方法を拡張して再送と組み合わせた場合にも簡易に冗長パケットを生成できるようにすること、第３には第１の方法を用いたマルチキャストを含む信頼性のある通信システムを実現すること、また第４には、同じく第２の方法を用いたマルチキャストを含む信頼性のある通信システムを実現することにある。
【００１５】
【課題を解決するための手段】
上記目的を達成するために、本発明の符号伝送方法は、請求項１に記載されるように、送信すべき情報に対し誤り訂正符号化処理を施して伝送する方法において、送信側で、前記送信すべき情報に対して、所望の誤り訂正能力に対応する個数の送信側シンドローム値を該個数分のそれぞれ異なる一次式を用いて生成するステップと、送信側から受信側へ、前記送信すべき情報を含む少なくともーつの情報パケットと、生成された前記送信側シンドローム値を誤り訂正符号の冗長部分として含む少なくとも一つの冗長パケットとを送信するステップとを備えたことを特徴とする。
【００１７】
従来は所望の誤り訂正能力に対応する「次数の多項式」を用いて「一つの」冗長部分を生成していたが、本発明は所望の誤り訂正能力に対応する「個数の一次式」を用いて「該個数分の」冗長部分を生成するようにしたため、例えば誤り訂正能力を増加させたい場合に、次数を増やした多項式で冗長部分を計算する（次数が変わると符号計算のための回路構成も異なることになり回路が大規模化・複雑化する）のではなく、それぞれ異なる一次式の数を単純に増やして、共通の計算方法／回路構成を用いてその数の分だけ符号計算を繰り返せばよくなる。
【００１８】
また、本発明は、請求項２に記載されるように、請求項１記載の符号伝送方法において、前記生成するステップが、複数の送信側シンドローム値を、前記情報に対する符号語の定義の際に用いられる原始多項式の根の、それぞれ異なるべき乗に基づいて生成する、というものである。
【００１９】
さらに、本発明は、請求項３に記載されるように、請求項１記載の符号伝送方法において、前記送信するステップが、前記送信すべき情報を分割して得られる複数の情報シンボルを、複数の情報パケットに分散させて含ませる、というものである。
【００２０】
さらに、本発明は、請求項４に記載されるように、請求項１記載の符号伝送方法において、前記送信するステップが、前記送信すべき情報に対して生成された複数の送信側シンドローム値を、複数の冗長パケットに分散させて含ませる、というものである。
【００２１】
さらに、本発明は、請求項５に記載されるように、請求項１記載の符号伝送方法において、前記生成するステップが、リード・ソロモン符号の復号に用いられる計算方法に従って、前記送信側シンドローム値を生成する、というものである。 さらに、本発明は、請求項６に記載されるように、請求項１記載の符号伝送方法において、受信側で、送信された前記情報パケット及び冗長パケットのうち少なくとも一部を受信するステップと、受信された前記情報パケットに含まれる情報に対する少なくとも一つの受信側シンドローム値を生成するステップと、生成された前記受信側シンドローム値と受信された前記冗長パケットに含まれる送信側シンドローム値とに基づいて、必要であれば誤り訂正を行うステップとを更に備えたことを特徴とするものである。
【００２２】
また、本発明は、請求項７に記載されるように、請求項１記載の符号伝送方法において、受信側で、受信されたパケットから前記送信すべき情報を復元できなかった場合に、送信側で、前記送信すべき情報に対する別の送信側シンドローム値を生成し、送信側から受信側へ、生成された前記別の送信側シンドローム値を含む少なくとも一つの冗長パケットを送信するステップを更に備えたことを特徴とするものである。
【００２３】
この発明では、再送時も、情報の復元のために必要な分（もしくはそれ以上）に対応する「個数の一次式（最初の送信時とは異なるもの）」を用いて「該個数分の」冗長部分を生成・送信すればよく、最初の送信時も再送時も、共通の計算方法／回路構成を用いて符号計算が行える。なお、再送時に送る冗長部分の個数は、受信側から要求された個数としてもよいし、送信側では所定の個数分送り受信側で必要なもしくは自分で処理できる個数分を選択受信するようにしてもよい。また、マルチキャストの場合、ある受信側での情報の復元に必要な分に対応する個数と、別の受信側での情報の復元に必要な個数とが異なっていても、従来のようにそれぞれに対して全く異なる（多項式の次数が異なる）計算をする必要が無く、必要な最大の個数分の冗長部分を作成・送信さえすれば、ある受信側はその全部を使用し、別の受信側はその一部を使用して情報を復元できる。なお、作成した複数の冗長部分のうち、全部をある受信側に送り、一部を別の受信側に送るようにすることも可能であろう。
【００２４】
また、本発明は、請求項８に記載されるように、請求項１記載の符号伝送方法において、送信するステップが、一つの送信側から複数の受信側へ、前記情報パケット及び冗長パケットをマルチキャスト送信する、というものである。
【００２５】
この発明では、マルチキャストの場合も、たとえある受信側が所望する誤り訂正能力と、別の受信側が所望する誤り訂正能力とが異なっていたとしても、従来のようにそれぞれに対して全く異なる（多項式の次数が異なる）計算をする必要が無く、誤り訂正符号の冗長部分を共通の計算方法／回路構成を利用してある個数分作成して複数の受信側へ送信すれば、各受信側でそれぞれ必要なもしくは自分で処理できる個数分を受信・使用することができる。
【００２６】
さらに、本発明は、請求項９に記載されるように、請求項１記載の符号伝送方法において、前記送信すべき情報はＩＰパケットであり、このＩＰパケットをｍ個（ｍは複数）のデータに分割するステップを更に備え、前記生成するステップは、前記各データをさらにｎ個（ｎは複数）の情報シンボルに分割し、前記各データから一つずつ選択した情報シンボルｍ個の集合に対して少なくとも一つの送信側シンドローム値を生成する処理をｎ個の情報シンボルの集合それぞれに対して行うものであり、前記送信するステップは、前記各データをｍ個の情報パケットのぺイロード部分にそれぞれ含ませ、生成された前記ｎ個の送信側シンドローム値を冗長パケットに含ませるものであることを特徴とする。
【００２７】
また、本発明の符号伝送方法は、請求項１０に記載されるように、送信すべき情報に対し送信側が誤り訂正符号化処理を施して生成したパケットを、受信側ヘ送信するステップと、受信側で受信されたパケットから前記送信すべき情報を復元できず再送が要求された場合に、送信側で、前記送信すべき情報に対して、所望の誤り訂正能力に対応する個数の送信側シンドローム値を該個数分のそれぞれ異なる一次式を用いて生成し、送信側から受信側へ、生成された前記送信側シンドロ−ム値を誤り訂正符号の冗長部分として含む少なくとも一つの冗長パケットを送信するステップとを備えたことを特徴とするものである。
【００２８】
本発明によれば、最初に情報を送信する際には、任意（従来方式でも可）の誤り訂正符号化を行って送信しておき、再送が要求された際に、本発明の特徴である新たな方式の誤り訂正符号化を適用するだけでも、多大な効果を奏する。例えば、マルチキャスト通信の場合、ある受信側での情報の復元に必要な情報量と、別の受信側での情報の復元に必要な情報量とが異なっていても、従来のようにそれぞれに対して全く異なる計算をする必要が無く、ある個数分の冗長部分を共通の計算方法／回路構成にて作成して複数の受信側へ再送し、ある受信側はその全部を使い、別の受信側はその一部を使って情報を復元することが可能となるからである。
【００２９】
さらに、本発明は、請求項１１に記載されるように、請求項１０記載の符号伝送方法において、前記送信するステップが、一つの送信側から複数の受信側へ、前記冗長パケットをマルチキャスト送信するものであることを特徴とするものである。
【００３０】
さらに、本発明の送信装置は、請求項１２に記載されるように、送信すべき情報に対して所望の誤り訂正能力に対応する個数の送信側シンドローム値を該個数分のそれぞれ異なる一次式を用いて生成する手段と、受信側へ、前記送信すべき情報を含む少なくとも一つの情報パケットと、生成された前記送信側シンドローム値を誤り訂正符号の冗長部分として含む少なくともーつの冗長パケットとを送信する手段とを備えたことを特徴とする。
【００３１】
また、本発明の受信装置は、請求項１３は記載されるように、少なくとも一つの情報パケットと、この情報パケットのぺイロード部分に対して、所望の誤り訂正能力に対応する個数のそれぞれ異なる一次式を用いて作成された前記個数分の送信側シンドローム値を含む少なくとも一つの冗長パケットとを受信する手段と、受信した前記情報パケットに含まれる情報に対する少なくとも一つの受信側シンドローム値を生成する手段と、生成された前記受信側シンドローム値と受信した前記冗長パケットに含まれる送信側シンドローム値とに基づいて、誤り訂正を行う手段とを備えたことを特徴とする。さらに、本発明の通信システムは、請求頂１４に記載されるように、送信すべき情報に対して所望の誤り訂正能力に対応する個数の送信側シンドローム値を該個数分のそれぞれ異なる一次式を用いて生成する手段と、受信側へ、前記送信すべき情報を含む少なくとも一つの情報パケットと、生成された前記送信側シンドローム値を誤り訂正符号の冗長部分として含む少なくとも一つの冗長パケットとを送信する手段と、送信された前記情報パケット及び冗長パケットの少なくとも一部を受信する手段と、受信された情報パケットに含まれる情報に対する少なくとも一つの受信側シンドローム値を生成する手段と、生成された前記受信側シンドローム値と受信された冗長パケットに含まれる送信側シンドローム値とに基づいて、誤り訂正を行う手段とを備えたことを特徴とするものである。
【００３２】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照しながら説明する。
【００３３】
（第１の実施形態）
第１の実施形態では、本発明のベースとなる基本的な誤り訂正符号の通信方法について説明する。
【００３４】
初めに、従来の一般的な符号化方式を用いた誤り訂正について説明する。
【００３５】
例として、組織的である巡回符号の場合を示す。組織的であるとは誤り訂正符号化を行ったときに、元の情報がそのまま情報部分として残り、冗長部分が情報部分とは別個にできて情報部分とはっきりと分割できる状態のことをいう。
【００３６】
巡回符号においては、ｍシンボルの情報列であるＩ
Ｉ＝（ｉ［ｍ−１］，ｉ［ｍ−２］，…，ｉ［０］）  ……（６）
はＩ（Χ）として記述される。そして次数ｋの生成多項式Ｇ（Χ）に対して以下のような次数ｋ未満の多項式Ｒ（Ｘ）を求める（Ｋは所定の定数）。
【００３７】
Ｉ（Ｘ）・Χ＾ｋ  ＝Ｑ（Ｘ）Ｇ（Χ）−Ｒ（Χ）  ……（７）
（Ｑ（Ｘ）は商多項式）
符号語Ｃは多項式Ｃ（Ｘ）の形として、以下のように表される。
【００３８】
Ｃ（Ｘ）＝Ｉ（Ｘ）・Χ＾ｋ  ＋Ｒ（Ｘ）  ……（８）
これはベクトルとしては、
Ｃ＝（ｉ［ｍ−１］，ｉ［ｍ−２］，…，ｉ［０］，ｒ［ｋ−１］，ｒ［ｋ−２］，…，ｒ［０］）  ……（９）
とＣ＝（Ｉ｜Ｒ）の形で記述される。
【００３９】
この符号語Ｃを送信者が受信者に向けて送信したとする。通信はパケット単位で行われ、途中の通信路ではビット誤りはないがシンボル単位の抜けが発生するものとする。
【００４０】
ここでシンボル単位の抜けが発生し得るような通信の形態について記述する。
図１にパケット通信と符号語との関係を示す。図のように符号語は１つのシンボルが１つのパケットに入るように分割されている。そして、第１のパケットから第ｍのパケットには情報シンボルが、第（ｍ＋１）のパケットから第（ｍ＋ｋ）のパケットには冗長シンボルが含まれる。
【００４１】
第１のパケットを見ると、そのぺイロードは複数の符号語の第１の情報シンボルが集まってできているように見える。同様に第（ｍ＋１）のパケットは複数の符号語の第（ｍ＋１）のシンボルである冗長シンボルが集まってできているように見える。このように、パケットは全てが情報シンボルからなる情報パケットと全てが冗長シンボルからなる冗長パケットに完全に分割されている。
【００４２】
パケットはルータ等で廃棄されることがあり、１つのパケットが廃棄された時、図１の各符号語から見ると、１つのシンボルが廃棄されたように見える。
【００４３】
ただし、図１は全てのパケットの長さが同じである場合について記述したが、図２のように長さの異なるパケットが存在する場合は、冗長パケットは、情報パケットのうち最長のもの（図では第２のパケット）に合わせて作成される。このとき、実質上情報パケット部分のシンボルにデータのない符号語もあるので、情報パケットが廃棄されてもその符号語にとっては情報損失が起こらない場合もある。
【００４４】
以上のように、まず送信すべき情報をシンボルを単位として複数の情報パケットに分散させて入れる。また、送信すべき冗長部分をやはりシンボル単位に複数の冗長パケットに分散させて入れておく。このようないわゆる符号語を複数のパケットに対してインターリーブさせるような形で挿入しておくことによって、ｌつのパケットの廃棄は、そこに含まれる複数（例えばｎ個）の符号語のそれぞれにとって、１つのシンボルの抜け、を意味することとなる。
【００４５】
なお、図１および図２では、符号語の各シンボルの位置がきれいに一列に並んでいるが、並び方さえ決めておけば、一列に並んでいる必要はない。
【００４６】
また、通常は簡単のために１つのパケットのペイロードに複数の符号語のシンボルを１つずつ入れるが、挿入するシンボル数を２つ以上にすることも可能である。
【００４７】
受信側では、このようにしていくつかのシンボルが抜けた符号語Ｃ’を受け取る。シンボル抜けは、値が０のシンボルを受信したことと考えると、以下のように記述できる。
【００４８】
Ｃ’＝（ｉ［ｍ−１］，…，０，…，ｉ［０］，ｒ［ｋ−１］，…，０，…，ｒ［０］）  ……（１０）
また、Ｃ’はＣに抜けという誤りＥが加わったと考えることもできる。Ｅは
Ε＝（０，…，ｉ［＊  ］，…，０，０，…，ｒ［＊＊］，…，０）  ……（１１）のように記述することができる。
【００４９】
受信者はＣ’（Χ）に対し、Ｇ（Ｘ）による割り算を行い、その割り算の余りを求める。この余りのことをシンドロームと言う。シンドロームの値が０であるということは誤りがないことを意味する。パケットに抜けがあるにも関わらずシンドロームが０となったとき、該当するパケットの部分に相当するシンボルの値は先に仮定した値である０を持つことになる。もちろん０以外の値を仮定してもよいが０を仮定するのが簡単な方法である。
【００５０】
シンドロームの値が０以外の値になった時は、抜けのあるシンボル位置とシンドロームの値から抜けのあるシンボルの値を求める。２シンボル以上の複数の抜けを訂正できる場合には、一般にはシンドロームはべクトル形式で書かれることが多い。
【００５１】
以下では、代表例として、ＧＦ（２＾ｈ  ）上のＲＳ符号を用いた場合について記述することにする。ＲＳ符号は多くの符号の中でｋシンボルの冗長があった場合にｋシンボルまでの抜けを訂正できる非常に効率のよい符号である。ただし、ＲＳ符号以外のブロック符号においても同様の方法があてはまり、一般性は失われない。
【００５２】
ＲＳ符号においてシンドロームの計算および抜けたシンボルの訂正は以下のように計算される。まず生成多項式Ｇ（Χ）はＧＦ（２＾ｈ  ）上の既約多項式の根をαとして、
Ｇ（Χ）＝（Ｘ＋α＾ｂ）（Ｘ＋α＾（ｂ＋１））…（Ｘ＋α＾（ｂ＋ｋ−１））  ……（１２）
（ｂは所定の定数（整数））
のようにｋ次の多項式として記述される。一方受信した符号語Ｃ’は多項式の形で
0003571918.tif 000002
と書け、これを用いてｋ個のシンドロームＳ［ｉ］（ｉ＝０〜ｋ−１）が以下のようにして計算される。
【００５３】
Ｓ［ｉ］＝Ｃ’（α＾（ｂ＋ｉ））  ……（１４）
いま、パケット廃棄がｌ個（０＜ｌ≦ｋ）あることによってｌシンボルの抜けがあったとする。これら抜けのあるシンボル位置を値の順にａ［ｌ−１］，ａ［ｌ−２］，…，ａ［０］、またそれぞれの値をｅ［ｌ−１］，ｅ［ｌ−２］，…，ｅ［０］とする。シンボル位置の値は、先頭がｍ＋ｋ−１、最後尾が０であるとする。もし抜けがなければＳ［ｉ］は全て０となるので、抜けた部分の値が残って
0003571918.tif 000003
となる。ａ［ｌ−１］からａ［０］の値はわかっているので、Ｓ［０］からＳ  ［ｋ−１］のｋ個のシンドロームのうち任意のｌ個を用いて、ｅ［ｌ−１］からｅ［０］までのｌ個の値に関する連立方程式を解く、あるいは同等の機能を持つ解法を用いることによって、各シンボル値を求めることができる。
【００５４】
さて、従来技術の項でもふれたように、この方式では、送信側でＩ（Ｘ）をＧ（Χ）で割るという作業があって、この作業において冗長パケット数をいくつ付加するか、によってＧ（Ｘ）の次数が異なり、よって、計算方法が異なることになるという問題点がある。冗長パケット数が常に固定であればそれでも問題はないのだが、通常はネットワークの特性に応じて可変にすることが求められるため、それに対応してＧ（Ｘ）を複数用意しなければならない。
【００５５】
ハードウェアで実現する場合は特にＧ（Χ）の次数にほぼ比例して回路規模も大きくなるので、冗長パケット数を例えば１からｋまで可変にしようとすると、冗長パケット数が１の場合の回路規模を１単位として
１＋２＋…＋ｋ＝ｋ（ｋ＋１）／２  ……（１６）
の規模が必要となる。ソフトウェアにて実現する場合も、この分量に比例した計算プログラムが必要となってしまう。
【００５６】
このことをふまえて、以下に本実施形態の誤り訂正方式について説明する。
【００５７】
誤り訂正を行うには、式（１５）に示したように誤りの位置とシンドローム値が分かればよい。従ってもし送信側や受信側で、次数の異なるＧ（Ｘ）を用いた割り算を行わない方法によってシンドローム値が計算できれば、結果的にはそれでも構わないことになる。そこで、本実施形態では、次数の異なるＧ（Ｘ）による除算を用いない方法を示す。
【００５８】
以下ではＧＦ（２＾ｈ  ）上の組織的なＲＳ符号を例として説明するが、他のブロック符号に適用しても一般性を失わない。実際、ここではＲＳ符号そのものを伝送せず、情報部分と冗長部分とは別物になる。
【００５９】
送信側では、式（１２）と同じ生成多項式を考える。そして、情報列Ｉ（Χ）に対して、Ｇ（Ｘ）の根をそれぞれ代入して、シンドロームΤ［ｉ］（ｉ＝０〜ｋ−１）を計算する。これを「送信側のシンドローム値」と呼ぶことにする。
【００６０】
言い換えると、Ｔ［ｉ］は、Ι（Ｘ）に対してＸ−α＾（ｂ＋ｉ）
（ｉ＝０〜ｋ−１）という、ｋ個の異なる一次式によって割り算を行った余りとして定義できる。
【００６１】
あるいは、Ｔ［ｉ］はＩ（Ｘ）にα＾（ｂ＋ｉ）というαの異なるべき乗のものをｋ個、順に代入したものとしても記述することが可能である。この代入の方法は、従来のＲＳ符号の復号手順において、シンドローム計算をするのに似ている。ただし、従来のＲＳ符号は符号語Ｃを多項式表現したＣ（Ｘ）に対してαのべき乗を代入するが、この方式では、符号語ではなく、情報部分の多項式Ｉ（Ｘ）に対して代入を行う点が異なっている。
【００６２】
そして、送信側は情報列ＩにこのΤを付けて、符号語Ｃとは形式の異なるＤ＝（Ι｜Τ）を受信側へ送る。Ｔ［ｉ］の送出順は式（１８）に示したものと逆でも全く構わない。
【００６３】
0003571918.tif 000004
Ｄの伝送方法は従来と同じである。すなわち図１および図２のようにして情報パケットと冗長パケットの形で伝送が行われ、廃棄はパケット単位に発生する。従って途中でＤにはシンボル抜けが発生し、受信側ではシンボルが抜けた後のＤ’を受信することになる。
【００６４】
0003571918.tif 000005
また、Ｄ’はＤに抜けという誤りＥ’が加わったと考えることもできる。
【００６５】
Ε’は
Ｅ’＝（０，…，ｉ［＊  ］，…，０，０，…，Ｔ［＊＊］，…，０）  ……  （２０）
のように記述することができる。
【００６６】
いまＥ’の最初のｍ個の要素が全て０、すなわち、情報シンボルに抜けがなかったとき、全ての情報が正常に受信されているので、それ以上の処理は必要ではない。よって、冗長シンボルを廃棄して情報部分を取り出す。
【００６７】
また、Ｅ’の０でない要素の数がｋよりも多いときには、−般にはこの符号語によって誤り訂正を行うことができないので、それ以上の処理は行わない。
【００６８】
ただし、後述するように再送処理を行う場合には、これらの情報を用いるので、残しておくことになる。
【００６９】
Ｅ’が上述した以外の場合、すなわち情報シンボル抜けがあって、なおかつ誤り訂正符号の訂正能力の範囲である場合は、受信者は以下のような手順で誤り訂正処理を行う。
【００７０】
受信者はＤ’の最初のｍのシンボルについてのシンドロームを計算する。すなわちＤ’＝（Ｉ’｜Ｔ’）と記述されるとすると、
Ｔ’［ｉ］＝Ｉ’（α＾（ｂ＋ｉ））  ……（２１）
を計算し、Ｔ’におけるＴ［ｉ］との差をとる。送信されてきたＴ［ｉ］に抜けがある場合には差分はとらない。こうして各々について
0003571918.tif 000006
ができあがり、これがこの符号における受信側のシンドロームとなる。Ｔ［ｉ］（ｉ＝０〜ｋ−１）のうちｊ個（０≦ｊ＜ｋ）に抜けがあるとｋ−ｊ個のシンドローム値（Ｓ’［ｉ］）が作成でき（残りのＳ’［ｉ］は値を持たない）、それを越えない範囲の情報パケットでのｌ個（０＜ｌ≦ｋ−ｊ）の廃棄があるとする。これら抜けのある情報部分のシンボル位置を値の順にａ［ｌ−１］，ａ［ｌ−２］，…，ａ［０］、またそれぞれの値をｅ［ｌ−１］，ｅ［ｌ−２］，…，ｅ［０］とする。シンボル位置の値は、先頭がｍ−１、最後尾が０であるとする。もし抜けがなければ、Ｓ’［ｉ］は全て０となるので、抜けた部分の値が残って
0003571918.tif 000007
となる。ａ［ｌ−１］からａ［０］の値はわかっているので、ｋ−ｊ個のＳ’  ［ｉ］のうち任意のｌ個を用いて、ｅ［ｌ−１］からｅ［０］までのｌ個の値に関する連立方程式を解く、あるいは同等の機能を持つ解法を用いることによって、各シンボル値を求めることができる。
【００７１】
ここで従来技術と本実施形態の技術との比較を行う。伝送情報量は、どちらもｍシンボルの情報に対し、ｋシンボルの冗長であって同じである。また、誤り訂正能力も、情報シンボルと冗長シンボルの合計でｋシンボルまでの抜けを訂正できる点で全く同じである。この状況で、回路規模は従来が式（１６）で与えられた値であるのに対し、本方式は１つのシンドロームを計算する回路規模を式（１６）と同じ１単位としたときにｋで済む。すなわち、本実施形態の技術では、回路規模を小さくすることが可能である。またソフトウェアで作成する場合もプログラムコードを少なくすることが可能である。
【００７２】
図３と図４に回路規模上の比較の概念図を示す。図３は従来技術の場合の送信側回路であり、冗長パケット数に応じて全く別の回路を経由するため、総計の回路規模は大きくなる。一方、図４に示す本実施形態の技術では冗長パケット数が可変しても同じ回路を共有できるので、回路規模がずっと少なくなる。
【００７３】
このように、送信側と受信側で同じ情報シンボル部分のみに対してのシンドローム値を計算し、これを用いることによって、回路規模、あるいはプログラムコード量の少ない通信システムを構築することが可能となる。
【００７４】
特に、シンドロームの計算方法として、リード・ソロモン符号の復号法において用いられる方法を利用することによって、訂正能力が最大となる。
【００７５】
ここで、このような方式を有する通信システムの一例を説明する。
【００７６】
本例の通信システムは、誤り訂正機能を有するＩＰパケット（ＩＰ−ＦＥＣパケット）を使ってエンド・ツー・エンドでの誤り訂正を行うシステムである。
【００７７】
図５はこのシステムのレイヤイメージを示している。ＩＰレイヤのあたりにＩＰ／ＦＥＣというレイヤを設け、ここで、種々のトランスポートレイヤ（ＴＣＰ、ＵＤＰなど）に対して独立に誤り訂正を行うことができる。
【００７８】
図６は本例の通信システムにおける実際の運用形態を示している。インターネット等の世界では、この図にあるように、コンピュータ（送信端末１２０１、受信端末１２０２）間がルータ１２０３を介して地球規模でエンド・ツー・エンドで接続される。また特にマルチキャストを使った通信が今後増えるものと予想される。
【００７９】
しかしながら、ネットワーク内で生じたパケット廃棄などの誤りに対しては、ＬＡＮ内の端末間で行われているのと同様に再送による方法で誤り訂正を行っているのが現状である。
【００８０】
そもそも、再送による誤り訂正は、リアルタイム性を要求されないメディアで端末間の距離が小さい場合には有効であった。しかし、ネットワークが巨大化しデータトラヒックの変化予測が困難な場合には、ＦＥＣによる誤り訂正がよリ適切であると考えられる。
【００８１】
ＦＥＣによる方法では、実データに対して予め誤り訂正コードを付加して送信し、転送中に誤りが生じた場合には受信側が訂正コードを用いて自発的に訂正する。よって、再送によるネットワークトラヒックの増加を防止することができ、送信側も再送要求に備えてデータを一定時間保存しておく必要がなくメモリの節約にもつながる。再送方式は、遅延の増大、トラヒックの増加、コネクション管理の複雑化等から特に巨大ネットワークのマルチキャストには不向きである。
【００８２】
はじめに送信側における処理を説明する。この流れは図７に示される。
【００８３】
まずＦＥＣレイヤはＩＰパケットをＩＰのレイヤ（ネットワークレイヤ）から受け取る。この渡されたＩＰパケットをここではオリジナルＩＰパケット１３０１と呼ぶことにする。このオリジナルＩＰパケット１３０１をインタリーブマトリクス１３０２と呼ばれるメモリバッファ領域にパケットのヘッダも含めて書き込む。この書き込みは、インタリーブマトリクス１３０２の縦方向にデータを書き込んで行くことによって行われる。１つの縦の列は例えば１２８バイト、５１２バイト、１０２４バイトといった固定サイズからなる場合が多いが、本例では可変サイズとしている。オリジナルＩＰパケット１３０１は可変長なので、最後の列の途中でデータが終る場合がある。その場合、最終列にはパディング（ＰＡＤ）をつける。
【００８４】
次に、横の一行毎に誤り訂正符号化の計算を行い、その計算結果である符号化データを、図７においてインタリーブマトリクスの右側に位置しているコード領域の同じ行に相当する部分に書き込んで行く。横のサイズは、誤り訂正に用いられるシンボルの大きさによって最大長が決まり、具体的には１シンボルのビット数をＢとすると、２Ｂ  −１となる。このサイズはデータの縦列とコードの縦列の合計の最大数に相当する。
【００８５】
誤り訂正符号の方法は前述した通りであり、シンボル単位で横方向に計算する。このとき、マトリクスの左側の何も入っていない部分は無視される。マトリクス毎に符号化の程度を変更することも可能である。例えば、オリジナルＩＰパケット１３０１の長さや、コネクションの種類によって符号化のパラメータを変更することができる。
【００８６】
上記インタリーブマトリクスは、実は図１および図２と対応させることができる。ここでは図１との対応を記述する。
【００８７】
図１におけるぺイロード部分がマトリクスの縦の列に対応している。従って、元のＩＰパケットは図１において、先頭から同じシンボル数（ここではｎシンボル数であるとする）ずつｍ個に区切られて、第１のパケットから第ｍのパケットのペイロードにそれぞれ分割されて入れられることになる。そして、第１のパケットから第ｍのパケットまでのｊ番目のシンボル（ｊ＝１〜ｎ）を使って、ｋシンボル分の冗長シンボルを作成する。作成方法は既に述べた通りである。
【００８８】
そしてそれらｋ個の冗長シンボルを図１の第（ｍ＋１）のパケットから第（ｍ＋ｋ）のパケットまでのｊ番目のシンボル位置にそれぞれ書き込む。ｎ個のシンボルについて同様の操作を行うと、第（ｍ＋１）のパケットから第（ｍ＋ｋ）のパケットのぺイロ−ドに冗長シンボルが詰まることになる。
【００８９】
図１はｊ番目のｍ個のシンボルからｊ番目のｋ個のシンボルを作成しているが、対応づけが明確であれば、シンボル順序を変更して計算してもよい。すなわち、第ｉ番目の（ｉ＝１〜ｍ）パケットのｊ［ｉ］番目（ｊ［ｉ］＝１〜ｎ）のシンボルを取り出してｍ個の情報シンボルとし、そのｍ個の情報シンボルから得られるｋ個の冗長シンボルを第（ｍ＋１）のパケットから第（ｍ＋ｋ）のパケットまでの任意のシンボル位置に１つずつ書き込む。このとき、選択するｍ個の情報シンボルは重複なく選択することとし、また冗長シンボルを書き込む位置も重複のないようにすれば、同様の訂正能力を持った冗長パケットが出来上がることになる。
【００９０】
次に、情報の入っている縦の列のそれぞれに対してＦＥＣヘッダを付与する。１つの縦の列はこのＦＥＣへッダおよびＩＰ−ＦＥＣへッダを付与された状態で１つのＩＰパケットとなる。この固定長の短いＩＰパケットをＩＰ−ＦＥＣパケット１３０３と呼ぶ。
【００９１】
ＦＥＣヘッダに含まれる情報の例を図８に示す。同図に示すように、ＦＥＣヘッダ１４０１は４バイトからなり、以下のフィールドを持つ。
【００９２】
・＃ｐａｒｉｔｙ
マトリクスの横の１行に対して何シンボルの訂正シンボルを付与しているかを示す。よって、各マトリクス毎に付与する訂正シンボル数が異なっていることもある。
【００９３】
・ｄａｔａ／ｃｏｄｅ
そのＦＥＣヘッダが付与されているペイロードがデータを含むのか、それとも訂正コードを含むのかを示す。
【００９４】
・＃ｄａｔａ  ｐｋｔ
そのマトリクスが含まれるデータの縦の列数をしめす。
【００９５】
・Ｆｒａｍｅ  ＩＤ
マトリクス単位に送信側で順次インクリメントしていくＩＤ番号。ＩＰレイヤはコネクションレス通信なので受信側でのパケットの到着順序が入れ替わることがある。このために送信側でそれを識別するための情報を入れておき、到着したパケットがどのインタリーブマトリクスに属するかの判定を行えるようにする。
・ＳＮ
マトリクス毎に初期化され付与されるシーケンスナンバ。すなわちこれは、あるインタリーブマトリクスの中でのパケットの識別のために使われる。同一のマトリクスに同じＳＮを持ったパケットは存在しない。
【００９６】
次に、ＩＰ−ＦＥＣヘッダ１４０２を付与する。これは、基本的には上位レイヤから渡された時に付与されていたオリジナルのＩＰパケット１３０１のヘッダのコピーである。変更点は、プロトコルフィールドをＦＥＣに設定しておくことと、パケットのトータル長をＩＰ−ＦＥＣヘッダ長（２０バイト＋オプション）、ＦＥＣヘッダ長（図８の例では４バイト）、インタリーブマトリクスの縦の長さ（１２８バイト、５１２バイトなど）の合計に設定すること、そして、チェックサムは計算し直すことである。
【００９７】
ＩＰ−ＦＥＣヘッダ１４０２を付与したら、完成したＩＰ−ＦＥＣパケット１３０３をデータリンクレイヤに順次渡して行く。
【００９８】
次に、受信側の動作について説明する。この様子を図９に示す。ＩＰ−ＦＥＣパケット１５０３がデータリンクレイヤから上げられると、まずＩＰレイヤがこれを受信する。ＩＰレイヤにおいて、ＩＰ−ＦＥＣパケット１５０３は一般のＩＰパケットと同じようにハンドリングされ、ヘッダのプロトコルフィールドの内容（ＦＥＣ）に従ってＦＥＣレイヤヘ渡される。ＩＰ−ＦＥＣヘッダはＩＰレイヤで解釈可能である。
【００９９】
ＦＥＣレイヤでは、ＩＰ−ＦＥＣパケット１５０３からＩＰ−ＦＥＣヘッダを取り出してＦＥＣヘッダのチェックを行い、図８に示したフレームＩＤとＳＮの情報から、ペイロードの部分を適切なインタリーブマトリクス１５０２の適切な列に縦に書き込む。ＩＰプロトコルの転送では正しい到着順序が保証されていないため、図９で示されているように、複数のフレームを同時に保持できるようにしている。
【０１００】
図９の一番左のインタリーブマトリクスのようにデータ領域に相当する部分が全て揃えば、オリジナルＩＰパケット１５０１の組み立てが完了するので、コード領域のＩＰ−ＦＥＣパケットは不必要なものとして廃棄される。
【０１０１】
また、図９の真ん中に示されるマトリクスの場合は、コード領域の部分が到着してもデータ部分が到着していないのでパケットロスが発生した可能性があると見なされる。そこで誤り（消失）訂正を行う機会の待機状態に入る。
【０１０２】
パケットロスなしでオリジナルＩＰパケットが出来上がった、もしくは、パケットロスはあったが訂正によりオリジナルＩＰパケットが再生できたら、再度、そのオリジナルＩＰパケットをＩＰレイヤヘ渡す。
【０１０３】
インタリーブマトリクスはー度に保持できる最大数が決っており、それ以上になった場合には最も保持時間の長い（古い）マトリクスを探し、このマトリクスに書き込まれたデータの訂正処理を開始する。また、タイマを設けておき、ある時間が経過したにも関わらずマトリクスにデータが揃わない場合にも訂正処理を開始するようにしてもよい。
【０１０４】
訂正方法はすでに述べた通りである。訂正処理を行おうとしたインタリーブマトリクスにおいて、パケットロスが多すぎて訂正能力を越えてしまっている場合は、訂正をあきらめ、そのマトリクスごとデータを廃棄する。もし訂正が成功し、完了したらオリジナルＩＰパケットを取り出してＩＰレイヤヘ渡す。
【０１０５】
このように本方式の誤り訂正を行えるようにしておくと、ルータ等を介したエンド・ツー・エンドでのデータ配送が可能である。受信側では送信側からの情報に基づいて必要に応じて誤り訂正を行うことによって、信頼性のある通信が可能となる。特にこの方法は、受信者数によらないので、大規模のマルチキャスト伝送方式にも適している．また、トランスポートプロトコルに依存しないので、ＴＣＰ、ＵＤＰ、ＩＣＭＰといった複数のトランスポートプロトコルに対して適用することが可能である。
【０１０６】
続いて、上記のような通信システムにおいての通信を実現する送信装置および受信装置の構成について説明する。
【０１０７】
図１０は送信装置の構成を示している。この送信装置１６０１は、アプリケーション送信モジュール１６０２、オリジナルＩＰパケット受信モジュール１６０３、オリジナルＩＰパケット分割モジュール１６０４、ＦＥＣコード生成モジュール１６０５、ＩＰ−ＦＥＣ／ＦＥＣヘッダ付与モジュール１６０６及び下位レイヤ送信処理モジュール１６０７を有している。
【０１０８】
アプリケーション送信モジュール１６０２は、送信したいアプリケーションデータをＩＰパケット単位に分割して、オリジナルＩＰパケット受信モジュール１６０３に渡す。したがってオリジナルＩＰパケット受信モジュール１６０３は、既に完全にＩＰパケットの形になっているものを受信することになる。すなわち、アプリケーション送信モジュール１６０２の機能としては、ＩＰレイヤ以上の全ての処理、例えばＩＰパケットサイズへの分割処理、ＩＰヘッダ付与処理、トランスポートレイヤ処理、等を含む。
【０１０９】
オリジナルＩＰパケット受信モジュール１６０３に到着したオリジナルＩＰパケットは、オリジナルＩＰパケット分割モジュール１６０４にて適切な長さに分割される。ここでの分割サイズは前述したように最大値が決まっている場合に、その範囲内で任意の長さをとることが可能であるが、後述するＩＰ−ＦＥＣ／ＦＥＣヘッダ付与モジュール１６０６における処理を容易化するために固定長とした方がよい。すなわち、オリジナルＩＰパケットをＩＰヘッダを含めて例えば１２８バイト、５１２バイトといった単位で区切り、最後に半端となった部分についてはパディングを付与して同じサイズにする。こうして区切られた固定長のデータはＩＰ−ＦＥＣ／ＦＥＣデータ付与モジュール１６０６に渡される。
【０１１０】
これと同時に、オリジナルＩＰパケットの分割されたデータの情報は、ＦＥＣコード生成モジュール１６０５に渡される。ＦＥＣコード生成モジュール１６０５は、分割されたデータを先頭からシンボル単位に分割し、そのシンボルの順序とシンボルの値を使って誤り訂正符号を作成する。この情報を使う点はＲＳ符号の場合も本符号化方式においても同一である。具体的な符号の生成方法については前述した通りである。
【０１１１】
ＦＥＣコード生成モジュール１６０５において作成された冗長シンボルは、やはり分割されたシンボルの中で、一定の規則に従って並べられる。例えば、図１に示したように分割されたデータの第ｊ番目のシンボルをそれぞれ情報シンボルとし、それについて各冗長シンボルを作成し、その冗長シンボルをやはり分割されたデータの形で第ｊ番目のシンボルに挿入する。このようにして冗長データも情報データと同じサイズのものが出来上がる。この出来上がった冗長データをＩＰ−ＦＥＣ／ＦＥＣヘッダ付与モジュール１６０６に渡す。
【０１１２】
ただし、１つのオリジナルＩＰパケットを分割して符号化処理を行っても構わない。例えば、オリジナルＩＰパケットがオリジナルＩＰパケット分割モジュール１６０４によりｍ個のデータ部分に分割されたとする。このとき、ｍ個をｍａ、ｍｂ、ｍｃ個のように分割したり、あるいはｍｄ個ずつに分割して、各々についてＦＥＣを作成する。すなわちこの場合であると、１つのオリジナルＩＰパケットで２つ以上の符号化処理を行うことになる。
【０１１３】
実際にオリジナルＩＰパケットは６４ｋバイト程度が最大長となるとされており、ｍの値は分割の単位が例えば１２８バイト毎であるとかなり大きくなる。このような場合は、前記のように分割して符号化処理を行う方法が有効である。また、ネットワークの特性に応じて符号化の単位を変えることは必要であり、その場合に上記のような方法を適用できる。その場合には、図８に示したＦＥＣヘッダにおいて、該当するＩＰ−ＦＥＣパケットがオリジナルＩＰパケットの中の何番目のコードに相当するか、という情報を追加しておく。
【０１１４】
ＦＥＣコード生成モジュール１６０５において、どれだけの量の冗長を生成するか、という問題については、例えば、その量がＩＰパケットヘッダ単位に決まるのであれば、オリジナルＩＰパケットのヘッダ情報を入手してそれによって判断を下せばよい。また、データ用のパケット数で決まる場合は、オリジナルＩＰパケットのヘッダにある長さ表示と、オリジナルＩＰパケット分割モジュール１６０４における分割の長さ等から全体のパケットの長さを判断し、それを使って冗長パケット数を決定する。このように、ＦＥＣコード生成モジュール１６０５では、オリジナルＩＰパケット受信モジュール１６０３との間でこのような情報のやりとりが行われる。
【０１１５】
さて、ＩＰ−ＦＥＣ／ＦＥＣヘッダ付与モジュール１６０６は、渡された情報データおよび冗長データについて、図８に示されるようなＦＥＣヘッダを付与し、さらに、ＩＰ−ＦＥＣへッダを付与して下位レイヤ送信処理モジュール１６０７に渡す。下位レイヤ送信処理モジュール１６０７は、渡されたＩＰ−ＦＥＣパケットを送信できる伝送路フォーマットにしてインターネット網や公衆網、ＬＡＮ等に送り出す。
【０１１６】
ところで、この送信装置では、データのＩＰ−ＦＥＣパケットについては、バイブライン処理を行うことが可能である。
【０１１７】
オリジナルＩＰパケット分割モジュール１６０４は、オリジナルＩＰパケット受信モジュール１６０３から固定長（５１２バイトなど）のデータを受けとると、その情報をＦＥＣコード生成モジュール１６０５に送るとともに、ＩＰ−ＦＥＣ／ＦＥＣヘッダ付与モジュール１６０６に渡し、そこで各種ヘッダを付与して下位レイヤから送り出す、ということを一連の動作として行うことができる。
【０１１８】
これによって、オリジナルのＩＰパケットの送信処理において、全体を逐次ストアする手順を省くことができ、必要なバッファ／メモリ量の削減につながる。すなわち、オリジナルＩＰパケット分割モジュール１６０４から先のデータ処理では、最大でＩＰ−ＦＥＣパケット１つ分の蓄積量で済むことになる。さらに、逐次ストアする手間がない分、処理の高速化がはかられる。
【０１１９】
また、ＦＥＣコード生成モジュール１６０５においても、コード生成する場合には、作成する冗長用のＩＰ−ＦＥＣパケット数分のメモリ領域を用意して、そこで途中の計算結果を逐次入れていかなければならないが、その計算が終了すると、ＩＰ−ＦＥＣ／ＦＥＣへッダ付与モジュール１６０６へは１つの冗長パケットのペイロード単位でデータが渡されるので、やはりそれ以降の処理においてＩＰ−ＦＥＣパケット１つ分の蓄積量を確保すれば済むことになる。さらにはＩＰ−ＦＥＣ／ＦＥＣヘッダ付与モジュール以降の処理においてデータ用と冗長用のメモリを共用すれば、さらにメモリを節約することができる。
【０１２０】
また、ＩＰ−ＦＥＣ／ＦＥＣヘッダ付与モジュール１６０６においては、オリジナルＩＰパケット分割モジュール１６０４から送信すべき数のデータパケットのペイロードを渡した直後に、ＦＥＣコード生成モジュール１６０５から前記データパケットに対する冗長パケットのペイロードを渡すようにするのがよい。というのは、図８に示したように、ＦＥＣヘッダにはシーケンス番号が付与されるので、このシーケンス番号をコネクション単位や複数のオリジナルＩＰパケット単位で複数個分管理することは煩雑である。そこでパケットペイロードの受渡しの順序を最適化しておくことにより、少なくとも１つの符号化単位では、継続して処理できるようになる。これにより、シーケンス番号の管理は１種類で簡単になる。
【０１２１】
続いて、受信装置について説明する。
【０１２２】
図１１は受信装置の構成を示している。この受信装置１７０１は、アプリケーション受信モジュール１７０２、オリジナルＩＰパケット作成モジュール１７０３、誤り訂正モジュール１７０４、ＩＰ−ＦＥＣパケット処理モジュール１７０５、ＩＰパケット受信モジュール１７０６及び下位レイヤ受信処理モジュール１７０７を有する。
【０１２３】
送信装置からインターネット網、公衆網、ＬＡＮ等を経由して到着した情報は、まず下位レイヤ受信処理モジュール１７０７において処理を施され、そこからＩＰパケットが抽出されてＩＰパケット受信モジュール１７０６に渡される。下位レイヤにおける処理には、下位レイヤにおける誤り訂正／再送およびデータ廃棄等が含まれる。廃棄された場合、それに該当するＩＰパケットが正しく受信されないことになる。
【０１２４】
ＩＰパケット受信モジュール１７０６は、従来の通信処理におけるＩＰレイヤ処理とほとんど同じ処理を行う。すなわちＩＰアドレスのチェック（自分宛かどうか）、長さのチェック等を行って、受信できないＩＰパケットは廃棄する。その後、ＩＰへッダに自分が渡す先のアドレスが書いてあるのでそれをチェックする。そこにもし例えばＴＣＰのようなＩＰレイヤよりも上位レイヤの名前が書いてあると、それはアプリケーション受信モジュール１７０２を指しているので、ＩＰパケットはアプリケーション受信モジュール１７０２に直接渡される。ＩＰへッダにＩＰ−ＦＥＣ処理を示すコードが書かれていた場合、そのＩＰパケットは実はＩＰ−ＦＥＣパケットであることを意昧している。この場合、ＩＰパケット受信モジュール１７０６はＩＰパケットからＩＰ−ＦＥＣヘッダを取り除いたものをＩＰ−ＦＥＣパケット処理モジュール１７０５に渡す。
【０１２５】
ＩＰ−ＦＥＣパケット処理モジュール１７０５には、到着したＩＰ−ＦＥＣパケットのペイロードに対する複数のインタリーブマトリクスが用意されている。ＩＰ−ＦＥＣパケット処理モジュール１７０５は、ＩＰパケット受信モジュール１７０６からのＩＰ−ＦＥＣヘッダの情報と、渡されたＦＥＣヘッダの情報を使って、ＩＰ−ＦＥＣパケットのペイロードを該当するインタリーブマトリクスの所定の位置に書き込む。インタリーブマトリクスは送信装置１６０１において符号化された１つの単位毎に構成される。受信装置１７０１における具体的な手順においては、ＦＥＣヘッダにおいて同じフレームＩＤを有するものは原則として同じインタリーブマトリクスに入れられる。ただし、同じフレームＩＤを持っていても、その中にさらに順序を示す識別子があれば、その識別子別にインタリーブマトリクスを作成する。この識別子は、送信装置１６０１においては、１つのオリジナルＩＰパケットに対して複数の符号化処理を行った場合の識別子を意昧する。
【０１２６】
このような複数のインタリーブマトリクスにおいては、例えばタイマやマトリクスの数等を使って状態の管理をしておく。例えばタイマ切れになる前にデータ部分が全て揃うと、そのインタリーブマトリクスにおいて誤り訂正を行わなくてもよいので、そのデータ部分のみをシーケンス番号の順につなげて、オリジナルＩＰパケット作成モジュール１７０３に送る。そして、残りの冗長部分は廃棄する。この場合は誤り訂正モジュール１７０４は使用しないでその処理をスキップする。
【０１２７】
しかし、もしタイマ切れが発生していてもインタリーブマトリクスのデータ部分が揃っていない場合には、まずそのマトリクスにおいて不足しているＩＰ−ＦＥＣパケットペイロードの個数を数え、その数が、誤り訂正可能な個数の最大値以下であれば、誤り訂正を行うために誤り訂正モジュール１７０４に渡される。万一不足している個数が誤り訂正可能な最大数を越えている場合には、訂正が不可能なので、この時点でマトリクス全体を廃棄してしまう。
【０１２８】
ここで、あるペイロードについて入れるべきインタリーブマトリクスが存在しない場合が２通り考えられる。第１は、そのペイロードはある符号化されたパケットの中で最初に到着したものである場合である。この場合には、新しいインタリーブマトリクスを生成し、そこの適切な場所にそのペイロードを格納する。必要なインタリーブマトリクスのサイズはＦＥＣヘッダの情報から得ることができる。第２は、そのＩＰ−ＦＥＣパケットがあまりにも遅く到着してしまって、該当するインタリーブマトリクスに対する処理が既に終了してしまった場合であり、この場合には、最近使用したフレームＩＤを記憶しておくことによって、そのパケットペイロードを単純に廃棄するか、あるいは、一旦新規の場合と同様にインタリーブマトリクスを作成し、そのマトリクスの中身が時間切れ等で揃わないことから、タイマ切れで廃棄されるようにする。
【０１２９】
次に、誤り訂正モジュール１７０４の処理を図１に示すようにパケットが固定長である場合において説明する。
【０１３０】
誤り訂正は複数のパケットペイロードにまたがって行われ、各ペイロードの先頭からシンボルを数えて行った場合の同じ位置（例えば３番目、１０番目など）のシンボルをパケットのシーケンス番号順に並べ行ったものを符号語としている。ある場所のデータシンボルを図１のようにシンボル１からシンボルｍとし、それらに対するシンドロームを計算する。シンドロームの計算方法は前述の通りであり、データの抜けがある部分は例えばシンボル値をゼロとして計算する。本発明では、この計算で求められるシンドロ−ムを受信側のシンドロームあるいは第２のシンドロームと呼び、一方、冗長部分のシンボルを送信側のシンドロームあるいば第１のシンドロームと呼んでいる。この２つのシンドロームを比較して、その差からデータ部分に対する消失シンボルを復元することができる。
【０１３１】
各シンボルを復元した結果として、データ用パケットのペイロードが復元される。よって、そのデータ用の部分のみをシーケンス番号順につないでオリジナルＩＰパケット作成モジュール１７０３に渡す。冗長部分はここで用済みとなるので廃棄される。
【０１３２】
オリジナルＩＰパケット作成モジュール１７０３は、ＩＰ−ＦＥＣパケット処理モジュール１７０５からの誤りのないデータ列、および誤り訂正モジュール１７０４からの誤り訂正を済ませたデータ列を使って、オリジナルのＩＰパケットを復元する。ここでは同じフレームＩＤの中にさらに順序を示す識別子があるかどうかで処理に違いが生じるので、以下にそれぞれの処理を説明する。
【０１３３】
前述の識別子がない場合には、データ列は先頭がＩＰヘッダとなっているはずなので、そのＩＰヘッダのなかの長さ表示から、データ列の最後にあるパディングの長さを知って、それを切り離す。こうしてオリジナルのＩＰパケットが復元できる。このオリジナルのＩＰパケットはより上位の処理のためにアプリケーション受信モジュール１７０２に渡される。
【０１３４】
識別子がある場合、ＩＰ−ＦＥＣパケット処理モジュール１７０５から、それぞれの識別子とフレームＩＤを教えてもらっておき、そのフレームＩＤに対する全ての識別子のデータ列が到着するまで待機する。全ての識別子のデータ列が揃うと、それを識別子の順につなげる。このつなげたデータ列に対する以降の処理は、前述した識別子のない場合の処理と同一である。
【０１３５】
タイマ等を設けておき、もし所定の時間までに全てのデータ列が揃わない場合は、該当するフレームＩＤに所属する全てのデータ列を廃棄してしまう。また、より積極的な方法として、ＩＰ−ＦＥＣパケット処理モジュール１７０５においてデータが揃わなかったために廃棄されたものがあれば、そのフレームＩＤと識別子をオリジナルＩＰパケット作成モジュール１７０３に通知することによって、廃棄処理が早急に行われ、待機のために必要なメモリバッファ量が削減できる。実際には同じ送信装置から同じ受信装置に対して送られるＩＰパケットがそのルーチング経路を頻繁に変えることはそれほど多くないので、途中で廃棄されない限りにおいては、ＩＰパケットは順序よく到着する。したがって、後者のような積極的な方法を用いた方がメモリの削減の点ではよリ効果的である場合が多い。  最後にアプリケーション受信モジュール１７０２は、ＩＰレイヤより上の全てのレイヤの受信処理を行う。トランスポートレイヤを含む通信処理等もここに含まれる。
【０１３６】
（第２の実施形態）
続いて、第２の実施形態について述べる。
【０１３７】
通信システムにおいては、信頼性のある通信を行う必要のあるアプリケーションが多くあるが、そのための方法として誤り訂正を行う方法と再送制御を行う方法の２つがある。また、これらを組み合わせて効率よく信頼性を確保する方法もある。
【０１３８】
ここでは、第１の実施形態と異なり、単に誤り訂正機能を付加するだけでなく、誤り訂正機能を付加したにも関わらず訂正できなかったパケットに対して、再送制御によって復元を行う方法について示す。
【０１３９】
基本的な手順は以下の通りである。
【０１４０】
（１）送信側から受信側に対して、ｍ個の情報パケットに対してｋ個の冗長パケットを付加して送る。ｋは０以上の整数である。
【０１４１】
（２）受信側でｍ＋ｋ個のパケットのうち、ｋを越える数のパケットが到着しない場合、送信側に対して再送要求を送る。
【０１４２】
（３）送信側は、受信側からの再送要求に応えて、必要な情報を再送する。
【０１４３】
ここで、再送に対しては、ｍ＋ｋ個のパケットを全部送る方法、ｍ個のパケットを全部送る方法、到着しなかったパケット番号を受信側から通知してもらって、その該当番号のパケットのみを再送する方法等がこれまで考えられてきている。しかし、それらの方法よりも伝送量を少なくできる方法として、以下のような方法が可能である。
【０１４４】
（１）は上述と同じ
（２）受信側でｍ＋ｋ個のパケットのうち、ｋを越えるｙ個のパケットが到着しない場合、ｙ−ｋの値をつけて、送信側に再送要求を送る。
【０１４５】
（３）送信側はｙ−ｋ個分の再送用パケットを作成して受信側に送る。
【０１４６】
この方法をとることによって、再送するパケット数をｙ−ｋ個にすることができる。
【０１４７】
上記手順において、（１）では従来の符号化手法を用いることもでき、あるいは本発明による第１の実施形態の方法を用いることも可能である。どちらの場合においても、最初に送付するパケットに含まれる符号語の訂正能力は同じである。  また従来の符号化手法によって送信を行った後に、（２）および（３）の再送処理が入ったことにより本発明によって生成される冗長パケットを送信した場合、受信側は、計算は多少複雑になるが、従来の符号語によるパケットと追加で受信した冗長パケットを用いて訂正処理を行うことが可能である。
【０１４８】
ただし、（１）において冗長パケット数ｋが変動するようなシステムの場合は、最初に送信するパケットについても第１の実施形態の方法を用いた方が良い。というのは、前述したように、従来方式ではｋが変動する時には送信側において多くの生成多項式用の回路、あるいはプログラムコードが必要となってしまうからである。
【０１４９】
さらに問題となるのは（３）である。従来の符号化方法を用いた場合、まず送信側の立場からは、以前に出したｋ次のＧ（Ｘ）とは全く無関係なｙ−ｋ次の多項式による割り算を行わなければならない。ｙ−ｋの値は最大でｍ−ｋまたは２＾ｈ  −１−ｍ−ｋの小さい方の値まで取り得るので、ｍ−ｋ種類、あるいは２＾ｈ  −１−ｍ−ｋ種類の計算回路、あるいはプログラムが必要となってしまう。通常はｍ−ｋの方が小さくなるように設計される。こうして従来の方法では第１の実施形態と同様に非常に大きな規模となってしまう。これに対して本実施形態の符号を用いると、全く同じ手法でｙ−ｋ種類の再送用パケットを容易に作成することが可能である。以下では、これを具体的に説明する。
【０１５０】
まずは第１の実施形態と同様に、式（１８）で表されるＤを送信側から受信側に伝送する。式（１８）には情報シンボルＩがｍシンボルと、冗長シンボルとして式（１７）で表されるｋシンボルのＴ［ｉ］（ｉ＝０〜ｋ−１）が含まれている。
【０１５１】
受信側ではこれに対してシンボル抜けのあるＤ’を受信する。Ｄ’の抜けシンボル数がｋ以下ならば、このまま第１の実施形態の方法によって誤り訂正を行って復元が可能であるが、抜けたシンボルの数がｙ個であったとき（ｍ＋ｋ≧ｙ＞ｋ）、受信側はｙ−ｋシンボル分の再送を送信側に要求する。
【０１５２】
送信側ではこれを受けて、再送のためのパケットを作成する。これまでＴ［０］からＴ［ｋ−１］までを送ったので、その続きのＴ［ｋ］からＴ［ｙ−１］までの送信側のシンドローム値を計算し、今度はそのシンドローム値のみを受信側へ送信する。シンドローム値は式（１７）においてｉの所にｋからｙ−１までの値を順に入れていくことで計算される。
【０１５３】
上記送信／再送するΤ［ｉ］のｉの値については、簡単のために０から順に記述した。が、実際には送出する冗長パケットに含まれるシンボルＴ［ｉ］について、特に順序にこだわらなくともよい。すなわち、最初のｋ個はｉの値がＧＦ（２＾ｈ）上で異なる限りにおいて任意である。また再送時に送るｙ−ｋ個のＴ
［ｉ］についても同様である。ただし、再送の時のｉは最初に送ったｋ個のｉの値とも異なっていなければならない。その理由は以下の通りである。
【０１５４】
受信側では、受信した情報シンボルの数と、重複しない冗長シンボルの数の合計がｍに達すると、誤り訂正処理によって、元の情報を復元することができる。ｙ−ｋ個の冗長シンボルが要求されたときに、明らかに以前に送っていない冗長シンボルを送れば、それらが全て受信側に届いた時には、情報の復元が可能である。
【０１５５】
しかし以前に送付した冗長シンボルと同じものを含めてｙ−ｋ個送った場合、もし受信側で同じ冗長シンボルを複数回数受信することがあったとすると、折角ｙ−ｋ個全てが受信側に正しく届いたとしても、訂正に必要なシンボル数が揃わず、訂正ができないことになってしまう。
【０１５６】
このような状態を防止するために、再送として冗長パケットを送信する場合には、以前送ったものと違う冗長シンボルからなるパケットを送るようにする。
【０１５７】
このようにして、ｙシンボル分の冗長シンボルが受信側に到着すれば、そこで受信側は第１の実施形態と同様に誤り訂正を行って元の情報シンボルを復元することができる。
【０１５８】
上述のバリエーションとして、受信側からの再送要求の際、必要な再送シンボル数ｙ−ｋの他に抜けたシンドロームの識別番号も表示する方法もある。この場合、送信側は抜けなく受信側に到着したシンドロームと新たに作成するシンドロームの合計数がｙ−ｋになるようにして再送することができる。この場合には、一度送信したシンドローム値を記憶しておき、再送の際にその情報を積極的に利用することによって、新しく作成しなければならない再送シンボルの計算数を減らすことができ、効率的である。
【０１５９】
また、別のバリエーションとして、受信側から個数を通知しない方法もある。例えば、
（１）は上述と同じ
（２）受信側でｍ＋ｋ個のパケットのうち、ｋを越えるｙ個のパケットが到着しない場合、ＮＡＣＫ信号のみを返す。
【０１６０】
（３）送信側はあらかじめ決められた数（ｚ個）の再送用パケットを作成して受信側に渡す。
【０１６１】
といった方法がある。この場合、ｚ≧ｙ−ｋであれば、受信側はこれを使って訂正処理を行うことが可能である。この時に不要なｚ−（ｙ−ｋ）個の冗長パケットは、受信側で使用することなく廃棄して構わない。
【０１６２】
一方、もしｚ＜ｙ−ｋであれば、受信側は再びＮＡＣＫ信号を送信側に返し、送信側はさらにｚ個の再送用パケットを送ることになる。
【０１６３】
当然のことながら、再送のｚ個のパケットが廃棄される場合もあり、そのような場合も含めて受信側で訂正可能なパケットが揃うまで、この作業は繰り返される。
【０１６４】
ここで、従来の場合と本実施形態方式の場合の規模を第１の実施形態と同様に比較してみることにする。従来方式の符号を用いた場合、図１２に示すように、最初に次数ｋの割り算回路を必要とし、その後の再送用に次数１から次数ｍ−ｋまでの割り算回路が必要となるので、割り算回路の規模は１つの次数の計算のための回路を１単位として、
ｋ＋１＋２＋…＋（ｍ−ｋ）＝ｋ＋（ｍ−ｋ）（ｍ−ｋ−１）／２  ……（２４）
となる。一方、図１３に示すように、本実施形態の方式においては、最初にｋ個の次数１の割算回路、その後に最大ｍ−ｋ個の次数１の割算回路があればよいので、合計の回路規模はｍで済むことになる。これはソフトウェアのコード量で比べても同様のこととなる。
【０１６５】
このように誤り訂正と再送を組み合わせた方式においても、送信側における情報シンボル部分のみに対してのシンドローム値を計算する方法による符号化を適用することにより、処理のための規模を小さくすることが可能となる。
【０１６６】
（第３の実施形態）
続いて、第３の実施形態として、第１の実施形態の方式を応用したマルチキャスト通信について説明する。
【０１６７】
マルチキャスト通信は一般に１つの送信端末と複数の受信端末からなり、送信端末がマルチキャストアドレス等を使ってデータを送信すると、ネットワークにおいてそのマルチキャストアドレスに従ってそれぞれの受信端末に届けられるようになっている。
【０１６８】
信頼性確保のためのトランスポートレイヤにおける再送制御方式として、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）があるが、これはポイント・ツー・ポイントのプロトコルであってマルチポイントには対応していない。従って、マルチキャスト通信を行う場合は、通常はＴＣＰの代わりにＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）を用いる。
【０１６９】
このような状況で信頼性のある通信を行うために、図１または図２に示したように情報パケットと冗長パケットを送って、受信側で誤り訂正を行う方法が考えられる。上位にＵＤＰを使うことで、本来ならばべストエフォートである通信システムに信頼性を持たせることができる。
【０１７０】
図１４に本実施形態のシステムの概略を示す。送信端末はｍ個の情報パケットにｋ個の冗長パケットを付加して複数の受信端末へ向けて送信する。受信端末では、ｍ＋ｋ個のパケットのうち、ｋ個までの廃棄に対して、誤り訂正符号を用いて復元できる。信頼性の確保の点からはｋをなるべく大きく設定したいが、一方受信端末の能力としては、ｋの設定数に限界があり、またその限界は端末の処理能力に依存するためにまちまちである。マルチキャストの場合、マルチキャスト数の増大に対応するためには、なるべく個々の端末の都合を聞きながら通信しないような方式が望ましいので、通信セッションの開始にあたってｋの値の上限についてのネゴシエーションを行わないようにしたい。
【０１７１】
このようなマルチキャスト方式において、第１の実施形態における符号方式を適用することによって、このネゴシエーションなしに通信を行うことができることを示す。
【０１７２】
最初に送信端末は、これまでの例と同様に式（１８）によって示されるｍシンボルの情報を１シンボルずつ含むｍ個の情報パケットと、ｋ個の冗長シンボルを１つずつ含むｋ個の冗長パケットとを複数の受信端末に向けて送出する。各受信端末では冗長パケットを処理できる最大数ｗが決まっており、ｗ≧ｋであるときは問題なく取り込んで処理ができるが、ｗ＜ｋのときはｗ個の冗長パケットのみを取り込んで残りは捨ててしまう。
【０１７３】
従来の符号化方式を用いた場合、受信側で誤り訂正のために用いられるシンドロームの計算のためには、必ず全ての受信可能なパケットを一度受信してからでないとシンドロームの計算は行えなかった。しかし本実施形態の方式を用いれば、データパケットの他に受信端末にとって処理できる範囲までの冗長パケットを取り込むことによって、送信された冗長パケット数によらず、取り込んだ冗長パケット数までの抜けを訂正することが可能である。
【０１７４】
図１４にはｍ＝３、ｋ＝２の場合について簡単に記している。受信者＃１は全ての情報パケットが誤りなく受信されているので正常受信である。受信者＃２は情報パケットが２個消失しているが、冗長パケットが２個到着しており、しかも端末が２シンボルの訂正能力を持っているので、元の情報パケットを復元することができる。受信者＃３は情報パケットが１個失われており、冗長パケットは２個到着している。この受信者は最大で１シンボルの訂正しか行えないので、冗長パケットのうち１つは無視されて廃棄される。しかし情報パケットの抜けが１個だけなので、元の情報パケットを復元することができる。
【０１７５】
ところが、受信者＃４では情報パケットが２個消失していて、冗長パケットは２個正常に届いたのであるが、端末の能力として最大１シンボルしか訂正できないため、冗長パケットのうちの１つは無視されて廃棄される。従ってこの場合は復元することができない、ということになる。このように本通信システムでは、誤り訂正機能を組み込んだ冗長パケットの配送により、本来ならば受信者＃１のみしか正常に受信できなかったマルチキャスト情報を受信者＃２および＃３でも受信できるようにして通信のスループットを高くすることができる。しかし受信者＃４のように受信できない場合もある。すなわち本システムは不完全ではあるが、マルチキャスト通信の信頼性を上げる効果のあるシステムとなっている。
【０１７６】
このように誤り訂正機能を用いて信頼性のあるマルチキャスト通信を行う場合、本実施形態の送信側のシンドローム値を計算する方式を用いることによって、処理能力の高くない受信端末があるような環境でも、そのための冗長パケット数に関する複雑なネゴシエーション処理を必要とすることなく通信を行うことが可能となる。
【０１７７】
なお受信端末は、以下の様な動作が可能でさえあれば良い。
【０１７８】
・自分の訂正能力を越えた廃棄があった場合には訂正をあきらめる。
【０１７９】
・また、必要数以上の冗長パケットが到着した場合には余分な冗長パケットは無視して取り込まない。
【０１８０】
・それ以外の場合に訂正が必要ならば実行する。
【０１８１】
（第４の実施形態）
最後に第４の実施形態について述べる。ここでは第３の実施形態と違い受信端末が比較的能力が高くて、かつ非常に高い信頼性を必要とするマルチキャスト通信を行う場合を想定する。
【０１８２】
エンド・ツー・エンドでの通信において高い信頼性を確保するためには、誤り訂正機能を持った冗長パケットを情報パケットに続けて送信するばかりでなく、その結果としてうまく到達できたかどうかのフィードバックを受信端末から送信端末に対して返してやる必要がある。具体的にＡＣＫ、ＮＡＣＫと呼ばれる機能がそれである。
【０１８３】
ポイント・ツー・ポイントの通信の場合は、そのようなＡＣΚ／ΝΑＣΚによって単純にパケットの再送を行えばよいが、ポイント・ツー・マルチポイント通信によって、複数の受信端末がある場合、複数端末からのＡＣΚ／ＮＡＣΚに対して送信端末が詳細に対応することは処理能力上困難である。
【０１８４】
そこで、第２の実施形態において用いた手法をここに適用することで、問題の解決を図ることにする。
【０１８５】
（１）送信端末は複数の受信端末に対して、式（１８）に示されているｍシンボルの情報シンボルを１つずつ含むｍ個の情報パケットと、送信側のシンドローム値であるｋ個の冗長シンボルを１個ずつ含むｋ個の冗長パケットとを送信する。
（２）各受信端末では、ｍ＋ｋ個のパケットのうち、消失したパケットの数がｋ以下であれば消失訂正を行って元の情報を復元する。また、消失したパケット数ｙがｋより大きいとき、ＮＡＣＫ信号とともに、ｙ−ｋ個の再送パケットを送信側に対して要求する。
【０１８６】
（３）送信側では、複数の端末からのＮＡＣＫ信号を見て、その中で最も大きな値の再送要求の数にあわせて再送パケットを作成し、それを再送する。
【０１８７】
マルチキャストの場合においても、前述のユニキャストの場合と同様、（１）の段階において、従来の符号化手法を用いることも可能である。
【０１８８】
ただし前述したように、最初に従来の符号化手法によるパケットを送る場合、冗長パケット数ｋは一定であることが望ましい。
【０１８９】
ここの特徴としては、（２）においてＮＡＣＫベースとしたことである。ＡＣＫの場合は、送信端末は受信端末の数や個々の端末の状況を把握していないといけない、という問題点があり、マルチキャスト数の増加に対応できない。ＮＡＣＫベースにすることによって各端末の状況を細かく把握しなくてもマルチキャスト通信が行える。
【０１９０】
またΝΑＣΚベースの中でも再送する情報パケットを指定するような方法であると、ＮＡＣΚ信号毎に再送すべきパケットをチェックして記憶しておく必要があり、送信端末の処理が大きい。本実施形態の方式によると、単にＮＡＣＫ信号の再送パケット要求数の最大を見つけるだけであるので簡単であり、特に最初のΝＡＣＫ信号が到着すれば、もうその時点から再送パケットの作成を開始できるので、効率の良い再送制御が行える。
【０１９１】
この様子を図１５に示す。ここでは簡単のためにｍ＝３、ｋ＝２の場合について記述している。送信者は最初にｍ＋ｋ個のパケットをマルチキャストする。受信者＃１は全ての情報パケットを受信できているので、正常受信である。また、受信者＃２は情報パケットが２個消失しているが、冗長パケットが２個受信されているので、これから情報パケットを正常に復元することができる。これらの受信者は正しい情報を取得できているので、送信側に対して何のアクションも起さない。
【０１９２】
一方受信者＃３は３パケットの情報に対してパケットが２個しか届いておらず、復元のためにはあと１パケット必要なので、ＮＡＣＫ信号（１）  を送信者に返し、その時に１パケットの再送要求を付ける。また、受信者＃４は３パケットの情報に対して僅か１パケットしか受信されておらず、復元にはあと２パケット必要なので、ＮＡＣΚ信号（２）  を送信者に返し、その時に２パケットの再送要求を付ける。送信者はこれらのΝΑＣＫ信号を受け取り、再送要求パケット数の最大のものに合わせて（この場合には２パケットの）冗長パケットを新たに作成し、再送用パケットとして伝送する。
【０１９３】
また、受信者＃５は情報パケットが２パケット到着し、その後に冗長パケットが１つ到着すると、もうその時点で復元処理を開始することができる。そしてその後に到着する２個目の冗長パケットを無視して廃棄して構わない。このように本実施形態の方式を用いると、受信側で復元に必要なパケットが揃った時点で処理を開始でき、処理の高効率化が図られる。
【０１９４】
これが従来の方式であると、情報パケットに消失があったとき、訂正のためのシンドローム計算のためには、一度全ての冗長パケットを受信してからでないと開始しないのが一般的である。このため、全ての冗長パケットが到着するまで処理の開始を待たなくてはならず、効率が良くなかった。また、最後の冗長パケットの遅延が大きかった場合には、その影響はさらに大きくなる。
【０１９５】
また送信側においても処理効率の違いがある。前述したように、このようなシステムの場合に従来の符号形式を用いると、回路規模の増大はもちろんのこと、作成パケット数に応じて利用する回路が異なるため、送信側では複数の到着が予想されるＮＡＣＫ信号が全て到着するのを待たなければならない。そして最大の再送パケット数が決定するまで作成処理を開始することができない。この様子を図１６に示す。
【０１９６】
送信者は例えばタイマ管理によって、受信側からのＮＡＣΚ信号の到着を待つ。いまＮＡＣＫ＃１から＃４が到着し、それぞれ１から３パケットの再送要求が書かれているとする。送信側のプロセスでは、ＮＡＣＫ信号が到着する度に、それらの中で最も大きい再送要求のパケット数を記憶しておく。そして、タイムアウトになると、初めて３個の冗長パケットを作成して再送することになる。
【０１９７】
一方、本実施形態による方式では、１個ずつ冗長パケットの生成回路が異なるので、ＮＡＣＫ信号が到着するとすぐにそれに合わせて再送用の冗長パケットの作成プロセスを開始することができる。例えば図１７において、まずＮＡＣＫ＃１信号が到着し、１パケットの再送要求が書いてあると、１つの再送パケットの作成を開始する。次にＮＡＣＫ＃２に２パケットの再送要求が書いてあると、１つは作成を開始しているので１つ増やして＃２のパケットの作成を開始する。さらにΝΑＣΚ＃３に３パケットの再送要求が書いてあると、これまで２個の再送パケットの作成を開始しているので、新たにまた１個（＃３）のパケットの作成を開始する。その後にＮＡＣＫ＃４が到着して２パケットの再送要求が書いてあるが、既に３個のパケットを作成しているのでこれは無視される。
【０１９８】
これらのＮＡＣＫ信号の到着の合間に作成が完了したパケットから随時送信を行う。タイムアウト時には、実質的に処理が全て終わっているようなイメージとなり、従来の場合と比較して処理時間の短縮化と高効率化が図れる。
【０１９９】
このように、信頼性のあるマルチキャスト通信を行うにあたって、本実施形態の送信側のシンドローム値を用いた符号化方式を利用することによって、マルチキャストの大規模化への対応がより可能となり、また処理の高能率化、回路規模／プログラムコードの縮小化といった効果を得ることができる。
【０２００】
特に数百、数千もの受信者を有する大規模のマルチキャストを行う場合には、図１８に示すように、中継のルータ等において、ＮＡＣＫ信号をマージすることがあり得る。このとき、本発明の方式を使えば、複数の下流からのＮＡＣＫ信号の中で再送要求の最大値をとるだけでマージが済むので、個々に再送したいパケット番号を要求する場合に比較して、はるかに効率の良い伝送が可能となる。
【０２０１】
例えば図１８では１つの送信端末に対して１０の受信端末があって、そのうち８端末からＮＡＣＫ信号が出されている。この信号がそのまま送信者に届くと、送信者は８つのＮＡＣＫ信号を処理しなければならない。しかしながら、途中のルータ１８０１はＮＡＣＫ信号（２）とＮＡＣＫ信号  （１）をマージして、ＮＡＣＫ信号（２）を送信者に送り、ルータ１８０２は３つのＮＡＣＫ信号（１）をマージして、１つのＮＡＣＫ信号（１）を送信者に送る。
【０２０２】
また、ルータ１８０４は２つのＮＡＣＫ信号（２）をマージして１つのＮＡＣＫ信号（２）をルータ１８０３に送り、ルータ１８０３は、ルータ１８０４からの信号とＮＡＣＫ信号（１）をマージして、１つのＮＡＣＫ信号（２）を作成し、送信者に送る。
【０２０３】
ＮＡＣＫ信号のマージ方法は、複数のＮＡＣＫ信号の中で最大の再送要求パケット数のかかれたものを選択する、という単純なものである。このような途中のルータにＮＡＣＫ信号処理の分担を任せる方法を用いることにより、図１８において送信者には僅か３つのＮＡＣＫ信号が届くことになり、送信者の処理負担の軽減が可能となる。
【０２０４】
ここで、１つのバリエーションとして、マルチキャストグループの中で特定の受信者群が異なる特性を有するようなモデルを考える。例えば、ある場所だけ非常にリンクが細くてパケットの通りが悪い、または非常に輻輳の発生しやすい中継ルータがあって、そこだけパケット廃棄率の特性が悪い、または、あるリンクは無線リンクになっていて、ビット誤りによる中継ノ一ドでのパケット廃棄が発生してしまう、等のことが考えられる。また逆に、ある受信端末行きのパケットは専用線にのっていくので、ほとんど落ちることなく良好な特性を示す場合もあり得る。
【０２０５】
このようにマルチキャストにおいて明らかにパケット廃棄特性の異なる受信者群が含まれる場合には、同じマルチキャストグルーブであっても、受信端末あるいは端末群単位に再送処理を別にすることがある。すなわち、最初にｍ個の情報パケットとｋ個の冗長パケットをマルチキャストグループに対して送信するのは同じであるが、その後での再送処理については、パケット廃秦特性の似ているもの同士で小さなマルチキャストの単位を作って、その単位毎に再送処理を行う。マルチキャストは本来受信側の数によらずにできることが重要ではあるが、ある特定の受信者群のみに多くの再送を行う必要がある場合、その再送パケットを全ての受信者に送信するのは、ネットワークの使用効率上、あまり好ましいことではない。従って、再送パケット数については、受信者群単位に別々の個数を割り当てることとする。
【０２０６】
図１９に簡単な例を示す。送信者は５人の受信者に対してマルチキャストを行う。受信者＃１および受信者＃２は無線端末であって、パケットの廃棄率が高い。一方受信者＃３、＃４、＃５は有線端末であって、パケット廃棄はあまり発生しないものとする。送信者はあらかじめ受信者＃１、＃２を第１群、受信者＃３、＃４、＃５を第２群として分けておく。そしてこれらの受信者からのＮＡＣＫ信号について、各々の群のどちらからのＮＡＣＫ信号であるかわかるようにしておく。
【０２０７】
いま、ｍ＝５、ｋ＝２として７個のパケットを送信したとする。最初の送信は、５人の受信者全員に同様に送付する。ここで、受哲者＃１からはＮＡＣＫ信号（３）、受信者＃２からＮＡＣＫ信号（４）、受信者＃３、＃４からはＮＡＣＫ信号なし、受信者＃５からはＮＡＣＫ信号（１）が送信者に届いたものとする。
【０２０８】
送信者は、まず第１群の受信者からのＮＡＣＫ信号を見て、その要求パケット数の最大値である４パケットを新たに生成して、第１群のみを宛先として送信する。一方、第２群の受信者からのＮＡＣＫ信号を見て、要求パケット数が１なので、先ほど第１群に送信した４つの冗長パケットの中から任意の１パケットを選択して、第２群のみに送る。
【０２０９】
このように群を分けたとき、作成しなけばならない冗長パケット数は、群を分けない場合と同様の４である。マージするＮＡＣＫ信号の数も同じ３である。ただしＮＡＣＫ信号のマージ処理が２つに分かれることと、再送する時の送信対象群を複数にする、という部分のみの処理が異なることになる。従って、このような複数の群への再送パケット処理を行った場合においても、本発明の方式を適用すると、送信者の負担が大きくならないことがわかる。
【０２１０】
もし従来の符号化方式によって再送時に冗長パケットを送信するならば、４次の生成多項式によって作成される４つの冗長パケットと、１次の生成多項式によって作成される１つの冗長パケット、というように個別にパケットを作成しなければならず、送信者の処理量が増大することとなる。
【０２１１】
以上述べたように、信頼性のあるマルチキャスト通信を行う場合には、本発明による符号化方式を用いることによって、複数の群に対する個別の再送処理を行なう場合にも、群を分けない場合と同等の処理を行うのみで良く、送信者の負担を増やすことなく実現可能である。
【０２１２】
【発明の効果】
以上述べてきたように、本発明によれば、送信側でのシンドローム値を冗長シンボルとして用いる方式を適用したパケット通信を行うことによって、従来の場合よりも回路規模の削減やより大きなフレキシビリティが得られることになる。具体的には、第１に、誤り訂正技術を適用した通信方式において、送信側と受信側で同じ情報部分のみに対してのシンドローム値を計算し、これを用いた消失誤り訂正を行うことによって、符号化に対して従来よりも回路規模、あるいはコード量を少なくすることができる。
【０２１３】
特に、シンドロームの計算方法として、リード・ソロモン符号の復号法において用いられる方法を利用することによって、訂正能力が最大となる。
【０２１４】
第２に、消失誤り訂正機能と再送制御を組み合わせた通信方式においても、送信側における情報部分のみに対してのシンドローム値を計算する方法による符号化を適用することにより、従来の通常の符号化を行う場合と比べて処理のための規模を小さくすることが可能となる。
【０２１５】
第３に、誤り訂正機能を用いて信頼性のあるマルチキャスト通信を行う場合に、送信側のシンドローム値を計算する方式を用いることによって、処理能力の高くない受信端末があるような環境でも、そのための冗長パケット数に関する複雑なネゴシエーション処理を必要とすることなく通信を行うことが可能となる。
【０２１６】
第４に、消失誤り訂正機能と再送制御とを組み合わせて信頼性のあるマルチキャスト通信を行うにあたって、送信側のシンドローム値を計算する符号化方式を利用することによって、マルチキャストの大規模化への対応を可能とし、また再送処理の高能率化、回路規模／プログラムコードの縮小化といった効果を得ることができる。
【図面の簡単な説明】
【図１】情報パケットに対する冗長パケット作成方法を示す図
【図２】パケットが可変長であることを考慮した場合の情報パケットに対する冗長パケットの作成方法を示す図
【図３】従来の誤り訂正方式における送信側の回路構成の概略図
【図４】本発明に係る実施形態の誤り訂正方式における送信側の回路構成の概略図
【図５】本発明に係るＩＰパケット通信システムのレイヤイメージを示す図
【図６】本発明に係るＩＰパケット通信システムの運用形態を示す図
【図７】図６のＩＰパケット通信システムにおける送信側の動作を示す図
【図８】ＩＰパケット内のＦＥＣヘッダの構成を示す図
【図９】図６のＩＰパケット通信システムにおける受信側の動作を示す図
【図１０】本発明に係る送信装置の構成を示す図
【図１１】本発明に係る受信装置の構成を示す図
【図１２】従来の誤り制御および再送方式における送信側の回路構成の概略図
【図１３】本発明に係る第２の実施形態の誤り制御および再送方式における送信側の回路構成の概略図
【図１４】本発明に係る第３の実施形態の消失誤り訂正を適用したマルチキャスト通信システムを示す図
【図１５】本発明に係る第４の実施形態の消失誤り訂正と再送制御を適用したマルチキャスト通信システムを示す図
【図１６】従来方式における再送処理を示す図
【図１７】本発明に係る第４の実施形態における再送処理を示す図
【図１８】本発明に係る第４の実施形態において、ルータが複数のＮＡＣＫ信号をマージする機能を有する場合を示す図
【図１９】本発明に係る第４の実施形態において、再送パケット送信処理を群単位に行なう場合を示す図
【符号の説明】
１２０１……送信端末
１２０２……受信端末
１２０３……ルータ
１２０４……コードパケット
１２０５……データパケット
１３０１……オリジナルＩＰパケット
１３０２……インタリーブマトリクス
１３０３……ＩＰ−ＦＥＣパケット
１４０１……ＩＰパケットヘッダ
１４０２……ＦＥＣヘッダ
１５０１……オリジナルＩＰパケット
１５０２……インタリーブマトリクス
１５０３……ＩＰ−ＦＥＣパケット
１６０１……送信装置
１６０２……アプリケーシヨン送信モジュール
１６０３……オリジナルＩＰパケット受信モジュール
１６０４……オリジナルＩＰパケット分割モジュール
１６０５……ＦＥＣコード生成モジュール
１６０６……ＩＰ−ＦＥＣ／ＦＥＣヘッダ付与モジュール
１６０７……下位レイヤ送信処理モジュール
１７０１……受信装置
１７０２……アプリケーション受信モジュール
１７０３……オリジナルＩＰパケット作成モジュール
１７０４……誤り訂正モジュール
１７０５……ＩＰ−ＦＥＣパケット処理モジュール
１７０６……ＩＰパケット受信モジュール
１７０７……下位レイヤ受信処理モジュール
１８０１〜１８０４……ルータ
【図１】
0003571918.tif 000008
【図２】
0003571918.tif 000009
【図３】
0003571918.tif 000010
【図４】
0003571918.tif 000011
【図５】
0003571918.tif 000012
【図６】
0003571918.tif 000013
【図７】
0003571918.tif 000014
【図８】
0003571918.tif 000015
【図９】
0003571918.tif 000016
【図１０】
0003571918.tif 000017
【図１１】
0003571918.tif 000018
【図１２】
0003571918.tif 000019
【図１３】
0003571918.tif 000020
【図１４】
0003571918.tif 000021
【図１５】
0003571918.tif 000022
【図１６】
0003571918.tif 000023
【図１７】
0003571918.tif 000024
【図１８】
0003571918.tif 000025
【図１９】
0003571918.tif 000026