(57)【要約】【課題】データパケットを可変レートで伝送する場合に発生する伝送遅延を抑制すること。【解決手段】伝送装置１は、受信部１ａ、更新部１ｂ、生成部１ｃ及び送信部１ｄを有する。受信部１ａは、誤り訂正によりデータパケットを復元する誤り訂正用パケット又はデータパケットを受信する。データパケットには、誤り訂正用パケットが誤り訂正を実行することにより復元可能なデータパケットの保護範囲を特定するための保護範囲情報が書き込まれる。更新部１ｂは、受信部１ａによりデータパケットが受信された順番に従ってデータパケットの保護範囲情報を更新する。生成部１ｃは、更新部１ｂによる保護範囲情報の更新に従って、新たな保護範囲情報で特定されるデータパケットの誤り訂正用パケットを生成する。送信部１ｄは、更新部１ｂにより保護範囲情報が更新されたデータパケット及び生成部１ｃにより生成された誤り訂正用パケットを送信する。【選択図】図１
2012015752.tif 000002
【特許請求の範囲】
【請求項１】
誤り訂正によりデータパケットを復元する誤り訂正用パケット、または前記誤り訂正用パケットが誤り訂正を実行することにより復元可能なデータパケットの保護範囲を特定するための保護範囲情報が書き込まれたデータパケットのいずれかのパケットを受信する受信部と、
前記受信部によりデータパケットが受信された順番にしたがって前記データパケットの保護範囲情報を更新する更新部と、
前記更新部による保護範囲情報の更新にしたがって、新たな保護範囲情報で特定されるデータパケットの誤り訂正用パケットを生成する生成部と、
前記更新部により保護範囲情報が更新されたデータパケットおよび前記生成部により生成された誤り訂正用パケットを送信する送信部と
を有することを特徴とする伝送装置。
【請求項２】
前記データパケットには、前記パケットの送信元の装置によりデータパケットの送信順に付与される送信シーケンス番号がさらに書き込まれるものであって、
前記受信部によりデータパケットが受信された場合に、該データパケットに含まれる送信シーケンス番号を用いて、前記データパケットのパケットロスを判定する判定部と、
前記判定部によるパケットロスの判定結果に基づき、前記パケットの送信元の装置へデータパケットの再送要求を行う再送要求部と、
前記パケットの送信元の装置から再送されたデータパケットを受信する再送受信部とをさらに有し、
前記更新部は、
前記受信部および前記再送受信部によりデータパケットが受信された順番にしたがって前記データパケットの保護範囲情報および送信シーケンス番号を更新することを特徴とする請求項１に記載の伝送装置。
【請求項３】
前記データパケットには、前記保護範囲情報として、前記パケットの送信元の装置により前記誤り訂正用パケットが保護するデータパケットのシーケンス番号がさらに書き込まれるものであって、
前記受信部によりデータパケットが受信された場合に、該データパケットに含まれるデータパケットのシーケンス番号を用いて、前記データパケットのパケットロスを判定する判定部と、
前記判定部によるパケットロスの判定結果に基づき、前記パケットの送信元の装置へデータパケットの再送要求を行う再送要求部と、
前記パケットの送信元の装置から再送されたデータパケットを受信する再送受信部とをさらに有し、
前記更新部は、
前記受信部および前記再送受信部によりデータパケットが受信された順番にしたがって前記データパケットの保護範囲情報に書き込まれているデータパケットのシーケンス番号を更新することを特徴とする請求項１に記載の伝送装置。
【請求項４】
コンピュータに、
誤り訂正によりデータパケットを復元する誤り訂正用パケット、または前記誤り訂正用パケットが誤り訂正を実行することにより復元可能なデータパケットの保護範囲を特定するための保護範囲情報が書き込まれたデータパケットのいずれかのパケットを受信する受信手順と、
前記受信手順によりデータパケットが受信された順番にしたがって前記データパケットの保護範囲情報を更新する更新手順と、
前記更新手順による保護範囲情報の更新にしたがって、新たな保護範囲情報で特定されるデータパケットの誤り訂正用パケットを生成する生成手順と、
前記更新手順により保護範囲情報が更新されたデータパケットおよび前記生成手順により生成された誤り訂正用パケットを送信する送信手順と
を実行させることを特徴とする伝送プログラム。
【請求項５】
コンピュータが、
誤り訂正によりデータパケットを復元する誤り訂正用パケット、または前記誤り訂正用パケットが誤り訂正を実行することにより復元可能なデータパケットの保護範囲を特定するための保護範囲情報が書き込まれたデータパケットのいずれかのパケットを受信する受信工程と、
前記受信工程によりデータパケットが受信された順番にしたがって前記データパケットの保護範囲情報を更新する更新工程と、
前記更新工程による保護範囲情報の更新にしたがって、新たな保護範囲情報で特定されるデータパケットの誤り訂正用パケットを生成する生成工程と、
前記更新工程により保護範囲情報が更新されたデータパケットおよび前記生成工程により生成された誤り訂正用パケットを送信する送信工程と
を実行することを特徴とする伝送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、伝送装置、伝送プログラム及び伝送方法に関する。
【背景技術】
【０００２】
データを伝送するための各種の通信技術が知られている。一例として、Ｐ２Ｐ（Peer  to  Peer）やＡＬＭ（Application  Layer  Multicast）などの通信方式により、映像や音声などのメディアデータ（media  data）を伝送する場合を想定する。これらＰ２ＰやＡＬＭを用いる場合には、ノード（node）とも呼ばれる伝送装置がツリー（tree）状に配置された伝送システムが構築される。この伝送システムでは、ツリーの頂点に当たるノードから下位階層に割り当てられたノードへと順々にデータをリレー転送する。これにより、大規模なデータ配信を実現する。
【０００３】
かかるリレー転送を行う場合には、リレー遅延とも呼ばれる遅延が発生する。このリレー遅延は、ノード間における伝送ジッタ（jitter）を吸収するために、上位のノードから受信したデータパケットをバッファ（buffer）に蓄積した上で下位のノードへの転送を待機させることにより発生する。このため、リレー遅延は、階層数が増えるに従って遅延量も増大する。
【０００４】
このことから、リアルタイム伝送を行う場合には、データパケットが下位のノードへ可及的速やかに伝送されることが望まれる。このため、パケットロス（packet  loss）による再送を抑制するエラー訂正技術が用いられる。一例としては、送信時に冗長なデータを付加した上で送信することにより、受信側で未到着となったデータを冗長なデータから復元するＦＥＣ（Forward  Error  Correction）が挙げられる。
【０００５】
これを説明すると、最上位のノードは、データパケットを伝送する場合にＦＥＣパケットを所定の間隔で挿入し、下位階層のノードへ伝送する。かかるＦＥＣパケットには、ＦＥＣパケットが誤り訂正により保護する対象とするデータパケットの範囲を特定する保護範囲情報が含まれる。かかる保護範囲情報を参照することにより、下位階層のノードでは、データパケットが欠落した場合にそのデータパケットを保護対象とするＦＥＣパケットを用いてデータパケットを復元できる。
【０００６】
ここで、メディアデータがＣＢＲ（constant  bit  rate）、すなわち固定レートで転送される場合には、一定のデータパケットごとにＦＥＣパケットを挿入することにより、ＦＥＣパケットの挿入間隔を一定とする。一方、メディアデータがＶＢＲ（Variable  Bit  Rate）、すなわち可変レートで転送される場合には、一定の時間間隔でＦＥＣパケットを挿入することにより、ＦＥＣパケットの挿入間隔を可変とする。なぜなら、一定のデータパケット間隔でＦＥＣパケットを挿入すると、転送レートが低くなるほど伝送遅延が大きくなるからである。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】国際公開第２００５／０１３５４２号
【特許文献２】特開２００８−１１０９６号公報
【特許文献３】特開２００１−１１９４３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記の従来技術では、以下に説明するように、データパケットを可変レートで伝送する場合に伝送遅延が増大するという問題がある。
【０００９】
一例としては、誤り訂正用のパケットをロスした場合には、その誤り訂正用のパケットが保護するデータパケットの伝送遅延が増大する場合がある。図２３及び図２４は、ＦＥＣパケットをロスした場合における伝送遅延の一例を説明するための図である。図２３及び図２４に示す例では、ノード＃１、ノード＃２、ノード＃３の順にデータが転送される場合を想定する。図２３及び図２４に示す例では、パケットを模式化した小包にデータパケットに付与されたシーケンス（sequence）番号またはＦＥＣパケットに付与されたシーケンス番号を図示している。図２３及び図２４に示すＦＥＣパケット１は、誤り訂正によりデータパケット１〜４を保護するものとし、図２３及び図２４に示すＦＥＣパケット２は、誤り訂正によりデータパケット５〜７を保護するものとする。なお、図２３及び図２４に示す例では、ＦＥＣパケットにより復元可能なパケット数を１つとする。
【００１０】
図２３に示すように、ノード＃１は、データパケット１〜４、ＦＥＣパケット１、データパケット５〜７、ＦＥＣパケット２の順にノード＃２へ伝送する。このとき、ノード＃１及びノード＃２間でＦＥＣパケット１をロスした場合を想定する。この場合には、ノード＃２は、ノード＃１からデータパケット１〜４、データパケット５〜７、ＦＥＣパケット２の順に受信する。
【００１１】
ここで、ノード＃２は、ＦＥＣパケット２を受信するＴＡの時点までＦＥＣパケット１が欠落したことを検知できない。なぜなら、ノード＃２は、固定レートの場合のようにＦＥＣパケットの挿入間隔が一定でないため、ＦＥＣパケット２に含まれる保護範囲情報を参照する他にＦＥＣパケット１のロスを検知する術がないからである。このように、ノード＃２は、データパケット１〜４を受信した時点ではＦＥＣパケット１が欠落したことを検知できないので、ＦＥＣパケット１が失われたまま各パケットをノード＃３へ伝送する。
【００１２】
このとき、ノード＃２及びノード＃３の間でデータパケット１〜４のうちいずれかのデータパケットが欠落すると、ノード＃３では、欠落したデータパケットを復元できない。図２３に示す例で言えば、ノード＃３は、ノード＃２及びノード＃３の間で欠落したデータパケット４を復元できない。この場合には、ノード＃３は、データパケット４またはＦＥＣパケット１をノード♯２に再送させる必要がある。
【００１３】
図２４に示すように、ノード＃２は、ＦＥＣパケット２を受信したＴＡの時点で始めてＦＥＣパケット１のロスを検知する。このとき、ノード＃２は、既に受信しているデータパケット１〜４を用いてＦＥＣパケット１を生成するか、あるいはノード＃１にＦＥＣパケット１を再送させることによりＦＥＣパケット１を取得した上でＦＥＣパケット１をノード＃３へ送信する。一方、ノード＃３は、ノード＃２からＦＥＣパケット１を受信するまで待機し、ノード＃２からＦＥＣパケット１を受信した時点で始めてデータパケット４を復元できる。
【００１４】
このように、ノード＃２でＦＥＣパケット１をロスした場合には、その下位階層のノード＃３でＦＥＣパケット１が保護するデータパケット４が欠落すると、ＴＢからＴＣの期間、すなわち７パケット分の時間にわたってデータパケット４の伝送が遅延してしまう。
【００１５】
このような誤り訂正用のパケットのロスを迅速に検知するために、直前に送信したパケットのシーケンス番号及び優先度をそれ以降に送信するパケットに埋め込んだ上で送信するデータ送信装置を援用することが考えられる。一例として、上記のデータ送信装置を援用する場合には、直前に送信したＦＥＣパケットのシーケンス番号をそれ以降に送信するデータパケットに埋め込んで送信させることが想定される。
【００１６】
しかしながら、上記のデータ送信装置を援用した場合でも、データパケットまたは誤り訂正用のパケットの再送が発生すると、その後に伝送遅延が増大する場合がある。
【００１７】
図２５は、再送による伝送遅延の拡大の一例を示す図である。図２５に示す例では、ノード＃１、ノード＃２、ノード＃３の順にデータが転送される場合を想定する。図２５に示す例では、パケットを模式化した小包にデータパケットに付与されたシーケンス番号またはＦＥＣパケットに付与されたシーケンス番号を図示している。図２５に示すＦＥＣパケット１は、誤り訂正によりデータパケット１〜４を保護するものとする。図２５に示すＦＥＣパケット２は、誤り訂正によりデータパケット５〜７を保護するものとする。図２５に示すＦＥＣパケット３は、誤り訂正によりデータパケット８〜１０を保護するものとする。図２５に示すＦＥＣパケット４は、誤り訂正によりデータパケット１１〜１４を保護するものとする。なお、図２５に示す例では、ＦＥＣパケットにより復元可能なパケット数を１つとする。
【００１８】
図２５に示すように、上記のデータ送信装置を援用した場合には、ノード＃２は、データパケット５を受信したＴＤの時点でデータパケット４のロスだけでなく、ＦＥＣパケット１のロスを検知する。この場合には、ＦＥＣパケットによる誤り訂正が不可能なため、ノード＃２は、ＴＤの時点でデータパケット４またはＦＥＣパケット１の再送要求をノード＃１へ送信する。例えば、データパケット４の再送要求を行った場合には、ノード＃２は、ノード＃１及びノード＃２間の往復遅延時間であるＲＴＴ（Round  Trip  Time）１が経過したＴＥの時点でデータパケット４の再送を受信する。その後、ノード＃２は、再送により受信したデータパケット４及び先に受信していたデータパケット１〜３を用いてＦＥＣパケット１を再生成する。そして、ノード＃２は、データパケット１〜３、データパケット５〜７、ＦＥＣパケット２、データパケット８、データパケット４、ＦＥＣパケット１・・・の順にノード＃３へデータを送信する。
【００１９】
このとき、ノード＃２及びノード＃３の間でデータパケット３及びデータパケット４のロスが発生した場合を想定する。この場合には、ノード＃３は、ＦＥＣパケット１を受信したＴＦの時点でデータパケット３及びデータパケット４のロスを検知する。このノード＃３の場合、ＦＥＣパケットの誤り訂正能力を超える２つのパケットロスが発生しているので、ノード＃３は、データパケット３またはデータパケット４の再送を受ける必要がある。このため、ノード＃３は、ＦＥＣパケット１を受信したＴＦの時点でデータパケット３またはデータパケット４の再送要求をノード＃２へ送信する。
【００２０】
例えば、データパケット３の再送要求を行った場合には、ノード＃３は、ノード＃２及びノード＃３間の往復遅延時間であるＲＴＴ２が経過したＴＧの時点でデータパケット３の再送を受信する。その後、ノード＃３は、再送により受信したデータパケット３、先に受信していたデータパケット１〜２及びＦＥＣパケット１を用いてデータパケット４を復元する。
【００２１】
このように、異なるノード間で再送が繰り返し発生した場合には、ＲＴＴ単位で伝送遅延が拡大することになる。図２５に示す例で言えば、ＴＨからＴＪの期間、すなわち１１パケット分の時間にわたってデータパケット４の伝送が遅延してしまう。
【００２２】
開示の技術は、上記に鑑みてなされたものであって、データパケットを可変レートで伝送する場合に発生する伝送遅延を抑制できる伝送装置、伝送プログラム及び伝送方法を提供することを目的とする。
【課題を解決するための手段】
【００２３】
本願の開示する伝送装置は、誤り訂正によりデータパケットを復元する誤り訂正用パケットまたはデータパケットのいずれかのパケットを受信する受信部を有する。前記受信部が受信するデータパケットには、前記誤り訂正用パケットが誤り訂正を実行することにより復元可能なデータパケットの保護範囲を特定するための保護範囲情報が書き込まれている。さらに、前記伝送装置は、前記受信部によりデータパケットが受信された順番にしたがって前記データパケットの保護範囲情報を更新する更新部を有する。さらに、前記伝送装置は、前記更新部による保護範囲情報の更新にしたがって、新たな保護範囲情報で特定されるデータパケットの誤り訂正用パケットを生成する生成部を有する。さらに、前記伝送装置は、前記更新部により保護範囲情報が更新されたデータパケットおよび前記生成部により生成された誤り訂正用パケットを送信する送信部を有する。
【発明の効果】
【００２４】
本願の開示する伝送装置の一つの態様によれば、データパケットを可変レートで伝送する場合に発生する伝送遅延を抑制できるという効果を奏する。
【図面の簡単な説明】
【００２５】
【図１】図１は、実施例１に係る伝送装置の構成を示すブロック図である。
【図２】図２は、実施例２に係る伝送システムで実行されるリレー転送の一例を示す図である。
【図３】図３は、ＲＴＰヘッダの構造の一例を示す図である。
【図４】図４は、ＦＥＣパケットの構造の一例を示す図である。
【図５】図５は、ＦＥＣヘッダの構造の一例を示す図である。
【図６】図６は、ＦＥＣパケットのパリティ情報の生成要領を説明するための図である。
【図７】図７は、実施例２に係る伝送装置の構成を示すブロック図である。
【図８】図８は、ＦＥＣパケット情報付加部１６により付加されるＦＥＣパケット情報の一例を示す図である。
【図９】図９は、ＲＴＰパケットが含むＦＥＣパケット情報の一例を示す図である。
【図１０】図１０は、実施例２に係るパケット受信処理の手順を示すフローチャートである。
【図１１】図１１は、実施例２に係るパケット受信処理の手順を示すフローチャートである。
【図１２】図１２は、実施例２に係るパケット受信処理の手順を示すフローチャートである。
【図１３】図１３は、実施例２に係る伝送装置によるデータ伝送の一例を示す図である。
【図１４】図１４は、実施例２に係る伝送装置によるデータ伝送の一例を示す図である。
【図１５】図１５は、実施例３に係る伝送装置の構成を示すブロック図である。
【図１６】図１６は、ＲＴＰパケットが含むＦＥＣパケット情報の一例を示す図である。
【図１７】図１７は、実施例３に係るパケット受信処理の手順を示すフローチャートである。
【図１８】図１８は、実施例３に係るパケット受信処理の手順を示すフローチャートである。
【図１９】図１９は、実施例３に係るパケット受信処理の手順を示すフローチャートである。
【図２０】図２０は、実施例３に係る伝送装置によるデータ伝送の一例を示す図である。
【図２１】図２１は、実施例３に係る伝送装置によるデータ伝送の一例を示す図である。
【図２２】図２２は、実施例４に係る伝送プログラムを実行するコンピュータの一例について説明するための図である。
【図２３】図２３は、ＦＥＣパケットをロスした場合における伝送遅延の一例を説明するための図である。
【図２４】図２４は、ＦＥＣパケットをロスした場合における伝送遅延の一例を説明するための図である。
【図２５】図２５は、再送による伝送遅延の拡大の一例を示す図である。
【発明を実施するための形態】
【００２６】
以下に、本願の開示する伝送装置、伝送プログラム及び伝送方法の実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例１】
【００２７】
図１は、実施例１に係る伝送装置の構成を示すブロック図である。図１に示す伝送装置１は、受信部１ａと、更新部１ｂと、生成部１ｃと、送信部１ｄとを有する。
【００２８】
受信部１ａは、誤り訂正によりデータパケットを復元する誤り訂正用パケットまたはデータパケットのいずれかのパケットを受信する。このデータパケットには、誤り訂正用パケットが誤り訂正を実行することにより復元可能なデータパケットの保護範囲を特定するための保護範囲情報が書き込まれている。
【００２９】
更新部１ｂは、受信部１ａによりデータパケットが受信された順番にしたがってデータパケットの保護範囲情報を更新する。また、生成部１ｃは、更新部１ｂによる保護範囲情報の更新にしたがって、新たな保護範囲情報で特定されるデータパケットの誤り訂正用パケットを生成する。また、送信部１ｄは、更新部１ｂにより保護範囲情報が更新されたデータパケットおよび生成部１ｃにより生成された誤り訂正用パケットを送信する。
【００３０】
このように、本実施例に係る伝送装置１では、データパケットに付加された誤り訂正用パケットの保護範囲をデータパケットの受信順に変えて転送すると共にその保護範囲にしたがって新たに誤り訂正用パケットを生成して転送する。
【００３１】
このため、本実施例に係る伝送装置１では、誤り訂正用パケットをロスしたとしてもその誤り訂正用パケットにより保護されるデータパケットの再送が発生しない限りは、データパケットの受信を終えた段階で誤り訂正用パケットが再生成される。それゆえ、本実施例に係る伝送装置１では、誤り訂正用パケットがロスしたままの状態で下位階層の装置へデータ伝送が継続される可能性を低減でき、誤り訂正用パケットのロスに起因する伝送遅延の増大を抑制できる。また、本実施例に係る伝送装置１では、同一の誤り訂正用パケットに保護されていたデータパケットのうち一部のパケットの伝送順序が再送により乖離しても、誤り訂正用パケットの保護範囲を下位階層の伝送装置への伝送順序が近いもの同士に再編成できる。このため、異なる伝送装置間で再送が繰り返し発生した場合に、伝送遅延が拡大する可能性を低減できる。よって、本実施例に係る伝送装置１によれば、データパケットを可変レートで伝送する場合に発生する伝送遅延を抑制することが可能になる。
【実施例２】
【００３２】
［システム構成］
続いて、実施例２に係る伝送システムについて説明する。図２は、実施例２に係る伝送システムで実行されるリレー転送の一例を示す図である。図２の例では、Ｐ２Ｐ（Peer  to  Peer）やＡＬＭ（Application  Layer  Multicast）などの通信方式により、映像や音声などのメディアデータ（media  data）を伝送する場合を想定する。
【００３３】
図２に示す伝送システムは、ノード（node）と呼ばれる伝送装置をツリー（tree）状に含んでなる。この伝送システムでは、ツリーの頂点に当たるノード＃１を起点として、下位階層に割り当てられたノードへデータを順次受け渡すリレー転送を可変のビットレートで行う。
【００３４】
図２に示すように、ノード＃１が配信するメディアデータは、ノード＃２及びノード＃３を経由して、ノード＃５及びノード＃６までリレー転送される。また、ノード＃１が配信するメディアデータは、ノード＃２及びノード＃４を経由して、ノード＃７及びノード＃８までリレー転送される。また、ノード＃１が配信するメディアデータは、ノード＃９を経由して、ノード＃１０及びノード＃１１までリレー転送される。
【００３５】
ノード＃１〜ノード＃１１は、通信機能を有する情報処理装置であれば伝送装置として採用できる。一例としては、パーソナルコンピュータ（personal  computer）を始め、サーバ（server）などの固定端末の他、携帯電話機、ＰＨＳ（Personal  Handyphone  System）やＰＤＡ（Personal  Digital  Assistant）などの移動体端末を適用することができる。他の一例としては、Ｌ３スイッチ（Layer  3  switch）、ルータ（router）、ルーティング（routing）機能を搭載するコンピュータなどのネットワーク（network）機器であってもかまわない。なお、以下では、ノード＃１〜ノード＃１１を区別せずに説明を行う場合にはノードと総称する。
【００３６】
［ＲＴＰヘッダ］
ここで、図２の例では、メディアデータの伝送方式としてＲＴＰ（Realtime  Transport  Protocol）を採用する場合を説明するが、ＴＣＰ（Transport  Control  Protocol）、ＵＤＰ（User  Datagram  Protocol）などの他の伝送方式を採用してもよい。
【００３７】
図２に示すノード間でメディアデータとして伝送されるＲＴＰパケットに付加されるＲＴＰヘッダについて説明する。図３は、ＲＴＰヘッダの構造の一例を示す図である。図３に示す「V」は、バージョン（version）を示す２ビット（bit）のデータである。図３に示す「P」は、ＲＴＰパケットの最後にパディング（padding）されているバイト（byte）数を示す１ビットのデータである。図３に示す「X」は、ＲＴＰヘッダの直後に拡張ヘッダを有する否かを示すフラグである。なお、ここでは、拡張ヘッダは用いないものとする。図３に示す「CC」は、寄与送信元識別子であるＣＳＲＣ（Contributing  Source）が含まれる数を示す４ビットのデータである。
【００３８】
また、図３に示す「M」は、アプリケーションデータの境界を示すマーカビット（marker  bit）である。例えば、ＭＰＥＧ（Moving  Picture  Experts  Group）４で圧縮されたメディアデータの場合には、動画像の１フレーム中の最後のデータパケットのマーカビットが「１」とされる。図３に示す「PT」は、アプリケーションデータの符号化方式を示す７ビットのデータである。図３に示す「Sequence  Number」は、メディアデータの配信元の装置により付与されたＲＴＰパケットのシーケンス番号を示す７ビットのデータである。図３に示す「Time  Stamp」は、データパケットの先頭バイトが送信された時刻を示す３２ビットのデータである。図３に示す「SSRC（Synchrozination  Source）」は、メディアデータの配信元を識別するための同期送信元識別子である。また、図３に示す「CSRC」は、データパケットを準備したホストを示す寄与送信元識別子であり、ＣＣフィールドで指定された数だけ存在する。
【００３９】
［ＦＥＣパケット］
図２に示すノードは、自装置の下位階層へメディアデータパケットを転送する場合に、ＦＥＣ（Forward  Error  Correction）パケットを付加した上で自装置の下位階層のノードへデータを伝送するものとする。このＦＥＣパケットにより、下位階層側のノードでは、パケットロスがＦＥＣパケットにより復元可能なパケット数以内である限りは、上位階層側のノードにデータパケットを再送させずともよくなる。一例として、ＦＥＣパケットの伝送にＲＦＣ２７３３を用いる場合には、少なくとも２４パケットのＲＴＰパケットにつき１パケットのＦＥＣパケットを付加することが好ましい。
【００４０】
図４は、ＦＥＣパケットの構造の一例を示す図である。図４に示すように、ＦＥＣパケットは、各ＲＴＰパケットのビット単位で排他論理和を求めることにより生成されたパリティ情報である「FEC  Recovery」と、ＦＥＣヘッダである「FEC  Header」と、ＲＴＰヘッダである「RTP  Header」とを含む。
【００４１】
図５は、ＦＥＣヘッダの構造の一例を示す図である。図５に示す「SN  Base」は、ＦＥＣパケットの保護対象となるＲＴＰパケットのシーケンス番号のオフセット番号を示す１６ビットのデータである。図５に示す「length  recovery」は、ＲＴＰパケットの長さのパリティ情報を示す１６ビットのデータである。図５に示す「E」は、ＲＴＰヘッダの拡張を行っているか否かを示すフラグである。図５に示す「PT  recovery」は、ＲＴＰパケットのＰＴビットのパリティ情報を示す７ビットのデータである。図５に示す「Mask」は、ＦＥＣパケットの保護対象となるＲＴＰパケットを示すフラグである。一例として、ＦＥＣパケットの保護対象となるＲＴＰパケットは、ＳＮ  Ｂａｓｅから２４パケットのうち、Ｍａｓｋビットでｉ番目のビットが“１”になっている場合、ＳＮ  Ｂａｓｅ＋ｉ番目のデータパケットが保護対象となる。図５に示す「TS  recovery」は、ＲＴＰパケットのTime  Stampのパリティ情報を示す３２ビットのデータである。
【００４２】
図６は、ＦＥＣパケットのパリティ情報の生成要領を説明するための図である。図６に示すように、パリティ情報は、各ＲＴＰパケットのビット単位で排他的論理和（ＸＯＲ：eXclusive  OR）を算出することにより生成される。図６に示す例で言えば、ＦＥＣパケットＦのビットｆ１は、ＲＴＰパケット１の先頭ビットａ１、ＲＴＰパケット２の先頭ビットｂ１、ＲＴＰパケット３の先頭ビットｃ１及びＲＴＰパケット４の先頭ビットｄ１をそれぞれ加算することにより算出される。また、ＦＥＣパケットＦのビットｆ２は、ＲＴＰパケット１の先頭ビットａ２、ＲＴＰパケット２の先頭ビットｂ２、ＲＴＰパケット３の先頭ビットｃ２及びＲＴＰパケット４の先頭ビットｄ２をそれぞれ加算することにより算出される。同様にして、ＦＥＣパケットＦのビットｆ３から図示しないＦＥＣパケットＦのビットｆｎが算出される。
【００４３】
［伝送装置の構成］
次に、本実施例に係る伝送装置の構成について説明する。図７は、実施例２に係る伝送装置の構成を示すブロック図である。なお、伝送装置１０は、図７に示した機能部以外にも既知のコンピュータが有する各種の機能部、例えば各種の入力デバイスや表示デバイスなどの機能を有するものとする。
【００４４】
図７に示す伝送装置１０は、パケット受信部１１と、パケット送信部１２と、再送通信部１３と、バッファ１４ａと、作業用メモリ１４ｂと、再生処理部１５とを有する。さらに、伝送装置１０は、ＦＥＣパケット情報付加部１６と、パケットロス判定部１７と、ＦＥＣパケット情報変更部１８と、ＦＥＣパケット生成制御部１９とを有する。なお、図７に示した再生処理部１５は、必ずしもノード＃１〜ノード＃１１の全てのノードに設ける必要はない。また、図７に示したＦＥＣパケット情報付加部１６は、最上位の階層とされるノード＃１だけに設けることもできる。
【００４５】
パケット受信部１１は、上位階層のノードから送信されるデータパケットまたはＦＥＣパケットのいずれかのパケットを受信する処理部である。
【００４６】
パケット送信部１２は、データパケットまたはＦＥＣパケットを下位階層のノードへ送信する処理部である。一例としては、パケット送信部１２は、バッファ１４ａに格納されたデータパケットおよびＦＥＣパケットをエンコード時のＶＢＲ（Variable  Bit  Rate）、すなわち可変レートで送信する。なお、ここでは、可変レートで転送する場合を説明したが、ＣＢＲ（constant  bit  rate）、すなわち固定レートで転送することもできる。
【００４７】
再送通信部１３は、上位階層のノードとの間で再送に関する通信を行う処理部である。一例としては、再送通信部１３は、後述のパケットロス判定部１７による指示に基づき、上位階層のノードへデータパケットの再送要求を行う。他の一例としては、再送通信部１３は、上位階層のノードから再送されたデータパケットを受信する。
【００４８】
バッファ（buffer）１４ａは、パケット受信部１１または再送通信部１３により受信されたパケットを蓄積する記憶デバイスである。このバッファ１４ａは、ノード間における伝送ジッタ（jitter）を吸収するために用いられる。また、作業用メモリ１４ｂは、後述のパケットロス判定部１７、ＦＥＣパケット情報変更部１８及びＦＥＣパケット生成制御部１９により使用されるメモリである。
【００４９】
これらバッファ１４ａ及び作業用メモリ１４ｂの一例としては、ＲＡＭ（Random  Access  Memory)、ＲＯＭ（Read  Only  Memory）やフラッシュメモリ（flash  memory）などの半導体メモリ素子が採用される。なお、バッファ１４ａは、ハードディスク、光ディスクなどの記憶装置を採用することとしてもかまわない。
【００５０】
再生処理部１５は、バッファ１４ａに格納されたデータパケットの再生処理を行う処理部である。一例として、メディアデータの圧縮符号化方式としてＭＰＥＧを用いる場合には、再生処理部は、データパケットをデコード（decode）するＭＰＥＧデコーダ（decoder）として機能する。再生処理部１５は、デコードしたメディアデータを図示しない表示部及び音声出力部を介して再生する。なお、メディアデータの圧縮符号化方式は、必ずしもＭＰＥＧである必要はなく、他の符号化方式を用いることとしてもよい。
【００５１】
ＦＥＣパケット情報付加部１６は、メディアデータからパケット化されたデータパケットにＦＥＣパケット情報を付加する処理部である。このＦＥＣパケット情報には、ＦＥＣパケットが誤り訂正を実行することにより復元可能なデータパケットの保護範囲、ＦＥＣパケットに付与されるシーケンス番号、データパケットの受信順に付与される追加シーケンス番号が挙げられる。なお、ＦＥＣパケット情報の付加は、図２に示すノード＃２及びノード＃９以降の下位階層のノードでは実行されない。
【００５２】
図８は、ＦＥＣパケット情報付加部１６により付加されるＦＥＣパケット情報の一例を示す図である。なお、図８の例では、ＦＥＣパケット情報に該当する部分の塗りつぶしを網掛けにより図示している。図８に示すように、ＦＥＣパケット情報付加部１６は、ＦＥＣパケットによるＲＴＰパケットの保護範囲を保護対象とするＲＴＰパケットの「CSRC」の後に「FEC  Coverage」として付加する。また、ＦＥＣパケット情報付加部１６は、ＦＥＣパケットのシーケンス番号を保護対象とするＲＴＰパケットの「FEC  Coverage」の後に「FEC  Sequence  Number」として付加する。さらに、ＦＥＣパケット情報付加部１６は、追加シーケンス番号を保護対象とするＲＴＰパケットの「FEC  Sequence  Number」の後に「Additional  Sequence  Number」として付加する。
【００５３】
図９は、ＲＴＰパケットが含むＦＥＣパケット情報の一例を示す図である。図９に示す例では、パケットを模式化した小包にＲＴＰパケットにＦＥＣパケット情報を図示している。図９に示す符号３１は、メディアデータをパケット化する際にデータパケットに付与されたデータパケットのシーケンス番号を指す。図９に示す符号３２は、各伝送装置でデータパケットの受信順に付与される追加シーケンス番号を指す。図９に示す符号３３は、ＦＥＣパケットによるＲＴＰパケットの保護範囲を指す。また、図９に示す符号３４は、ＦＥＣパケットのシーケンス番号を指す。
【００５４】
図９に示す例では、ＲＴＰパケットのシーケンス番号が「１」であり、ＲＴＰパケットの追加シーケンス番号が「１」であることを示し、また、ＲＴＰパケットを保護するＦＥＣパケットのシーケンス番号が「１」であることを示す。さらに、図９に示す例では、ＦＥＣパケットが保護対象とするＲＴＰパケット数が「４」であることを示す。すなわち、幾つのＲＴＰパケットから生成されたパリティ情報であるのかを示すことにもなる。
【００５５】
図７の説明に戻り、パケットロス判定部１７は、パケット受信部１１により受信されたＦＥＣパケット情報を用いて、データパケットのパケットロスを判定する処理部である。
【００５６】
このパケットロス判定部１７は、パケット受信部１１または再送通信部１３によりパケットが受信される度に、作業用メモリ１４ｂ内に記憶されたデータパケットの受信回数を加算する更新を行う。すなわち、パケットロス判定部１７は、作業用メモリ１４ｂを用いて、最初にパケットを受信してから今回受信するまでのデータパケットの累積受信回数を計測する。これにより受信パケットの受信順序を判別する。
【００５７】
まず、パケット受信部１１により再送ではない通常のデータパケットを受信した場合のパケットロスの判定要領について説明する。データパケットを受信した場合には、パケットロス判定部１７は、最初の受信パケットであるか否かを判定する。このとき、最初の受信パケットであった場合には、パケットロス判定部１７は、追加シーケンス番号、ＦＥＣパケットの保護範囲及びＦＥＣパケットのシーケンス番号などのＦＥＣパケット情報を作業用メモリ１４ｂへ登録する。そして、パケットロス判定部１７は、下位階層への伝送用とは別にＦＥＣパケットの生成に使用するためのデータパケットを複製した上でバッファ１４ａへ格納する。
【００５８】
一方、最初の受信パケットではない場合には、パケットロス判定部１７は、今回に受信したデータパケットのＲＴＰヘッダに書き込まれている追加シーケンス番号と、１つ前に受信したデータパケットの追加シーケンス番号とが連番であるか否かを判定する。つまり、パケットロス判定部１７は、前後に受信したデータパケットの追加シーケンス番号の差が１であるか否かを判定する。このように、追加シーケンス番号が連番であるか否かを判定することにより、パケットロスの有無が検知できる。
【００５９】
さらに、パケットロス判定部１７は、作業用メモリ１４ｂに記憶されたＦＥＣパケット情報を参照して、今回に受信したデータパケットと前回に受信したデータパケットのとの間でＦＥＣパケットの保護範囲及びシーケンス番号が同一であるか否かを判定する。このように、ＦＥＣパケットの保護範囲及びシーケンス番号が同一であるか否かを判定することにより、後述のＦＥＣパケット情報変更部１８により追加シーケンス番号だけを変更するのか、あるいはＦＥＣパケット情報も併せて変更するのかを判断できる。
【００６０】
このとき、追加シーケンス番号が連番であり、かつＦＥＣパケットの保護範囲及びシーケンス番号が同一である場合には、パケットロス判定部１７は、今回に受信したデータパケットのＸＯＲを後述のＦＥＣパケット生成制御部１９に算出させる。その後、パケットロス判定部１７は、作業用メモリ１４ｂに記憶されている追加シーケンス番号を今回に受信したデータパケットの追加シーケンス番号に更新する。そして、パケットロス判定部１７は、今回までにＸＯＲが算出されたデータパケットの数が作業用メモリ１４ｂに記憶されたＦＥＣパケットの保護範囲に到達したか否かを判定する。この結果、ＦＥＣパケットの保護範囲に到達した場合には、パケットロス判定部１７は、それまでに算出されていたＸＯＲの算出結果を用いてＦＥＣパケットを生成するようにＦＥＣパケット生成制御部１９に指示する。
【００６１】
また、追加シーケンス番号が連番であり、かつＦＥＣパケットの保護範囲及びシーケンス番号が同一でない場合には、パケットロス判定部１７は、次のＦＥＣパケットの生成に使用するためのデータパケットを複製した上でバッファ１４ａへ格納する。その後、パケットロス判定部１７は、今回受信したデータパケットの追加シーケンス番号、ＦＥＣパケットの保護範囲及びＦＥＣパケットのシーケンス番号などのＦＥＣパケット情報を作業用メモリ１４ｂへ登録する。ここでのＦＥＣパケット情報の登録は、今回までに受信したデータパケットを保護していたＦＥＣパケットの次のＦＥＣパケットにより保護されているデータパケットに関するパケットロスを判定するために実行される。
【００６２】
また、追加シーケンス番号が連番ではなく、かつＦＥＣパケットの保護範囲及びシーケンス番号が同一である場合には、パケットロス判定部１７は、次のような処理を行う。すなわち、パケットロス判定部１７は、今回に受信したデータパケットに書き込まれているＦＥＣパケットの保護範囲において再送を要するパケット数がロスしているか否かを判定する。一例として、ＦＥＣパケットにより復元可能なパケット数が１つである場合には、パケットロス判定部１７は、パケットロス数が２つ以上であるか否かを判定する。このとき、再送を要するパケット数をロスしている場合には、パケットロス判定部１７は、パケットロスしているデータパケットのうち追加シーケンス番号が小さいものから順に所定数のデータパケットの再送要求を再送通信部１３に送信させる。一例として、パケットロス数が２つである場合には、パケットロス判定部１７は、ＦＥＣパケットにより復元可能なパケット数「１」を残し、他のデータパケットの再送要求を再送通信部１３に送信させる。その上で、パケットロス判定部１７は、再送要求を行ったデータパケットに関する情報、例えばデータパケットのシーケンス番号を作業用メモリ１４ｂ内に記憶された再送待ちリストへ登録する。その後、パケットロス判定部１７は、作業用メモリ１４ｂに記憶されている追加シーケンス番号を今回に受信したデータパケットの追加シーケンス番号に更新する。
【００６３】
また、追加シーケンス番号が連番ではなく、かつＦＥＣパケットの保護範囲及びシーケンス番号が同一ではない場合には、パケットロス判定部１７は、次のような処理を行う。すなわち、パケットロス判定部１７は、今回に受信したデータパケットに書き込まれているＦＥＣパケットの保護範囲の直前の保護範囲、すなわち作業用メモリ１４ｂに記憶されている保護範囲において再送を要するパケット数をロスしているか否かを判定する。このとき、再送を要するパケット数をロスしている場合には、パケットロス判定部１７は、パケットロスしているデータパケットのうち追加シーケンス番号が小さいものから順に所定数のデータパケットの再送要求を再送通信部１３に送信させる。その上で、パケットロス判定部１７は、再送要求を行ったデータパケットに関する情報、例えばデータパケットのシーケンス番号を作業用メモリ１４ｂ内に記憶された再送待ちリストへ登録する。その後、パケットロス判定部１７は、作業用メモリ１４ｂに記録されているＦＥＣパケット情報を今回に受信したデータパケットの追加シーケンス番号、ＦＥＣパケットの保護範囲及びＦＥＣパケットのシーケンス番号へ更新する。
【００６４】
次に、パケット受信部１１によりＦＥＣパケットを受信した場合のパケットロスの判定要領について説明する。ＦＥＣパケットを受信した場合には、パケットロス判定部１７は、今回に受信したＦＥＣパケットにより保護されているデータパケットのシーケンス番号を取得する。ここで、パケットロス判定部１７は、作業用メモリ１４ｂに記憶された変更情報リストの中に、先に取得したデータパケットのシーケンス番号が登録されているか否かを判定する。なお、変更情報リストは、後述のＦＥＣパケット情報変更部１８によりＦＥＣパケット情報が変更されたデータパケットのシーケンス番号が登録される。
【００６５】
このとき、変更情報リストの中にデータパケットのシーケンス番号が登録されていない場合には、パケットロス判定部１７は、データパケットのシーケンス番号に対応するデータパケットをバッファ１４ａから検索する。一方、変更情報リストの中にデータパケットのシーケンス番号が登録されている場合には、パケットロス判定部１７は、変更情報リストに登録されているデータパケットのシーケンス番号に対応するデータパケットをバッファ１４ａから検索する。この場合には、ＦＥＣパケット情報が変更される前のデータパケットおよびＦＥＣパケット情報が変更された後の両方のデータパケットが抽出されることになる。
【００６６】
そして、パケットロス判定部１７は、今回に検索したデータパケットに書き込まれているＦＥＣパケットの保護範囲において再送を要するパケット数がロスしているか否かを判定する。このとき、再送を要するパケット数をロスしている場合には、パケットロス判定部１７は、パケットロスしているデータパケットのうち追加シーケンス番号が小さいものから順に所定数のデータパケットの再送要求を再送通信部１３に送信させる。その上で、パケットロス判定部１７は、再送要求を行ったデータパケットに関する情報、例えばデータパケットのシーケンス番号を作業用メモリ１４ｂ内に記憶された再送待ちリストへ登録する。
【００６７】
一方、再送を要するパケット数をロスしていない場合には、パケットロス判定部１７は、今回に検索したデータパケットに書き込まれているＦＥＣパケットの保護範囲においてパケットロスが存在するか否かをさらに判定する。このとき、パケットロスが存在する場合には、ＦＥＣパケットによる復元が可能である。このため、パケットロス判定部１７は、今回に受信したＦＥＣパケットを用いて、パケットロスしているデータパケットを後述のＦＥＣパケット生成制御部１９に復元させる。その後、パケットロス判定部１７は、作業用メモリ１４ｂに記録されているＦＥＣパケット情報を今回に復元したデータパケットの追加シーケンス番号、ＦＥＣパケットの保護範囲及びＦＥＣパケットのシーケンス番号へ更新する。
【００６８】
ＦＥＣパケット情報変更部１８は、パケット受信部１１および再送通信部１３によりデータパケットが受信された順番にしたがってデータパケットのＦＥＣパケット情報を更新する処理部である。
【００６９】
一例としては、パケット受信部１１によりデータパケットを受信した場合には、ＦＥＣパケット情報変更部１８は、パケットロス判定部１７によりパケットロスが検知された場合に、ＦＥＣパケット情報の変更を行う。このとき、前後のデータパケットにそれぞれ書き込まれているＦＥＣパケットの保護範囲及びシーケンス番号が同一であるか否かにより、ＦＥＣパケット情報のうちいずれの項目の情報を変更するかが変わる。
【００７０】
このとき、ＦＥＣパケットの保護範囲及びシーケンス番号が同一である場合には、ＦＥＣパケット情報変更部１８は、受信したデータパケットのＲＴＰヘッダに書き込まれているＦＥＣパケット情報のうち追加シーケンス番号を変更する。つまり、ＦＥＣパケット情報変更部１８は、作業用メモリ１４ｂに記憶された受信回数、すなわちデータパケットの受信順序を今回に受信したデータパケットのＲＴＰヘッダに割り当てられた追加シーケンス番号の領域に書き込む。その上で、ＦＥＣパケット情報変更部１８は、今回に受信したデータパケットに付与されているシーケンス番号を作業用メモリ１４ｂ内の変更情報リストへ登録する。
【００７１】
一方、ＦＥＣパケットの保護範囲及びシーケンス番号が同一でない場合には、ＦＥＣパケット情報変更部１８は、次のような処理を行う。すなわち、ＦＥＣパケット情報変更部１８は、受信したデータパケットのＲＴＰヘッダに書き込まれている追加シーケンス番号、ＦＥＣパケットの保護範囲及びＦＥＣパケットのシーケンス番号を変更する。その上で、ＦＥＣパケット情報変更部１８は、今回に受信したデータパケットに付与されているシーケンス番号を作業用メモリ１４ｂ内の変更情報リストへ登録する。
【００７２】
このように、全てのＦＥＣパケット情報を変更する場合には、ＦＥＣパケット情報変更部１８は、今回に受信したデータパケットの受信順序をＲＴＰヘッダに割り当てられた追加シーケンス番号の領域に書き込む。さらに、ＦＥＣパケット情報変更部１８は、作業用メモリ１４ｂに記憶されているＦＥＣパケットの保護範囲及びＦＥＣパケットのシーケンス番号をデータパケットのＲＴＰヘッダに書き込む。
【００７３】
他の一例としては、ＦＥＣパケット情報変更部１８は、後述のＦＥＣパケット生成制御部１９によりデータパケットが復元された場合にも、復元したデータパケットの全てのＦＥＣパケット情報を変更する。その上で、ＦＥＣパケット情報変更部１８は、今回に受信したデータパケットに付与されているシーケンス番号を作業用メモリ１４ｂ内の変更情報リストへ登録する。
【００７４】
更なる一例としては、ＦＥＣパケット情報変更部１８は、再送通信部１３により再送のデータパケットが受信された場合にも、再送パケットの全てのＦＥＣパケット情報を変更する。その上で、ＦＥＣパケット情報変更部１８は、今回に受信したデータパケットに付与されているシーケンス番号を作業用メモリ１４ｂ内の変更情報リストへ登録する。
【００７５】
ＦＥＣパケット生成制御部１９は、ＦＥＣパケットの生成を制御する処理部である。一例としては、ＦＥＣパケット生成制御部１９は、パケットロス判定部１７による指示に基づき、パケット受信部１１により受信されたデータパケット、再送通信部１３により受信された再送のデータパケットのＸＯＲを算出する。このとき、ＦＥＣパケット生成制御部１９は、ＸＯＲの算出を終えたデータパケットの数が作業用メモリ１４ｂに記憶されたＦＥＣパケットの保護範囲に到達した場合には、それまでに算出したデータパケットのＸＯＲからＦＥＣパケットを生成する。他の一例としては、ＦＥＣパケット生成制御部１９は、パケット受信部１１により受信されたＦＥＣパケットを用いて、ＦＥＣパケットの保護範囲の中でパケットロスしているデータパケットを復元する。
【００７６】
なお、パケット受信部１１、パケット送信部１２、再送通信部１３、再生処理部１５、ＦＥＣパケット情報付加部１６、パケットロス判定部１７、ＦＥＣパケット情報変更部１８及びＦＥＣパケット生成制御部１９には、各種の集積回路や電子回路を採用できる。例えば、集積回路としては、ＡＳＩＣ（Application  Specific  Integrated  Circuit）が挙げられる。また、電子回路としては、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などが挙げられる。
【００７７】
［処理の流れ］
次に、本実施例に係る伝送装置の処理の流れについて説明する。図１０〜図１２は、実施例２に係るパケット受信処理の手順を示すフローチャートである。この処理は、パケット受信部１１または再送通信部１３のいずれかでパケットが受信された場合に起動する処理である。
【００７８】
図１０に示すように、上位階層のノードからパケットを受信すると、パケットロス判定部１７は、受信パケットが再送ではない通常のデータパケットであるのか否かを判定する（ステップＳ１０１）。
【００７９】
このとき、受信パケットが通常のデータパケットである場合（ステップＳ１０１肯定）には、図１０に示すステップＳ１０３〜Ｓ１３３までのデータパケット受信処理が実行される。また、受信パケットが通常のデータパケットではなくＦＥＣパケットである場合（ステップＳ１０１否定かつステップＳ１０２肯定）には、図１１に示すステップＳ２０１〜Ｓ２１７のＦＥＣパケット受信処理が実行される。また、受信パケットが通常データパケットまたはＦＥＣパケットでもなく、再送パケットである場合には、（ステップＳ１０１否定かつステップＳ１０２否定）には、図１２に示すステップＳ３０１〜Ｓ３１０の再送パケット受信処理が実行される。
【００８０】
まず、データパケット受信処理を説明する。受信パケットが通常のデータパケットである場合（ステップＳ１０１肯定）には、パケットロス判定部１７は、データパケットのＲＴＰヘッダに書き込まれているＦＥＣパケット情報を取得する（ステップＳ１０３）。例えば、パケットロス判定部１７は、ＦＥＣパケット情報として、追加シーケンス番号、ＦＥＣパケットの保護範囲およびＦＥＣパケットのシーケンス番号を取得する。
【００８１】
続いて、パケットロス判定部１７は、データパケットが最初の受信パケットであるか否かを判定する（ステップＳ１０４）。このとき、最初の受信パケットであった場合（ステップＳ１０４肯定）には、パケットロス判定部１７は、次のような処理を実行する。すなわち、パケットロス判定部１７は、追加シーケンス番号、ＦＥＣパケットの保護範囲及びＦＥＣパケットのシーケンス番号などのＦＥＣパケット情報を作業用メモリ１４ｂへ登録する（ステップＳ１０５）。
【００８２】
そして、パケットロス判定部１７は、下位階層への伝送用とは別にＦＥＣパケットの生成に使用するためのデータパケットを複製した上でバッファ１４ａへ格納する（ステップＳ１０６）。続いて、ＦＥＣパケット生成制御部１９は、今回に受信したデータパケットのＸＯＲを算出する（ステップＳ１０７）。その上で、ＦＥＣパケット生成制御部１９は、今回に受信したデータパケットを伝送用のデータパケットとしてバッファ１４ａへ格納し（ステップＳ１０８）、処理を終了する。
【００８３】
一方、最初の受信パケットではない場合（ステップＳ１０４否定）には、パケットロス判定部１７は、次のような処理を実行する。すなわち、パケットロス判定部１７は、今回に受信したデータパケットのＲＴＰヘッダに書き込まれている追加シーケンス番号と、１つ前に受信したデータパケットの追加シーケンス番号とが連番であるか否かを判定する（ステップＳ１０９）。
【００８４】
さらに、パケットロス判定部１７は、今回に受信したデータパケットと前回に受信したデータパケットのとの間でＦＥＣパケットの保護範囲及びシーケンス番号が同一であるか否かを判定する（ステップＳ１１０およびステップＳ１１７）。
【００８５】
ここで、追加シーケンス番号が連番であり、かつＦＥＣパケットの保護範囲及びシーケンス番号が同一である場合（ステップＳ１１０肯定かつステップＳ１１７肯定）には、ＦＥＣパケット生成制御部１９は、次のような処理を実行する。すなわち、ＦＥＣパケット生成制御部１９は、今回に受信したデータパケットのＸＯＲを算出する（ステップＳ１１１）。
【００８６】
そして、ＦＥＣパケット生成制御部１９は、ＸＯＲの算出を終えたデータパケットの数が作業用メモリ１４ｂに記憶されたＦＥＣパケットの保護範囲に到達したか否かを判定する（ステップＳ１１２）。続いて、ＦＥＣパケットの保護範囲に到達した場合（ステップＳ１１２肯定）には、ＦＥＣパケット生成制御部１９は、それまでに算出したデータパケットのＸＯＲからＦＥＣパケットを生成する（ステップＳ１１３）。
【００８７】
その後、パケットロス判定部１７は、作業用メモリ１４ｂに記憶されている追加シーケンス番号を今回に受信したデータパケットの追加シーケンス番号に更新する（ステップＳ１１４）。そして、ＦＥＣパケット生成制御部１９は、パケット受信部１１により受信されたデータパケットとともに今回生成したＦＥＣパケットをバッファ１４ａへ格納し（ステップＳ１０８）、処理を終了する。
【００８８】
また、追加シーケンス番号が連番であり、かつＦＥＣパケットの保護範囲及びシーケンス番号が同一でない場合（ステップＳ１０９肯定かつステップＳ１１０否定）には、パケットロス判定部１７は、次のような処理を実行する。すなわち、パケットロス判定部１７は、次のＦＥＣパケットの生成に使用するためのデータパケットを複製した上でバッファ１４ａへ格納する（ステップＳ１１５）。
【００８９】
そして、パケットロス判定部１７は、今回受信したデータパケットの追加シーケンス番号、ＦＥＣパケットの保護範囲及びＦＥＣパケットのシーケンス番号などのＦＥＣパケット情報を作業用メモリ１４ｂへ更新する（ステップＳ１１６）。その後、ＦＥＣパケット生成制御部１９は、今回に受信したデータパケットを伝送用のデータパケットとしてバッファ１４ａへ格納し（ステップＳ１０８）、処理を終了する。
【００９０】
また、追加シーケンス番号が連番ではなく、かつＦＥＣパケットの保護範囲及びシーケンス番号が同一である場合（ステップＳ１０９否定かつステップＳ１１７肯定）には、パケットロス判定部１７は、次のような処理を行う。すなわち、パケットロス判定部１７は、今回に受信したデータパケットに書き込まれているＦＥＣパケットの保護範囲において所定数、例えば再送を要するパケット数がロスしているか否かを判定する（ステップＳ１１８）。なお、再送を要するパケット数をロスしていない場合（ステップＳ１１８否定）には、そのままステップＳ１２１の処理へ移行する。
【００９１】
このとき、再送を要するパケット数をロスしている場合（ステップＳ１１８肯定）には、パケットロス判定部１７は、次のような処理を行う。すなわち、パケットロス判定部１７は、パケットロスしているデータパケットのうち追加シーケンス番号が小さいものから順に不足分のデータパケットの再送要求を再送通信部１３に送信させる（ステップＳ１１９）。その上で、パケットロス判定部１７は、再送要求を行ったデータパケットに関する情報、例えばデータパケットのシーケンス番号を作業用メモリ１４ｂ内に記憶された再送待ちリストへ登録する（ステップＳ１２０）。
【００９２】
そして、ＦＥＣパケット情報変更部１８は、受信したデータパケットのＲＴＰヘッダに書き込まれているＦＥＣパケット情報のうち追加シーケンス番号を変更する（ステップＳ１２１）。その上で、ＦＥＣパケット情報変更部１８は、今回に受信したデータパケットに付与されているシーケンス番号を作業用メモリ１４ｂ内の変更情報リストへ登録する（ステップＳ１２２）。
【００９３】
続いて、パケットロス判定部１７は、作業用メモリ１４ｂに記憶されている追加シーケンス番号を今回に受信したデータパケットの追加シーケンス番号に更新する（ステップＳ１２３）。そして、ＦＥＣパケット生成制御部１９は、今回に受信したデータパケットのＸＯＲを算出する（ステップＳ１２４）。その後、ＦＥＣパケット生成制御部１９は、パケット受信部１１により受信されたデータパケットをバッファ１４ａへ格納し（ステップＳ１０８）、処理を終了する。
【００９４】
また、追加シーケンス番号が連番ではなく、かつＦＥＣパケットの保護範囲及びシーケンス番号が同一ではない場合（ステップＳ１０９否定かつステップＳ１１７否定）には、パケットロス判定部１７は、次のような処理を行う。すなわち、パケットロス判定部１７は、今回に受信したデータパケットに書き込まれているＦＥＣパケットの保護範囲の直前の保護範囲において所定数、例えば再送を要するパケット数をロスしているか否かを判定する（ステップＳ１２５）。なお、再送を要するパケット数をロスしていない場合（ステップＳ１２５否定）には、そのままステップＳ１２８の処理へ移行する。
【００９５】
このとき、再送を要するパケット数をロスしている場合（ステップＳ１２５肯定）には、パケットロス判定部１７は、次のような処理を行う。すなわち、パケットロス判定部１７は、パケットロスしているデータパケットのうち追加シーケンス番号が小さいものから順に不足分のデータパケットの再送要求を再送通信部１３に送信させる（ステップＳ１２６）。その上で、パケットロス判定部１７は、再送要求を行ったデータパケットに関する情報、例えばデータパケットのシーケンス番号を作業用メモリ１４ｂ内に記憶された再送待ちリストへ登録する（ステップＳ１２７）。
【００９６】
そして、ＦＥＣパケット情報変更部１８は、受信したデータパケットのＲＴＰヘッダに書き込まれている追加シーケンス番号、ＦＥＣパケットの保護範囲及びＦＥＣパケットのシーケンス番号を変更する（ステップＳ１２８）。その上で、ＦＥＣパケット情報変更部１８は、今回に受信したデータパケットに付与されているシーケンス番号を作業用メモリ１４ｂ内の変更情報リストへ登録する（ステップＳ１２９）。
【００９７】
その後、パケットロス判定部１７は、作業用メモリ１４ｂに記録されているＦＥＣパケット情報を今回に受信したデータパケットの追加シーケンス番号、ＦＥＣパケットの保護範囲及びＦＥＣパケットのシーケンス番号へ更新する（ステップＳ１３０）。
【００９８】
続いて、ＦＥＣパケット生成制御部１９は、今回に受信したデータパケットのＸＯＲを算出する（ステップＳ１３１）。そして、ＦＥＣパケット生成制御部１９は、ＸＯＲの算出を終えたデータパケットの数が作業用メモリ１４ｂに記憶されたＦＥＣパケットの保護範囲に到達したか否かを判定する（ステップＳ１３２）。
【００９９】
そして、ＦＥＣパケットの保護範囲に到達した場合（ステップＳ１３２肯定）には、それまでに算出したデータパケットのＸＯＲからＦＥＣパケットを生成する（ステップＳ１３３）。その後、ＦＥＣパケット生成制御部１９は、パケット受信部１１により受信されたデータパケットとともに今回生成したＦＥＣパケットをバッファ１４ａへ格納し（ステップＳ１０８）、処理を終了する。
【０１００】
また、ＦＥＣパケットの保護範囲に到達していない場合（ステップＳ１３２否定）には、ＦＥＣパケット生成制御部１９は、パケット受信部１１により受信されたデータパケットをバッファ１４ａへ格納し（ステップＳ１０８）、処理を終了する。
【０１０１】
次に、図１１を用いて、上述したＦＥＣパケット受信処理について説明する。ＦＥＣパケットを受信した場合（ステップＳ１０２肯定）には、パケットロス判定部１７は、今回に受信したＦＥＣパケットにより保護されているデータパケットのシーケンス番号を取得する（ステップＳ２０１）。
【０１０２】
ここで、パケットロス判定部１７は、作業用メモリ１４ｂに記憶された変更情報リストの中に、先に取得したデータパケットのシーケンス番号が登録されているか否かを判定する（ステップＳ２０２）。
【０１０３】
このとき、変更情報リストの中にデータパケットのシーケンス番号が登録されている場合（ステップＳ２０２肯定）には、パケットロス判定部１７は、次のような処理を実行する。すなわち、パケットロス判定部１７は、ＦＥＣパケット情報が変更される前のデータパケットおよびＦＥＣパケット情報が変更された後の両方のデータパケットをバッファ１４ａから検索する（ステップＳ２０３）。
【０１０４】
一方、変更情報リストの中にデータパケットのシーケンス番号が登録されていない場合（ステップＳ２０２否定）には、パケットロス判定部１７は、データパケットのシーケンス番号に対応するデータパケットをバッファ１４ａから検索する（ステップＳ２０４）。
【０１０５】
そして、パケットロス判定部１７は、今回に検索したデータパケットに書き込まれているＦＥＣパケットの保護範囲において再送を要するパケット数がロスしているか否かを判定する（ステップＳ２０５）。
【０１０６】
このとき、再送を要するパケット数をロスしている場合（ステップＳ２０５肯定）には、パケットロス判定部１７は、次のような処理を行う。すなわち、パケットロス判定部１７は、パケットロスしたデータパケット、すなわち再送要求の対象とするパケットが作業用メモリ１４ｂに記憶された再送待ちリストに登録されているか否かを判定する（ステップＳ２０６）。なお、再送待ちリストに登録されていない場合（ステップＳ２０６否定）には、そのまま処理を終了する。
【０１０７】
そして、再送待ちリストに登録されている場合（ステップＳ２０６肯定）には、パケットロス判定部１７は、次のような処理を実行する。すなわち、パケットロス判定部１７は、パケットロスしているデータパケットのうち追加シーケンス番号が小さいものから順に不足分のデータパケットの再送要求を再送通信部１３に送信させる（ステップＳ２０７）。その上で、パケットロス判定部１７は、再送要求を行ったデータパケットに関する情報、例えばデータパケットのシーケンス番号を作業用メモリ１４ｂ内に記憶された再送待ちリストへ登録し（ステップＳ２０８）、処理を終了する。
【０１０８】
一方、再送を要するパケット数をロスしていない場合（ステップＳ２０５否定）には、パケットロス判定部１７は、次のような処理を行う。すなわち、パケットロス判定部１７は、今回に検索したデータパケットに書き込まれているＦＥＣパケットの保護範囲においてパケットロスが存在するか否かをさらに判定する（ステップＳ２０９）。
【０１０９】
このとき、パケットロスが存在しない場合（ステップＳ２０９否定）には、そのまま処理を終了する。一方、パケットロスが存在する場合（ステップＳ２０９肯定）には、ＦＥＣパケット生成制御部１９は、今回に受信したＦＥＣパケットを用いて、パケットロスしているデータパケットを復元する（ステップＳ２１０）。
【０１１０】
そして、ＦＥＣパケット情報変更部１８は、復元したデータパケットのＲＴＰヘッダに書き込まれている追加シーケンス番号、ＦＥＣパケットの保護範囲及びＦＥＣパケットのシーケンス番号を変更する（ステップＳ２１１）。その上で、ＦＥＣパケット情報変更部１８は、復元したデータパケットに付与されているシーケンス番号を作業用メモリ１４ｂ内の変更情報リストへ登録する（ステップＳ２１２）。
【０１１１】
その後、パケットロス判定部１７は、作業用メモリ１４ｂに記録されているＦＥＣパケット情報を今回に復元したデータパケットの追加シーケンス番号、ＦＥＣパケットの保護範囲及びＦＥＣパケットのシーケンス番号へ更新する（ステップＳ２１３）。
【０１１２】
続いて、ＦＥＣパケット生成制御部１９は、復元したデータパケットのＸＯＲを算出する（ステップＳ２１４）。そして、ＦＥＣパケット生成制御部１９は、ＸＯＲの算出を終えたデータパケットの数が作業用メモリ１４ｂに記憶されたＦＥＣパケットの保護範囲に到達したか否かを判定する（ステップＳ２１５）。
【０１１３】
そして、ＦＥＣパケットの保護範囲に到達した場合（ステップＳ２１５肯定）には、それまでに算出したデータパケットのＸＯＲからＦＥＣパケットを生成する（ステップＳ２１６）。その後、ＦＥＣパケット生成制御部１９は、今回に復元したデータパケットとともに今回に生成したＦＥＣパケットをバッファ１４ａへ格納し（ステップＳ２１７）、処理を終了する。
【０１１４】
また、ＦＥＣパケットの保護範囲に到達していない場合（ステップＳ２１５否定）には、ＦＥＣパケット生成制御部１９は、今回に復元したデータパケットをバッファ１４ａへ格納し（ステップＳ２１７）、処理を終了する。
【０１１５】
次に、図１２を用いて、上述した再送パケット受信処理について説明する。再送のデータパケットを受信した場合（ステップＳ１０２否定）には、パケットロス判定部１７は、再送のデータパケットのＲＴＰヘッダに書き込まれているデータパケットのシーケンス番号を取得する（ステップＳ３０１）。
【０１１６】
そして、パケットロス判定部１７は、再送のデータパケットのシーケンス番号が作業用メモリ１４ｂに記憶された再送待ちリストに登録されているか否かを判定する（ステップＳ３０２）。なお、再送待ちリストに登録されていない場合（ステップＳ３０２否定）には、そのまま処理を終了する。
【０１１７】
そして、再送待ちリストに登録されている場合（ステップＳ３０２肯定）には、パケットロス判定部１７は、再送を受けたデータパケットのシーケンス番号を再送待ちリストから削除する（ステップＳ３０３）。
【０１１８】
そして、ＦＥＣパケット情報変更部１８は、再送されたデータパケットのＲＴＰヘッダに書き込まれている追加シーケンス番号、ＦＥＣパケットの保護範囲及びＦＥＣパケットのシーケンス番号を変更する（ステップＳ３０４）。その上で、ＦＥＣパケット情報変更部１８は、再送されたデータパケットに付与されているシーケンス番号を作業用メモリ１４ｂ内の変更情報リストへ登録する（ステップＳ３０５）。
【０１１９】
その後、パケットロス判定部１７は、作業用メモリ１４ｂに記録されているＦＥＣパケット情報を今回に再送されたデータパケットの追加シーケンス番号、ＦＥＣパケットの保護範囲及びＦＥＣパケットのシーケンス番号へ更新する（ステップＳ３０６）。
【０１２０】
続いて、ＦＥＣパケット生成制御部１９は、再送されたデータパケットのＸＯＲを算出する（ステップＳ３０７）。そして、ＦＥＣパケット生成制御部１９は、ＸＯＲの算出を終えたデータパケットの数が作業用メモリ１４ｂに記憶されたＦＥＣパケットの保護範囲に到達したか否かを判定する（ステップＳ３０８）。
【０１２１】
そして、ＦＥＣパケットの保護範囲に到達した場合（ステップＳ３０８肯定）には、それまでに算出したデータパケットのＸＯＲからＦＥＣパケットを生成する（ステップＳ３０９）。その後、ＦＥＣパケット生成制御部１９は、今回に再送されたデータパケットとともに今回に生成したＦＥＣパケットをバッファ１４ａへ格納し（ステップＳ３１０）、処理を終了する。
【０１２２】
また、ＦＥＣパケットの保護範囲に到達していない場合（ステップＳ３０８否定）には、ＦＥＣパケット生成制御部１９は、今回に再送されたデータパケットをバッファ１４ａへ格納し（ステップＳ３１０）、処理を終了する。
【０１２３】
［実施例２の効果］
上述してきたように、本実施例に係る伝送装置１０は、ＦＥＣパケットをロスしたとしてもそのＦＥＣパケットにより保護されるデータパケットの再送が発生しない限りは、データパケットの受信を終えた段階でＦＥＣパケットが再生成される。それゆえ、本実施例に係る伝送装置１０では、ＦＥＣパケットがロスしたままの状態で下位階層のノードへデータ伝送が継続される可能性を低減でき、ＦＥＣパケットのロスに起因する伝送遅延の増大を抑制できる。また、本実施例に係る伝送装置１０では、同一のＦＥＣパケットに保護されていたデータパケットのうち一部のパケットの伝送順序が再送により乖離しても、ＦＥＣパケットの保護範囲を下位階層のノードへの伝送順序が近いもの同士に再編成できる。このため、異なるノード間で再送が繰り返し発生した場合に、伝送遅延が拡大する可能性を低減できる。よって、本実施例に係る伝送装置１０によれば、データパケットを可変レートで伝送する場合に発生する伝送遅延を抑制することが可能である。
【０１２４】
さらに、本実施例に係る伝送装置１０は、データパケットが受信された場合に、該データパケットに含まれる追加シーケンス番号を用いて、データパケットのパケットロスを判定する。そして、本実施例に係る伝送装置１０は、パケットロスの判定結果に基づき、上位階層のノードへデータパケットの再送要求を行い、再送されたデータパケットを受信する。その上で、本実施例に係る伝送装置１０は、再送により受信したデータパケットを含め、データパケットを受信した順番にしたがってデータパケットのＦＥＣパケット情報を更新する。このため、本実施例に係る伝送装置１０では、データパケットを受信する度にパケットロスの有無を検知することができる。それゆえ、本実施例に係る伝送装置１０によれば、データパケットの待機時間を低減しつつ、データパケットを可変レートで伝送する場合に発生する伝送遅延を抑制することが可能である。
【０１２５】
かかる効果を伝送例を挙げて説明する。図１３は、実施例２に係る伝送装置によるデータ伝送の一例を示す図である。図１３に示す例では、ノード＃１からノード＃２へデータが転送される場合を想定する。また、図１３に示す例では、パケットを模式化した小包にデータパケットに付与されたシーケンス番号、追加シーケンス番号、ＦＥＣパケットの保護範囲およびＦＥＣパケットに付与されたシーケンス番号を図示している。図１３に示すＦＥＣパケット１は、誤り訂正によりデータパケット１〜４を保護するものとし、図１３に示すＦＥＣパケット２は、誤り訂正によりデータパケット５〜７を保護するものとする。なお、図１３に示す例では、ＦＥＣパケットにより復元可能なパケット数を１つとする。
【０１２６】
図１３に示すように、各データパケットには、ノード＃１のＦＥＣパケット情報付加部１６によりデータパケットの送信順に追加シーケンス番号が１つずつインクリメントされて付加される。さらに、各データパケットには、ノード＃１のＦＥＣパケット情報付加部１６によりＦＥＣパケットの保護範囲が付加される。一例としては、ＦＥＣパケット１は、データパケット１〜４から生成されているので、ＦＥＣパケット１が保護するパケット数「４」がデータパケット１〜４のＦＥＣパケットの保護範囲として付加される。さらに、各データパケットには、ノード＃１のＦＥＣパケット情報付加部１６によりＦＥＣパケットに付与されるシーケンス番号も付加される。なお、ノード＃２以降のノードでは、ＦＥＣパケット情報が既に付加されているので、ＦＥＣパケット情報付加部１６によるＦＥＣパケット情報の付加は実行されない。
【０１２７】
このようにＦＥＣパケット情報を付加する場合には、データパケットごとに図１０に示した「FEC  Coverage」のフィールドにＦＥＣパケットの保護範囲（４，３，・・・）が付加されることになる。また、図８に示したＦＥＣパケットのＲＴＰヘッダの「SN  Base」及び「Mask」は、追加シーケンス番号を基に設定されるものとする。一例としては、ＦＥＣパケット１の場合は、「SN  Base：1、Mask：0xF00000」と設定する。この場合には、上位４ｂｉｔが保護対象となる。ここでは、追加シーケンス番号を基に設定しているが、データパケットのシーケンス番号を用いて、「SN  Base」及び「Mask」を設定することとしてもよい。
【０１２８】
図１３に示すように、ノード＃１は、データパケット１〜４、ＦＥＣパケット１、データパケット５〜７、ＦＥＣパケット２の順にノード＃２へ伝送する。このとき、ノード＃１及びノード＃２間でＦＥＣパケット１をロスした場合を想定する。この場合には、ノード＃２は、ノード＃１からデータパケット１〜４、データパケット５〜７、ＦＥＣパケット２の順に受信する。
【０１２９】
ここで、ノード＃２は、データパケット１〜４を受信する度に各データパケットのＸＯＲを計算し、ＦＥＣパケットの保護範囲「４」に到達したＴＫの時点でＦＥＣパケット１のパリティ情報の計算が完了する。そして、ノード＃２は、ノード＃１及びノード＃２間におけるＦＥＣパケット１のロスの如何にかかわらず、ＦＥＣパケット１を再生成して下位のノードへ送信できる。このため、ＦＥＣパケット１のロスを検知せずとも、下位のノードへの転送できる。それゆで、本実施例では、ＦＥＣパケット１がロスしたままの状態で下位階層のノードへデータ伝送が継続される可能性を低減でき、ＦＥＣパケットのロスに起因する伝送遅延の増大を抑制できる。
【０１３０】
図１４は、実施例２に係る伝送装置によるデータ伝送の一例を示す図である。図１４に示す例では、ノード＃１、ノード＃２、ノード＃３の順にデータが転送される場合を想定する。図１４に示す例では、パケットを模式化した小包にデータパケットに付与されたシーケンス番号、追加シーケンス番号、ＦＥＣパケットの保護範囲およびＦＥＣパケットに付与されたシーケンス番号を図示している。図１４に示すＦＥＣパケット１は、誤り訂正によりデータパケット１〜４を保護するものとする。図１４に示すＦＥＣパケット２は、誤り訂正によりデータパケット５〜７を保護するものとする。図１４に示すＦＥＣパケット３は、誤り訂正によりデータパケット８〜１０を保護するものとする。図１４に示すＦＥＣパケット４は、誤り訂正によりデータパケット１１〜１４を保護するものとする。なお、図１４に示す例では、ＦＥＣパケットにより復元可能なパケット数を１つとする。
【０１３１】
図１４に示すように、ノード＃２は、データパケット５を受信したＴＤの時点で追加シーケンス番号「５」が前回に受信したデータパケット３の追加シーケンス番号「３」と連番でないため、データパケット４のロスを検知する。さらに、ノード＃２は、今回に受信したデータパケット５のＦＥＣパケットの保護範囲とＦＥＣパケットのシーケンス番号がデータパケットとは異なるので、ＦＥＣパケット１のロスを検知する。この場合には、ＦＥＣパケットの誤り訂正能力を超えるパケットロスが発生しているので、ノード＃２は、ＴＬの時点でデータパケット４の再送要求をノード＃１へ送信する。この再送要求を行ったデータパケット４は、ノード＃１及びノード＃２間の往復遅延時間であるＲＴＴ（Round  Trip  Time）１が経過したＴＭの時点でノード＃２へ到達する。
【０１３２】
ここで、ノード＃２は、図２５に示した従来技術のように、データパケット４の再送を受けてからデータパケット１〜４のＸＯＲを算出してＦＥＣパケット１を生成するようなことはしない。
【０１３３】
すなわち、ノード＃２は、データパケット５のＦＥＣパケット情報を変更する。この場合には、ノード＃２は、データパケット５の追加シーケンス番号「５」をノード＃２における受信順序「４」へ書き換える。さらに、ノード＃２は、データパケット５のＦＥＣパケットの保護範囲「３」を作業用メモリ１４ｂに記憶されたＦＥＣパケットの保護範囲「４」へ書き換える。さらに、ノード＃２は、データパケット５のＦＥＣパケットのシーケンス番号「２」を作業用メモリ１４ｂに記憶されたＦＥＣパケットのシーケンス番号「１」へ書き換える。
【０１３４】
その上で、ノード＃２は、データパケット１、データパケット２、データパケット３及びデータパケット５を用いて、ＦＥＣパケット１を再生成する。このとき、データパケット５を受信したＴＬの時点では、既にデータパケット１〜データパケット３のＸＯＲは計算済みであるので、その計算結果とデータパケット５とのＸＯＲを計算することにより、ＦＥＣパケット１を再生成できる。
【０１３５】
このデータパケット５のＦＥＣパケット情報の変更に伴い、ノード＃２は、データパケット４の再送を受けるまでに到着するデータパケット６〜データパケット８の追加シーケンス番号をそれぞれ１つずつ繰り上げる更新を行う。さらに、データパケット８を受信した段階でデータパケット６〜８のＸＯＲが算出されることにより、データパケット６を受信した際に作業用メモリ１４ｂに登録されたＦＥＣパケットの保護範囲「３」を満たす。このため、ノード＃２は、データパケット８のＦＥＣパケットの保護範囲「３」を作業用メモリ１４ｂに記憶されたＦＥＣパケットの保護範囲「３」へ上書きする。さらに、ノード＃２は、データパケット８のＦＥＣパケットのシーケンス番号「３」を作業用メモリ１４ｂに記憶されたＦＥＣパケットのシーケンス番号「２」へ書き換える。その上で、ノード＃２は、データパケット６〜８のＸＯＲの算出結果を用いて、ＦＥＣパケット２を再生成する。
【０１３６】
その後、ノード＃２は、データパケット４の再送を受信した場合に、データパケット４の追加シーケンス番号「４」をノード＃２における受信順序「８」へ書き換える。さらに、ノード＃２は、データパケット４のＦＥＣパケットの保護範囲を「４」から「３」へ書き換える。さらに、ノード＃２は、データパケット４のＦＥＣパケットのシーケンス番号を「１」から「３」へ書き換える。その上で、ノード＃２は、データパケット４、データパケット９及びデータパケット１０を用いて、ＦＥＣパケット３を再生成する。
【０１３７】
このようにしてＦＥＣパケット情報の変更およびＦＥＣパケットの再生成を行う。そして、ノード＃２は、データパケット１〜３、データパケット５、ＦＥＣパケット１、データパケット６〜８、ＦＥＣパケット２、データパケット４、データパケット９〜１０・・・の順にノード＃３へデータを送信する。
【０１３８】
このとき、ノード＃２及びノード＃３の間でデータパケット３及びデータパケット４のロスが発生した場合を想定する。このとき、図２５に示した従来技術の場合には、ノード＃３で更なる再送が発生する結果、ＴＨからＴＪの期間、すなわち１１パケット分の時間にわたってデータパケット４の伝送が遅延する。
【０１３９】
一方、本実施例の場合には、データパケット４がノード＃２で受信順序が近傍であったデータパケット９及びデータパケット１０との間でＸＯＲが計算されたＦＥＣパケット３へ編入されている。このため、データパケット３及びデータパケット４がロスした場合でも、ＦＥＣパケット１及びＦＥＣパケット３の誤り訂正能力を超えない。それゆえ、ノード＃３は、ＦＥＣパケット１を用いてデータパケット３を復元するとともに、ＦＥＣパケット３を用いてデータパケット４を復元できる。よって、データパケット４の伝送遅延は、ＴＮからＴＰの期間、すなわち４パケット分の時間に軽減される。
【０１４０】
このように、同一のＦＥＣパケット１に保護されていたデータパケット１〜４のうち一部のデータパケット４の伝送順序が再送により乖離しても、ＦＥＣパケットの保護範囲を下位階層のノードへの伝送順序が近いもの同士に再編成できる。このため、異なるノード間で再送が繰り返し発生した場合に、伝送遅延が拡大する可能性を低減できる。
【実施例３】
【０１４１】
さて、上記の実施例２では、ＦＥＣパケット情報として追加シーケンス番号をデータパケットに付加することによりパケットロスを迅速に検知する場合を説明したが、開示の装置はこれに限定されず、他の方法によりパケットロスを検知することもできる。そこで、実施例３では、ＦＥＣパケットの保護範囲として、ＦＥＣパケットが保護するデータパケットのシーケンス番号を付加することにより、パケットロスを検知する場合を説明する。
【０１４２】
図１５は、実施例３に係る伝送装置の構成を示すブロック図である。図１５に示す伝送装置２０は、図７に示した伝送装置１０と比較して、ＦＥＣパケット情報付加部２１、パケットロス判定部２２及びＦＥＣパケット情報変更部２３の機能の一部が異なる。なお、以下では、図７に示した伝送装置１０と対比しながら説明することとし、上記の実施例２と同様の機能を発揮するものついては同一の符号を付すとともにその説明を省略する。
【０１４３】
ＦＥＣパケット情報付加部２１は、図７に示したＦＥＣパケット情報付加部１６に比較して、追加シーケンス番号の代わりに、ＦＥＣパケットの保護範囲として、ＦＥＣパケットが保護するデータパケットのシーケンス番号を付加する点が異なる。
【０１４４】
図１６は、ＲＴＰパケットが含むＦＥＣパケット情報の一例を示す図である。図１６に示す例では、パケットを模式化した小包にＲＴＰパケットにＦＥＣパケット情報を図示している。図１６に示す符号５１は、メディアデータをパケット化する際にデータパケットに付与されたデータパケットのシーケンス番号を指す。図１６に示す符号５２は、ＦＥＣパケットによるＲＴＰパケットの保護範囲を指す。また、図１６に示す符号５３は、ＦＥＣパケットのシーケンス番号を指す。
【０１４５】
図１６に示す例では、ＲＴＰパケットのシーケンス番号が「１」であり、また、ＲＴＰパケットを保護するＦＥＣパケットのシーケンス番号が「１」であることを示す。さらに、図１６に示す例では、ＦＥＣパケットがデータパケット１、データパケット２、データパケット３及びデータパケット４を保護することを示す。このように、ＦＥＣパケットが保護するデータパケットのシーケンス番号を付与すれば、ＦＥＣパケットが保護対象とするＲＴＰパケット数が「４」であることも受信側のノードで特定できる。
【０１４６】
パケットロス判定部２２は、図７に示したパケットロス判定部１７に比べ、今回に受信したデータパケットのＲＴＰヘッダに書き込まれているＦＥＣパケットの保護範囲と、１つ前に受信したデータパケットのＦＥＣパケットの保護範囲とを比較する点が異なる。つまり、パケットロス判定部２２は、今回に受信したデータパケットに書き込まれているデータパケットのシーケンス番号群と、前回に受信していたデータパケットに書き込まれているデータパケットのシーケンス番号群とを比較する。これら両者が同じである場合に、パケットロス判定部２２は、この時点でのパケットロスはないものと判断する。一方、両者が同じでない場合には、パケットロスがあったものと判断する。
【０１４７】
ＦＥＣパケット情報変更部２３は、図７に示したＦＥＣパケット情報変更部１８に比較して、パケットロスが発生した場合、データパケットが復元された場合、再送のデータパケットを受信した場合に、ＦＥＣパケット情報を変更する点は共通する。その一方で、ＦＥＣパケット情報変更部２３は、ＦＥＣパケット情報を変更する場合に、ＦＥＣパケットの保護範囲およびＦＥＣパケットのシーケンス番号の両方を常に変更する点が異なる。
【０１４８】
［処理の流れ］
次に、本実施例に係る伝送装置の処理の流れについて説明する。図１７〜図１９は、実施例２に係るパケット受信処理の手順を示すフローチャートである。この処理は、パケット受信部１１または再送通信部１３のいずれかでパケットが受信された場合に起動する処理である。
【０１４９】
図１７に示すように、上位階層のノードからパケットを受信すると、パケットロス判定部２２は、受信パケットが再送ではない通常のデータパケットであるのか否かを判定する（ステップＳ４０１）。
【０１５０】
このとき、受信パケットが通常のデータパケットである場合（ステップＳ４０１肯定）には、図１７に示すステップＳ４０３〜ステップＳ４２４までのデータパケット受信処理が実行される。また、受信パケットが通常のデータパケットではなくＦＥＣパケットである場合（ステップＳ４０１否定かつステップＳ４０２肯定）には、図１８に示すステップＳ５０１〜Ｓ５１３のＦＥＣパケット受信処理が実行される。また、受信パケットが通常データパケットまたはＦＥＣパケットでもなく、再送パケットである場合には、（ステップＳ４０１否定かつステップＳ４０２否定）には、図１９に示すステップＳ６０１〜Ｓ６０９の再送パケット受信処理が実行される。
【０１５１】
まず、データパケット受信処理を説明する。受信パケットが通常のデータパケットである場合（ステップＳ４０１肯定）には、パケットロス判定部２２は、データパケットのＲＴＰヘッダに書き込まれているＦＥＣパケット情報を取得する（ステップＳ４０３）。例えば、パケットロス判定部２２は、ＦＥＣパケット情報として、データパケットのシーケンス番号、ＦＥＣパケットの保護範囲及びＦＥＣパケットのシーケンス番号を取得する。
【０１５２】
続いて、パケットロス判定部２２は、データパケットが最初の受信パケットであるか否かを判定する（ステップＳ４０４）。このとき、最初の受信パケットであった場合（ステップＳ４０４肯定）には、パケットロス判定部２２は、次のような処理を実行する。すなわち、パケットロス判定部２２は、ＦＥＣパケットの保護範囲及びＦＥＣパケットのシーケンス番号などのＦＥＣパケット情報を作業用メモリ１４ｂへ登録する（ステップＳ４０５）。
【０１５３】
そして、パケットロス判定部２２は、下位階層への伝送用とは別にＦＥＣパケットの生成に使用するためのデータパケットを複製した上でバッファ１４ａへ格納する（ステップＳ４０６）。続いて、ＦＥＣパケット生成制御部１９は、今回に受信したデータパケットのＸＯＲを算出する（ステップＳ４０７）。その上で、ＦＥＣパケット生成制御部１９は、今回に受信したデータパケットを伝送用のデータパケットとしてバッファ１４ａへ格納し（ステップＳ４０８）、処理を終了する。
【０１５４】
一方、最初の受信パケットではない場合（ステップＳ４０４否定）には、パケットロス判定部２２は、次のような処理を実行する。すなわち、パケットロス判定部２２は、今回に受信したデータパケットのＲＴＰヘッダに書き込まれているＦＥＣパケットの保護範囲と、１つ前に受信したデータパケットのＦＥＣパケットの保護範囲とが一致するか否かを判定する（ステップＳ４０９）。ここでは、ＦＥＣパケットの保護範囲として、データパケットのシーケンス番号群の突き合わせが実行される。
【０１５５】
ここで、ＦＥＣパケットの保護範囲が一致する場合（ステップＳ４０９肯定）には、ＦＥＣパケット生成制御部１９は、今回に受信したデータパケットのＸＯＲを算出する（ステップＳ４１０）。
【０１５６】
そして、ＦＥＣパケット生成制御部１９は、ＸＯＲの算出を終えたデータパケットのシーケンス番号と、作業用メモリ１４ｂに記憶されたＦＥＣパケットの保護範囲とが一致するか否かを判定する（ステップＳ４１１）。これら両者が一致した場合、すなわちＦＥＣパケットの保護範囲に到達した場合（ステップＳ４１１肯定）には、ＦＥＣパケット生成制御部１９は、それまでに算出したデータパケットのＸＯＲからＦＥＣパケットを生成する（ステップＳ４１２）。
【０１５７】
その後、ＦＥＣパケット生成制御部１９は、パケット受信部１１により受信されたデータパケットとともに今回生成したＦＥＣパケットをバッファ１４ａへ格納し（ステップＳ４０８）、処理を終了する。
【０１５８】
また、ＦＥＣパケットの保護範囲が一致しない場合（ステップＳ４０９否定）には、パケットロス判定部２２は、次のような処理を実行する。すなわち、パケットロス判定部２２は、作業用メモリ１４ｂに記憶されている保護範囲において再送を要するパケット数をロスしているか否かを判定する（ステップＳ４１３）。
【０１５９】
このとき、再送を要するパケット数をロスしている場合（ステップＳ４１３肯定）には、パケットロス判定部２２は、次のような処理を行う。すなわち、パケットロス判定部２２は、パケットロスしているデータパケットのシーケンス番号のうち小さいものから順に所定数のデータパケットの再送要求を再送通信部１３に送信させる（ステップＳ４１４）。その上で、パケットロス判定部２２は、再送要求を行ったデータパケットに関する情報、例えばデータパケットのシーケンス番号を作業用メモリ１４ｂ内に記憶された再送待ちリストへ登録する（ステップＳ４１５）。
【０１６０】
そして、ＦＥＣパケット情報変更部２３は、受信したデータパケットのＲＴＰヘッダに書き込まれているＦＥＣパケットの保護範囲及びＦＥＣパケットのシーケンス番号を作業用メモリ１４ｂに記憶されているものに変更する（ステップＳ４１６）。続いて、ＦＥＣパケット生成制御部１９は、今回に受信したデータパケットのＸＯＲを算出する（ステップＳ４１７）。
【０１６１】
その後、パケットロス判定部２２は、作業用メモリ１４ｂに記録されているＦＥＣパケット情報を今回に受信したデータパケットのＦＥＣパケットの保護範囲及びＦＥＣパケットのシーケンス番号へ更新する（ステップＳ４１８）。
【０１６２】
一方、再送を要するパケット数をロスしてしない場合（ステップＳ４１３否定）には、パケットロス判定部２２は、作業用メモリ１４ｂに記憶されている保護範囲においてパケットロスがあるか否かをさらに判定する（ステップＳ４１９）。
【０１６３】
そして、保護範囲においてパケットロスがある場合（ステップＳ４１９肯定）には、ＦＥＣパケット情報変更部２３は、次のような処理を実行する。すなわち、ＦＥＣパケット情報変更部２３は、受信したデータパケットのＲＴＰヘッダに書き込まれているＦＥＣパケットの保護範囲及びＦＥＣパケットのシーケンス番号を作業用メモリ１４ｂに記憶されているものに変更する（ステップＳ４２０）。
【０１６４】
続いて、ＦＥＣパケット生成制御部１９は、今回に受信したデータパケットのＸＯＲを算出する（ステップＳ４２１）。そして、ＦＥＣパケット生成制御部１９は、ＸＯＲの算出を終えたデータパケットのシーケンス番号と、作業用メモリ１４ｂに記憶されたＦＥＣパケットの保護範囲とが一致するか否かを判定する（ステップＳ４２２）。これら両者が一致した場合、すなわちＦＥＣパケットの保護範囲に到達した場合（ステップＳ４２２肯定）には、ＦＥＣパケット生成制御部１９は、それまでに算出したデータパケットのＸＯＲからＦＥＣパケットを生成する（ステップＳ４２３）。
【０１６５】
その後、ＦＥＣパケット生成制御部１９は、パケット受信部１１により受信されたデータパケットとともに今回生成したＦＥＣパケットをバッファ１４ａへ格納し（ステップＳ４０８）、処理を終了する。
【０１６６】
また、保護範囲においてパケットロスがない場合（ステップＳ４１９否定）には、パケットロス判定部２２は、次のＦＥＣパケットの生成に使用するためのデータパケットを複製した上でバッファ１４ａへ格納する（ステップＳ４２４）。
【０１６７】
次に、図１８を用いて、上述したＦＥＣパケット受信処理について説明する。ＦＥＣパケットを受信した場合（ステップＳ４０２肯定）には、パケットロス判定部２２は、今回に受信したＦＥＣパケットにより保護されているデータパケットのシーケンス番号に対応するデータパケットをバッファ１４ａから検索する（ステップＳ５０１）。
【０１６８】
そして、パケットロス判定部２２は、今回に検索したデータパケットに書き込まれているＦＥＣパケットの保護範囲において再送を要するパケット数がロスしているか否かを判定する（ステップＳ５０２）。
【０１６９】
このとき、再送を要するパケット数をロスしている場合（ステップＳ５０２肯定）には、パケットロス判定部２２は、パケットロスしたデータパケットが作業用メモリ１４ｂに記憶された再送待ちリストに登録されているか否かを判定する（ステップＳ５０３）。なお、再送待ちリストに登録されている場合（ステップＳ５０３否定）には、そのまま処理を終了する。
【０１７０】
そして、再送待ちリストに登録されていない場合（ステップＳ５０３肯定）には、パケットロス判定部２２は、次のような処理を実行する。すなわち、パケットロス判定部２２は、パケットロスしているデータパケットのうちシーケンス番号が小さいものから順に所定数のデータパケットの再送要求を再送通信部１３に送信させる（ステップＳ５０４）。その上で、パケットロス判定部２２は、再送要求を行ったデータパケットに関する情報、例えばデータパケットのシーケンス番号を作業用メモリ１４ｂ内に記憶された再送待ちリストへ登録し（ステップＳ５０５）、処理を終了する。
【０１７１】
一方、再送を要するパケット数をロスしていない場合（ステップＳ５０２否定）には、パケットロス判定部２２は、次のような処理を行う。すなわち、パケットロス判定部２２は、今回に検索したデータパケットに書き込まれているＦＥＣパケットの保護範囲においてパケットロスが存在するか否かをさらに判定する（ステップＳ５０６）。
【０１７２】
このとき、パケットロスが存在する場合（ステップＳ５０６肯定）には、ＦＥＣパケット生成制御部１９は、今回に受信したＦＥＣパケットを用いて、パケットロスしているデータパケットを復元する（ステップＳ５０７）。
【０１７３】
そして、ＦＥＣパケット情報変更部２３は、復元したデータパケットのＲＴＰヘッダに書き込まれているＦＥＣパケットの保護範囲及びＦＥＣパケットのシーケンス番号を作業用メモリ１４ｂに記憶されたものに変更する（ステップＳ５０８）。
【０１７４】
その後、パケットロス判定部２２は、作業用メモリ１４ｂに記録されているＦＥＣパケット情報を今回に復元したデータパケットのＦＥＣパケットの保護範囲及びＦＥＣパケットのシーケンス番号へ更新する（ステップＳ５０９）。
【０１７５】
続いて、ＦＥＣパケット生成制御部１９は、復元したデータパケットのＸＯＲを算出する（ステップＳ５１０）。そして、ＦＥＣパケット生成制御部１９は、ＸＯＲの算出を終えたデータパケットのシーケンス番号と、作業用メモリ１４ｂに記憶されたＦＥＣパケットの保護範囲とが一致するか否かを判定する（ステップＳ５１１）。これら両者が一致した場合、すなわちＦＥＣパケットの保護範囲に到達した場合（ステップＳ５１１肯定）には、ＦＥＣパケット生成制御部１９は、それまでに算出したデータパケットのＸＯＲからＦＥＣパケットを生成する（ステップＳ５１２）。
【０１７６】
その後、ＦＥＣパケット生成制御部１９は、今回に復元したデータパケットとともに今回に生成したＦＥＣパケットをバッファ１４ａへ格納し（ステップＳ５１３）、処理を終了する。
【０１７７】
また、ＦＥＣパケットの保護範囲に到達していない場合（ステップＳ５１１否定）には、ＦＥＣパケット生成制御部１９は、今回に復元したデータパケットをバッファ１４ａへ格納し（ステップＳ５１３）、処理を終了する。
【０１７８】
次に、図１９を用いて、上述した再送パケット受信処理について説明する。再送のデータパケットを受信した場合（ステップＳ４０２否定）には、パケットロス判定部２２は、再送のデータパケットのＲＴＰヘッダに書き込まれているデータパケットのシーケンス番号を取得する（ステップＳ６０１）。
【０１７９】
そして、パケットロス判定部２２は、再送のデータパケットのシーケンス番号が作業用メモリ１４ｂに記憶された再送待ちリストに登録されているか否かを判定する（ステップＳ６０２）。なお、再送待ちリストに登録されていない場合（ステップＳ６０２否定）には、そのまま処理を終了する。
【０１８０】
そして、再送待ちリストに登録されている場合（ステップＳ６０２肯定）には、パケットロス判定部２２は、再送を受けたデータパケットのシーケンス番号を再送待ちリストから削除する（ステップＳ６０３）。
【０１８１】
そして、ＦＥＣパケット情報変更部２３は、再送されたデータパケットのＲＴＰヘッダに書き込まれているＦＥＣパケットの保護範囲及びＦＥＣパケットのシーケンス番号を作業用メモリ１４ｂに記憶されているものに変更する（ステップＳ６０４）。
【０１８２】
その後、パケットロス判定部２２は、作業用メモリ１４ｂに記録されているＦＥＣパケット情報を今回に再送されたデータパケットのＦＥＣパケットの保護範囲及びＦＥＣパケットのシーケンス番号へ更新する（ステップＳ６０５）。
【０１８３】
続いて、ＦＥＣパケット生成制御部１９は、再送されたデータパケットのＸＯＲを算出する（ステップＳ６０６）。そして、ＦＥＣパケット生成制御部１９は、ＸＯＲの算出を終えたデータパケットのシーケンス番号群と、作業用メモリ１４ｂに記憶されたＦＥＣパケットの保護範囲とが一致するか否かを判定する（ステップＳ６０７）。これら両者が一致した場合、すなわちＦＥＣパケットの保護範囲に到達した場合（ステップＳ６０７肯定）には、ＦＥＣパケット生成制御部１９は、それまでに算出したデータパケットのＸＯＲからＦＥＣパケットを生成する（ステップＳ６０８）。
【０１８４】
その後、ＦＥＣパケット生成制御部１９は、今回に復元したデータパケットとともに今回に生成したＦＥＣパケットをバッファ１４ａへ格納し（ステップＳ６０９）、処理を終了する。
【０１８５】
また、ＦＥＣパケットの保護範囲に到達していない場合（ステップＳ６０７否定）には、ＦＥＣパケット生成制御部１９は、今回に復元したデータパケットをバッファ１４ａへ格納し（ステップＳ６０８）、処理を終了する。
【０１８６】
［実施例３の効果］
上述してきたように、本実施例に係る伝送装置２０では、データパケットが受信された場合に、該データパケットに含まれるデータパケットのシーケンス番号を用いて、データパケットのパケットロスを判定する。また、本実施例に係る伝送装置２０は、パケットロスの判定結果に基づき、上位階層のノードへデータパケットの再送要求を行い、再送されたデータパケットを受信する。また、本実施例に係る伝送装置２０は、再送により受信したデータパケットを含め、データパケットが受信された順番にしたがってデータパケットのＦＥＣパケット情報を更新する。これにより、本実施例に係る伝送装置２０によれば、ＲＴＰパケットなどのデータパケットのヘッダ情報の改変を最小限にしつつ、データパケットを可変レートで伝送する場合に発生する伝送遅延を抑制することが可能である。
【０１８７】
かかる効果を伝送例を挙げて説明する。図２０は、実施例３に係る伝送装置によるデータ伝送の一例を示す図である。図２０に示す例では、ノード＃１からノード＃２へデータが転送される場合を想定する。また、図２０に示す例では、パケットを模式化した小包にデータパケットに付与されたシーケンス番号、ＦＥＣパケットの保護範囲およびＦＥＣパケットに付与されたシーケンス番号を図示している。図２０に示すＦＥＣパケット１は、誤り訂正によりデータパケット１〜４を保護するものとし、図２０に示すＦＥＣパケット２は、誤り訂正によりデータパケット５〜７を保護するものとする。なお、図２０に示す例では、ＦＥＣパケットにより復元可能なパケット数を１つとする。
【０１８８】
図２０に示すように、各データパケットには、ノード＃１のＦＥＣパケット情報付加部１６によりＦＥＣパケットの保護範囲が付加される。一例としては、ＦＥＣパケット１は、データパケット１〜４から生成されているので、ＦＥＣパケット１が保護するパケットのシーケンス番号「１，２，３，４」がデータパケット１〜４のＦＥＣパケットの保護範囲として付加される。さらに、各データパケットには、ノード＃１のＦＥＣパケット情報付加部１６によりＦＥＣパケットに付与されるシーケンス番号も付加される。なお、ノード＃２以降のノードでは、ＦＥＣパケット情報が既に付加されているので、ＦＥＣパケット情報付加部２１によるＦＥＣパケット情報の付加は実行されない。
【０１８９】
このようにＦＥＣパケット情報を付加する場合には、各データパケットごとに図８に示した「FEC  Coverage」のフィールドにＦＥＣの保護対象にあたるデータパケットのシーケンス番号、「FEC  ID」フィールドにＦＥＣシーケンス番号が付加されることになる。なお、図８に示した「Additional  Sequence  Number」フィールドは本実施例では使用しない。また、ＦＥＣパケットヘッダの「SN  Base」、「Mask」は、データパケットのシーケンス番号を基に設定するものとする。例えば、ＦＥＣパケット１の場合は、「SN  Base：1、Mask：0xF00000」と設定する。この場合には、上位４ｂｉｔが保護対象となる。
【０１９０】
図２０に示すように、ノード＃１は、データパケット１〜４、ＦＥＣパケット１、データパケット５〜７、ＦＥＣパケット２の順にノード＃２へ伝送する。このとき、ノード＃１及びノード＃２間でＦＥＣパケット１をロスした場合を想定する。この場合には、ノード＃２は、ノード＃１からデータパケット１〜４、データパケット５〜７、ＦＥＣパケット２の順に受信する。
【０１９１】
ここで、ノード＃２は、データパケット１〜４を受信する度に各データパケットのＸＯＲを計算し、ＦＥＣパケットの保護範囲「４」に到達したＴＱの時点でＦＥＣパケット１のパリティ情報の計算が完了する。そして、ノード＃２は、ノード＃１及びノード＃２間におけるＦＥＣパケット１のロスの如何にかかわらず、ＦＥＣパケット１を再生成して下位のノードへ送信できる。このため、ＦＥＣパケット１のロスを検知せずとも、下位のノードへの転送できる。それゆで、本実施例では、ＦＥＣパケット１がロスしたままの状態で下位階層のノードへデータ伝送が継続される可能性を低減でき、ＦＥＣパケットのロスに起因する伝送遅延の増大を抑制できる。
【０１９２】
図２１は、実施例３に係る伝送装置によるデータ伝送の一例を示す図である。図２１に示す例では、ノード＃１、ノード＃２、ノード＃３の順にデータが転送される場合を想定する。図２１に示す例では、パケットを模式化した小包にデータパケットに付与されたシーケンス番号、ＦＥＣパケットの保護範囲およびＦＥＣパケットに付与されたシーケンス番号を図示している。図２１に示すＦＥＣパケット１は、誤り訂正によりデータパケット１〜４を保護するものとする。図２１に示すＦＥＣパケット２は、誤り訂正によりデータパケット５〜７を保護するものとする。図２１に示すＦＥＣパケット３は、誤り訂正によりデータパケット８〜１０を保護するものとする。図２１に示すＦＥＣパケット４は、誤り訂正によりデータパケット１１〜１４を保護するものとする。なお、図２１に示す例では、ＦＥＣパケットにより復元可能なパケット数を１つとする。
【０１９３】
図２１に示すように、ノード＃２は、データパケット５を受信したＴＲの時点でデータパケット５の保護範囲「５，６，７」と、データパケット３の保護範囲「１，２，３，４」が一致しないので、データパケット４及びＦＥＣパケット１のロスを検知する。この場合には、ＦＥＣパケットの誤り訂正能力を超えるパケットロスが発生しているので、ノード＃２は、ＴＲの時点でデータパケット４の再送要求をノード＃１へ送信する。この再送要求を行ったデータパケット４は、ノード＃１及びノード＃２間の往復遅延時間であるＲＴＴ（Round  Trip  Time）１が経過したＴＳの時点でノード＃２へ到達する。
【０１９４】
ここで、ノード＃２は、図２５に示した従来技術のように、データパケット４の再送を受けてからデータパケット１〜４のＸＯＲを算出してＦＥＣパケット１を生成するようなことはしない。
【０１９５】
すなわち、ノード＃２は、データパケット４の再送をノード＃１へ要求する。その後、データパケット１〜３のＦＥＣパケットの保護範囲を「1,2,3,4→1,2,3,5」と変更し、データパケット５のＦＥＣパケットの保護範囲を「5,6,7→1,2,3,5」と変更し、ＦＥＣパケットのシーケンス番号を「FEC2→FEC1」と変更する。さらに、ノード＃２は、データパケット１〜３と、データパケット５とを使用したＦＥＣパケット１を生成する。このとき、データパケット５を受信したＴＲの時点では、既にデータパケット１〜データパケット３のＸＯＲは計算済みであるので、その計算結果とデータパケット５とのＸＯＲを計算することにより、ＦＥＣパケット１を再生成できる。この時のＦＥＣヘッダの「SN  Base」は「1」、「Mask」は「0xE80000」となる。ノード＃２は、ＦＥＣパケット１の生成完了で、ノード＃３への送信を開始する。
【０１９６】
そして、ノード＃２は、データパケット５のＦＥＣパケットの保護範囲とＦＥＣパケットのシーケンス番号を順次変更する。すなわち、ノード＃２は、データパケット８のＦＥＣパケットの保護範囲を「8,9,10→6,7,8」と変更し、ＦＥＣパケットのシーケンス番号を「FEC3→FEC2」と変更する。その上で、ノード＃２は、データパケット６〜８を使用してＦＥＣパケット２を生成する。なお、受信したＦＥＣパケット２は不要であるので、破棄する。このとき、ＦＥＣヘッダの「SN  Base」は「6」、「Mask」は「0xE00000」となる。
【０１９７】
その後、ノード＃２は、再送されたデータパケット４を受信した場合に、直前に受信したデータパケット８の変更前のＦＥＣパケットの保護範囲「8,9,10」及びＦＥＣパケットのシーケンス番号「FEC3」から、データパケット１０の受信まで待機する。その上で、ノード＃２は、データパケット４のＦＥＣパケットの保護範囲を「1,2,3,4→4,9,10」に変更し、ＦＥＣパケットのシーケンス番号を「FEC1→FEC3」に変更する。さらに、ノード＃２は、データパケット９〜１０のＦＥＣパケットの保護範囲を「8,9,10→4,9,10」と変更する。その後、ノード＃２は、データパケット４、データパケット９〜１０を使用したＦＥＣパケット３を生成するよう指示する。なお、この時のＦＥＣヘッダの「SN  Base」は「4」、「Mask」は「0x860000」となる。
【０１９８】
一方、本実施例の場合には、データパケット４がノード＃２で受信順序が近傍であったデータパケット９及びデータパケット１０との間でＸＯＲが計算されたＦＥＣパケット３へ編入されている。このため、データパケット３及びデータパケット４がロスした場合でも、ＦＥＣパケット１及びＦＥＣパケット３の誤り訂正能力を超えない。それゆえ、ノード＃３は、ＦＥＣパケット１を用いてデータパケット３を復元するとともに、ＦＥＣパケット３を用いてデータパケット４を復元できる。よって、データパケット４の伝送遅延は、ＴＴからＴＵの期間、すなわち４パケット分の時間に軽減される。
【０１９９】
このように、同一のＦＥＣパケット１に保護されていたデータパケット１〜４のうち一部のデータパケット４の伝送順序が再送により乖離しても、ＦＥＣパケットの保護範囲を下位階層のノードへの伝送順序が近いもの同士に再編成できる。このため、異なるノード間で再送が繰り返し発生した場合に、伝送遅延が拡大する可能性を低減できる。
【実施例４】
【０２００】
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【０２０１】
［応用例］
例えば、上記の実施例２では、ＦＥＣの保護範囲を示す情報にＦＥＣパケットが保護するデータパケットの数を用いたが、開示の装置はこれに限定されない。一例としては、ＦＥＣの保護対象にあたるメディアデータパケットのシーケンス番号、ＦＥＣパケットまでの距離（ＦＥＣパケットが何パケット後に存在するかを示す情報）を追加シーケンスに代用できる。
【０２０２】
さらに、開示の装置では、ＦＥＣパケットの復元可能パケット数、すなわち誤り訂正能力をＲＴＰヘッダへ追加することもできる。これにより、パケットロスを検知した場合に上位階層のノードに再送要求を行うタイミングを決めることが可能になる。
【０２０３】
［適用例］
例えば、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、パケット受信部１１、パケット送信部１２及び再送通信部１３をそれぞれ別個の機能部としたが、これらの一部または全部を統合することとしてもよい。
【０２０４】
［伝送プログラム］
また、上記の実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図２２を用いて、上記の実施例と同様の機能を有する伝送プログラムを実行するコンピュータの一例について説明する。
【０２０５】
図２２は、実施例４に係る伝送プログラムを実行するコンピュータの一例について説明するための図である。図２２に示すように、実施例４におけるコンピュータ１００は、操作部１１０ａと、マイク１１０ｂと、スピーカ１１０ｃと、ディスプレイ１２０と、通信部１３０とを有する。さらに、このコンピュータ１００は、ＣＰＵ１５０と、ＲＯＭ１６０と、ＨＤＤ（Hard  Disk  Drive）１７０と、ＲＡＭ（Random  Access  Memory）１８０と有する。これら１１０〜１８０の各部はバス１４０を介して接続される。
【０２０６】
ＲＯＭ１６０には、上記の実施例２で示したパケットロス判定部１７と、ＦＥＣパケット情報変更部１８と、ＦＥＣパケット生成制御部１９と同様の機能を発揮する制御プログラムが予め記憶される。つまり、ＲＯＭ１６０には、図２２に示すように、パケットロスプログラム１６０ａと、ＦＥＣパケット情報変更プログラム１６０ｂと、ＦＥＣパケット生成プログラム１６０ｃとが記憶される。これらのプログラム１６０ａ〜１６０ｃについては、図７に示した伝送装置の各構成要素と同様、適宜統合又は分離しても良い。なお、ＲＡＭ１６０に格納される各データは、常に全てのデータがＲＡＭ１６０に格納される必要はなく、処理に必要なデータのみがＲＡＭ１６０に格納されれば良い。
【０２０７】
そして、ＣＰＵ１５０が、これらのプログラム１６０ａ〜１６０ｃをＲＯＭ１６０から読み出して実行する。これによって、ＣＰＵ１５０は、図２２に示すように、各プログラム１６０ａ〜１６０ｃについては、パケットロス判定プロセス１５０ａ、ＦＥＣパケット情報変更プロセス１５０ｂ及びＦＥＣパケット生成制御プロセス１５０ｃとして機能するようになる。各プロセス１５０ａ〜１５０ｃは、図２に示したパケットロス判定部１７と、ＦＥＣパケット情報変更部１８と、ＦＥＣパケット生成制御部１９とにそれぞれ対応する。なお、ＣＰＵ１５０上で仮想的に実現される各処理部は、常に全ての処理部がＣＰＵ１５０上で動作する必要はなく、処理に必要な処理部のみが仮想的に実現されれば良い。
【０２０８】
そして、ＣＰＵ１５０は、ＲＡＭ１８０を用いて、伝送プログラムを実行する。
【０２０９】
なお、上記したデータ再現プログラムについては、必ずしも最初からＨＤＤ１７０やＲＯＭ１６０に記憶させておく必要はない。例えば、コンピュータ１００に挿入されるフレキシブルディスク、いわゆるＦＤ、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に各プログラムを記憶させる。そして、コンピュータ１００がこれらの可搬用の物理媒体から各プログラムを取得して実行するようにしてもよい。また、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ１００に接続される他のコンピュータまたはサーバ装置などに各プログラムを記憶させておき、コンピュータ１００がこれらから各プログラムを取得して実行するようにしてもよい。
【符号の説明】
【０２１０】
１    伝送装置
１ａ  受信部
１ｂ  更新部
１ｃ  生成部
１ｄ  送信部
１０    伝送装置
１１    パケット受信部
１２    パケット送信部
１３    再送通信部
１４ａ  バッファ
１４ｂ  作業用メモリ
１５    再生処理部
１６    ＦＥＣパケット情報付加部
１７    パケットロス判定部
１８    ＦＥＣパケット情報変更部
１９    ＦＥＣパケット生成制御部
【図１】
2012015752.tif 000003
【図２】
2012015752.tif 000004
【図３】
2012015752.tif 000005
【図４】
2012015752.tif 000006
【図５】
2012015752.tif 000007
【図６】
2012015752.tif 000008
【図７】
2012015752.tif 000009
【図８】
2012015752.tif 000010
【図９】
2012015752.tif 000011
【図１０】
2012015752.tif 000012
【図１１】
2012015752.tif 000013
【図１２】
2012015752.tif 000014
【図１３】
2012015752.tif 000015
【図１４】
2012015752.tif 000016
【図１５】
2012015752.tif 000017
【図１６】
2012015752.tif 000018
【図１７】
2012015752.tif 000019
【図１８】
2012015752.tif 000020
【図１９】
2012015752.tif 000021
【図２０】
2012015752.tif 000022
【図２１】
2012015752.tif 000023
【図２２】
2012015752.tif 000024
【図２３】
2012015752.tif 000025
【図２４】
2012015752.tif 000026
【図２５】
2012015752.tif 000027