説明

データ転送装置、データ転送方法及びデータ転送プログラム

【課題】転送レートのばらつきを抑制することを課題とする。
【解決手段】データ転送装置10は、パケット受信部11と、パケットロス検出部12と、パケット転送部13と、再送要求送信部14とを有する。パケット受信部11は、データパケットおよび誤り訂正用のパケットを含んでなるブロックを構成するいずれかのパケットを受信する。パケットロス検出部12は、パケット受信部11により受信したブロックの先頭から現在の受信パケットまでのパケットロスを検出する。パケット転送部13は、パケット受信部11により受信されたパケットを所定時間にわたって遅延させた上で転送する。再送要求送信部14は、パケットロス検出部12により検出されたパケットロスと、パケットの再送に要する再送所要時間とに基づいて、パケットの送信元の装置へ再送要求を送信する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ転送装置、データ転送方法及びデータ転送プログラムに関する。
【背景技術】
【0002】
IP(Internet Protocol)網におけるパケット欠落のエラー訂正方法の一例として、FEC(Forward Error Correction)が知られている。このFECは、送信時に冗長なデータ(data)を付加した上で送信することにより、受信側で未到着となったデータを冗長なデータから復元する技術である。
【0003】
例えば、上流側の装置から下流側の装置へデータを順次受け渡すリレー(relay)転送を一定のビットレート(bit rate)で行う場合には、下流側の装置でエラーが増大するのを防ぐことが求められる。すなわち、上流側の装置でのパケット欠落を訂正せずに下流側の装置へ転送すると、下流側の装置ではそれまでに発生したエラーが累積する結果、エラーの増大を招く。このため、上流側の装置で複数のパケットごとにFECパケットを付加した上で下流側の装置へ送信し、下流側の装置でFECパケットを用いてデータを訂正しつつ更なる下流側の装置へ転送する。これにより、下流側の装置でのエラーの増大を防ぐ。
【0004】
かかるFECを用いてデータ転送を行う技術として、パケットの欠落、いわゆるエラーをFECにより訂正しながらリレー転送する場合に、所定値(T−K・τ)だけ遅延させてデータを転送することにより転送レートのばらつきを抑制する技術が提案されている。ここで、τは、パケットの転送間隔を指す。また、Kは、パケットロス数を指す。また、Tは、FECパケットFにより復元可能なパケット数Mと、パケットの転送間隔τとを乗じたM・τよりも大きな固定値であり、一例として、M・τ+αを採用する場合を想定する。なお、αは、伝送により遅延する伝送遅延時間を指し、一例として、ゼロに近いプラスの値が与えられる。
【0005】
図7は、従来技術に係るデータ伝送の一例を示す図である。この図7の例では、1ブロック内のパケット数を6つとし、装置A、装置B、装置C、装置Dの順にデータが転送される場合を想定する。図7に示す符号1〜符号7は、伝送対象とするデータが分割されたデータパケットを示す。また、図7に示す符号70A〜符号70Dは、データパケット1〜データパケット5の5つのパケットと、FECパケットFとを合わせた6つのパケットを含むブロックを示す。なお、図7に示す例では、パケットの転送間隔をτとし、転送遅延をT−K・τとし、FECパケットFにより復元可能なパケット数Mを1とし、T=M・τ+αであるものとしてデータ伝送がなされるものとする。
【0006】
図7に示すように、装置Aは、データパケット1を受信する。この場合には、パケットロス数K=0となる。このため、装置Aは、τ+α(=1・τ+α−0・τ)だけ遅延させた上でデータパケット1を装置Bへ送信する。続いて、装置Aは、データパケット2をとばしてデータパケット3を受信する。この場合には、データパケット2がロスしているので、パケットロス数K=1となる。このため、装置Aは、α(=1・τ+α−1・τ)だけ遅延させた上でデータパケット3を装置Bへ送信する。同様にして、装置Aは、データパケット4、データパケット5およびFECパケットFをαだけ遅延させて装置Bへ転送する。その後、装置Aは、FECパケットFを用いて、ブロック70Aのうち欠落したデータパケット2を復元し、復元したデータパケット2を装置Bへ送信する。
【0007】
また、装置Bは、データパケット1、データパケット3、データパケット4、データパケット5、FECパケットF、データパケット2の順にブロック70Bに含まれる各パケットを正常に受信する。このため、装置Bは、各パケットをτ+α遅延させた上で装置Cへ送信する。また、装置Cでは、ブロック70Cに含まれるパケットのうち、データパケット4を除くパケットを正常に受信する。つまり、装置Cでは、装置Bから3番目に送信されたデータパケット4だけが欠落する。このため、装置Cは、正常に受信したパケットを装置Dへ送信した後にFECパケットFを用いてデータパケット4を復元し、データパケット4を装置Dへ送信する。また、装置Dでは、データパケット1、データパケット3、データパケット5、FECパケットF、データパケット2、データパケット4の順にブロック70Dに含まれる各パケットを正常に受信する。
【0008】
かかるデータ転送により、一方の装置から他方の装置へ転送されるブロックのうち一部のパケットが他のパケットに比べて遅くれて到着したり、また、パケットの受信間隔が密になりすぎたりというように転送レートにばらつきが発生するのを抑制する。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2005−12753号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
しかしながら、上記の従来技術では、パケットロス数が誤り訂正能力を超える場合に、パケットの転送を遅延させる所定値、すなわちT−K・τがマイナスの値となるので、この式での転送自体が成り立たず、転送レートにばらつきが生じるという問題がある。
【0011】
また、上流側の装置へ再送要求を行って必要なデータを取得した上で下流側の装置へ転送する場合には、パケットの再送に要する再送所要時間が長くなるほど、転送遅延が増大する結果、転送レートのばらつきも大きくなる。
【0012】
これを図8を用いて説明する。図8は、従来技術に係るデータ転送の一例を示す図である。この図8に示す例では、1ブロック内のパケット数を6つとし、装置A、装置B、装置C、装置Dの順にデータが転送される場合を想定する。図8に示す符号1〜符号7は、伝送対象とするデータが分割されたデータパケットを示す。また、図8に示す符号80A〜符号80Dは、データパケット1〜データパケット5の5つのパケットと、FECパケットFとを合わせた6つのパケットを含むブロックを示す。なお、図8に示す例では、パケットの転送間隔をτとし、転送遅延をT−K・τとし、FECパケットFにより復元可能なパケット数Mを2とし、T=M・τ+αであるものとしてデータ伝送がなされるものとする。
【0013】
図8に示す例では、装置Cが受信したパケットを装置Dへ送信する場合に転送レートのばらつきが生じる。これを説明すると、図8に示すように、装置Cは、データパケット1を受信する。この場合には、パケットロス数K=0となる。このため、装置Cは、τ+α(=2・τ+α−0・τ)だけ遅延させた上でデータパケット1を装置Dへ送信する。続いて、装置Cは、データパケット3およびデータパケット4をとばしてデータパケット5を受信する。この場合には、データパケット3およびデータパケット4がロスしているので、パケットロス数K=2となる。このため、装置Cは、α(=2・τ+α−2・τ)だけ遅延させた上でデータパケット5を装置Dへ送信する。
【0014】
さらに、装置Cは、FECパケットFをとばしてデータパケット2を受信する。この場合には、データパケット3およびデータパケット4に加え、FECパケットがロスすることになるので、パケットロス数K=3となる。ところが、パケットロス数K=3がFECパケットFが復元可能なパケット数M=2を超える場合には、T−K・τ(=2・τ+α−3・τ)がマイナスの値となってしまう。このため、仮に装置Cが受信したデータパケット2を最小の遅延αで装置Dへ送信したとしても、装置Dへデータパケット5が到着してからデータパケット2が到着するまでに2τが経過しており、パケットの転送間隔に乱れが生じる。このように、装置Cでは、ブロック80Cの送信時間が長くなる結果、ブロック80Dの転送レートにばらつきが生じる。また、装置CがロスしたパケットのうちFECパケットFを装置Bに再送させた上で装置Dへ送信する場合には、装置Bから装置Cへの再送に時間がかかるほど、FECパケットF、データパケット3やデータパケット4の転送遅延が大きくなる。
【0015】
開示の技術は、上記に鑑みてなされたものであって、転送レートのばらつきを抑制できるデータ転送装置、データ転送方法及びデータ転送プログラムを提供することを目的とする。
【課題を解決するための手段】
【0016】
本願の開示するデータ転送装置は、データパケットおよび誤り訂正用のパケットを含んでなるブロックを構成するいずれかのパケットを受信するパケット受信部を有する。前記データ転送装置は、前記パケット受信部により受信したブロックの先頭から現在の受信パケットまでのパケットロスを検出するパケットロス検出部を有する。前記データ転送装置は、前記パケット受信部により受信されたパケットを所定時間にわたって遅延させた上で転送するパケット転送部を有する。前記データ転送装置は、前記パケットロス検出部により検出されたパケットロスと、前記パケットの再送に要する再送所要時間とに基づいて、前記パケットの送信元の装置へ再送要求を送信する再送要求送信部を有する。
【発明の効果】
【0017】
本願の開示するデータ転送装置の一つの態様によれば、転送レートのばらつきを抑制できるという効果を奏する。
【図面の簡単な説明】
【0018】
【図1】図1は、実施例1に係るデータ転送装置の構成を示すブロック図である。
【図2】図2は、実施例2に係るデータ転送システムで実行されるリレー転送の一例を示す図である。
【図3】図3は、実施例2に係るデータ転送装置の構成を示すブロック図である。
【図4】図4は、実施例2に係るデータ転送処理の手順を示すフローチャートである。
【図5】図5は、実施例2に係るデータ転送装置によるデータ転送の一例を示す図である。
【図6】図6は、実施例3に係るデータ転送プログラムを実行するコンピュータの一例について説明するための図である。
【図7】図7は、従来技術に係るデータ転送の一例を示す図である。
【図8】図8は、従来技術に係るデータ転送の一例を示す図である。
【発明を実施するための形態】
【0019】
以下に、本願の開示するデータ転送装置、データ転送方法及びデータ転送プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例1】
【0020】
図1は、実施例1に係るデータ転送装置の構成を示すブロック図である。図1に示すデータ転送装置10は、パケット受信部11と、パケットロス検出部12と、パケット転送部13と、再送要求送信部14とを有する。
【0021】
パケット転送部11は、データパケットおよび誤り訂正用のパケットを含んでなるブロックを構成するいずれかのパケットを受信する。パケットロス検出部12は、パケット受信部11により受信したブロックの先頭から現在の受信パケットまでのパケットロスを検出する。また、パケット転送部13は、パケット受信部11により受信されたパケットを所定時間にわたって遅延させた上で転送する。また、再送要求送信部14は、パケットロス検出部12により検出されたパケットロスと、パケットの再送に要する再送所要時間とに基づいて、パケットの送信元の装置へ再送要求を送信する。
【0022】
このように、本実施例に係るデータ転送装置10は、誤り訂正用のパケットが誤り訂正可能なパケット数だけでなく、パケットの再送に要する再送所要時間を加味して再送要求を前倒しに行う。このため、本実施例に係るデータ転送装置10では、ブロックの終盤のパケットを受信した場合に、パケットの再送が必要となる可能性を未然に低減させることができる。それゆえ、本実施例に係るデータ転送装置10では、ブロックの終盤のパケットを転送する場合に、それまでにパケットがロスされていたとしても、誤り訂正用のパケットにより自力で復元できる可能性が高まる。よって、本実施例に係るデータ転送装置10によれば、転送レートにばらつきが生じるのを抑制することが可能になる。
【実施例2】
【0023】
[システム構成]
続いて、実施例2に係るデータ転送システムについて説明する。図2は、実施例2に係るデータ転送システムで実行されるリレー転送の一例を示す図である。図2の例では、映像データや音声データなどの各種のコンテンツをデータ転送装置100−1〜100−20へリレー(relay)転送される場合を想定する。
【0024】
図2に示す例では、特定の通信ノード(node)に負荷が集中するのを防止する観点から、データ転送装置間の通信方式としてP2P(Peer to Peer)やALM(Application Layer Multicast)などを採用する場合を想定する。なお、データ転送装置の通信方式には、任意の通信方式を採用することができ、P2PやALM以外にも一般のクライアントサーバ方式にも開示の装置を同様に適用できる。
【0025】
図2に示すデータ転送システムでは、データ転送装置100−1を頂点とし、データ転送装置100−1から下流側のデータ転送装置へデータを順次受け渡すリレー転送を一定のビットレート(bit rate)で行う。
【0026】
図2に示すように、データ転送装置100−1が配信するデータは、データ転送装置100−2、100−4、100−7及び100−12を経由して、データ転送装置100−16及び100−17までリレー転送される。また、データ転送装置100−1が配信するデータは、データ転送装置100−2、100−4、100−8及び100−13を経由して、データ転送装置100−18へリレー転送される。さらに、データ転送装置100−1が配信するデータは、データ転送装置100−2、100−4、100−8を経由して、データ転送装置100−14へリレー転送される。また、データ転送装置100−1が配信するデータは、データ転送装置100−2及び100−5を経由して、データ転送装置100−9へリレー転送される。さらに、データ転送装置100−1が配信するデータは、データ転送装置100−3及び100−6を経由して、データ転送装置100−10へリレー転送される。また、データ転送装置100−1が配信するデータは、データ転送装置100−3、100−6、100−11及び100−15を経由して、データ転送装置100−19及び100−20へリレー転送される。
【0027】
データ転送装置100−1〜100−20は、通信機能を有する情報処理装置であればよい。一例としては、パーソナルコンピュータ(personal computer)を始め、サーバ(server)などの固定端末の他、携帯電話機、PHS(Personal Handyphone System)やPDA(Personal Digital Assistant)などの移動体端末を適用することができる。他の一例としては、L3スイッチ(Layer 3 switch)、ルータ(router)、ルーティング(routing)機能を搭載するコンピュータなどのネットワーク(network)機器であってもかまわない。なお、以下では、データ転送装置100−1〜100−20を区別せずに総称する場合にデータ転送装置100と記載する。
【0028】
図2に示すデータ転送装置100は、自装置の下流側の装置へデータを転送する場合に、FEC(Forward Error Correction)パケットを付加した上で自装置の下流側の装置へデータを伝送するものとする。このFECパケットにより、下流側のデータ転送装置100では、パケットロスKがFECパケットFにより復元可能なパケット数M以内である限りは、上流側のデータ転送装置100にパケットを再送させずともよくなる。
【0029】
[データ転送装置の構成]
次に、本実施例に係るデータ転送装置100の構成について説明する。図3は、実施例2に係るデータ転送装置の構成を示すブロック図である。なお、データ転送装置100は、図3に示した機能部以外にも既知のコンピュータが有する各種の機能部、例えば各種の入力デバイスや表示デバイスなどの機能を有するものとする。
【0030】
図3に示すデータ転送装置100は、パケット情報取得部110と、パケット転送指示部120と、ARQ送信指示部130と、パケットロス検出部140と、転送遅延算出部150と、ARQ可否判定部160と、エラー訂正部170とを有する。
【0031】
このうち、パケット情報取得部110、ARQ送信指示部130及びパケット転送指示部120は、データ転送装置100が有する図示しない通信インタフェース(interface)と接続される。これらパケット情報取得部110、ARQ送信指示部130及びパケット転送指示部120は、通信インタフェースを介して、他のデータ転送装置を含む外部装置との間で通信を行う。
【0032】
パケット情報取得部110は、上流側のデータ転送装置からパケットを受信した場合に、その受信パケットのFECブロックに関する情報を判別する処理部である。
【0033】
例えば、パケット情報取得部110は、受信パケットを含むFECブロックに関する情報を取得する。一例としては、パケット情報取得部110は、受信パケットに含まれるFECヘッダからデータパケットまたはFECパケットのいずれであるかのパケット種別を取得する。他の一例としては、パケット情報取得部110は、FECブロック内の各パケットに付与されるシーケンス番号のうち受信パケットに付与されているFECブロック内のシーケンス番号を取得する。なお、FECブロック内のシーケンス番号は、上流側のデータ転送装置により送信される際にFECブロック内のパケットの送信順序に応じて付与されるシーケンス番号である。
【0034】
また、パケット情報取得部110は、受信パケット自体に関する情報を取得する。一例としては、パケット情報取得部110は、受信パケットのヘッダ、例えばRTPヘッダなどを参照して、受信パケットが新規パケットまたは再送パケットのいずれであるのかを取得したり、また、受信パケットに付与されたシーケンス番号を取得したりする。なお、新規パケットとは、上流側のデータ転送装置から新たに受信したパケットを指す。また、再送パケットとは、上流側のデータ転送装置から再送されたパケットを指す。
【0035】
パケット転送指示部120は、上流側のデータ転送装置から受信したパケットを後述の転送遅延算出部150により算出された遅延時刻にわたって遅延させた上で下流側のデータ転送装置へ転送させる処理部である。また、ARQ(Automatic repeat-request)送信指示部130は、後述のARQ可否判定部160による指示に基づき、上流側のデータ転送装置から受信したパケットの再送要求を行う処理部である。
【0036】
パケットロス検出部140は、FECブロックの先頭から受信パケットまでのパケットロスを検出する処理部である。一例としては、パケットロス検出部140は、受信パケットが新規パケットである場合には、パケット情報取得部110により今回に取得されたFECブロック内のシーケンス番号と、前回に取得されたFECブロック内のシーケンス番号とを比較する。このとき、2つのFECブロック内のシーケンス番号が連番でない場合には、パケットロスがあることが判明する。この場合、パケットロス検出部140は、前回に取得されたFECブロック内のシーケンス番号と、今回に取得されたFECブロック内のシーケンス番号との間で欠落している番号の個数を今回までに検出されていたパケットロス数に加算する。また、パケットロス検出部140は、受信パケットが再送パケットである場合には欠落していたパケットが再送により補間されたことになるので、今回までに検出されていたパケットロス数を1つ減算する。
【0037】
このように、パケットロス検出部140は、パケットロスが検出される度にパケットロス数を加算更新する一方で再送パケットが到達する度にパケットロス数を減算更新する。これによって、パケットが受信される度に最新のパケットロス数を管理する。なお、ここで言うパケットロスとは、パケットの欠落を指し、データパケットまたはFECパケットの欠落のいずれも含み得る。また、ここでは、FECブロック内のシーケンス番号からパケットロスを検出する場合を説明したが、タイマ(timer)により受信間隔が転送間隔τ+αを上回るごとにパケットロス数を加算更新するようにしてもよい。
【0038】
転送遅延算出部150は、受信パケットの転送を遅延させる転送遅延を算出する処理部である。一例としては、転送遅延算出部150は、所定の転送遅延、例えばT−K・τを算出した上で受信パケットの受信時刻に加算することにより受信パケットの転送時刻を算出する。ここで、τは、パケットの転送間隔を指す。また、Kは、パケットロス数を指す。また、Tは、FECパケットにより復元可能なパケット数Mと、パケットの転送間隔τとを乗じたM・τよりも大きな固定値であり、一例として、M・τ+αを採用する場合を想定する。なお、αは、伝送により遅延する伝送遅延時間を指し、一例として、ゼロに近いプラスの値が与えられる。
【0039】
これを説明すると、転送遅延算出部150は、固定値T(=M・τ)からパケットロス検出部140により検出されたパケットロス数Kに転送間隔τを乗じたK・τを減算することにより、転送遅延「M・τ−K・τ」を算出する。その上で、転送遅延算出部150は、受信パケットの受信時刻に転送遅延「M・τ−K・τ」を加算することにより、受信パケットの転送時刻を算出する。
【0040】
ARQ可否判定部160は、パケットロス検出部140により検出されたパケットロスと、パケットの再送に要する再送所要時間γとに基づいて、上流側のデータ転送装置に対して再送要求を実行するか否かを判定する処理部である。
【0041】
すなわち、ARQ可否判定部160は、パケットロス数Kが、FECパケットにより誤り訂正可能なパケット数Mから再送所要時間γをパケットの転送間隔τで除した値を減じた閾値よりも大きい場合に、再送要求を要すると判定する。つまり、ARQ可否判定部160は、判定式「M−γ/τ<K」を満たす場合に、ARQ送信指示部130に再送要求を送信させる。転送間隔τは、転送間隔がばらついた場合は平均値や最小値を使用してもよい。
【0042】
かかる判定式を採用するのは、FECブロック内のパケットロス数Kと、FECパケットにより誤り訂正可能なパケット数Mとからでは、FECブロックのうちどのパケットを受信した時点で再送要求を実行すればよいかを適切に判断できないからである。すなわち、これら2つのパラメータからでは、パケットロス数KがFECパケットにより誤り訂正可能なパケット数Mよりも大きい場合には、再送要求が必ず必要になるという事実しか判定できない。
【0043】
そこで、ARQ可否判定部160は、転送遅延を最小値τとし、かつFECブロック単位で一定に保つために、再送パケットが規定のFECブロックの転送時間(N−1)・τ内に転送できる時刻に到達するか否かにより、再送要求を行うか否かを判定する。なお、Nは、1つのFECブロックに含まれるパケット数を指す。
【0044】
これを説明すると、FECブロックの中でも転送が終盤となるパケットを受信した時点で、パケットロス数が再送により欠落パケットを復元した場合にFECブロックの転送遅延時間内に訂正できないパケット数とならないようにマージンγ/τを設定する。そして、ARQ可否判定部160は、FECパケットにより誤り訂正可能なパケット数Mからマージンγ/τを減じた値「M−γ/τ」をパケットロス数Kと比較する閾値とする。このとき、判定式「M−γ/τ<K」を満たす場合には、仮に「M>K」であっても再送パケットが規定のFECブロックの転送時間内に転送できる時刻に到達しない可能性があるので、ARQ送信指示部130に再送要求を実行させる。
【0045】
ここで、ARQ可否判定部160は、上記の判定式「M−γ/τ<K」を満たすからといってFECブロック内でロスしているパケット全てを対象に再送要求を実行させることはしない。なぜなら、再送要求を多発したのでは、上流側のデータ転送装置、それに至るまでのリソースを無駄遣いすることになるからである。それゆえ、ARQ可否判定部160は、上記の判定式「M−γ/τ<K」を満たす場合には、FECブロック内でロスしているパケットのうち、より直近に欠落したパケットであり、かつM−γ/τ≧Kとなるパケット数のパケットを対象に再送要求を実行させる。ただし、FECパケットがロスしている場合には、FECパケットを優先して再送要求を実行させる。
【0046】
これにより、適切なタイミングで再送要求を実行させつつも、FECパケットを最大限に活用する。よって、転送レートにばらつきが生じるのを抑制しつつ、リソースを有効活用できる。
【0047】
一例として、Pro−MPEG FECに上記の判定式を適用する場合を想定する。このPro−MPEG FECは、パケットデータをマトリックス(matrix)状に並べ、その行及び列それぞれでXOR(eXclusive OR)を求め、エラー訂正符号であるFECパケットを生成するものである。マトリックスサイズの範囲は、「D*L≦100 1≦L≦20 4≦D≦20」と規定されている。なお、Lは、行(columns)を指し、Dは、列(rows)を指す。
【0048】
ここで、送信レートを1Mbps、RTT(Round Trip Time)を50msec、マトリックスサイズを100(=10×10)とした場合を想定する。このようにマトリックスサイズが10×10=100である場合、FECを含む1ブロックのパケット数は、120となる。また、この1ブロックでの訂正可能パケット数は19であり、この1ブロックを転送する場合、転送遅延は、19パケット送信分(190msec)のみとなり、1ブロック分遅延させた場合の1/6となる。
【0049】
このように、上記の判定式に関係するパラメータは、FECパケットにより誤り訂正可能なパケット数Mが19、パケットの転送間隔τが10msec、固定値Tが190+α(msec)、再送所要時間γ(=RTT+β)が50msecとなる。この場合には、上記の判定式「M−γ/τ<K」は、19−50/10<Kとなり、その結果、14<Kとなる。このため、1ブロック中でのパケットロス数が14より多くなった場合に再送により訂正を行うことで、一定遅延での転送が可能となる。よって、実際のレートで上記の判定式は有効に機能すると言える。なお、βは転送装置内の再送パケットの検索などに用する処理所用時間を指し、一例として、ゼロに近いプラスの値が与えられる。
【0050】
エラー訂正部170は、FECブロックに含まれるパケットのうちFECパケットを用いて、同一のFECブロック内でパケットロス検出部140により検出されたパケットロスを訂正する処理部である。
【0051】
これを説明すると、エラー訂正部170は、受信パケットが同一のFECブロックのパケットとして受信する最後パケットである場合に、パケットロス検出部140により検出されたパケットロス数がゼロよりも大きいか否かを判定する。ここで言う最終パケットとは、FECブロック内のシーケンス番号が最後の番号であるか、或いは規定のFECブロックの受信時間(N−1)(τ+α)を超えて受信された再送パケットを指す。そして、パケットロス数がゼロよりも大きい場合には、エラー訂正部170は、FECパケットを用いて、パケットロスを訂正により復元する。
【0052】
[処理の流れ]
次に、本実施例に係るデータ転送装置の処理の流れについて説明する。図4は、実施例1に係るデータ転送処理の手順を示すフローチャートである。このデータ転送処理は、データ転送装置100が起動している場合に再帰的に実行される処理であり、上流側のデータ転送装置からパケットを受信した場合に起動する。
【0053】
図4に示すように、上流側のデータ転送装置からパケットを受信すると(ステップS101)、転送遅延算出部150は、所定の転送遅延T−K・τを算出した上でパケットの受信時刻に加算することによりパケットの転送時刻を算出する(ステップS102)。
【0054】
そして、パケット転送指示部120は、下流側のデータ転送装置に対して上流側のデータ転送装置から受信したパケットを転送遅延算出部150により算出された転送時刻に転送させる(ステップS103)。なお、パケットの転送時には、FECブロック内のパケットのうち今回転送するパケットの送信順序をFECブロック内のシーケンス番号としてFECヘッダに書き込んだ上で転送する。
【0055】
続いて、パケットロス検出部140は、受信パケットが新規パケットであるか否かを判定する(ステップS104)。このとき、受信パケットが新規パケットである場合(ステップS104肯定)には、パケットロス検出部140は、パケットロスを検出する(ステップS105)。そして、パケットロスを検出した場合(ステップS105肯定)には、パケットロス検出部140は、今回に検出したパケットロス数を今回までに検出されていたパケットロス数に加算する(ステップS106)。
【0056】
一方、受信パケットが再送パケットである場合(ステップS104否定)には、欠落していたパケットが再送により補間されたことになるので、今回までに検出されていたパケットロス数を1つ減算する(ステップS107)。
【0057】
その後、ARQ可否判定部160は、パケットロス数Kが所定値を超過するか否か、例えば上記の判定式「M−γ/τ<K」を満たすか否かを判定する(ステップS108)。このとき、パケットロス数Kが所定値を超過する場合(ステップS108肯定)には、ARQ送信指示部160は、図示しない通信インタフェースを介して再送要求を上流側のデータ転送装置へ送信する(ステップS109)。なお、パケットロス数が所定値以下である場合(ステップS108否定)には、再送要求は行わず、そのままステップS110に移行する。
【0058】
そして、受信パケットが最終パケットである場合(ステップS110肯定)には、エラー訂正部170は、パケットロス検出部140により検出されたパケットロス数がゼロよりも大きいか否かを判定する(ステップS111)。
【0059】
この結果、パケットロス数がゼロよりも大きい場合(ステップS111肯定)には、エラー訂正部170は、FECパケットを用いて、パケットロスを訂正により復元する(ステップS112)。その後、パケット転送指示部120は、エラー訂正部170により復元されたパケットを前回にパケットを転送してから転送間隔τを空けた上で下流側のデータ転送装置へ転送し(ステップS113)、ステップS101に戻る。
【0060】
なお、受信パケットが最終パケットである場合またはパケットロス数がゼロである場合(ステップS110否定またはステップS111否定)には、ステップS101に戻る。
【0061】
[実施例2の効果]
上述してきたように、本実施例に係るデータ転送装置100は、FECパケットにより誤り訂正可能なパケット数Kだけでなく、再送所要時間γを加味して再送要求を前倒しに行う。このため、本実施例に係るデータ転送装置100では、FECブロックの終盤のパケットを受信した場合に、パケットの再送が必要となる可能性を未然に低減させることができる。それゆえ、本実施例に係るデータ転送装置100では、FECブロックの終盤のパケットを転送する場合に、それまでにパケットがロスされていたとしても、FECパケットにより自力で復元できる可能性が高まる。よって、本実施例に係るデータ転送装置100によれば、転送レートにばらつきが生じるのを抑制することが可能である。
【0062】
ここで、図5を用いて、データ転送例を参照しつつその効果を説明する。図5は、実施例2に係るデータ転送装置によるデータ転送の一例を示す図である。この図5に示す例では、1つのFECブロック内のパケット数を6つとし、装置100−2、装置100−4、装置100−7、装置100−12の順にデータが転送される場合を想定する。図5に示す符号1〜符号7は、伝送対象とするデータが分割されたデータパケットを示す。また、図5に示す符号50A〜符号50Dは、データパケット1〜データパケット5の5つのパケットと、FECパケットFとを合わせた6つのパケットを含むブロックを示す。なお、図5に示す例では、パケットの転送間隔をτとし、転送遅延をT−K・τとし、FECパケットFにより復元可能なパケット数Mを2とし、T=M・τ+αであるものとし、再送所要時間γ=τとしてデータ伝送がなされるものとする。
【0063】
図5に示す例では、図8に示した従来技術における装置Cが転送する際に発生していた転送レートのばらつきが実施例2に係る装置100−7では抑制されていることがわかる。これを説明すると、データ転送装置100−7は、データパケット1を受信する。この場合には、パケットロス数K=0となる。このため、データ転送装置100−7は、2τ+α(=2・τ+α−0・τ)だけ遅延させた上でデータパケット1をデータ転送装置100−12へ送信する。続いて、データ転送装置100−7は、データパケット3およびデータパケット4をとばしてデータパケット5を受信する。この場合には、データパケット3およびデータパケット4がロスしているので、パケットロス数K=2となる。このため、データ転送装置100−7は、α(=2・τ+α−2・τ)だけ遅延させた上でデータパケット5を下流側のデータ転送装置100−12へ送信する。
【0064】
ここで、データ転送装置100−7では、上記の判定式「M−γ/τ<K」を適用すると「M−γ/τ=1<K=2」となり、判定式を満たすので、上流側のデータ転送装置100−4へデータパケット4の再送要求を行う。そして、データ転送装置100−7は、上流側のデータ転送装置100−4から再送されたデータパケット4を受け取り、α(=2・τ+α−2・τ)だけ遅延させた上でデータパケット4を下流側のデータ転送装置100−12へ送信する。その後、データ転送装置100−7は、パケットロス数Kを2から1へ減じる。
【0065】
続いて、データ転送装置100−7は、FECパケットをとばしてデータパケット2を受信する。この場合には、データパケット3およびFECパケットがロスしているので、パケットロス数K=2となる。このため、データ転送装置100−7は、α(=2・τ+α−2・τ)だけ遅延させた上でデータパケット2を下流側のデータ転送装置100−12へ送信する。
【0066】
その後、データ転送装置100−7では、上記の判定式が「M−γ/τ=1<K=2」となり、判定式を満たすので、上流側のデータ転送装置100−4へFECパケットの再送要求を行う。そして、データ転送装置100−7は、上流側のデータ転送装置100−4から再送されたFECパケットを受け取り、α(=2・τ+α−2・τ)だけ遅延させた上でデータパケット4を下流側のデータ転送装置100−12へ送信する。その後、データ転送装置100−7は、パケットロス数Kを2から1へ減じる。
【0067】
そして、データ転送装置100−7では、最終パケットであるFECパケットFを受信すると、ロス状態にあり、かつ未訂正のデータパケット3をFECパケットにより復元し、復元したパケットを転送間隔τで下流側のデータ転送装置100−12へ送信する。
【0068】
このように、本実施例に係るデータ転送装置100−7では、上記の判定式により、データパケット5を受信した段階で再送要求を行うことができる。このため、FECブロックに含まれるパケットのうち終盤のデータパケット2を受信した段階で、FECパケットの誤り訂正能力を超えない。このため、本実施例に係るデータ転送装置100−7では、転送遅延T−K・τを保って転送を行うことができる。
【0069】
また、本実施例に係るデータ転送装置100は、パケットロス数Kが、FECパケットにより誤り訂正可能なパケット数Mから再送所要時間γをパケットの転送間隔τで除した値を減じた値よりも大きい場合に、パケットの送信元の装置へ再送要求を送信する。このため、FECブロックの中でも転送が終盤となるパケットを受信した時点で、パケットロス数が再送によりパケットロスを復元した場合にFECブロックの転送遅延時間内に訂正できないパケット数とならないように再送制御できる。それゆえ、本実施例に係るデータ転送装置100によれば、転送レートにばらつきが生じるのをより効果的に抑制することが可能である。
【0070】
さらに、本実施例に係るデータ転送装置100は、FECパケットを用いて、同一のFECブロック内で検出されたパケットロスを訂正する。その上で、本実施例に係るデータ転送装置100は、同一のFECブロックのうち最終に受信されたパケットの後に続けて訂正パケットを転送する。これによって、本実施例に係るデータ転送装置100では、適切なタイミングで再送要求を実行させつつも、FECパケットを最大限に活用できる。それゆえ、本実施例に係るデータ転送装置100によれば、転送レートにばらつきが生じるのを抑制しつつ、リソースを有効活用することが可能である。
【実施例3】
【0071】
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【0072】
[適用範囲]
なお、上記の実施例2では、映像データや音声データなどのデータを転送する場合を説明したが、文書やアプリケーションなどの他のデータであってもよく、必ずしもリアルタイム性が求められるデータである必要はない。
【0073】
[その他]
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。また、パケット情報取得部110、パケット転送指示部120、ARQ送信指示部130、パケットロス検出部140、転送遅延算出部150、ARQ可否判定部160またはエラー訂正部170をデータ転送装置の外部装置としてする。そして、外部装置をネットワーク経由で接続するようにしてもよい。また、パケット情報取得部110、パケット転送指示部120、ARQ送信指示部130、パケットロス検出部140、転送遅延算出部150、ARQ可否判定部160またはエラー訂正部170を別の装置がそれぞれ有することとする。そして、別の装置がそれぞれネットワーク接続されて協働することで、上記のデータ転送装置の機能を実現するようにしてもよい。
【0074】
[データ転送プログラム]
また、上記の実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図6を用いて、上記の実施例と同様の機能を有するデータ転送プログラムを実行するコンピュータの一例について説明する。なお、図6は、実施例3に係るデータ転送プログラムを実行するコンピュータの一例について説明するための図である。
【0075】
図6に示すように、実施例3におけるコンピュータ300は、操作部310aと、マイク310bと、スピーカ310cと、ディスプレイ320と、通信部330とを有する。さらに、このコンピュータ300は、CPU350と、ROM360と、HDD(Hard Disk Drive)370と、RAM(Random Access Memory)380と有する。これら310〜380の各部はバス340を介して接続される。
【0076】
ROM360には、上記の実施例2で示したパケット情報取得部110と、パケット転送指示部120と、ARQ送信指示部130と同様の機能を発揮する制御プログラムが予め記憶される。さらに、ROM360には、パケットロス検出部140と、転送遅延算出部150と、ARQ可否判定部160と、エラー訂正部170と同様の機能を発揮する制御プログラムが予め記憶される。つまり、ROM360には、図6に示すように、パケット情報取得プログラム360aと、パケット転送指示プログラム360bと、ARQ送信指示プログラム360cとが記憶される。さらに、ROM360には、パケットロス検出プログラム360dと、転送遅延算出プログラム360eと、ARQ可否判定プログラム360fと、エラー訂正プログラム360gとが記憶される。これらのプログラム360a〜360gについては、図3に示したデータ転送装置の各構成要素と同様、適宜統合又は分離しても良い。なお、RAM360に格納される各データは、常に全てのデータがRAM360に格納される必要はなく、処理に必要なデータのみがRAM360に格納されれば良い。
【0077】
そして、CPU350が、これらのプログラム360a〜360gをROM360から読み出して実行する。これによって、CPU350は、図6に示すように、各プログラム360a〜360gについては、パケット情報取得プロセス350a、パケット転送指示プロセス350b及びARQ送信指示プロセス350cとして機能するようになる。さらに、CPU350は、パケットロス検出プロセス350d、転送遅延算出プロセス350e、ARQ可否判定プロセス350f及びエラー訂正プロセス350gとして機能するようになる。そして、CPU350は、RAM380の記憶領域を使用しつつ、データ転送プログラムを実行する。各プロセス350a〜350gは、図3に示した各機能部にそれぞれ対応する。なお、CPU350上で仮想的に実現される各処理部は、常に全ての処理部がCPU350上で動作する必要はなく、処理に必要な処理部のみが仮想的に実現されれば良い。
【0078】
なお、上記したデータ再現プログラムについては、必ずしも最初からHDD370やROM360に記憶させておく必要はない。例えば、コンピュータ300に挿入されるフレキシブルディスク、いわゆるFD、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させる。そして、コンピュータ300がこれらの可搬用の物理媒体から各プログラムを取得して実行するようにしてもよい。また、公衆回線、インターネット、LAN、WANなどを介してコンピュータ300に接続される他のコンピュータまたはサーバ装置などに各プログラムを記憶させておき、コンピュータ300がこれらから各プログラムを取得して実行するようにしてもよい。
【符号の説明】
【0079】
10 データ転送装置
11 パケット受信部
12 パケットロス検出部
13 パケット転送部
14 再送要求送信部
100−1〜100−20 データ転送装置
110 パケット情報取得部
120 パケット転送指示部
130 ARQ送信指示部
140 パケットロス検出部
150 転送遅延算出部
160 ARQ可否判定部
170 エラー訂正部

【特許請求の範囲】
【請求項1】
データパケットおよび誤り訂正用のパケットを含んでなるブロックを構成するいずれかのパケットを受信するパケット受信部と、
前記パケット受信部により受信したブロックの先頭から現在の受信パケットまでのパケットロスを検出するパケットロス検出部と、
前記パケット受信部により受信されたパケットを所定時間にわたって遅延させた上で転送するパケット転送部と、
前記パケットロス検出部により検出されたパケットロスと、前記パケットの再送に要する再送所要時間とに基づいて、前記パケットの送信元の装置へ再送要求を送信する再送要求送信部と
を有することを特徴とするデータ転送装置。
【請求項2】
前記再送要求送信部は、
前記パケットロス検出部により検出されたパケットロスが、前記誤り訂正用のパケットにより誤り訂正可能なパケット数から前記再送所要時間を前記パケット転送部によるパケットの転送間隔で除した値を減じることにより得られる閾値よりも大きい場合に、前記パケットの送信元の装置へ再送要求を送信することを特徴とする請求項1に記載のデータ転送装置。
【請求項3】
前記パケット受信部により前記誤り訂正用のパケットとして受信された誤り訂正用パケットを用いて、同一のブロック内で前記パケットロス検出部により検出されたパケットロスを訂正する誤り訂正部をさらに有し、
前記パケット転送部は、
同一のブロックのうち前記パケット受信部により最終に受信されたパケットの後に続けて前記誤り訂正部により訂正されたパケットを転送する請求項1または2に記載のデータ転送装置。
【請求項4】
第1の装置により送信されるパケットを第2の装置が受信し、第2の装置が受信したパケットを第3の装置へ転送するデータ転送システムに用いるデータ転送方法であって、
前記第2の装置が、
前記第1の装置からデータパケットおよび誤り訂正用のパケットを含んでなるブロックを構成するいずれかのパケットを受信するパケット受信工程と、
前記パケット受信工程により受信したブロックの先頭から現在の受信パケットまでのパケットロスを検出するパケットロス検出工程と、
前記パケット受信工程により受信されたパケットを所定時間にわたって遅延させた上で前記第3の装置へ転送するパケット転送工程と、
前記パケットロス検出工程により検出されたパケットロスと、前記パケットの再送に要する再送所要時間とに基づいて、前記第1の装置へ再送要求を送信する再送要求送信工程と
を含んだことを特徴とするデータ転送方法。
【請求項5】
コンピュータに、
データパケットおよび誤り訂正用のパケットを含んでなるブロックを構成するいずれかのパケットを受信するパケット受信手順と、
前記パケット受信手順により受信したブロックの先頭から現在の受信パケットまでのパケットロスを検出するパケットロス検出手順と、
前記パケット受信手順により受信されたパケットを所定時間にわたって遅延させた上で転送するパケット転送手順と、
前記パケットロス検出手順により検出されたパケットロスと、前記パケットの再送に要する再送所要時間とに基づいて、前記パケットの送信元の装置へ再送要求を送信する再送要求送信手順と
を実行させることを特徴とするデータ転送プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2012−4952(P2012−4952A)
【公開日】平成24年1月5日(2012.1.5)
【国際特許分類】
【出願番号】特願2010−139558(P2010−139558)
【出願日】平成22年6月18日(2010.6.18)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】