(57)【要約】      （修正有）【課題】ネットワークに不要なパリティデータグラムを流さずに配信するデータ転送システム、中継ノード及びデータ転送方法を提供する。【解決手段】ネットワークの上流側に上流ノード１ａが接続され、且つ、ネットワークの下流側に下流ノード１ｂが接続されているデータ転送システムであって、上流ノード１ａは、コンテンツデータグラムを下流ノード１ｂに転送し、コンテンツデータグラムを用いてパリティデータグラムを作成した後にコンテンツデータグラムを消去し、下流ノード１ｂは、コンテンツデータグラムを上流ノード１ａから受信し、受信できなかったコンテンツデータグラムがある場合にはパリティデータグラムを上流ノード１ａから取得し、取得したパリティデータグラムを用いてコンテンツデータグラムを復元して新たなパリティデータグラムを作成し、当該新たなパリティデータグラムを自ノードよりも下流のネットワークへ送信する。【選択図】図２
2016146620.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークの上流側に上流ノードが接続され、且つ、前記ネットワークの下流側に下流ノードが接続されているデータ転送システムであって、
前記上流ノードは、自ノードよりも上流のネットワークから受信したコンテンツデータグラムをコピーして保持するとともに前記下流ノードに直ちに転送し、前記コンテンツデータグラムを用いてパリティデータグラムを作成した後に前記コンテンツデータグラムを消去し、前記下流ノードからのパリティデータグラム送信要求を受けて前記パリティデータグラムを送信し、
前記下流ノードは、前記コンテンツデータグラムを前記上流ノードから受信し、受信できなかったコンテンツデータグラムがある場合にはパリティデータグラム送信要求を前記上流ノードへ送信して前記パリティデータグラムを前記上流ノードから取得し、取得した前記パリティデータグラムを用いて前記コンテンツデータグラムを復元して新たなパリティデータグラムを作成し、自ノードよりも下流のネットワークからのパリティデータグラム送信要求を受けると当該新たなパリティデータグラムを自ノードよりも下流のネットワークへ送信する、
データ転送システム。
【請求項２】
ネットワークの上流側に上流ノードが接続され、且つ、前記ネットワークの下流側に下流ノードが接続されているデータ転送システムにおける前記上流ノードとして機能する中継ノードであって、
自ノードよりも上流のネットワークから受信したコンテンツデータグラムをコピーして保持するとともに前記下流ノードに直ちに転送し、
前記コンテンツデータグラムを用いてパリティデータグラムを作成し、予め定められた時間にわたって前記パリティデータグラムを保持し、
前記コンテンツデータグラムを用いて前記パリティデータグラムを作成した後に前記コンテンツデータグラムを消去し、
前記下流ノードからパリティデータグラム送信要求を受信すると、保持している前記パリティデータグラムを、前記下流ノードに送信する、
を備える中継ノード。
【請求項３】
前記中継ノードは、
リードソロモン符号、ＬＤＰＣ（Ｌｏｗ  Ｄｅｎｓｉｔｙ  Ｐａｒｉｔｙ  Ｃｈｅｃｋ）符号又はＬＤＧＭ（Ｌｏｗ  Ｄｅｎｓｉｔｙ  Ｇｅｎｅｒａｔｏｒ  Ｍａｔｒｉｘ）符号を用いて前記パリティデータグラムを作成し、
前記パリティデータグラム送信要求と共にデータグラム損失の程度を受信すると、保持している前記パリティデータグラムのうちの前記データグラム損失の程度に応じた数のパリティデータグラムを、前記下流ノードに送信する、
請求項２に記載の中継ノード。
【請求項４】
ネットワークの上流側に上流ノードが接続され、且つ、前記ネットワークの下流側に下流ノードが接続されているデータ転送システムにおける前記下流ノードとして機能する中継ノードであって、
前記上流ノードからコンテンツデータグラムを受信すると、受信した前記コンテンツデータグラムをコピーして保持し、自ノードよりも下流のネットワークへ直ちに転送し、
受信できなかったコンテンツデータグラムがあるか否かを判定し、
受信できなかったコンテンツデータグラムがある場合には、前記コンテンツデータグラムのパリティデータグラムの送信を要求するパリティデータグラム送信要求を前記上流ノードへ送信し、
前記上流ノードから前記パリティデータグラムを受信すると、受信した前記パリティデータグラムを用いて前記コンテンツデータグラムを復元して新たなパリティデータグラムを作成し、自ノードよりも下流のネットワークからのパリティデータグラム送信要求を受けると当該新たなパリティデータグラムを自ノードよりも下流のネットワークへ送信する、
を備える中継ノード。
【請求項５】
前記パリティデータグラムは、リードソロモン符号、ＬＤＰＣ（Ｌｏｗ  Ｄｅｎｓｉｔｙ  Ｐａｒｉｔｙ  Ｃｈｅｃｋ）符号又はＬＤＧＭ（Ｌｏｗ  Ｄｅｎｓｉｔｙ  Ｇｅｎｅｒａｔｏｒ  Ｍａｔｒｉｘ）符号を用いて作成されており、
前記中継ノードは、
前記パリティデータグラム送信要求と共にデータグラム損失の程度を前記上流ノードへ送信し、
前記上流ノードから前記データグラム損失の程度に応じた数の前記パリティデータグラムを受信する、
請求項４に記載の中継ノード。
【請求項６】
コンピュータを、請求項２から５のいずれかに記載の中継ノードとして機能させるためのプログラム。
【請求項７】
ネットワークの上流側に上流ノードが接続され、且つ、前記ネットワークの下流側に下流ノードが接続されているデータ転送システムにおけるデータ転送方法であって、
前記上流ノードが、自ノードよりも上流のネットワークから受信したコンテンツデータグラムをコピーして保持するとともに前記下流ノードに直ちに転送し、前記コンテンツデータグラムを用いてパリティデータグラムを作成した後に前記コンテンツデータグラムを消去するコンテンツデータグラム保持手順と、
前記下流ノードは、前記コンテンツデータグラムを前記上流ノードから受信し、受信できなかったコンテンツデータグラムがある場合にはパリティデータグラム送信要求を前記上流ノードへ送信し、前記上流ノードは、前記下流ノードからのパリティデータグラム送信要求を受けて前記パリティデータグラムを送信し、前記下流ノードは、前記パリティデータグラムを前記上流ノードから取得し、取得した前記パリティデータグラムを用いて前記コンテンツデータグラムを復元して新たなパリティデータグラムを作成し、自ノードよりも下流のネットワークからのパリティデータグラム送信要求を受けると当該新たなパリティデータグラムを自ノードよりも下流のネットワークへ送信するパリティデータグラム受信手順と、
を順に有するデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、配信サーバから一つまたは複数の受信装置に映像等のストリームを配信するデータ転送システム、中継ノード及びデータ転送方法に関する。
【背景技術】
【０００２】
最近、インターネットなどのＩＰネットワークを用いて、４Ｋ映像や８Ｋ映像などの大容量コンテンツを地球の裏側にリアルタイムに送ることが行われており、ワールドワイドな映像ストリーム配信が今後益々盛んになると考えられる。しかしながら、インターネットなどのＩＰネットワークでは、時たま発生する輻輳によりパケット損失が発生する。使用するネットワークの状況にも影響されるが、一般的に、コンテンツが大容量になるほど、また、長距離になるほど、パケット損失数は多くなる傾向がある。
【０００３】
このような状況に対して、従来から幾つかの方法が対応策として使われてきた。例えば、Ｅｎｄ−ｔｏ−ｅｎｄのＦＥＣ（Ｆｏｒｗａｒｄ  Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ：前方誤り訂正）を用いた方法がある（非特許文献１参照）。しかし、この方法では事前に測定された最悪の損失率を想定する場合も多く、上述したように、送信されるコンテンツが大容量になるほど、また、長距離になるほど、パケット損失数は多くなる傾向があるため、ＦＥＣのパリティビットを運ぶパケット（以下、パリティパケットと呼ぶ）が多くなり、ネットワーク内の不要な時間帯や場所にも大量のパリティパケットが流れることになる。これにより、ネットワークの利用効率が悪くなるだけでなく、大量のパリティパケットによって更なるパケット損失が引き起こされる場合も生じる。
【０００４】
もう一つの方法として、従来から使われている、損失したパケットを送信サーバから受信装置間に再送する、Ｅｎｄ−ｔｏ−ｅｎｄのＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）による再送がある。しかし、この方法では、再送要求が受信装置から送信サーバに届いてから損失パケットの再送が行われる。上述したように、ワールドワイドな映像ストリーム配信を行うと数万ｋｍなどの長距離伝送になる。このため、伝搬遅延時間が大きくなり、また、再送が何度も行われる場合もあるため、リアルタイムのコンテンツ再生が難しくなる。
【０００５】
そこで、Ｅｎｄ−ｔｏ−ｅｎｄのＴＣＰプロトコルによる再送ではなく、ネットワーク内に一つまたは複数の中継ノードを設けて、送信サーバと中継ノード間、中継ノードと中継ノード間、中継ノードと受信装置間で、ＴＣＰプロトコルによる再送を行う方法が考えられる。
【０００６】
この方法は、一般に、中継ノード数が増えるほど、中継区間内での損失パケット数が少なくなる傾向があり、損失がなかった区間では再送が行われないため、再送による遅延時間を低減できるという利点もある。しかしながら、この方法は、ＴＣＰプロトコルによる再送を行うために、全ての中継ノード内に、一定時間大容量のコンテンツを保持しなければならない、という問題がある。即ち、中継ノード数が増えるほどコンテンツを保持するための総メモリ量が増えるという問題がある。
【０００７】
そこで、コンテンツをＦＥＣブロック単位に管理し、事前に設定した損失までなら復元できるパリティパケットのみを中継ノード内に必要な時間保持することが考えられる。このようにすると、保持する平均データ量を例えば１０分の１などに削減することができる。尚、この方法は、損失を検知すると、その上流の直前のノードにパリティパケットの送信を要求するので、損失を検知した場合にはＦＥＣのみの方法より遅延時間が増加する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１１−１９９６４７号公報
【非特許文献】
【０００９】
【非特許文献１】今井秀樹監修、エレクトロニクスエッセンシャルズシリーズ「誤り訂正符号化技術の要点」、日本工業技術センター、第３章  通信への応用、１．１  ＦＥＣとＡＲＱ〜１．２  通信システムへの適用形態、ｐｐ．４９−５１（１９８６）
【発明の概要】
【発明が解決しようとする課題】
【００１０】
本発明は、少ない中継ノードのメモリ量で配信できる上述の方法、すなわち、コンテンツをＦＥＣブロック単位に管理し、事前に設定した損失までなら復元できる数のパリティデータグラムのみを中継ノード内に必要な時間保持する方法を用いて、ネットワークに不要なパリティデータグラムを流さずに、小さな遅延時間で配信することを目的とする。
【００１１】
尚、ここでいうデータグラムとは、ＩＰパケットを始めとする各種通信プロトコルのパケットやイーサネット（登録商標）フレーム、ＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｔｒａｎｓｆｅｒ  Ｍｏｄｅ）セルやＸ．２５パケット等の何らかの情報を転送するための一塊のビット列を指している。
【課題を解決するための手段】
【００１２】
本発明に係るデータ転送システムは、
ネットワークの上流側に上流ノードが接続され、且つ、前記ネットワークの下流側に下流ノードが接続されているデータ転送システムであって、
前記上流ノードは、自ノードよりも上流のネットワークから受信したコンテンツデータグラムをコピーして保持するとともに前記下流ノードに直ちに転送し、前記コンテンツデータグラムを用いてパリティデータグラムを作成した後に前記コンテンツデータグラムを消去し、前記下流ノードからのパリティデータグラム送信要求を受けて前記パリティデータグラムを送信し、
前記下流ノードは、前記コンテンツデータグラムを前記上流ノードから受信し、受信できなかったコンテンツデータグラムがある場合にはパリティデータグラム送信要求を前記上流ノードへ送信して前記パリティデータグラムを前記上流ノードから取得し、取得した前記パリティデータグラムを用いて前記コンテンツデータグラムを復元して新たなパリティデータグラムを作成し、自ノードよりも下流のネットワークからのパリティデータグラム送信要求を受けると当該新たなパリティデータグラムを自ノードよりも下流のネットワークへ送信する。
【００１３】
本発明に係る中継ノードは、
ネットワークの上流側に上流ノードが接続され、且つ、前記ネットワークの下流側に下流ノードが接続されているデータ転送システムにおける前記上流ノードとして機能する中継ノードであって、
自ノードよりも上流のネットワークから受信したコンテンツデータグラムをコピーして保持するとともに前記下流ノードに直ちに転送し、
前記コンテンツデータグラムを用いてパリティデータグラムを作成し、予め定められた時間にわたって前記パリティデータグラムを保持し、
前記コンテンツデータグラムを用いて前記パリティデータグラムを作成した後に前記コンテンツデータグラムを消去し、
前記下流ノードからパリティデータグラム送信要求を受信すると、保持している前記パリティデータグラムを、前記下流ノードに送信する。
【００１４】
本発明に係る中継ノードは、
リードソロモン符号、ＬＤＰＣ（Ｌｏｗ  Ｄｅｎｓｉｔｙ  Ｐａｒｉｔｙ  Ｃｈｅｃｋ）符号又はＬＤＧＭ（Ｌｏｗ  Ｄｅｎｓｉｔｙ  Ｇｅｎｅｒａｔｏｒ  Ｍａｔｒｉｘ）符号を用いて前記パリティデータグラムを作成し、
前記パリティデータグラム送信要求と共にデータグラム損失の程度を受信すると、保持している前記パリティデータグラムのうちの前記データグラム損失の程度に応じた数のパリティデータグラムを、前記下流ノードに送信してもよい。
【００１５】
本発明に係る中継ノードは、
ネットワークの上流側に上流ノードが接続され、且つ、前記ネットワークの下流側に下流ノードが接続されているデータ転送システムにおける前記下流ノードとして機能する中継ノードであって、
前記上流ノードからコンテンツデータグラムを受信すると、受信した前記コンテンツデータグラムをコピーして保存し、自ノードよりも下流のネットワークへ直ちに転送し、
受信できなかったコンテンツデータグラムがあるか否かを判定し、
受信できなかったコンテンツデータグラムがある場合には、前記コンテンツデータグラムのパリティデータグラムの送信を要求するパリティデータグラム送信要求を前記上流ノードへ送信し、
前記上流ノードから前記パリティデータグラムを受信すると、受信した前記パリティデータグラムを用いて前記コンテンツデータグラムを復元して新たなパリティデータグラムを作成し、自ノードよりも下流のネットワークからのパリティデータグラム送信要求を受けると当該新たなパリティデータグラムを自ノードよりも下流のネットワークへ送信する。
【００１６】
前記パリティデータグラムは、リードソロモン符号、ＬＤＰＣ（Ｌｏｗ  Ｄｅｎｓｉｔｙ  Ｐａｒｉｔｙ  Ｃｈｅｃｋ）符号又はＬＤＧＭ（Ｌｏｗ  Ｄｅｎｓｉｔｙ  Ｇｅｎｅｒａｔｏｒ  Ｍａｔｒｉｘ）符号を用いて作成されており、
本発明に係る中継ノードは、
前記パリティデータグラム送信要求と共にデータグラム損失の程度を前記上流ノードへ送信し、
前記上流ノードから前記データグラム損失の程度に応じた数の前記パリティデータグラムを受信してもよい。
【００１７】
本発明に係るプログラムは、コンピュータを、本発明に係る中継ノードとして機能させるためのプログラムである。
【００１８】
本発明に係るデータ転送方法は、
ネットワークの上流側に上流ノードが接続され、且つ、前記ネットワークの下流側に下流ノードが接続されているデータ転送システムにおけるデータ転送方法であって、
前記上流ノードが、自ノードよりも上流のネットワークから受信したコンテンツデータグラムをコピーして保持するとともに前記下流ノードに直ちに転送し、前記コンテンツデータグラムを用いてパリティデータグラムを作成した後に前記コンテンツデータグラムを消去するコンテンツデータグラム保持手順と、
前記下流ノードは、前記コンテンツデータグラムを前記上流ノードから受信し、受信できなかったコンテンツデータグラムがある場合にはパリティデータグラム送信要求を前記上流ノードへ送信し、前記上流ノードは、前記下流ノードからのパリティデータグラム送信要求を受けて前記パリティデータグラムを送信し、前記下流ノードは、前記パリティデータグラムを前記上流ノードから取得し、取得した前記パリティデータグラムを用いて前記コンテンツデータグラムを復元して新たなパリティデータグラムを作成し、自ノードよりも下流のネットワークからのパリティデータグラム送信要求を受けると当該新たなパリティデータグラムを自ノードよりも下流のネットワークへ送信するパリティデータグラム受信手順と、
を順に有する。
【発明の効果】
【００１９】
本発明によれば、ネットワークに不要なパリティデータグラムを流さずに、小さな遅延時間で配信することができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の実施形態に係る中継ノードが使用されるネットワークの一例。
【図２】本発明の実施形態に係る配信方法の概要説明図（一つのＦＥＣブロックのコ    ンテンツビット列ＣＦの配信についての説明図）。
【図３】本発明の実施形態に係るコンテンツデータの一例。
【図４】本発明の実施形態に係るコンテンツデータグラムの一例。
【図５】本発明の実施形態に係るパリティデータグラムの一例。
【図６】本発明の実施形態に係る中継ノードの動作の一例（一つのＦＥＣブロックのコンテンツビット列ＣＦの配信についての説明図）。
【図７】本発明の実施形態に係る受信装置の動作の一例（一つのＦＥＣブロックのコンテンツビット列ＣＦの配信についての説明図）。
【図８】本発明の実施形態に係る中継ノードの機能ブロック構成の一例。
【図９】本発明の実施形態に係る処理部３０の機能ブロック構成の一例。
【発明を実施するための形態】
【００２１】
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。なお、本発明は、以下に示す実施形態に限定されるものではない。これらの実施の例は例示に過ぎず、本発明は当業者の知識に基づいて種々の変更、改良を施した形態で実施することができる。なお、本明細書及び図面において符号が同じ構成要素は、相互に同一のものを示すものとする。
【００２２】
本実施形態に係る発明は、ネットワークの上流側に上流ノードが接続され、且つ、前記ネットワークの下流側に下流ノードが接続されているデータ転送システムにおいて、できるだけ遅延時間を小さくするために、下流ノードは上流ノードから送られてきたコンテンツデータグラムをコピーして保持するとともに直ちにさらに下流のノードに転送する。自ノード内に保持されたコピーは、一つのＦＥＣブロック分溜まると同じ方法でそれらからパリティデータグラムを作成し、コンテンツデータグラムを直ちに消去する。
もし、下流ノードでコンテンツデータグラムを受信できなかった場合には、直近の上流ノードに向けて“パリティデータグラム送信要求”のデータグラムを送信する。
“パリティデータグラム送信要求”のデータグラムを受信した上流ノードは、自中継ノード内に保持している“パリティデータグラム”をコンテンツデータの宛先に向けて下流ノードに送信する。
【００２３】
［第１の実施の形態］
以下、本発明の第一の実施の形態を説明する。図１は、本発明の機能が内蔵された中継ノード１が使用されるネットワーク０の一例である。配信サーバ２、受信装置３、オペレーション装置４がネットワーク０に繋がっている。ネットワーク０には、データグラムの転送機能を持つ装置として、少なくとも本発明の上流ノードとしての機能（以下、上流ノード機能と呼ぶ。詳しくは後述。）と下流ノードとしての機能（以下、下流ノード機能と呼ぶ。詳しくは後述。）が内蔵された中継ノード１が、１台または複数台配置される。配信サーバ２は、配信サーバ本来の機能の他に、少なくとも上流ノード機能を有する。受信装置３は、受信装置本来の機能の他に、少なくとも下流ノード機能を有する。
【００２４】
もし、ネットワーク０がインターネットやイントラネットなどのＩＰネットワークの場合、ネットワーク０内には、転送機能を持つ装置として、中継ノード１の他に、ルータやＬ３／Ｌ２スイッチと呼ばれる装置などが置かれることもある。
【００２５】
図２は、簡単な配信経路の一例として、配信サーバ２から複数の中継ノード１のうちの中継ノード１ａと中継ノード１ｂを経由して受信装置３に、一つのＦＥＣブロックのコンテンツビット列ＣＦが配信される場合について、各装間の通信、即ち、データグラムのやり取り、および、各装置での主要な処理を時間ｔの経過に沿って記述したものである。以下、順に詳細に説明する。
【００２６】
まず、配信サーバ２は、ペイロード部分を構成し、宛先等のヘッダを付加してデータグラムを作成する。そのために、配信サーバ２は、ペイロード部分を構成する際に、図３に示すように、配信するコンテンツデータＣＤを、ＦＥＣのパリティビット計算に適合するあるビット量毎に区切ってコンテンツビット列ＣＦを作成する。もし、最後に不足する場合はパディング等を行う。配信サーバ２は、さらに、コンテンツビット列ＣＦをデータグラムのペイロード内のビット長に合わせてさらに分割して分割ビット列ＣＢを作成する。
【００２７】
そして、配信サーバ２は、図４に示すように、各分割ビット列ＣＢに、少なくとも、どのＦＥＣブロックに属しているかを表す「ＦＥＣブロック番号」と、ＦＥＣブロック内のどの位置にあるかを表す「ＦＥＣブロック内番号」を付与する。該データグラムの宛先は、ユニキャスト配信、即ち、配信サーバ２から１台の受信装置３に１対１の配信を行う場合には受信装置３のアドレスになり、マルチキャスト配信、即ち、配信サーバ２から複数の受信装置３に１対多の配信を行う場合にはマルチキャストアドレスなどになる。以下、該データグラムを「コンテンツデータグラムＧＣ」と呼ぶことにする。
【００２８】
配信サーバ２は、さらに、上流ノード機能として、ＦＥＣブロックごとのコンテンツビット列ＣＦに対して、予め設定された数のＦＥＣ用パリティビット列ＰＢを作成する。そして、図５に示すように、同様にデータグラムを作成する。すなわち、各パリティビット列ＰＢに、少なくとも、どのＦＥＣブロックのパリティビット列かを表す「ＦＥＣブロック番号」と、何番目に作られたパリティビット列かを表す「パリティビット列番号」を付与する。該データグラムの宛先は、ユニキャスト配信、即ち、配信サーバ２から１台の受信装置３に１対１の配信を行う場合には受信装置３のアドレスになり、マルチキャスト配信、即ち、配信サーバ２から複数の受信装置３に１対多の配信を行う場合にはマルチキャストアドレスなどになる。以下、該データグラムを「パリティデータグラムＧＰ」と呼ぶことにする。ここまでは、従来のＦＥＣ方式の配信サーバの動作と同様である。
【００２９】
従来のＦＥＣ方式では、上記ＦＥＣブロック毎にコンテンツデータグラムＧＣを送信後、続けてパリティデータグラムＧＰを送信するが、本発明の実施形態の配信サーバ２は、パリティデータグラムＧＰの送信要求を受け取らない限りパリティデータグラムＧＰを送信しない。さらに、一つのＦＥＣブロック分のコンテンツデータグラムＧＣを送信すると該データグラムを直ちに消去する。
【００３０】
また、配信サーバ２は、上流ノード機能として、パリティデータグラムＧＰを事前に設定された時間保持する。さらに、パリティデータグラムＧＰを保持している間に、該コンテンツデータグラムＧＣを受信した下流の直近の中継ノード１から、パリティデータグラムＧＰの送信を要求する旨の“パリティデータグラム送信要求”が来た場合には、該当するパリティデータグラムＧＰを送信する。事前に設定された保持時間を経過したパリティデータグラムＧＰは消去される。
【００３１】
図６に、中継ノード１の動作のフローチャートを示す。以下、図２に沿って、中継ノード１の動作の一例を示す。中継ノード１は、上流ノード機能として、さらに上流の中継ノード１または配信サーバ２から送られてきたコンテンツデータグラムＧＣを受信すると、該コンテンツデータグラムＧＣをコピーして保持するとともに、配信遅延時間をできるだけ小さくするために、直ちにコンテンツデータグラムＧＣのヘッダ内の宛先を読み取り、直ちに一つまたは複数の宛先に向けて転送する（Ｓ１０１）。
【００３２】
図２において、配信サーバ２に直近の中継ノード１ａは、配信サーバ２から送信されたコンテンツデータグラムＧＣを受信すると、コンテンツデータグラムＧＣをコピーして保持するとともに、配信遅延時間をできるだけ小さくするために、直ちにコンテンツデータグラムＧＣのヘッダ内の宛先を読み取り、直ちにさらに下流の中継ノード１ｂに転送する（Ｓ１０１）。このとき、コピーされたコンテンツデータグラムＧＣは事前に設定された時間保持される。
【００３３】
中継ノード１ａは、さらに、下流ノード機能として、コンテンツデータグラムＧＣ内に書かれているＦＥＣブロック番号とＦＥＣブロック内番号から、各ＦＥＣブロックにおいて、配信サーバ２と本中継ノード１ａの間のネットワーク経路上での損失等によって受信できなかったコンテンツデータグラムＧＣがあるかどうかチェックする（Ｓ１０２）。
【００３４】
図２において、事前に設定された時間までに該当するＦＥＣブロックのコンテンツデータグラムＧＣを全て受信できた中継ノード１ａは、それぞれのコンテンツデータグラムＧＣから分割ビット列ＣＢを取り出して（Ｓ１０３）元のＦＥＣブロックのコンテンツビット列ＣＦを再構成し（Ｓ１０４）、該コンテンツビット列ＣＦから予め設定された数のパリティビット列ＰＢを作成してそれらからパリティデータグラムＧＰを作成し（Ｓ１０５）、該パリティビット列ＰＢと該コンテンツビット列ＣＦと該コンテンツデータグラムＧＣを直ちに消去する（Ｓ１０６）。また、パリティデータグラムＧＰは予め決められた時間保持され、保持する時間を経過したとき（Ｓ１０９においてＹｅｓ）、該当するパリティデータグラムＧＰは消去される（Ｓ１１０）。尚、事前に設定された時間までに該当するＦＥＣブロックのコンテンツデータグラムＧＣを全て受信できなかった場合の中継ノード１の動作については、以下の中継ノード１ｂのところで説明する。
【００３５】
中継ノード１ａに直近の中継ノード１ｂは、中継ノード１ａから送信されたコンテンツデータグラムＧＣを受信すると、受信したコンテンツデータグラムＧＣをコピーして保持するとともに、配信遅延時間をできるだけ小さくするために、直ちに前記コンテンツデータグラムＧＣのヘッダ内の宛先を読み取り、図２において次の転送先である受信装置３に直ちに転送する（Ｓ１０１）。
【００３６】
中継ノード１ｂは、さらに、下流ノード機能として、以下の動作を行う。即ち、データグラム内に書かれているＦＥＣブロック番号とＦＥＣブロック内番号から、各ＦＥＣブロックにおいて、中継ノード１ａと中継ノード１ｂの間のネットワーク経路上での損失等によって受信できなかったコンテンツデータグラムＧＣがあるかどうかチェックする（Ｓ１０２）。
【００３７】
図２において、事前に設定された時間までに該当するＦＥＣブロックのコンテンツデータグラムＧＣの一部または全てを受信できなかった（Ｓ１０２においてＹｅｓ）中継ノード１ｂは、パリティデータグラムを受信する手順を実行する。すなわち、中継ノード１ｂは、中継ノード１ａに向けて“パリティデータグラム送信要求”のデータグラムを送信する（Ｓ２０１）。このデータグラム中には、少なくとも、該ＦＥＣブロック番号と受信できなかったデータグラムの数が記入されている。
【００３８】
例えば、中継ノード１ｂの受信したコンテンツデータグラムＧＣ＃２に損失があった場合（Ｓ１０２においてＹｅｓ）、中継ノード１ｂは、コンテンツデータグラムＧＣ＃２を復元するためのパリティデータグラムＧＰの送信を要求する旨の“パリティデータグラム送信要求”を、中継ノード１ａへ送信する（Ｓ２０１）。
【００３９】
上記“パリティデータグラム送信要求”のデータグラムを受信した中継ノード１ａは（Ｓ１０７）、上流ノード機能として、該当するＦＥＣブロックの必要な数のパリティデータグラムＧＰを直ちに送信する（Ｓ１０８）。
【００４０】
ここで言う「必要な数」とは、次のものである。ＦＥＣを用いた方法では、一つのＦＥＣブロックで、損失したコンテンツデータグラム数に対応する数のパリティデータグラムＧＰがあれば、それらを用いて該ＦＥＣブロック内の損失したコンテンツビット列ＣＦを復元し、ＦＥＣブロックのコンテンツビット列ＣＦを構成できる。損失したコンテンツデータグラムＧＣの数に対応するパリティデータグラムＧＰの数は、例えば、リードソロモン符号の場合には損失したコンテンツデータグラムＧＣの数と同じであり、また、ＬＤＧＭ（Ｌｏｗ  Ｄｅｎｓｉｔｙ  Ｇｅｎｅｒａｔｏｒ  Ｍａｔｒｉｘ）符号の場合には、例えば、７％のコンテンツデータグラムＧＣの損失に対しておよそ１０％であり、ＦＥＣに使用する符号に応じた数を予め配信サーバ２および各中継ノード１に設定しておく。
【００４１】
さらに、中継ノード１ｂが同一のＦＥＣブロックについて“パリティデータグラム送信要求”のデータグラムを送信するのは１回とは限らず、中継ノード１ａと本中継ノード１ｂの間のネットワーク経路上でのパリティデータグラムの損失により、再度“パリティデータグラム送信要求”のデータグラムを送信する可能性がある。そのような場合、中継ノード１ｂが受信できているパリティデータグラムＧＰと同じものを中継ノード１ａから送信されても、該ＦＥＣブロック内の損失したビット列の復元には役立たないので、“パリティデータグラム送信要求”のデータグラム中に、既に受信しているパリティデータグラムＧＰの番号も記載する。中継ノード１ａは、既に受信しているパリティデータグラムＧＰを避けて、不足している数のパリティデータグラムＧＰを中継ノード１ｂに送信する。
【００４２】
なお、“パリティデータグラム送信要求”のデータグラム中に、中継ノード１ｂが既に受信しているパリティデータグラムＧＰの番号を記載する代わりに、中継ノード１ａと本中継ノード１ｂの間のネットワーク経路上でパリティデータグラムＧＰを損失している可能性はあるが、送信側である中継ノード１ａが該当するＦＥＣブロックの送信したパリティデータグラムＧＰの番号を記録しておき、重複しないように選択して送信する方法もある。
【００４３】
上記パリティデータグラムＧＰを受信した中継ノード１は、上流ノード機能として、受信したパリティデータグラムＧＰをコピーして保持するとともに、配信遅延時間を小さくするために、直ちに、該パリティデータグラムＧＰを、先にコンテンツデータグラムＧＣを送信した一つまたは複数の宛先に向けて転送する（Ｓ２０２）。
【００４４】
図２において、上記パリティデータグラムＧＰを受信した中継ノード１ｂは、上流ノード機能として、受信したパリティデータグラムＧＰをコピーして保持するとともに、配信遅延時間を小さくするために、直ちに、該パリティデータグラムＧＰを、先にコンテンツデータグラムＧＣを送信した受信装置３に向けて転送する（Ｓ２０２）。
【００４５】
中継ノード１ｂは、さらに、下流ノード機能として、データグラム内に書かれているパリティデータグラムＧＰであるというデータグラム種別とＦＥＣブロック番号から、本中継ノード１ａと本中継ノード１ｂの間のネットワーク経路上での損失等によって受信できなかったパリティデータグラムＧＰがあるかチェックする（Ｓ２０３）。
【００４６】
事前に設定された時間までに該当するＦＥＣブロックのパリティ計算に必要な数のパリティデータグラムＧＰを受信できた（Ｓ２０３においてＹｅｓ）中継ノード１ｂは、受信したパリティデータグラムＧＰからそれぞれパリティビット列ＰＢを取り出し（Ｓ２０４）、該当するＦＥＣブロックの既に保持している複数のコンテンツデータグラムＧＣからそれぞれ分割ビット列ＣＢを取り出し（Ｓ２０５）、分割ビット列ＣＢとパリティビット列ＰＢから、損失した分割ビット列ＣＢを復元し（Ｓ２０６）、ＦＥＣブロックのコンテンツビット列ＣＦを再構成する（Ｓ１０４）。
【００４７】
さらに、再構成されたＦＥＣブロックのコンテンツビット列ＣＦから予め設定された数のパリティビット列ＰＢを作成し、図５に示すようなパリティデータグラムＧＰを作成する（Ｓ１０５）。
【００４８】
なお、ＦＥＣブロックのコンテンツビット列ＣＦからパリティビット列ＰＢを作成する方法を配信サーバ２と全ての中継ノード１で同じにして、ＦＥＣブロック番号とパリティビット列番号が同一のペイロードのパリティビット列ＰＢは、そのビット値も同一になるようにする。これにより、中継ノード１は、再構成されたＦＥＣブロックのコンテンツビット列ＣＦから予め設定された数のパリティビット列ＰＢを作成するときに、既に受信しているパリティデータグラムＧＰ内のパリティビット列ＰＢについては、該パリティビット列ＰＢを流用して、作らずに済ますことができる。このため、もし、受信したパリティデータグラムＧＰの数が、再構成されたＦＥＣブロックのコンテンツビット列ＣＦから作成されるパリティビット列ＰＢの予め設定された数と同じかそれより多い場合には、パリティビット列ＰＢを全く作らずに済ますことができる。
【００４９】
該当するＦＥＣブロックのパリティデータグラムＧＰを作成または流用後、不要になったコンテンツビット列ＣＦとコンテンツデータグラムＧＣを消去する（Ｓ１０６）。作成または流用されたパリティデータグラムＧＰは、下流の中継ノード１または受信装置３から送られた“パリティデータグラム送信要求”を受信すると（Ｓ１０７においてＹｅｓ）、必要な数だけ下流の中継ノード１または受信装置３に向けて送信される（Ｓ１０８）。
【００５０】
また、作成または流用されたパリティデータグラムＧＰは、予め定められた保持時間を経過すると、（Ｓ１０９においてＹｅｓ）消去される（Ｓ１１０）。全ての中継ノード１は、上述した上流ノード機能と下流ノード機能を有し、上記と同様の動作を行う。また、配信サーバ２は上流ノード機能を有する。
【００５１】
図７に、受信装置３の動作アルゴリズムを示す。受信装置３は上述した下流ノード機能を有する。図２において、ネットワーク０からコンテンツデータグラムＧＣを受信すると（Ｓ３０１）、受信装置３は、上記中継ノード１の下流ノード機能と同様の動作、即ち、受信できなかったコンテンツデータグラムＧＣがあるかどうかをチェックし（Ｓ３０２）、受信できなかったコンテンツデータグラムＧＣがなかった場合（Ｓ３０２においてＮｏ）には、それぞれのコンテンツデータグラムＧＣから分割ビット列ＣＢを取り出して保持する（Ｓ３０３）。
【００５２】
受信できなかったコンテンツデータグラムＧＣがあった場合（Ｓ３０２においてＹｅｓ）には、上流の直近の中継ノード１ｂに向けて“パリティデータグラム送信要求”を送信する（Ｓ４０１）。これにより、直近の上流の中継ノード１ｂからパリティデータグラムＧＰが送られる。該パリティデータグラムＧＰを受信した受信装置３は、損失したコンテンツデータグラムＧＣを復元するために必要な数のパリティデータグラムＧＰを受信したかどうかをチェックする（Ｓ４０２）。必要な数のパリティデータグラムＧＰを受信できなかった場合（Ｓ４０２においてＮｏ）は、再度、上流の直近の中継ノード１ｂに向けて“パリティデータグラム送信要求”を送信する（Ｓ４０１）。この動作は、受信側が要求した数、または、損失したコンテンツデータグラムＧＣを復元するために必要な数のパリティデータグラムＧＰを受信するまで繰り返される。
【００５３】
必要な数のパリティデータグラムＧＰを受信すると（Ｓ４０２においてＹｅｓ）、受信装置３は、該パリティデータグラムＧＰからパリティビット列ＰＢを取り出し（Ｓ４０３）、コンテンツデータグラムＧＣから分割ビット列ＣＢを取り出し（Ｓ４０４）、取り出した一つまたは複数のパリティビット列ＰＢと分割ビット列ＣＢを用いてパリティ計算を行い、損失した分割ビット列ＣＢを復元する（Ｓ４０５）。
【００５４】
次に、復元された一つまたは複数の分割ビット列ＣＢと、受信装置３内に既に保持している一つまたは複数の分割ビット列ＣＢから、ＦＥＣブロックのコンテンツビット列ＣＦを再構成し（Ｓ３０４）、さらに全ＦＥＣブロックのコンテンツビット列ＣＦからコンテンツデータＣＤを再構成し（Ｓ３０５）、コンテンツを再生する（Ｓ３０６）。
【００５５】
図８は、本データ転送システムの実施形態に係る中継ノードの機能ブロック構成の一例である。中継ノード１は、入力インターフェイス部１０ａ〜１０ｎ、処理部３０、制御部４０、スイッチ部２０、出力インターフェイス部１１ａ〜１１ｎ及び制御部入出力インターフェイス部５０を備える。処理部３０は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）またはＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）またはＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）などのプログラマブル処理回路とメモリで構成される。制御部４０は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などとメモリで構成される。
【００５６】
図８において、中継ノード１Ａと中継ノード１Ｂの間では、中継ノード１Ａは上流ノードとして機能し、中継ノード１Ｂは下流ノードとして機能するが、中継ノード１は下流ノードとしても上流ノードとしても機能しなければならないため上流ノード機能と下流ノード機能の両方を備える。また、処理部３０も上流ノード機能の一部と下流ノード機能の一部を備える。
【００５７】
図９は、処理部３０内の機能ブロック構成の一例である。処理部３０内に、それぞれ後述する、データグラム振り分け手順を行うデータグラム振り分け部３１と、コンテンツデータグラム記憶・チェック手順を行うコンテンツデータグラム記憶・チェック部３２と、パリティデータグラム送信要求手順を行うパリティデータグラム送信要求部３３と、パリティデータグラムチェック手順を行うパリティデータグラム記憶・チェック部３４と、損失コンテンツデータグラム再構成手順を行う損失コンテンツデータグラム再構成部３５と、ＦＥＣブロックのコンテンツビット列再構成手順を行うＦＥＣブロックのコンテンツビット列再構成部３６と、パリティデータグラム作成手順を行うパリティデータグラム作成部３７と、“パリティデータグラム送信要求”受信手順を行う“パリティデータグラム送信要求”受信部３８を備える。
【００５８】
中継ノード１は、ＣＰＵまたはＦＰＧＡまたはＰＬＤなどとメモリを、上記処理部３０内の各機能部として機能させることで実現してもよい。この場合、中継ノード１内のＣＰＵが、記憶部（不図示）に記憶されたコンピュータプログラムを実行することで、各機能部の機能を実現してもよい。
【００５９】
中継ノード１は、次のようなスイッチ機能を有する。入力インターフェイス部１０ａ〜１０ｎは、配信サーバ２または中継装置１または他のルータやネットワークスイッチなどと繋がっており、本配信と無関係なものを含めて送られてきた様々なデータグラムを受信する。入力インターフェイス部１０ａ〜１０ｎは、本発明のデータ転送の対象となる“パリティデータグラム送信要求”以外のデータグラムをスイッチ部２０に転送する。それとともに、本発明のデータ転送の対象となるコンテンツデータグラムＧＣとパリティデータグラムＧＰのコピーと前記“パリティデータグラム送信要求”を処理部３０に転送する。スイッチ部２０は、データグラムを宛先に対応した出力インターフェイス部１１ａ〜１１ｎに転送する。出力インターフェイス部１１ａ〜１１ｎは、データグラムを中継ノード１または受信装置３または他のルータやネットワークスイッチなどに送信する（図６のＳ１０１）。
【００６０】
尚、ノード間の距離が近い等の理由で、パリティデータグラムＧＰの作成完了までに下流の直近の中継ノードから“パリティデータグラム送信要求”が入力インターフェイス部１０ａ〜１０ｎに到着する場合には、“パリティデータグラム送信要求”もスイッチ部２０に転送するとともに、そのコピーを処理部３０に転送する方法もある。
【００６１】
また、中継ノード１は、制御部入出力インターフェイス部５０を介してオペレーション装置４と繋がっている。オペレーション装置４は、各中継ノード１の設定を行ったり、各中継ノード１のオペレーション情報を取得することが可能である。これらの機能を使って、オペレーション装置４は、入力インターフェイス部１０ａ〜１０ｎ内に設けられた検出器１００と処理部３０内のデータグラム振り分け部（図９に示す符号３１）に、特定のデータグラムの特徴を登録する。特定のデータグラムとは、前に述べた本発明のデータ転送の対象となる“パリティデータグラム送信要求”のデータグラム、コンテンツデータグラム、パリティデータグラム、である。また、登録される特徴としては、例えば、宛先アドレス、ポート番号（ＩＰパケットの場合）、ＦＥＣブロック番号などである。
【００６２】
本実施形態に係るデータ転送方法は、データグラム振り分け手順と、コンテンツデータグラム記憶・チェック手順と、パリティデータグラム送信要求手順と、パリティデータグラムチェック手順と、損失コンテンツデータグラム再構成手順と、ＦＥＣブロックのコンテンツビット列再構成手順と、パリティデータグラム作成手順と、“パリティデータグラム送信要求”受信手順と、を有する。
【００６３】
図８の中継ノード１Ａは、予め定められた特定のデータグラムを受信すると、まず、データグラム振り分け手順を行う。
【００６４】
データグラム振り分け手順では、処理部３０に転送されたデータグラムは処理部３０内のデータグラム振り分け部３１で、さらにそれぞれの宛先となる機能ブロックに振り分けられる。
【００６５】
もし、中継ノード１Ａが、更なる上流ノード（中継ノード１または配信サーバ２）から前記特定のデータグラムの一つであるコンテンツデータグラムＧＣを受信すると、データグラム振り分け部３１は該当するデータグラムをコンテンツデータグラム記憶・チェック部３２に転送する。
【００６６】
コンテンツデータグラム記憶・チェック部３２は、転送されたコンテンツデータグラムＧＣに対して、コンテンツデータグラム記憶・チェック手順を行う。即ち、転送されたコンテンツデータグラムＧＣをデータグラム内に記述されたＦＥＣブロック番号毎に記憶する。さらに、ＦＥＣブロック番号毎に、例えば最初のコンテンツデータグラムＧＣの到着から事前に設定された時間の経過後に、受信できなかったコンテンツデータグラムＧＣの有無をチェックする（Ｓ１０２）。
【００６７】
もし、ある場合（Ｓ１０２においてＹｅｓ）には、パリティデータグラム送信要求手順を行う。即ち、パリティデータグラム送信要求部３３に、受信できなかったコンテンツデータグラムＧＣのＦＥＣブロック番号や個数などを通知する。尚、同じ情報がパリティデータグラム記憶・チェック部３４にも通知される。該情報を通知されたパリティデータグラム送信要求部３３は、上流の直近の中継ノード１に向けた“パリティデータグラム送信要求”のデータグラムを作成してスイッチ部２０に転送する。該データグラムは、スイッチ部２０でスイッチされ、出力インターフェイス部１１からネットワークに出力される（Ｓ２０１）。
【００６８】
“パリティデータグラム送信要求”のデータグラムを受信した上流の直近の中継ノード１は、該当するパリティデータグラムＧＰを送信する（詳しくは後述）。これを受信した本中継ノード１は、入力インターフェイス部１０においてコピーを作成して処理部３０内のデータグラム振り分け部３１に転送するとともに、スイッチ部２０に転送する。さらに、データグラム振り分け部３１に転送された該パリティデータグラムＧＰを、前述のデータグラム振り分け手順により、パリティデータグラム記憶・チェック部３４に転送し、パリティデータグラムチェック手順を実行する。一方、スイッチ部２０は、前記パリティデータグラムＧＰを下流の直近の中継ノードに向けて転送する（Ｓ２０２）。
【００６９】
パリティデータグラムチェック手順では、パリティデータグラム記憶・チェック部３４において、事前に設定された一定時間経過後に、必要な数のパリティデータグラムＧＰを受信したかどうかチェックする（Ｓ２０３）。もし、受信していない場合（Ｓ２０３においてＮｏ）には、パリティデータグラム記憶・チェック部３４は、パリティデータグラム送信要求部３３に、受信できなかったコンテンツデータグラムＧＣのＦＥＣブロック番号や受信した個数などを通知して、再度、パリティデータグラム送信要求手順を行う。する。該情報を通知されたパリティデータグラム送信要求部３３は、上流の直近の中継ノード１に向けた“パリティデータグラム送信要求”のデータグラムを作成してスイッチ部２０に転送する。該データグラムは、スイッチ部２０でスイッチされ、出力インターフェイス部１１からネットワークに出力される（Ｓ２０１）。これにより上流の直近の中継ノード１から送られてきたパリティデータグラムＧＰは、上述のデータグラム振り分け手順により、パリティデータグラム記憶・チェック部３４に転送され、再度、必要な数のパリティデータグラムＧＰを受信したかチェックされる（Ｓ２０３）。
【００７０】
もし、必要な数のパリティデータグラムＧＰをパリティデータグラム記憶・チェック部３４が受信した場合（Ｓ２０３においてＹｅｓ）には、パリティデータグラム記憶・チェック部３４は、該当するＦＥＣブロック番号とともにその旨を損失コンテンツデータグラム再構成部３５に通知するとともに、該当するＦＥＣブロック番号の全パリティデータグラムＧＰを損失コンテンツデータグラム再構成部３５に転送する。
【００７１】
この通知とパリティデータグラムＧＰを受信した損失コンテンツデータグラム再構成部３５は、損失コンテンツデータグラム再構成手順を行う。即ち、損失コンテンツデータグラム再構成部３５は、該当するＦＥＣブロック番号のパリティデータグラムＧＰからパリティビット列ＰＢを取り出す（Ｓ２０４）。その後、使用メモリ量を少なくするために、パリティデータグラムＧＰを消去する。
【００７２】
それとともに、損失コンテンツデータグラム再構成部３５は、該当するＦＥＣブロック番号をコンテンツデータグラム記憶・チェック部３２に通知して、コンテンツデータグラム記憶・チェック部３２内にある該当するＦＥＣブロック番号の全てのコンテンツデータグラムＧＣを転送させ、受信したコンテンツデータグラムＧＣから分割ビット列ＣＢを取り出す（Ｓ２０５）。尚、図２に示すように、パリティデータグラム送信要求を送信後、パリティデータグラムが送られて来るまでの間に、受信したコンテンツデータグラムＧＣから分割ビット列ＣＢを取り出してもよい。その後、使用メモリ量を少なくするために、損失コンテンツデータグラム再構成部３５内のコンテンツデータグラムＧＣを消去する。
【００７３】
次に、損失コンテンツデータグラム再構成部３５は、これらの分割ビット列ＣＢとパリティビット列ＰＢからパリティ計算により“損失した分割ビット列ＣＢ”を復元する（Ｓ２０６）。その後、使用メモリ量を少なくするために、パリティビット列ＰＢを消去する。
【００７４】
もし、コンテンツデータグラム記憶・チェック部３２で、受信できなかったコンテンツデータグラムＧＣがない場合（Ｓ１０２においてＮｏ）は、コンテンツデータグラム記憶・チェック手順の続きとして、コンテンツデータグラム記憶・チェック部３２から損失コンテンツデータグラム再構成部３５に、該当するＦＥＣブロック番号の全コンテンツデータグラムＧＣを転送し、損失コンテンツデータグラム再構成部３５は、Ｓ２０５と同様な処理として、全コンテンツデータグラムＧＣから分割ビット列ＣＢを取り出す（Ｓ１０３）。
【００７５】
以上、図６のＳ１０１〜Ｓ１０３及びＳ２０１〜Ｓ２０６の手順を説明した。どちらの場合も、次にＳ１０４のＦＥＣブロックのコンテンツビット列再構成手順を行う。即ち、損失コンテンツデータグラム再構成部３５に保持されている該当するＦＥＣブロックの分割ビット列ＣＢは、ＦＥＣブロックのコンテンツビット列再構成部３６に転送され、コンテンツビット列ＣＦに再構成される（Ｓ１０４）。転送後、損失コンテンツデータグラム再構成部３５に保持されている該当するＦＥＣブロックの分割ビット列ＣＢを、使用メモリ量を少なくするために、消去する。
【００７６】
ＦＥＣブロックのコンテンツビット列再構成部３６で再構成されたコンテンツビット列ＣＦは、パリティデータグラム作成部３７に転送される。パリティデータグラム作成部３７は、パリティデータグラム作成手順を行う。即ち、パリティデータグラム作成部３７は、パリティビット列ＰＢを作成し、パリティビット列ＰＢからパリティデータグラムＧＰを作成する（Ｓ１０５）。次に、その元になったパリティビット列ＰＢとコンテンツビット列ＣＦとコンテンツデータグラムＧＣを消去する（Ｓ１０６）。作成されたパリティデータグラムＧＰは予め設定された時間保持される。
【００７７】
もし、下流の直近の中継ノード１または受信装置３から“パリティデータグラム送信要求”のデータグラムが送られて来ると、本中継ノード１は“パリティデータグラム送信要求”受信手順を行う。即ち、入力インターフェイス部１０は、“パリティデータグラム送信要求”を受信すると、検出器１００に予め指定された特徴と合致するため、該データグラムを処理部３０に転送し、これにより“パリティデータグラム送信要求”がデータグラム振り分け部３１に入力される。該データグラムは、データグラム振り分け部３１に予め指定された特徴に合致するため、“パリティデータグラム送信要求”受信部３８に転送される。これにより、“パリティデータグラム送信要求”受信部３８は、“パリティデータグラム送信要求”のデータグラムを受信したので（Ｓ１０７においてＹｅｓ）、ＦＥＣブロック番号をパリティデータグラム作成部３７に通知する。すると、該当するＦＥＣブロック番号のパリティデータグラムＧＰがパリティデータグラム作成部３７から下流の直近の中継ノード１または受信装置３に向けて送信される（Ｓ１０８）。
【００７８】
もし、“パリティデータグラム送信要求”受信部３８が“パリティデータグラム送信要求”のデータグラムを受信せず（Ｓ１０７においてＮｏ）、予め設定された保持時間を経過した場合（Ｓ１０９においてＹｅｓ）には、パリティデータグラム作成部３７に保持されているパリティデータグラムＧＰは消去される（Ｓ１１０）。経過しない場合（Ｓ１０９においてＮｏ）には、“パリティデータグラム送信要求”を受信したかどうかの判断（Ｓ１０７）に戻る。
【００７９】
図８において、中継ノード１Ａから中継ノード１Ｂに送信するパリティデータグラムは、事前の設定により、中継ノード１Ａで作成された全ての損失データグラムに対応するものであってもよいし、中継ノード１Ｂで受信されたデータグラム損失数に応じた数であってもよい。データグラム損失数に応じた数にすることで、中継ノード１Ａと中継ノード１Ｂの区間での復元に必要なだけのパリティデータグラムを送信することができる。
【００８０】
中継ノード１Ｂは、下流ノードとして機能する一方で上流ノードとしても機能する。即ち、中継ノード１Ｂは、受信したデータグラムのビット列から、事前に設定された数のパリティデータグラムを作成し、さらに下流の直近の中継ノード１（不図示）からのパリティデータグラム送信要求に備える。尚、この場合、上流の中継ノード１Ａから送られてきたパリティデータグラムはそのまま使えるため、前記下流の直近の中継ノード１に予め設定されたパリティデータグラム数より多い場合には必要数を残して消去し、不足する場合には必要数を追加で作成して、前記下流の直近の中継ノード１からのパリティデータグラム送信要求に備えることもできる。
【００８１】
上述のように、ネットワーク０内に設けられた一つまたは複数の中継ノード１で、事前に指定されたコンテンツのデータグラムを受信すると、中継ノード１Ａ内でＦＥＣのパリティビットを計算して保持し、直近の下流の中継ノード１Ｂでデータグラム損失を検出した場合には、その中継ノード１Ｂの直近の上流の中継ノードである中継ノード１Ａにパリティビットの送信を要求し、要求を受信した中継ノード１Ａは保持しているパリティビットのデータグラムを中継ノード１Ｂに送信し、該データグラムを受信した中継ノード１Ｂは該パリティビットを使って損失したデータグラムを復元し、これら一連の動作を配信サーバ２と各中継ノード１と受信装置３のそれぞれの間で行う。これにより、復元可能な範囲のデータグラム損失であれば、受信装置３で損失の無いコンテンツを再生することができる。
【００８２】
以上のことから、ネットワーク０内の不要なところに大量のパリティデータグラムが流れることは無くなる。これにより、ネットワークの利用効率が改善されるだけでなく、大量のパリティデータグラムによって更なるデータグラム損失が引き起こされるということも改善される。また、データグラムを再送するのではなく、パリティビットを再送するため、少ない中継ノードのメモリ量で配信することができる。
【００８３】
［第２の実施の形態］
図１及び図２及び図９を参照しながら、第２の実施の形態について説明する。本実施形態では、パリティデータグラム送信要求手順及びパリティデータグラム作成手順における以下の動作を除いて、第１の実施の形態と同じである。
【００８４】
コンテンツデータグラムＧＣの損失を検出した中継ノード１Ｂの処理部３０内のコンテンツデータグラム記憶・チェック部３２は、パリティデータグラム送信要求部３３に通知する。パリティデータグラム送信要求部３３は、その中継ノード１Ｂの上流の直近の中継ノード１Ａに“パリティデータグラム送信要求”を送信する際に、データグラム損失の程度を埋め込む。データグラム損失の程度は、例えば、損失した分割ビット列ＣＢの数や損失率などのデータグラム損失の程度を示す数値である。「損失率」は、例えば、受信した分割ビット列ＣＢに対する損失した分割ビット列ＣＢの割合である。
【００８５】
“パリティデータグラム送信要求”を受信した中継ノード１Ａの処理部３０内の“パリティデータグラム送信要求”受信部３８は、パリティデータグラム作成部３７に通知する。この時、“パリティデータグラム送信要求”受信部３８は、該数値によって表わされるデータグラム損失の程度に応じて、送信するパリティデータグラムの数またはパリティビットの量を調節して通知する。例えば、予め設定された計算ルールや対応表などに従って送信するパリティデータグラム数を決定して通知する。
【００８６】
以上説明したように、データグラム損失を検出した中継ノード１Ｂは、その中継ノードの直近の上流の中継ノード１Ａにパリティデータグラムの送信を要求する際に、データグラム損失の程度を何らかの数値として埋め込み、パリティデータグラムの送信を要求された中継ノード１Ａは、該数値によって表わされるデータグラム損失の程度に応じて、送信するパリティデータグラムの数またはパリティビットの量を調節することを行う。
【００８７】
これにより、Ｅｎｄ−ｔｏ−ｅｎｄでＦＥＣを行う場合に必要となる多量のＦＥＣのパリティデータグラムを送らずに済み、必要な区間でデータグラム損失に応じた数のパリティデータグラムを送ることができるため、ネットワークにかける負荷を大きく低減できる。また、中継ノード１Ａ内に保持するパリティデータグラム数は、通常、コンテンツデータグラム数より少ないため、中継ノード１Ａ内に用意するメモリ量を少なくできる。
【００８８】
［第３の実施の形態］
第３の実施の形態では、パリティビット列ＰＢを計算する誤り訂正符号としてリードソロモン（Ｒｅｅｄ−Ｓｏｌｏｍｏｎ）符号を使用することを除いて、第１および第２の実施の形態と同じである。
【００８９】
コンテンツデータグラムＧＣの損失を検出した中継ノード１Ｂの処理部３０内のコンテンツデータグラム記憶・チェック部３２は、パリティデータグラム送信要求部３３に通知する。パリティデータグラム送信要求部３３は、その中継ノード１Ｂの上流の直近の中継ノード１Ａに“パリティデータグラム送信要求”を送信する際に、第２の実施の形態で説明したように、データグラム損失の程度を、例えば、データグラム損失数Ｎとして埋め込む。
【００９０】
これを受信した中継ノード１Ａの処理部３０内の“パリティデータグラム送信要求”受信部３８は、“パリティデータグラム送信要求”のデータグラムの中からデータグラム損失数Ｎを読み出してパリティデータグラム作成部３７に通知する。パリティデータグラム作成部３７は、保持していたリードソロモン符号のパリティデータグラムＧＰの中からＮ個を取り出してスイッチ部２０に転送する。これらは、スイッチ部２０でスイッチされ、出力インターフェイス部１１から中継ノード１Ｂに向けて送信される。
【００９１】
ＦＥＣのパリティビットとしてリードソロモン符号を使用した場合、中継ノード１Ｂの処理部３０内の損失コンテンツデータグラム再構成部３５は、損失したＮ個に等しい数のパリティデータグラムを得られれば、“損失した分割ビット列ＣＢ”を復元できる。
【００９２】
以上のように、各中継ノード１間には復元に最低限必要な数のパリティデータグラムしか送信されず、従来のＦＥＣ方式のような過剰なパリティデータグラムが転送されることはない。
【００９３】
例えば、全ての中継ノード間のデータグラム損失がコンテンツデータグラム２４８個に対して８個以下である長距離の高速伝送路を使用してコンテンツを転送する場合、２４８個のデータグラム内のコンテンツデータに対して、リードソロモン符号を用いたＦＥＣのパリティデータグラム８個を作成することにすると、中継ノード間のデータグラム損失がコンテンツデータグラム２４８個に対して８個以下であるから、最大８個のパリティデータグラム内のＦＥＣのパリティビットを用いて必ず１００％のコンテンツデータ復元を行うことができる。
【００９４】
このように、中継ノード１間のデータグラム損失を検出した中継ノード１Ｂからの“パリティデータグラム送信要求”に備えて、本実施形態では、中継ノード１Ａの処理部３０内のメモリ（不図示）に保持するパリティデータグラムは８個である。ＴＣＰを用いた場合との比較はウインドーサイズ等が影響するため難しいが、対応するところを考えると、どのコンテンツデータグラムが損失するか不明なため全てのコンテンツデータグラム、即ち、２４８個のデータグラムを中継ノード１Ａの処理部３０内のメモリ（不図示）に保持する必要がある。ネットワーク内で多数のコンテンツ配信が行われる場合、ＴＣＰの代わりに本実施形態を用いると、この違いはさらに大きくなる。
【００９５】
［第４の実施の形態］
第４の実施の形態では、パリティビット列ＰＢを計算する誤り訂正符号としてＬｏｗ  Ｄｅｎｓｉｔｙ  Ｐａｒｉｔｙ  Ｃｈｅｃｋ符号（以下、ＬＤＰＣ符号）、または、その一種であるＬｏｗ  Ｄｅｎｓｉｔｙ  Ｇｅｎｅｒａｔｏｒ  Ｍａｔｒｉｘ符号（以下、ＬＤＧＭ符号）を使用することを除いて、第１および第２の実施の形態と同じである。
【００９６】
コンテンツデータグラムＧＣの損失を検出した中継ノード１Ｂの処理部３０内のコンテンツデータグラム記憶・チェック部３２は、パリティデータグラム送信要求部３３に通知する。パリティデータグラム送信要求部３３は、その中継ノード１Ｂの上流の直近の中継ノード１Ａに“パリティデータグラム送信要求”を送信する際に、第２の実施の形態で説明したように、データグラム損失の程度を、例えば、データグラム損失率Ｒとして埋め込む。
【００９７】
“パリティデータグラム送信要求”を受信した中継ノード１Ａの処理部３０内の“パリティデータグラム送信要求”受信部３８は、“パリティデータグラム送信要求”のデータグラムの中からデータグラム損失率Ｒを読み出してパリティデータグラム作成部３７に通知する。パリティデータグラム作成部３７は、データグラムの到着と同時に計算を開始して保持していたＬＤＰＣ符号またはＬＤＧＭ符号のパリティデータグラムＧＰの中から、データグラム損失率Ｒに対応するＭ個を取り出してスイッチ部２０に転送する。これらは、スイッチ部２０でスイッチされ、出力インターフェイス部１１から中継ノード１Ｂに送信される。
【００９８】
ＦＥＣのパリティビットとしてＬＤＧＭ符号を使用した場合、諸条件により変わるため一意には言えないが、例えば、データグラム損失率Ｒが７％だった場合、送信したデータグラム数の１０％に相当する数のパリティデータグラムを得られれば、中継ノード１Ｂの処理部３０内の損失コンテンツデータグラム再構成部３５は、“損失した分割ビット列ＣＢ”を１００％に近い確率で復元できる。
【００９９】
このように、各中継ノード１間には復元に最低限必要な数のパリティデータグラムしか送信されず、従来のＦＥＣ方式のような過剰なパリティデータグラムが転送されることはない。
【０１００】
また、各中継ノード１は、送信したコンテンツデータグラムＧＣをそれぞれ一定時間保持するのではなく、予め設定された数のパリティデータグラムのみを処理部３０内のメモリ上に保持するので、ＴＣＰの場合に比べて、使用するメモリ量を小さくすることができる。
【０１０１】
全ての実施形態例において、各中継ノード１内では、受信した一つのＦＥＣブロックのコンテンツデータグラムＧＣを不要になり次第削除するため、一つのＦＥＣブロックの各コンテンツデータグラムＧＣは処理部３０内のメモリ上に少しずつ時間をずらして短時間保持されることになる。このため、実際に使用するメモリ量は「一つのＦＥＣブロックのコンテンツデータグラムＧＣを保持するメモリ量」×「一つのＦＥＣブロックのコンテンツデータグラムＧＣ数」より小さくすることができ、処理部３０内のメモリの有効利用を図ることができる。
【０１０２】
本発明は、今後益々行われると考えられる大容量コンテンツの地球の裏側などの遠隔地へのリアルタイム配信または準リアルタイム配信などにおいて、現在行われている配信サーバと受信装置間のＥｎｄ−ｔｏ−ｅｎｄのＦＥＣによる転送では避けられない、また、批判の多い、不要な大量のＦＥＣパケット転送によって経路となるネットワークに余計な負荷をかける問題を解決することができる。
【符号の説明】
【０１０３】
０：ネットワーク
１：中継ノード
２：配信サーバ
３：受信装置
４：オペレーション装置
１０：入力インターフェイス部
１１：出力インターフェイス部
２０：スイッチ部
３０：処理部
３１：データグラム振り分け部
３２：コンテンツデータグラム記憶・チェック部
３３：パリティデータグラム送信要求部
３４：パリティデータグラム記憶・チェック部
３５：損失コンテンツデータグラム再構成部
３６：ＦＥＣブロックのコンテンツビット列再構成部
３７：パリティデータグラム作成部
３８：“パリティデータグラム送信要求”受信部
４０：制御部
５０：制御部入出力インターフェイス部
１００：検出器
【図１】
2016146620.tif 000003
【図２】
2016146620.tif 000004
【図３】
2016146620.tif 000005
【図４】
2016146620.tif 000006
【図５】
2016146620.tif 000007
【図６】
2016146620.tif 000008
【図７】
2016146620.tif 000009
【図８】
2016146620.tif 000010
【図９】
2016146620.tif 000011