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