(57)【特許請求の範囲】
【請求項１】
データの再送要求を受信する再送要求受信部と、
第１のデータ受信装置から送られてきた再送要求の受信数の過去の履歴と、前記第１のデータ受信装置から送られてきた再送要求と対象を同一とする他のデータ受信装置から送られてきた再送要求の受信数の過去の履歴と、を蓄積する関連性更新部と、
前記第１のデータ受信装置から再送要求を受信したとき、前記関連性更新部により蓄積された履歴から配送木を推定し、前記第１のデータ受信装置に加えて、前記推定された配送木において前記第１のデータ受信装置の下流に位置する他のデータ受信装置を、前記データの再送先として選択する再送先選択部と、
を有するデータ送信装置。
【請求項２】
前記再送要求受信部は、
受信した再送要求から、その再送要求の対象を示す情報と、その再送要求の送信元のデータ受信装置を示す情報と、を抽出する、
請求項１記載のデータ送信装置。
【請求項３】
前記関連性更新部は、
受信した再送要求の対象を示す情報を、その再送要求の送信元のデータ受信装置を示す情報に対応付けて記述した関連性保存テーブルを作成し、
前記再送先選択部は、
前記関連性保存テーブルを参照して前記配送木を推定する、
請求項１記載のデータ送信装置。
【請求項４】
前記関連性保存テーブルは、第１のデータ受信装置から送られてきた再送要求の総受信数と、前記第１のデータ受信装置から送られてきた再送要求と対象を同一とする他のデータ受信装置から送られてきた再送要求の受信数と、を更に記述し、
前記関連性更新部は、
前記関連性保存テーブルを参照して、前記第１のデータ受信装置から受信した再送要求と対象を同一とする再送要求を他のデータ受信装置から受信したか否かを判断し、この判断結果に基づいて前記関連性保存テーブルを更新する、
請求項３記載のデータ送信装置。
【請求項５】
前記再送先選択部は、
前記第１のデータ受信装置から送られてきた再送要求と対象を同一とする他のデータ受信装置から送られてきた再送要求の受信数を、前記第１のデータ受信装置から送られてきた再送要求の総受信数で除した値を、関連度として算出し、前記関連度が所定の閾値よりも高いとき、該当する他のデータ受信装置が前記第１のデータ受信装置の下流に位置すると判断する、
請求項４記載のデータ送信装置。
【請求項６】
前記関連性更新部は、
前記関連性保存テーブルの前記再送要求の総受信数および前記再送要求の受信数を、時間軸で重み付けをして更新する、
請求項４記載のデータ送信装置。
【請求項７】
前記関連性更新部は、
前記関連性保存テーブルの更新前後の差分のうち、時間的により新しい更新の差分に対して、より強い重み付けを行う、
請求項６記載のデータ送信装置。
【請求項８】
前記第１のデータ受信装置以外の他のデータ受信装置から受信した再送要求の対象を、前記他のデータ受信装置に送信しておらず、かつ前記第１のデータ受信装置に送信しているとき、前記関連性テーブルに記述された値のうち、前記第１のデータ受信装置から送られてきた再送要求と対象を同一とする前記他のデータ受信装置から送られてきた再送要求の受信数の値を増加させる再送先選択結果反映部、を更に有する、
請求項５記載のデータ送信装置。
【請求項９】
前記関連性保存テーブルは、データ受信装置を示す情報に対応付けて、再送要求に対応して送信したデータを示す情報を記述し、
前記再送先選択結果反映部は、
前記関連性保存テーブルを参照して、前記第１のデータ受信装置以外の他のデータ受信装置から受信した再送要求の対象を、前記他のデータ受信装置に送信しておらず、かつ前記第１のデータ受信装置に送信しているか否かを判断する、
請求項８記載のデータ送信装置。
【請求項１０】
前記第１のデータ受信装置が参加するグループへの配信の対象となるデータを格納しシーケンス番号を付されたデータパケットを、前記グループにマルチキャストで送信するデータパケット送信部と、
前記グループにマルチキャストで送信されるデータパケットを蓄積するデータ蓄積部と、を更に有し、
前記再送先選択部は、
前記第１のデータ受信装置から受信した再送要求の対象を示す情報が前記シーケンス番号のとき、該当するデータパケットに格納されたデータを前記データ蓄積部から取得し、取得したデータを再送の対象とする、
請求項２記載のデータ送信装置。
【請求項１１】
前記再送先選択部は、
前記データ蓄積部から取得したデータを格納し、かつ前記再送先として選択したデータ受信装置を宛先とする再送パケットを生成し、
前記再送先選択部により生成された再送パケットを、その再送パケットの宛先に送信する再送部、を更に有する、
請求項１０記載のデータ送信装置。
【請求項１２】
第１のデータ受信装置からデータの再送要求を受信する再送要求受信ステップと、
第１のデータ受信装置から送られてきた再送要求の受信数の過去の履歴と、前記第１のデータ受信装置から送られてきた再送要求と対象を同一とする他のデータ受信装置から送られてきた再送要求の受信数の過去の履歴とから配送木を推定し、前記第１のデータ受信装置に加えて、前記推定した配送木において前記第１のデータ受信装置の下流に位置する他のデータ受信装置を、前記データの再送先として選択する再送先選択ステップと、
前記再送先選択ステップで再送先として選択されたデータ受信装置に、前記データを送信する再送ステップと、
を有するデータ再送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、他の装置からの要求に応じてデータの再送を行うデータ送信装置およびデータ再送方法に関する。
【背景技術】
【０００２】
近年、通信ネットワークの急速な発展に伴い、テレビ会議システムやオンラインゲームなど、同一のグループに属する複数の受信者の間で映像や音声のデータをリアルタイムに通信する機会が増大している。このようなコミュニケーション用途の通信では、複数の受信者に対して同一のデータが送信されることが多い。
【０００３】
複数の受信者に対して同一のデータを効率的に伝送する通信技術として、マルチキャスト通信が知られている。マルチキャスト通信におけるマルチメディアデータの配信先は、グループ分けされ、グループごとにマルチキャストでパケットが送信される。
【０００４】
データの送信元とデータの送信先とが異なるセグメントに位置している場合、従来は、送信元から送信先に至る経路上の全てのパケット中継装置（以下「ルータ」という）がマルチキャスト通信に対応している必要があった。
【０００５】
これに対し、近年、明示的マルチキャスト方式やオーバレイマルチキャスト方式など、経路上の全てのルータがマルチキャスト通信に対応していなくても異なるセグメントへのマルチキャスト通信を可能とする通信方式が開発され、普及が進んでいる。
【０００６】
まず、明示的マルチキャスト方式によるパケット配信について説明する。
【０００７】
明示的マルチキャスト方式は、グループに属する全てのデータ受信装置の宛先アドレスを、送信パケットのオプションヘッダ部またはペイロード部に格納することにより、全送信先を明示的に指定する通信方式である。代表的な明示的マルチキャスト方式としては、例えば、エクスプリシットマルチキャスト（explicit multicast：ＸＣＡＳＴ）がある（非特許文献１参照）。
【０００８】
明示的マルチキャスト方式では、経路上の全てのルータが明示的マルチキャスト方式に対応していなくても、ＩＰ（internet protocol）パケット（以下単に「パケット」という）に格納された宛先アドレスの全ての受信者に対して、データを送信することができる。その際、パケットがどの受信者に対して配送されたかは、パケットのヘッダに格納されたビット列などによって管理される。
【０００９】
各ルータは、宛先プレフィクス、次ホップ、および送出インタフェースを対応付けたユニキャスト経路表を有する。
【００１０】
明示的マルチキャスト方式に対応したルータは、パケットが到着すると、パケットのオプションヘッダまたはペイロードに格納された全ての宛先アドレスを、ユニキャスト経路表で検索し、対応する送出インタフェースを調べる。
【００１１】
明示的マルチキャスト方式に対応したルータは、パケットが送出される送出インタフェースに含まれる受信者の宛先アドレス以外の宛先アドレスをパケットから削除するか、パケットに格納されたビット列を走査し、該当する宛先アドレスに、配送済みのマークを付加する。また、明示的マルチキャスト方式に対応したルータは、ＩＰヘッダに記述された宛先アドレスを、未配送の受信者の宛先アドレスに書き換える。複数の送出インタフェースに対してパケットを送出する場合には、明示的マルチキャスト方式に対応したルータは、パケットを送出インタフェースの数だけ複製し、複製したパケットのそれぞれに対して宛先アドレスの書き換えを行う。
【００１２】
また、明示的マルチキャスト方式に対応したデータ受信装置は、受信したパケットに未配送の宛先アドレスがあった場合、そのパケットを複製し、ＩＰヘッダの宛先アドレスを未配送の宛先アドレスに書き換えて送出する。その際、明示的マルチキャスト方式に対応したデータ受信装置は、未配送の宛先アドレスから自ノードのアドレスを削除するか、パケットヘッダに格納されたビット列を配送済みに変更する。このような、データ受信装置からルータへと受信パケットが再び送信される配送は、数珠繋ぎ配送と呼ばれる。
【００１３】
一方、非明示的マルチキャスト方式に対応していないルータは、ＩＰヘッダに記述された宛先アドレスをユニキャスト経路表で検索し、通常のユニキャスト通信と同様にパケットを送出する。また、非明示的マルチキャスト方式に対応していないデータ受信装置は、通常の受信処理のみを行う。
【００１４】
以上の仕組みから、明示的マルチキャスト方式では、経路上の全てのルータが明示的マルチキャスト方式に対応していなくても、全ての受信者に対してパケットを送信することができる。したがって、明示的マルチキャスト方式を用いれば、インターネットなどの既存のネットワークにおいてもマルチキャスト通信を行うことが可能となる。
【００１５】
次に、オーバレイマルチキャスト方式によるパケット配信について説明する。
【００１６】
オーバレイマルチキャスト方式は、データ受信装置がパケットのコピーおよび転送を行うことで、グループに属する全てのデータ受信装置にパケットを送信する通信方式である。代表的なオーバレイマルチキャスト方式としては、アプリケーションレベルマルチキャスト（application level multicast：ＡＬＭ）がある。以下、ＡＬＭを用いたパケット配信について説明する。
【００１７】
図２９は、ＡＬＭによる通信システムの構成の一例を示すシステム構成図である。
【００１８】
図２９において、通信システム１０は、データ送信装置である送信端末（２０）と、送信端末からデータの配信を受ける受信端末Ａ〜Ｅ（３０ａ〜３０ｅ）とを有する。
【００１９】
ＡＬＭでは、実ネットワーク上に、パケットの配送ルートである仮想的なツリー構造のネットワークを構築する。このような仮想的なツリー構造のネットワークは、配送木と呼ばれる。図２９において、各装置を結ぶ線は、通信システム１０の配送木の構成を示している。
【００２０】
下流側に他の受信端末３０を有する各受信端末３０がパケットをコピーおよび転送することで、全ての受信端末３０にパケットが配信される。例えば、受信端末Ｂの下流には、受信端末Ｄ、Ｅが存在する。受信端末Ｂは、受信端末Ａから転送されてきたパケットを受信すると、まず、ルーティングテーブルを調べ、下流に受信端末Ｄ、Ｅが存在することを判別する。そして、受信端末Ｂは、受信端末Ｄ、Ｅにパケットを転送するために、受信したパケットをコピーし、コピーしたパケットを受信端末Ｄ、Ｅに転送する。
【００２１】
このように、オーバレイマルチキャスト方式では、データ受信装置がルータの役割を担うことにより、配送木に基づいた配信ルートでパケットが配信される。配送木は、データ受信装置同士が情報を交換したり、データ送信装置が配送木を作成することで構築される。
【００２２】
ところで、ネットワークにおける輻輳や伝送誤りなどに起因して、パケットの廃棄や紛失（以下「パケットロス」と総称する）が発生する場合がある。ストリームデータの送信においてパケットロスが発生すると、ストリームデータに抜けが生じ、受信側で再生される映像や音楽の品質低下を招く。特に、ＭＰＥＧ（moving picture experts group）のように映像フレーム間の依存関係を利用した圧縮コーデックを用いている場合、１つのパケットロスが長時間の映像の乱れに繋がる。
【００２３】
そこで、宛先に到達しなかったパケットを再送することが、従来行われている。データ送信装置は、パケットロスの発生を検出したデータ受信装置からデータの再送の要求（以下「再送要求」という）を受信すると、これに対応して、パケットロスが発生したパケットに格納されていたデータを再送パケットにより再送する。パケットロスが発生したパケットに格納されていたデータを再送することにより、データ受信装置におけるデータの品質を向上させることができる。
【００２４】
ところが、リアルタイム通信では、送信の対象となるデータがデータ送信装置に入力されてからデータ受信装置でデータが再生されるまでの遅延時間をできるだけ短くすることが要求される。例えば、違和感無く会話が成立する遅延時間は一般的に２００〜４００ｍｓ程度と言われている。このことから、テレビ会議システムでは、データ送信装置に映像や音声が入力された時間から、データ送信装置でデータがエンコードされ、データ受信装置でデータがデコードされて、最終的に映像デバイスやスピーカから出力される時間（再生時間）までの遅延時間が重要である。
【００２５】
データ受信装置は、後続のパケットを受信してからでなければパケットロスの発生を検出できないため、下流に位置するデータ受信装置では、パケットロスを検出する時間が遅い。また、下流に位置するデータ受信装置では、データ送信装置との間の往復遅延時間（round trip time：ＲＴＴ）が長い。したがって、許容される遅延時間が短い場合、下流に位置するデータ受信装置には、データの再生時間に間に合わせて再送パケットを到着させることができず、再送を行ったにもかかわらずデータの品質を改善できないといった事態が発生する。
【００２６】
そこで、リアルタイム性を保持した再送制御をマルチキャスト通信において実施する技術が、例えば特許文献１および２に記載されている。
【００２７】
特許文献１記載の技術では、パケットロスを検出したデータ受信装置は、パケットの送信元であるデータ送信装置ではなく、パケットを転送した中間ノードに対して再送要求を行う。そして、中間ノードで該当するパケットを取得している場合には、パケットの送信元であるデータ送信装置ではなく、中間ノードがパケットの再送を行う。これにより、中間ノードとデータ送信装置の間で発生する遅延時間を取り除くことができ、リアルタイム性の確保が容易となる。
【００２８】
特許文献２記載の技術では、パケットロスを検出したデータ受信装置は、周辺装置に対して再送要求をマルチキャストで送信する。再送要求を受信したデータ受信装置のうち、要求されたデータパケットを受信しているデータ受信装置は、再送パケットをマルチキャストで送信する。これにより、データ送信装置から再送パケットを送信する場合よりも早く再送パケットを到着させることが可能となり、リアルタイム性の確保が容易となる。
【特許文献１】特開２００２−８４２３９号公報
【特許文献２】特開２００３−２０９５７６号公報
【非特許文献１】Y. Imai, M. Shin and Y. Kim, “XCAST6 : eXplictMulticast on IPv6”, IEEE / IPSJ SAINT2003 Workshop 4, IPv6 and Applications, Orland, Jan. 2003.
【発明の開示】
【発明が解決しようとする課題】
【００２９】
しかしながら、特許文献１記載の技術は、どの中間ノードに対して再送要求を行うべきかを各データ受信装置で判断しなければならないため、各データ受信装置で配送木に関する情報を予め記憶しておく必要がある。したがって、特許文献１記載の技術は、既存のネットワークへの適用が難しいだけでなく、配送木の構造が不明な場合には適用が難しい。また、配送木の上流側でパケットロスが発生した場合、下流のデータ受信装置の再送要求を中間ノードがバッファリングしながら上流側に送信するため、かえってリアルタイム性が損なわれるという問題がある。
【００３０】
また、特許文献２記載の技術は、各データ受信装置に、他のデータ受信装置からの再送要求に応じてマルチキャストで再送パケットを送信する機能を持たせなくてはならないため、やはり既存のネットワークへの適用は難しい。また、特許文献２記載の技術は、一般のＩＰマルチキャスト方式を対象としているため、ルータやデータ受信装置がパケットのコピーおよび転送を行うＸＣＡＳＴやＡＬＭのようなスモールグループを対象としたマルチキャスト方式には適さないという問題がある。１０箇所程度のデータ送信先で構成されるスモールグループ向けのマルチキャスト方式では、データ受信装置の間の関連性が高く、パケットロスを検出したデータ受信装置の周辺のデータ受信装置でも同様に該当パケットを受信できていない可能性が高いためである。
【００３１】
以上のことから、配送木の構造が不明な場合でも、データ受信装置に至る経路上の装置の機能や装置間の関連性に依存することなく、データ送信装置単体で再送パケットを早いタイミングで送出できることが望ましい。
【００３２】
本発明は、かかる点に鑑みてなされたものであり、配送木の構造が不明な場合でも再送パケットを早いタイミングで送出することができるデータ送信装置およびデータ再送方法を提供することを目的とする。
【課題を解決するための手段】
【００３３】
本発明のデータ送信装置は、データの再送要求を受信する再送要求受信部と、第１のデータ受信装置から送られてきた再送要求の受信数の過去の履歴と、前記第１のデータ受信装置から送られてきた再送要求と対象を同一とする他のデータ受信装置から送られてきた再送要求の受信数の過去の履歴と、を蓄積する関連性更新部と、前記第１のデータ受信装置から再送要求を受信したとき、前記関連性更新部により蓄積された履歴から配送木を推定し、前記第１のデータ受信装置に加えて、前記推定された配送木において前記第１のデータ受信装置の下流に位置する他のデータ受信装置を、前記データの再送先として選択する再送先選択部とを具備する構成を採る。
【００３４】
本発明のデータ再送方法は、第１のデータ受信装置からデータの再送要求を受信する再送要求受信ステップと、第１のデータ受信装置から送られてきた再送要求の受信数の過去の履歴と、前記第１のデータ受信装置から送られてきた再送要求と対象を同一とする他のデータ受信装置から送られてきた再送要求の受信数の過去の履歴とから配送木を推定し、前記第１のデータ受信装置に加えて、前記推定した配送木において前記第１のデータ受信装置の下流に位置する他のデータ受信装置を、前記データの再送先として選択する再送先選択ステップと、前記再送先選択ステップで再送先として選択されたデータ受信装置に、前記データを送信する再送ステップとを有するようにした。
【発明の効果】
【００３５】
本発明によれば、配送木を推定し、推定した配送木においてデータの再送要求元の下流に位置する他のデータ受信装置を、データの再送先に加える。これにより、配送木の構造が不明な場合でも、データ受信装置に至る経路上の装置の機能や装置間の関連性に依存することなく再送パケットを早いタイミングで送出することができる。
【発明を実施するための最良の形態】
【００３６】
以下、本発明の各実施の形態について、図面を参照して詳細に説明する。
【００３７】
（実施の形態１）
図１は、本発明の実施の形態１に係るデータ送信装置としての送信端末を含む通信システムの構成を示すシステム構成図である。本実施の形態は、映像および音声を多地点にリアルタイムで配信するテレビ会議システムに本発明を適用した例である。
【００３８】
図１において、通信システム１００は、明示的マルチキャスト方式によるパケット配信を行う送信端末２００と、送信端末２００からパケットの配信を受ける受信端末３００ａ〜３００ｅとを有する。送信端末２００および受信端末３００ａ〜３００ｅは、同一のスモールグループに参加している。以下、記述の簡素化のため、受信端末３００ａ〜３００ｅを個別に記述する場合には、それぞれ受信端末Ａ〜Ｅと記述する。
【００３９】
送信端末２００は、配信の対象となる映像および音声のストリームデータを、通し番号であるシーケンス番号が付されたデータパケットに格納して、受信端末Ａ〜Ｅに配信する。また、送信端末２００は、受信端末Ａ〜Ｅからの要求に応じて、配信したデータの再送を行う。
【００４０】
受信端末Ａ〜Ｅは、自己を宛先とするデータパケットをそれぞれ受信し、元のストリームデータを再生する。また、受信端末Ａ〜Ｅは、受信パケットのシーケンス番号の抜けからパケットロスの発生を検出し、送信端末２００に対してデータの再送要求を行う。具体的には、受信端末Ａ〜Ｅは、受信されなかったデータパケットのシーケンス番号と、ＩＰアドレスやポート番号などの自端末を特定するための識別情報とを記述した再送要求パケットを生成し、送信端末２００に送信する。
【００４１】
受信端末Ａ、Ｂは、明示的マルチキャスト方式に対応しており、受信パケットに未送信の宛先が指定されているとき、受信パケットを複製し、未送信の宛先にパケットを転送する。一方、受信端末Ｃ〜Ｅは、明示的マルチキャスト方式に対応しておらず、パケットの転送は行わない。
【００４２】
図１において、各端末を結ぶ線は、通信システム１００で構築されている配送木の構成を示している。
【００４３】
通信システム１００では、送信端末２００のパケットの転送先は受信端末Ａであり、受信端末Ａのパケットの転送先は受信端末Ｂ、Ｃであり、受信端末Ｂのパケットの転送先は受信端末Ｄ、Ｅとなっている。受信端末Ｄ、Ｅは、受信端末Ｂの下流に位置し、受信端末Ｂ、Ｃは、受信端末Ａの下流に位置している。
【００４４】
ここで、送信端末２００の構成および動作の説明に先立ち、本実施の形態における再送パケットを早いタイミングで送出する方法の概要について説明する。
【００４５】
図１から明らかなように、受信端末Ｂに到達していないパケットは、受信端末Ｄ、Ｅにも到達しない。したがって、受信端末Ｂによって再送を要求されたデータは、受信端末Ｄ、Ｅからも再送を要求される。また、受信端末Ａに到達していないパケットは、受信端末Ｂ〜Ｅにも到達しない。したがって、受信端末Ａによって再送を要求されたデータは、受信端末Ｂ〜Ｅからも再送を要求される。
【００４６】
通常、パケットロスが発生したとき、下流に位置する受信端末３００の再送要求よりも、その受信端末３００の上流に位置する受信端末３００の再送要求の方が、送信端末２００に早く到達する。したがって、送信端末２００が再送要求パケットの送信元の受信端末３００（以下適宜「再送要求元」という）の下流に位置する他の受信端末３００にも再送パケットを送信することにより、実際の再送要求パケットの受信に先行して下流の受信端末３００に再送パケットを送出することができる。また、受信端末３００と送信端末２００のネットワーク上の距離が、上流に位置する受信端末３００よりも、下流に位置する受信端末３００の方が短い場合、下流の受信端末３００からの再送要求の方が上流の受信端末３００よりも早く送信端末２００に届く場合がある。その場合でも、上流の受信端末３００からの再送要求を送信端末２００は受信できるため、最初に下流の受信端末からの再送要求を受信した時点で、上流の受信端末に対しても再送パケットを送信することができる。これは、実際の配送木と推定した配送木が同一でなくても、早いタイミングで再送が可能なことを示す。
【００４７】
上記した先行的な再送パケット送出を実現するには、送信端末２００で、どの受信端末３００の下流にどの受信端末が位置するか、つまり、通信システム１００で構築されている配送木を推定する必要がある。
【００４８】
まず、各受信端末３００の再送要求の実施の回数（以下「再送要求回数」という）に着目する。
【００４９】
下流に位置する受信端末の再送要求回数は、自端末の上流に位置する受信端末３００の再送要求回数以上の値となる。図１に示す通信システム１００では、受信端末Ｄ、Ｅの再送要求回数は、受信端末Ｂの再送要求回数以上となり、受信端末Ｂ〜Ｅの再送要求回数は、受信端末Ａの再送要求回数以上となる。任意の時点の受信端末Ａ〜Ｅの再送要求回数を順にＮＡ〜ＮＥと置くと、以上の各受信端末３００の再送要求回数の大小関係は、以下の式（１）で表すことができる。
ＮＡ ≧ ＮＢ ≧ ＮＤ
ＮＡ ≧ ＮＢ ≧ ＮＥ
ＮＡ ≧ ＮＣ              ・・・・・・（１）
【００５０】
任意の２つの受信端末３００を第１および第２の受信端末と置くと、これら２つの受信端末の相対的な配置パターンとして、「第１の受信端末が第２の受信端末の上流にある配置」、「第２の受信端末が第１の受信端末の上流にある配置」、および「第１の受信端末と第２の受信端末が別のルート上に存在する配置」、の３つが考えられる。
【００５１】
第１の受信端末の再送要求回数が第２の受信端末の再送要求回数以上の値である場合、「第１の受信端末が第２の受信端末の上流にある配置」の可能性を排除することができる。また、第２の受信端末の再送要求回数が第１の受信端末の再送要求回数以上の値である場合、「第２の受信端末が第１の受信端末の上流にある配置」の可能性を排除することができる。
【００５２】
ところが、例えば受信端末Ｂと受信端末Ｃのようにルートの異なる受信端末３００の間では、再送要求回数の大小関係は不定である。したがって、各受信端末３００の再送要求回数のみから、残りの２つの配置パターンのいずれに該当するかを特定することは難しい。
【００５３】
次に、各受信端末３００の再送要求の対象に着目する。
【００５４】
上記した第１および第２の受信端末において、同一のパケットについて再送要求を行う割合が高ければ高いほど、「第１の受信端末と第２の受信端末が別のルート上に存在する配置」である可能性は低くなる。すなわち、第１の受信端末と第２の受信端末が同一ルート上に存在する可能性が高くなる。
【００５５】
更に、例えば、第１の受信端末から再送要求されるパケットが、第２の受信端末からも再送要求される割合が高ければ高いほど、第１の受信端末が第２の受信端末の上流に位置する可能性が高くなる。すなわち、第１の受信端末から再送要求されるパケットが第２の受信端末から再送要求される割合に基づいて、配送木における第１の受信端末と第２の受信端末と相対的な配置パターンを推定することができる。
【００５６】
そこで、本実施の形態の送信端末２００は、個々の受信端末３００から再送要求されたパケットが、他の受信端末３００からも再送要求されたか否かを判断し、判断結果を記録しておくことにより、各受信端末３００の再送要求の配送木の推定を可能にする。そして、送信端末２００は、再送要求を受信するごとに、推定される配送木で下流に位置する他の受信端末３００が存在するか否かを判断し、該当する受信端末３００が存在する場合には、実際の再送要求の受信に先行して、その下流に位置する他の受信端末３００にパケットを再送する。これにより、下流に位置する受信端末３００に対する再送パケットの送出の迅速化を図る
【００５７】
以下、送信端末２００の構成および動作について説明する。まず、送信端末２００の構成について説明する。
【００５８】
図２は、実施の形態１に係る送信端末２００の構成を示すブロック図である。
【００５９】
図２において、送信端末２００は、データパケット生成部２１０、データパケット送信部２２０、データ蓄積部２３０、再送要求受信部２４０、受信端末関連性更新部２５０、再送先選択部２６０、および再送部２７０を有する。
【００６０】
データパケット生成部２１０は、外部のエンコーダなどの装置（図示せず）から、映像および音声のストリームデータを入力する。これらの映像および音声は、テレビ会議において、ディジタルカメラやマイクロフォン（いずれも図示せず）で、入力されたものである。データパケット生成部２１０は、入力された映像および音声のストリームデータを分割し、分割したデータを格納したデータパケットを構築する。このデータパケットは、宛先として受信端末Ａ〜Ｅを明示的に指定する明示的マルチキャストパケットであり、また、分割の順序に従ってシーケンス番号を昇順に付されている。データパケット生成部２１０は、構築したデータパケットを、再送用にデータ蓄積部２３０に保存するとともに、データパケット送信部２２０に出力する。
【００６１】
データパケット送信部２２０は、データパケット生成部２１０から入力されたデータパケットを、受信端末Ａ〜Ｅを配置したネットワーク４００に送出する。ここでは、図１に示したように、送信端末２００のデータパケット転送先は、受信端末Ａである。
【００６２】
データ蓄積部２３０は、データパケット生成部２１０から入力された再送用のデータパケットを保存するとともに、受信端末Ａ〜Ｅの再送要求における関連性を保存するためのテーブル（以下「関連性保存テーブル」という）を格納する。
【００６３】
図３は、関連性保存テーブルの構成を示す図である。関連性保存テーブル８１０は、受信端末８１１、再送済シーケンス番号８１２、再送要求シーケンス番号８１３、総再送要求受信数８１４、および再送要求受信数８１５の欄を有する。
【００６４】
受信端末８１１には、受信端末Ａ〜Ｅを識別する情報が記述される。他の各欄８１２〜８１５は、受信端末Ａ〜Ｅごとに対応付けられている。以下、説明の簡便化のため、関連性保存テーブル８１０に記述された受信端末３００ごとの情報の一まとまりを「レコード」という。
【００６５】
再送済シーケンス番号８１２には、受信端末３００に対して再送したデータパケットのシーケンス番号が記述される。再送要求シーケンス番号８１３には、受信端末３００から再送要求されたデータパケットのシーケンス番号が記述される。総再送要求受信数８１４には、受信端末３００から送られてきた再送要求の受信数の総数（以下総再送要求受信数という）が記述される。再送要求受信数８１５には、関連する他の受信端末３００から同一のシーケンス番号の再送要求を受信した数が、受信端末３００ごとに記述される。総再送要求受信数８１４および再送要求受信数８１５には、初期値としてそれぞれ０が記述される。
【００６６】
関連性保存テーブル８１０の記述内容は、受信される再送要求パケットに基づいて、図２に示す受信端末関連性更新部２５０により更新される。
【００６７】
図２に示す再送要求受信部２４０は、受信端末Ａ〜Ｅから再送要求パケットを受信する。
【００６８】
図４は、再送要求パケットの構成の一例を示す図である。
【００６９】
図４に示すように、再送要求パケット８２０は、ヘッダ部８２１とペイロード部８２２とから構成される。ヘッダ部８２１には、再送要求元のＩＰアドレスである送信元ＩＰアドレス８２３と、再送要求の送信先（ここでは送信端末２００）のＩＰアドレスである宛先ＩＰアドレス８２４とが記述されている。送信元ＩＰアドレス８２３からは、再送要求元を特定することが可能である。ペイロード部８２２には、再送要求の対象であるデータパケットのシーケンス番号（以下「再送要求シーケンス番号」という）８２５が記述されている。
【００７０】
なお、再送要求元のＩＰアドレスはペイロード部８２２に記述されても良い。また、受信端末３００ごとに予め一意のＩＤ番号を付与し、そのＩＤがペイロード部８２２に記述されても良い。また、再送要求シーケンス番号も、ＲＴＰ（real-time transport protocol）ヘッダのように、ヘッダ部８２１内に記述されても良い。
【００７１】
図２に示す再送要求受信部２４０は、受信した再送要求パケット８２０から、再送要求シーケンス番号８２５と送信元ＩＰアドレス８２３とを取得し、再送要求元を解析する。そして、再送要求受信部２４０は、取得した再送要求シーケンス番号と、再送要求元を一意に示す情報（以下適宜「再送要求元情報」という）とを、データ蓄積部２３０を介して受信端末関連性更新部２５０に出力する。
【００７２】
なお、再送要求受信部２４０は、データパケットに記述されたポート番号など、送信元ＩＰアドレス８２３以外の情報から、再送要求元情報を取得しても良い。また、送信元ＩＰアドレス８２３を、そのまま再送要求元情報として取り扱っても良い。また、送信元ＩＰアドレス８２３とポート番号などの情報を複数組み合わせて、再送要求元情報として取り扱っても良い。
【００７３】
受信端末関連性更新部２５０は、再送要求受信部２４０から入力された再送要求シーケンス番号および再送要求元情報に基づいて、図３に示す関連性保存テーブル８１０を更新する。具体的には、受信端末関連性更新部２５０は、関連性保存テーブル８１０に、各受
信端末３００から過去に再送要求されたパケットが、他の受信端末３００からも再送要求された割合を、他の受信端末３００ごとに記録する。
【００７４】
再送先選択部２６０は、受信端末関連性更新部２５０により再送要求シーケンス番号と再送要求元情報とを入力されるごとに更新した関連性保存テーブル８１０に基づいて、配送木を推定し、先行的に再送パケットを送信すべき受信端末３００を選択する。具体的には、再送先選択部２６０は、再送要求元から過去に再送要求されたパケットが他の受信端末３００からも再送要求される割合が所定の閾値よりも高いとき、該当する他の受信端末３００を配送木において再送要求元の下流に位置する受信端末であると推定し、再送要求元と併せて再送パケットの送信先に選択する。そして、再送先選択部２６０は、構築したすべての再送パケットを、再送部２７０に出力する。
【００７５】
再送部２７０は、再送先選択部２６０から入力された再送パケットを、ネットワーク４００に対して送信する。ネットワーク４００に送信された再送パケットは、図示しないルータや受信端末Ａ、Ｂによって、指定された送信先へと転送される。
【００７６】
送信端末２００は、図示しないが、ＣＰＵ（central processing unit）、制御プログラムを格納したＲＯＭ（read only memory）などの記憶媒体、ＲＡＭ（random access memory）などの作業用メモリ、および通信回路を有する。ＣＰＵが制御プログラムを実行することで、図２に示す各部の機能は実現される。
【００７７】
次いで、上記構成を有する送信端末２００の動作について説明する。ここでは、図５〜図１１を用いて、再送要求パケットを受信したときの送信端末２００の動作について説明する。
【００７８】
図５は、再送要求パケットを受信したときの送信端末２００の全体動作の流れを示すフローチャートである。
【００７９】
まず、ステップＳ１０００で、再送要求受信部２４０は、再送要求パケットを受信し、再送要求パケットから再送要求シーケンス番号を取得し、送信元ＩＰアドレスやポート番号など再送要求元の受信端末を特定する再送要求元情報を取得する。
【００８０】
そして、ステップＳ２０００で、再送要求受信部２４０は、再送要求シーケンス番号と再送要求元情報とを、受信端末関連性更新部２５０に出力する。受信端末関連性更新部２５０は、再送要求受信部２４０から入力された再送要求シーケンス番号および再送要求元情報に基づいて、関連性保存テーブル８１０（図３参照）を更新する関連性更新処理を実行する。そして、受信端末関連性更新部２５０は、関連性保存テーブル８１０を更新した後、再送要求シーケンス番号と再送要求元情報とを、データ蓄積部２３０を介して再送先選択部２６０に出力する。関連性更新処理の詳細については後述する。
【００８１】
そして、ステップＳ３０００で、再送先選択部２６０は、再送要求シーケンス番号、再送要求元情報、および関連性保存テーブル８１０に基づいて、再送先チェック処理を実行する。再送先チェック処理は、再送要求元で損失したデータと同一のデータを損失していると判断できる受信端末３００を調べ、該当する受信端末３００を宛先とした再送パケット（図４に示す）を構築して再送部２７０に出力する処理である。再送先チェック処理の詳細については後述する。
【００８２】
そして、ステップＳ４０００で、再送部２７０は、再送先選択部２６０から入力された全ての再送パケットを、ネットワーク４００に送信する。そして、一連の処理を終了する。
【００８３】
次いで、関連性保存テーブル８１０を更新する関連性更新処理の詳細について説明する。
【００８４】
図６は、関連性更新処理（図５のステップＳ２０００）の流れを示すフローチャートである。また、図７〜図９は、図３に示す関連性保存テーブル８１０に対して関連性更新処理が行われた場合の関連性保存テーブル８１０の記述内容の変化の様子を示す図である。
【００８５】
ここでは、関連性保存テーブル８１０が図３の状態のときに、受信端末Ｄから再送要求シーケンス番号として「１０」を受信した場合を例にとって説明する。図３に示すように、受信端末Ｂおよび受信端末Ｅからは、既に再送要求シーケンス番号として「１０」を受信している。
【００８６】
まず、ステップＳ２１００で、受信端末関連性更新部２５０は、再送要求受信部２４０から入力された再送要求シーケンス番号と再送要求元情報とを関連付けて、データ蓄積部２３０に保存する。具体的には、受信端末関連性更新部２５０は、関連性保存テーブル８１０のうち、再送要求元のレコードの再送要求シーケンス番号８１３に、入力された再送要求シーケンス番号を記述する。
【００８７】
上記処理後の関連性保存テーブル８１０は、図７に示すように、受信端末Ｄの再送要求シーケンス番号８１３に「１０」が追加された状態となる。
【００８８】
そして、図６のステップＳ２２００で、受信端末関連性更新部２５０は、関連性保存テーブル８１０のうち再送要求元の総再送要求受信数８１４の値に１を加算する。
【００８９】
上記処理後の関連性保存テーブル８１０は、図８に示すように、受信端末Ｄの総再送要求受信数８１４の値が「２９」から「３０」に更新される。
【００９０】
そして、図６のステップＳ２３００で、受信端末関連性更新部２５０は、再送要求元以外の受信端末３００を１つ選択する。
【００９１】
そして、ステップＳ２４００で、受信端末関連性更新部２５０は、再送要求元以外の受信端末３００であって現在選択されている受信端末（以下単に「選択されている受信端末」という）３００からの過去の再送要求シーケンス番号に、今回の再送要求シーケンス番号と同一のシーケンス番号が含まれているか否かを調べる。具体的には、受信端末関連性更新部２５０は、関連性保存テーブル８１０のうち、選択されている受信端末３００のレコードの再送要求シーケンス番号８１３に、今回の再送要求シーケンス番号と同一のシーケンス番号が記述されているか否かを判断する。受信端末関連性更新部２５０は、同一のシーケンス番号が記述されている場合には（Ｓ２４００：ＹＥＳ）、ステップＳ２５００に進み、同一のシーケンス番号が記述されていない場合には（Ｓ２４００：ＮＯ）、ステップＳ２７００に進む。
【００９２】
ステップＳ２５００で、受信端末関連性更新部２５０は、関連性保存テーブル８１０における再送要求元のレコードの再送要求受信数８１５のうち、選択されている受信端末３００の値に１を加算する。
【００９３】
そして、ステップＳ２６００で、受信端末関連性更新部２５０は、関連性保存テーブル８１０における選択されている受信端末３００のレコードの再送要求受信数８１５のうち、再送要求元の値に１を加算する。
【００９４】
ステップＳ２７００で、受信端末関連性更新部２５０は、再送要求元以外で未選択の受信端末３００があるか否かを判断する。受信端末関連性更新部２５０は、未選択の受信端末３００がある場合には（Ｓ２７００：ＹＥＳ）、ステップ２３００に戻り、未選択の受信端末３００を１つ選択して処理を繰り返す。また、受信端末関連性更新部２５０は、全ての受信端末３００について処理を完了した場合には（Ｓ２７００：ＮＯ）、一連の処理を終了し、図５に示す処理に戻る。
【００９５】
このように、受信端末関連性更新部２５０による関連性更新処理の結果、各受信端末３００のレコードにおける再送要求受信数８１５の値は、その受信端末３００からの再送要求とシーケンス番号を同一とする再送要求が他の受信端末３００で何回行われたかを示す値となる。
【００９６】
関連性更新処理の実行後の関連性保存テーブル８１０は、図９に示すように、受信端末Ｄのレコードの再送要求受信数８１５のうち、受信端末Ｂの値と受信端末Ｅの値とが、「２９」から「３０」にそれぞれ更新される。これは、今回の再送要求シーケンス番号「１０」と同一のシーケンス番号のパケットが、既に受信端末Ｂ、Ｅからも再送要求されているためである。また、受信端末Ｂ、Ｅのレコードの再送要求受信数８１５のうち受信端末Ｄの値が、「２９」から「３０」にそれぞれ更新される。これは、既に受信端末Ｂ、Ｅから受信した再送要求シーケンス番号「１０」と同一のシーケンス番号のパケットが、今回、受信端末Ｄから再送要求されたためである。
【００９７】
次いで、再送先選択部２６０による再送先チェック処理の詳細について説明する。
【００９８】
図１０は、再送先チェック処理（図５のステップＳ３０００）の流れを示すフローチャートである。
【００９９】
まず、ステップＳ３１００で、再送先選択部２６０は、今回再送を要求されたデータを、再送要求元に既に再送したか否かを調べる。具体的には、再送先選択部２６０は、今回入力された再送要求シーケンス番号が、関連性保存テーブル８１０の再送要求元のレコードの再送済シーケンス番号８１２に記述されているか否かを調べる。これは、他の受信端末３００からの再送要求に基づいて、今回の再送要求元に既に再送パケットを送信している場合があるためである。
【０１００】
再送先選択部２６０は、再送要求元の受信端末３００にまだ再送パケットを送信していない場合には（Ｓ３１００：ＮＯ）、ステップＳ３２００に進み、既に再送パケットを送信している場合には（Ｓ３１００：ＹＥＳ）、再送パケットを生成することなく、図５に示す処理に戻る。これにより、今回の再送要求元に既に要求されたデータの再送パケットを送信している場合に、再送パケットの送信の重複を避けることができる。
【０１０１】
ステップＳ３２００で、再送先選択部２６０は、再送要求シーケンス番号に該当するデータパケットがデータ蓄積部２３０に保存されているか否かをチェックする。再送先選択部２６０は、このチェックの結果、該当するデータパケットが保存されている場合には（Ｓ３２００：ＹＥＳ）、ステップＳ３３００に進み、保存されていない場合には（Ｓ３２００：ＮＯ）、要求されたデータが存在しないため、再送パケットを生成することなく、図５に示す処理に戻る。
【０１０２】
ステップ３３００で、再送先選択部２６０は、データ蓄積部２３０に保存され、再送要求シーケンス番号に該当する再送用のデータパケットから、再送パケットを構築する。
【０１０３】
そして、ステップＳ３４００で、再送先選択部２６０は、データ蓄積部２３０に蓄積されている関連性保存テーブル８１０を参照して、再送要求元の受信端末３００以外の関連する受信端末３００を１つ選択する。
【０１０４】
そして、ステップＳ３５００で、再送先選択部２６０は、関連性保存テーブル８１０に保持された同一のシーケンス番号についての再送要求パケットを送信した再送要求受信数８１５のうち、今回受信した再送要求パケットの送信元の受信端末３００の値の履歴に基づいて、他の受信端末３００が再送要求元の下流にいるかどうかを調べ、配送木を推定する。推定した配送木に基づいて、再送要求元の下流に位置する受信端末３００を再送パケットの送信先として選択する。
【０１０５】
その際、配送木を推定するための基準の一例として、再送要求元のレコードの再送要求受信数８１５のうち選択されている受信端末３００の値を、再送要求元のレコードの総再送要求受信数８１４の値で割った値である「関連度」を算出する。関連度が高い受信端末３００は、配送木において再送要求元の下流に位置すると判定し、配送木を推定する。
【０１０６】
なお、配送木を推定する基準の値として、単純に再送要求受信数８１５が近い端末を選択してもよいし、配送木の下流の受信端末３００からの再送要求は短い時間以内に受信する可能性が高いため、同一のシーケンス番号に対する再送要求数が近く、かつそれらの再送要求が短い時間の中で受信できたかどうかで再送要求元の下流に位置する受信端末３００であるか否かを判定しそれらの端末を再送要求先として選択してもよい。以下、関連度を用いた場合の配送木の推定と再送先受信端末の選択について述べる。
【０１０７】
推定した配送木に基づいて、再送要求元の下流に位置する受信端末３００においても、再送要求元から再送を要求されているデータパケットと同一のデータパケットにパケットロスが発生している可能性が高い。したがって、上記した所定の閾値は、選択されている受信端末３００ではパケットロスは発生していないと判断すべき関連度の最大値であり、実験や経験から求めることができる。
【０１０８】
そして、ステップＳ３６００で、再送先選択部２６０は、ステップＳ３５００で推定した配送木から、選択されている受信端末３００が再送要求元の下流に位置するか否かを判断する。具体的には、上記した関連度が所定の閾値よりも高いか否かを判断する。再送先選択部２６０は、選択されている受信端末３００が再送要求元の下流に位置する場合、つまり、関連度が所定の閾値よりも高い場合には（Ｓ３６００：ＹＥＳ）、ステップＳ３７００に進む。一方、選択されている受信端末３００が再送要求元の下流に位置しない場合、つまり、関連度が所定の閾値以下の場合には（Ｓ３６００：ＮＯ）、再送先選択部２６０は、ステップＳ３７００を経ずにその次のステップＳ３８００に進む。
【０１０９】
ステップＳ３７００で、再送先選択部２６０は、選択されている受信端末３００に対する再送パケットを構築する。この再送パケットの構築は、選択されている受信端末３００から再送要求を受信していない段階で行われることになる。
【０１１０】
そして、ステップＳ３８００で、再送先選択部２６０は、未選択の関連する受信端末３００があるか否かを判断する。この判断の結果、再送先選択部２６０は、未選択の関連する受信端末３００がある場合には（Ｓ３８００：ＹＥＳ）、ステップ３４００に戻り、未選択の関連する受信端末３００を１つ選択して処理を繰り返し、全ての関連する受信端末３００について処理を完了した場合には（Ｓ３８００：ＮＯ）、ステップＳ３９００に進む。
【０１１１】
ステップＳ３９００で、再送先選択部２６０は、データの再送を行う受信端末３００ごとに、今回再送の対象とするデータパケットのシーケンス番号を保存する。具体的には、再送先選択部２６０は、関連性保存テーブル８１０のうち、再送パケットを送信する各受信端末３００のレコードの再送済シーケンス番号８１２に、再送の対象とするデータパケットのシーケンス番号を追加する。そして、一連の処理を終了し、図５に示す処理に戻る。ステップＳ３７００で構築された全ての再送パケットは、再送部２７０に入力され、図５のＳ４０００で、再送部２７０によりネットワーク４００に送信される。
【０１１２】
このように、再送先選択部２６０による再送先チェック処理の結果、パケットロスしている確率の高い下流の受信端末３００に対して、その受信端末３００からの実際の再送要求に先立って再送パケットを構築し、送出することができる。
【０１１３】
所定の閾値を高くすればするほど、先行的な再送パケット送出が実行されにくくなり、この結果、不要な再送パケット送出を低減し、ネットワーク負荷を軽減することができる。また、所定の閾値を低くすればするほど、先行的な再送パケット送出が実行され易くなり、この結果、再送パケット送出の迅速化を積極的に実現することができる。
【０１１４】
なお、所定の閾値は、通信開始時に決定した一定値にしても良いし、再送要求受信数の数に応じて変化させても良い。通常、再送要求受信数が少ない場合、算出される関連度の信頼性は低い。したがって、例えば、初期状態では所定の閾値を高く設定し、再送要求受信数の増加に従って所定の閾値を低下させていくことにより、ネットワーク負荷の軽減と再送パケット送出の迅速化とをバランス良く実現することができる。
【０１１５】
図１１は、図９に示す関連性保存テーブル８１０に対して再送先チェック処理および再送処理が行われた場合の、関連性保存テーブル８１０の記述内容の変化の様子を示す図である。
【０１１６】
ここでは、関連性保存テーブル８１０が図９の状態のときに、再送先選択部２６０に、再送要求シーケンス番号として「１０」が入力され、再送要求元情報として受信端末Ｄを示す情報が入力された場合の、関連性保存テーブル８１０の記述内容の変化を例にとって示している。
【０１１７】
図１１に示すように、再送先チェック処理が実行された後の関連性保存テーブル８１０は、受信端末Ｄのレコードの再送済シーケンス番号８１２にシーケンス番号「１０」が追加された状態となる。
【０１１８】
ここで、関連性保存テーブル８１０が図１１に示す状態のときに、再送先選択部２６０に、再送要求シーケンス番号および再送要求元情報として、「１５」と受信端末Ｂを示す情報とが入力された場合を例にとり、再送先チェック処理および処理の結果について説明する。
【０１１９】
受信端末Ｂのレコードにおいて、総再送要求受信数８１４は「３０」であり、再送要求受信数８１５の受信端末Ａ、Ｃ〜Ｅの値は、「５」、「５」、「３０」、「３０」である。再送要求受信数８１５の受信端末Ａ、Ｃ〜Ｅの値を総再送要求受信数８１４の値で割った関連度は、「０.１７」、「０.１７」、「１.０」、「１.０」となる。例えば、所定の閾値が「０.５」に設定されている場合、所定の閾値よりも高い値となるのは、受信端末Ｄ、Ｅの関連度である。したがって、再送要求元である受信端末Ｂに加えて、受信端末Ｄ、Ｅも、再送パケットの送信先として選択される。
【０１２０】
受信端末Ｄ、Ｅは、受信端末Ｂの下流に位置する。したがって、通常、受信端末Ｄ、Ｅにおけるパケットロスの検出は、受信端末Ｂにおけるパケットロスの検出よりも遅く、受信端末Ｄ、Ｅからの再送要求の送信端末２００へ到達は、受信端末Ｂからの再送要求の送信端末２００へ到達よりも遅い。受信端末Ｂからの再送要求に基づいて受信端末Ｄ、Ｅにも再送パケットを送出することにより、受信端末Ｄ、Ｅからの再送要求に基づいて再送パケットを送出する場合よりも、受信端末Ｄ、Ｅに対する再送パケットの送出タイミングを早めることができる。
【０１２１】
なお、再送パケットの構築および送信は、送信先ごとに再送パケットを構築し、ユニキャスト通信によってそれぞれの受信端末３００に送信しても良いし、ＸＣＡＳＴやＡＬＭを用いて１つのマルチキャストパケットを構築し、マルチキャストにより各受信端末３００に送信しても良い。また、ＸＣＡＳＴでデータパケットを再送する際に、アドレスリストに記述する宛先の順番を各受信端末３００が先頭になるように変更したＸＣＡＳＴパケットを複数構築して送信し、再送パケットが損失した場合に他の受信端末３００から転送させるようにしても良い。
【０１２２】
以上説明したように、本実施の形態によれば、送信端末２００は、通信システム１００の配送木を推定するための関連性保存テーブル８１０を作成する。そして、送信端末２００は、データの再送要求を受信したとき、関連性保存テーブル８１０に基づいて配送木を推定し、推定した配送木において再送要求元の下流に位置する他の受信端末３００を、再送パケットの送出先に加える。これにより、配送木の構造が不明な場合でも、配送木の下流に位置する受信端末３００に対する再送パケットの送出を早いタイミングで行うことが可能となる。したがって、例えば、再送パケットを再生時間までに届けることが可能となり、許容される遅延時間が短いリアルタイム通信に適した再送制御を実現することができる。また、送信先の受信端末３００に至る経路上の装置の機能や装置間の関連性に依存せずに、送信端末２００単体で再送パケットを送出するので、既存のネットワークに容易に適用することができる。
【０１２３】
（実施の形態２）
実施の形態２は、時間的に新しい再送要求の影響が強く出るように重み付けをして受信端末間の関連性を更新することにより、ネットワークの状態変化への追従性の向上を図る場合である。
【０１２４】
図１２は、本発明の実施の形態２に係るデータ送信装置としての送信端末の構成を示すブロック図であり、実施の形態１の図２に対応するものである。図２と同一部分には同一符号を付し、これについての説明を省略する。
【０１２５】
図１２において、送信端末５００は、図２の受信端末関連性更新部２５０に代えて、受信端末関連性更新部５５０を有する。
【０１２６】
受信端末関連性更新部５５０は、再送要求受信部２４０から入力された再送要求シーケンス番号および再送要求元情報に基づいて、図３に示す関連性保存テーブル８１０を更新する。
【０１２７】
また、受信端末関連性更新部５５０は、関連性保存テーブル８１０の更新の際、更新前後の差分のうち、時間的により新しい更新の差分に対して、より強い重み付けを行う。受信端末関連性更新部５５０は、この重み付けのために、関連性保存テーブル８１０の各レコードの最後の更新時刻を記録するためのレコード更新時刻テーブルを作成し、データ蓄積部２３０に保存する。
【０１２８】
図１３は、データ蓄積部２３０に格納されるレコード更新時刻テーブルの内容の一例を示す図である。
【０１２９】
レコード更新時刻テーブル８３０は、受信端末８３１および前回更新時刻［ｓｅｃ］８３２の２つの欄から構成される。受信端末８３１には、受信端末Ａ〜Ｅを示す情報が記述される。前回更新時刻８３２には、受信端末３００ごとに、関連性保存テーブル８１０の対応するレコードが更新された時刻のうち最も新しい時刻が記述される。図１３には、秒（sec）で時刻を保存した場合を例示しているが、前回の再送要求からの経過時間を特定可能であれば、どのような単位および形式で保存しても良い。
【０１３０】
以下、受信端末関連性更新部５５０による関連性更新処理の詳細について説明する。ここでは、図１４〜図１８を用いて、再送要求パケットを受信したときの送信端末５００の動作について説明する。
【０１３１】
図１４は、受信端末関連性更新部５５０による関連性更新処理（図５のステップＳ２０００、図６）の流れを示すフローチャートである。図６と同一部分には同一ステップ番号を付し、これについての説明を省略する。
【０１３２】
受信端末関連性更新部５５０は、ステップＳ２１００で再送要求されたデータパケットのシーケンス番号を保存した後、ステップＳ２２０１に進む。
【０１３３】
ステップＳ２２０１で、受信端末関連性更新部５５０は、関連性保存テーブル８１０の再送要求元のレコードの値を、今回受信した再送要求パケットに基づく更新内容に対してより強い重みが掛かるように更新する。そして、受信端末関連性更新部５５０は、現在時刻を取得し、レコード更新時刻テーブル８３０のうち、今回の再送要求元の前回更新時刻８３２に記述する。
【０１３４】
具体的には、受信端末関連性更新部５５０は、まず、再送要求元のレコードの更新前の値に対して掛ける重み係数を、例えば以下の式（２）を用いて算出する。
重み係数 ＝ −１ ／ ０.０５
× （ 今回の再送要求受信時刻 − 前回のレコード更新時刻 ） ＋ １
・・・・・・（２）
【０１３５】
なお、上記式（２）において、今回の再送要求受信時刻とは、今回の再送要求パケットの受信時刻であり、前回のレコード更新時刻とは、関連性保存テーブル８１０のうち今回の再送要求元のレコードが最後に更新された時刻である。前回のレコード更新時刻には、レコード更新時刻テーブル８３０のうち、今回の再送要求元の前回更新時刻８３２に記述された値を用いればよい。
【０１３６】
すなわち、受信端末関連性更新部５５０は、前回のレコード更新からの経過時間を０.０５で割った値を１から引いた値を、重み係数として算出する。重み係数の最小値は０.１とする。したがって、受信端末関連性更新部５５０は、例えば、式（２）で算出した値が０.１以下となる場合には、重み係数を０.１に決定する。式（２）の１項目の分母（ここでは０.０５）は、関連性保存テーブル８１０のネットワーク変化への追従性を決定付けるパラメータであり、再送要求受信時刻と同単位の値となる。
【０１３７】
式（２）により算出される重み係数は、再送要求元のレコードの前回の更新から時間が経過すればするほど、小さい値となる。
【０１３８】
受信端末関連性更新部５５０は、算出した重み係数を用いて、例えば以下に示す式（３）を用いて、再送要求元のレコードの総再送要求受信数８１４の値を更新する。
総再送要求受信数 ＝ 現在の総再送要求受信数 × 重み係数 ＋ １・・・・・・（３）
【０１３９】
また、受信端末関連性更新部５５０は、算出した重み係数を用いて、例えば以下に示す式（４）を用いて、再送要求元のレコードの再送要求受信数８１５の全ての値を更新する。
再送要求受信数 ＝ 再送要求受信数 × 重み      ・・・・・・（４）
【０１４０】
すなわち、受信端末関連性更新部５５０は、再送要求元のレコードに対し、現在記述されている値に重み係数を乗じた上で、今回の再送要求に対応する更新を行う。これにより、前回のレコードの更新から時間が経過すればするほど、今回の更新内容に対して相対的により強い重みが掛けられる。
【０１４１】
なお、式（２）の１項目の分母の０.０５は一例であり、本値を小さくすればより時間的に新しい再送要求パケットの影響を強くすることができ、逆に大きくすればネットワークへの追従性を下げることができる。また、最小値の０.１も一例であり、過去の履歴をどの程度加味するかにより変更可能な値である。
【０１４２】
また、受信端末関連性更新部５５０は、選択している受信端末３００のレコードの再送要求シーケンス番号８１３に、今回の再送要求シーケンス番号と同一のシーケンス番号が記述されている場合には、ステップＳ２５００の後、ステップＳ２６０１に進む。
【０１４３】
ステップＳ２６０１で、受信端末関連性更新部５５０は、選択されている受信端末３００のレコードの再送要求受信数８１５および総再送要求受信数８１４の値を、今回受信した再送要求パケットに基づく更新内容に対してより強い重みが掛かるように更新する。そして、受信端末関連性更新部５５０は、現在時刻を取得し、レコード更新時刻テーブル８３０のうち、選択されている受信端末３００の前回更新時刻８３２に記述する。
【０１４４】
具体的には、受信端末関連性更新部５５０は、まず、選択されている受信端末３００のレコードの更新前の値に対して掛ける重み係数を、例えば上記式（２）により算出する。ただし、ここでの前回のレコード更新時刻とは、関連性保存テーブル８１０のうち選択されている受信端末３００のレコードが最後に更新された時刻である。前回のレコード更新時刻には、レコード更新時刻テーブル８３０のうち、選択されている受信端末３００の前回更新時刻８３２に記述された値を用いればよい。
【０１４５】
そして、受信端末関連性更新部５５０は、例えば、算出した重み係数と上記式（４）とを用いて、選択されている受信端末３００のレコードの再送要求受信数８１５のうち、再送要求元以外の全ての受信端末３００の値を更新する。
【０１４６】
また、受信端末関連性更新部５５０は、例えば、算出した重み係数と以下に示す式（５）とを用いて、選択されている受信端末３００のレコードの再送要求受信数８１５のうち、再送要求元の値を更新する。
再送要求受信数 ＝ 現在の再送要求受信数 × 重み ＋ １      ・・・・・・（５）
【０１４７】
更に、受信端末関連性更新部５５０は、例えば、算出した重み係数と以下に示す式（６）とを用いて、選択されている受信端末３００のレコードの総再送要求受信数８１４の値を更新する。
総再送要求受信数 ＝ 現在の総再送要求受信数 × 重み      ・・・・・・（６）
【０１４８】
すなわち、受信端末関連性更新部５５０は、選択されている受信端末３００のレコードに対し、現在記述されている値に重み係数を乗じた上で、今回の再送要求に対応する更新を行う。これにより、前回のレコードの更新から時間が経過すればするほど、今回の更新内容に対して相対的により強い重みが掛けられる。
【０１４９】
上記したステップＳ２５００、Ｓ２６０１の処理は、今回再送要求されているシーケンス番号と同一のシーケンス番号について既に再送要求を送信してきている受信端末３００の全てに対して実行される。
【０１５０】
このように、受信端末関連性更新部５５０による関連性更新処理の結果、関連性保存テーブル８１０は、時間軸で重み付けをして更新される。
【０１５１】
なお、レコード更新時刻テーブル８３０の更新は、関連性更新処理の最後にまとめて行うようにしても良い。
【０１５２】
前回の更新からの経過時間が長ければ長いほど最新の更新内容の重みをより強くすることにより、配送木の変化があった場合に、関連性保存テーブル８１０の内容を、現状の配送木に合致した内容により短時間で近付けることができる。すなわち、配送木の変化に対する関連性保存テーブル８１０の内容の追従性を向上させることができる。
【０１５３】
ここで、上記処理による関連性保存テーブル８１０の記述内容の変化の様子の一例を説明する。
【０１５４】
図１５は、ある時点の関連性保存テーブル８１０の内容を示す図である。図１６および図１７は、図１５に示す関連性保存テーブル８１０に対して図１４に示す関連性更新処理が行われた場合の、関連性保存テーブル８１０の記述内容の変化の様子を示す図である。
【０１５５】
ここでは、１４３９.０３４０［ｓｅｃ］の時刻に、受信端末Ｄからシーケンス番号「１０」を指定した再送要求パケットを受信した場合の、関連性保存テーブル８１０の記述内容の変化を例にとって示している。また、上記受信時刻に、レコード更新時刻テーブル８３０は、図１３に示す状態であったとする。
【０１５６】
再送要求元である受信端末Ｄのレコードの、前回の更新時刻と今回の更新時刻との時間差は、１４３９.０３４０−１４３９.００４０＝０.０３［ｓｅｃ］である。したがって、式（２）を用いて算出される重み係数は、 −１ ／ ０.０５ × ０.０３ ＋ １ ＝ ０.４ となる。
【０１５７】
受信端末Ｄのレコードにおける総再送要求受信数８１４の更新前の値は、図１５に示すように、「２９」である。したがって、受信端末Ｄの総再送要求受信数８１４の値は、式（３）と重み係数０.４とを用いた結果、図１６に示すように、２９×０.４＋１＝１２.６に更新される。
【０１５８】
受信端末Ｄのレコードにおける再送要求受信数８１５の更新前の受信端末Ａ〜Ｃ、Ｄの値は、図１５に示すように、「５」、「２５」、「５」、「２２」である。したがって、受信端末Ｄのレコードにおける再送要求受信数８１５の受信端末Ａ〜Ｃ、Ｄの値は、式（４）と重み係数０.４とを用いた結果、図１６に示すように、「２」、「１０」、「２」、「８.８」に更新される。
【０１５９】
ここで、図１４のステップＳ２３００で、受信端末Ｅよりも先に受信端末Ｂが選択されたものとする。受信端末Ｂ、Ｅは、今回の再送要求シーケンス番号（ここではシーケンス番号「１０」）と同一のシーケンス番号の再送要求を既に行っているものとする。
【０１６０】
受信端末Ｂのレコードの、前回の更新時刻と今回の更新時刻との時間差は、１４３９.０３４０−１４３９.００７１＝０.０３７［ｓｅｃ］である。したがって、式（２）を用いて算出される重み係数は、 −１ ／ ０.０５ × ０.０３７ ＋ １ ＝ ０.２６ となる。
【０１６１】
受信端末Ｂのレコードにおける再送要求受信数８１５の更新前の受信端末Ａ、Ｃ〜Ｅの値は、図１５に示すように、「５」、「５」、「２５」、「３０」である。したがって、受信端末Ｂのレコードにおける再送要求受信数８１５の受信端末Ａ、Ｃ、Ｅ（再送要求元以外の受信端末３００）の値は、式（４）と重み係数０.２６とを用いた結果、図１６に示すように、「１.３」、「１.３」、「７.８」に更新される。そして、受信端末Ｂのレコードにおける再送要求受信数８１５の受信端末Ｄ（再送要求元）の値は、式（５）と重み係数０.２６とを用いた結果、図１６に示すように、「７.５」に更新される。
【０１６２】
また、受信端末Ｂのレコードの総再送要求受信数８１４は、図１５に示すように、「３０」である。したがって、受信端末Ｂのレコードの総再送要求受信数８１４の値は、式（６）と重み「０.２６」とを用いた結果、図１６に示すように、「７.８」に更新される。
【０１６３】
受信端末Ｅのレコードの、前回の更新時刻と今回の更新時刻との時間差は、１４３９.０３４０−１４３９.００１０＝０.０３３［ｓｅｃ］である。したがって、式（２）を用いて算出される重みは、−１／０.０５×０.０３３＋１＝０.３４となる。
【０１６４】
受信端末Ｅのレコードにおける再送要求受信数８１５の更新前の受信端末Ａ〜Ｄの値は、図１６に示すように、「５」、「３０」、「５」、「２４」である。したがって、受信端末Ｅのレコードにおける再送要求受信数８１５の受信端末Ａ〜Ｃ（再送要求元以外の受信端末３００）の値は、式（４）と重み係数０.３４とを用いた結果、図１７に示すように、「１.７」、「１０.２」、「１.７」に更新される。そして、受信端末Ｅのレコードにおける再送要求受信数８１５の受信端末Ｄ（再送要求元）の値は、式（５）と重み係数０.３４とを用いた結果、図１７に示すように、「９.１６」に更新される。
【０１６５】
また、受信端末Ｅのレコードの総再送要求受信数８１４は、図１５に示すように、「３０」である。したがって、受信端末Ｅのレコードの総再送要求受信数８１４の値は、式（６）と重み「０.３４」とを用いた結果、図１７に示すように、「１０.２」に更新される。
【０１６６】
なお、重み付けを細かく実施するために、一定時間ごとの総再送要求数および関連する受信端末３００の再送要求数の履歴を、過去複数回分保存しておき、履歴ごとに重み係数を設定するようにしても良い。
【０１６７】
この場合、受信端末関連性更新部５５０は、一定時間ごとの総再送要求数および関連する受信端末３００の再送要求数の履歴を過去複数回分保存したテーブル（以下「履歴保存テーブル」という）を作成し、この履歴保存テーブルに基づいて、関連性保存テーブル８１０の更新を行う。以下、上記履歴保存テーブルの内容および更新処理と、履歴保存テーブルに基づく関連性保存テーブル８１０の更新処理について、それぞれのテーブルの変化の様子の一例を用いて説明する。
【０１６８】
図１８は、ある時点における関連性保存テーブル８１０の内容の一例を示す図であり、図１９は、上記時点における履歴保存テーブルの内容の一例を示す図である。また、図２０、図２２は、図１９の履歴保存テーブルの記述内容の変化の様子を示す図であり、図２１、図２３は、図１８の関連性保存テーブル８１０の記述内容の変化の様子を示す図である。以下、添え字「ｉ」は再送要求に関する最も新しい履歴、添え字「ii」は次に新しい履歴、添え字「iii」は更に次に新しい履歴であることをそれぞれ示す。
【０１６９】
図１９に示す履歴保存テーブル８４０は、受信端末関連性更新部５５０によって生成され、データ蓄積部２３０に保存される。履歴保存テーブル８４０は、受信端末８４１、前回更新時刻８４２、過去の履歴８４３、再送要求受信数の履歴８４４の欄を有する。過去の履歴８４４には、過去３回分の履歴８４３ｉ〜８４３iiiが記述される。再送要求受信数の履歴８４４には、受信端末Ａ〜Ｅごとに、過去３回分の履歴が記述される。
【０１７０】
受信端末８４１には、受信端末Ａ〜Ｅを識別する情報が記述される。他の各欄は、受信端末Ａ〜Ｅごとに対応付けられている。以下、説明の簡便化のため、履歴保存テーブル８４０に記述された受信端末３００ごとの情報の一まとまりを「履歴レコード」という。
【０１７１】
また、履歴保存テーブル８４０の過去の履歴８４３と再送要求受信数の履歴８４４は、関連性保存テーブル８１０の総再送要求受信数８１４と再送要求受信数８１５にそれぞれ対応している。
【０１７２】
受信端末関連性更新部５５０は、総再送要求受信数と関連する受信端末３００の再送要求受信数とを、一定時間ごとに区切って、それぞれ履歴保存テーブル８４０の過去の履歴８４３と再送要求受信数の履歴８４４とに保存する。そして、受信端末関連性更新部５５０は、一定時間ごとに区切った履歴に新しさに応じた重み係数を掛け、その算出結果に基づいて、関連性保存テーブル８１０の総再送要求受信数８１４および再送要求受信数８１５を更新する。
【０１７３】
ここでは、上記一定時間を１０秒とし、保存する履歴は３回分とする。また、過去３回分の履歴に掛ける重み係数を、時間的に新しい方から順に、「０.６」、「０.３」、「０.１」とする。すなわち、より新しい履歴に対してより強い重み付けを行う。古い履歴をより重視したい場合には、古い履歴の重み係数を高く設定し、新しい履歴をより重視したい場合には、新しい履歴の重みを高く設定すれば良い。
【０１７４】
受信端末関連性更新部５５０は、再送要求パケットが受信されるごとに、再送要求元の前回のレコード更新時刻から１０秒が経過したか否かを判断する。そして、１０秒以内の場合には、履歴保存テーブル８４０における最新の履歴の数値書き換えを行い、１０秒を超えている場合には、最新の履歴の数値書き換えと併せて、履歴保存テーブル８４０における履歴情報のシフトを行う。
【０１７５】
ここでは、今回の再送要求パケットが、受信端末Ｄから送信されたものであり、その受信時刻が１４３９.８０５０［ｓｅｃ］であったとする。この場合、受信端末Ｄの前回のレコード更新時刻１４３９.００４０［ｓｅｃ］からの経過時間は１０秒以内である。したがって、受信端末関連性更新部５５０は、履歴保存テーブル８４０に対して、履歴情報のシフトは行わず、最新の履歴の数値書き換えのみを行う。
【０１７６】
受信端末関連性更新部５５０は、まず、履歴保存テーブル８４０のうち、再送要求元である受信端末Ｄの履歴レコードの過去の履歴８４３ｉの値に１を加える。これにより、図２０に示すように、受信端末Ｄの履歴レコードの過去の履歴８４３ｉの値は、「２０」に更新される。
【０１７７】
また、受信端末関連性更新部５５０は、今回の再送要求シーケンス番号と同一のシーケンス番号の再送要求を既に行っている受信端末３００が存在する場合には、再送要求受信数の履歴８４４のうち、関連性保存テーブル８１０で更新される値に対応する値に、１を加算する。ここで、受信端末Ｂ、Ｅは、今回の再送要求シーケンス番号と同一のシーケンス番号の再送要求を既に行っているものとする。この場合、図２０に示すように、受信端末Ｄの履歴レコードのうち、再送要求受信数の履歴８４４の、受信端末Ｂ、Ｅの履歴Ｂｉ、Ｅｉの値は、それぞれ「２０」および「２３」に更新される。また、図２０に示すように、受信端末Ｂ、Ｅの履歴レコードのうち、再送要求受信数の履歴８４４の、受信端末Ｄの履歴Ｄｉの値は、「２１」に更新される。
【０１７８】
次に、受信端末関連性更新部５５０は、関連性保存テーブル８１０のうち、履歴保存テーブル８４０で更新された履歴レコードに対応するレコードを、履歴保存テーブル８４０の更新後の値に基づいて更新する。具体的には、履歴保存テーブル８４０の過去３回分の履歴に重み係数を乗じた値の合計を算出し、算出した値を関連性保存テーブル８１０の対応部分に記述する。
【０１７９】
この結果、関連性保存テーブル８１０のうち、受信端末Ｄのレコードの総再送要求受信数８１４は、図２１に示すように、設定された重み係数と受信端末Ｄの履歴レコードの過去の履歴８４３から、 ０.６ × ２１ ＋ ０.３ × １５ ＋ ０.１ × ５ ＝ １７.６ に更新される。同様にして、受信端末Ｂ、Ｄ、Ｅのレコードの再送要求受信数８１５ｄの全ての値が更新される。
【０１８０】
そして、受信端末関連性更新部５５０は、履歴保存テーブル８４０のうち、レコードの更新の対象となった受信端末Ｂ、Ｄ、Ｅの前回更新時刻８４２に、現在時刻を記述する。ここでは、１４５０.１１２３［ｓｅｃ］が記述されるものとする。
【０１８１】
このようにして、関連性保存テーブル８１０は時間的に新しい履歴により強い重みを付けた状態で更新される。
【０１８２】
次に、既に受信端末Ｂ、Ｅから再送要求シーケンス番号として受信しているシーケンス番号を指定した再送要求を、時刻１４５０.１１２３［ｓｅｃ］に、受信端末Ｄから受信したとする。この場合、前回の更新時刻１４３９.００４０［ｓｅｃ］からの経過時間は、約１１.１秒、つまり１０秒以上である。
【０１８３】
受信端末関連性更新部５５０は、まず、時間差を１０秒で除した値を小数点以下切捨てた値を算出し、今回の再送要求に関連する受信端末の履歴レコードの内容を、算出された値の分だけ過去側にそれぞれシフトさせる。
【０１８４】
ここでは、１１.１／１０＝１.１となるので、図２２に示すように、図２０に示す履歴保存テーブル８４０のうち、今回の再送要求に関連する受信端末Ｂ、Ｄ、Ｅの最も新しい履歴（ｉ）および次に新しい履歴（ii）が、それぞれ古い側に１つずつシフトされる。シフト後の処理は、前回の更新からの経過時間が１０秒未満の場合と同様である。
【０１８５】
この結果、図２３に示すように、関連性保存テーブル８１０のうち受信端末Ｂ、Ｄ、Ｅのレコードの全てが更新される。
【０１８６】
このようにして、過去の再送要求の重み付けを細かく実施することができる。これにより、時間軸における重みの分布をより高い自由度で設定できる。また、一定時間以内の新しい履歴のみを利用して関連度を算出できるため、ネットワークの状況変化への追従性を更に向上させることができる。
【０１８７】
なお、更に細かに重み付けを行いたい場合には、履歴保存テーブル８４０に記録する過去の履歴の数をより多くすれば良い。
【０１８８】
このように、本実施の形態によれば、関連性保存テーブルの更新において、時間的により新しい再送要求に基づく更新内容に対して、より強い重みを与えることができる。これにより、追従性の良い配送木推定が可能となり、配送木が通信中に変更される環境や、配送木の下流におけるネットワークの状態変化が激しいような環境においても、再送パケットを早いタイミングで送出することができる。
【０１８９】
なお、配送木やネットワークの状態の変化の程度や速度に応じて、各履歴の重み付けを変更するようにしても良い。この場合には、配送木やネットワークの状態の変化に対する追従性と、推定の精度とを、バランス良く確保することが可能となる。
【０１９０】
（実施の形態３）
実施の形態３は、推定した配送木が実際の配送木と異なり、先行的な再送パケット送信の再送先の選択が失敗した場合にこれを検出し、失敗の結果を関連性保存テーブルに反映することにより、ネットワークの状態変化への追従性の向上を図る場合である。
【０１９１】
ある受信端末から、その受信端末への再送の対象としていないシーケンス番号であって、他の受信端末への再送の対象としているシーケンス番号を、再送要求シーケンスとして受信したとする。この場合、過去の再送処理において、再送先の選択を失敗していたことが推定できる。このような失敗は、例えば、配送木やネットワークが変化したときに生じる。そこで、本実施の形態の送信端末は、再送要求を受信するごとに、その再送要求が過去の再送先選択の失敗によるものか否かを判断し、過去の再送先選択の失敗である場合には、関連性保存テーブルに修正を加えることにより、同じ失敗の防止を図るようにしている。
【０１９２】
図２４は、実施の形態３に係るデータ送信装置としての送信端末の構成を示すブロック図であり、実施の形態１の図２に対応するものである。図２と同一部分には同一符号を付し、これについての説明を省略する。
【０１９３】
図２４において、送信端末６００は、再送先選択結果反映部６９０を更に有するとともに、図２の再送要求受信部２４０に代えて再送要求受信部６４０を有する。
【０１９４】
再送要求受信部６４０は、受信した再送要求パケットから、再送要求シーケンス番号と再送要求元情報とを取得する。そして、再送要求受信部６４０は、データ蓄積部２３０に格納された関連性保存テーブル８１０（図３参照）を調べ、取得した再送要求シーケンス番号が、再送要求元のレコードの再送済シーケンス番号８１２に記述されておらず、かつ他の受信端末３００のレコードの再送済シーケンス番号８１２には記述されているという条件を満たすか否かを判断する。
【０１９５】
再送要求受信部６４０は、上記条件を満たさない場合には、実施の形態１と同様に、受信端末関連性更新部２５０に再送要求シーケンス番号と再送要求元情報とを出力する。一方、上記条件を満たす場合には、再送要求受信部６４０は、再送先の受信端末の選択に失敗があったものとして、再送先選択結果反映部６９０に再送要求シーケンス番号と再送要求元情報とを出力する。
【０１９６】
再送先選択結果反映部６９０は、関連性保存テーブル８１０において、再送要求受信部６４０から入力された再送要求シーケンス番号と同一のシーケンス番号のデータを既に再送している他の受信端末３００のレコードに修正を加える。具体的には、再送先選択結果反映部６９０は、上記他の受信端末３００のレコードの再送要求受信数８１５のうち、再送要求元の値を増加させる。これにより、以降に上記他の受信端末３００から再送要求パケットを受信した場合に、上記再送要求元が再送先として選択され易くなるようにする。
【０１９７】
以下、上記構成を有する送信端末６００の動作について説明する。ここでは、図２５〜図２８を用いて、再送要求パケットを受信したときの送信端末６００の動作について説明する。
【０１９８】
図２５は、再送要求パケットを受信したときの送信端末６００の全体動作の流れを示すフローチャートであり、実施の形態１の図５に対応するものである。図５と同一部分には同一ステップ番号を付し、これについての説明を省略する。
【０１９９】
再送要求受信部６４０で再送要求パケットが受信されると（ステップＳ１０００）、処理はステップＳ１１００に進む。
【０２００】
ステップＳ１１００で、再送要求受信部６４０は、今回の再送要求シーケンス番号と同一のシーケンス番号に対する再送パケットを、再送要求元以外の他の受信端末３００に既に送信しているか否かを判別する。具体的には、再送要求受信部６４０は、関連性保存テーブル８１０のうち再送要求元以外の受信端末３００のレコードの再送済シーケンス番号８１２で、再送要求シーケンス番号と同一のシーケンス番号を探索する。同一のシーケンス番号に対する再送パケットを他の受信端末３００に送信していない場合には（Ｓ１１００：ＮＯ）、処理はステップＳ２０００に進む。一方、同一のシーケンス番号が存在し、同一のシーケンス番号に対する再送パケットを他の受信端末３００に既に送信している場合には（Ｓ１１００：ＹＥＳ）、処理はステップＳ１２００に進む。
【０２０１】
ステップＳ１２００で、再送要求受信部６４０は、今回の再送要求シーケンス番号と同一のシーケンス番号に対する再送パケットを、再送要求元に既に送信しているか否かを判別する。具体的には、再送要求受信部６４０は、関連性保存テーブル８１０のうち再送要求元のレコードの再送済シーケンス番号８１２に、再送要求シーケンス番号と同一のシーケンス番号が記述されているか否かを調べる。再送要求シーケンス番号と同一のシーケンス番号が記述されている場合には（Ｓ１２００：ＹＥＳ）、単に過去に送信した再送パケットにパケットロスが発生したものとして、処理はステップＳ２０００に進む。一方、再送要求シーケンス番号と同一のシーケンス番号が記述されていない場合には（Ｓ１２００：ＮＯ）、処理はステップＳ１３００に進む。
【０２０２】
Ｓ１３００で、再送要求受信部６４０は、再送要求シーケンス番号と再送要求元情報とを、再送先選択結果反映部６９０に出力する。再送要求受信部６４０は、シーケンス番号と再送要求元情報を入力されると、再送要求先が再送先の選択から漏れているとして、関連性保存テーブル８１０を修正する再送先選択結果修正処理を実行する。そして、処理はステップＳ２０００に進み、以降、実施の形態１と同様に、関連性更新処理および再送先チェック処理を経て、再送パケットが送信される。
【０２０３】
図２６は、再送先選択結果修正処理（図２５のステップＳ１３００）の流れを示すフローチャートである。
【０２０４】
ステップＳ１３１０で、再送先選択結果反映部６９０は、再送要求元以外の受信端末３００を１つ選択する。
【０２０５】
ステップＳ１３２０で、再送先選択結果反映部６９０は、関連性保存テーブル８１０において、選択されている受信端末３００のレコードの再送済シーケンス番号８１３に、再送要求シーケンス番号と同一のシーケンス番号が記述されているか否かを調べる。再送先選択結果反映部６９０は、同一のシーケンス番号が記述されている場合には（Ｓ１３２０：ＹＥＳ）、ステップＳ１３３０に進み、同一のシーケンス番号が記述されていない場合には（Ｓ１３２０：ＮＯ）、ステップＳ１３４０に進む。
【０２０６】
ステップＳ１３３０で、再送先選択結果反映部６９０は、選択されている受信端末３００のレコードの再送要求受信数８１５のうち再送要求元の値を増加させる。また、再送先選択結果反映部６９０は、修正後の再送要求受信数が、選択されている受信端末３００のレコードの総再送要求受信数８１４を超えてしまう場合には、修正幅が大きすぎると判断し、該当する再送要求受信数を、総再送要求受信数８１４と同一の値に変更する。再送要求元の値の増加には、例えば以下の式（７）を用いれば良い。
再送要求受信数 ＝ 現在の再送要求受信数 × １.１      ・・・・・・（７）
【０２０７】
式（７）を用いた場合、選択されている受信端末３００のレコードにおける再送要求元の再送要求受信数は１.１倍される。これにより、選択されている受信端末３００から再送要求を受信したときに、今回の再送要求元が先行的な再送パケットの送信先として選択されやすくなる。
【０２０８】
なお、式（７）における１.１の値を大きくすれば、再送要求元をより選択し易くしたり、より短時間のうちに再送先として選択されるようにすることができ、逆に小さくすれば、再送先選択結果反映部６９０による修正の影響を低減できる。また、再送要求受信数の値の増加は、例えば、現在の再送要求受信数に単純に一定値を加算することにより行ったり、選択されている受信端末３００の総再送要求受信数との差分から増加分を決定することにより行っても良い。
【０２０９】
そして、ステップＳ１３４０で、再送先選択結果反映部６９０は、未選択の受信端末３００があるか否かを判断する。再送先選択結果反映部６９０は、未選択の受信端末３００がある場合には（Ｓ１３４０：ＹＥＳ）、ステップ１３１０に戻って未選択の受信端末３００を１つ選択して処理を繰り返し、全ての受信端末３００について処理を完了した場合には（Ｓ１３４０：ＮＯ）、一連の処理を終了し、図２５に示す処理に戻る。
【０２１０】
このように、再送先選択結果反映部６９０による再送先選択結果修正処理の結果、関連性保存テーブル８１０は、再送先の選択の失敗を反映させる形で、現状の配送木の状態に近付ける方向に修正される。そして、修正後の関連性保存テーブル８１０に対して、ステップＳ２０００の関連性更新処理が行われることになる。
【０２１１】
以下、上記処理による関連性保存テーブル８１０の記述内容の変化の様子を説明する。
【０２１２】
図２７は、ある時点の関連性保存テーブル８１０の内容を示す図である。また、図２８は、図２７に示す関連性保存テーブル８１０に対して再送先選択結果修正処理が行われた場合の、関連性保存テーブル８１０の記述内容の変化の様子を示す図である。
【０２１３】
図２７に示す関連性保存テーブル８１０では、受信端末Ｂ、Ｅのレコードにのみ、再送済シーケンス番号８１２にシーケンス番号「１０」が記述されている。この状態にあるとき、受信端末Ｄからシーケンス番号「１０」を指定した再送要求パケットを受信したとする。
【０２１４】
受信端末Ｂ、Ｅのレコードの再送済シーケンス番号８１２にはシーケンス番号「１０」が記述されており、再送要求元である受信端末Ｄのレコードの再送済シーケンス番号８１２にはシーケンス番号「１０」が記述されていないため、処理は再送先選択結果反映部６９０に渡される。
【０２１５】
そして、受信端末Ｂ、Ｅのレコードの再送要求受信数８１５のうち、受信端末Ｄの値が、増加の方向に更新される。式（７）が用いられた場合、受信端末Ｂのレコードの再送要求受信数８１５のうち受信端末Ｄの値は、図２８に示すように、２０×１.１＝２２に更新される。また、受信端末Ｅのレコードの再送要求受信数８１５のうち受信端末Ｄの値は、図２８に示すように、２３×１.１＝２５.３に更新される。
【０２１６】
このように、本実施の形態によれば、過去の再送パケット送信において再送先に選択されていない受信端末３００から再送要求パケットが到着したとき、先行的に再送され易くなるように、関連性保存テーブル８１０を修正する。これにより、配送木やネットワークの状態の変化に素早く追従して関連性保存テーブルを修正することができ、低遅延での再送制御をより確実に実施することができる。
【０２１７】
なお、以上説明した各実施の形態では、明示的マルチキャスト方式によるパケット配信を行う送信端末について説明したが、これに限定されるものではなく、本発明は、オーバレイマルチキャスト方式を含む各種のデータ送信装置に適用することが可能である。より具体的には、複数のデータ受信装置からデータの再送要求を受信するデータ送信装置に適用可能である。
【産業上の利用可能性】
【０２１８】
本発明に係るデータ送信装置およびデータ再送方法は、配送木の構造が不明な場合でも再送パケットを早いタイミングで送出することができるデータ送信装置およびデータ再送方法として有用である。このデータ送信装置およびデータ再送方法によれば、低遅延なリアルタイム通信においても、再生時間までにパケットロスを回復するための再送パケットを受信することで受信端末の受信映像品質を向上することが可能であり、例えばテレビ会議システムやネットワークゲームのようなデータ送信装置およびデータ再送方法として有用である。また、パケット受信装置に至る経路上の装置の機能や装置間の関連性に依存しないため、特に、既存のネットワークにおけるマルチキャスト通信や、スモールグループ向けのマルチキャスト通信に好適である。
【図面の簡単な説明】
【０２１９】
【図１】本発明の実施の形態１に係るデータ送信装置を含む通信システムの構成を示すシステム構成図
【図２】実施の形態１に係るデータ送信装置としての送信端末の構成を示すブロック図
【図３】実施の形態１における関連性保存テーブルの構成を示す図
【図４】実施の形態１における再送要求パケットの構成の一例を示す図
【図５】実施の形態１における再送要求パケットを受信したときの送信端末の全体動作の流れを示すフローチャート
【図６】実施の形態１における関連性更新処理の流れを示すフローチャート
【図７】実施の形態１における関連性保存テーブルの記述内容の変化の様子を示す図
【図８】実施の形態１における関連性保存テーブルの記述内容の変化の様子を示す図
【図９】実施の形態１における関連性保存テーブルの記述内容の変化の様子を示す図
【図１０】実施の形態１における再送先チェック処理の流れを示すフローチャート
【図１１】実施の形態１における関連性保存テーブルの記述内容の変化の様子を示す図
【図１２】本発明の実施の形態２に係るデータ送信装置としての送信端末の構成を示すブロック図
【図１３】実施の形態２におけるレコード更新時刻テーブルの内容の一例を示す図
【図１４】実施の形態２における関連性更新処理の流れを示すフローチャート
【図１５】実施の形態２におけるある時点の関連性保存テーブルの内容の一例を示す図
【図１６】実施の形態２における関連性保存テーブルの記述内容の変化の様子を示す図
【図１７】実施の形態２における関連性保存テーブルの記述内容の変化の様子を示す図
【図１８】実施の形態２におけるある時点の関連性保存テーブルの内容の一例を示す図
【図１９】実施の形態２における図１８と同時点の履歴保存テーブルの内容の一例を示す図
【図２０】実施の形態２における履歴保存テーブルの記述内容の変化の様子を示す図
【図２１】実施の形態２における関連性保存テーブルの記述内容の変化の様子を示す図
【図２２】実施の形態２における履歴保存テーブルの記述内容の変化の様子を示す図
【図２３】実施の形態２における関連性保存テーブルの記述内容の変化の様子を示す図
【図２４】本発明の実施の形態３に係るデータ送信装置としての送信端末の構成を示すブロック図
【図２５】実施の形態３における再送要求パケットを受信したときの送信端末の全体動作の流れを示すフローチャート
【図２６】実施の形態３における再送先選択結果修正処理の流れを示すフローチャート
【図２７】実施の形態３におけるある時点の関連性保存テーブルの内容の一例を示す図
【図２８】実施の形態３における関連性保存テーブルの記述内容の変化の様子を示す図
【図２９】従来のマルチキャスト方式の通信システムの構成の一例を示すシステム構成図
【符号の説明】
【０２２０】
１００  通信システム
２００、５００、６００  送信端末
２１０  データパケット生成部
２２０  データパケット送信部
２３０  データ蓄積部
２４０、６４０  再送要求受信部
２５０、５５０  受信端末関連性更新部
２６０  再送先選択部
２７０  再送部
３００  受信端末
４００  ネットワーク
６９０  再送先選択結果反映部
【図１】
0004869169.tif 000002
【図２】
0004869169.tif 000003
【図３】
0004869169.tif 000004
【図４】
0004869169.tif 000005
【図５】
0004869169.tif 000006
【図６】
0004869169.tif 000007
【図７】
0004869169.tif 000008
【図８】
0004869169.tif 000009
【図９】
0004869169.tif 000010
【図１０】
0004869169.tif 000011
【図１１】
0004869169.tif 000012
【図１２】
0004869169.tif 000013
【図１３】
0004869169.tif 000014
【図１４】
0004869169.tif 000015
【図１５】
0004869169.tif 000016
【図１６】
0004869169.tif 000017
【図１７】
0004869169.tif 000018
【図１８】
0004869169.tif 000019
【図１９】
0004869169.tif 000020
【図２０】
0004869169.tif 000021
【図２１】
0004869169.tif 000022
【図２２】
0004869169.tif 000023
【図２３】
0004869169.tif 000024
【図２４】
0004869169.tif 000025
【図２５】
0004869169.tif 000026
【図２６】
0004869169.tif 000027
【図２７】
0004869169.tif 000028
【図２８】
0004869169.tif 000029
【図２９】
0004869169.tif 000030