(57)【要約】【課題】マルチキャスト通信において、パケットロスを検知した受信ノードが、送信ノードおよびすべての受信ノードならびにネットワーク全体の帯域に高負荷を与えることなく再送要求を行うこと。【解決手段】送信ノードは、複数の宛先アドレスを含むアドレスリストと、各宛先アドレスについて配送済みか否かを示すビットマップとを含む明示的マルチキャスト方式のデータパケットを複数の受信ノードに送信する。パケットロスを検知した受信ノードは、受信した別のデータパケットのアドレスリストおよびビットマップを調べ、そのデータパケットが配送済みとなっている受信ノードを再送要求先として選択する。パケットロスを検知した受信ノードは、選択した受信ノードを宛先とするユニキャスト方式の再送要求パケットを作成し、選択した受信ノードに対し送信する。【選択図】図２
2008005455.tif 000002
【特許請求の範囲】
【請求項１】
データパケットを受信するパケット受信部と、
前記パケット受信部が受信した一連のデータパケットにパケットロスが発生したことを検知するパケットロス検知部と、
前記パケットロス検知部がパケットロスの発生を検知した場合に、前記パケット受信部が受信したデータパケットのアドレスリストに含まれる１つ以上のＩＰアドレスから、再送要求先のＩＰアドレスを選択する再送要求先選択部と、
前記再送要求先のＩＰアドレスにパケットロスが発生したデータパケットのデータの再送を要求する再送要求パケットを作成する再送要求パケット作成部と、
前記再送要求先のＩＰアドレスに前記再送要求パケットを送信するパケット送信部と、
を備える通信端末装置。
【請求項２】
前記データパケットは、前記アドレスリストに含まれる１つ以上のＩＰアドレスのそれぞれについて、前記データパケットが配送済みであるか否かを示すビット列であるビットマップを含み、
前記再送要求先選択部は、
前記ビットマップから配送済みを示すビットを１つ選択し、選択されたビットに対応するＩＰアドレスを再送要求先のＩＰアドレスとして選択する、
請求項１記載の通信端末装置。
【請求項３】
前記パケット受信部は、
パケットとしてデータパケットに加えて再送パケットを受信し、
前記通信端末装置は、
前記パケット受信部が受信したパケットの種類を判別するパケットチェック部と、
前記パケットチェック部が前記パケットをデータパケットと判別した場合、前記データパケットに含まれるデータおよびシーケンス番号を格納するデータ蓄積部と、
前記パケットチェック部が前記パケットを再送パケットと判別した場合、前記再送パケットに含まれるデータおよびシーケンス番号を前記データ蓄積部に格納する再送パケット受信部と、
をさらに備える請求項１記載の通信端末装置。
【請求項４】
前記パケットロス検知部は、
前記パケット受信部が受信するデータパケットのシーケンス番号が連続しているか否かを判定することで、パケットロスが発生したことを検知する、
請求項３記載の通信端末装置。
【請求項５】
前記再送要求パケット作成部は、
データの再送を要求する前記データパケットのシーケンス番号と、再送要求元のＩＰアドレスとしての自装置のＩＰアドレスとを再送要求パケットに記載する、
請求項３記載の通信端末装置。
【請求項６】
前記再送パケット受信部は、
前記再送パケットに含まれるシーケンス番号と再送要求を行ったシーケンス番号とが同一である場合、前記再送パケットに含まれるデータおよびシーケンス番号を前記データ蓄積部に格納する、
請求項３記載の通信端末装置。
【請求項７】
前記パケット受信部は、
パケットとしてデータパケットおよび再送パケットに加えて再送要求パケットを受信し、
前記通信端末装置は、
前記再送要求先選択部が再送要求先のＩＰアドレスを選択した後に一定時間待機し、前記再送要求先に再送要求するデータと同一のデータを再送要求する再送要求パケットを受信する再送要求パケット待機部、をさらに備え、
前記再送要求パケット作成部は、
前記再送要求パケット待機部が受信した前記再送要求パケットに含まれる再送要求元アドレスを、自らのアドレスに加えて再送要求元アドレスとして再送要求パケットに記載する、
請求項３記載の通信端末装置。
【請求項８】
前記再送要求パケット待機部は、
前記再送要求先選択部が再送要求先のＩＰアドレスを選択した後に一定時間待機し、
再送要求パケットを受信したとき、前記再送要求先に再送要求するデータのシーケンス番号と、前記再送要求パケットに含まれる再送要求するデータのシーケンス番号とが同一であるか否かを判定し、
前記再送要求先に再送要求するデータのシーケンス番号と、前記再送要求パケットに含まれる再送要求するデータのシーケンス番号とが同一である場合、前記再送要求パケットに記載された再送要求元アドレスを、前記再送要求パケット作成部に再送要求元アドレスとして通知し、
一定時間経過した後、待機状態を終了する、
請求項７記載の通信端末装置。
【請求項９】
前記パケット受信部が受信したデータパケットが数珠繋ぎ配送によって転送されているか否かを判定し、前記データパケットが数珠繋ぎ配送によって転送されている場合、前記データパケットのアドレスリストに記載されたＩＰアドレスのうち、自らのＩＰアドレスより後ろに記載されたすべてのＩＰアドレスを前記再送要求パケット作成部に通知する数珠繋ぎ配送チェック部、をさらに備え、
前記再送要求パケット作成部は、さらに、
前記数珠繋ぎ配送チェック部から通知されたＩＰアドレスを自らのアドレスに加えて再送要求元アドレスとする再送要求パケットを作成する、
請求項３記載の通信端末装置。
【請求項１０】
応答用情報交換パケットおよびデータパケットをパケットとして受信するパケット受信部と、
前記パケット受信部が受信したパケットの種類を判別するパケットチェック部と、
前記パケットチェック部が前記パケットを応答用情報交換パケットと判別した場合、前記応答用情報交換パケットに含まれる送信時刻および現在時刻から、前記応答用情報交換パケットの送信元の応答時間を算出する再送応答時間計算部と、
前記パケットチェック部が前記パケットをデータパケットと判別した場合、前記データパケットにパケットロスが発生したことを検知するパケットロス検知部と、
前記パケットロス検知部がパケットロスの発生を検知した場合、前記パケット受信部が受信したデータパケットのアドレスリストに含まれる１つ以上のＩＰアドレスから、パケットロスが発生したデータパケットのデータを再生するまでの時間が前記応答時間よりも短いＩＰアドレスを再送要求先のＩＰアドレスとして選択する再送要求先選択部と、
前記再送要求先のＩＰアドレスにパケットロスが発生したデータパケットのデータの再送を要求する再送要求パケットを作成する再送要求パケット作成部と、
問合せ用情報交換パケットを定期的に作成する情報交換部と、
前記再送要求パケット作成部が前記再送要求パケットを作成した場合、前記再送要求先のＩＰアドレスに前記再送要求パケットを送信し、前記情報交換部が前記問合せ用情報交換パケットを作成した場合、前記問合せ用情報交換パケットに送信時刻として現在時刻を記載した後、前記データパケットのアドレスリストに記載されたＩＰアドレスに前記問合せ用情報交換パケットを送信するパケット送信部と、
を備える通信端末装置。
【請求項１１】
前記パケット受信部は、
パケットとしてデータパケットおよび応答用情報交換パケットに加えて問合せ用情報交換パケットを受信し、
前記情報交換部は、さらに、
前記パケットチェック部が前記パケットを問合せ用情報交換パケットと判別した場合、前記問合せ用情報交換パケットに含まれる問合せ元のＩＰアドレスおよび送信時刻に基づいて、前記問合せ元のＩＰアドレスおよび前記送信時刻を含む応答用情報交換パケットを作成し、
前記パケット送信部は、さらに、
前記情報交換部が前記応答用情報交換パケットを作成した場合、前記問合せ元のＩＰアドレスに前記応答用情報交換パケットを送信する、
請求項１０記載の通信端末装置。
【請求項１２】
応答用情報交換パケットおよびデータパケットをパケットとして受信するパケット受信部と、
前記パケット受信部が受信したパケットの種類を判別するパケットチェック部と、
前記パケットチェック部が前記パケットを応答用情報交換パケットと判別した場合、前記応答用情報交換パケットに含まれる送信時刻および現在時刻から、前記応答用情報交換パケットの送信元の応答時間を算出し、前記応答用情報交換パケットに含まれる損失イベント率および前記応答用情報交換パケットを受信できたデータ量から、前記応答用情報交換パケットの送信元の利用可能な帯域を推定するセッション情報管理部と、
前記パケットチェック部が前記パケットを応答用情報交換パケットと判別した場合、前記応答用情報交換パケットに含まれる損失イベント率および前記セッション情報管理部が推定した前記応答用情報交換パケットの送信元の利用可能な帯域から、前記応答用情報交換パケットの送信元の応答時間を修正するための補正値を算出する再送応答時間計算部と、
前記パケットチェック部が前記パケットをデータパケットと判別した場合、前記データパケットにパケットロスが発生したことを検知するパケットロス検知部と、
前記パケットロス検知部がパケットロスの発生を検知した場合、前記パケット受信部が受信したデータパケットのアドレスリストに含まれる１つ以上のＩＰアドレスから、パケットロスが発生したデータパケットのデータを再生するまでの時間が前記応答時間よりも短く、かつ前記応答時間を前記補正値を用いて修正した修正応答時間が最も短いＩＰアドレスを再送要求先のＩＰアドレスとして選択する再送要求先選択部と、
前記再送要求先のＩＰアドレスにパケットロスが発生したデータパケットのデータの再送を要求する再送要求パケットを作成する再送要求パケット作成部と、
問合せ用情報交換パケットを定期的に作成する情報交換部と、
前記再送要求パケット作成部が前記再送要求パケットを作成した場合、前記再送要求先のＩＰアドレスに前記再送要求パケットを送信し、前記情報交換部が前記問合せ用情報交換パケットを作成した場合、前記問合せ用情報交換パケットに送信時刻として現在時刻を記載した後、前記データパケットのアドレスリストに記載されたＩＰアドレスに前記問合せ用情報交換パケットを送信するパケット送信部と、
を備える通信端末装置。
【請求項１３】
前記パケット受信部は、
パケットとしてデータパケットおよび応答用情報交換パケットに加えて問合せ用情報交換パケットを受信し、
前記情報交換部は、さらに、
前記パケットチェック部が前記パケットを問合せ用情報交換パケットと判別した場合、前記問合せ用情報交換パケットに含まれるシーケンス番号および応答時間から損失イベント率を算出し、前記問合せ用情報交換パケットを受信できたデータ量を算出し、前記問合せ用情報交換パケットに含まれる問合せ元のＩＰアドレス、前記送信時刻、前記損失イベント率および前記受信できたデータ量を含む応答用情報交換パケットを作成し、
前記パケット送信部は、さらに、
前記情報交換部が前記応答用情報交換パケットを作成した場合、前記問合せ元のＩＰアドレスに前記応答用情報交換パケットを送信する、
請求項１２記載の通信端末装置。
【請求項１４】
パケットとしてデータパケットおよび再送要求パケットを受信するパケット受信部と、
前記パケット受信部が受信したパケットの種類を判別するパケットチェック部と、
前記パケットチェック部が前記パケットをデータパケットと判別した場合、前記データパケットに含まれるデータおよびシーケンス番号を格納するデータ蓄積部と、
前記パケットチェック部が前記パケットを再送要求パケットと判別した場合、前記再送要求パケットに含まれる再送要求元のＩＰアドレスおよび再送要求されているデータパケットのシーケンス番号に基づいて、前記再送要求元のＩＰアドレスおよび前記データ蓄積部に格納されている前記シーケンス番号のデータを含む再送パケットを作成する再送パケット作成部と、
前記再送要求元のＩＰアドレスに前記再送パケットを送信するパケット送信部と、
を備える通信端末装置。
【請求項１５】
前記再送パケット作成部は、
前記再送要求パケットに含まれる、再送を要求されているデータのシーケンス番号を取得し、
前記シーケンス番号のデータが前記データ蓄積部に格納されているか否かを判定し、
前記データが前記データ蓄積部に格納されていない場合は、前記データが前記データ蓄積部に格納されるまで待機し、
前記データが前記データ蓄積部に格納されている場合は、前記データと前記シーケンス番号を前記再送パケットに格納する、
請求項１４記載の通信端末装置。
【請求項１６】
前記再送パケット作成部は、
受信した再送要求パケットに含まれる再送要求元のＩＰアドレスが１つの場合は、ユニキャスト方式の再送パケットを作成し、
受信した再送要求パケットに含まれる再送要求元のＩＰアドレスが複数の場合は、明示的マルチキャスト方式の再送パケットを作成する、
請求項１４記載の通信端末装置。
【請求項１７】
少なくとも第一の通信端末装置および第二の通信端末装置を有するマルチキャスト通信システムであって、
前記第一の通信端末装置は、受信している一連のデータパケットにパケットロスが発生したことを検知した場合、受信したデータパケットのアドレスリストに含まれる１つ以上のＩＰアドレスから再送要求先として前記第二の通信端末のＩＰアドレスを選択し、パケットロスが発生したデータパケットのデータの再送を要求する再送要求パケットを前記第二の通信端末にユニキャスト通信で送信し、
前記第二の通信端末装置は、前記第一の通信端末装置から前記再送要求パケットを受信した場合、再送要求されているデータを含む再送パケットを前記第一の通信端末装置にユニキャスト通信で送信する、
マルチキャスト通信システム。
【請求項１８】
少なくとも第一の通信端末装置および第二の通信端末装置を有するマルチキャスト通信システムにおけるデータ再送方法であって、
前記第一の通信端末装置が、受信している一連のデータパケットにパケットロスが発生したことを検知した場合に、受信したデータパケットのアドレスリストに含まれる１つ以上のＩＰアドレスから再送要求先として前記第二の通信端末のＩＰアドレスを選択し、パケットロスが発生したデータパケットのデータの再送を要求する再送要求パケットを前記第二の通信端末にユニキャスト通信で送信するステップと、
前記第二の通信端末装置が、前記第一の通信端末装置から前記再送要求パケットを受信した場合に、再送要求されているデータを含む再送パケットを前記第一の通信端末装置にユニキャスト通信で送信するステップと、
を有するデータ再送方法。
【請求項１９】
データパケットを受信するステップと、
受信した一連のデータパケットにパケットロスが発生したことを検知するステップと、
パケットロスが発生したことを検知した場合に、受信したデータパケットのアドレスリストに記載されている一つ以上のＩＰアドレスから、再送要求先のＩＰアドレスを選択するステップと、
前記再送要求先のＩＰアドレスに前記パケットロスが発生したデータパケットのデータの再送を要求する再送要求パケットを作成するステップと、
前記再送要求先のＩＰアドレスに前記再送要求パケットを送信するステップと、
を有する再送要求方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチキャスト通信における通信端末装置および再送要求方法に関し、特に、マルチキャスト通信においてパケットロスが発生した場合に、パケット再送要求を行う通信端末装置および再送要求方法に関する。
【背景技術】
【０００２】
近年、ネットワークの急速な発展に伴って、テレビ会議やネットワークゲームなどで、１つの送信ノードが複数の受信ノードに同一のパケットを送信する機会が増大している。このような場合、送信ノードは、すべての受信ノードに対して効率的に同一のパケットを送信することができるマルチキャスト通信で配信を行うことが多い。例えば、送信ノードは、パケットの配信先となる受信ノードを１０台程度の受信ノードから構成されるグループに分け、グループごとにパケットをマルチキャスト通信で配信する。
【０００３】
グループごとにマルチキャスト通信を行う通信方式の一つとして、明示的マルチキャスト方式がある。明示的マルチキャスト方式では、送信ノードは、グループ内の全受信ノードのアドレスをパケットのオプションヘッダまたはペイロードに記載することで、全受信ノードを明示的に指定する。代表的な明示的マルチキャスト方式として、ＸＣＡＳＴ（Explicit Multicast）がある（非特許文献１参照）。
【０００４】
一般的に、同一グループ内の受信ノードにマルチキャスト通信を行う場合、経路上のすべてのパケット中継装置（以下「ルータ」という）がマルチキャスト通信に対応していなければならない。しかし、明示的マルチキャスト方式では、経路上のすべてのルータが明示的マルチキャスト方式に対応していなくても、送信ノードはパケット内にアドレスが記載された全受信ノードにパケットを配信することができる。その際、パケットのヘッダ内のビット列（以下「ビットマップ」という）は、各受信ノードについてパケットが配送されたか否かを管理する。
【０００５】
ここで、明示的マルチキャスト方式の通信におけるパケット配信方法を、経路上のすべてのルータが明示的マルチキャスト方式に対応している場合と、明示的マルチキャスト方式に対応していない場合とに分けて説明する。経路上の一部のルータのみが明示的マルチキャスト方式に対応している場合も、同様の配信方法ですべての受信ノードにパケットを配信できる。
【０００６】
明示的マルチキャスト方式に対応しているルータ（以下「対応ルータ」という）は、他のノードからパケットを受信すると、パケットのオプションヘッダまたはペイロードに記載されたすべての宛先アドレスについて自身の持つユニキャスト経路表を検索することで、各宛先アドレスに対応した送信インターフェースを調べる。次いで、対応ルータは、送信先のインターフェースの数だけパケットを複製し、各インターフェースに対応するパケットを送信する。このとき、対応ルータは、複製された各パケットについてヘッダ内のビットマップを走査し、送信先のインターフェースに含まれない受信ノードに対応するビットに配送済みのマークを付加する。さらに、対応ルータは、ＩＰヘッダに記載された宛先アドレスを未配送の受信者の宛先アドレスに書き換える。このように、経路上の対応ルータがパケットの複製および送信を繰り返すことにより、パケットがすべての受信ノードへ配信される。
【０００７】
一方、明示的マルチキャスト方式に対応していないルータ（以下「未対応ルータ」という）は、他のノードからパケットを受信すると、パケットのオプションヘッダまたはペイロードに記載された宛先アドレスを参照せずに、ＩＰヘッダに記載された宛先アドレスについて自身の持つユニキャスト経路表を検索することで、通常のユニキャスト通信と同様にパケットを送信する。受信ノードは、パケットを受信すると、ヘッダ内のビットマップを走査し、未配送の宛先アドレスの有無を確認する。未配送の宛先アドレスがあった場合、受信ノードは、ＩＰヘッダの宛先アドレスを未配送の宛先アドレスに書き換えたパケットを複製し、ルータに対して送信する。その際、受信ノードは、ビットマップ内の自ノードに対応するビットに配送済みのマークを付加する。このように、受信ノードが受信したパケットを再びルータに対して送信することにより、パケットがすべての受信ノードへ転送される。このような配送は、「数珠繋ぎ配送」と呼ばれる。
【０００８】
以上の仕組みから、明示的マルチキャスト方式では、経路上のすべてのルータが明示的マルチキャスト方式に対応していなくても、すべての受信ノードに対してパケットを配信できる。そのため、明示的マルチキャスト方式を用いれば、インターネット上で経路上のすべてのルータを対応ルータに置き換えることなく、インターネットを用いてマルチキャスト通信を行うことができる。
【０００９】
一般的に、ネットワーク通信において輻輳などが発生した場合、ネットワークを流れるパケットが失われてしまうことがある（以下「パケットロス」という）。ファイル転送などデータを損失してはならない通信においてパケットロスが発生した場合、受信ノードは送信ノードに対してパケットロスが発生したパケットの再送を要求する。しかし、マルチキャスト通信では、パケットロスを検知したすべての受信ノードが送信ノードに対して再送要求を行うと、再送要求を受信する送信ノードの負荷が増大して通常の通信に影響を及ぼすという問題がある。このような問題を解決するべく、受信ノードが送信ノード以外のノードに対して再送要求を行うという、次の２つの方式が開示されている。
【００１０】
第１の方式は、ネットワーク上に再送用の中間ノードを設ける方式である。パケットロスを検知した受信ノードは、マルチキャスト通信を用いて中間ノードに対して再送要求を行う。再送要求を受けた中間ノードは、再送要求を行った受信ノードに対してユニキャスト通信またはマルチキャスト通信を用いてパケットを再送する（例えば、特許文献１参照）。
【００１１】
第２の方式は、ネットワーク上に中間ノードを設けずに再送要求を行う方式である。パケットロスを検知した受信ノードは、ランダム時間待機した後、すべての受信ノードに対して再送要求をマルチキャスト通信で送信する。再送要求を受け取った受信ノードは、あらかじめ定められた確率に則って、再送パケットをマルチキャスト通信で送信する。受信ノードは、自らがパケットを再送する前に他の受信ノードからの再送パケットを受信した場合は、再送要求を受け取っていても再送パケットを送信しない。また、受信ノードは、パケットロスを検知しても、再送要求を送信するまでの待機時間中に再送パケットがマルチキャスト通信によって到着すれば、再送要求を送信しない（例えば、非特許文献２参照）。
【００１２】
これらの方式の受信ノードは、マルチキャスト通信に参加している他の受信ノードのＩＰアドレスを知ることはできない。したがって、パケットロスを検知した受信ノードは、ユニキャスト通信ではなくマルチキャスト通信を用いて他のノードに再送要求パケットを送信する。
【００１３】
これらの方式を用いることにより、マルチキャスト通信においてパケットロスが発生した場合であっても、受信ノードは送信ノードに負荷をかけることなく他のノード（中間ノードまたは受信ノード）に再送要求を行うことができる。
【特許文献１】特開２００１−１０３０５１号公報
【非特許文献１】Y. Imai, M. Shin and Y. Kim, "XCAST6: eXplicit Multicast on IPv6", IEEE/IPSJ SAINT2003 Workshop 4, IPv6 and Applications, Orland, Jan. 2003.
【非特許文献２】Sally Floyd, Van Jacobson, Ching-Gung Liu, Steven McCanne and Lixia Zhang, "A Reliable Multicast Framework for Light-weight Sessions and Application Level Framing", IEEE/ACM Transactions on Networking, November 1996.
【発明の開示】
【発明が解決しようとする課題】
【００１４】
しかしながら、上記従来の方式にあっては、パケットロスが発生する度にネットワーク全体に再送要求パケットが流れるため、ネットワーク全体の帯域に高負荷がかかるという課題がある。また、再送要求パケットを受信したすべてのノード（中間ノードまたは受信ノード）が再送要求受信処理を行うため、各ノードの処理負荷が増大するという課題がある。
【００１５】
本発明は、かかる点に鑑みてなされたものであり、マルチキャスト通信において、ネットワーク全体の帯域および他のノードに負荷をかけずに再送要求を行うことができる通信端末装置および再送要求方法を提供することを目的とする。
【課題を解決するための手段】
【００１６】
本発明の通信端末装置は、データパケットを受信するパケット受信部と、前記パケット受信部が受信した一連のデータパケットにパケットロスが発生したことを検知するパケットロス検知部と、前記パケットロス検知部がパケットロスの発生を検知した場合に、前記パケット受信部が受信したデータパケットのアドレスリストに記載されている一つ以上のＩＰアドレスから、再送要求先のＩＰアドレスを選択する再送要求先選択部と、前記再送要求先のＩＰアドレスにパケットロスが発生したデータパケットのデータの再送を要求する再送要求パケットを作成する再送要求パケット作成部と、前記再送要求先のＩＰアドレスに前記再送要求パケットを送信するパケット送信部と、を備える構成を採る。
【００１７】
本発明の再送要求方法は、データパケットを受信するステップと、受信した一連のデータパケットにパケットロスが発生したことを検知するステップと、パケットロスが発生したことを検知した場合に、受信したデータパケットのアドレスリストに記載されている一つ以上のＩＰアドレスから、再送要求先のＩＰアドレスを選択するステップと、前記再送要求先のＩＰアドレスに前記パケットロスが発生したデータパケットのデータの再送を要求する再送要求パケットを作成するステップと、前記再送要求先のＩＰアドレスに前記再送要求パケットを送信するステップと、を有する。
【発明の効果】
【００１８】
本発明によれば、受信ノードとしての通信端末装置は、パケットロスを検知しても特定の受信ノードに対してユニキャスト通信で再送要求を行うため、ネットワーク全体の帯域およびすべてのノードに負荷をかけることなく再送要求を行うことができる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の実施の形態について、図面を参照しつつ説明する。
【００２０】
（実施の形態１）
図１は、本発明の一実施の形態に係る通信端末装置の動作を説明するための通信ネットワークの概要を示す図である。
【００２１】
図１において、通信ネットワーク２００は、１台の送信ノード３００、３台のルータ４００〜４０２、５台の通信端末装置１００〜１０４から構成されている。
【００２２】
送信ノード３００は、明示的マルチキャスト方式のデータパケットを作成し、通信端末装置１００〜１０４に対して配信する。
【００２３】
ルータ４００〜４０２は、通信ネットワーク２００上のパケットに含まれる宛先アドレス情報に基づいて、パケットのルーティングを行う。
【００２４】
通信端末装置１００〜１０４は、送信ノード３００が送信したデータパケットを受信する受信ノードである。また、通信端末装置１００〜１０４は、後述するように、パケットロスを検知したときに再送要求パケットの作成および送信を行い、再送要求パケットを受信したときに再送パケットの作成および送信を行う。
【００２５】
図２は、図１における通信端末装置１００の構成を示すブロック図である。
【００２６】
図２において、通信端末装置１００は、パケット受信部１１０、パケットチェック部１１１、パケットロス検知部１１２、再送要求先選択部１１３、再送要求パケット作成部１１４、再送パケット作成部１１５、再送パケット受信部１１６、データ蓄積部１１７、パケット送信部１１８を備えて構成される。
【００２７】
パケット受信部１１０は、通信ネットワーク２００からパケットを受信する。そして、パケット受信部１１０は、受信したパケットをパケットチェック部１１１に渡す。
【００２８】
パケットチェック部１１１は、パケット受信部１１０が受信したパケットの種類を判別する。そして、パケットチェック部１１１は、パケットの種類に応じた出力先にパケットを渡す。
【００２９】
ここで、パケットの種類について説明する。パケットの種類は、例えば、データパケット、再送要求パケットおよび再送パケットがある。データパケットは、送信ノードが作成する明示的マルチキャスト方式のパケットであり、送信ノードが受信ノードへ配信するデータが格納されている。再送要求パケットは、パケットロスの発生を検知した受信ノード（通信端末装置）が作成するユニキャスト方式のパケットであり、パケットロスが発生したデータパケットの再送を要求するのに必要な情報が格納されている。再送パケットは、再送要求パケットを受信した受信ノード（通信端末装置）が作成するユニキャスト方式のパケットであり、再送要求パケットで要求された再送データが格納されている。
【００３０】
パケットチェック部１１１の説明に戻る。パケットチェック部１１１は、受信したパケットをデータパケットと判別した場合、このパケットをパケットロス検知部１１２に渡す。また、パケットチェック部１１１は、受信したパケットを再送要求パケットと判別した場合、このパケットを再送パケット作成部１１５に渡す。また、パケットチェック部１１１は、受信したパケットを再送パケットと判別した場合、このパケットを再送パケット受信部１１６に渡す。
【００３１】
パケットロス検知部１１２は、パケット受信部１１０が受信している一連のデータパケットにパケットロスが発生しているか否かを判定する。例えば、パケットロス検知部１１２は、データパケットのヘッダ部に記載されたシーケンス番号を調べることで、パケットロスの発生を検知することができる。
【００３２】
ここで、データパケット内のシーケンス番号について説明する。図３は、明示的マルチキャスト方式のデータパケットの構成の一例を示す図である。図３において、データパケット５００は、ヘッダ部５０１と、配信データを含むペイロード５０２とを有する。ヘッダ部５０１には、ルーティングヘッダ５０３（後述）およびシーケンス番号５０４が含まれる。図３に示すデータパケットの例では、シーケンス番号５０４は整数「１７」である。ヘッダ部５０１は、他のヘッダを有していてもよいが、説明の便宜上ここでは説明しない。
【００３３】
パケットロス検知部１１２の説明に戻る。パケットロス検知部１１２は、シーケンス番号が連続したデータパケットを受信しているときは、パケットロスは発生していないと判定する。一方、パケットロス検知部１１２は、シーケンス番号が非連続のデータパケットを受信したときは、パケットロスが発生したと判定する。例えば、ある時点で受信したデータパケットのシーケンス番号が「１５」であり、次に受信したデータパケットのシーケンス番号が「１６」であったときは、パケットロス検知部１１２はパケットロスが発生していないと判定する。一方、ある時点で受信したデータパケットのシーケンス番号が「１５」であり、次に受信したデータパケットのシーケンス番号が「１７」であったときは、パケットロス検知部１１２はシーケンス番号「１６」のデータパケットにパケットロスが発生したと判定する。パケットロス検知部１１２は、パケットロスが発生したと判定した場合、パケットロスとなったデータパケットを他の受信ノードから再送してもらうために、パケットロスとなったデータパケットのシーケンス番号（上述の例では「１６」）を再送要求先選択部１１３に通知する。同時に、パケットロス検知部１１２は、保持している（最後に受信した）データパケット（上述の例ではシーケンス番号「１７」のデータパケット）を再送要求先選択部１１３に渡す。また、パケットロス検知部１１２は、パケットチェック部１１１から渡されたデータパケットに含まれるデータをデータ蓄積部１１７に格納する。このとき、パケットロス検知部１１２は、後の再送処理のためにデータパケットのシーケンス番号を対応するデータと関連づけて格納しておく。なお、パケットロス検知部１１２は、データパケットをそのままデータ蓄積部１１７に格納してもよい。
【００３４】
再送要求先選択部１１３は、パケットロス検知部１１２から通知されたパケットロスが発生したデータパケットについて、どの受信ノードに対して再送要求を行うかを選択する。このとき、再送要求先選択部１１３は、パケットロス検知部１１２から渡されたデータパケット内のビットマップおよびアドレスリストを検索することで、再送要求先の受信ノードを選択することができる。
【００３５】
ここで、データパケット内のビットマップおよびアドレスリストについて説明する。図３において、データパケット５００のルーティングヘッダ５０３には、配送済みか否かを示すビット列であるビットマップ５０５と、送信先となる受信ノードのＩＰアドレスが１つ以上記載されているアドレスリスト５０６とが含まれている。図３に示すデータパケットの例において、アドレスリスト５０６には、通信端末装置Ａ（以下「受信ノードＡ」という）のＩＰアドレス５０７、通信端末装置Ｃ（以下「受信ノードＣ」という）のＩＰアドレス５０８および通信端末装置Ｄ（以下「受信ノードＤ」という）のＩＰアドレス５０９が記載されているものとする。また、ビットマップ５０５には、アドレスリスト５０６に記載された受信ノードのＩＰアドレスそれぞれについて配送済みか否かを示すビットが、アドレスリスト５０６内のＩＰアドレス５０７〜５０９の並び順通りに１ビットずつ割当てられている。図３に示すデータパケットの例では、配送済みを示すビットを０、未配送を示すビットを１とすると、ビットマップは「０・１・１」であるので、受信ノードＡは配送済み（０）であり、受信ノードＣは未配送（１）であり、受信ノードＤも未配送（１）であることを示している。
【００３６】
再送要求先選択部１１３の説明に戻る。再送要求先選択部１１３は、パケットロス検知部１１２から渡されたデータパケット内のビットマップを見て、配送済みとなっているビット（上記の例では「０」のビット）を１つ選択する。そして、再送要求先選択部１１３は、同じデータパケットのアドレスリストを調べ、選んだビットに対応する受信ノードのＩＰアドレスを取得する。再送要求先選択部１１３が配送済みを示すビットを選択する方法（基準）は特に限定されず、配送済みを示すビットであればどのビットを選択してもよい。例えば、送信ノードが、ネットワーク上で近い受信ノード同士が隣接するように受信ノードのＩＰアドレスをアドレスリストに記載しているのであれば、再送要求先選択部１１３は、自ノードに対応するビットの近くにある配送済みのビットを優先的に選択するようにしてもよい。また、再送要求先選択部１１３は、１つの受信ノードに多くの再送要求が集中しないように、複数ある配送済みを示すビットの中からランダムに配送済みのビットを選択するようにしてもよい。また、再送要求先選択部１１３は、送信ノードから各受信ノードの性能に関する情報を取得しているのであれば、より性能の高い配送済みの受信ノードを選択するようにしてもよい。なお、再送要求先選択部１１３は、配送済みの受信ノードがない場合は、送信ノードを選択する。例えば、図３に示すデータパケットの場合、ビットマップ５０５が「０」となっている配送済みの受信ノードは受信ノードＡのみである。したがって、再送要求先選択部１１３は、再送要求先として受信ノードＡのＩＰアドレス５０７を選択する。
【００３７】
再送要求先選択部１１３は、再送要求先として選択した受信ノードのＩＰアドレスおよびパケットロスが発生したデータパケットのシーケンス番号を再送要求パケット作成部１１４に通知する。また、再送要求先選択部１１３は、再送要求を行うデータパケットのシーケンス番号を記録する。例えば、再送要求先選択部１１３は、データ蓄積部１１７に格納された「再送要求を行う（行った）シーケンス番号の表」に再送要求を行うデータパケットのシーケンス番号を記載すればよい。
【００３８】
図４は、「再送要求を行う（行った）シーケンス番号の表」の一例を示す図である。この表６００は、シーケンス番号５、９および１６のデータパケットについて再送要求を行ったことが記録されている例である。この表は、後述する再送パケット受信部１１６によって使用される。
【００３９】
再送要求パケット作成部１１４は、再送要求先選択部１１３が選択した再送要求先の受信ノードのＩＰアドレスおよび再送要求するデータパケットのシーケンス番号を含む再送要求パケットを作成する。
【００４０】
ここで、再送要求パケットについて説明する。図５は、再送要求パケットの構成の一例を示す図である。図５（Ａ）において、再送要求パケット７００は、ヘッダ部７０１と、ペイロード７０２とを有する。ヘッダ部７０１には、宛先アドレス７０３、再送要求元アドレス７０４および再送要求するデータパケットのシーケンス番号７０５が含まれる。ヘッダ部７０１は、他のヘッダを有していてもよいが、説明の便宜上ここでは説明しない。
【００４１】
再送要求パケット作成部１１４の説明に戻る。再送要求パケット作成部１１４は、ヘッダ部７０１の宛先アドレス７０３に、再送要求先選択部１１３が選択した再送要求先のＩＰアドレス（図５（Ａ）に示す例では受信ノードＡのＩＰアドレス）を記載する。また、再送要求パケット作成部１１４は、再送要求元アドレス７０４に自らのＩＰアドレス（図５（Ａ）の例では受信ノードＣのＩＰアドレス）を記載し、再送要求するデータパケットのシーケンス番号７０５に再送要求先選択部１１３から通知されたシーケンス番号を記載する。なお、図５（Ｂ）に示すように、再送要求パケット作成部１１４は、再送要求元アドレス７０４および再送要求するデータパケットのシーケンス番号７０５をペイロード７０２中に記載してもよい。そして、再送要求パケット作成部１１４は、作成した再送要求パケットをパケット送信部１１８に渡す。
【００４２】
再送パケット作成部１１５は、パケットチェック部１１１から渡された再送要求パケットに含まれている再送要求元アドレスおよび再送要求されているデータパケットのシーケンス番号を取得する。そして、再送パケット作成部１１５は、取得したシーケンス番号のデータがデータ蓄積部１１７に格納されているか否かを判定する。そして、再送パケット作成部１１５は、再送要求されているデータがデータ蓄積部１１７に格納されていると判定した場合、取得した再送要求元アドレスおよびシーケンス番号に基づいて再送パケットを作成する。
【００４３】
ここで、再送パケットについて説明する。図６は、再送パケットの構成の一例を示す図である。図６において、再送パケット８００は、ヘッダ部８０１と、再送データを含むペイロード８０２とを有する。ヘッダ部８０１には、宛先アドレス８０３および再送要求されているデータパケットのシーケンス番号８０４が含まれる。ヘッダ部８０１は、他のヘッダを有していてもよいが、説明の便宜上ここでは説明しない。
【００４４】
再送パケット作成部１１５の説明に戻る。再送パケット作成部１１５は、再送要求パケットに記載された再送要求元アドレスを宛先アドレス８０３に記載し、再送要求パケットに記載されたシーケンス番号をシーケンス番号８０４に記載する。また、再送パケット作成部１１５は、そのシーケンス番号に対応したデータを再送データとしてペイロード８０２に格納する。そして、再送パケット作成部１１５は、作成した再送パケットをパケット送信部１１８に渡す。
【００４５】
再送パケット受信部１１６は、パケットチェック部１１１から渡された再送パケットに含まれるシーケンス番号を取得する。そして、再送パケット受信部１１６は、取得したシーケンス番号がデータ蓄積部１１７に格納された再送要求を行ったシーケンス番号の表（図４参照）に記載されているか否かを判定する。そして、再送パケット受信部１１６は、取得したシーケンス番号が表に記載されていると判定した場合、再送パケットの再送データが再送要求したデータだと判断し、このデータをデータ蓄積部１１７に格納する。一方、再送パケット受信部１１６は、取得したシーケンス番号が表に記載されていないと判定した場合、再送パケットの再送データが再送要求していないデータだと判断し、再送パケットを破棄する。
【００４６】
データ蓄積部１１７は、データパケットまたは再送パケットに含まれるデータおよびシーケンス番号を格納する記憶部である。また、データ蓄積部１１７は、再送要求を行ったシーケンス番号の表も格納する。
【００４７】
パケット送信部１１８は、再送要求パケット作成部１１４が作成した再送要求パケットおよび再送パケット作成部１１５が作成した再送パケットをネットワーク２００に送信する。
【００４８】
以下、上述のように構成された通信端末装置１００の動作を説明する。
【００４９】
図７は、パケットを受信したときの通信端末装置１００の動作を示すフローチャートである。
【００５０】
まず、ステップＳ１００において、パケット受信部１１０は、通信ネットワーク２００からパケットを受信する。そして、パケット受信部１１０は、受信したパケットをパケットチェック部１１１に渡す。
【００５１】
次いで、ステップＳ２００において、パケットチェック部１１１は、パケット受信部１１０が受信したパケットの種類を判別する。そして、パケットチェック部１１１は、受信したパケットをデータパケットと判別した場合（Ｓ２００：データパケット）、そのパケットをパケットロス検知部１１２に渡して、ステップＳ３００に進む。パケットチェック部１１１は、受信したパケットを再送要求パケットと判別した場合（Ｓ２００：再送要求パケット）、そのパケットを再送パケット作成部１１５に渡して、ステップＳ４００に進む。パケットチェック部１１１は、受信したパケットを再送パケットと判別した場合（Ｓ２００：再送パケット）、そのパケットを再送パケット受信部１１６に渡して、ステップＳ５００に進む。
【００５２】
ステップＳ３００では、データパケット受信処理を行い、本フローを終了する。データパケット受信処理は、通常はデータパケットをデータ蓄積部１１７に格納する処理である。ただし、受信しているデータパケットにパケットロスが発生した場合は、データパケット受信処理は、損失したデータについて他の特定の受信ノードに再送要求を行う処理となる。データパケット受信処理については、図８を用いて後述する。
【００５３】
ステップＳ４００では、再送要求パケット受信処理を行い、本フローを終了する。再送要求パケット受信処理は、再送要求パケットによって再送要求されたデータを再送要求元に送信する処理である。再送要求パケット受信処理については、図９を用いて後述する。
【００５４】
ステップＳ５００では、再送パケット受信処理を行い、本フローを終了する。再送パケット受信処理は、通常は再送パケットのデータをデータ蓄積部１１７に格納する処理である。再送パケット受信処理については、図１０を用いて後述する。
【００５５】
次に、データパケット受信処理（ステップＳ３００）について、図８に示すフローチャートを用いて説明する。
【００５６】
まず、ステップＳ３０１において、パケットロス検知部１１２は、パケットチェック部１１１から渡されたデータパケットに含まれるデータ（またはデータパケット全体）をデータ蓄積部１１７に格納する。
【００５７】
次いで、ステップＳ３０２において、パケットロス検知部１１２は、パケットロスが発生しているか否かを判定する。パケットロス検知部１１２は、パケットロスが発生していないと判定した場合（Ｓ３０２：ＮＯ）、本フローを終了する。一方、パケットロス検知部１１２は、パケットロスが発生したと判定した場合（Ｓ３０２：ＹＥＳ）、パケットロスが発生したデータパケットのシーケンス番号と、保持している（最後に受信した）データパケットとを再送要求先選択部１１３に渡し、ステップＳ３０３に進む。
【００５８】
ステップＳ３０３において、再送要求先選択部１１３は、パケットロス検知部１１２から渡されたデータパケットのビットマップとアドレスリストから、再送要求先とする受信ノードを選択する。また、再送要求先選択部１１３は、再送要求を行うデータパケットのシーケンス番号を、データ蓄積部１１７に格納された表に記載する。そして、再送要求先選択部１１３は、選択した再送要求先の受信ノードのＩＰアドレスおよび再送要求を行うデータパケットのシーケンス番号を再送要求パケット作成部１１４に通知する。
【００５９】
次いで、ステップＳ３０４において、再送要求パケット作成部１１４は、再送要求先選択部１１３から通知されたＩＰアドレスおよびシーケンス番号から、ユニキャスト方式の再送要求パケットを作成する。そして、再送要求パケット作成部１１４は、作成した再送要求パケットをパケット送信部１１８に渡す。
【００６０】
次いで、ステップＳ３０５において、パケット送信部１１８は、再送要求パケット作成部１１４が作成した再送要求パケットを再送要求先の受信ノードに送信し、本フローを終了する。
【００６１】
次に、再送要求パケット受信処理（ステップＳ４００）について、図９に示すフローチャートを用いて説明する。
【００６２】
まず、ステップＳ４０１において、再送パケット作成部１１５は、パケットチェック部１１１から渡された再送要求パケットに含まれる再送要求されているデータパケットのシーケンス番号を取得する。そして、再送パケット作成部１１５は、そのシーケンス番号のデータがデータ蓄積部１１７に格納されているか否かを判定する。そして、再送パケット作成部１１５は、データがデータ蓄積部１１７に格納されていると判定した場合（Ｓ４０１：ＹＥＳ）、ステップＳ４０４に進む。一方、再送パケット作成部１１５は、データが格納されていないと判定した場合（Ｓ４０１：ＮＯ）、ステップＳ４０２に進む。
【００６３】
ステップＳ４０２において、再送パケット作成部１１５は、再送要求されているデータパケットを受信するため任意の時間待機する。
【００６４】
次いで、ステップＳ４０３において、再送パケット作成部１１５は、再送要求されているデータパケットのデータがデータ蓄積部１１７に格納されているか否かを再度判定する。そして、再送パケット作成部１１５は、データがデータ蓄積部１１７に格納されていると判定した場合（Ｓ４０３：ＹＥＳ）、ステップＳ４０４に進む。一方、再送パケット作成部１１５は、データがデータ蓄積部１１７に格納されていないと判定した場合（Ｓ４０３：ＮＯ）、ステップＳ４０２に戻る。したがって、再送パケット作成部１１５は、再送要求されたデータパケットのデータがデータ蓄積部１１７に格納されるまで、ステップＳ４０２とステップＳ４０３とを繰り返す。
【００６５】
ステップＳ４０４において、再送パケット作成部１１５は、再送パケットを作成する。このとき、再送パケット作成部１１５は、再送要求パケットに記載されている再送要求元アドレスを再送パケットの宛先アドレスとする。また、再送パケット作成部１１５は、再送要求パケットに記載されたシーケンス番号と、そのシーケンス番号に対応したデータとを再送パケットに格納する。そして、再送パケット作成部１１５は、作成した再送パケットをパケット送信部１１８に渡す。
【００６６】
次いで、ステップＳ４０５において、パケット送信部１１８は、再送パケット作成部１１５が作成した再送パケットを再送要求元の受信ノード（通信端末装置）に送信し、本フローを終了する。
【００６７】
次に、再送パケット受信処理（ステップＳ５００）について、図１０に示すフローチャートを用いて説明する。
【００６８】
まず、ステップＳ５０１において、再送パケット受信部１１６は、再送パケットに含まれるシーケンス番号を取得する。そして、再送パケット受信部１１６は、データ蓄積部１１７に格納された再送要求を行ったシーケンス番号の表に同一のシーケンス番号が記載されているか否かを判定する。そして、再送パケット受信部１１６は、同一のシーケンス番号が記載されていると判定した場合（Ｓ５０１：ＹＥＳ）、ステップＳ５０２に進む。一方、再送パケット受信部１１６は、同一のシーケンス番号が記載されていないと判定した場合（Ｓ５０１：ＮＯ）、ステップＳ５０３に進む。
【００６９】
ステップＳ５０２において、再送パケット受信部１１６は、受信した再送パケットのデータをデータ蓄積部１１７に格納する。そして、再送パケット受信部１１６は、再送要求を行ったデータパケットのシーケンス番号の表から再送要求したデータパケットのシーケンス番号を削除し、本フローを終了する。
【００７０】
ステップＳ５０３において、再送パケット受信部１１６は、受信した再送パケットを破棄し、本フローを終了する。
【００７１】
最後に、図１を用いて、通信ネットワーク２００における通信端末装置１００〜１０４の動作を説明する。送信ノード３００は、説明の便宜上、受信ノードＡ１００、受信ノードＣ１０２および受信ノードＤ１０３に同一のデータパケットを配信するものとする。また、ルータ４００〜４０２は、明示的マルチキャスト方式に対応しているものとする。
【００７２】
まず、送信ノード３００は、受信ノードＡ１００、受信ノードＣ１０２および受信ノードＤ１０３のＩＰアドレスをアドレスリストに含むデータパケットを作成する。ここで、送信ノード３００は、図３に示すデータパケットを作成したものとする（ただし、ビットマップ５０５の値は「１１１」となる）。そして、送信ノード３００は、作成したデータパケットをルータ４００に送信する。
【００７３】
ルータ４００は、送信ノード３００からデータパケットを受信すると、データパケットのアドレスリストに記載された受信ノードＡ１００、受信ノードＣ１０２および受信ノードＤ１０３のＩＰアドレスについて送信インターフェースを調べる。この場合、ルータ４００は、受信ノードＡ１００およびルータ４０１にデータパケットを送信することになる。ルータ４００は、送信先のインターフェースの数（すなわち２つ）データパケットを複製する。そして、ルータ４００は、受信ノードＡ１００およびルータ４０１に複製したデータパケットを送信する。このとき、ルータ４００は、受信ノードＡ１００に送信するデータパケットのビットマップにおいて、受信ノードＣ１０２のＩＰアドレスおよび受信ノードＤ１０３のＩＰアドレスに対応するビットを配送済みにする（すなわちビットマップ５０５は「１００」となる）。同様に、ルータ４００は、ルータ４０１に送信するデータパケットのビットマップにおいて、受信ノードＡ１００のＩＰアドレスに対応するビットを配送済みにする（すなわちビットマップ５０５は「０１１」となる）。
【００７４】
受信ノードＡ１００は、ルータ４００から受信したデータパケットのデータおよびシーケンス番号をデータ蓄積部１１７に格納する（通常のデータパケット受信処理）。
【００７５】
ルータ４０１は、上記ルータ４００と同様に、受信ノードＣ１０２およびルータ４０２にデータパケット（ビットマップ５０５はそれぞれ「０１０」、「００１」となる）を送信する（マルチキャスト通信）。
【００７６】
受信ノードＣ１０２は、ルータ４０１から受信したデータパケットのデータおよびシーケンス番号をデータ蓄積部１１７に格納する（通常のデータパケット受信処理）。
【００７７】
ルータ４０２は、受信ノードＤ１０３にデータパケットを送信するが、ここでルータ４０２−受信ノードＤ間でパケットロスが発生したものとする。
【００７８】
受信ノードＤ１０３は、送信ノード３００から受信しているデータパケットにパケットロスが発生したことを検知する。受信ノードＤ１０３は、パケットロスが発生したデータパケット（例えばシーケンス番号「１６」）の次に受信したデータパケット（例えばシーケンス番号「１７」）のビットマップ（「００１」）およびアドレスリストを調べる。そして、受信ノードＤ１０３は、このデータパケット（シーケンス番号「１７」）が配送済みの受信ノードを再送要求先とする再送要求パケットを作成する。ここでは、受信ノードＤ１０３は、再送要求先の受信ノードとして受信ノードＡ１００を選択したものとして、図５（Ａ）に示す再送要求パケットを作成したものとする。そして、受信ノードＤ１０３は、作成した再送要求パケットをルータ４０２に送信する（パケットロス発生時のデータパケット受信処理）。
【００７９】
ルータ４０２は、受信した再送要求パケットをルータ４０１に送信する（ユニキャスト通信）。
【００８０】
ルータ４０１は、受信した再送要求パケットをルータ４００に送信する（ユニキャスト通信）。
【００８１】
ルータ４００は、受信した再送要求パケットを受信ノードＡ１００に送信する（ユニキャスト通信）。
【００８２】
受信ノードＡ１００は、ルータ４００から受信した再送要求パケットに含まれるシーケンス番号（例えば「１６」）および再送要求元アドレス（受信ノードＤのＩＰアドレス）を取得する。そして、受信ノードＡ１００は、受信ノードＤ１０３を送信先とする、再送データを格納した再送パケットを作成する。ここでは、受信ノードＡ１００は、図６に示す再送パケットを作成したものとする。受信ノードＡ１００は、作成した再送パケットをルータ４００に送信する（再送要求パケット受信処理）。
【００８３】
ルータ４００は、受信した再送パケットをルータ４０１に送信する（ユニキャスト通信）。
【００８４】
ルータ４０１は、受信した再送パケットをルータ４０２に送信する（ユニキャスト通信）。
【００８５】
ルータ４０２は、受信した再送パケットを受信ノードＤ１０３に送信する（ユニキャスト通信）。
【００８６】
受信ノードＤ１０３は、ルータ４０２から受信した再送パケットに含まれる再送データおよびシーケンス番号をデータ蓄積部に格納する（再送パケット受信処理）。
【００８７】
以上説明したように、実施の形態１に係る通信端末装置は、受信したデータパケットのヘッダに含まれるビットマップとアドレスリストから再送要求を行う受信ノードのＩＰアドレスを選択し、選択した受信ノードに対してユニキャスト通信により再送要求を行う。したがって、グループ内のある受信ノードにパケットロスが発生したとしても、従来の方法のようにすべての受信ノードが再送要求パケット受信処理を行うのではなく、選択された受信ノードのみが再送要求パケット受信処理を行う。このように、実施の形態１に係る通信端末装置は、ネットワーク全体の帯域および他の受信ノードに負荷をかけることなく再送要求を行うことができる。
【００８８】
（実施の形態２）
実施の形態１では、ある受信ノードから再送要求パケットを受信した場合、すぐに再送パケットを作成する例を示した。実施の形態２では、ある受信ノードから再送要求パケットを受信しても、同一データに対する再送要求パケットを他の受信ノードから受信するために、一定時間待機した後に再送パケットを作成する例を示す。
【００８９】
図１１は、本発明の実施の形態２に係る通信端末装置の構成を示す図である。実施の形態１に係る通信端末装置と同じ構成要素については同一の符号を付し、重複箇所の説明を省略する。
【００９０】
図１１において、通信端末装置１５０は、図２の通信端末装置１００の構成に加えて、再送要求パケット待機部１１９をさらに備えている。再送要求先選択部１１３、再送要求パケット待機部１１９、再送要求パケット作成部１１４および再送パケット作成部１１５以外の構成要素は、実施の形態１と同様のものなのでここでは説明しない。
【００９１】
再送要求先選択部１１３は、実施の形態１の再送要求先選択部と同じように再送要求先の受信ノードのＩＰアドレスを選択する。そして、再送要求先選択部１１３は、再送要求先として選択した受信ノードのＩＰアドレスおよびパケットロスが発生したデータパケットのシーケンス番号を再送要求パケット待機部１１９に通知する。
【００９２】
再送要求パケット待機部１１９は、再送要求先選択部１１３から再送要求先の受信ノードのＩＰアドレスおよびパケットロスが発生したデータパケットのシーケンス番号が通知された後、同じシーケンス番号のデータの再送を要求する再送要求パケットを受信するために所定の時間待機する（再送要求パケット受信待機状態）。そして、再送要求パケット待機部１１９は、再送要求先選択部１１３から通知された再送要求先の受信ノードのＩＰアドレスおよびパケットロスが発生したデータパケットのシーケンス番号を再送要求パケット作成部１１４に通知する。このとき、再送要求パケット待機部１１９は、待機中に同じシーケンス番号のデータの再送を要求する再送要求パケットを再送パケット作成部１１５から渡された場合、この再送要求パケットに記載されている再送要求元のＩＰアドレスも再送要求パケット作成部１１４に通知する。
【００９３】
再送要求パケット作成部１１４は、実施の形態１の再送要求パケット作成部が有する機能に加え、さらに、再送要求パケット待機部１１９から複数の再送要求元のＩＰアドレスを通知された場合に、複数の再送元のＩＰアドレスを再送要求パケットに再送要求元アドレスとして記載する。
【００９４】
ここで、複数の再送元のＩＰアドレスが記載された再送要求パケットについて説明する。図１２は、複数の再送元のＩＰアドレスが記載された再送要求パケットの構成の一例を示す図である。図１２において、再送要求パケット７１０は、ヘッダ部７１１とペイロード７１２とを有する。ヘッダ部７１１には、宛先アドレス７１３、再送要求するデータパケットのシーケンス番号７１４、再送要求元となる受信ノードのＩＰアドレス７１６、７１７が記載されているアドレスリスト７１５が含まれる。ヘッダ部７１１は他のヘッダを有していてもよいが、説明の便宜上ここでは説明しない。
【００９５】
再送要求パケット作成部１１４の説明に戻る。再送要求パケット作成部１１４は、再送要求パケット待機部１１９から複数の再送要求元のＩＰアドレスを通知された場合に、すべての再送要求元のＩＰアドレスをアドレスリストに記載したユニキャスト方式の再送要求パケットを作成する。
【００９６】
再送パケット作成部１１５は、実施の形態１の再送パケット作成部が有する機能に加え、さらに、明示的マルチキャスト方式の再送パケットを作成する。
【００９７】
ここで、明示的マルチキャスト方式の再送パケットについて説明する。図１３は、明示的マルチキャスト方式の再送パケットの構成の一例を示す図である。図１３において、再送パケット８１０は、ヘッダ部８１１と、再送データを含むペイロード８１２とを有する。ヘッダ部８１１には、ルーティングヘッダ８１３およびシーケンス番号８１４が含まれる。ルーティングヘッダ８１３には、配送済みか否かを示すビットマップ８１５と、再送先となる受信ノードのＩＰアドレスが１つ以上記載されているアドレスリスト８１６とが含まれている。ヘッダ部８１１は他のヘッダを有していてもよいが、説明の便宜上ここでは説明しない。
【００９８】
再送パケット作成部１１５の説明に戻る。再送パケット作成部１１５は、複数の再送要求元のＩＰアドレスを含む再送要求パケットを受信した場合、すべての再送要求元のＩＰアドレスをアドレスリストに記載した明示的マルチキャスト方式の再送パケットを作成する。また、再送パケット作成部１１５は、再送要求パケット待機部１１９が再送要求パケット受信待機状態のときにパケットチェック部１１１から再送要求パケットを渡された場合、渡された再送要求パケットを再送要求パケット待機部１１９に渡す。
【００９９】
以下、上述のように構成された通信端末装置１５０の動作を説明する。
【０１００】
通信端末装置１５０は、パケットを受信すると、受信したパケットの種類によって、データパケット受信処理、再送要求パケット受信処理および再送パケット受信処理を行う。この動作は、実施の形態１と同様のものなのでここでは説明しない（図７参照）。
【０１０１】
次に、実施の形態１と異なる、データパケット受信処理および再送要求パケット受信処理について説明する。再送パケット受信処理は実施の形態１と同様のものなのでここでは説明しない。
【０１０２】
初めにデータパケット受信処理（ステップＳ３００）について、図１４に示すフローチャートを用いて説明する。
【０１０３】
まず、ステップＳ３１１で、パケットロス検知部１１２は、パケットチェック部１１１から渡されたデータパケットに含まれるデータ（またはデータパケット全体）をデータ蓄積部１１７に格納する。
【０１０４】
次いで、ステップＳ３１２において、パケットロス検知部１１２は、パケットロスが発生しているか否かを判定する。そして、パケットロス検知部１１２は、パケットロスが発生していないと判定した場合（Ｓ３１２：ＮＯ）、本フローを終了する。一方、パケットロス検知部１１２は、パケットロスが発生したと判定した場合（Ｓ３１２：ＹＥＳ）、パケットロスが発生したデータパケットのシーケンス番号と、保持している（最後に受信した）データパケットとを再送要求先選択部１１３に渡し、ステップＳ３１３に進む。
【０１０５】
ステップＳ３１３において、再送要求先選択部１１３は、パケットロス検知部１１２から渡されたデータパケットのビットマップとアドレスリストから、再送要求先とする受信ノードを選択する。また、再送要求先選択部１１３は、再送要求を行うデータパケットのシーケンス番号を、データ蓄積部１１７に格納された表に記録する。そして、再送要求先選択部１１３は、選択した再送要求先の受信ノードのＩＰアドレスおよび再送要求を行うデータパケットのシーケンス番号を再送要求パケット待機部１１９に通知する。
【０１０６】
次いで、ステップＳ３１４において、再送要求パケット待機部１１９は、再送要求先選択部１１３から再送要求先の受信ノードのＩＰアドレスおよびパケットロスが発生したデータパケットのシーケンス番号が通知された後、同じシーケンス番号のデータの再送を要求する再送要求パケットを受信するまで、所定の時間待機する（再送要求パケット受信待機処理）。再送要求パケット受信待機処理については、図１５を用いて後述する。再送要求パケット受信待機処理の後、再送要求パケット待機部１１９は、再送要求先選択部１１３から通知された再送要求先の受信ノードのＩＰアドレスおよびパケットロスとなったデータパケットのシーケンス番号を再送要求パケット作成部１１４に通知する。また、再送要求パケット待機部１１９は、待機中に同じシーケンス番号のデータの再送を要求する再送要求パケットを再送パケット作成部１１５から渡された場合、この再送要求パケットに含まれる再送要求元のＩＰアドレスも再送要求パケット作成部１１４に通知する。
【０１０７】
次いで、ステップＳ３１５において、再送要求パケット作成部１１４は、再送要求パケット待機部１１９から通知されたＩＰアドレスおよびシーケンス番号から、再送要求パケットを作成する。このとき、再送要求パケット作成部１１４は、再送要求パケット待機部１１９から複数の再送要求元のＩＰアドレスを通知された場合、すべての再送元のＩＰアドレスを再送要求元アドレスとして記載する。そして、再送要求パケット作成部１１４は、作成した再送要求パケットをパケット送信部１１８に送る。
【０１０８】
次いで、ステップＳ３１６において、パケット送信部１１８は、再送要求パケット作成部１１４が作成した再送要求パケットを再送要求先の受信ノードに送信し、本フローを終了する。
【０１０９】
次に、再送要求パケット受信待機処理（ステップＳ３１４）について、図１５に示すフローチャートを用いて説明する。
【０１１０】
まず、ステップＳ６０１において、再送要求パケット待機部１１９は、再送要求先選択部１１３から再送要求先の受信ノードのＩＰアドレスおよびパケットロスとなったデータパケットのシーケンス番号が通知された後、再送要求パケット受信待機状態に移行する。
【０１１１】
次いで、ステップＳ６０２において、再送要求パケット待機部１１９は、再送パケット作成部１１５から再送要求パケットを受け取っているか否かを判定する。そして、再送要求パケット待機部１１９は、再送要求パケットを受け取っていると判定した場合（Ｓ６０２：ＹＥＳ）、ステップＳ６０３に進む。一方、再送要求パケット待機部１１９は、再送要求パケットを受け取っていないと判定した場合（Ｓ６０２：ＮＯ）、ステップＳ６０５に進む。
【０１１２】
ステップＳ６０３において、再送要求パケット待機部１１９は、再送パケット作成部１１５から受け取った再送要求パケットに含まれる再送を要求されているデータパケットのシーケンス番号が、パケットロス検知部１１２がパケットロスを検知したデータパケットのシーケンス番号と同一であるか否かを判定する。そして、再送要求パケット待機部１１９は、２つのシーケンス番号が同一であると判定した場合（Ｓ６０３：ＹＥＳ）、ステップＳ６０４に進む。一方、再送要求パケット待機部１１９は、２つのシーケンス番号が同一でないと判定した場合（Ｓ６０３：ＮＯ）、ステップＳ６０５に進む。
【０１１３】
ステップＳ６０４において、再送要求パケット待機部１１９は、再送パケット作成部１１５から受け取った再送要求パケットに含まれる再送要求元アドレスをすべて取得する。
【０１１４】
ステップＳ６０５において、再送要求パケット待機部１１９は、再送要求パケット待機状態に移行してから一定時間を経過したか否かを判定する。そして、再送要求パケット待機部１１９は、一定時間を経過してないと判定した場合（Ｓ６０５：ＮＯ）、ステップＳ６０２に戻る。一方、再送要求パケット待機部１１９は、一定時間を経過したと判定した場合（Ｓ６０５：ＹＥＳ）、ステップＳ６０４で取得した再送要求元アドレスを再送要求パケット作成部１１４に通知し、本フローを終了する。
【０１１５】
次に、再送要求パケット受信処理について、図１６に示すフローチャートを用いて説明する。
【０１１６】
まず、ステップＳ４１１において、再送パケット作成部１１５は、パケットチェック部１１１から渡された再送要求パケットに含まれる再送要求されているデータパケットのシーケンス番号を取得する。そして、再送パケット作成部１１５は、そのシーケンス番号のデータがデータ蓄積部１１７に格納されているか否かを判定する。そして、再送パケット作成部１１５は、データがデータ蓄積部１１７に格納されていないと判定した場合（Ｓ４１１：ＮＯ）、ステップＳ４１２に進む。一方、再送パケット作成部１１５は、データが格納されていると判定した場合（Ｓ４１１：ＹＥＳ）、ステップＳ４１６に進む。
【０１１７】
ステップＳ４１２において、再送パケット作成部１１５は、再送要求パケット待機部１１９が再送要求パケット受信待機状態か否かを判定する。そして、再送パケット作成部１１５は、再送要求パケット待機部１１９が再送要求パケット受信待機状態であると判定した場合（Ｓ４１２：ＹＥＳ）、ステップＳ４１３に進む。一方、再送パケット作成部１１５は、再送要求パケット待機部１１９が再送要求パケット受信待機状態でないと判定した場合（Ｓ４１２：ＮＯ）、ステップＳ４１４に進む。
【０１１８】
ステップＳ４１３において、再送パケット作成部１１５は、再送要求パケット受信待機状態の間に再送要求パケットを受信した場合、受信した再送要求パケットを再送要求パケット待機部１１９に渡す。そして、再送パケット作成部１１５は、再送要求パケット待機部１１９が再送要求パケット受信待機状態を終了したとき、ステップＳ４１４に進む。
【０１１９】
ステップＳ４１４において、再送パケット作成部１１５は、再送要求されているデータパケットの再送パケットを受信するため、任意の時間待機する。
【０１２０】
次いで、ステップＳ４１５において、再送パケット作成部１１５は、再送要求されているデータパケットのデータがデータ蓄積部１１７に格納されているか否かを再度判定する。そして、再送パケット作成部１１５は、データがデータ蓄積部１１７に格納されていると判定した場合（Ｓ４１５：ＹＥＳ）、ステップＳ４１６に進む。一方、再送パケット作成部１１５は、データがデータ蓄積部１１７に格納されていないと判定した場合（Ｓ４１５：ＮＯ）、ステップＳ４１４に戻る。したがって、再送パケット作成部１１５は、再送要求されたデータパケットのデータがデータ蓄積部１１７に格納されるまで、ステップＳ４１４とステップＳ４１５とを繰り返す。
【０１２１】
ステップＳ４１６において、再送パケット作成部１１５は、再送要求元のＩＰアドレスが再送要求パケットに複数記載されているか否かを判定する。そして、再送パケット作成部１１５は、再送要求元のＩＰアドレスが１つであると判定した場合（Ｓ４１６：ＮＯ）、ステップＳ４１７に進む。一方、再送パケット作成部１１５は、再送要求元のＩＰアドレスが複数あると判定した場合（Ｓ４１６：ＹＥＳ）、ステップＳ４１８に進む。
【０１２２】
ステップＳ４１７において、再送パケット作成部１１５は、再送要求元アドレスを宛先アドレスとするユニキャスト方式の再送パケットを作成する。そして、再送パケット作成部１１５は、作成した再送パケットをパケット送信部１１８に渡す。
【０１２３】
ステップＳ４１８において、再送パケット作成部１１５は、すべての再送要求元アドレスをアドレスリストに記載した明示的マルチキャスト方式の再送パケットを作成する。そして、再送パケット作成部１１５は、作成した再送パケットをパケット送信部１１８に渡す。
【０１２４】
ステップＳ４１９において、パケット送信部１１８は、再送パケット作成部１１５が作成した再送パケットを再送要求元の受信ノード（通信端末装置）に送信し、本フローを終了する。
【０１２５】
以上説明したように、実施の形態２に係る通信端末装置は、あるシーケンス番号のデータの再送を要求する再送要求パケットを作成する際に、同じシーケンス番号のデータの再送を要求する再送要求パケットを他の受信ノードから受信した場合、自ノードのＩＰアドレスだけでなく、その再送要求パケットに再送要求元として記載されているＩＰアドレスも再送要求元として再送要求パケットに記載する。また、実施の形態２に係る通信端末装置は、複数の再送要求元アドレスが記載されている再送要求パケットを受信した場合、すべての再送要求元アドレスを宛先アドレスとする明示的マルチキャスト方式の再送パケットを作成し、作成した再送パケットを送信する。本実施の形態によれば、実施の形態１の効果に加えて、ネットワーク全体の帯域の消費をさらに低減することができる。
【０１２６】
（実施の形態３）
実施の形態１では、パケットロスを検知した場合、再送要求元アドレスとして自ノードのＩＰアドレスを再送要求パケットに記載する例を示した。実施の形態３では、パケットロスを検知した場合、すべての未配送の受信ノードのＩＰアドレスを再送要求パケットに記載する例を示す。
【０１２７】
図１７は、本発明の実施の形態３に係る通信端末装置の構成を示す図である。実施の形態１に係る通信端末装置と同じ構成要素については同一の符号を付し、重複箇所の説明を省略する。
【０１２８】
図１７において、通信端末装置１６０は、図２の通信端末装置１００の構成に加えて、数珠繋ぎ配送チェック部１２０をさらに備えている。再送要求先選択部１１３、数珠繋ぎ配送チェック部１２０、再送要求パケット作成部１１４および再送パケット作成部１１５以外の構成要素は、実施の形態１と同様のものなのでここでは説明しない。
【０１２９】
再送要求先選択部１１３は、実施の形態１の再送要求先選択部と同じように再送要求先の受信ノードのＩＰアドレスを選択する。そして、再送要求先選択部１１３は、再送要求先として選択した受信ノードのＩＰアドレス、パケットロスが発生したデータパケットのシーケンス番号および保持している（最後に受信した）データパケットを数珠繋ぎ配送チェック部１２０に渡す。
【０１３０】
数珠繋ぎ配送チェック部１２０は、再送要求先選択部１１３から渡されたデータパケットを自ノードが数珠繋ぎ配送によって他の受信ノードに転送しているか否かを判定する。数珠繋ぎ配送チェック部１２０は、数珠繋ぎ配送によって転送しているか否かを判定するには、受信したデータパケットを自ノードが別の受信ノードに転送しているか否かを検知してもよいし、ビットマップで自ノードを示すビット以外に未配送を示すビットが１つでもあれば数珠繋ぎ配送を行っていると判定してもよいし、ルータに自ノードが数珠繋ぎを行う受信ノードか否かを問い合わせてもよいし、データパケットに数珠繋ぎ配送を行う受信ノードか否かを示すフラグを立てて、そのフラグを調べることで数珠繋ぎ配送を検知してもよい。そして、数珠繋ぎ配送チェック部１２０は、数珠繋ぎ配送によって転送していないと判定した場合、再送要求先選択部１１３から通知された再送要求先の受信ノードのＩＰアドレスおよびパケットロスとなったデータパケットのシーケンス番号を再送要求パケット作成部１１４に通知する。一方、数珠繋ぎ配送チェック部１２０は、数珠繋ぎ配送によって転送されていると判定した場合、再送要求先選択部１１３から通知された再送要求先の受信ノードのＩＰアドレスおよびパケットロスとなったデータパケットのシーケンス番号に加え、再送要求先選択部１１３から渡されたデータパケットのアドレスリストに記載された複数のＩＰアドレスのうち、自ノードのＩＰアドレスより後ろに記載されたＩＰアドレスも再送要求元のＩＰアドレスとして再送要求パケット作成部１１４に通知する。
【０１３１】
再送要求パケット作成部１１４は、実施の形態１の再送要求パケット作成部が有する機能に加え、さらに、数珠繋ぎ配送チェック部１２０から複数の再送要求元のＩＰアドレスを通知された場合に、すべての再送要求元のＩＰアドレスを再送要求パケットに再送要求元アドレスとして記載する。
【０１３２】
再送パケット作成部１１５は、実施の形態１の再送パケット作成部が有する機能に加え、さらに、明示的マルチキャスト方式の再送パケットを作成する。再送パケット作成部１１５は、複数の再送先のＩＰアドレスが記載された再送要求パケットを受信した場合、すべての再送先のＩＰアドレスをアドレスリストに記載した明示的マルチキャスト方式の再送パケットを作成する。
【０１３３】
以下、上述のように構成された通信端末装置１６０の動作を説明する。
【０１３４】
通信端末装置１６０は、パケットを受信すると、受信したパケットの種類によって、データパケット受信処理、再送要求パケット受信処理および再送パケット受信処理を行う。この動作は、実施の形態１と同様のものなのでここでは説明しない（図７参照）。
【０１３５】
次に、実施の形態１と異なる、データパケット受信処理および再送要求パケット受信処理について説明する。再送パケット受信処理は実施の形態１と同様のものなのでここでは説明しない。
【０１３６】
初めにデータパケット受信処理について、図１８に示すフローチャートを用いて説明する。
【０１３７】
まず、ステップＳ３２１において、パケットロス検知部１１２は、パケットチェック部１１１から渡されたデータパケットに含まれるデータ（またはデータパケット全体）をデータ蓄積部１１７に格納する。
【０１３８】
次いで、ステップＳ３２２において、パケットロス検知部１１２は、パケットロスが発生しているか否かを判定する。そして、パケットロス検知部１１２は、パケットロスが発生していないと判定した場合（Ｓ３２２：ＮＯ）、本フローを終了する。一方、パケットロス検知部１１２は、パケットロスが発生したと判定した場合（Ｓ３２２：ＹＥＳ）、損失したデータパケットのシーケンス番号と、保持している（最後に受信した）データパケットとを再送要求先選択部１１３に渡し、ステップＳ３２３に進む。
【０１３９】
ステップＳ３２３において、再送要求先選択部１１３は、パケットロス検知部１１２から渡されたデータパケットのビットマップとアドレスリストから、再送要求先とする受信ノードを選択する。また、再送要求先選択部１１３は、再送要求を行うデータパケットのシーケンス番号を、データ蓄積部１１７に格納された表に記録する。そして、再送要求先選択部１１３は、選択した再送要求先の受信ノードのＩＰアドレスおよび再送要求を行うデータパケットのシーケンス番号ならびに保持している（最後に受信した）データパケットを数珠繋ぎ配送チェック部１２０に渡す。
【０１４０】
次いで、ステップＳ３２４において、数珠繋ぎ配送チェック部１２０は、再送要求先選択部１１３から渡されたデータパケットが数珠繋ぎ配送によって転送されているか否かを判定する。そして、数珠繋ぎ配送チェック部１２０は、数珠繋ぎ配送によって転送されていると判定した場合（Ｓ３２４：ＹＥＳ）、ステップＳ３２５に進む。一方、数珠繋ぎ配送チェック部１２０は、数珠繋ぎ配送によって転送されていないと判定した場合（Ｓ３２４：ＮＯ）、ステップＳ３２６に進む。
【０１４１】
ステップＳ３２５において、数珠繋ぎ配送チェック部１２０は、再送要求先の受信ノードのＩＰアドレスおよびパケットロスとなったデータパケットのシーケンス番号ならびに再送要求先選択部１１３から渡されたデータパケットのアドレスリストに記載された複数のＩＰアドレスのうち、自ノードのＩＰアドレスより後ろに記載されたＩＰアドレスを再送要求パケット作成部１１４に通知する。
【０１４２】
ステップＳ３２６において、再送要求パケット作成部１１４は、数珠繋ぎ配送チェック部１２０から通知されたＩＰアドレスおよびシーケンス番号から、再送要求パケットを作成する。このとき、再送要求パケット作成部１１４は、数珠繋ぎ配送チェック部１２０から複数の再送要求元のＩＰアドレスを通知された場合、すべての再送要求元のＩＰアドレスを再送要求パケットに再送要求元アドレスとして記載する。そして、再送要求パケット作成部１１４は、作成した再送要求パケットをパケット送信部１１８に送る。
【０１４３】
次いで、ステップＳ３２７において、パケット送信部１１８は、再送要求パケット作成部１１４が作成した再送要求パケットを再送要求先の受信ノードに対してユニキャスト通信で送信し、本フローを終了する。
【０１４４】
次に、再送要求パケット受信処理について、図１９に示すフローチャートを用いて説明する。
【０１４５】
まず、ステップＳ４２１において、再送パケット作成部１１５は、パケットチェック部１１１から渡された再送要求パケットに含まれる再送要求されているデータパケットのシーケンス番号を取得する。そして、再送パケット作成部１１５は、そのシーケンス番号のデータがデータ蓄積部１１７に格納されているか否かを判定する。そして、再送パケット作成部１１５は、データがデータ蓄積部１１７に格納されていないと判定した場合（Ｓ４２１：ＮＯ）、ステップＳ４２２に進む。一方、再送パケット作成部１１５は、データが格納されていると判定した場合（Ｓ４２１：ＹＥＳ）、ステップＳ４２４に進む。
【０１４６】
ステップＳ４２２において、再送パケット作成部１１５は、再送要求されているデータパケットを受信するため任意の時間待機する。
【０１４７】
次いで、ステップＳ４２３において、再送パケット作成部１１５は、再送要求されているデータパケットのデータがデータ蓄積部１１７に格納されているか否かを再度判定する。そして、再送パケット作成部１１５は、データがデータ蓄積部１１７に格納されていると判定した場合（Ｓ４２３：ＹＥＳ）、ステップＳ４２４に進む。一方、再送パケット作成部１１５は、データが格納されていないと判定した場合（Ｓ４２３：ＮＯ）、ステップＳ４２２に戻る。したがって、再送パケット作成部１１５は、再送要求されたデータパケットのデータがデータ蓄積部１１７に格納されるまで、ステップＳ４２２とステップＳ４２３とを繰り返す。
【０１４８】
ステップＳ４２４において、再送パケット作成部１１５は、再送要求元のＩＰアドレスが再送要求パケットに複数記載されているか否かを判定する。そして、再送パケット作成部１１５は、再送要求元のＩＰアドレスが１つと判定した場合（Ｓ４２４：ＮＯ）、ステップＳ４２５に進む。一方、再送パケット作成部１１５は、再送要求元のＩＰアドレスが複数あると判定した場合（Ｓ４２４：ＹＥＳ）、ステップＳ４２６に進む。
【０１４９】
ステップＳ４２５において、再送パケット作成部１１５は、再送要求元アドレスを宛先アドレスとするユニキャスト方式の再送パケットを作成する。そして、再送パケット作成部１１５は、作成した再送パケットをパケット送信部１１８に渡す。
【０１５０】
ステップＳ４２６において、再送パケット作成部１１５は、すべての再送要求元アドレスをアドレスリストに記載した明示的マルチキャスト方式の再送パケットを作成する。そして、再送パケット作成部１１５は、作成した再送パケットをパケット送信部１１８に渡す。
【０１５１】
ステップＳ４２７において、パケット送信部１１８は、再送パケット作成部１１５が作成した再送パケットを再送要求元の受信ノード（通信端末装置）に送信し、本フローを終了する。
【０１５２】
以上説明したように、実施の形態３に係る通信端末装置は、数珠繋ぎ配送を行っている状態でパケットロスを検知した場合に、アドレスリスト中で自ノードのＩＰアドレスより後ろに記載された受信ノードのＩＰアドレスを再送要求元アドレスとして再送要求パケットを作成し、作成した再送要求パケットを送信する。また、実施の形態３に係る通信端末装置は、複数の再送要求元アドレスが記載されている再送要求パケットを受信した場合、すべての再送要求元アドレスを宛先アドレスとする明示的マルチキャスト方式の再送パケットを作成し、作成した再送パケットを送信する。このように、本実施の形態によれば、実施の形態１の効果に加えて、数珠繋ぎ配送が起きている場合により早い再送を行うことができる。
【０１５３】
（実施の形態４）
実施の形態１では、データパケット内のビットマップおよびアドレスリストを用いて再送要求先の受信ノードを選択する例を示した。実施の形態４では、他の受信ノードと情報交換パケットを交換することで他の受信ノードの応答時間をあらかじめ算出し、ビットマップおよびアドレスリストに加えてさらに他の受信ノードの応答時間も用いて再送要求先の受信ノードを選択する例を示す。
【０１５４】
図２０は、本発明の実施の形態４に係る通信端末装置の構成を示す図である。実施の形態１に係る通信端末装置と同じ構成要素については同一の符号を付し、重複箇所の説明を省略する。
【０１５５】
図２０において、通信端末装置１７０は、図２の通信端末装置１００の構成に加えて、情報交換部１２１および再送応答時間計算部１２２をさらに備えている。パケットチェック部１１１、パケットロス検知部１１２、再送要求先選択部１１３、データ蓄積部１１７、パケット送信部１１８、情報交換部１２１および再送応答時間計算部１２２以外の構成要素は、実施の形態１と同様のものなのでここでは説明しない。
【０１５６】
パケットチェック部１１１は、実施の形態１のパケットチェック部と同じように、パケット受信部１１０が受信したパケットの種類を判別する。そして、パケットチェック部１１１は、パケットの種類に応じた出力先にパケットを渡す。
【０１５７】
パケットの種類は、データパケット、再送要求パケット、再送パケット、問合せ用情報交換パケットおよび応答用情報交換パケットがある。データパケット、再送要求パケットおよび再送パケットは、実施の形態１と同様のものなのでここでは説明しない。問合せ用情報交換パケットは、他の受信ノードの応答時間を取得しようとする受信ノード（通信端末装置）が作成するユニキャスト方式のパケットである。応答用情報交換パケットは、問合せ用情報交換パケットを受信した受信ノード（情報端末装置）が作成するユニキャスト方式のパケットである。
【０１５８】
パケットチェック部１１１の説明に戻る。パケットチェック部１１１は、受信したパケットをデータパケットと判別した場合、このパケットをパケットロス検知部１１２に渡す。また、パケットチェック部１１１は、受信したパケットを再送要求パケットと判別した場合、このパケットを再送パケット作成部１１５に渡す。また、パケットチェック部１１１は、受信したパケットを再送パケットと判別した場合、このパケットを再送パケット受信部１１６に渡す。また、パケットチェック部１１１は、受信したパケットを問合せ用情報交換パケットまたは応答用情報交換パケットと判別した場合、このパケットを情報交換部１２１に渡す。
【０１５９】
パケットロス検知部１１２は、実施の形態１のパケットロス検知部が有する機能に加え、パケットチェック部１１１から渡されたデータパケットに記載されたアドレスリストおよびビットマップをデータ蓄積部１１７に格納する。パケットロス検知部１１２は、すでにデータ蓄積部１１７に同一のアドレスリストおよびビットマップが格納されている場合、データパケットに記載されたアドレスリストおよびビットマップを格納しなくてもよい。
【０１６０】
情報交換部１２１は、他の受信ノードとの間の往復遅延時間（Round Trip Time：以下「ＲＴＴ」という）を測定するための問合せ用情報交換パケットを定期的に作成する。このとき、情報交換部１２１は、データ蓄積部１１７に格納されている他の受信ノードのＩＰアドレスを取得し、それらのアドレスを宛先として問合せ用情報交換パケットを作成する。
【０１６１】
ここで、問合せ用情報交換パケットについて説明する。図２１は、問合せ用情報交換パケットの構成の一例を示す図である。図２１において、問合せ用情報交換パケット９００は、ヘッダ部９０１と、ペイロード９０２とを有する。ヘッダ部９０１には、宛先アドレス９０３、問合せ元アドレス９０４および問合せ用情報交換パケットの送信時刻９０５が含まれる。ヘッダ部９０１は、他のヘッダを有していてもよいが、説明の便宜上ここでは説明しない。
【０１６２】
情報交換部１２１の説明に戻る。情報交換部１２１は、データ蓄積部１１７に格納された他の受信ノードのＩＰアドレスを定期的に取得する。そして、情報交換部１２１は、ヘッダ部９０１の宛先アドレス９０３に、取得した他の受信ノードのＩＰアドレスを記載する。また、情報交換部１２１は、問合せ元アドレス９０４に自らのＩＰアドレス（図２１の例では受信ノードＣのＩＰアドレス）を記載する。そして、情報交換部１２１は、作成した問合せ用情報交換パケットをパケット送信部１１８に渡す。
【０１６３】
また、情報交換部１２１は、パケットチェック部１１１から問合せ用情報交換パケットを渡された場合、この問合せ用情報交換パケットの問合せ元アドレス９０４に記載されたＩＰアドレスを宛先とする応答用情報交換パケットを作成する。このとき、情報交換部１２１は、問合せ用情報交換パケットの送信時刻９０５に記載された時刻を応答用情報交換パケットに記載する。そして、情報交換部１２１は、作成した応答用情報交換パケットをパケット送信部１１８に渡す。
【０１６４】
また、情報交換部１２１は、パケットチェック部１１１から応答用情報交換パケットを渡された場合、このパケットを再送応答時間計算部１２２に渡す。
【０１６５】
再送応答時間計算部１２２は、情報交換部１２１から渡された応答用情報交換パケットの送信時刻９０５に記載された時刻と現在時刻との差から、情報交換パケットを交換した受信ノードとの間のＲＴＴを算出する。そして、再送応答時間計算部１２２は、算出したＲＴＴをその受信ノードのＩＰアドレスと共にデータ蓄積部１１７に格納する。このとき、ＲＴＴの急な変化に追随しすぎないように、過去のＲＴＴを加重平均した値をデータ蓄積部１１７に格納するようにしてもよい。
【０１６６】
データ蓄積部１１７は、実施の形態１のデータ蓄積部が有する機能に加え、再送応答時間計算部１２２が算出した各受信ノードのＲＴＴを応答時間として格納する。図２２は、応答時間を記録した表の一例を示す図である。この表は、受信ノードＡ〜Ｃについて応答時間が記録されている例である。この表は、後述する再送要求先選択部１１３によって使用される。
【０１６７】
再送要求先選択部１１３は、実施の形態１の再送要求先選択部と同じように、パケットロス検知部１１２から通知されたパケットロスが発生したデータパケットについて、どの受信ノードに対して再送要求を行うかを選択する。このとき、再送要求先選択部１１３は、パケットロス検知部１１２から渡されたデータパケット内のビットマップおよびアドレスリストに加え、データ蓄積部１１７に格納された各受信ノードの応答時間を記録した表も用いて再送要求を行う受信ノードを選択する。
【０１６８】
再送要求先選択部１１３は、パケットロス検知部１１２から渡されたデータパケット内のビットマップを検索し、配送済みとなっているビットを選択する。そして、再送要求先選択部１１３は、同じデータパケットのアドレスリストを調べ、選んだビットに対応する受信ノードのＩＰアドレスを取得する。ビットマップ中に配送済みとなっているビットが複数存在した場合、再送要求先選択部１１３は、データ蓄積部１１７に格納された各受信ノードの応答時間の表（図２２参照）を調べ、配送済みの各受信ノードの応答時間と再送要求するデータを再生するまでの時間とを比較する。その結果、再送要求先選択部１１３は、すべての受信ノードの応答時間がこのデータを再生するまでの時間を上回っている場合、再送要求をしても再生するまでに再送データを受信することができないと判断し、再送要求を行わない。また、再送要求先選択部１１３は、一つ以上の受信ノードの応答時間がこのデータを再生するまでの時間を下回っている場合、これらの下回っている受信ノードのうちのいずれかを再送要求先として選択する。例えば、再送要求先選択部１１３は、最も応答時間の短い受信ノードを再送要求先として選択すればよい。
【０１６９】
例えば、図２３に示すデータパケット（図３のデータパケットとビットマップ５０５が異なる）のアドレスリスト５０６には、受信ノードＡのＩＰアドレス５０７、受信ノードＣのＩＰアドレス５０８および受信ノードＤのＩＰアドレス５０９が記載されているものとする。また、ビットマップ５０５には、アドレスリスト５０６に記載された受信ノードのＩＰアドレスそれぞれについて配送済みか否かを示すビットが、アドレスリスト５０６内のＩＰアドレス５０７〜５０９の並び順通りに１ビットずつ割当てられているものとする。図２３に示すデータパケットの例では、配送済みを示すビットを０、未配送を示すビットを１とすると、ビットマップは「０・０・１」であるので、受信ノードＡおよび受信ノードＣは配送済み（０）であり、受信ノードＤは未配送（１）であることを示している。この場合、再送要求先選択部１１３は、再送要求先の候補として受信ノードＡおよび受信ノードＣのＩＰアドレスを選択する。そして、再送要求先選択部１１３は、受信ノードＡおよび受信ノードＣの応答時間と再送要求するデータを再生するまでの時間とを比較する。例えば、各受信ノードの応答時間が図２２に示すものであり、再送要求するデータを再生するまでの時間が１５ミリ秒（ｍｓ）の場合、再送要求先選択部１１３は、受信ノードＡの応答時間のみが１５ミリ秒を下回っているので、受信ノードＡを再送要求先として選択する。
【０１７０】
再送要求先選択部１１３は、実施の形態１の再送要求先選択部と同じように、再送要求先として選択した受信ノードのＩＰアドレスおよびパケットロスが発生したデータパケットのシーケンス番号を再送要求パケット作成部１１４に通知する。また、再送要求先選択部１１３は、実施の形態１の再送要求先選択部と同じように、再送要求を行うデータパケットのシーケンス番号を記録する（図４参照）。
【０１７１】
パケット送信部１１８は、実施の形態１のパケット送信部が有する機能に加え、さらに、情報交換部１２１が作成した問合せ用情報交換パケットの送信時刻９０５に現在時刻を記載する。また、パケット送信部１１８は、問合せ用情報交換パケットおよび応答用情報交換パケットをネットワーク２００にユニキャスト通信により送信する。なお、パケット送信部１１８は、問合せ用情報交換パケットの送信時刻９０５をペイロード９０２に記載してもよい。
【０１７２】
以下、上述のように構成された通信端末装置１７０の動作を説明する。通信端末装置１７０の動作は、定期的かつ自発的に行う問合せ用情報交換パケット送信処理と、パケットを受信したときに行うパケット受信処理とに大きく分けられる。
【０１７３】
図２４は、問合せ用情報交換パケット送信処理を行うときの通信端末装置１７０の動作を示すフローチャートである。
【０１７４】
まず、ステップＳ７００において、情報交換部１２１は、データ蓄積部１１７に格納されている他の受信ノードのＩＰアドレスを取得し、それらのアドレスを宛先とする問合せ用情報交換パケットを作成する。そして、情報交換部１２１は、作成した問合せ用情報交換パケットをパケット送信部１１８に渡す。
【０１７５】
次いで、ステップＳ７０１において、パケット送信部１１８は、情報交換部１２１が作成した問合せ用情報交換パケットに現在時刻を送信時刻として記載する。そして、パケット送信部１１８は、問合せ用情報交換パケットを問い合わせ先の受信ノードに送信し、本フローを終了する。
【０１７６】
図２５は、パケット受信処理を行うときの通信端末装置１７０の動作を示すフローチャートである。
【０１７７】
まず、ステップＳ１００において、パケット受信部１１０は、通信ネットワーク２００からパケットを受信する。そして、パケット受信部１１０は、受信したパケットをパケットチェック部１１１に渡す。
【０１７８】
次いで、ステップＳ２００において、パケットチェック部１１１は、パケット受信部１１０が受信したパケットの種類を判別する。そして、パケットチェック部１１１は、受信したパケットをデータパケットと判別した場合（Ｓ２００：データパケット）、そのパケットをパケットロス検知部１１２に渡して、ステップＳ３００に進む。パケットチェック部１１１は、受信したパケットを再送要求パケットと判別した場合（Ｓ２００：再送要求パケット）、そのパケットを再送パケット作成部１１５に渡して、ステップＳ４００に進む。パケットチェック部１１１は、受信したパケットを再送パケットと判別した場合（Ｓ２００：再送パケット）、そのパケットを再送パケット受信部１１６に渡して、ステップＳ５００に進む。パケットチェック部１１１は、受信したパケットを問合せ用情報交換パケットまたは応答用情報交換パケットと判別した場合（Ｓ２００：問合せ用情報交換パケット、応答用情報交換パケット）、このパケットを情報交換部１２１に渡して、ステップＳ８００に進む。
【０１７９】
ステップＳ３００では、データパケット受信処理を行い、本フローを終了する。データパケット受信処理については、図２７を用いて後述する。
【０１８０】
ステップＳ４００では、再送要求パケット受信処理を行い、本フローを終了する。再送要求パケット受信処理は、実施の形態１と同様のものなので説明を省略する。
【０１８１】
ステップＳ５００では、再送パケット受信処理を行い、本フローを終了する。再送パケット受信処理は、実施の形態１と同様のものなので説明を省略する。
【０１８２】
ステップＳ８００では、情報交換パケット受信処理を行い、本フローを終了する。情報交換パケット受信処理は、受信した情報交換パケットの種類に応じて処理内容が異なる。情報交換パケット受信処理は、受信した情報交換パケットが問合せ用情報交換パケットの場合、応答用情報交換パケットを問合せ元に送信する処理である。一方、情報交換パケット受信処理は、受信した情報交換パケットが応答用情報交換パケットの場合、情報交換を行った受信ノードのＩＰアドレスおよびその応答時間をデータ蓄積部１１７に格納する処理である。情報交換パケット受信処理については、図２６を用いて後述する。
【０１８３】
次に、実施の形態１と異なる、データパケット受信処理および情報交換パケット受信処理およびについて説明する。
【０１８４】
初めに、情報交換パケット受信処理（ステップＳ８００）について、図２６に示すフローチャートを用いて説明する。
【０１８５】
まず、ステップＳ８０１において、情報交換部１２１は、パケットチェック部１１１から渡された情報交換パケットの種類を判別する。そして、情報交換部１２１は、受信したパケットを問合せ用情報交換パケットと判別した場合（Ｓ８０１：問合せ用情報交換パケット）、ステップＳ８０２に進む。一方、情報交換部１２１は、受信したパケットを応答用情報交換パケットと判別した場合（Ｓ８０１：応答用情報交換パケット）、そのパケットを再送応答時間計算部１２２に渡して、ステップＳ８０４に進む。
【０１８６】
ステップＳ８０２において、情報交換部１２１は、問合せ用情報交換パケットの問合せ元アドレスに記載されたＩＰアドレスを宛先とする応答用情報交換パケットを作成する。このとき、情報交換部１２１は、問合せ用情報交換パケットの送信時刻に記載された送信時刻を作成した応答用情報交換パケットに記載する。そして、情報交換部１２１は、応答用情報交換パケットをパケット送信部１１８に渡す。
【０１８７】
次いで、ステップＳ８０３において、パケット送信部１１８は、情報交換部１２１が作成した応答用情報交換パケットを問合せ元の受信ノードに送信し、本フローを終了する。
【０１８８】
ステップＳ８０４において、再送応答時間計算部１２２は、情報交換部１２１から渡された応答用情報交換パケットに記載された送信時刻と現在時刻の時間差から、情報交換パケットを交換した受信ノードのＲＴＴを算出する。そして、再送応答時間計算部１２２は、算出した受信ノードのＲＴＴをその受信ノードのＩＰアドレスと共にデータ蓄積部１１７に格納し、本フローを終了する。
【０１８９】
次に、データパケット受信処理（ステップＳ３００）について、図２７に示すフローチャートを用いて説明する。
【０１９０】
まず、ステップＳ３３１において、パケットロス検知部１１２は、パケットチェック部１１１から渡されたデータパケットに含まれるデータ（またはデータパケット全体）をデータ蓄積部１１７に格納する。
【０１９１】
次いで、ステップＳ３３２において、パケットロス検知部１１２は、パケットチェック部１１１から渡されたデータパケットに記載されたアドレスリストおよびビットマップをデータ蓄積部１１７に格納する。
【０１９２】
次いで、ステップＳ３３３において、パケットロス検知部１１２は、パケットロスが発生しているか否かを判定する。パケットロス検知部１１２は、パケットロスが発生していないと判定した場合（Ｓ３３３：ＮＯ）、本フローを終了する。一方、パケットロス検知部１１２は、パケットロスが発生したと判定した場合（Ｓ３３３：ＹＥＳ）、パケットロスが発生したデータパケットのシーケンス番号と、保持している（最後に受信した）データパケットとを再送要求先選択部１１３に渡し、ステップＳ３３４に進む。
【０１９３】
ステップＳ３３４において、再送要求先選択部１１３は、パケットロス検知部１１２から渡されたデータパケットのビットマップおよびアドレスリストから、配送済みとなっている受信ノードのＩＰアドレスを取得する。そして、再送要求先選択部１１３は、データ蓄積部１１７に格納された配送済みの各受信ノードの応答時間を調べる。そして、再送要求先選択部１１３は、各受信ノードの応答時間が再送要求するデータを再生するまでの時間を上回るか否かを判定する。再送要求先選択部１１３は、すべての受信ノードの応答時間がこのデータを再生するまでの時間を上回っていると判定した場合（Ｓ３３４：ＹＥＳ）、本フローを終了する。一方、再送要求先選択部１１３は、一つ以上の受信ノードの応答時間がこのデータを再生するまでの時間を下回っていると判定した場合（Ｓ３３４：ＮＯ）、ステップＳ３３５に進む。
【０１９４】
ステップＳ３３５において、再送要求先選択部１１３は、応答時間がこのデータを再生するまでの時間を下回っている受信ノードのうちのいずれかを再送要求先として選択する。再送要求先選択部１１３は、選択した再送要求先の受信ノードのＩＰアドレスおよび再送要求を行うデータパケットのシーケンス番号を再送要求パケット作成部１１４に通知する。
【０１９５】
ステップＳ３３６において、再送要求パケット作成部１１４は、再送要求先選択部１１３から通知されたＩＰアドレスおよびシーケンス番号から、ユニキャスト方式の再送要求パケットを作成する。そして、再送要求パケット作成部１１４は、作成した再送要求パケットをパケット送信部１１８に渡す。
【０１９６】
次いで、ステップＳ３３７において、パケット送信部１１８は、再送要求パケット作成部１１４が作成した再送要求パケットを再送要求先の受信ノードに送信し、本フローを終了する。
【０１９７】
以上説明したように、実施の形態４に係る通信端末装置は、問合せ用情報交換パケットおよび応答用情報交換パケットを用いて、他の受信ノードの応答時間を算出する。そして、実施の形態４に係る通信端末装置は、ビットマップおよびアドレスリストに加えてさらに算出された応答時間も用いて再送要求を行う受信ノードを選択し、選択した受信ノードに対してユニキャスト通信により再送要求を行う。このように、本実施の形態によれば、実施の形態１の効果に加えて、再送要求を行うデータを再生する時までに再送データを受信できる受信ノードを再送要求先として選択することができる。
【０１９８】
（実施の形態５）
実施の形態４では、他の受信ノードと情報交換パケットを交換することで他の受信ノードの応答時間をあらかじめ算出し、ビットマップ、アドレスリストおよび他の受信ノードの応答時間を用いて再送要求先の受信ノードを選択する例を示した。実施の形態５では、他の受信ノードと情報交換パケットを交換することで、他の受信ノードのセッション情報などを収集し、ビットマップ、アドレスリストならびに他の受信ノードのセッション情報などを用いて再送要求先の受信ノードを選択する例を示す。
【０１９９】
図２８は、本発明の実施の形態５に係る通信端末装置の構成を示す図である。実施の形態４に係る通信端末装置と同じ構成要素については同一の符号を付し、重複箇所の説明を省略する。
【０２００】
図２８において、通信端末装置１８０は、図２０の通信端末装置１７０の構成に加えて、セッション情報管理部１２３をさらに備えている。再送要求先選択部１１３、データ蓄積部１１７、情報交換部１２１、再送応答時間計算部１２２およびセッション情報管理部１２３以外の構成要素は、実施の形態４と同様のものなのでここでは説明しない。
【０２０１】
情報交換部１２１は、実施の形態４の情報交換部と同じように、他の受信ノードのセッション情報などを取得するための問合せ用情報交換パケットを定期的に作成する。このとき、情報交換部１２１は、一の受信ノードに対して複数の一連の情報交換パケットを作成する。また、情報交換部１２１は、他の受信ノードとの間の損失イベント率を測定するために、シーケンス番号およびその受信ノードと情報交換パケットを最後に交換した時のＲＴＴを問合せ用情報交換パケットに記載する。
【０２０２】
ここで、問合せ用情報交換パケットについて説明する。図２９は、問合せ用情報交換パケットの構成の一例を示す図である。図２９において、問合せ用情報交換パケット９１０は、ヘッダ部９１１と、ペイロード９１２とを有する。ヘッダ部９１１には、宛先アドレス９１３、問合せ元アドレス９１４、問合せ用情報交換パケットの送信時刻９１５、ＲＴＴ９１６およびシーケンス番号９１７が含まれる。ヘッダ部９１１は、他のヘッダを有していてもよいが、説明の便宜上ここでは説明しない。
【０２０３】
情報交換部１２１の説明に戻る。情報交換部１２１は、データ蓄積部１１７に格納された他の受信ノードのＩＰアドレスを定期的に取得する。そして、情報交換部１２１は、ヘッダ部９１１の宛先アドレス９１３に、取得した他の受信ノードのＩＰアドレスを記載する。また、情報交換部１２１は、問合せ元アドレス９１４に自らのＩＰアドレス（図２９の例では受信ノードＣのＩＰアドレス）を記載し、ＲＴＴ９１６に問い合わせ先の受信ノードとの間で最後に測定したＲＴＴ（図２９の例では「３０（ミリ秒）」）を記載し、シーケンス番号９１７に一連の問合せ用情報交換パケット間で連続するシーケンス番号（図２９の例では整数「３」）を記載する。なお、情報交換部１２１は、ＲＴＴ９１６およびシーケンス番号９１７をペイロード９１２に記載してもよい。そして、情報交換部１２１は、作成した問合せ用情報交換パケットをパケット送信部１１８に渡す。
【０２０４】
また、情報交換部１２１は、パケットチェック部１１１から問合せ用情報交換パケットを渡された場合、一連の問合せ用情報交換パケットにパケットロスが発生しているか否かを判定する。例えば、情報交換部１２１は、一連の問合せ用情報交換パケットのヘッダ部に記載されたシーケンス番号を調べることで、パケットロスの発生を検知することができる。情報交換部１２１は、パケットロスが発生したと判定した場合、問合せ用情報交換パケットに記載されたＲＴＴから１ＲＴＴ以内のパケットロスを１イベント損失として、前回問合せ用情報交換パケットを受信した時刻からのイベント損失の発生割合である損失イベント率を算出する。さらに、情報交換部１２１は、受信できた問合せ用情報交換パケットのデータ量を求める。そして、情報交換部１２１は、求めた損失イベント率および受信できたデータ量をその受信ノードのＩＰアドレスと関連づけてデータ蓄積部１１７に格納する。
【０２０５】
また、情報交換部１２１は、実施の形態４の情報交換部と同じように、問合せ用情報交換パケットの問合せ元アドレスに記載されたＩＰアドレスを宛先とする応答用情報交換パケットを作成する。このとき、情報交換部１２１は、問合せ用情報交換パケットに記載された送信時刻だけでなく、損失イベント率および受信できたデータ量も応答用情報交換パケットに記載する。さらに、情報交換部１２１は、自ノードがデータパケットを確保しうる時間や自ノードの処理性能などの情報を応答用情報交換パケットに記載してもよい。そして、情報交換部１２１は、作成した応答用情報交換パケットをパケット送信部１１８に渡す。
【０２０６】
また、情報交換部１２１は、パケットチェック部１１１から応答用情報交換パケットを渡された場合、このパケットをセッション情報管理部１２３に渡す。
【０２０７】
セッション情報管理部１２３は、情報交換部１２１から渡された応答用情報交換パケットの送信時刻９０５に記載された時刻と現在時刻との時間差から、情報交換を行った受信ノードとのＲＴＴを算出する。そして、セッション情報管理部１２３は、算出したＲＴＴをその受信ノードのＩＰアドレスと関連付けてデータ蓄積部１１７に格納する。このとき、ＲＴＴの急な変化に追随しすぎないように、過去のＲＴＴを加重平均した値をデータ蓄積部１１７に格納するようにしてもよい。
【０２０８】
また、セッション情報管理部１２３は、定期的に他の受信ノードから返信されてくる応答用情報交換パケットに記載された損失イベント率および受信できたデータ量ならびに応答用情報交換パケットに記載された送信時刻から算出されるＲＴＴなどの情報を管理する。そして、セッション情報管理部１２３は、それらの情報から、情報交換パケットを交換している受信ノードの利用可能な空き帯域を推定する。
【０２０９】
セッション情報管理部１２３は、ＴＦＲＣ（TCP Friendly Rate Control）に基づいて他の受信ノードの利用可能な空き帯域を推定する。ＴＦＲＣでは、他の受信ノードの利用可能な空き帯域が以下の式に基づいて推定される（M. Handley et al., “TCP Friendly Rate Control (TFRC): Protocol Specification”, RFC 3448.を参照）。
【数１】
2008005455.tif 000003
ただし、Ｘ：利用可能な帯域（ｂｐｓ）、Ｒ：ＲＴＴ（秒）、ｂ：ＴＣＰのＡＣＫ数、ｐ：損失イベント率、ｓ：パケットサイズ（バイト）、ｔ＿ＲＴＯ：ＴＣＰのタイムアウト値（＝４×Ｒ）を示す。
【０２１０】
このように、セッション情報管理部１２３は、ＲＴＴおよび損失イベント率から、他の受信ノードの利用可能な空き帯域を推定する。そして、セッション情報管理部１２３は、他の受信ノードの利用可能な空き帯域の推定値を再送応答時間計算部１２２に渡す。
【０２１１】
再送応答時間計算部１２２は、応答用情報交換パケットに記載された損失イベント率およびセッション情報管理部１２３から渡された利用可能な空き帯域の推定値から、受信ノードの応答時間を修正するための補正値を算出する。再送応答時間計算部１２２は、相手の受信ノードの利用可能な空き帯域の値が大きい場合、再送要求しても帯域に余裕があるため補正値を大きくする。一方、再送応答時間計算部１２２は、相手の受信ノードの利用可能な空き帯域の値が小さい場合、補正値を小さくする。また、再送応答時間計算部１２２は、相手の受信ノードとの間の損失イベント率が高い場合、再送要求しても再送パケットまたは再送要求パケットが失われる可能性が高いため補正値を小さくする。一方、再送応答時間計算部１２２は、相手の受信ノードとの間の損失イベント率が低ければ、補正値を大きくする。このとき、再送応答時間計算部１２２は、応答用情報交換パケットに記載されたその他の情報を用いて補正値を算出してもよい。例えば、応答用情報交換パケットに受信ノードの処理性能に関する情報が含まれていた場合、再送応答時間計算部１２２は、受信ノードの処理性能が高ければ補正値を大きくする。一方、再送応答時間計算部１２２は、受信ノードの処理性能が低ければ補正値を小さくする。そして、再送応答時間計算部１２２は、算出した補正値をその受信ノードのＩＰアドレスと共にデータ蓄積部１１７に格納する。なお、相手の受信ノードがデータを保存する時間が応答用情報交換パケットに記載されていた場合、再送応答時間計算部１２２は、データ蓄積部１１７に格納された各受信ノードの応答時間の表（図２２参照）を調べ、相手の受信ノードの応答時間とその受信ノードがデータを保存する時間とを比較する。その結果、再送応答時間計算部１２２は、相手の受信ノードの応答時間がその受信ノードがデータを保存する時間を上回っている場合、再送要求をしても再生するまでに再送データを受信することができないと判断し、自ノードがその受信ノードに対して再送要求を行わないようにする。例えば、再送応答時間計算部１２２は、データ蓄積部１１７に格納された各受信ノードの応答時間の表（図２２参照）からその受信ノードの応答時間を削除することで、自ノードがその受信ノードに対して再送要求を行わないようにすることができる。また、再送応答時間計算部１２２は、各受信ノードの応答時間の表におけるその受信ノードの応答時間の数値を極めて大きい値に修正することで、自ノードがその受信ノードに対して再送要求を行わないようにすることができる。
【０２１２】
データ蓄積部１１７は、実施の形態４のデータ蓄積部が有する機能に加え、再送応答時間計算部１２２によって算出された応答時間の補正値を格納する。これらの情報は、後述する再送要求先選択部１１３によって使用される。
【０２１３】
再送要求先選択部１１３は、実施の形態４の再送要求先選択部と同じように、パケットロス検知部１１２から通知されたパケットロスが発生したデータパケットについて、どの受信ノードに対して再送要求を行うかを選択する。このとき、再送要求先選択部１１３は、パケットロス検知部１１２から渡されたデータパケット内のビットマップ、アドレスリストおよび各受信ノードの応答時間に加え、データ蓄積部１１７に格納された応答時間の補正値も用いて再送要求を行う受信ノードを選択する。
【０２１４】
再送要求先選択部１１３は、実施の形態４の再送要求先選択部と同じように、再送要求するデータパケットを配送済みで、かつ応答時間が再送要求するデータを再生するまでの時間を下回る受信ノードを選択する。再送要求先選択部１１３は、この条件を満たす受信ノードが複数ある場合、各受信ノードの応答時間から補正値を引き、各受信ノードの修正応答時間を算出する。そして、再送要求先選択部１１３は、修正応答時間の最も短い受信ノードを再送要求先として選択する。なお、再送要求先選択部１１３は、上記条件を満たす受信ノードが複数ある場合、各受信ノードの補正値を直接比較し、補正値が最も大きい受信ノードを再送要求先として選択してもよい。
【０２１５】
再送要求先選択部１１３は、実施の形態４の再送要求先選択部と同じように、再送要求先として選択した受信ノードのＩＰアドレスおよびパケットロスが発生したデータパケットのシーケンス番号を再送要求パケット作成部１１４に通知する。また、再送要求先選択部１１３は、実施の形態４の再送要求先選択部と同じように、再送要求を行うデータパケットのシーケンス番号を記録する。
【０２１６】
以下、上述のように構成された通信端末装置１８０の動作を説明する。通信端末装置１８０の動作は、実施の形態４の通信端末装置と同じように、定期的かつ自発的に行う問合せ用情報交換パケット送信処理と、パケットを受信した時に行うパケット受信処理とに大きく分けられる。問合せ用情報交換パケット送信処理およびパケット受信処理は、実施の形態４と同様のものなのでここでは説明しない。
【０２１７】
次に、実施の形態４と異なる、パケット受信処理内のデータパケット受信処理および情報交換パケット受信処理およびについて説明する。パケット受信処理内の再送要求パケット受信処理および再送パケット受信処理は実施の形態４と同様のものなのでここでは説明しない。
【０２１８】
初めに、情報交換パケット受信処理（ステップＳ８００）について、図３０に示すフローチャートを用いて説明する。
【０２１９】
まず、ステップＳ８１１において、情報交換部１２１は、パケットチェック部１１１から渡された情報交換パケットの種類を判別する。そして、情報交換部１２１は、受信したパケットを問合せ用情報交換パケットと判別した場合（Ｓ８１１：問合せ用情報交換パケット）、ステップＳ８１２に進む。一方、情報交換部１２１は、受信したパケットを応答用情報交換パケットと判別した場合（Ｓ８１１：応答用情報交換パケット）、そのパケットをセッション情報管理部１２３に渡して、ステップＳ８１６に進む。
【０２２０】
ステップＳ８１２において、情報交換部１２１は、パケットチェック部１１１から渡された一連の問合せ用情報交換パケットにパケットロスが発生しているか否かを判定する。情報交換部１２１は、パケットロスが発生したと判定した場合（Ｓ８１２：ＹＥＳ）、ステップＳ８１３に進む。一方、パケットロス検知部１１２は、パケットロスが発生していないと判定した場合（Ｓ８１２：ＮＯ）、ステップＳ８１４に進む。
【０２２１】
ステップＳ８１３において、情報交換部１２１は、問合せ用情報交換パケットに記載されたＲＴＴから損失イベント率を算出する。また、情報交換部１２１は、受信できた問合せ用情報交換パケットのデータ量を求める。そして、情報交換部１２１は、求めた損失イベント率および受信できたデータ量をその受信ノードのＩＰアドレスと共にデータ蓄積部１１７に格納する。
【０２２２】
ステップＳ８１４において、情報交換部１２１は、問合せ用情報交換パケットの問合せ元アドレスに記載されたＩＰアドレスを宛先とする応答用情報交換パケットを作成する。このとき、情報交換部１２１は、問合せ用情報交換パケットに記載された送信時刻、ならびにステップＳ８１３で求めた損失イベント率および受信できたデータ量を応答用情報交換パケットに記載する。そして、情報交換部１２１は、作成した応答用情報交換パケットをパケット送信部１１８に渡す。
【０２２３】
次いで、ステップＳ８１５において、パケット送信部１１８は、情報交換部１２１が作成した応答用情報交換パケットを問合せ元の受信ノードに送信し、本フローを終了する。
【０２２４】
ステップＳ８１６で、セッション情報管理部１２３は、情報交換部１２１から渡された応答用情報交換パケットに記載された送信時刻と現在時刻との時間差から、情報交換を行った受信ノードとのＲＴＴを算出する。そして、セッション情報管理部１２３は、算出したＲＴＴをその受信ノードのＩＰアドレスと関連付けてデータ蓄積部１１７に格納する。
【０２２５】
次いで、ステップＳ８１７において、セッション情報管理部１２３は、ステップＳ８１６で算出したＲＴＴおよび応答用情報交換パケットに記載された損失イベント率から、情報交換を行った受信ノードの利用可能な空き帯域を推定する。そして、セッション情報管理部１２３は、推定した他の受信ノードの利用可能な空き帯域の値をその受信ノードのＩＰアドレスと関連付けてデータ蓄積部１１７に格納する。
【０２２６】
次いで、ステップＳ８１８において、再送応答時間計算部１２２は、応答用情報交換パケットに記載された損失イベント率およびステップＳ８１７で推定した利用可能な空き帯域の値から、応答時間を修正するための補正値を算出する。そして、再送応答時間計算部１２２は、算出した補正値をその受信ノードのＩＰアドレスと関連付けてデータ蓄積部１１７に格納し、本フローを終了する。
【０２２７】
次に、データパケット受信処理（ステップＳ３００）について、図３１に示すフローチャートを用いて説明する。
【０２２８】
まず、ステップＳ３４１において、パケットロス検知部１１２は、パケットチェック部１１１から渡されたデータパケットに含まれるデータ（またはデータパケット全体）をデータ蓄積部１１７に格納する。
【０２２９】
次いで、ステップＳ３４２において、パケットロス検知部１１２は、パケットチェック部１１１から渡されたデータパケットに記載されたアドレスリストおよびビットマップをデータ蓄積部１１７に格納する。
【０２３０】
次いで、ステップＳ３４３において、パケットロス検知部１１２は、パケットロスが発生しているか否かを判定する。パケットロス検知部１１２は、パケットロスが発生していないと判定した場合（Ｓ３４３：ＮＯ）、本フローを終了する。一方、パケットロス検知部１１２は、パケットロスが発生したと判定した場合（Ｓ３４３：ＹＥＳ）、パケットロスが発生したデータパケットのシーケンス番号と、保持している（最後に受信した）データパケットとを再送要求先選択部１１３に渡し、ステップＳ３４４に進む。
【０２３１】
ステップＳ３４４において、再送要求先選択部１１３は、パケットロス検知部１１２から渡されたデータパケットのビットマップおよびアドレスリストから、配送済みとなっている受信ノードのＩＰアドレスを取得する。そして、再送要求先選択部１１３は、データ蓄積部１１７に格納された配送済みの各受信ノードの応答時間を調べる。そして、再送要求先選択部１１３は、各受信ノードの応答時間が再送要求するデータを再生するまでの時間を上回るか否かを判定する。再送要求先選択部１１３は、すべての受信ノードの応答時間がこのデータを再生するまでの時間を上回っていると判定した場合（Ｓ３４４：ＹＥＳ）、本フローを終了する。一方、再送要求先選択部１１３は、一つ以上の受信ノードの応答時間がこのデータを再生するまでの時間を下回っていると判定した場合（Ｓ３４４：ＮＯ）、ステップＳ３４５に進む。
【０２３２】
ステップＳ３４５において、再送要求先選択部１１３は、応答時間がこのデータを再生するまでの時間を下回っている受信ノードの応答時間からそれぞれの補正値を引き、修正応答時間を算出する。
【０２３３】
ステップＳ３４６において、再送要求先選択部１１３は、応答時間がこのデータを再生するまでの時間を下回っている受信ノードのうち、修正応答時間が最も小さい受信ノードを再送要求先として選択する。再送要求先選択部１１３は、選択した再送要求先の受信ノードのＩＰアドレスおよび再送要求を行うデータパケットのシーケンス番号を再送要求パケット作成部１１４に通知する。
【０２３４】
ステップＳ３４７において、再送要求パケット作成部１１４は、再送要求先選択部１１３から通知されたＩＰアドレスおよびシーケンス番号から、ユニキャスト方式の再送要求パケットを作成する。そして、再送要求パケット作成部１１４は、作成した再送要求パケットをパケット送信部１１８に渡す。
【０２３５】
次いで、ステップＳ３４８において、パケット送信部１１８は、再送要求パケット作成部１１４が作成した再送要求パケットを再送要求先の受信ノードに送信し、本フローを終了する。
【０２３６】
以上説明したように、実施の形態５に係る通信端末装置は、問合せ用情報交換パケットおよび応答用情報交換パケットを用いて、他の受信ノードの応答時間ならびに他の受信ノードの損失イベント率および利用可能な空き帯域の推定値に基づく応答時間の補正値を算出する。そして、実施の形態５に係る通信端末装置は、ビットマップおよびアドレスリストに加えてさらに算出された応答時間およびその補正値も用いて再送要求を行う受信ノードを選択し、選択した受信ノードに対してユニキャスト通信により再送要求を行う。このように、本実施の形態によれば、実施の形態４の効果に加えて、損失イベント率が低くかつ空き帯域が大きい受信ノード、すなわち再送データを確実に受信できる受信ノードを再送要求先として選択することができる。
【０２３７】
なお、上記各実施の形態の通信端末装置は、再送要求パケットを送信してから一定時間を経過しても再送パケットを受信しない場合、ビットマップとアドレスリストを用いて新たな再送要求先を選択し、選択した新たな再送要求先の受信ノードに再送パケットを送信するようにしてもよい。
【０２３８】
また、上記各実施の形態の通信端末装置は、再送要求されたデータがデータ蓄積部に格納されていない場合、再送要求元の受信ノードに対してデータがないというメッセージを送ってもよい。また、上記各実施の形態の通信端末装置は、再送要求されたデータがデータ蓄積部に格納されていない場合、何もせずに再送要求パケット受信処理を終了してもよい。この場合、再送要求パケットの送信元の受信ノードは、別の受信ノードに再送要求パケットを送信しなくてはならない。
【０２３９】
また、上記各実施の形態では、再送パケット受信部は、データ蓄積部に格納された表に記載されたシーケンス番号に基づいて再送パケットの正当性を評価したが、再送パケット受信部は、再送要求先のＩＰアドレスなどの情報に基づいて再送パケットの正当性のチェックを行ってもよい。
【０２４０】
また、上記実施の形態２では、パケットロスを検知した受信ノードが、再送要求パケットを１つにまとめるために一定時間待機するようにしたが、再送要求パケットを受信した受信ノードが、再送パケットを１つにまとめるために一定時間待機するようにしてもよい。この場合、再送パケットは明示的マルチキャスト方式のパケットとなる。
【産業上の利用可能性】
【０２４１】
本発明にかかる通信端末装置は、ネットワーク全体の帯域消費や受信ノードの処理負荷を低減できるという効果を有し、テレビ会議やネットワークゲームなどの通信端末装置として有用である。
【図面の簡単な説明】
【０２４２】
【図１】本実施の形態に係る通信端末装置を受信ノードとするマルチキャスト配信の流れを説明するための通信ネットワークの概要を示す図
【図２】本発明の実施の形態１に係る通信端末装置の構成を示すブロック図
【図３】データパケットの構成の一例を示す図
【図４】再送要求を行う（行った）データパケットのシーケンス番号を記載する表を示す図
【図５】（Ａ）再送要求パケットの構成の一例を示す図、（Ｂ）再送要求パケットの構成の別の例を示す図
【図６】再送パケットの構成の一例を示す図
【図７】本発明の実施の形態１に係る通信端末装置のパケット受信時の動作を示すフローチャート
【図８】本発明の実施の形態１に係るデータパケット受信処理を示すフローチャート
【図９】本発明の実施の形態１に係る再送要求パケット受信処理を示すフローチャート
【図１０】本発明の実施の形態１に係る再送パケット受信処理を示すフローチャート
【図１１】本発明の実施の形態２に係る通信端末装置の構成を示すブロック図
【図１２】複数の再送元のＩＰアドレスが記載された再送要求パケットの構成の一例を示す図
【図１３】明示的マルチキャスト方式の再送パケットの構成の一例を示す図
【図１４】本発明の実施の形態２に係るデータパケット受信処理を示すフローチャート
【図１５】本発明の実施の形態２に係る再送要求パケット受信待機処理を示すフローチャート
【図１６】本発明の実施の形態２に係る再送要求パケット受信処理を示すフローチャート
【図１７】本発明の実施の形態３に係る通信端末装置の構成を示すブロック図
【図１８】本発明の実施の形態３に係るデータパケット受信処理を示すフローチャート
【図１９】本発明の実施の形態３に係る再送要求パケット受信処理を示すフローチャート
【図２０】本発明の実施の形態４に係る通信端末装置の構成を示すブロック図
【図２１】問合せ用情報交換パケットの構成の一例を示す図
【図２２】他の受信ノードの応答時間を記載する表を示す図
【図２３】データパケットの構成の一例を示す図
【図２４】本発明の実施の形態４に係る通信端末装置の問合せ用情報交換パケット送信時の動作を示すフローチャート
【図２５】本発明の実施の形態４に係る通信端末装置のパケット受信時の動作を示すフローチャート
【図２６】本発明の実施の形態４に係る情報交換パケット受信処理を示すフローチャート
【図２７】本発明の実施の形態４に係るデータパケット受信処理を示すフローチャート
【図２８】本発明の実施の形態５に係る通信端末装置の構成を示すブロック図
【図２９】問合せ用情報交換パケットの構成の一例を示す図
【図３０】本発明の実施の形態５に係る情報交換パケット受信処理を示すフローチャート
【図３１】本発明の実施の形態５に係るデータパケット受信処理を示すフローチャート
【符号の説明】
【０２４３】
１００〜１０４、１５０、１６０、１７０、１８０  通信端末装置
１１０  パケット受信部
１１１  パケットチェック部
１１２  パケットロス検知部
１１３  再送要求先選択部
１１４  再送要求パケット作成部
１１５  再送パケット作成部
１１６  再送パケット受信部
１１７  データ蓄積部
１１８  パケット送信部
１１９  再送要求パケット待機部
１２０  数珠繋ぎ配送チェック部
１２１  情報交換部
１２２  再送応答時間計算部
１２３  セッション情報管理部
２００  通信ネットワーク
３００  送信ノード
４００〜４０２  ルータ
【図１】
2008005455.tif 000004
【図２】
2008005455.tif 000005
【図３】
2008005455.tif 000006
【図４】
2008005455.tif 000007
【図５】
2008005455.tif 000008
【図６】
2008005455.tif 000009
【図７】
2008005455.tif 000010
【図８】
2008005455.tif 000011
【図９】
2008005455.tif 000012
【図１０】
2008005455.tif 000013
【図１１】
2008005455.tif 000014
【図１２】
2008005455.tif 000015
【図１３】
2008005455.tif 000016
【図１４】
2008005455.tif 000017
【図１５】
2008005455.tif 000018
【図１６】
2008005455.tif 000019
【図１７】
2008005455.tif 000020
【図１８】
2008005455.tif 000021
【図１９】
2008005455.tif 000022
【図２０】
2008005455.tif 000023
【図２１】
2008005455.tif 000024
【図２２】
2008005455.tif 000025
【図２３】
2008005455.tif 000026
【図２４】
2008005455.tif 000027
【図２５】
2008005455.tif 000028
【図２６】
2008005455.tif 000029
【図２７】
2008005455.tif 000030
【図２８】
2008005455.tif 000031
【図２９】
2008005455.tif 000032
【図３０】
2008005455.tif 000033
【図３１】
2008005455.tif 000034