(57)【特許請求の範囲】
【請求項１】
データパケットおよび誤り訂正用のパケットを含んでなるブロックを構成するいずれかのパケットを受信するパケット受信部と、
前記パケット受信部により受信したブロックの先頭から現在の受信パケットまでのパケットロスを検出するパケットロス検出部と、
前記パケット受信部により受信されたパケットを所定時間にわたって遅延させた上で転送するパケット転送部と、
前記パケットロス検出部により検出されたパケットロスが、前記誤り訂正用のパケットにより誤り訂正可能なパケット数よりも小さい値であって前記パケットの再送に要する再送所要時間が大きくなるほど値が小さく設定される閾値よりも大きい場合に、前記パケットの送信元の装置へ再送要求を送信する再送要求送信部と
を有することを特徴とするデータ転送装置。
【請求項２】
前記再送要求送信部は、
前記パケットロス検出部により検出されたパケットロスが、前記誤り訂正用のパケットにより誤り訂正可能なパケット数から前記再送所要時間を前記パケット転送部によるパケットの転送間隔で除した値を減じることにより得られる閾値よりも大きい場合に、前記パケットの送信元の装置へ再送要求を送信することを特徴とする請求項１に記載のデータ転送装置。
【請求項３】
前記パケット受信部により前記誤り訂正用のパケットとして受信された誤り訂正用パケットを用いて、同一のブロック内で前記パケットロス検出部により検出されたパケットロスを訂正する誤り訂正部をさらに有し、
前記パケット転送部は、
同一のブロックのうち前記パケット受信部により最終に受信されたパケットの後に続けて前記誤り訂正部により訂正されたパケットを転送する請求項１または２に記載のデータ転送装置。
【請求項４】
第１の装置により送信されるパケットを第２の装置が受信し、第２の装置が受信したパケットを第３の装置へ転送するデータ転送システムに用いるデータ転送方法であって、
前記第２の装置が、
前記第１の装置からデータパケットおよび誤り訂正用のパケットを含んでなるブロックを構成するいずれかのパケットを受信するパケット受信工程と、
前記パケット受信工程により受信したブロックの先頭から現在の受信パケットまでのパケットロスを検出するパケットロス検出工程と、
前記パケット受信工程により受信されたパケットを所定時間にわたって遅延させた上で前記第３の装置へ転送するパケット転送工程と、
前記パケットロス検出工程により検出されたパケットロスが、前記誤り訂正用のパケットにより誤り訂正可能なパケット数よりも小さい値であって前記パケットの再送に要する再送所要時間が大きくなるほど値が小さく設定される閾値よりも大きい場合に、前記第１の装置へ再送要求を送信する再送要求送信工程と
を含んだことを特徴とするデータ転送方法。
【請求項５】
コンピュータに、
データパケットおよび誤り訂正用のパケットを含んでなるブロックを構成するいずれかのパケットを受信するパケット受信手順と、
前記パケット受信手順により受信したブロックの先頭から現在の受信パケットまでのパケットロスを検出するパケットロス検出手順と、
前記パケット受信手順により受信されたパケットを所定時間にわたって遅延させた上で転送するパケット転送手順と、
前記パケットロス検出手順により検出されたパケットロスが、前記誤り訂正用のパケットにより誤り訂正可能なパケット数よりも小さい値であって前記パケットの再送に要する再送所要時間が大きくなるほど値が小さく設定される閾値よりも大きい場合に、前記パケットの送信元の装置へ再送要求を送信する再送要求送信手順と
を実行させることを特徴とするデータ転送プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送装置、データ転送方法及びデータ転送プログラムに関する。
【背景技術】
【０００２】
ＩＰ（Internet  Protocol）網におけるパケット欠落のエラー訂正方法の一例として、ＦＥＣ（Forward  Error  Correction）が知られている。このＦＥＣは、送信時に冗長なデータ（data）を付加した上で送信することにより、受信側で未到着となったデータを冗長なデータから復元する技術である。
【０００３】
例えば、上流側の装置から下流側の装置へデータを順次受け渡すリレー（relay）転送を一定のビットレート（bit  rate）で行う場合には、下流側の装置でエラーが増大するのを防ぐことが求められる。すなわち、上流側の装置でのパケット欠落を訂正せずに下流側の装置へ転送すると、下流側の装置ではそれまでに発生したエラーが累積する結果、エラーの増大を招く。このため、上流側の装置で複数のパケットごとにＦＥＣパケットを付加した上で下流側の装置へ送信し、下流側の装置でＦＥＣパケットを用いてデータを訂正しつつ更なる下流側の装置へ転送する。これにより、下流側の装置でのエラーの増大を防ぐ。
【０００４】
かかるＦＥＣを用いてデータ転送を行う技術として、パケットの欠落、いわゆるエラーをＦＥＣにより訂正しながらリレー転送する場合に、所定値（Ｔ−Ｋ・τ）だけ遅延させてデータを転送することにより転送レートのばらつきを抑制する技術が提案されている。ここで、τは、パケットの転送間隔を指す。また、Ｋは、パケットロス数を指す。また、Ｔは、ＦＥＣパケットＦにより復元可能なパケット数Ｍと、パケットの転送間隔τとを乗じたＭ・τよりも大きな固定値であり、一例として、Ｍ・τ＋αを採用する場合を想定する。なお、αは、伝送により遅延する伝送遅延時間を指し、一例として、ゼロに近いプラスの値が与えられる。
【０００５】
図７は、従来技術に係るデータ伝送の一例を示す図である。この図７の例では、１ブロック内のパケット数を６つとし、装置Ａ、装置Ｂ、装置Ｃ、装置Ｄの順にデータが転送される場合を想定する。図７に示す符号１〜符号７は、伝送対象とするデータが分割されたデータパケットを示す。また、図７に示す符号７０Ａ〜符号７０Ｄは、データパケット１〜データパケット５の５つのパケットと、ＦＥＣパケットＦとを合わせた６つのパケットを含むブロックを示す。なお、図７に示す例では、パケットの転送間隔をτとし、転送遅延をＴ−Ｋ・τとし、ＦＥＣパケットＦにより復元可能なパケット数Ｍを１とし、Ｔ＝Ｍ・τ＋αであるものとしてデータ伝送がなされるものとする。
【０００６】
図７に示すように、装置Ａは、データパケット１を受信する。この場合には、パケットロス数Ｋ＝０となる。このため、装置Ａは、τ＋α（＝１・τ＋α−０・τ）だけ遅延させた上でデータパケット１を装置Ｂへ送信する。続いて、装置Ａは、データパケット２をとばしてデータパケット３を受信する。この場合には、データパケット２がロスしているので、パケットロス数Ｋ＝１となる。このため、装置Ａは、α（＝１・τ＋α−１・τ）だけ遅延させた上でデータパケット３を装置Ｂへ送信する。同様にして、装置Ａは、データパケット４、データパケット５およびＦＥＣパケットＦをαだけ遅延させて装置Ｂへ転送する。その後、装置Ａは、ＦＥＣパケットＦを用いて、ブロック７０Ａのうち欠落したデータパケット２を復元し、復元したデータパケット２を装置Ｂへ送信する。
【０００７】
また、装置Ｂは、データパケット１、データパケット３、データパケット４、データパケット５、ＦＥＣパケットＦ、データパケット２の順にブロック７０Ｂに含まれる各パケットを正常に受信する。このため、装置Ｂは、各パケットをτ＋α遅延させた上で装置Ｃへ送信する。また、装置Ｃでは、ブロック７０Ｃに含まれるパケットのうち、データパケット４を除くパケットを正常に受信する。つまり、装置Ｃでは、装置Ｂから３番目に送信されたデータパケット４だけが欠落する。このため、装置Ｃは、正常に受信したパケットを装置Ｄへ送信した後にＦＥＣパケットＦを用いてデータパケット４を復元し、データパケット４を装置Ｄへ送信する。また、装置Ｄでは、データパケット１、データパケット３、データパケット５、ＦＥＣパケットＦ、データパケット２、データパケット４の順にブロック７０Ｄに含まれる各パケットを正常に受信する。
【０００８】
かかるデータ転送により、一方の装置から他方の装置へ転送されるブロックのうち一部のパケットが他のパケットに比べて遅くれて到着したり、また、パケットの受信間隔が密になりすぎたりというように転送レートにばらつきが発生するのを抑制する。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００５−１２７５３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、上記の従来技術では、パケットロス数が誤り訂正能力を超える場合に、パケットの転送を遅延させる所定値、すなわちＴ−Ｋ・τがマイナスの値となるので、この式での転送自体が成り立たず、転送レートにばらつきが生じるという問題がある。
【００１１】
また、上流側の装置へ再送要求を行って必要なデータを取得した上で下流側の装置へ転送する場合には、パケットの再送に要する再送所要時間が長くなるほど、転送遅延が増大する結果、転送レートのばらつきも大きくなる。
【００１２】
これを図８を用いて説明する。図８は、従来技術に係るデータ転送の一例を示す図である。この図８に示す例では、１ブロック内のパケット数を６つとし、装置Ａ、装置Ｂ、装置Ｃ、装置Ｄの順にデータが転送される場合を想定する。図８に示す符号１〜符号７は、伝送対象とするデータが分割されたデータパケットを示す。また、図８に示す符号８０Ａ〜符号８０Ｄは、データパケット１〜データパケット５の５つのパケットと、ＦＥＣパケットＦとを合わせた６つのパケットを含むブロックを示す。なお、図８に示す例では、パケットの転送間隔をτとし、転送遅延をＴ−Ｋ・τとし、ＦＥＣパケットＦにより復元可能なパケット数Ｍを２とし、Ｔ＝Ｍ・τ＋αであるものとしてデータ伝送がなされるものとする。
【００１３】
図８に示す例では、装置Ｃが受信したパケットを装置Ｄへ送信する場合に転送レートのばらつきが生じる。これを説明すると、図８に示すように、装置Ｃは、データパケット１を受信する。この場合には、パケットロス数Ｋ＝０となる。このため、装置Ｃは、τ＋α（＝２・τ＋α−０・τ）だけ遅延させた上でデータパケット１を装置Ｄへ送信する。続いて、装置Ｃは、データパケット３およびデータパケット４をとばしてデータパケット５を受信する。この場合には、データパケット３およびデータパケット４がロスしているので、パケットロス数Ｋ＝２となる。このため、装置Ｃは、α（＝２・τ＋α−２・τ）だけ遅延させた上でデータパケット５を装置Ｄへ送信する。
【００１４】
さらに、装置Ｃは、ＦＥＣパケットＦをとばしてデータパケット２を受信する。この場合には、データパケット３およびデータパケット４に加え、ＦＥＣパケットがロスすることになるので、パケットロス数Ｋ＝３となる。ところが、パケットロス数Ｋ＝３がＦＥＣパケットＦが復元可能なパケット数Ｍ＝２を超える場合には、Ｔ−Ｋ・τ（＝２・τ＋α−３・τ）がマイナスの値となってしまう。このため、仮に装置Ｃが受信したデータパケット２を最小の遅延αで装置Ｄへ送信したとしても、装置Ｄへデータパケット５が到着してからデータパケット２が到着するまでに２τが経過しており、パケットの転送間隔に乱れが生じる。このように、装置Ｃでは、ブロック８０Ｃの送信時間が長くなる結果、ブロック８０Ｄの転送レートにばらつきが生じる。また、装置ＣがロスしたパケットのうちＦＥＣパケットＦを装置Ｂに再送させた上で装置Ｄへ送信する場合には、装置Ｂから装置Ｃへの再送に時間がかかるほど、ＦＥＣパケットＦ、データパケット３やデータパケット４の転送遅延が大きくなる。
【００１５】
開示の技術は、上記に鑑みてなされたものであって、転送レートのばらつきを抑制できるデータ転送装置、データ転送方法及びデータ転送プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１６】
本願の開示するデータ転送装置は、データパケットおよび誤り訂正用のパケットを含んでなるブロックを構成するいずれかのパケットを受信するパケット受信部を有する。前記データ転送装置は、前記パケット受信部により受信したブロックの先頭から現在の受信パケットまでのパケットロスを検出するパケットロス検出部を有する。前記データ転送装置は、前記パケット受信部により受信されたパケットを所定時間にわたって遅延させた上で転送するパケット転送部を有する。前記データ転送装置は、前記パケットロス検出部により検出されたパケットロスと、前記パケットの再送に要する再送所要時間とに基づいて、前記パケットの送信元の装置へ再送要求を送信する再送要求送信部を有する。
【発明の効果】
【００１７】
本願の開示するデータ転送装置の一つの態様によれば、転送レートのばらつきを抑制できるという効果を奏する。
【図面の簡単な説明】
【００１８】
【図１】図１は、実施例１に係るデータ転送装置の構成を示すブロック図である。
【図２】図２は、実施例２に係るデータ転送システムで実行されるリレー転送の一例を示す図である。
【図３】図３は、実施例２に係るデータ転送装置の構成を示すブロック図である。
【図４】図４は、実施例２に係るデータ転送処理の手順を示すフローチャートである。
【図５】図５は、実施例２に係るデータ転送装置によるデータ転送の一例を示す図である。
【図６】図６は、実施例３に係るデータ転送プログラムを実行するコンピュータの一例について説明するための図である。
【図７】図７は、従来技術に係るデータ転送の一例を示す図である。
【図８】図８は、従来技術に係るデータ転送の一例を示す図である。
【発明を実施するための形態】
【００１９】
以下に、本願の開示するデータ転送装置、データ転送方法及びデータ転送プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例１】
【００２０】
図１は、実施例１に係るデータ転送装置の構成を示すブロック図である。図１に示すデータ転送装置１０は、パケット受信部１１と、パケットロス検出部１２と、パケット転送部１３と、再送要求送信部１４とを有する。
【００２１】
パケット転送部１１は、データパケットおよび誤り訂正用のパケットを含んでなるブロックを構成するいずれかのパケットを受信する。パケットロス検出部１２は、パケット受信部１１により受信したブロックの先頭から現在の受信パケットまでのパケットロスを検出する。また、パケット転送部１３は、パケット受信部１１により受信されたパケットを所定時間にわたって遅延させた上で転送する。また、再送要求送信部１４は、パケットロス検出部１２により検出されたパケットロスと、パケットの再送に要する再送所要時間とに基づいて、パケットの送信元の装置へ再送要求を送信する。
【００２２】
このように、本実施例に係るデータ転送装置１０は、誤り訂正用のパケットが誤り訂正可能なパケット数だけでなく、パケットの再送に要する再送所要時間を加味して再送要求を前倒しに行う。このため、本実施例に係るデータ転送装置１０では、ブロックの終盤のパケットを受信した場合に、パケットの再送が必要となる可能性を未然に低減させることができる。それゆえ、本実施例に係るデータ転送装置１０では、ブロックの終盤のパケットを転送する場合に、それまでにパケットがロスされていたとしても、誤り訂正用のパケットにより自力で復元できる可能性が高まる。よって、本実施例に係るデータ転送装置１０によれば、転送レートにばらつきが生じるのを抑制することが可能になる。
【実施例２】
【００２３】
［システム構成］
続いて、実施例２に係るデータ転送システムについて説明する。図２は、実施例２に係るデータ転送システムで実行されるリレー転送の一例を示す図である。図２の例では、映像データや音声データなどの各種のコンテンツをデータ転送装置１００−１〜１００−２０へリレー（relay）転送される場合を想定する。
【００２４】
図２に示す例では、特定の通信ノード（node）に負荷が集中するのを防止する観点から、データ転送装置間の通信方式としてＰ２Ｐ（Peer  to  Peer）やＡＬＭ（Application  Layer  Multicast）などを採用する場合を想定する。なお、データ転送装置の通信方式には、任意の通信方式を採用することができ、Ｐ２ＰやＡＬＭ以外にも一般のクライアントサーバ方式にも開示の装置を同様に適用できる。
【００２５】
図２に示すデータ転送システムでは、データ転送装置１００−１を頂点とし、データ転送装置１００−１から下流側のデータ転送装置へデータを順次受け渡すリレー転送を一定のビットレート（bit  rate）で行う。
【００２６】
図２に示すように、データ転送装置１００−１が配信するデータは、データ転送装置１００−２、１００−４、１００−７及び１００−１２を経由して、データ転送装置１００−１６及び１００−１７までリレー転送される。また、データ転送装置１００−１が配信するデータは、データ転送装置１００−２、１００−４、１００−８及び１００−１３を経由して、データ転送装置１００−１８へリレー転送される。さらに、データ転送装置１００−１が配信するデータは、データ転送装置１００−２、１００−４、１００−８を経由して、データ転送装置１００−１４へリレー転送される。また、データ転送装置１００−１が配信するデータは、データ転送装置１００−２及び１００−５を経由して、データ転送装置１００−９へリレー転送される。さらに、データ転送装置１００−１が配信するデータは、データ転送装置１００−３及び１００−６を経由して、データ転送装置１００−１０へリレー転送される。また、データ転送装置１００−１が配信するデータは、データ転送装置１００−３、１００−６、１００−１１及び１００−１５を経由して、データ転送装置１００−１９及び１００−２０へリレー転送される。
【００２７】
データ転送装置１００−１〜１００−２０は、通信機能を有する情報処理装置であればよい。一例としては、パーソナルコンピュータ（personal  computer）を始め、サーバ（server）などの固定端末の他、携帯電話機、ＰＨＳ（Personal  Handyphone  System）やＰＤＡ（Personal  Digital  Assistant）などの移動体端末を適用することができる。他の一例としては、Ｌ３スイッチ（Layer  3  switch）、ルータ（router）、ルーティング（routing）機能を搭載するコンピュータなどのネットワーク（network）機器であってもかまわない。なお、以下では、データ転送装置１００−１〜１００−２０を区別せずに総称する場合にデータ転送装置１００と記載する。
【００２８】
図２に示すデータ転送装置１００は、自装置の下流側の装置へデータを転送する場合に、ＦＥＣ（Forward  Error  Correction）パケットを付加した上で自装置の下流側の装置へデータを伝送するものとする。このＦＥＣパケットにより、下流側のデータ転送装置１００では、パケットロスＫがＦＥＣパケットＦにより復元可能なパケット数Ｍ以内である限りは、上流側のデータ転送装置１００にパケットを再送させずともよくなる。
【００２９】
［データ転送装置の構成］
次に、本実施例に係るデータ転送装置１００の構成について説明する。図３は、実施例２に係るデータ転送装置の構成を示すブロック図である。なお、データ転送装置１００は、図３に示した機能部以外にも既知のコンピュータが有する各種の機能部、例えば各種の入力デバイスや表示デバイスなどの機能を有するものとする。
【００３０】
図３に示すデータ転送装置１００は、パケット情報取得部１１０と、パケット転送指示部１２０と、ＡＲＱ送信指示部１３０と、パケットロス検出部１４０と、転送遅延算出部１５０と、ＡＲＱ可否判定部１６０と、エラー訂正部１７０とを有する。
【００３１】
このうち、パケット情報取得部１１０、ＡＲＱ送信指示部１３０及びパケット転送指示部１２０は、データ転送装置１００が有する図示しない通信インタフェース（interface）と接続される。これらパケット情報取得部１１０、ＡＲＱ送信指示部１３０及びパケット転送指示部１２０は、通信インタフェースを介して、他のデータ転送装置を含む外部装置との間で通信を行う。
【００３２】
パケット情報取得部１１０は、上流側のデータ転送装置からパケットを受信した場合に、その受信パケットのＦＥＣブロックに関する情報を判別する処理部である。
【００３３】
例えば、パケット情報取得部１１０は、受信パケットを含むＦＥＣブロックに関する情報を取得する。一例としては、パケット情報取得部１１０は、受信パケットに含まれるＦＥＣヘッダからデータパケットまたはＦＥＣパケットのいずれであるかのパケット種別を取得する。他の一例としては、パケット情報取得部１１０は、ＦＥＣブロック内の各パケットに付与されるシーケンス番号のうち受信パケットに付与されているＦＥＣブロック内のシーケンス番号を取得する。なお、ＦＥＣブロック内のシーケンス番号は、上流側のデータ転送装置により送信される際にＦＥＣブロック内のパケットの送信順序に応じて付与されるシーケンス番号である。
【００３４】
また、パケット情報取得部１１０は、受信パケット自体に関する情報を取得する。一例としては、パケット情報取得部１１０は、受信パケットのヘッダ、例えばＲＴＰヘッダなどを参照して、受信パケットが新規パケットまたは再送パケットのいずれであるのかを取得したり、また、受信パケットに付与されたシーケンス番号を取得したりする。なお、新規パケットとは、上流側のデータ転送装置から新たに受信したパケットを指す。また、再送パケットとは、上流側のデータ転送装置から再送されたパケットを指す。
【００３５】
パケット転送指示部１２０は、上流側のデータ転送装置から受信したパケットを後述の転送遅延算出部１５０により算出された遅延時刻にわたって遅延させた上で下流側のデータ転送装置へ転送させる処理部である。また、ＡＲＱ（Automatic  repeat-request）送信指示部１３０は、後述のＡＲＱ可否判定部１６０による指示に基づき、上流側のデータ転送装置から受信したパケットの再送要求を行う処理部である。
【００３６】
パケットロス検出部１４０は、ＦＥＣブロックの先頭から受信パケットまでのパケットロスを検出する処理部である。一例としては、パケットロス検出部１４０は、受信パケットが新規パケットである場合には、パケット情報取得部１１０により今回に取得されたＦＥＣブロック内のシーケンス番号と、前回に取得されたＦＥＣブロック内のシーケンス番号とを比較する。このとき、２つのＦＥＣブロック内のシーケンス番号が連番でない場合には、パケットロスがあることが判明する。この場合、パケットロス検出部１４０は、前回に取得されたＦＥＣブロック内のシーケンス番号と、今回に取得されたＦＥＣブロック内のシーケンス番号との間で欠落している番号の個数を今回までに検出されていたパケットロス数に加算する。また、パケットロス検出部１４０は、受信パケットが再送パケットである場合には欠落していたパケットが再送により補間されたことになるので、今回までに検出されていたパケットロス数を１つ減算する。
【００３７】
このように、パケットロス検出部１４０は、パケットロスが検出される度にパケットロス数を加算更新する一方で再送パケットが到達する度にパケットロス数を減算更新する。これによって、パケットが受信される度に最新のパケットロス数を管理する。なお、ここで言うパケットロスとは、パケットの欠落を指し、データパケットまたはＦＥＣパケットの欠落のいずれも含み得る。また、ここでは、ＦＥＣブロック内のシーケンス番号からパケットロスを検出する場合を説明したが、タイマ（timer）により受信間隔が転送間隔τ＋αを上回るごとにパケットロス数を加算更新するようにしてもよい。
【００３８】
転送遅延算出部１５０は、受信パケットの転送を遅延させる転送遅延を算出する処理部である。一例としては、転送遅延算出部１５０は、所定の転送遅延、例えばＴ−Ｋ・τを算出した上で受信パケットの受信時刻に加算することにより受信パケットの転送時刻を算出する。ここで、τは、パケットの転送間隔を指す。また、Ｋは、パケットロス数を指す。また、Ｔは、ＦＥＣパケットにより復元可能なパケット数Ｍと、パケットの転送間隔τとを乗じたＭ・τよりも大きな固定値であり、一例として、Ｍ・τ＋αを採用する場合を想定する。なお、αは、伝送により遅延する伝送遅延時間を指し、一例として、ゼロに近いプラスの値が与えられる。
【００３９】
これを説明すると、転送遅延算出部１５０は、固定値Ｔ（＝Ｍ・τ）からパケットロス検出部１４０により検出されたパケットロス数Ｋに転送間隔τを乗じたＫ・τを減算することにより、転送遅延「Ｍ・τ−Ｋ・τ」を算出する。その上で、転送遅延算出部１５０は、受信パケットの受信時刻に転送遅延「Ｍ・τ−Ｋ・τ」を加算することにより、受信パケットの転送時刻を算出する。
【００４０】
ＡＲＱ可否判定部１６０は、パケットロス検出部１４０により検出されたパケットロスと、パケットの再送に要する再送所要時間γとに基づいて、上流側のデータ転送装置に対して再送要求を実行するか否かを判定する処理部である。
【００４１】
すなわち、ＡＲＱ可否判定部１６０は、パケットロス数Ｋが、ＦＥＣパケットにより誤り訂正可能なパケット数Ｍから再送所要時間γをパケットの転送間隔τで除した値を減じた閾値よりも大きい場合に、再送要求を要すると判定する。つまり、ＡＲＱ可否判定部１６０は、判定式「Ｍ−γ／τ＜Ｋ」を満たす場合に、ＡＲＱ送信指示部１３０に再送要求を送信させる。転送間隔τは、転送間隔がばらついた場合は平均値や最小値を使用してもよい。
【００４２】
かかる判定式を採用するのは、ＦＥＣブロック内のパケットロス数Ｋと、ＦＥＣパケットにより誤り訂正可能なパケット数Ｍとからでは、ＦＥＣブロックのうちどのパケットを受信した時点で再送要求を実行すればよいかを適切に判断できないからである。すなわち、これら２つのパラメータからでは、パケットロス数ＫがＦＥＣパケットにより誤り訂正可能なパケット数Ｍよりも大きい場合には、再送要求が必ず必要になるという事実しか判定できない。
【００４３】
そこで、ＡＲＱ可否判定部１６０は、転送遅延を最小値τとし、かつＦＥＣブロック単位で一定に保つために、再送パケットが規定のＦＥＣブロックの転送時間（Ｎ−１）・τ内に転送できる時刻に到達するか否かにより、再送要求を行うか否かを判定する。なお、Ｎは、１つのＦＥＣブロックに含まれるパケット数を指す。
【００４４】
これを説明すると、ＦＥＣブロックの中でも転送が終盤となるパケットを受信した時点で、パケットロス数が再送により欠落パケットを復元した場合にＦＥＣブロックの転送遅延時間内に訂正できないパケット数とならないようにマージンγ／τを設定する。そして、ＡＲＱ可否判定部１６０は、ＦＥＣパケットにより誤り訂正可能なパケット数Ｍからマージンγ／τを減じた値「Ｍ−γ／τ」をパケットロス数Ｋと比較する閾値とする。このとき、判定式「Ｍ−γ／τ＜Ｋ」を満たす場合には、仮に「Ｍ＞Ｋ」であっても再送パケットが規定のＦＥＣブロックの転送時間内に転送できる時刻に到達しない可能性があるので、ＡＲＱ送信指示部１３０に再送要求を実行させる。
【００４５】
ここで、ＡＲＱ可否判定部１６０は、上記の判定式「Ｍ−γ／τ＜Ｋ」を満たすからといってＦＥＣブロック内でロスしているパケット全てを対象に再送要求を実行させることはしない。なぜなら、再送要求を多発したのでは、上流側のデータ転送装置、それに至るまでのリソースを無駄遣いすることになるからである。それゆえ、ＡＲＱ可否判定部１６０は、上記の判定式「Ｍ−γ／τ＜Ｋ」を満たす場合には、ＦＥＣブロック内でロスしているパケットのうち、より直近に欠落したパケットであり、かつＭ−γ／τ≧Ｋとなるパケット数のパケットを対象に再送要求を実行させる。ただし、ＦＥＣパケットがロスしている場合には、ＦＥＣパケットを優先して再送要求を実行させる。
【００４６】
これにより、適切なタイミングで再送要求を実行させつつも、ＦＥＣパケットを最大限に活用する。よって、転送レートにばらつきが生じるのを抑制しつつ、リソースを有効活用できる。
【００４７】
一例として、Ｐｒｏ−ＭＰＥＧ  ＦＥＣに上記の判定式を適用する場合を想定する。このＰｒｏ−ＭＰＥＧ  ＦＥＣは、パケットデータをマトリックス（matrix）状に並べ、その行及び列それぞれでＸＯＲ（eXclusive  OR）を求め、エラー訂正符号であるＦＥＣパケットを生成するものである。マトリックスサイズの範囲は、「Ｄ＊Ｌ≦１００  １≦Ｌ≦２０  ４≦Ｄ≦２０」と規定されている。なお、Ｌは、行（columns）を指し、Ｄは、列（rows）を指す。
【００４８】
ここで、送信レートを１Ｍｂｐｓ、ＲＴＴ（Round  Trip  Time）を５０ｍｓｅｃ、マトリックスサイズを１００（＝１０×１０）とした場合を想定する。このようにマトリックスサイズが１０×１０＝１００である場合、ＦＥＣを含む１ブロックのパケット数は、１２０となる。また、この１ブロックでの訂正可能パケット数は１９であり、この１ブロックを転送する場合、転送遅延は、１９パケット送信分（１９０msec）のみとなり、１ブロック分遅延させた場合の１／６となる。
【００４９】
このように、上記の判定式に関係するパラメータは、ＦＥＣパケットにより誤り訂正可能なパケット数Ｍが１９、パケットの転送間隔τが１０ｍｓｅｃ、固定値Ｔが１９０＋α（ｍｓｅｃ）、再送所要時間γ（＝ＲＴＴ＋β）が５０ｍｓｅｃとなる。この場合には、上記の判定式「Ｍ−γ／τ＜Ｋ」は、１９−５０／１０＜Ｋとなり、その結果、１４＜Ｋとなる。このため、１ブロック中でのパケットロス数が１４より多くなった場合に再送により訂正を行うことで、一定遅延での転送が可能となる。よって、実際のレートで上記の判定式は有効に機能すると言える。なお、βは転送装置内の再送パケットの検索などに用する処理所用時間を指し、一例として、ゼロに近いプラスの値が与えられる。
【００５０】
エラー訂正部１７０は、ＦＥＣブロックに含まれるパケットのうちＦＥＣパケットを用いて、同一のＦＥＣブロック内でパケットロス検出部１４０により検出されたパケットロスを訂正する処理部である。
【００５１】
これを説明すると、エラー訂正部１７０は、受信パケットが同一のＦＥＣブロックのパケットとして受信する最後パケットである場合に、パケットロス検出部１４０により検出されたパケットロス数がゼロよりも大きいか否かを判定する。ここで言う最終パケットとは、ＦＥＣブロック内のシーケンス番号が最後の番号であるか、或いは規定のＦＥＣブロックの受信時間（Ｎ−１）（τ＋α）を超えて受信された再送パケットを指す。そして、パケットロス数がゼロよりも大きい場合には、エラー訂正部１７０は、ＦＥＣパケットを用いて、パケットロスを訂正により復元する。
【００５２】
［処理の流れ］
次に、本実施例に係るデータ転送装置の処理の流れについて説明する。図４は、実施例１に係るデータ転送処理の手順を示すフローチャートである。このデータ転送処理は、データ転送装置１００が起動している場合に再帰的に実行される処理であり、上流側のデータ転送装置からパケットを受信した場合に起動する。
【００５３】
図４に示すように、上流側のデータ転送装置からパケットを受信すると（ステップＳ１０１）、転送遅延算出部１５０は、所定の転送遅延Ｔ−Ｋ・τを算出した上でパケットの受信時刻に加算することによりパケットの転送時刻を算出する（ステップＳ１０２）。
【００５４】
そして、パケット転送指示部１２０は、下流側のデータ転送装置に対して上流側のデータ転送装置から受信したパケットを転送遅延算出部１５０により算出された転送時刻に転送させる（ステップＳ１０３）。なお、パケットの転送時には、ＦＥＣブロック内のパケットのうち今回転送するパケットの送信順序をＦＥＣブロック内のシーケンス番号としてＦＥＣヘッダに書き込んだ上で転送する。
【００５５】
続いて、パケットロス検出部１４０は、受信パケットが新規パケットであるか否かを判定する（ステップＳ１０４）。このとき、受信パケットが新規パケットである場合（ステップＳ１０４肯定）には、パケットロス検出部１４０は、パケットロスを検出する（ステップＳ１０５）。そして、パケットロスを検出した場合（ステップＳ１０５肯定）には、パケットロス検出部１４０は、今回に検出したパケットロス数を今回までに検出されていたパケットロス数に加算する（ステップＳ１０６）。
【００５６】
一方、受信パケットが再送パケットである場合（ステップＳ１０４否定）には、欠落していたパケットが再送により補間されたことになるので、今回までに検出されていたパケットロス数を１つ減算する（ステップＳ１０７）。
【００５７】
その後、ＡＲＱ可否判定部１６０は、パケットロス数Ｋが所定値を超過するか否か、例えば上記の判定式「Ｍ−γ／τ＜Ｋ」を満たすか否かを判定する（ステップＳ１０８）。このとき、パケットロス数Ｋが所定値を超過する場合（ステップＳ１０８肯定）には、ＡＲＱ送信指示部１６０は、図示しない通信インタフェースを介して再送要求を上流側のデータ転送装置へ送信する（ステップＳ１０９）。なお、パケットロス数が所定値以下である場合（ステップＳ１０８否定）には、再送要求は行わず、そのままステップＳ１１０に移行する。
【００５８】
そして、受信パケットが最終パケットである場合（ステップＳ１１０肯定）には、エラー訂正部１７０は、パケットロス検出部１４０により検出されたパケットロス数がゼロよりも大きいか否かを判定する（ステップＳ１１１）。
【００５９】
この結果、パケットロス数がゼロよりも大きい場合（ステップＳ１１１肯定）には、エラー訂正部１７０は、ＦＥＣパケットを用いて、パケットロスを訂正により復元する（ステップＳ１１２）。その後、パケット転送指示部１２０は、エラー訂正部１７０により復元されたパケットを前回にパケットを転送してから転送間隔τを空けた上で下流側のデータ転送装置へ転送し（ステップＳ１１３）、ステップＳ１０１に戻る。
【００６０】
なお、受信パケットが最終パケットである場合またはパケットロス数がゼロである場合（ステップＳ１１０否定またはステップＳ１１１否定）には、ステップＳ１０１に戻る。
【００６１】
［実施例２の効果］
上述してきたように、本実施例に係るデータ転送装置１００は、ＦＥＣパケットにより誤り訂正可能なパケット数Ｋだけでなく、再送所要時間γを加味して再送要求を前倒しに行う。このため、本実施例に係るデータ転送装置１００では、ＦＥＣブロックの終盤のパケットを受信した場合に、パケットの再送が必要となる可能性を未然に低減させることができる。それゆえ、本実施例に係るデータ転送装置１００では、ＦＥＣブロックの終盤のパケットを転送する場合に、それまでにパケットがロスされていたとしても、ＦＥＣパケットにより自力で復元できる可能性が高まる。よって、本実施例に係るデータ転送装置１００によれば、転送レートにばらつきが生じるのを抑制することが可能である。
【００６２】
ここで、図５を用いて、データ転送例を参照しつつその効果を説明する。図５は、実施例２に係るデータ転送装置によるデータ転送の一例を示す図である。この図５に示す例では、１つのＦＥＣブロック内のパケット数を６つとし、装置１００−２、装置１００−４、装置１００−７、装置１００−１２の順にデータが転送される場合を想定する。図５に示す符号１〜符号７は、伝送対象とするデータが分割されたデータパケットを示す。また、図５に示す符号５０Ａ〜符号５０Ｄは、データパケット１〜データパケット５の５つのパケットと、ＦＥＣパケットＦとを合わせた６つのパケットを含むブロックを示す。なお、図５に示す例では、パケットの転送間隔をτとし、転送遅延をＴ−Ｋ・τとし、ＦＥＣパケットＦにより復元可能なパケット数Ｍを２とし、Ｔ＝Ｍ・τ＋αであるものとし、再送所要時間γ＝τとしてデータ伝送がなされるものとする。
【００６３】
図５に示す例では、図８に示した従来技術における装置Ｃが転送する際に発生していた転送レートのばらつきが実施例２に係る装置１００−７では抑制されていることがわかる。これを説明すると、データ転送装置１００−７は、データパケット１を受信する。この場合には、パケットロス数Ｋ＝０となる。このため、データ転送装置１００−７は、２τ＋α（＝２・τ＋α−０・τ）だけ遅延させた上でデータパケット１をデータ転送装置１００−１２へ送信する。続いて、データ転送装置１００−７は、データパケット３およびデータパケット４をとばしてデータパケット５を受信する。この場合には、データパケット３およびデータパケット４がロスしているので、パケットロス数Ｋ＝２となる。このため、データ転送装置１００−７は、α（＝２・τ＋α−２・τ）だけ遅延させた上でデータパケット５を下流側のデータ転送装置１００−１２へ送信する。
【００６４】
ここで、データ転送装置１００−７では、上記の判定式「Ｍ−γ／τ＜Ｋ」を適用すると「Ｍ−γ／τ＝１＜Ｋ＝２」となり、判定式を満たすので、上流側のデータ転送装置１００−４へデータパケット４の再送要求を行う。そして、データ転送装置１００−７は、上流側のデータ転送装置１００−４から再送されたデータパケット４を受け取り、α（＝２・τ＋α−２・τ）だけ遅延させた上でデータパケット４を下流側のデータ転送装置１００−１２へ送信する。その後、データ転送装置１００−７は、パケットロス数Ｋを２から１へ減じる。
【００６５】
続いて、データ転送装置１００−７は、ＦＥＣパケットをとばしてデータパケット２を受信する。この場合には、データパケット３およびＦＥＣパケットがロスしているので、パケットロス数Ｋ＝２となる。このため、データ転送装置１００−７は、α（＝２・τ＋α−２・τ）だけ遅延させた上でデータパケット２を下流側のデータ転送装置１００−１２へ送信する。
【００６６】
その後、データ転送装置１００−７では、上記の判定式が「Ｍ−γ／τ＝１＜Ｋ＝２」となり、判定式を満たすので、上流側のデータ転送装置１００−４へＦＥＣパケットの再送要求を行う。そして、データ転送装置１００−７は、上流側のデータ転送装置１００−４から再送されたＦＥＣパケットを受け取り、α（＝２・τ＋α−２・τ）だけ遅延させた上でデータパケット４を下流側のデータ転送装置１００−１２へ送信する。その後、データ転送装置１００−７は、パケットロス数Ｋを２から１へ減じる。
【００６７】
そして、データ転送装置１００−７では、最終パケットであるＦＥＣパケットＦを受信すると、ロス状態にあり、かつ未訂正のデータパケット３をＦＥＣパケットにより復元し、復元したパケットを転送間隔τで下流側のデータ転送装置１００−１２へ送信する。
【００６８】
このように、本実施例に係るデータ転送装置１００−７では、上記の判定式により、データパケット５を受信した段階で再送要求を行うことができる。このため、ＦＥＣブロックに含まれるパケットのうち終盤のデータパケット２を受信した段階で、ＦＥＣパケットの誤り訂正能力を超えない。このため、本実施例に係るデータ転送装置１００−７では、転送遅延Ｔ−Ｋ・τを保って転送を行うことができる。
【００６９】
また、本実施例に係るデータ転送装置１００は、パケットロス数Ｋが、ＦＥＣパケットにより誤り訂正可能なパケット数Ｍから再送所要時間γをパケットの転送間隔τで除した値を減じた値よりも大きい場合に、パケットの送信元の装置へ再送要求を送信する。このため、ＦＥＣブロックの中でも転送が終盤となるパケットを受信した時点で、パケットロス数が再送によりパケットロスを復元した場合にＦＥＣブロックの転送遅延時間内に訂正できないパケット数とならないように再送制御できる。それゆえ、本実施例に係るデータ転送装置１００によれば、転送レートにばらつきが生じるのをより効果的に抑制することが可能である。
【００７０】
さらに、本実施例に係るデータ転送装置１００は、ＦＥＣパケットを用いて、同一のＦＥＣブロック内で検出されたパケットロスを訂正する。その上で、本実施例に係るデータ転送装置１００は、同一のＦＥＣブロックのうち最終に受信されたパケットの後に続けて訂正パケットを転送する。これによって、本実施例に係るデータ転送装置１００では、適切なタイミングで再送要求を実行させつつも、ＦＥＣパケットを最大限に活用できる。それゆえ、本実施例に係るデータ転送装置１００によれば、転送レートにばらつきが生じるのを抑制しつつ、リソースを有効活用することが可能である。
【実施例３】
【００７１】
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【００７２】
［適用範囲］
なお、上記の実施例２では、映像データや音声データなどのデータを転送する場合を説明したが、文書やアプリケーションなどの他のデータであってもよく、必ずしもリアルタイム性が求められるデータである必要はない。
【００７３】
［その他］
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。また、パケット情報取得部１１０、パケット転送指示部１２０、ＡＲＱ送信指示部１３０、パケットロス検出部１４０、転送遅延算出部１５０、ＡＲＱ可否判定部１６０またはエラー訂正部１７０をデータ転送装置の外部装置としてする。そして、外部装置をネットワーク経由で接続するようにしてもよい。また、パケット情報取得部１１０、パケット転送指示部１２０、ＡＲＱ送信指示部１３０、パケットロス検出部１４０、転送遅延算出部１５０、ＡＲＱ可否判定部１６０またはエラー訂正部１７０を別の装置がそれぞれ有することとする。そして、別の装置がそれぞれネットワーク接続されて協働することで、上記のデータ転送装置の機能を実現するようにしてもよい。
【００７４】
［データ転送プログラム］
また、上記の実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図６を用いて、上記の実施例と同様の機能を有するデータ転送プログラムを実行するコンピュータの一例について説明する。なお、図６は、実施例３に係るデータ転送プログラムを実行するコンピュータの一例について説明するための図である。
【００７５】
図６に示すように、実施例３におけるコンピュータ３００は、操作部３１０ａと、マイク３１０ｂと、スピーカ３１０ｃと、ディスプレイ３２０と、通信部３３０とを有する。さらに、このコンピュータ３００は、ＣＰＵ３５０と、ＲＯＭ３６０と、ＨＤＤ（Hard  Disk  Drive）３７０と、ＲＡＭ（Random  Access  Memory）３８０と有する。これら３１０〜３８０の各部はバス３４０を介して接続される。
【００７６】
ＲＯＭ３６０には、上記の実施例２で示したパケット情報取得部１１０と、パケット転送指示部１２０と、ＡＲＱ送信指示部１３０と同様の機能を発揮する制御プログラムが予め記憶される。さらに、ＲＯＭ３６０には、パケットロス検出部１４０と、転送遅延算出部１５０と、ＡＲＱ可否判定部１６０と、エラー訂正部１７０と同様の機能を発揮する制御プログラムが予め記憶される。つまり、ＲＯＭ３６０には、図６に示すように、パケット情報取得プログラム３６０ａと、パケット転送指示プログラム３６０ｂと、ＡＲＱ送信指示プログラム３６０ｃとが記憶される。さらに、ＲＯＭ３６０には、パケットロス検出プログラム３６０ｄと、転送遅延算出プログラム３６０ｅと、ＡＲＱ可否判定プログラム３６０ｆと、エラー訂正プログラム３６０ｇとが記憶される。これらのプログラム３６０ａ〜３６０ｇについては、図３に示したデータ転送装置の各構成要素と同様、適宜統合又は分離しても良い。なお、ＲＡＭ３６０に格納される各データは、常に全てのデータがＲＡＭ３６０に格納される必要はなく、処理に必要なデータのみがＲＡＭ３６０に格納されれば良い。
【００７７】
そして、ＣＰＵ３５０が、これらのプログラム３６０ａ〜３６０ｇをＲＯＭ３６０から読み出して実行する。これによって、ＣＰＵ３５０は、図６に示すように、各プログラム３６０ａ〜３６０ｇについては、パケット情報取得プロセス３５０ａ、パケット転送指示プロセス３５０ｂ及びＡＲＱ送信指示プロセス３５０ｃとして機能するようになる。さらに、ＣＰＵ３５０は、パケットロス検出プロセス３５０ｄ、転送遅延算出プロセス３５０ｅ、ＡＲＱ可否判定プロセス３５０ｆ及びエラー訂正プロセス３５０ｇとして機能するようになる。そして、ＣＰＵ３５０は、ＲＡＭ３８０の記憶領域を使用しつつ、データ転送プログラムを実行する。各プロセス３５０ａ〜３５０ｇは、図３に示した各機能部にそれぞれ対応する。なお、ＣＰＵ３５０上で仮想的に実現される各処理部は、常に全ての処理部がＣＰＵ３５０上で動作する必要はなく、処理に必要な処理部のみが仮想的に実現されれば良い。
【００７８】
なお、上記したデータ再現プログラムについては、必ずしも最初からＨＤＤ３７０やＲＯＭ３６０に記憶させておく必要はない。例えば、コンピュータ３００に挿入されるフレキシブルディスク、いわゆるＦＤ、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に各プログラムを記憶させる。そして、コンピュータ３００がこれらの可搬用の物理媒体から各プログラムを取得して実行するようにしてもよい。また、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ３００に接続される他のコンピュータまたはサーバ装置などに各プログラムを記憶させておき、コンピュータ３００がこれらから各プログラムを取得して実行するようにしてもよい。
【符号の説明】
【００７９】
１０    データ転送装置
１１    パケット受信部
１２    パケットロス検出部
１３    パケット転送部
１４    再送要求送信部
１００−１〜１００−２０    データ転送装置
１１０    パケット情報取得部
１２０    パケット転送指示部
１３０    ＡＲＱ送信指示部
１４０    パケットロス検出部
１５０    転送遅延算出部
１６０    ＡＲＱ可否判定部
１７０    エラー訂正部
【図１】
0005533322.tif 000002
【図２】
0005533322.tif 000003
【図３】
0005533322.tif 000004
【図４】
0005533322.tif 000005
【図５】
0005533322.tif 000006
【図６】
0005533322.tif 000007
【図７】
0005533322.tif 000008
【図８】
0005533322.tif 000009