以下、本発明の実施の形態について、図面を参照しつつ説明する。
(実施の形態1)
図1は、本発明の一実施の形態に係る通信端末装置の動作を説明するための通信ネットワークの概要を示す図である。
図1において、通信ネットワーク200は、1台の送信ノード300、3台のルータ400〜402、5台の通信端末装置100〜104から構成されている。
送信ノード300は、明示的マルチキャスト方式のデータパケットを作成し、通信端末装置100〜104に対して配信する。
ルータ400〜402は、通信ネットワーク200上のパケットに含まれる宛先アドレス情報に基づいて、パケットのルーティングを行う。
通信端末装置100〜104は、送信ノード300が送信したデータパケットを受信する受信ノードである。また、通信端末装置100〜104は、後述するように、パケットロスを検知したときに再送要求パケットの作成および送信を行い、再送要求パケットを受信したときに再送パケットの作成および送信を行う。
図2は、図1における通信端末装置100の構成を示すブロック図である。
図2において、通信端末装置100は、パケット受信部110、パケットチェック部111、パケットロス検知部112、再送要求先選択部113、再送要求パケット作成部114、再送パケット作成部115、再送パケット受信部116、データ蓄積部117、パケット送信部118を備えて構成される。
パケット受信部110は、通信ネットワーク200からパケットを受信する。そして、パケット受信部110は、受信したパケットをパケットチェック部111に渡す。
パケットチェック部111は、パケット受信部110が受信したパケットの種類を判別する。そして、パケットチェック部111は、パケットの種類に応じた出力先にパケットを渡す。
ここで、パケットの種類について説明する。パケットの種類は、例えば、データパケット、再送要求パケットおよび再送パケットがある。データパケットは、送信ノードが作成する明示的マルチキャスト方式のパケットであり、送信ノードが受信ノードへ配信するデータが格納されている。再送要求パケットは、パケットロスの発生を検知した受信ノード(通信端末装置)が作成するユニキャスト方式のパケットであり、パケットロスが発生したデータパケットの再送を要求するのに必要な情報が格納されている。再送パケットは、再送要求パケットを受信した受信ノード(通信端末装置)が作成するユニキャスト方式のパケットであり、再送要求パケットで要求された再送データが格納されている。
パケットチェック部111の説明に戻る。パケットチェック部111は、受信したパケットをデータパケットと判別した場合、このパケットをパケットロス検知部112に渡す。また、パケットチェック部111は、受信したパケットを再送要求パケットと判別した場合、このパケットを再送パケット作成部115に渡す。また、パケットチェック部111は、受信したパケットを再送パケットと判別した場合、このパケットを再送パケット受信部116に渡す。
パケットロス検知部112は、パケット受信部110が受信している一連のデータパケットにパケットロスが発生しているか否かを判定する。例えば、パケットロス検知部112は、データパケットのヘッダ部に記載されたシーケンス番号を調べることで、パケットロスの発生を検知することができる。
ここで、データパケット内のシーケンス番号について説明する。図3は、明示的マルチキャスト方式のデータパケットの構成の一例を示す図である。図3において、データパケット500は、ヘッダ部501と、配信データを含むペイロード502とを有する。ヘッダ部501には、ルーティングヘッダ503(後述)およびシーケンス番号504が含まれる。図3に示すデータパケットの例では、シーケンス番号504は整数「17」である。ヘッダ部501は、他のヘッダを有していてもよいが、説明の便宜上ここでは説明しない。
パケットロス検知部112の説明に戻る。パケットロス検知部112は、シーケンス番号が連続したデータパケットを受信しているときは、パケットロスは発生していないと判定する。一方、パケットロス検知部112は、シーケンス番号が非連続のデータパケットを受信したときは、パケットロスが発生したと判定する。例えば、ある時点で受信したデータパケットのシーケンス番号が「15」であり、次に受信したデータパケットのシーケンス番号が「16」であったときは、パケットロス検知部112はパケットロスが発生していないと判定する。一方、ある時点で受信したデータパケットのシーケンス番号が「15」であり、次に受信したデータパケットのシーケンス番号が「17」であったときは、パケットロス検知部112はシーケンス番号「16」のデータパケットにパケットロスが発生したと判定する。パケットロス検知部112は、パケットロスが発生したと判定した場合、パケットロスとなったデータパケットを他の受信ノードから再送してもらうために、パケットロスとなったデータパケットのシーケンス番号(上述の例では「16」)を再送要求先選択部113に通知する。同時に、パケットロス検知部112は、保持している(最後に受信した)データパケット(上述の例ではシーケンス番号「17」のデータパケット)を再送要求先選択部113に渡す。また、パケットロス検知部112は、パケットチェック部111から渡されたデータパケットに含まれるデータをデータ蓄積部117に格納する。このとき、パケットロス検知部112は、後の再送処理のためにデータパケットのシーケンス番号を対応するデータと関連づけて格納しておく。なお、パケットロス検知部112は、データパケットをそのままデータ蓄積部117に格納してもよい。
再送要求先選択部113は、パケットロス検知部112から通知されたパケットロスが発生したデータパケットについて、どの受信ノードに対して再送要求を行うかを選択する。このとき、再送要求先選択部113は、パケットロス検知部112から渡されたデータパケット内のビットマップおよびアドレスリストを検索することで、再送要求先の受信ノードを選択することができる。
ここで、データパケット内のビットマップおよびアドレスリストについて説明する。図3において、データパケット500のルーティングヘッダ503には、配送済みか否かを示すビット列であるビットマップ505と、送信先となる受信ノードのIPアドレスが1つ以上記載されているアドレスリスト506とが含まれている。図3に示すデータパケットの例において、アドレスリスト506には、通信端末装置A(以下「受信ノードA」という)のIPアドレス507、通信端末装置C(以下「受信ノードC」という)のIPアドレス508および通信端末装置D(以下「受信ノードD」という)のIPアドレス509が記載されているものとする。また、ビットマップ505には、アドレスリスト506に記載された受信ノードのIPアドレスそれぞれについて配送済みか否かを示すビットが、アドレスリスト506内のIPアドレス507〜509の並び順通りに1ビットずつ割当てられている。図3に示すデータパケットの例では、配送済みを示すビットを0、未配送を示すビットを1とすると、ビットマップは「0・1・1」であるので、受信ノードAは配送済み(0)であり、受信ノードCは未配送(1)であり、受信ノードDも未配送(1)であることを示している。
再送要求先選択部113の説明に戻る。再送要求先選択部113は、パケットロス検知部112から渡されたデータパケット内のビットマップを見て、配送済みとなっているビット(上記の例では「0」のビット)を1つ選択する。そして、再送要求先選択部113は、同じデータパケットのアドレスリストを調べ、選んだビットに対応する受信ノードのIPアドレスを取得する。再送要求先選択部113が配送済みを示すビットを選択する方法(基準)は特に限定されず、配送済みを示すビットであればどのビットを選択してもよい。例えば、送信ノードが、ネットワーク上で近い受信ノード同士が隣接するように受信ノードのIPアドレスをアドレスリストに記載しているのであれば、再送要求先選択部113は、自ノードに対応するビットの近くにある配送済みのビットを優先的に選択するようにしてもよい。また、再送要求先選択部113は、1つの受信ノードに多くの再送要求が集中しないように、複数ある配送済みを示すビットの中からランダムに配送済みのビットを選択するようにしてもよい。また、再送要求先選択部113は、送信ノードから各受信ノードの性能に関する情報を取得しているのであれば、より性能の高い配送済みの受信ノードを選択するようにしてもよい。なお、再送要求先選択部113は、配送済みの受信ノードがない場合は、送信ノードを選択する。例えば、図3に示すデータパケットの場合、ビットマップ505が「0」となっている配送済みの受信ノードは受信ノードAのみである。したがって、再送要求先選択部113は、再送要求先として受信ノードAのIPアドレス507を選択する。
再送要求先選択部113は、再送要求先として選択した受信ノードのIPアドレスおよびパケットロスが発生したデータパケットのシーケンス番号を再送要求パケット作成部114に通知する。また、再送要求先選択部113は、再送要求を行うデータパケットのシーケンス番号を記録する。例えば、再送要求先選択部113は、データ蓄積部117に格納された「再送要求を行う(行った)シーケンス番号の表」に再送要求を行うデータパケットのシーケンス番号を記載すればよい。
図4は、「再送要求を行う(行った)シーケンス番号の表」の一例を示す図である。この表600は、シーケンス番号5、9および16のデータパケットについて再送要求を行ったことが記録されている例である。この表は、後述する再送パケット受信部116によって使用される。
再送要求パケット作成部114は、再送要求先選択部113が選択した再送要求先の受信ノードのIPアドレスおよび再送要求するデータパケットのシーケンス番号を含む再送要求パケットを作成する。
ここで、再送要求パケットについて説明する。図5は、再送要求パケットの構成の一例を示す図である。図5(A)において、再送要求パケット700は、ヘッダ部701と、ペイロード702とを有する。ヘッダ部701には、宛先アドレス703、再送要求元アドレス704および再送要求するデータパケットのシーケンス番号705が含まれる。ヘッダ部701は、他のヘッダを有していてもよいが、説明の便宜上ここでは説明しない。
再送要求パケット作成部114の説明に戻る。再送要求パケット作成部114は、ヘッダ部701の宛先アドレス703に、再送要求先選択部113が選択した再送要求先のIPアドレス(図5(A)に示す例では受信ノードAのIPアドレス)を記載する。また、再送要求パケット作成部114は、再送要求元アドレス704に自らのIPアドレス(図5(A)の例では受信ノードCのIPアドレス)を記載し、再送要求するデータパケットのシーケンス番号705に再送要求先選択部113から通知されたシーケンス番号を記載する。なお、図5(B)に示すように、再送要求パケット作成部114は、再送要求元アドレス704および再送要求するデータパケットのシーケンス番号705をペイロード702中に記載してもよい。そして、再送要求パケット作成部114は、作成した再送要求パケットをパケット送信部118に渡す。
再送パケット作成部115は、パケットチェック部111から渡された再送要求パケットに含まれている再送要求元アドレスおよび再送要求されているデータパケットのシーケンス番号を取得する。そして、再送パケット作成部115は、取得したシーケンス番号のデータがデータ蓄積部117に格納されているか否かを判定する。そして、再送パケット作成部115は、再送要求されているデータがデータ蓄積部117に格納されていると判定した場合、取得した再送要求元アドレスおよびシーケンス番号に基づいて再送パケットを作成する。
ここで、再送パケットについて説明する。図6は、再送パケットの構成の一例を示す図である。図6において、再送パケット800は、ヘッダ部801と、再送データを含むペイロード802とを有する。ヘッダ部801には、宛先アドレス803および再送要求されているデータパケットのシーケンス番号804が含まれる。ヘッダ部801は、他のヘッダを有していてもよいが、説明の便宜上ここでは説明しない。
再送パケット作成部115の説明に戻る。再送パケット作成部115は、再送要求パケットに記載された再送要求元アドレスを宛先アドレス803に記載し、再送要求パケットに記載されたシーケンス番号をシーケンス番号804に記載する。また、再送パケット作成部115は、そのシーケンス番号に対応したデータを再送データとしてペイロード802に格納する。そして、再送パケット作成部115は、作成した再送パケットをパケット送信部118に渡す。
再送パケット受信部116は、パケットチェック部111から渡された再送パケットに含まれるシーケンス番号を取得する。そして、再送パケット受信部116は、取得したシーケンス番号がデータ蓄積部117に格納された再送要求を行ったシーケンス番号の表(図4参照)に記載されているか否かを判定する。そして、再送パケット受信部116は、取得したシーケンス番号が表に記載されていると判定した場合、再送パケットの再送データが再送要求したデータだと判断し、このデータをデータ蓄積部117に格納する。一方、再送パケット受信部116は、取得したシーケンス番号が表に記載されていないと判定した場合、再送パケットの再送データが再送要求していないデータだと判断し、再送パケットを破棄する。
データ蓄積部117は、データパケットまたは再送パケットに含まれるデータおよびシーケンス番号を格納する記憶部である。また、データ蓄積部117は、再送要求を行ったシーケンス番号の表も格納する。
パケット送信部118は、再送要求パケット作成部114が作成した再送要求パケットおよび再送パケット作成部115が作成した再送パケットをネットワーク200に送信する。
以下、上述のように構成された通信端末装置100の動作を説明する。
図7は、パケットを受信したときの通信端末装置100の動作を示すフローチャートである。
まず、ステップS100において、パケット受信部110は、通信ネットワーク200からパケットを受信する。そして、パケット受信部110は、受信したパケットをパケットチェック部111に渡す。
次いで、ステップS200において、パケットチェック部111は、パケット受信部110が受信したパケットの種類を判別する。そして、パケットチェック部111は、受信したパケットをデータパケットと判別した場合(S200:データパケット)、そのパケットをパケットロス検知部112に渡して、ステップS300に進む。パケットチェック部111は、受信したパケットを再送要求パケットと判別した場合(S200:再送要求パケット)、そのパケットを再送パケット作成部115に渡して、ステップS400に進む。パケットチェック部111は、受信したパケットを再送パケットと判別した場合(S200:再送パケット)、そのパケットを再送パケット受信部116に渡して、ステップS500に進む。
ステップS300では、データパケット受信処理を行い、本フローを終了する。データパケット受信処理は、通常はデータパケットをデータ蓄積部117に格納する処理である。ただし、受信しているデータパケットにパケットロスが発生した場合は、データパケット受信処理は、損失したデータについて他の特定の受信ノードに再送要求を行う処理となる。データパケット受信処理については、図8を用いて後述する。
ステップS400では、再送要求パケット受信処理を行い、本フローを終了する。再送要求パケット受信処理は、再送要求パケットによって再送要求されたデータを再送要求元に送信する処理である。再送要求パケット受信処理については、図9を用いて後述する。
ステップS500では、再送パケット受信処理を行い、本フローを終了する。再送パケット受信処理は、通常は再送パケットのデータをデータ蓄積部117に格納する処理である。再送パケット受信処理については、図10を用いて後述する。
次に、データパケット受信処理(ステップS300)について、図8に示すフローチャートを用いて説明する。
まず、ステップS301において、パケットロス検知部112は、パケットチェック部111から渡されたデータパケットに含まれるデータ(またはデータパケット全体)をデータ蓄積部117に格納する。
次いで、ステップS302において、パケットロス検知部112は、パケットロスが発生しているか否かを判定する。パケットロス検知部112は、パケットロスが発生していないと判定した場合(S302:NO)、本フローを終了する。一方、パケットロス検知部112は、パケットロスが発生したと判定した場合(S302:YES)、パケットロスが発生したデータパケットのシーケンス番号と、保持している(最後に受信した)データパケットとを再送要求先選択部113に渡し、ステップS303に進む。
ステップS303において、再送要求先選択部113は、パケットロス検知部112から渡されたデータパケットのビットマップとアドレスリストから、再送要求先とする受信ノードを選択する。また、再送要求先選択部113は、再送要求を行うデータパケットのシーケンス番号を、データ蓄積部117に格納された表に記載する。そして、再送要求先選択部113は、選択した再送要求先の受信ノードのIPアドレスおよび再送要求を行うデータパケットのシーケンス番号を再送要求パケット作成部114に通知する。
次いで、ステップS304において、再送要求パケット作成部114は、再送要求先選択部113から通知されたIPアドレスおよびシーケンス番号から、ユニキャスト方式の再送要求パケットを作成する。そして、再送要求パケット作成部114は、作成した再送要求パケットをパケット送信部118に渡す。
次いで、ステップS305において、パケット送信部118は、再送要求パケット作成部114が作成した再送要求パケットを再送要求先の受信ノードに送信し、本フローを終了する。
次に、再送要求パケット受信処理(ステップS400)について、図9に示すフローチャートを用いて説明する。
まず、ステップS401において、再送パケット作成部115は、パケットチェック部111から渡された再送要求パケットに含まれる再送要求されているデータパケットのシーケンス番号を取得する。そして、再送パケット作成部115は、そのシーケンス番号のデータがデータ蓄積部117に格納されているか否かを判定する。そして、再送パケット作成部115は、データがデータ蓄積部117に格納されていると判定した場合(S401:YES)、ステップS404に進む。一方、再送パケット作成部115は、データが格納されていないと判定した場合(S401:NO)、ステップS402に進む。
ステップS402において、再送パケット作成部115は、再送要求されているデータパケットを受信するため任意の時間待機する。
次いで、ステップS403において、再送パケット作成部115は、再送要求されているデータパケットのデータがデータ蓄積部117に格納されているか否かを再度判定する。そして、再送パケット作成部115は、データがデータ蓄積部117に格納されていると判定した場合(S403:YES)、ステップS404に進む。一方、再送パケット作成部115は、データがデータ蓄積部117に格納されていないと判定した場合(S403:NO)、ステップS402に戻る。したがって、再送パケット作成部115は、再送要求されたデータパケットのデータがデータ蓄積部117に格納されるまで、ステップS402とステップS403とを繰り返す。
ステップS404において、再送パケット作成部115は、再送パケットを作成する。このとき、再送パケット作成部115は、再送要求パケットに記載されている再送要求元アドレスを再送パケットの宛先アドレスとする。また、再送パケット作成部115は、再送要求パケットに記載されたシーケンス番号と、そのシーケンス番号に対応したデータとを再送パケットに格納する。そして、再送パケット作成部115は、作成した再送パケットをパケット送信部118に渡す。
次いで、ステップS405において、パケット送信部118は、再送パケット作成部115が作成した再送パケットを再送要求元の受信ノード(通信端末装置)に送信し、本フローを終了する。
次に、再送パケット受信処理(ステップS500)について、図10に示すフローチャートを用いて説明する。
まず、ステップS501において、再送パケット受信部116は、再送パケットに含まれるシーケンス番号を取得する。そして、再送パケット受信部116は、データ蓄積部117に格納された再送要求を行ったシーケンス番号の表に同一のシーケンス番号が記載されているか否かを判定する。そして、再送パケット受信部116は、同一のシーケンス番号が記載されていると判定した場合(S501:YES)、ステップS502に進む。一方、再送パケット受信部116は、同一のシーケンス番号が記載されていないと判定した場合(S501:NO)、ステップS503に進む。
ステップS502において、再送パケット受信部116は、受信した再送パケットのデータをデータ蓄積部117に格納する。そして、再送パケット受信部116は、再送要求を行ったデータパケットのシーケンス番号の表から再送要求したデータパケットのシーケンス番号を削除し、本フローを終了する。
ステップS503において、再送パケット受信部116は、受信した再送パケットを破棄し、本フローを終了する。
最後に、図1を用いて、通信ネットワーク200における通信端末装置100〜104の動作を説明する。送信ノード300は、説明の便宜上、受信ノードA100、受信ノードC102および受信ノードD103に同一のデータパケットを配信するものとする。また、ルータ400〜402は、明示的マルチキャスト方式に対応しているものとする。
まず、送信ノード300は、受信ノードA100、受信ノードC102および受信ノードD103のIPアドレスをアドレスリストに含むデータパケットを作成する。ここで、送信ノード300は、図3に示すデータパケットを作成したものとする(ただし、ビットマップ505の値は「111」となる)。そして、送信ノード300は、作成したデータパケットをルータ400に送信する。
ルータ400は、送信ノード300からデータパケットを受信すると、データパケットのアドレスリストに記載された受信ノードA100、受信ノードC102および受信ノードD103のIPアドレスについて送信インターフェースを調べる。この場合、ルータ400は、受信ノードA100およびルータ401にデータパケットを送信することになる。ルータ400は、送信先のインターフェースの数(すなわち2つ)データパケットを複製する。そして、ルータ400は、受信ノードA100およびルータ401に複製したデータパケットを送信する。このとき、ルータ400は、受信ノードA100に送信するデータパケットのビットマップにおいて、受信ノードC102のIPアドレスおよび受信ノードD103のIPアドレスに対応するビットを配送済みにする(すなわちビットマップ505は「100」となる)。同様に、ルータ400は、ルータ401に送信するデータパケットのビットマップにおいて、受信ノードA100のIPアドレスに対応するビットを配送済みにする(すなわちビットマップ505は「011」となる)。
受信ノードA100は、ルータ400から受信したデータパケットのデータおよびシーケンス番号をデータ蓄積部117に格納する(通常のデータパケット受信処理)。
ルータ401は、上記ルータ400と同様に、受信ノードC102およびルータ402にデータパケット(ビットマップ505はそれぞれ「010」、「001」となる)を送信する(マルチキャスト通信)。
受信ノードC102は、ルータ401から受信したデータパケットのデータおよびシーケンス番号をデータ蓄積部117に格納する(通常のデータパケット受信処理)。
ルータ402は、受信ノードD103にデータパケットを送信するが、ここでルータ402−受信ノードD間でパケットロスが発生したものとする。
受信ノードD103は、送信ノード300から受信しているデータパケットにパケットロスが発生したことを検知する。受信ノードD103は、パケットロスが発生したデータパケット(例えばシーケンス番号「16」)の次に受信したデータパケット(例えばシーケンス番号「17」)のビットマップ(「001」)およびアドレスリストを調べる。そして、受信ノードD103は、このデータパケット(シーケンス番号「17」)が配送済みの受信ノードを再送要求先とする再送要求パケットを作成する。ここでは、受信ノードD103は、再送要求先の受信ノードとして受信ノードA100を選択したものとして、図5(A)に示す再送要求パケットを作成したものとする。そして、受信ノードD103は、作成した再送要求パケットをルータ402に送信する(パケットロス発生時のデータパケット受信処理)。
ルータ402は、受信した再送要求パケットをルータ401に送信する(ユニキャスト通信)。
ルータ401は、受信した再送要求パケットをルータ400に送信する(ユニキャスト通信)。
ルータ400は、受信した再送要求パケットを受信ノードA100に送信する(ユニキャスト通信)。
受信ノードA100は、ルータ400から受信した再送要求パケットに含まれるシーケンス番号(例えば「16」)および再送要求元アドレス(受信ノードDのIPアドレス)を取得する。そして、受信ノードA100は、受信ノードD103を送信先とする、再送データを格納した再送パケットを作成する。ここでは、受信ノードA100は、図6に示す再送パケットを作成したものとする。受信ノードA100は、作成した再送パケットをルータ400に送信する(再送要求パケット受信処理)。
ルータ400は、受信した再送パケットをルータ401に送信する(ユニキャスト通信)。
ルータ401は、受信した再送パケットをルータ402に送信する(ユニキャスト通信)。
ルータ402は、受信した再送パケットを受信ノードD103に送信する(ユニキャスト通信)。
受信ノードD103は、ルータ402から受信した再送パケットに含まれる再送データおよびシーケンス番号をデータ蓄積部に格納する(再送パケット受信処理)。
以上説明したように、実施の形態1に係る通信端末装置は、受信したデータパケットのヘッダに含まれるビットマップとアドレスリストから再送要求を行う受信ノードのIPアドレスを選択し、選択した受信ノードに対してユニキャスト通信により再送要求を行う。したがって、グループ内のある受信ノードにパケットロスが発生したとしても、従来の方法のようにすべての受信ノードが再送要求パケット受信処理を行うのではなく、選択された受信ノードのみが再送要求パケット受信処理を行う。このように、実施の形態1に係る通信端末装置は、ネットワーク全体の帯域および他の受信ノードに負荷をかけることなく再送要求を行うことができる。
(実施の形態2)
実施の形態1では、ある受信ノードから再送要求パケットを受信した場合、すぐに再送パケットを作成する例を示した。実施の形態2では、ある受信ノードから再送要求パケットを受信しても、同一データに対する再送要求パケットを他の受信ノードから受信するために、一定時間待機した後に再送パケットを作成する例を示す。
図11は、本発明の実施の形態2に係る通信端末装置の構成を示す図である。実施の形態1に係る通信端末装置と同じ構成要素については同一の符号を付し、重複箇所の説明を省略する。
図11において、通信端末装置150は、図2の通信端末装置100の構成に加えて、再送要求パケット待機部119をさらに備えている。再送要求先選択部113、再送要求パケット待機部119、再送要求パケット作成部114および再送パケット作成部115以外の構成要素は、実施の形態1と同様のものなのでここでは説明しない。
再送要求先選択部113は、実施の形態1の再送要求先選択部と同じように再送要求先の受信ノードのIPアドレスを選択する。そして、再送要求先選択部113は、再送要求先として選択した受信ノードのIPアドレスおよびパケットロスが発生したデータパケットのシーケンス番号を再送要求パケット待機部119に通知する。
再送要求パケット待機部119は、再送要求先選択部113から再送要求先の受信ノードのIPアドレスおよびパケットロスが発生したデータパケットのシーケンス番号が通知された後、同じシーケンス番号のデータの再送を要求する再送要求パケットを受信するために所定の時間待機する(再送要求パケット受信待機状態)。そして、再送要求パケット待機部119は、再送要求先選択部113から通知された再送要求先の受信ノードのIPアドレスおよびパケットロスが発生したデータパケットのシーケンス番号を再送要求パケット作成部114に通知する。このとき、再送要求パケット待機部119は、待機中に同じシーケンス番号のデータの再送を要求する再送要求パケットを再送パケット作成部115から渡された場合、この再送要求パケットに記載されている再送要求元のIPアドレスも再送要求パケット作成部114に通知する。
再送要求パケット作成部114は、実施の形態1の再送要求パケット作成部が有する機能に加え、さらに、再送要求パケット待機部119から複数の再送要求元のIPアドレスを通知された場合に、複数の再送元のIPアドレスを再送要求パケットに再送要求元アドレスとして記載する。
ここで、複数の再送元のIPアドレスが記載された再送要求パケットについて説明する。図12は、複数の再送元のIPアドレスが記載された再送要求パケットの構成の一例を示す図である。図12において、再送要求パケット710は、ヘッダ部711とペイロード712とを有する。ヘッダ部711には、宛先アドレス713、再送要求するデータパケットのシーケンス番号714、再送要求元となる受信ノードのIPアドレス716、717が記載されているアドレスリスト715が含まれる。ヘッダ部711は他のヘッダを有していてもよいが、説明の便宜上ここでは説明しない。
再送要求パケット作成部114の説明に戻る。再送要求パケット作成部114は、再送要求パケット待機部119から複数の再送要求元のIPアドレスを通知された場合に、すべての再送要求元のIPアドレスをアドレスリストに記載したユニキャスト方式の再送要求パケットを作成する。
再送パケット作成部115は、実施の形態1の再送パケット作成部が有する機能に加え、さらに、明示的マルチキャスト方式の再送パケットを作成する。
ここで、明示的マルチキャスト方式の再送パケットについて説明する。図13は、明示的マルチキャスト方式の再送パケットの構成の一例を示す図である。図13において、再送パケット810は、ヘッダ部811と、再送データを含むペイロード812とを有する。ヘッダ部811には、ルーティングヘッダ813およびシーケンス番号814が含まれる。ルーティングヘッダ813には、配送済みか否かを示すビットマップ815と、再送先となる受信ノードのIPアドレスが1つ以上記載されているアドレスリスト816とが含まれている。ヘッダ部811は他のヘッダを有していてもよいが、説明の便宜上ここでは説明しない。
再送パケット作成部115の説明に戻る。再送パケット作成部115は、複数の再送要求元のIPアドレスを含む再送要求パケットを受信した場合、すべての再送要求元のIPアドレスをアドレスリストに記載した明示的マルチキャスト方式の再送パケットを作成する。また、再送パケット作成部115は、再送要求パケット待機部119が再送要求パケット受信待機状態のときにパケットチェック部111から再送要求パケットを渡された場合、渡された再送要求パケットを再送要求パケット待機部119に渡す。
以下、上述のように構成された通信端末装置150の動作を説明する。
通信端末装置150は、パケットを受信すると、受信したパケットの種類によって、データパケット受信処理、再送要求パケット受信処理および再送パケット受信処理を行う。この動作は、実施の形態1と同様のものなのでここでは説明しない(図7参照)。
次に、実施の形態1と異なる、データパケット受信処理および再送要求パケット受信処理について説明する。再送パケット受信処理は実施の形態1と同様のものなのでここでは説明しない。
初めにデータパケット受信処理(ステップS300)について、図14に示すフローチャートを用いて説明する。
まず、ステップS311で、パケットロス検知部112は、パケットチェック部111から渡されたデータパケットに含まれるデータ(またはデータパケット全体)をデータ蓄積部117に格納する。
次いで、ステップS312において、パケットロス検知部112は、パケットロスが発生しているか否かを判定する。そして、パケットロス検知部112は、パケットロスが発生していないと判定した場合(S312:NO)、本フローを終了する。一方、パケットロス検知部112は、パケットロスが発生したと判定した場合(S312:YES)、パケットロスが発生したデータパケットのシーケンス番号と、保持している(最後に受信した)データパケットとを再送要求先選択部113に渡し、ステップS313に進む。
ステップS313において、再送要求先選択部113は、パケットロス検知部112から渡されたデータパケットのビットマップとアドレスリストから、再送要求先とする受信ノードを選択する。また、再送要求先選択部113は、再送要求を行うデータパケットのシーケンス番号を、データ蓄積部117に格納された表に記録する。そして、再送要求先選択部113は、選択した再送要求先の受信ノードのIPアドレスおよび再送要求を行うデータパケットのシーケンス番号を再送要求パケット待機部119に通知する。
次いで、ステップS314において、再送要求パケット待機部119は、再送要求先選択部113から再送要求先の受信ノードのIPアドレスおよびパケットロスが発生したデータパケットのシーケンス番号が通知された後、同じシーケンス番号のデータの再送を要求する再送要求パケットを受信するまで、所定の時間待機する(再送要求パケット受信待機処理)。再送要求パケット受信待機処理については、図15を用いて後述する。再送要求パケット受信待機処理の後、再送要求パケット待機部119は、再送要求先選択部113から通知された再送要求先の受信ノードのIPアドレスおよびパケットロスとなったデータパケットのシーケンス番号を再送要求パケット作成部114に通知する。また、再送要求パケット待機部119は、待機中に同じシーケンス番号のデータの再送を要求する再送要求パケットを再送パケット作成部115から渡された場合、この再送要求パケットに含まれる再送要求元のIPアドレスも再送要求パケット作成部114に通知する。
次いで、ステップS315において、再送要求パケット作成部114は、再送要求パケット待機部119から通知されたIPアドレスおよびシーケンス番号から、再送要求パケットを作成する。このとき、再送要求パケット作成部114は、再送要求パケット待機部119から複数の再送要求元のIPアドレスを通知された場合、すべての再送元のIPアドレスを再送要求元アドレスとして記載する。そして、再送要求パケット作成部114は、作成した再送要求パケットをパケット送信部118に送る。
次いで、ステップS316において、パケット送信部118は、再送要求パケット作成部114が作成した再送要求パケットを再送要求先の受信ノードに送信し、本フローを終了する。
次に、再送要求パケット受信待機処理(ステップS314)について、図15に示すフローチャートを用いて説明する。
まず、ステップS601において、再送要求パケット待機部119は、再送要求先選択部113から再送要求先の受信ノードのIPアドレスおよびパケットロスとなったデータパケットのシーケンス番号が通知された後、再送要求パケット受信待機状態に移行する。
次いで、ステップS602において、再送要求パケット待機部119は、再送パケット作成部115から再送要求パケットを受け取っているか否かを判定する。そして、再送要求パケット待機部119は、再送要求パケットを受け取っていると判定した場合(S602:YES)、ステップS603に進む。一方、再送要求パケット待機部119は、再送要求パケットを受け取っていないと判定した場合(S602:NO)、ステップS605に進む。
ステップS603において、再送要求パケット待機部119は、再送パケット作成部115から受け取った再送要求パケットに含まれる再送を要求されているデータパケットのシーケンス番号が、パケットロス検知部112がパケットロスを検知したデータパケットのシーケンス番号と同一であるか否かを判定する。そして、再送要求パケット待機部119は、2つのシーケンス番号が同一であると判定した場合(S603:YES)、ステップS604に進む。一方、再送要求パケット待機部119は、2つのシーケンス番号が同一でないと判定した場合(S603:NO)、ステップS605に進む。
ステップS604において、再送要求パケット待機部119は、再送パケット作成部115から受け取った再送要求パケットに含まれる再送要求元アドレスをすべて取得する。
ステップS605において、再送要求パケット待機部119は、再送要求パケット待機状態に移行してから一定時間を経過したか否かを判定する。そして、再送要求パケット待機部119は、一定時間を経過してないと判定した場合(S605:NO)、ステップS602に戻る。一方、再送要求パケット待機部119は、一定時間を経過したと判定した場合(S605:YES)、ステップS604で取得した再送要求元アドレスを再送要求パケット作成部114に通知し、本フローを終了する。
次に、再送要求パケット受信処理について、図16に示すフローチャートを用いて説明する。
まず、ステップS411において、再送パケット作成部115は、パケットチェック部111から渡された再送要求パケットに含まれる再送要求されているデータパケットのシーケンス番号を取得する。そして、再送パケット作成部115は、そのシーケンス番号のデータがデータ蓄積部117に格納されているか否かを判定する。そして、再送パケット作成部115は、データがデータ蓄積部117に格納されていないと判定した場合(S411:NO)、ステップS412に進む。一方、再送パケット作成部115は、データが格納されていると判定した場合(S411:YES)、ステップS416に進む。
ステップS412において、再送パケット作成部115は、再送要求パケット待機部119が再送要求パケット受信待機状態か否かを判定する。そして、再送パケット作成部115は、再送要求パケット待機部119が再送要求パケット受信待機状態であると判定した場合(S412:YES)、ステップS413に進む。一方、再送パケット作成部115は、再送要求パケット待機部119が再送要求パケット受信待機状態でないと判定した場合(S412:NO)、ステップS414に進む。
ステップS413において、再送パケット作成部115は、再送要求パケット受信待機状態の間に再送要求パケットを受信した場合、受信した再送要求パケットを再送要求パケット待機部119に渡す。そして、再送パケット作成部115は、再送要求パケット待機部119が再送要求パケット受信待機状態を終了したとき、ステップS414に進む。
ステップS414において、再送パケット作成部115は、再送要求されているデータパケットの再送パケットを受信するため、任意の時間待機する。
次いで、ステップS415において、再送パケット作成部115は、再送要求されているデータパケットのデータがデータ蓄積部117に格納されているか否かを再度判定する。そして、再送パケット作成部115は、データがデータ蓄積部117に格納されていると判定した場合(S415:YES)、ステップS416に進む。一方、再送パケット作成部115は、データがデータ蓄積部117に格納されていないと判定した場合(S415:NO)、ステップS414に戻る。したがって、再送パケット作成部115は、再送要求されたデータパケットのデータがデータ蓄積部117に格納されるまで、ステップS414とステップS415とを繰り返す。
ステップS416において、再送パケット作成部115は、再送要求元のIPアドレスが再送要求パケットに複数記載されているか否かを判定する。そして、再送パケット作成部115は、再送要求元のIPアドレスが1つであると判定した場合(S416:NO)、ステップS417に進む。一方、再送パケット作成部115は、再送要求元のIPアドレスが複数あると判定した場合(S416:YES)、ステップS418に進む。
ステップS417において、再送パケット作成部115は、再送要求元アドレスを宛先アドレスとするユニキャスト方式の再送パケットを作成する。そして、再送パケット作成部115は、作成した再送パケットをパケット送信部118に渡す。
ステップS418において、再送パケット作成部115は、すべての再送要求元アドレスをアドレスリストに記載した明示的マルチキャスト方式の再送パケットを作成する。そして、再送パケット作成部115は、作成した再送パケットをパケット送信部118に渡す。
ステップS419において、パケット送信部118は、再送パケット作成部115が作成した再送パケットを再送要求元の受信ノード(通信端末装置)に送信し、本フローを終了する。
以上説明したように、実施の形態2に係る通信端末装置は、あるシーケンス番号のデータの再送を要求する再送要求パケットを作成する際に、同じシーケンス番号のデータの再送を要求する再送要求パケットを他の受信ノードから受信した場合、自ノードのIPアドレスだけでなく、その再送要求パケットに再送要求元として記載されているIPアドレスも再送要求元として再送要求パケットに記載する。また、実施の形態2に係る通信端末装置は、複数の再送要求元アドレスが記載されている再送要求パケットを受信した場合、すべての再送要求元アドレスを宛先アドレスとする明示的マルチキャスト方式の再送パケットを作成し、作成した再送パケットを送信する。本実施の形態によれば、実施の形態1の効果に加えて、ネットワーク全体の帯域の消費をさらに低減することができる。
(実施の形態3)
実施の形態1では、パケットロスを検知した場合、再送要求元アドレスとして自ノードのIPアドレスを再送要求パケットに記載する例を示した。実施の形態3では、パケットロスを検知した場合、すべての未配送の受信ノードのIPアドレスを再送要求パケットに記載する例を示す。
図17は、本発明の実施の形態3に係る通信端末装置の構成を示す図である。実施の形態1に係る通信端末装置と同じ構成要素については同一の符号を付し、重複箇所の説明を省略する。
図17において、通信端末装置160は、図2の通信端末装置100の構成に加えて、数珠繋ぎ配送チェック部120をさらに備えている。再送要求先選択部113、数珠繋ぎ配送チェック部120、再送要求パケット作成部114および再送パケット作成部115以外の構成要素は、実施の形態1と同様のものなのでここでは説明しない。
再送要求先選択部113は、実施の形態1の再送要求先選択部と同じように再送要求先の受信ノードのIPアドレスを選択する。そして、再送要求先選択部113は、再送要求先として選択した受信ノードのIPアドレス、パケットロスが発生したデータパケットのシーケンス番号および保持している(最後に受信した)データパケットを数珠繋ぎ配送チェック部120に渡す。
数珠繋ぎ配送チェック部120は、再送要求先選択部113から渡されたデータパケットを自ノードが数珠繋ぎ配送によって他の受信ノードに転送しているか否かを判定する。数珠繋ぎ配送チェック部120は、数珠繋ぎ配送によって転送しているか否かを判定するには、受信したデータパケットを自ノードが別の受信ノードに転送しているか否かを検知してもよいし、ビットマップで自ノードを示すビット以外に未配送を示すビットが1つでもあれば数珠繋ぎ配送を行っていると判定してもよいし、ルータに自ノードが数珠繋ぎを行う受信ノードか否かを問い合わせてもよいし、データパケットに数珠繋ぎ配送を行う受信ノードか否かを示すフラグを立てて、そのフラグを調べることで数珠繋ぎ配送を検知してもよい。そして、数珠繋ぎ配送チェック部120は、数珠繋ぎ配送によって転送していないと判定した場合、再送要求先選択部113から通知された再送要求先の受信ノードのIPアドレスおよびパケットロスとなったデータパケットのシーケンス番号を再送要求パケット作成部114に通知する。一方、数珠繋ぎ配送チェック部120は、数珠繋ぎ配送によって転送されていると判定した場合、再送要求先選択部113から通知された再送要求先の受信ノードのIPアドレスおよびパケットロスとなったデータパケットのシーケンス番号に加え、再送要求先選択部113から渡されたデータパケットのアドレスリストに記載された複数のIPアドレスのうち、自ノードのIPアドレスより後ろに記載されたIPアドレスも再送要求元のIPアドレスとして再送要求パケット作成部114に通知する。
再送要求パケット作成部114は、実施の形態1の再送要求パケット作成部が有する機能に加え、さらに、数珠繋ぎ配送チェック部120から複数の再送要求元のIPアドレスを通知された場合に、すべての再送要求元のIPアドレスを再送要求パケットに再送要求元アドレスとして記載する。
再送パケット作成部115は、実施の形態1の再送パケット作成部が有する機能に加え、さらに、明示的マルチキャスト方式の再送パケットを作成する。再送パケット作成部115は、複数の再送先のIPアドレスが記載された再送要求パケットを受信した場合、すべての再送先のIPアドレスをアドレスリストに記載した明示的マルチキャスト方式の再送パケットを作成する。
以下、上述のように構成された通信端末装置160の動作を説明する。
通信端末装置160は、パケットを受信すると、受信したパケットの種類によって、データパケット受信処理、再送要求パケット受信処理および再送パケット受信処理を行う。この動作は、実施の形態1と同様のものなのでここでは説明しない(図7参照)。
次に、実施の形態1と異なる、データパケット受信処理および再送要求パケット受信処理について説明する。再送パケット受信処理は実施の形態1と同様のものなのでここでは説明しない。
初めにデータパケット受信処理について、図18に示すフローチャートを用いて説明する。
まず、ステップS321において、パケットロス検知部112は、パケットチェック部111から渡されたデータパケットに含まれるデータ(またはデータパケット全体)をデータ蓄積部117に格納する。
次いで、ステップS322において、パケットロス検知部112は、パケットロスが発生しているか否かを判定する。そして、パケットロス検知部112は、パケットロスが発生していないと判定した場合(S322:NO)、本フローを終了する。一方、パケットロス検知部112は、パケットロスが発生したと判定した場合(S322:YES)、損失したデータパケットのシーケンス番号と、保持している(最後に受信した)データパケットとを再送要求先選択部113に渡し、ステップS323に進む。
ステップS323において、再送要求先選択部113は、パケットロス検知部112から渡されたデータパケットのビットマップとアドレスリストから、再送要求先とする受信ノードを選択する。また、再送要求先選択部113は、再送要求を行うデータパケットのシーケンス番号を、データ蓄積部117に格納された表に記録する。そして、再送要求先選択部113は、選択した再送要求先の受信ノードのIPアドレスおよび再送要求を行うデータパケットのシーケンス番号ならびに保持している(最後に受信した)データパケットを数珠繋ぎ配送チェック部120に渡す。
次いで、ステップS324において、数珠繋ぎ配送チェック部120は、再送要求先選択部113から渡されたデータパケットが数珠繋ぎ配送によって転送されているか否かを判定する。そして、数珠繋ぎ配送チェック部120は、数珠繋ぎ配送によって転送されていると判定した場合(S324:YES)、ステップS325に進む。一方、数珠繋ぎ配送チェック部120は、数珠繋ぎ配送によって転送されていないと判定した場合(S324:NO)、ステップS326に進む。
ステップS325において、数珠繋ぎ配送チェック部120は、再送要求先の受信ノードのIPアドレスおよびパケットロスとなったデータパケットのシーケンス番号ならびに再送要求先選択部113から渡されたデータパケットのアドレスリストに記載された複数のIPアドレスのうち、自ノードのIPアドレスより後ろに記載されたIPアドレスを再送要求パケット作成部114に通知する。
ステップS326において、再送要求パケット作成部114は、数珠繋ぎ配送チェック部120から通知されたIPアドレスおよびシーケンス番号から、再送要求パケットを作成する。このとき、再送要求パケット作成部114は、数珠繋ぎ配送チェック部120から複数の再送要求元のIPアドレスを通知された場合、すべての再送要求元のIPアドレスを再送要求パケットに再送要求元アドレスとして記載する。そして、再送要求パケット作成部114は、作成した再送要求パケットをパケット送信部118に送る。
次いで、ステップS327において、パケット送信部118は、再送要求パケット作成部114が作成した再送要求パケットを再送要求先の受信ノードに対してユニキャスト通信で送信し、本フローを終了する。
次に、再送要求パケット受信処理について、図19に示すフローチャートを用いて説明する。
まず、ステップS421において、再送パケット作成部115は、パケットチェック部111から渡された再送要求パケットに含まれる再送要求されているデータパケットのシーケンス番号を取得する。そして、再送パケット作成部115は、そのシーケンス番号のデータがデータ蓄積部117に格納されているか否かを判定する。そして、再送パケット作成部115は、データがデータ蓄積部117に格納されていないと判定した場合(S421:NO)、ステップS422に進む。一方、再送パケット作成部115は、データが格納されていると判定した場合(S421:YES)、ステップS424に進む。
ステップS422において、再送パケット作成部115は、再送要求されているデータパケットを受信するため任意の時間待機する。
次いで、ステップS423において、再送パケット作成部115は、再送要求されているデータパケットのデータがデータ蓄積部117に格納されているか否かを再度判定する。そして、再送パケット作成部115は、データがデータ蓄積部117に格納されていると判定した場合(S423:YES)、ステップS424に進む。一方、再送パケット作成部115は、データが格納されていないと判定した場合(S423:NO)、ステップS422に戻る。したがって、再送パケット作成部115は、再送要求されたデータパケットのデータがデータ蓄積部117に格納されるまで、ステップS422とステップS423とを繰り返す。
ステップS424において、再送パケット作成部115は、再送要求元のIPアドレスが再送要求パケットに複数記載されているか否かを判定する。そして、再送パケット作成部115は、再送要求元のIPアドレスが1つと判定した場合(S424:NO)、ステップS425に進む。一方、再送パケット作成部115は、再送要求元のIPアドレスが複数あると判定した場合(S424:YES)、ステップS426に進む。
ステップS425において、再送パケット作成部115は、再送要求元アドレスを宛先アドレスとするユニキャスト方式の再送パケットを作成する。そして、再送パケット作成部115は、作成した再送パケットをパケット送信部118に渡す。
ステップS426において、再送パケット作成部115は、すべての再送要求元アドレスをアドレスリストに記載した明示的マルチキャスト方式の再送パケットを作成する。そして、再送パケット作成部115は、作成した再送パケットをパケット送信部118に渡す。
ステップS427において、パケット送信部118は、再送パケット作成部115が作成した再送パケットを再送要求元の受信ノード(通信端末装置)に送信し、本フローを終了する。
以上説明したように、実施の形態3に係る通信端末装置は、数珠繋ぎ配送を行っている状態でパケットロスを検知した場合に、アドレスリスト中で自ノードのIPアドレスより後ろに記載された受信ノードのIPアドレスを再送要求元アドレスとして再送要求パケットを作成し、作成した再送要求パケットを送信する。また、実施の形態3に係る通信端末装置は、複数の再送要求元アドレスが記載されている再送要求パケットを受信した場合、すべての再送要求元アドレスを宛先アドレスとする明示的マルチキャスト方式の再送パケットを作成し、作成した再送パケットを送信する。このように、本実施の形態によれば、実施の形態1の効果に加えて、数珠繋ぎ配送が起きている場合により早い再送を行うことができる。
(実施の形態4)
実施の形態1では、データパケット内のビットマップおよびアドレスリストを用いて再送要求先の受信ノードを選択する例を示した。実施の形態4では、他の受信ノードと情報交換パケットを交換することで他の受信ノードの応答時間をあらかじめ算出し、ビットマップおよびアドレスリストに加えてさらに他の受信ノードの応答時間も用いて再送要求先の受信ノードを選択する例を示す。
図20は、本発明の実施の形態4に係る通信端末装置の構成を示す図である。実施の形態1に係る通信端末装置と同じ構成要素については同一の符号を付し、重複箇所の説明を省略する。
図20において、通信端末装置170は、図2の通信端末装置100の構成に加えて、情報交換部121および再送応答時間計算部122をさらに備えている。パケットチェック部111、パケットロス検知部112、再送要求先選択部113、データ蓄積部117、パケット送信部118、情報交換部121および再送応答時間計算部122以外の構成要素は、実施の形態1と同様のものなのでここでは説明しない。
パケットチェック部111は、実施の形態1のパケットチェック部と同じように、パケット受信部110が受信したパケットの種類を判別する。そして、パケットチェック部111は、パケットの種類に応じた出力先にパケットを渡す。
パケットの種類は、データパケット、再送要求パケット、再送パケット、問合せ用情報交換パケットおよび応答用情報交換パケットがある。データパケット、再送要求パケットおよび再送パケットは、実施の形態1と同様のものなのでここでは説明しない。問合せ用情報交換パケットは、他の受信ノードの応答時間を取得しようとする受信ノード(通信端末装置)が作成するユニキャスト方式のパケットである。応答用情報交換パケットは、問合せ用情報交換パケットを受信した受信ノード(情報端末装置)が作成するユニキャスト方式のパケットである。
パケットチェック部111の説明に戻る。パケットチェック部111は、受信したパケットをデータパケットと判別した場合、このパケットをパケットロス検知部112に渡す。また、パケットチェック部111は、受信したパケットを再送要求パケットと判別した場合、このパケットを再送パケット作成部115に渡す。また、パケットチェック部111は、受信したパケットを再送パケットと判別した場合、このパケットを再送パケット受信部116に渡す。また、パケットチェック部111は、受信したパケットを問合せ用情報交換パケットまたは応答用情報交換パケットと判別した場合、このパケットを情報交換部121に渡す。
パケットロス検知部112は、実施の形態1のパケットロス検知部が有する機能に加え、パケットチェック部111から渡されたデータパケットに記載されたアドレスリストおよびビットマップをデータ蓄積部117に格納する。パケットロス検知部112は、すでにデータ蓄積部117に同一のアドレスリストおよびビットマップが格納されている場合、データパケットに記載されたアドレスリストおよびビットマップを格納しなくてもよい。
情報交換部121は、他の受信ノードとの間の往復遅延時間(Round Trip Time:以下「RTT」という)を測定するための問合せ用情報交換パケットを定期的に作成する。このとき、情報交換部121は、データ蓄積部117に格納されている他の受信ノードのIPアドレスを取得し、それらのアドレスを宛先として問合せ用情報交換パケットを作成する。
ここで、問合せ用情報交換パケットについて説明する。図21は、問合せ用情報交換パケットの構成の一例を示す図である。図21において、問合せ用情報交換パケット900は、ヘッダ部901と、ペイロード902とを有する。ヘッダ部901には、宛先アドレス903、問合せ元アドレス904および問合せ用情報交換パケットの送信時刻905が含まれる。ヘッダ部901は、他のヘッダを有していてもよいが、説明の便宜上ここでは説明しない。
情報交換部121の説明に戻る。情報交換部121は、データ蓄積部117に格納された他の受信ノードのIPアドレスを定期的に取得する。そして、情報交換部121は、ヘッダ部901の宛先アドレス903に、取得した他の受信ノードのIPアドレスを記載する。また、情報交換部121は、問合せ元アドレス904に自らのIPアドレス(図21の例では受信ノードCのIPアドレス)を記載する。そして、情報交換部121は、作成した問合せ用情報交換パケットをパケット送信部118に渡す。
また、情報交換部121は、パケットチェック部111から問合せ用情報交換パケットを渡された場合、この問合せ用情報交換パケットの問合せ元アドレス904に記載されたIPアドレスを宛先とする応答用情報交換パケットを作成する。このとき、情報交換部121は、問合せ用情報交換パケットの送信時刻905に記載された時刻を応答用情報交換パケットに記載する。そして、情報交換部121は、作成した応答用情報交換パケットをパケット送信部118に渡す。
また、情報交換部121は、パケットチェック部111から応答用情報交換パケットを渡された場合、このパケットを再送応答時間計算部122に渡す。
再送応答時間計算部122は、情報交換部121から渡された応答用情報交換パケットの送信時刻905に記載された時刻と現在時刻との差から、情報交換パケットを交換した受信ノードとの間のRTTを算出する。そして、再送応答時間計算部122は、算出したRTTをその受信ノードのIPアドレスと共にデータ蓄積部117に格納する。このとき、RTTの急な変化に追随しすぎないように、過去のRTTを加重平均した値をデータ蓄積部117に格納するようにしてもよい。
データ蓄積部117は、実施の形態1のデータ蓄積部が有する機能に加え、再送応答時間計算部122が算出した各受信ノードのRTTを応答時間として格納する。図22は、応答時間を記録した表の一例を示す図である。この表は、受信ノードA〜Cについて応答時間が記録されている例である。この表は、後述する再送要求先選択部113によって使用される。
再送要求先選択部113は、実施の形態1の再送要求先選択部と同じように、パケットロス検知部112から通知されたパケットロスが発生したデータパケットについて、どの受信ノードに対して再送要求を行うかを選択する。このとき、再送要求先選択部113は、パケットロス検知部112から渡されたデータパケット内のビットマップおよびアドレスリストに加え、データ蓄積部117に格納された各受信ノードの応答時間を記録した表も用いて再送要求を行う受信ノードを選択する。
再送要求先選択部113は、パケットロス検知部112から渡されたデータパケット内のビットマップを検索し、配送済みとなっているビットを選択する。そして、再送要求先選択部113は、同じデータパケットのアドレスリストを調べ、選んだビットに対応する受信ノードのIPアドレスを取得する。ビットマップ中に配送済みとなっているビットが複数存在した場合、再送要求先選択部113は、データ蓄積部117に格納された各受信ノードの応答時間の表(図22参照)を調べ、配送済みの各受信ノードの応答時間と再送要求するデータを再生するまでの時間とを比較する。その結果、再送要求先選択部113は、すべての受信ノードの応答時間がこのデータを再生するまでの時間を上回っている場合、再送要求をしても再生するまでに再送データを受信することができないと判断し、再送要求を行わない。また、再送要求先選択部113は、一つ以上の受信ノードの応答時間がこのデータを再生するまでの時間を下回っている場合、これらの下回っている受信ノードのうちのいずれかを再送要求先として選択する。例えば、再送要求先選択部113は、最も応答時間の短い受信ノードを再送要求先として選択すればよい。
例えば、図23に示すデータパケット(図3のデータパケットとビットマップ505が異なる)のアドレスリスト506には、受信ノードAのIPアドレス507、受信ノードCのIPアドレス508および受信ノードDのIPアドレス509が記載されているものとする。また、ビットマップ505には、アドレスリスト506に記載された受信ノードのIPアドレスそれぞれについて配送済みか否かを示すビットが、アドレスリスト506内のIPアドレス507〜509の並び順通りに1ビットずつ割当てられているものとする。図23に示すデータパケットの例では、配送済みを示すビットを0、未配送を示すビットを1とすると、ビットマップは「0・0・1」であるので、受信ノードAおよび受信ノードCは配送済み(0)であり、受信ノードDは未配送(1)であることを示している。この場合、再送要求先選択部113は、再送要求先の候補として受信ノードAおよび受信ノードCのIPアドレスを選択する。そして、再送要求先選択部113は、受信ノードAおよび受信ノードCの応答時間と再送要求するデータを再生するまでの時間とを比較する。例えば、各受信ノードの応答時間が図22に示すものであり、再送要求するデータを再生するまでの時間が15ミリ秒(ms)の場合、再送要求先選択部113は、受信ノードAの応答時間のみが15ミリ秒を下回っているので、受信ノードAを再送要求先として選択する。
再送要求先選択部113は、実施の形態1の再送要求先選択部と同じように、再送要求先として選択した受信ノードのIPアドレスおよびパケットロスが発生したデータパケットのシーケンス番号を再送要求パケット作成部114に通知する。また、再送要求先選択部113は、実施の形態1の再送要求先選択部と同じように、再送要求を行うデータパケットのシーケンス番号を記録する(図4参照)。
パケット送信部118は、実施の形態1のパケット送信部が有する機能に加え、さらに、情報交換部121が作成した問合せ用情報交換パケットの送信時刻905に現在時刻を記載する。また、パケット送信部118は、問合せ用情報交換パケットおよび応答用情報交換パケットをネットワーク200にユニキャスト通信により送信する。なお、パケット送信部118は、問合せ用情報交換パケットの送信時刻905をペイロード902に記載してもよい。
以下、上述のように構成された通信端末装置170の動作を説明する。通信端末装置170の動作は、定期的かつ自発的に行う問合せ用情報交換パケット送信処理と、パケットを受信したときに行うパケット受信処理とに大きく分けられる。
図24は、問合せ用情報交換パケット送信処理を行うときの通信端末装置170の動作を示すフローチャートである。
まず、ステップS700において、情報交換部121は、データ蓄積部117に格納されている他の受信ノードのIPアドレスを取得し、それらのアドレスを宛先とする問合せ用情報交換パケットを作成する。そして、情報交換部121は、作成した問合せ用情報交換パケットをパケット送信部118に渡す。
次いで、ステップS701において、パケット送信部118は、情報交換部121が作成した問合せ用情報交換パケットに現在時刻を送信時刻として記載する。そして、パケット送信部118は、問合せ用情報交換パケットを問い合わせ先の受信ノードに送信し、本フローを終了する。
図25は、パケット受信処理を行うときの通信端末装置170の動作を示すフローチャートである。
まず、ステップS100において、パケット受信部110は、通信ネットワーク200からパケットを受信する。そして、パケット受信部110は、受信したパケットをパケットチェック部111に渡す。
次いで、ステップS200において、パケットチェック部111は、パケット受信部110が受信したパケットの種類を判別する。そして、パケットチェック部111は、受信したパケットをデータパケットと判別した場合(S200:データパケット)、そのパケットをパケットロス検知部112に渡して、ステップS300に進む。パケットチェック部111は、受信したパケットを再送要求パケットと判別した場合(S200:再送要求パケット)、そのパケットを再送パケット作成部115に渡して、ステップS400に進む。パケットチェック部111は、受信したパケットを再送パケットと判別した場合(S200:再送パケット)、そのパケットを再送パケット受信部116に渡して、ステップS500に進む。パケットチェック部111は、受信したパケットを問合せ用情報交換パケットまたは応答用情報交換パケットと判別した場合(S200:問合せ用情報交換パケット、応答用情報交換パケット)、このパケットを情報交換部121に渡して、ステップS800に進む。
ステップS300では、データパケット受信処理を行い、本フローを終了する。データパケット受信処理については、図27を用いて後述する。
ステップS400では、再送要求パケット受信処理を行い、本フローを終了する。再送要求パケット受信処理は、実施の形態1と同様のものなので説明を省略する。
ステップS500では、再送パケット受信処理を行い、本フローを終了する。再送パケット受信処理は、実施の形態1と同様のものなので説明を省略する。
ステップS800では、情報交換パケット受信処理を行い、本フローを終了する。情報交換パケット受信処理は、受信した情報交換パケットの種類に応じて処理内容が異なる。情報交換パケット受信処理は、受信した情報交換パケットが問合せ用情報交換パケットの場合、応答用情報交換パケットを問合せ元に送信する処理である。一方、情報交換パケット受信処理は、受信した情報交換パケットが応答用情報交換パケットの場合、情報交換を行った受信ノードのIPアドレスおよびその応答時間をデータ蓄積部117に格納する処理である。情報交換パケット受信処理については、図26を用いて後述する。
次に、実施の形態1と異なる、データパケット受信処理および情報交換パケット受信処理およびについて説明する。
初めに、情報交換パケット受信処理(ステップS800)について、図26に示すフローチャートを用いて説明する。
まず、ステップS801において、情報交換部121は、パケットチェック部111から渡された情報交換パケットの種類を判別する。そして、情報交換部121は、受信したパケットを問合せ用情報交換パケットと判別した場合(S801:問合せ用情報交換パケット)、ステップS802に進む。一方、情報交換部121は、受信したパケットを応答用情報交換パケットと判別した場合(S801:応答用情報交換パケット)、そのパケットを再送応答時間計算部122に渡して、ステップS804に進む。
ステップS802において、情報交換部121は、問合せ用情報交換パケットの問合せ元アドレスに記載されたIPアドレスを宛先とする応答用情報交換パケットを作成する。このとき、情報交換部121は、問合せ用情報交換パケットの送信時刻に記載された送信時刻を作成した応答用情報交換パケットに記載する。そして、情報交換部121は、応答用情報交換パケットをパケット送信部118に渡す。
次いで、ステップS803において、パケット送信部118は、情報交換部121が作成した応答用情報交換パケットを問合せ元の受信ノードに送信し、本フローを終了する。
ステップS804において、再送応答時間計算部122は、情報交換部121から渡された応答用情報交換パケットに記載された送信時刻と現在時刻の時間差から、情報交換パケットを交換した受信ノードのRTTを算出する。そして、再送応答時間計算部122は、算出した受信ノードのRTTをその受信ノードのIPアドレスと共にデータ蓄積部117に格納し、本フローを終了する。
次に、データパケット受信処理(ステップS300)について、図27に示すフローチャートを用いて説明する。
まず、ステップS331において、パケットロス検知部112は、パケットチェック部111から渡されたデータパケットに含まれるデータ(またはデータパケット全体)をデータ蓄積部117に格納する。
次いで、ステップS332において、パケットロス検知部112は、パケットチェック部111から渡されたデータパケットに記載されたアドレスリストおよびビットマップをデータ蓄積部117に格納する。
次いで、ステップS333において、パケットロス検知部112は、パケットロスが発生しているか否かを判定する。パケットロス検知部112は、パケットロスが発生していないと判定した場合(S333:NO)、本フローを終了する。一方、パケットロス検知部112は、パケットロスが発生したと判定した場合(S333:YES)、パケットロスが発生したデータパケットのシーケンス番号と、保持している(最後に受信した)データパケットとを再送要求先選択部113に渡し、ステップS334に進む。
ステップS334において、再送要求先選択部113は、パケットロス検知部112から渡されたデータパケットのビットマップおよびアドレスリストから、配送済みとなっている受信ノードのIPアドレスを取得する。そして、再送要求先選択部113は、データ蓄積部117に格納された配送済みの各受信ノードの応答時間を調べる。そして、再送要求先選択部113は、各受信ノードの応答時間が再送要求するデータを再生するまでの時間を上回るか否かを判定する。再送要求先選択部113は、すべての受信ノードの応答時間がこのデータを再生するまでの時間を上回っていると判定した場合(S334:YES)、本フローを終了する。一方、再送要求先選択部113は、一つ以上の受信ノードの応答時間がこのデータを再生するまでの時間を下回っていると判定した場合(S334:NO)、ステップS335に進む。
ステップS335において、再送要求先選択部113は、応答時間がこのデータを再生するまでの時間を下回っている受信ノードのうちのいずれかを再送要求先として選択する。再送要求先選択部113は、選択した再送要求先の受信ノードのIPアドレスおよび再送要求を行うデータパケットのシーケンス番号を再送要求パケット作成部114に通知する。
ステップS336において、再送要求パケット作成部114は、再送要求先選択部113から通知されたIPアドレスおよびシーケンス番号から、ユニキャスト方式の再送要求パケットを作成する。そして、再送要求パケット作成部114は、作成した再送要求パケットをパケット送信部118に渡す。
次いで、ステップS337において、パケット送信部118は、再送要求パケット作成部114が作成した再送要求パケットを再送要求先の受信ノードに送信し、本フローを終了する。
以上説明したように、実施の形態4に係る通信端末装置は、問合せ用情報交換パケットおよび応答用情報交換パケットを用いて、他の受信ノードの応答時間を算出する。そして、実施の形態4に係る通信端末装置は、ビットマップおよびアドレスリストに加えてさらに算出された応答時間も用いて再送要求を行う受信ノードを選択し、選択した受信ノードに対してユニキャスト通信により再送要求を行う。このように、本実施の形態によれば、実施の形態1の効果に加えて、再送要求を行うデータを再生する時までに再送データを受信できる受信ノードを再送要求先として選択することができる。
(実施の形態5)
実施の形態4では、他の受信ノードと情報交換パケットを交換することで他の受信ノードの応答時間をあらかじめ算出し、ビットマップ、アドレスリストおよび他の受信ノードの応答時間を用いて再送要求先の受信ノードを選択する例を示した。実施の形態5では、他の受信ノードと情報交換パケットを交換することで、他の受信ノードのセッション情報などを収集し、ビットマップ、アドレスリストならびに他の受信ノードのセッション情報などを用いて再送要求先の受信ノードを選択する例を示す。
図28は、本発明の実施の形態5に係る通信端末装置の構成を示す図である。実施の形態4に係る通信端末装置と同じ構成要素については同一の符号を付し、重複箇所の説明を省略する。
図28において、通信端末装置180は、図20の通信端末装置170の構成に加えて、セッション情報管理部123をさらに備えている。再送要求先選択部113、データ蓄積部117、情報交換部121、再送応答時間計算部122およびセッション情報管理部123以外の構成要素は、実施の形態4と同様のものなのでここでは説明しない。
情報交換部121は、実施の形態4の情報交換部と同じように、他の受信ノードのセッション情報などを取得するための問合せ用情報交換パケットを定期的に作成する。このとき、情報交換部121は、一の受信ノードに対して複数の一連の情報交換パケットを作成する。また、情報交換部121は、他の受信ノードとの間の損失イベント率を測定するために、シーケンス番号およびその受信ノードと情報交換パケットを最後に交換した時のRTTを問合せ用情報交換パケットに記載する。
ここで、問合せ用情報交換パケットについて説明する。図29は、問合せ用情報交換パケットの構成の一例を示す図である。図29において、問合せ用情報交換パケット910は、ヘッダ部911と、ペイロード912とを有する。ヘッダ部911には、宛先アドレス913、問合せ元アドレス914、問合せ用情報交換パケットの送信時刻915、RTT916およびシーケンス番号917が含まれる。ヘッダ部911は、他のヘッダを有していてもよいが、説明の便宜上ここでは説明しない。
情報交換部121の説明に戻る。情報交換部121は、データ蓄積部117に格納された他の受信ノードのIPアドレスを定期的に取得する。そして、情報交換部121は、ヘッダ部911の宛先アドレス913に、取得した他の受信ノードのIPアドレスを記載する。また、情報交換部121は、問合せ元アドレス914に自らのIPアドレス(図29の例では受信ノードCのIPアドレス)を記載し、RTT916に問い合わせ先の受信ノードとの間で最後に測定したRTT(図29の例では「30(ミリ秒)」)を記載し、シーケンス番号917に一連の問合せ用情報交換パケット間で連続するシーケンス番号(図29の例では整数「3」)を記載する。なお、情報交換部121は、RTT916およびシーケンス番号917をペイロード912に記載してもよい。そして、情報交換部121は、作成した問合せ用情報交換パケットをパケット送信部118に渡す。
また、情報交換部121は、パケットチェック部111から問合せ用情報交換パケットを渡された場合、一連の問合せ用情報交換パケットにパケットロスが発生しているか否かを判定する。例えば、情報交換部121は、一連の問合せ用情報交換パケットのヘッダ部に記載されたシーケンス番号を調べることで、パケットロスの発生を検知することができる。情報交換部121は、パケットロスが発生したと判定した場合、問合せ用情報交換パケットに記載されたRTTから1RTT以内のパケットロスを1イベント損失として、前回問合せ用情報交換パケットを受信した時刻からのイベント損失の発生割合である損失イベント率を算出する。さらに、情報交換部121は、受信できた問合せ用情報交換パケットのデータ量を求める。そして、情報交換部121は、求めた損失イベント率および受信できたデータ量をその受信ノードのIPアドレスと関連づけてデータ蓄積部117に格納する。
また、情報交換部121は、実施の形態4の情報交換部と同じように、問合せ用情報交換パケットの問合せ元アドレスに記載されたIPアドレスを宛先とする応答用情報交換パケットを作成する。このとき、情報交換部121は、問合せ用情報交換パケットに記載された送信時刻だけでなく、損失イベント率および受信できたデータ量も応答用情報交換パケットに記載する。さらに、情報交換部121は、自ノードがデータパケットを確保しうる時間や自ノードの処理性能などの情報を応答用情報交換パケットに記載してもよい。そして、情報交換部121は、作成した応答用情報交換パケットをパケット送信部118に渡す。
また、情報交換部121は、パケットチェック部111から応答用情報交換パケットを渡された場合、このパケットをセッション情報管理部123に渡す。
セッション情報管理部123は、情報交換部121から渡された応答用情報交換パケットの送信時刻905に記載された時刻と現在時刻との時間差から、情報交換を行った受信ノードとのRTTを算出する。そして、セッション情報管理部123は、算出したRTTをその受信ノードのIPアドレスと関連付けてデータ蓄積部117に格納する。このとき、RTTの急な変化に追随しすぎないように、過去のRTTを加重平均した値をデータ蓄積部117に格納するようにしてもよい。
また、セッション情報管理部123は、定期的に他の受信ノードから返信されてくる応答用情報交換パケットに記載された損失イベント率および受信できたデータ量ならびに応答用情報交換パケットに記載された送信時刻から算出されるRTTなどの情報を管理する。そして、セッション情報管理部123は、それらの情報から、情報交換パケットを交換している受信ノードの利用可能な空き帯域を推定する。
セッション情報管理部123は、TFRC(TCP Friendly Rate Control)に基づいて他の受信ノードの利用可能な空き帯域を推定する。TFRCでは、他の受信ノードの利用可能な空き帯域が以下の式に基づいて推定される(M. Handley et al., “TCP Friendly Rate Control (TFRC): Protocol Specification”, RFC 3448.を参照)。
ただし、X:利用可能な帯域(bps)、R:RTT(秒)、b:TCPのACK数、p:損失イベント率、s:パケットサイズ(バイト)、t_RTO:TCPのタイムアウト値(=4×R)を示す。
このように、セッション情報管理部123は、RTTおよび損失イベント率から、他の受信ノードの利用可能な空き帯域を推定する。そして、セッション情報管理部123は、他の受信ノードの利用可能な空き帯域の推定値を再送応答時間計算部122に渡す。
再送応答時間計算部122は、応答用情報交換パケットに記載された損失イベント率およびセッション情報管理部123から渡された利用可能な空き帯域の推定値から、受信ノードの応答時間を修正するための補正値を算出する。再送応答時間計算部122は、相手の受信ノードの利用可能な空き帯域の値が大きい場合、再送要求しても帯域に余裕があるため補正値を大きくする。一方、再送応答時間計算部122は、相手の受信ノードの利用可能な空き帯域の値が小さい場合、補正値を小さくする。また、再送応答時間計算部122は、相手の受信ノードとの間の損失イベント率が高い場合、再送要求しても再送パケットまたは再送要求パケットが失われる可能性が高いため補正値を小さくする。一方、再送応答時間計算部122は、相手の受信ノードとの間の損失イベント率が低ければ、補正値を大きくする。このとき、再送応答時間計算部122は、応答用情報交換パケットに記載されたその他の情報を用いて補正値を算出してもよい。例えば、応答用情報交換パケットに受信ノードの処理性能に関する情報が含まれていた場合、再送応答時間計算部122は、受信ノードの処理性能が高ければ補正値を大きくする。一方、再送応答時間計算部122は、受信ノードの処理性能が低ければ補正値を小さくする。そして、再送応答時間計算部122は、算出した補正値をその受信ノードのIPアドレスと共にデータ蓄積部117に格納する。なお、相手の受信ノードがデータを保存する時間が応答用情報交換パケットに記載されていた場合、再送応答時間計算部122は、データ蓄積部117に格納された各受信ノードの応答時間の表(図22参照)を調べ、相手の受信ノードの応答時間とその受信ノードがデータを保存する時間とを比較する。その結果、再送応答時間計算部122は、相手の受信ノードの応答時間がその受信ノードがデータを保存する時間を上回っている場合、再送要求をしても再生するまでに再送データを受信することができないと判断し、自ノードがその受信ノードに対して再送要求を行わないようにする。例えば、再送応答時間計算部122は、データ蓄積部117に格納された各受信ノードの応答時間の表(図22参照)からその受信ノードの応答時間を削除することで、自ノードがその受信ノードに対して再送要求を行わないようにすることができる。また、再送応答時間計算部122は、各受信ノードの応答時間の表におけるその受信ノードの応答時間の数値を極めて大きい値に修正することで、自ノードがその受信ノードに対して再送要求を行わないようにすることができる。
データ蓄積部117は、実施の形態4のデータ蓄積部が有する機能に加え、再送応答時間計算部122によって算出された応答時間の補正値を格納する。これらの情報は、後述する再送要求先選択部113によって使用される。
再送要求先選択部113は、実施の形態4の再送要求先選択部と同じように、パケットロス検知部112から通知されたパケットロスが発生したデータパケットについて、どの受信ノードに対して再送要求を行うかを選択する。このとき、再送要求先選択部113は、パケットロス検知部112から渡されたデータパケット内のビットマップ、アドレスリストおよび各受信ノードの応答時間に加え、データ蓄積部117に格納された応答時間の補正値も用いて再送要求を行う受信ノードを選択する。
再送要求先選択部113は、実施の形態4の再送要求先選択部と同じように、再送要求するデータパケットを配送済みで、かつ応答時間が再送要求するデータを再生するまでの時間を下回る受信ノードを選択する。再送要求先選択部113は、この条件を満たす受信ノードが複数ある場合、各受信ノードの応答時間から補正値を引き、各受信ノードの修正応答時間を算出する。そして、再送要求先選択部113は、修正応答時間の最も短い受信ノードを再送要求先として選択する。なお、再送要求先選択部113は、上記条件を満たす受信ノードが複数ある場合、各受信ノードの補正値を直接比較し、補正値が最も大きい受信ノードを再送要求先として選択してもよい。
再送要求先選択部113は、実施の形態4の再送要求先選択部と同じように、再送要求先として選択した受信ノードのIPアドレスおよびパケットロスが発生したデータパケットのシーケンス番号を再送要求パケット作成部114に通知する。また、再送要求先選択部113は、実施の形態4の再送要求先選択部と同じように、再送要求を行うデータパケットのシーケンス番号を記録する。
以下、上述のように構成された通信端末装置180の動作を説明する。通信端末装置180の動作は、実施の形態4の通信端末装置と同じように、定期的かつ自発的に行う問合せ用情報交換パケット送信処理と、パケットを受信した時に行うパケット受信処理とに大きく分けられる。問合せ用情報交換パケット送信処理およびパケット受信処理は、実施の形態4と同様のものなのでここでは説明しない。
次に、実施の形態4と異なる、パケット受信処理内のデータパケット受信処理および情報交換パケット受信処理およびについて説明する。パケット受信処理内の再送要求パケット受信処理および再送パケット受信処理は実施の形態4と同様のものなのでここでは説明しない。
初めに、情報交換パケット受信処理(ステップS800)について、図30に示すフローチャートを用いて説明する。
まず、ステップS811において、情報交換部121は、パケットチェック部111から渡された情報交換パケットの種類を判別する。そして、情報交換部121は、受信したパケットを問合せ用情報交換パケットと判別した場合(S811:問合せ用情報交換パケット)、ステップS812に進む。一方、情報交換部121は、受信したパケットを応答用情報交換パケットと判別した場合(S811:応答用情報交換パケット)、そのパケットをセッション情報管理部123に渡して、ステップS816に進む。
ステップS812において、情報交換部121は、パケットチェック部111から渡された一連の問合せ用情報交換パケットにパケットロスが発生しているか否かを判定する。情報交換部121は、パケットロスが発生したと判定した場合(S812:YES)、ステップS813に進む。一方、パケットロス検知部112は、パケットロスが発生していないと判定した場合(S812:NO)、ステップS814に進む。
ステップS813において、情報交換部121は、問合せ用情報交換パケットに記載されたRTTから損失イベント率を算出する。また、情報交換部121は、受信できた問合せ用情報交換パケットのデータ量を求める。そして、情報交換部121は、求めた損失イベント率および受信できたデータ量をその受信ノードのIPアドレスと共にデータ蓄積部117に格納する。
ステップS814において、情報交換部121は、問合せ用情報交換パケットの問合せ元アドレスに記載されたIPアドレスを宛先とする応答用情報交換パケットを作成する。このとき、情報交換部121は、問合せ用情報交換パケットに記載された送信時刻、ならびにステップS813で求めた損失イベント率および受信できたデータ量を応答用情報交換パケットに記載する。そして、情報交換部121は、作成した応答用情報交換パケットをパケット送信部118に渡す。
次いで、ステップS815において、パケット送信部118は、情報交換部121が作成した応答用情報交換パケットを問合せ元の受信ノードに送信し、本フローを終了する。
ステップS816で、セッション情報管理部123は、情報交換部121から渡された応答用情報交換パケットに記載された送信時刻と現在時刻との時間差から、情報交換を行った受信ノードとのRTTを算出する。そして、セッション情報管理部123は、算出したRTTをその受信ノードのIPアドレスと関連付けてデータ蓄積部117に格納する。
次いで、ステップS817において、セッション情報管理部123は、ステップS816で算出したRTTおよび応答用情報交換パケットに記載された損失イベント率から、情報交換を行った受信ノードの利用可能な空き帯域を推定する。そして、セッション情報管理部123は、推定した他の受信ノードの利用可能な空き帯域の値をその受信ノードのIPアドレスと関連付けてデータ蓄積部117に格納する。
次いで、ステップS818において、再送応答時間計算部122は、応答用情報交換パケットに記載された損失イベント率およびステップS817で推定した利用可能な空き帯域の値から、応答時間を修正するための補正値を算出する。そして、再送応答時間計算部122は、算出した補正値をその受信ノードのIPアドレスと関連付けてデータ蓄積部117に格納し、本フローを終了する。
次に、データパケット受信処理(ステップS300)について、図31に示すフローチャートを用いて説明する。
まず、ステップS341において、パケットロス検知部112は、パケットチェック部111から渡されたデータパケットに含まれるデータ(またはデータパケット全体)をデータ蓄積部117に格納する。
次いで、ステップS342において、パケットロス検知部112は、パケットチェック部111から渡されたデータパケットに記載されたアドレスリストおよびビットマップをデータ蓄積部117に格納する。
次いで、ステップS343において、パケットロス検知部112は、パケットロスが発生しているか否かを判定する。パケットロス検知部112は、パケットロスが発生していないと判定した場合(S343:NO)、本フローを終了する。一方、パケットロス検知部112は、パケットロスが発生したと判定した場合(S343:YES)、パケットロスが発生したデータパケットのシーケンス番号と、保持している(最後に受信した)データパケットとを再送要求先選択部113に渡し、ステップS344に進む。
ステップS344において、再送要求先選択部113は、パケットロス検知部112から渡されたデータパケットのビットマップおよびアドレスリストから、配送済みとなっている受信ノードのIPアドレスを取得する。そして、再送要求先選択部113は、データ蓄積部117に格納された配送済みの各受信ノードの応答時間を調べる。そして、再送要求先選択部113は、各受信ノードの応答時間が再送要求するデータを再生するまでの時間を上回るか否かを判定する。再送要求先選択部113は、すべての受信ノードの応答時間がこのデータを再生するまでの時間を上回っていると判定した場合(S344:YES)、本フローを終了する。一方、再送要求先選択部113は、一つ以上の受信ノードの応答時間がこのデータを再生するまでの時間を下回っていると判定した場合(S344:NO)、ステップS345に進む。
ステップS345において、再送要求先選択部113は、応答時間がこのデータを再生するまでの時間を下回っている受信ノードの応答時間からそれぞれの補正値を引き、修正応答時間を算出する。
ステップS346において、再送要求先選択部113は、応答時間がこのデータを再生するまでの時間を下回っている受信ノードのうち、修正応答時間が最も小さい受信ノードを再送要求先として選択する。再送要求先選択部113は、選択した再送要求先の受信ノードのIPアドレスおよび再送要求を行うデータパケットのシーケンス番号を再送要求パケット作成部114に通知する。
ステップS347において、再送要求パケット作成部114は、再送要求先選択部113から通知されたIPアドレスおよびシーケンス番号から、ユニキャスト方式の再送要求パケットを作成する。そして、再送要求パケット作成部114は、作成した再送要求パケットをパケット送信部118に渡す。
次いで、ステップS348において、パケット送信部118は、再送要求パケット作成部114が作成した再送要求パケットを再送要求先の受信ノードに送信し、本フローを終了する。
以上説明したように、実施の形態5に係る通信端末装置は、問合せ用情報交換パケットおよび応答用情報交換パケットを用いて、他の受信ノードの応答時間ならびに他の受信ノードの損失イベント率および利用可能な空き帯域の推定値に基づく応答時間の補正値を算出する。そして、実施の形態5に係る通信端末装置は、ビットマップおよびアドレスリストに加えてさらに算出された応答時間およびその補正値も用いて再送要求を行う受信ノードを選択し、選択した受信ノードに対してユニキャスト通信により再送要求を行う。このように、本実施の形態によれば、実施の形態4の効果に加えて、損失イベント率が低くかつ空き帯域が大きい受信ノード、すなわち再送データを確実に受信できる受信ノードを再送要求先として選択することができる。
なお、上記各実施の形態の通信端末装置は、再送要求パケットを送信してから一定時間を経過しても再送パケットを受信しない場合、ビットマップとアドレスリストを用いて新たな再送要求先を選択し、選択した新たな再送要求先の受信ノードに再送パケットを送信するようにしてもよい。
また、上記各実施の形態の通信端末装置は、再送要求されたデータがデータ蓄積部に格納されていない場合、再送要求元の受信ノードに対してデータがないというメッセージを送ってもよい。また、上記各実施の形態の通信端末装置は、再送要求されたデータがデータ蓄積部に格納されていない場合、何もせずに再送要求パケット受信処理を終了してもよい。この場合、再送要求パケットの送信元の受信ノードは、別の受信ノードに再送要求パケットを送信しなくてはならない。
また、上記各実施の形態では、再送パケット受信部は、データ蓄積部に格納された表に記載されたシーケンス番号に基づいて再送パケットの正当性を評価したが、再送パケット受信部は、再送要求先のIPアドレスなどの情報に基づいて再送パケットの正当性のチェックを行ってもよい。
また、上記実施の形態2では、パケットロスを検知した受信ノードが、再送要求パケットを1つにまとめるために一定時間待機するようにしたが、再送要求パケットを受信した受信ノードが、再送パケットを1つにまとめるために一定時間待機するようにしてもよい。この場合、再送パケットは明示的マルチキャスト方式のパケットとなる。