以下、本発明の実施形態に従った通信システム(通信装置、擬似応答装置、送信レート制御方法およびプログラムを含む)を説明する。
まず、本実施形態の通信システムの構成を説明する。図1に示すように、この通信システムは、ネットワーク3を介して互いに通信可能に接続された通信装置1と通信装置2とから構成されている。
通信装置1、2は、ネットワーク3を介してデータパケットを互いに送受信する「通信装置」である。以下では、通信装置1が送信したデータパケットを通信装置2が受信する場合の動作を例に挙げて説明する。
通信装置1は、データパケットを送信する際、データパケットそれぞれの送信順序を示した「データ識別番号」であるシーケンス番号を当該データパケットそれぞれに付与して送信する。
なお、データパケットのサイズは任意でよいが、以下では、そのサイズが100bytesである場合を例に挙げて説明する。また、データパケットに付与されるデータ識別番号が、データパケットのサイズと同じ値(=「100」)ずつ増加する場合を例に挙げて説明する。
通信装置2は、通信装置1から送信されてきたデータパケットを受信した場合、そのデータパケットを受信した旨を示す「確認応答」を生成する。この確認応答の例としては、ACKパケットが挙げられる。
なお、通信装置2は、この確認応答に、送信されてきたデータパケットに付与されているデータ識別番号を書き込む。また、通信装置2は、この確認応答に、次に受信を期待するデータ識別番号を「応答番号」として書き込む。例えば、送信されてきたデータパケットに付与されたデータ識別番号が「1100」である場合、応答番号は「1200」となる。そして、通信装置2は、生成した確認応答を通信装置1へ送信する。また、通信装置2が、次に受信を期待するシーケンス番号をACK番号として確認応答に書き込む場合、TCP SACK(Selective Acknowledgement;選択確認応答)オプションを用いてもよい。
通信装置1は、確認応答に基づいてデータパケットが受信ロスしているかどうかを判別し、判別結果に応じて「目標レートRtarget」を決定する。ここで、目標レートRtargetとは、通信装置2に対するデータパケットの送信レートの目標値である。
そして、通信装置1は、データパケットの送信レートを、送信レートと目標レートRtargetとを同じ値とするための「擬似応答」を用いて制御する。
ここで、「擬似応答」とは、確認応答のデータ構造と同じデータ構造を有し、応答番号に代えて、送信したデータパケットに付与されたデータ識別番号に基づいて通信装置1が決定した擬似応答番号が書き込まれたデータである。
つぎに、図1に示した通信装置1の構成について、図2を参照して詳細に説明する。
図2に示すように、通信装置1は、データ送信部11と、削除部12と、送信レート決定部13と、送信データ記憶部14と、捕捉部15と、目標レート決定部16と、擬似応答出力部17と、再送制御部18と、未応答データ記憶部19とを有する。
送信データ記憶部14は、データパケットと、そのデータパケットに付与されたデータ識別番号との対応付を記憶している。
データ送信部11は、送信データ記憶部14内のデータパケットを読み出す。そして、データ送信部11は、読み出したデータパケットを、送信レート決定部13から通知された送信レートに従って通信装置2へ送信するとともに、そのデータパケットを再送制御部18へ出力する。
また、データ送信部11は、データパケットを通信装置2へ送信した送信時刻とそのデータパケットのデータ識別番号との対応付を、削除部12と捕捉部15とへ出力する。
また、データ送信部11は、通信装置2へ送信したデータパケットに付与されているデータ識別番号と、そのデータパケットの送信レートとの対応付を、送信レート決定部13へ出力する。
また、データ送信部11は、ロスしたデータパケットのデータ識別番号と、そのデータパケットの再送を指示する再送指示とが削除部12から出力されてきた場合、そのデータ識別番号と同じデータ識別番号と対応付けて記憶されているデータパケットを送信データ記憶部14から読み出して、送信レート決定部13から通知された送信レートに従って通信装置2へ送信する。
また、データ送信部11は、再送制御部18から出力されてきたデータパケットを通信装置2へ送信する。
削除部12は、捕捉部15から確認応答が出力されてきた際、当該確認応答内のデータ識別番号と同じデータ識別番号とデータパケットとの対応付を送信データ記憶部14から削除する。
また、削除部12は、擬似応答出力部17から擬似応答が出力されてきた際、当該擬似応答内のデータ識別番号と同じデータ識別番号と対応付けて記憶されているデータパケットを送信データ記憶部14から削除する。
つまり、確認応答のデータ構造と擬似応答のデータ構造とを同じものとしておけば、確認応答(ACKパケット)に対して上述した動作を行う回路やプログラムを、削除部12として流用することが可能である。
また、削除部12は、データパケットを送信データ記憶部14から削除した旨を送信レート決定部13へ通知する。
さらに、削除部12は、削除したデータパケットのデータ識別番号と対応付けて擬似応答出力部17内のデータ管理情報171に記憶されている送信データ削除フラグを、そのデータパケットが送信データ記憶部14から削除されていないことを示す情報から、そのデータパケットが送信データ記憶部14から削除されたことを示す情報へ書き換える。
図3に示すように、このデータ管理情報171は、擬似応答番号と、データ識別番号と、送信データ削除フラグと、未応答データ削除フラグと、確認応答受信フラグとを対応付ける情報である。この例では、データ識別番号「1100」〜「2000」のデータパケットをデータ送信部11が通信装置2へ送信し、これらのうちデータ識別番号「1100」、「1300」、「1500」、「1700」を用いて擬似応答出力部17が4つの擬似応答を生成した際のデータ管理情報171を示している。
なお、「送信データ削除フラグ」とは、その送信データ削除フラグと対応付けられているデータ識別番号が付与されたデータパケットが、削除部12により送信データ記憶部14から削除されたかどうかを示す情報である。
送信データ削除フラグとして設定する情報は、削除部12によるデータパケットの送信データ記憶部14からの削除の有無をそれぞれ識別可能な情報であれば、任意の情報でよい。
本実施形態では、送信データ削除フラグは、その値が「0」である場合、データパケットが削除部12により送信データ記憶部14から削除されていないことを示し、その値が「1」である場合、データパケットが削除部12により送信データ記憶部14から削除されたことを示す。
つまり、本実施形態では、削除部12は、データパケットを送信データ記憶部14から削除した場合、そのデータパケットのデータ識別番号と対応付けてデータ管理情報171に記憶されている送信データ削除フラグを、「0」から「1」へ書き換える。
また、「未応答データ削除フラグ」とは、その未応答データ削除フラグと対応付けられているデータ識別番号が付与されたデータパケットが、再送制御部18により未応答データ記憶部19から削除されたかどうかを示す情報である。
未応答データ削除フラグとして設定する情報は、再送制御部18によるデータパケットの未応答データ記憶部19からの削除の有無をそれぞれ識別可能な情報であれば、任意の情報でよい。
本実施形態では、未応答データ削除フラグは、その値が「0」である場合、データパケットが再送制御部18により未応答データ記憶部19から削除されていないことを示し、その値が「1」である場合、データパケットが再送制御部18により未応答データ記憶部19から削除されたことを示す。
また、「確認応答受信フラグ」とは、その確認応答受信フラグと対応付けられているデータ識別番号を含む確認応答を捕捉部15が通信装置2から受信したかどうかを示す情報である。
確認応答受信フラグとして設定する情報は、捕捉部15による確認応答の受信の有無をそれぞれ識別可能な情報であれば、任意の情報でよい。
本実施形態では、確認応答受信フラグは、その値が「0」である場合、確認応答を捕捉部15が通信装置2から受信していないことを示し、その値が「1」である場合、確認応答を捕捉部15が通信装置2から受信したことを示す。
また、削除部12は、捕捉部15から出力されてきた確認応答の数と、その確認応答内の応答番号と同じ番号を擬似応答番号として含む擬似応答出力部17から出力されてきた擬似応答の数との合計が「所定の重複数」以上となった場合、データパケットの送信レートを、送信レート決定部13が記憶している現在の送信レートRnowの「1/2」倍に変更するよう指示するレート変更指示を送信レート決定部13へ出力する。
なお、ここでいう「所定の重複数」とは、通信装置1が送信したデータパケットがロスした場合に、再送タイムアウト時間内に通信装置2から送信される確認応答の数である。なお、削除部12が変更を指示する送信レートの値は、送信レート決定部13が記憶している現在の送信レートRnowよりも小さな値であれば任意でよい。
また、削除部12は、データ送信部11から出力されてきた送信時刻とその送信時刻に送信されたデータパケットのデータ識別番号との対応付を記憶する。また、送信時刻とデータ識別番号との対応付がデータ送信部11から出力されてきた場合、その送信時刻からあらかじめ設定された再送タイムアウト時間が経過したかどうかを判別する。そして、削除部12は、送信時刻から再送タイムアウト時間が経過したと判別した後に、その送信時刻に送信されたデータパケットのデータ識別番号を含む擬似応答が擬似応答出力部17から出力されてきた場合、データパケットの送信レートを、現在の送信レートRnowから「最小送信レートRmin」に変更するよう指示するレート変更指示を送信レート決定部13へ出力する。
ここでいう「最小送信レートRmin」とは、通信装置2から送信されてくる確認応答を通信装置1が受信する「受信間隔」と同じ間隔で通信装置1がデータパケットを1つずつ通信装置2へ送信するときの送信レートである。
また、削除部12は、ロスしたデータパケットのデータ識別番号と、そのデータパケットの再送を指示する再送指示とが捕捉部15から出力されてきた場合、データ送信部11に対して、そのデータ識別番号と再送指示とを出力する。
送信レート決定部13は、データ送信部11から出力されてきたデータ識別番号とそのデータ識別番号が付与されたデータパケットの送信レートとの対応付を記憶する。
また、送信レート決定部13は、データパケットを送信データ記憶部14から削除した旨が削除部12から通知された場合、送信レートを、記憶している現在の送信レートRnowと所定のレート増加量fとを加算した値に変更する。また、送信レート決定部13は、変更した送信レートを現在の送信レートRnowとして新たに記憶する。また、送信レート決定部13は、変更した送信レートをデータ送信部11へ通知する。
本実施形態では、送信レート決定部13は、レート増加量fを記憶している。
ここで、「レート増加量f」とは、削除部12がデータパケットを送信データ記憶部14から削除した場合に、現在の送信レートRnowに加算される値である。
なお、レート増加量fの値については特に限定しない。
本実施形態では、送信レート決定部13は、データパケットを送信データ記憶部14から削除した旨が削除部12から通知された際に記憶している現在の送信レートRnowと、所定の基準送信レートssthreshとを比較する。なお、基準送信レートssthreshの値は任意でよい。本実施形態では、基準送信レートssthreshの値が現在の送信レートRnowの「1/2」倍である場合を例に挙げて説明する。
そして、送信レート決定部13は、比較の結果、記憶している現在の送信レートRnowが所定の基準送信レートssthresh以下である場合、レート増加量fを現在の送信レートRnowと同じ値に決定する。つまり、この場合、送信レート決定部13は、送信レートを現在の送信レートRnowの2倍に変更する。
また、本実施形態では、送信レート決定部13は、比較の結果、現在の送信レートRnowが基準送信レートssthreshよりも大きな場合、レート増加量fを、「1/(現在の送信レートRnow)」倍とする。
なお、送信レート決定部13は、データパケットがロスしたと捕捉部15が判別した場合、送信レートを「所定値」まで一旦減少させてから、目標レートまで送信レートを増加させる。本実施形態では、「所定値」は、現在の送信レートRnowの「1/2」倍の値、または、最小送信レートRminである。
より具体的には、送信レート決定部13は、送信レートを現在の送信レートRnowの「1/2」倍に変更するよう指示するレート変更指示が削除部12から出力されてきた場合、送信レートを現在の送信レートRnowの「1/2」倍の値に変更するとともに、その旨を擬似応答出力部17へ通知する。
また、本実施形態では、送信レート決定部13は、送信レートを最小送信レートRminに変更するよう指示するレート変更指示が削除部12から出力されてきた場合、送信レートを現在の送信レートRnowから最小送信レートRminへ変更するとともに、その旨を擬似応答出力部17へ通知する。
捕捉部15は、通信装置2から送信されてきた確認応答を受信した場合、その確認応答内のデータ識別番号と同じデータ識別番号と対応付けて記憶されているデータ管理情報171内の確認応答受信フラグを、「0」から「1」へ書き換える。
また、捕捉部15は、データ送信部11から出力されてきたデータパケットのデータ識別番号とそのデータパケットの送信時刻との対応付を記憶する。
また、捕捉部15は、通信装置2から送信されてきた確認応答内のデータ識別番号に基づいて、データパケットがネットワーク3にてロスしたかどうかを判別する。
より具体的には、捕捉部15は、データ送信部11から送信時刻が出力されてきた場合、その送信時刻から再送タイムアウト時間が経過する間に、その送信時刻と対応付けて記憶しているデータ識別番号を含む確認応答を受信したかどうかを判別する。
そして、捕捉部15は、送信時刻から再送タイムアウト時間が経過する間に、その送信時刻と対応付けて記憶しているデータ識別番号を含む確認応答を受信したと判別した場合、その間に送信されてきた同じ応答番号をそれぞれ含む確認応答の数と、「所定の重複数」とを比較する。
そして、捕捉部15は、比較の結果、送信時刻から再送タイムアウト時間が経過する間に送信されてきた同じ応答番号をそれぞれ含む確認応答の数が所定の重複数未満である場合、その送信時刻と対応付けて記憶しているデータ識別番号のデータパケットがロスしていないと判別する。この場合、捕捉部15は、データパケットがロスしていない旨を目標レート決定部16と擬似応答出力部17とへ通知する。
さらに、ロスしていないと判別した際、捕捉部15は、その確認応答の受信時に書き換えた確認応答受信フラグと対応付けて記憶されている送信データ削除フラグの値が「0」である場合、その確認応答を削除部12へ出力する。
また、捕捉部15は、比較の結果、送信時刻から再送タイムアウト時間が経過する間に送信されてきた同じ応答番号をそれぞれ含む確認応答の数が所定の重複数以上である場合、データパケットがロスしたと判別する。
また、捕捉部15は、データ送信部11から出力されてきた送信時刻から再送タイムアウト時間が経過する間に、その送信時刻と対応付けて記憶しているデータ識別番号を含む確認応答が送信されてきていないと判別した場合、そのデータ識別番号が付与されたデータパケットがロスしたと判別する。
なお、送信時刻から再送タイムアウト時間が経過する間に確認応答が送信されてこなかったためにロスしたと判別されたデータパケットは、そのデータ識別番号を含む擬似応答を入力した削除部12によって送信データ記憶部14から削除される。しかし、捕捉部15は、そのデータパケットのデータ識別番号を含む確認応答が、再送タイムアウト時間が経過した後に通信装置2から送信されてきた場合、その確認応答内の応答番号をデータ管理情報171内の擬似応答番号の最大値へ書き換えて、その擬似応答番号を含む確認応答を削除部12へ出力する。
さらに、捕捉部15は、データパケットがロスしたと判別した場合、その旨と、そのデータパケットのデータ識別番号とを目標レート決定部16へ通知する。
また、捕捉部15は、データパケットがロスしたと判別した場合、そのデータパケットのデータ識別番号と対応付けて記憶されている送信データ削除フラグの値が「1」であり、かつそのデータ識別番号と対応付けて記憶されている確認応答受信フラグの値が「0」であるかどうかを判別する。これにより、捕捉部15は、送信したデータパケットのロスによって通信装置2が受信していないにも関わらず、擬似応答によって削除部12が送信データ記憶部14から削除したデータパケットの有無を確認する。
そして、ロスしたと判別されたデータ識別番号と対応付けて記憶されている送信データ削除フラグの値が「1」であり、かつそのデータ識別番号と対応付けて記憶されている確認応答受信フラグの値が「0」である場合、捕捉部15は、データ管理情報171に記憶されている擬似応答番号の最大値と、ロスしたデータパケットのデータ識別番号とを比較する。
比較の結果、ロスしたデータパケットのデータ識別番号が擬似応答番号の最大値よりも小さな場合、捕捉部15は、そのデータ識別番号と、当該データ識別番号が付与されたデータパケットの再送を指示する再送指示とを再送制御部18へ出力する。
また、捕捉部15は、通信装置2から送信されてきた確認応答に含まれている応答番号を、データ管理情報171に記憶されている擬似応答番号の最大値へ書き換える。また、捕捉部15は、確認応答に含まれる通信装置2が受信したデータパケットのデータ識別番号のうち擬似応答番号の最大値よりも小さなデータ識別番号を削除する。そして、捕捉部15は、その確認応答を、削除部12へ出力する。
また、比較の結果、ロスしたデータパケットのデータ識別番号が擬似応答番号の最大値よりも大きな場合、捕捉部15は、通信装置2から送信されてきた確認応答内の応答番号を、データ管理情報171に記憶されている擬似応答番号の最大値へ書き換える。そして、捕捉部15は、この擬似応答番号を含む確認応答を削除部12へ出力する。
なお、擬似応答番号の最大値よりも大きなデータ識別番号が付与されたデータパケットがロスした場合、このデータパケットは、削除部12により送信データ記憶部14から削除されておらず送信データ記憶部14に記憶されている状態にある。そのため、捕捉部15は、そのデータ識別番号と、当該データ識別番号が付与されたデータパケットの再送を指示する再送指示とを削除部12へ出力する。
さらに、捕捉部15は、データパケットがロスしたと判別した場合、連続してロスしたデータパケットの個数(以下、「連続ロス数」という)をカウントする。そして、捕捉部15は、連続ロス数と、所定の閾値とを比較する。
当該比較の結果、連続ロス数が所定の閾値以下である場合、捕捉部15は、軽度の輻輳が発生した旨を擬似応答出力部17へ通知する。
また、比較の結果、連続ロス数が所定の閾値よりも大きな場合、捕捉部15は、重度の輻輳が発生した旨を擬似応答出力部17へ通知する。
ここで、軽度の輻輳とは、連続してロスしたデータパケットの数が所定の閾値以下であるような輻輳のことを指す。また、重度の輻輳とは、連続してロスしたデータパケットの数が所定の閾値よりも大きな輻輳のことを指す。
図4は、通信装置1から送信されたデータパケットと、通信装置2から送信された確認応答とのシーケンスを示す図である。通信装置1は、所定数(この例では、データパケットのサイズと同じ値「100」)ずつ増加するデータ識別番号「1100」〜「3200」のデータパケットを送信している。
また、図5は、図4に示したデータ識別番号「1100」〜「3200」がそれぞれ付与されたデータパケットを送信したときの送信レートの経過時間に対する変化を示している。なお、擬似応答により、擬似応答番号は「3300」まで進んでいる。
上述したように、捕捉部15は、図6(a)に示すような通信装置2から送信されてきた確認応答に含まれていた応答番号(ACK番号)「3000」を、図6(b)に示すように擬似応答番号と同じ番号「3300」に書き換えている。また、図6(b)に示すように、書換後の確認応答に含まれている通信装置2が受信したデータパケットのデータ識別番号(シーケンス番号)のうち擬似応答番号「3300」よりも小さなデータ識別番号は削除している。
また、捕捉部15は、通信装置2から送信されてきた確認応答を受信した際、確認応答を受信した時刻を記憶しておく。そして、捕捉部15は、通信装置2から送信されてきた確認応答を受信した場合、その確認応答を受信した時刻からその確認応答の直前に確認応答を受信した時刻を減算した値を、確認応答の受信間隔として算出する。そして、捕捉部15は、算出した受信間隔を擬似応答出力部17へ通知する。
また、捕捉部15は、送信時刻から再送タイムアウト時間が経過する間に、その送信時刻と対応付けて記憶しているデータ識別番号を含む確認応答が送信されてきたと判別した場合、その確認応答が出力されてきた時刻から送信時刻を減算した値をRTT(Round Trip Time)として算出する。そして、削除部12は、このRTTを擬似応答出力部17へ出力する。ここでいうRTTは、通信装置1が、1つのパケットデータを通信装置2へ送信してから、そのパケットデータに対して通信装置2が送信した確認応答を受信するまでの時間である。
目標レート決定部16は、データパケットがロスした旨が捕捉部15から通知されたかどうかに応じて、送信レートの目標値である目標レートRtargetを決定する。
目標レート決定部16は、データパケットがロスした旨とそのデータパケットのデータ識別番号とが捕捉部15から通知された場合、そのデータ識別番号と連続し、かつそのデータ識別番号よりも小さなデータ識別番号と対応付けて送信レート決定部13が記憶している送信レートを、目標レートRtargetとして決定する。
図4に示した例では、目標レート決定部16は、ロスしたデータパケットのデータ識別番号「3000」、「3100」と連続し、かつこれらのデータ識別番号よりも小さなデータ識別番号である「2900」と対応付けて記憶されている送信レートを、目標レートRtargetとして決定する。
また、目標レート決定部16は、データパケットがロスしていない旨が捕捉部15から通知された場合、通信装置2がデータパケットを1つ受信するごとに1つの確認応答を送信してきた際に受信間隔において到達する送信レートの最大値を、目標レートRtargetとして決定する。つまり、この場合、目標レート決定部16は、捕捉部15から通知された際に送信レート決定部13が記憶しているレート増加量fと受信間隔をデータパケットの送信間隔で除算した値との乗算値を算出する。そして、この乗算値と現在の送信レートRnowとを加算した値を、目標レートRtargetとして決定する。
なお、目標レート決定部16は、目標レートRtargetを決定した場合、現在の送信レートRnowを送信レート決定部13から読み出す。そして、目標レート決定部16は、決定した目標レートRtargetと、現在の送信レートRnowとを擬似応答出力部17へ通知する。
擬似応答出力部17は、図3に示したデータ管理情報171を記憶している。
また、擬似応答出力部17は、応答番号よりも大きな擬似応答番号を含む擬似応答と、通信装置2からの確認応答内の応答番号と同じ値の擬似応答番号を含む擬似応答との2種類の擬似応答を生成する。そして、擬似応答出力部17は、生成した擬似応答を削除部12へ出力する。
なお、応答番号よりも大きな擬似応答番号を含む擬似応答は、送信レート決定部13に送信レートを増大させるために用いられる。
また、応答番号と同じ値の擬似応答番号を含む擬似応答は、送信レート決定部13に送信レートを減少させるために用いられる。
まず、擬似応答出力部17が、応答番号よりも大きな擬似応答番号を含む擬似応答を生成するときの動作について説明する。
なお、擬似応答出力部17は、データパケットがロスしていない旨が捕捉部15から通知された場合、または送信レートを現在の送信レートRnowの「1/2」倍の値に変更した旨が送信レート決定部13から通知された場合、または送信レートを最小送信レートRminへ変更した旨が送信レート決定部13から通知された場合、応答番号よりも大きな擬似応答番号を含む擬似応答を生成する。
この場合、擬似応答出力部17は、目標レート決定部16から通知されてきた目標レートRtargetおよび現在の送信レートRnowと、再送制御部18がデータ管理情報171に書き込んだデータ識別番号とを用いて、擬似応答を生成する。
より具体的には、擬似応答出力部17は、データ管理情報171内のデータ識別番号を、擬似応答に書き込む。
また、擬似応答出力部17は、擬似応答へ書き込む擬似応答番号を決定する。本実施形態では、擬似応答出力部17は、擬似応答に書き込んだデータ識別番号と互いに連続するデータ識別番号同士の差分である「所定数」とを加算した値を、擬似応答番号として決定する。そして、擬似応答出力部17は、決定した擬似応答番号を擬似応答へ書き込むとともに、擬似応答に書き込んだデータ識別番号とその擬似応答に書き込んだ擬似応答番号との対応付をデータ管理情報171に書き込む。
なお、擬似応答出力部17は、データパケットがロスしていない旨が捕捉部15から通知された場合、次の確認応答が通信装置2から送信されてくるまでの間、データ送信部11がデータパケットを送信するごとに、その送信時刻から捕捉部15から出力されてきたRTTが経過した後に、擬似応答を生成して削除部12へ出力する。
つぎに、擬似応答出力部17が、通信装置2から送信されてきた確認応答内の応答番号と同じ値の擬似応答番号を含む擬似応答を生成するときの動作について説明する。
なお、擬似応答出力部17は、軽度の輻輳が発生した旨が捕捉部15から通知された場合、または重度の輻輳が発生した旨が捕捉部15から通知された場合、応答番号と同じ値の擬似応答番号を含む擬似応答を生成する。
この場合、擬似応答出力部17は、捕捉部15から出力されてきた確認応答に含まれている応答番号と同じ値を、擬似応答番号として擬似応答に書き込む。
なお、擬似応答出力部17は、所定の重複数(本実施形態では「3」)から通信装置2が送信してきた確認応答の数を減算した数と同数の擬似応答を生成する。つまり、擬似応答の数と確認応答の数との合計が所定の重複数となるように擬似応答を生成する。そして、擬似応答出力部17は、その擬似応答を削除部12へ出力する。
なお、擬似応答出力部17は、目標レート決定部16から通知されてきた目標レートRtargetおよび現在の送信レートRnowを用いて、擬似応答を出力するごとに送信レート決定部13が現在の送信レートRnowに加算するレート増加量fと、確認応答の受信間隔にて出力する擬似応答の数とを決定する。
本実施形態では、まず、擬似応答出力部17は、目標レートRtargetから、現在の送信レートRnowに「1/2」を乗じた値を減算した差分を算出する。そして、擬似応答出力部17は、この差分を、現在の送信レートRnowに「1/2」を乗じた値に基づいて定まる1つの確認応答を受信するごとに増加するレート増加量fで除算した値を、生成する擬似応答の数として決定する。なお、擬似応答出力部17は、除算して得られた値が整数でない場合、除算した値よりも小さな整数の最大値を擬似応答の数として決定する。
また、擬似応答出力部17は、捕捉部15から通知された確認応答の受信間隔を用いて、擬似応答を出力する「出力間隔」を決定する。本実施形態では、擬似応答出力部17は、確認応答の受信間隔を生成する擬似応答の数で除算した値を、擬似応答の出力間隔として決定する。
例えば、確認応答の受信間隔が「10秒」であり、擬似応答出力部17が生成する擬似応答の数が「10個」である場合、擬似応答の出力間隔は「1秒」である。
なお、軽度の輻輳が発生した旨が捕捉部15から通知された場合、擬似応答出力部17が応答番号と同じ値の擬似応答番号を含む擬似応答を削除部12へ出力するタイミングは、その通知がされた直後である。
また、擬似応答出力部17は、重度の輻輳が発生した旨が捕捉部15から通知された場合、捕捉部15が確認応答を書き換えて削除部12へ出力してから再送タイムアウト時間が経過した後に、擬似応答を削除部12へ出力する。
再送制御部18は、データ送信部11から出力されてきたデータパケットと、データパケット内のそのデータパケットに付与されたデータ識別番号との対応付を、未応答データ記憶部19へ書込む。これは、通信装置2が受信していないにも関わらず削除部12が擬似応答に応じて送信データ記憶部14から削除したデータパケットを再送できないことを回避するためである。
また、再送制御部18は、データ送信部11から出力されてきたデータパケットに含まれるデータ識別番号をデータ管理情報171へ書き込むとともに、そのデータ識別番号と対応付けて記憶されている送信データ削除フラグの値と未応答データ削除フラグの値と確認応答受信フラグの値とを「0」に設定する。例えば、データ送信部11がデータ識別番号「1000」〜「2000」が付与されたデータパケットを通信装置2へ送信した場合、再送制御部18は、各データ識別番号「1000」〜「2000」をデータ管理情報171へ書き込むとともに、各データ識別番号とそれぞれ対応付けて記憶されている各送信データ削除フラグの値と各未応答データ削除フラグの値と各確認応答受信フラグの値とを「0」に設定する。
また、再送制御部18は、捕捉部15から再送指示とデータ識別番号とが出力されてきた場合、そのデータ識別番号と同じデータ識別番号と対応付けて記憶されているデータパケットを未応答データ記憶部19から読み出してデータ送信部11へ出力する。
また、再送制御部18は、未応答データ記憶部19が記憶しているデータパケットのうちから受信したと判別したデータパケットを削除する。
また、再送制御部18は、削除したデータパケットのデータ識別番号と対応付けて擬似応答出力部17内のデータ管理情報171に記憶されている未応答データ削除フラグの値を、「0」から「1」へ書き換える。
未応答データ記憶部19は、再送制御部18が書き込んだデータパケットと当該データパケットに付与されたデータ識別番号との対応付を記憶する。
つぎに、目標レート決定部16が目標レートRtargetを決定する方法について、詳細に説明する。なお、本発明では、目標レート決定部16は、この目標レートRtargetを、ネットワーク3の帯域の利用効率の向上や輻輳の回避を考慮して決定する。
図3に示した例では、通信装置1から送信されたデータ識別番号「1100」〜「3200」のデータパケットのうちデータ識別番号「3000」、「3100」のデータパケットが、ネットワーク3にてロスしている。そして、通信装置2は、データ識別番号「3200」のデータパケットを受信した後、確認応答を通信装置1へ送信している。
また、通信装置1は、通信装置2へ送信したデータパケットのロスが発生したかどうかに関わらず、ある確認応答を受信してからその確認応答の次に送信されてくる確認応答を受信するまでの間、擬似応答を用いて図4に示したように送信レートを変更している。なお、図4の例では、通信装置1から送信されたデータ識別番号「3000」、「3100」のデータパケットがネットワーク3においてロスしている。
そこで、本実施形態では、目標レート決定部16は、ロスしたこれらのデータパケットを送信した直前にデータパケットを送信したときの送信レート(すなわち、データ識別番号「2900」が付与されたデータパケットの送信レート)を、目標レートRtargetとして決定する。
これは、データパケットのロスが発生する直前に設定されていた送信レートが、通信装置2へデータパケットを送信した場合にネットワーク3を輻輳させない上限の送信レートと考えられるためである。
なお、目標レートRtargetとして用いる値については、特に限定しない。目標レートRtargetは、例えば、ロス直前の送信レートと定数α(0<α<1)とを乗算した値でもよい。また、目標レートRtargetは、過去のロス直前の送信レートの平均値でもよい。
また、目標レート決定部16は、データパケットがロスしていない旨が捕捉部15から通知された場合、次の確認応答が到着するまでに、通信装置2がデータパケットを1つ受信するごとに1つの確認応答を送信してきた場合にすべてのデータパケットが送信成功した場合に到達する送信レートを、目標レートRtargetとして決定する。
なお、通信装置2が、通信装置1から送信されてきたデータパケットを所定の個数X(X>1)だけ受信するごとに確認応答を送信する場合、または一定時間ごとに確認応答を送信する場合、通信装置2がデータパケットを1個だけ受信するごとに確認応答を通信装置1へ送信する場合よりも、ネットワーク3上のトラヒックの時間的変化に応じたデータパケットの送信レートの正確な制御を行うことが難しくなる。そこで、本発明では、削除部12が、ネットワーク3の状況に応じて擬似応答出力部17が生成した擬似応答を用いて、通信装置2へ送信されたデータパケットを処理する。これにより、通信装置1は、通信装置2から送信されてくる確認応答のみに基づいて送信レートを制御する場合よりも、送信レートを変更する頻度が多くなるように送信レートを制御する。
つぎに、通信装置1が、擬似応答を出力することにより送信レートを制御する動作について、図7〜9を参照して説明する。
図7〜9のそれぞれは、通信装置1が、ある確認応答を受信してから次の確認応答を受信するまで間の送信レートの変化の様子を示している。なお、図7は、確認応答に基づいてデータパケットがロスしたと判別した場合において、軽度の輻輳が発生したときの送信レートの変化を表している。また、図8は、確認応答に基づいてデータパケットがロスしたと判別した場合において、重度の輻輳が発生したときの送信レートの変化を表している。また、図9は、データパケットがロスしていないと判別した場合の送信レートの変化を表している。
まず、データパケットがロスしたと判別した場合において、軽度の輻輳が発生したと判別した際の動作について説明する。
この場合、通信装置1は、図7に示すように送信レートを、現在の送信レートRnowからその送信レートの「1/2」倍の値(=Rnow/2)へと減少させる。
そのために、通信装置1の擬似応答出力部17は、通信装置2から送信されてくる確認応答の数と、その確認応答内の応答番号と同じ番号の擬似応答番号を含む擬似応答の数との合計が所定の重複数(この例では「3」)となるような数だけ、擬似応答を生成して削除部12へ出力する。なお、擬似応答出力部17は、この擬似応答を、データパケットがロスしたと判別した直後のタイミングで削除部12へ出力する。
また、削除部12は、捕捉部15からの確認応答の数と、その確認応答内の応答番号と同じ値の擬似応答番号を含む擬似応答の数との合計が所定の重複数(この例では、「3」)以上となった場合、送信レートを現在の送信レートRnowの「1/2」倍に変更するよう指示するレート変更指示を送信レート決定部13へ出力する。
すると、送信レート決定部13は、送信レートを、現在の送信レートRnowの「1/2」倍の値に変更するとともに、その旨を擬似応答出力部17へ通知する。
続いて、通信装置1は、送信レートと目標レートRtargetとが同じ値とするように送信レートを制御する。
そのため、擬似応答出力部17は、再送制御部18から通知されたデータ識別番号を用いて、そのデータ識別番号よりも値が大きな擬似応答番号を含む確認応答を生成して削除部12へ出力する。
なお、擬似応答出力部17は、目標レートRtargetから現在の送信レートの「1/2」倍の値を減算した差分を求め、現在の送信レートの「1/2」倍の値から定める1つの確認応答を受信した場合に増加させるレート増加量fで除算した値を、生成する擬似応答の数として決定する。
また、擬似応答出力部17は、確認応答の受信間隔を擬似応答の数で除算した値を、擬似応答の出力間隔として決定する。図7に示した例では、擬似応答を削除部12で処理させて送信レート決定部13へデータパケットの成功を通知した時刻において、送信レートが更新されている。
つぎに、データパケットがロスしたと判別した場合において、重度の輻輳が発生したと判別した際の動作について説明する。
まず、通信装置1は、図8に示すように送信レートを最小送信レートRminへ変更する。
この場合、通信装置1は、再送タイムアウトを発生させる。より具体的には、擬似応答出力部17は、重度の輻輳が発生した旨が捕捉部15から通知された場合(つまり、連続してロスしたデータパケットの数が閾値よりも大きな場合)、捕捉部15が確認応答を書き換えて削除部12へ出力してから再送タイムアウト時間が経過した後に、擬似応答を削除部12へ出力する。
続いて、擬似応答出力部17は、目標レートRtargetと同じ値となるように送信レートを制御する。
そのため、擬似応答出力部17は、応答番号よりも大きな値を有する擬似応答番号を含む確認応答を生成する。
ただし、擬似応答出力部17は、再送タイムアウトの場合、現在の送信レートの「1/2」倍を閾値とする。そして、送信レートが閾値以下である場合、ACK受信毎に送信レートを2倍にする。また、送信レートが閾値よりも大きな場合、現在の送信レートに基づいて決定される増加量であることを考慮して、擬似応答の数と、擬似応答の出力間隔とを決定する。
また、データパケットがロスしていない場合、通信装置1は、図9に示すように送信レートを変化させる。
擬似応答出力部17は、次の確認応答が通信装置2から送信されてくるまでの間、データ送信部11がデータパケットを送信するごとに、その送信時刻からRTTが経過した後に、擬似応答を生成して削除部12へ出力する。
上述した例では、通信装置1が、データパケットの送信の成功時に送信レートを増加させ、失敗時に送信レートを減少させる制御方法を例に挙げて説明した。しかしながら、擬似応答を用いて送信レートを制御する方法は、上述した制御方法以外の制御方法(例えば、確認応答をトリガとして送信レートを制御している方法など)にも適用することが可能である。
つぎに、通信装置2の構成について、図10を参照して詳細に説明する。図10に示すように、通信装置2は、データ受信部21と、応答送信部22と、応答頻度決定部23と、受信データ記憶部24とを有する。
データ受信部21は、通信装置1から送信されてきたデータパケットを、受信データ記憶部24へ書き込む。また、データ受信部21は、そのデータパケット内の情報を応答送信部22へ通知する。
応答送信部22は、データ受信部21が受信したデータパケットに付与されたデータ識別番号を含む図6(a)に示したような確認応答を生成する。そして、応答送信部22は、確認応答を、応答頻度決定部23から通知される頻度に従って通信装置1へ送信する。
応答頻度決定部23は、通信装置2が通信装置1に確認応答を送信する頻度を決定して応答送信部22へ通知する。なお、通信装置2が確認応答を送信する頻度は、RFC(Request For Comment)1122に記載されている一般的な方法と同様に、データパケットをX個だけ受信するごとに確認応答を送信してもよく、一定周期ごとに確認応答を送信してもよい。応答頻度決定部23は、Xの値と、確認応答を送信する周期とを決定して応答送信部22へ通知する。
つぎに、上記構成を有する通信装置1がデータパケットの送信レートを制御する動作を、図11を参照して説明する。
まず、図11に示すステップ701にて、データ送信部11は、送信レート決定部13から通知された送信レートに従って、送信データ記憶部14から読み出したデータパケットを通信装置2へ送信する。なお、通信装置2は、通信装置1から送信されてきたデータパケットを所定の個数だけ受信した場合、または、一定時間が経過した場合、1つの確認応答を通信装置1へ送信する。
また、データ送信部11は、送信したデータパケットを再送制御部18へ出力する。また、データ送信部11は、データパケットを通信装置2へ送信した送信時刻とそのデータパケットのデータ識別番号との対応付を、削除部12と捕捉部15とへ出力する。なお、削除部12および捕捉部15のそれぞれは、データ送信部11から出力されてきた送信時刻とその送信時刻に送信されたデータパケットのデータ識別番号との対応付を記憶する。
さらに、データ送信部11は、通信装置2へ送信したデータパケットに付与されたデータ識別番号とそのデータパケットの送信レートとの対応付を、送信レート決定部13へ出力する。すると、送信レート決定部13は、データ送信部11から出力されてきたデータ識別番号と送信レートとの対応付を記憶する。
続いて、ステップ702にて、再送制御部18は、そのデータパケットとそのデータパケットに付与されたデータ識別番号との対応付を、未応答データ記憶部19へ書き込む。
また、再送制御部18は、データ送信部11から出力されてきたデータパケットに含まれるデータ識別番号をデータ管理情報171へ書き込むとともに、そのデータ識別番号と対応付けて記憶されている送信データ削除フラグの値と未応答データ削除フラグの値と確認応答受信フラグの値とを「0」に設定する。
その後、ステップ703にて、捕捉部15は、データ送信部11から出力されてきた送信時刻から再送タイムアウト時間が経過する間に、その送信時刻と対応付けて記憶しているデータ識別番号を含む確認応答を通信装置2から受信したかどうかを判別している。
そして、送信時刻から再送タイムアウト時間が経過する間に、その送信時刻と対応付けて記憶しているデータ識別番号を含む確認応答を受信したと判別した場合、捕捉部15は、その確認応答内のデータ識別番号と同じデータ識別番号と対応付けて記憶されているデータ管理情報171内の確認応答受信フラグを、「0」から「1」に書き換える。また、捕捉部15は、通信装置2から送信されてきた確認応答を受信した場合、その確認応答を受信した時刻からその確認応答の直前に確認応答を受信した時刻を減算した値を、確認応答の受信間隔として算出して擬似応答出力部17へ通知する。
さらに、送信時刻から再送タイムアウト時間が経過する間に、その送信時刻と対応付けて記憶しているデータ識別番号を含む確認応答を通信装置2から受信した場合、ステップ704にて、捕捉部15は、その間に送信されてきた同じ応答番号をそれぞれ含む確認応答の数と、「所定の重複数」とを比較する。
そして、捕捉部15は、比較の結果、送信時刻から再送タイムアウト時間が経過する間に送信されてきた同じ応答番号をそれぞれ含む確認応答の数が所定の重複数未満である場合、その送信時刻と対応付けて記憶しているデータ識別番号のデータパケットがロスしていないと判別する。この場合、捕捉部15は、データパケットがロスしていない旨を目標レート決定部16と擬似応答出力部17とへ通知する。
さらに、ロスしていないと判別した際、捕捉部15は、その確認応答の受信時に書き換えた確認応答受信フラグと対応付けて記憶されている送信データ削除フラグの値が「0」である場合、その確認応答を削除部12へ出力する。
その後、ステップ705にて、目標レート決定部16は、データパケットがロスしていない旨が捕捉部15から通知された場合、次の確認応答が到着するまでに通信装置2がデータパケットを1つ受信するごとに1つの確認応答を送信してきた場合にすべてのデータパケットの送信に成功した場合に到達する送信レートを、目標レートRtargetとして決定する。続いて、目標レート決定部16は、現在の送信レートRnowを送信レート決定部13から読み出す。そして、目標レート決定部16は、決定した目標レートRtargetと、現在の送信レートRnowとを擬似応答出力部17へ通知する。
すると、ステップ706にて、擬似応答出力部17は、目標レート決定部16から通知された現在の送信レートRnowおよび目標レートRtargetと、捕捉部15から出力されてきた受信間隔とに基づいて、擬似応答の出力間隔を決定する。
そして、擬似応答出力部17は、擬似応答を生成する。続いて、ステップ707にて、擬似応答出力部17は、決定した出力間隔ごとに、生成した擬似応答を削除部12へ出力する。
すると、削除部12は、この擬似応答内のデータ識別番号と同じデータ識別番号と対応付けて記憶されているデータパケットを送信データ記憶部14から削除する。また、この場合、削除部12は、データパケットを送信データ記憶部14から削除した旨を送信レート決定部13へ通知する。さらに、削除部12は、削除したデータパケットのデータ識別番号と対応付けて記憶されているデータ管理情報171内の送信データ削除フラグを、「0」から「1」へ書き換える。
すると、ステップ708にて、送信レート決定部13は、データパケットの送信レートを、記憶している現在の送信レートRnowと所定のレート増加量fとを加算した値に変更する。なお、本実施形態では、送信レート決定部13は、データパケットを削除した旨が削除部12から通知された際に記憶している現在の送信レートRnowが所定の基準送信レート以下である場合、レート増加量fを現在の送信レートRnowと同じ値とする。また、送信レート決定部13は、現在の送信レートRnowが基準送信レートよりも大きな場合、レート増加量fを、「1/(現在の送信レートRnow)」倍とする。
一方、ステップ703にて送信時刻から再送タイムアウト時間が経過する間に、その送信時刻と対応付けて記憶しているデータ識別番号を含む確認応答を通信装置2から受信していないと判別した場合、捕捉部15は、データパケットがロスしたと判別する。そして、捕捉部15は、その旨と、そのデータパケットのデータ識別番号とを目標レート決定部16へ通知する。
なお、送信時刻から再送タイムアウト時間が経過する間に確認応答が送信されてこなかったためにロスしたと判別されたデータパケットのデータ識別番号を含む確認応答が再送タイムアウト時間の経過後に送信されてきた場合、捕捉部15は、その確認応答に含まれている応答番号を擬似応答番号の最大値へ書き換えて、擬似応答番号を含む確認応答を削除部12へ出力する。
また、ステップ704における比較の結果、送信時刻から再送タイムアウト時間が経過する間に送信されてきた同じ応答番号をそれぞれ含む確認応答の数が所定の重複数以上である場合にも、捕捉部15は、データパケットがロスしたと判別する。そして、捕捉部15は、その旨と、そのデータパケットのデータ識別番号とを目標レート決定部16へ通知する。
なお、データパケットがロスしたと判別した場合、通信装置1は、ステップ709〜711の処理を実行し、データパケットの再送制御を行う。
この場合、捕捉部15は、ロスしたと判別したデータパケットのデータ識別番号と対応付けて記憶されているデータ管理情報171内の送信データ削除フラグの値が「1」であり、かつそのデータ識別番号と対応付けて記憶されているデータ管理情報171内の確認応答受信フラグの値が「0」であるかどうかを判別する。
そして、ロスしたと判別されたデータパケットのデータ識別番号と対応付けて記憶されている送信データ削除フラグの値が「1」であり、かつそのデータ識別番号と対応付けて記憶されている確認応答受信フラグの値が「0」である場合、ステップ709にて、捕捉部15は、データ管理情報171に記憶されている擬似応答番号の最大値と、ロスしたデータパケットのデータ識別番号とを比較する。
比較の結果、そのデータ識別番号が擬似応答番号の最大値よりも大きな場合、捕捉部15は、確認応答内の応答番号をデータ管理情報171に記憶されている擬似応答番号の最大値へ書き換え、この擬似応答番号を含む確認応答を削除部12へ出力する。
また、この場合、捕捉部15は、そのデータ識別番号と、当該データ識別番号が付与されたデータパケットの再送を指示する再送指示とを削除部12へ出力する。すると、削除部12は、データ送信部11に対して、そのデータ識別番号と再送指示とを出力する。
そして、ステップ710にて、データ送信部11は、削除部12から出力されてきたデータ識別番号と同じデータ識別番号と対応付けて記憶されているデータパケットを送信データ記憶部14から読み出して、送信レート決定部13から通知された送信レートに従って通信装置2へ送信する。
一方、ステップ709における比較の結果、ロスしたデータパケットのデータ識別番号が擬似応答番号の最大値以下である場合、捕捉部15は、そのデータ識別番号と、当該データ識別番号が付与されたデータパケットの再送を指示する再送指示とを再送制御部18へ出力する。
すると、再送制御部18は、このデータ識別番号と同じデータ識別番号と対応付けて記憶されているデータパケットを未応答データ記憶部19から読み出してデータ送信部11へ出力する。そして、ステップ711にて、データ送信部11は、再送制御部18から出力されてきたデータパケットを通信装置2へ送信する。
また、ロスしたデータパケットのデータ識別番号が擬似応答番号の最大値以下である場合、捕捉部15は、通信装置2から送信されてきた確認応答に含まれている応答番号を、データ管理情報171に記憶されている擬似応答番号の最大値へ書き換える。また、捕捉部15は、確認応答内のデータ識別番号のうち擬似応答番号の最大値よりも小さなデータ識別番号を削除する。そして、捕捉部15は、その確認応答を、削除部12へ出力する。
その後、ステップ712にて、目標レート決定部16は、データパケットがロスした旨とそのデータパケットのデータ識別番号とが捕捉部15から通知された場合、そのデータ識別番号と互いに連続し、かつそのデータ識別番号よりも小さなデータ識別番号と対応付けて送信レート決定部13が記憶している送信レートを、目標レートRtargetとして決定する。また、目標レート決定部16は、現在の送信レートRnowを送信レート決定部13から読み出す。そして、目標レート決定部16は、決定した目標レートRtargetと、送信レート決定部13から読み出した現在の送信レートRnowとを擬似応答出力部17へ通知する。
続いて、捕捉部15は、連続してロスしたデータパケットの個数である連続ロス数をカウントする。そして、ステップ713にて、捕捉部15は、カウントした連続ロス数と、所定の閾値とを比較する。
この比較の結果、カウントした連続ロス数が所定の閾値以下である場合、捕捉部15は、軽度の輻輳が発生した旨を擬似応答出力部17へ通知する。
また、カウントした連続ロス数が所定の閾値よりも大きな場合、捕捉部15は、重度の輻輳が発生した旨を擬似応答出力部17へ通知する。
すると、ステップ714にて、擬似応答出力部17は、目標レート決定部16から通知された現在の送信レートRnowおよび目標レートRtargetと、捕捉部15から重度の輻輳が発生した旨が通知されたかどうかと、捕捉部15から出力されてきた確認応答の受信間隔とに基づいて、擬似応答の出力間隔を決定する。
そして、擬似応答出力部17は、擬似応答を生成する。続いて、ステップ715にて、擬似応答出力部17は、決定した出力間隔ごとに、生成した擬似応答を削除部12へ出力する。
なお、ステップ713の比較結果に応じて軽度の輻輳が発生した旨が捕捉部15から通知された場合、ステップ715にて擬似応答出力部17が応答番号と同じ番号の擬似応答番号を含む擬似応答を削除部12へ出力するタイミングは、その通知がされた直後である。
この場合、削除部12は、捕捉部15から出力されてきた確認応答の数と、その確認応答内の応答番号と同じ値の擬似応答番号を含む擬似応答の数との合計が所定の重複数以上となった際、送信レートを、現在の送信レートRnowの「1/2」倍に変更するよう指示するレート変更指示を送信レート決定部13へ出力する。
すると、ステップ708にて、送信レート決定部13は、送信レートを現在の送信レートRnowの「1/2」倍の値に変更するとともに、その旨を擬似応答出力部17へ通知する。
一方、ステップ713の比較結果に応じて重度の輻輳が発生した旨が捕捉部15から通知された場合、ステップ715にて、擬似応答出力部17は、捕捉部15が確認応答を書き換えて削除部12へ出力してから再送タイムアウト時間が経過した後に、擬似応答を削除部12へ出力する。
すると、削除部12は、送信レートを、現在の送信レートRnowから最小送信レートRminに変更するよう指示するレート変更指示を送信レート決定部13へ出力する。
そして、ステップ708にて、送信レート決定部13は、送信レートを、現在の送信レートRnowから最小送信レートRminへ変更するとともに、その旨を擬似応答出力部17へ通知する。以上で、通信装置1がデータパケットの送信レートを制御する一連の動作が終了する。
以上説明したように、本発明の実施形態1によれば、通信装置2が確認応答を送信する頻度が少ない場合でも、ネットワーク3上のトラヒックの時間的変化に応じたデータパケットの送信レートの正確な制御を行うことができ、ひいてはネットワーク3の輻輳への対応の遅れを抑制することやネットワーク3の利用効率の低下を回避することが可能となる。
(実施形態2)
つぎに、実施形態2の通信システムについて説明する。
図12に示すように、実施形態2の通信システムは、通信装置4と、通信装置5と、擬似応答装置6とから構成されている。
本実施形態では、通信装置4は、パケットを一意に識別するためのシーケンス番号を含んだデータパケットを送信する。
また、通信装置5は、TCP SACKオプションと同様、次に受信を期待するシーケンス番号であるACK番号と、受信したデータパケットのシーケンス番号とを含む確認応答を通信装置4へ送信する。なお、通信装置5は、所定の個数(例えば、100個)のデータパケットを受信した場合、および、一定時間が経過した場合、1つの確認応答を擬似応答装置6を介して通信装置4へ送信する。
擬似応答装置6は、通信装置4から送信されてきたデータパケットを、そのデータパケットに対する確認応答(ACK)が通信装置5から送信されてくるまで記憶しておく。また、擬似応答装置6は、その確認応答に含まれるデータパケットの受信が成功したかどうかを示す情報に基づいて、輻輳を回避しつつ帯域を有効に活用することが可能な帯域を目標レートRtargetとして設定する。そして、擬似応答装置6は、送信レートを目標レートRtargetと同じとするための擬似応答を生成して通信装置4へ送信する。すると、通信装置4は、通信装置5に対するデータパケットの送信レートを変更する。
通信装置4の構成は、図14に示した通信装置800と同じ構成である。また、通信装置5の構成は、図14に示した通信装置900と同じ構成である。
また、図12に示すように、擬似応答装置6は、データ捕捉部61と、捕捉部62と、再送制御部63と、未応答データ記憶部64と、目標レート決定部65と、擬似応答出力部66とを有する。
データ捕捉部61は、通信装置4から送信されてきたデータパケットをその「宛先」である通信装置5へ転送するとともに、そのデータパケットを再送制御部63へ出力する。
また、データ捕捉部61は、データパケットを通信装置5へ転送した送信時刻とそのデータパケットのデータ識別番号との対応付を、捕捉部62へ出力する。
また、データ捕捉部61は、データパケットの送信レートを測定する測定周期ごとに、当該測定周期において通信装置4から送信されてきたデータパケットのデータ量に基づいて、データパケットの送信レートを測定する。そして、データ捕捉部61は、測定した送信レートと、データパケットに含まれているデータ識別番号とを対応付けて記憶する。
また、データ捕捉部61は、測定したうちで最新の送信レートを、現在の送信レートRnowとして記憶する。
また、データ捕捉部61は、軽度の輻輳が発生した旨が捕捉部62から通知された場合、その通知後に測定した送信レートが、その通知の際に記憶していた現在の送信レートRnowの「1/2」倍の値であるかどうかを判別する。そして、測定した送信レートが現在の送信レートRnowの「1/2」倍の値であると判別した場合、データ捕捉部61は、その旨を擬似応答出力部66へ通知する。
また、データ捕捉部61は、確認応答の受信間隔と同じ間隔で1つずつデータパケットを送信するときの送信レートである最小送信レートRminを記憶している。
そして、データ捕捉部61は、重度の輻輳が発生した旨が捕捉部62から通知された場合、その通知後に測定した送信レートが最小送信レートRminであるかどうかを判別する。測定した送信レートが最小送信レートRminと同じであると判別した場合、データ捕捉部61は、その旨を擬似応答出力部66へ通知する。
捕捉部62は、データ捕捉部61から出力されてきたデータパケットのデータ識別番号とそのデータパケットの送信時刻との対応付を記憶する。
また、捕捉部62は、通信装置5から送信されてきた確認応答を受信した場合、その確認応答内のデータ識別番号と同じデータ識別番号と対応付けて擬似応答出力部66に記憶されている図13に示すデータ管理情報661内の確認応答受信フラグを、「0」から「1」に書き換える。
なお、本実施形態では、データ管理情報661内の確認応答受信フラグは、その値が「0」である場合、確認応答を捕捉部62が通信装置5から受信していないことを示し、その値が「1」である場合、確認応答を捕捉部62が通信装置5から受信したことを示す。
また、本実施形態では、データ管理情報661内の未応答データ削除フラグは、その値が「0」である場合、データパケットが再送制御部63により未応答データ記憶部64から削除されていないことを示し、その値が「1」である場合、データパケットが再送制御部63により未応答データ記憶部64から削除されたことを示す。
また、捕捉部62は、通信装置5から送信されてきた確認応答内のデータ識別番号に基づいて、通信装置5へ送信したデータパケットがロスしたかどうかを判別する。
より具体的には、捕捉部62は、データ捕捉部61から送信時刻が出力されてきた場合、その送信時刻から再送タイムアウト時間が経過する間に、その送信時刻と対応付けて記憶されているデータ識別番号を含む確認応答を通信装置5から受信したかどうかを判別する。
そして、捕捉部62は、送信時刻から再送タイムアウト時間が経過する間に、その送信時刻と対応付けて記憶しているデータ識別番号を含む確認応答を受信したと判別した場合、その間に通信装置5から送信されてきた同じ応答番号をそれぞれ含む確認応答の数と、「所定の重複数」とを比較する。
そして、捕捉部62は、比較の結果、送信時刻から再送タイムアウト時間が経過する間に送信されてきた同じ応答番号をそれぞれ含む確認応答の数が所定の重複数未満である場合、データパケットがロスしていないと判別し、その旨を目標レート決定部65と擬似応答出力部66とへ通知する。また、この場合、捕捉部15は、その確認応答を通信装置4へ送信する。
また、捕捉部62は、送信時刻から再送タイムアウト時間が経過する間に送信されてきた同じ応答番号をそれぞれ含む確認応答の数が所定の重複数以上である場合、データパケットがロスしたと判別する。
また、捕捉部62は、データ捕捉部61から出力されてきた送信時刻から再送タイムアウト時間が経過する間に、その送信時刻と対応付けて記憶されているデータ管理情報661内のデータ識別番号を含む確認応答が送信されてきていないと判別した場合、そのデータ識別番号が付与されたデータパケットがロスしたと判別する。
なお、捕捉部62は、ロスしたと判別されたデータパケットのデータ識別番号を含む確認応答が、再送タイムアウト時間が経過した後に送信されてきた場合、その確認応答に含まれている応答番号を擬似応答番号の最大値へ書き換えて、擬似応答番号を含む確認応答を通信装置4の応答受信部42へ送信する。
なお、捕捉部62は、データパケットがロスしたと判別した場合、その旨と、そのデータパケットのデータ識別番号とを目標レート決定部65へ通知する。
また、捕捉部62は、データパケットがロスしたと判別した場合、そのデータパケットのデータ識別番号と対応付けて記憶されている管理情報661内の確認応答受信フラグの値が「0」であるかどうかを判別する。
そして、ロスしたと判別されたデータ識別番号と対応付けて記憶されている確認応答受信フラグの値が「0」であると判別した場合、捕捉部62は、データ管理情報661に記憶されている擬似応答番号の最大値と、ロスしたデータパケットのデータ識別番号とを比較する。
比較の結果、ロスしたデータパケットのデータ識別番号が擬似応答番号の最大値よりも小さな場合、捕捉部62は、そのデータ識別番号と、当該データ識別番号が付与されたデータパケットの再送を指示する再送指示とを再送制御部63へ出力する。
また、捕捉部62は、通信装置5から送信されてきた確認応答に含まれている応答番号を擬似応答番号の最大値へ書き換える。さらに、捕捉部62は、確認応答内のデータ識別番号のうち擬似応答番号の最大値よりも小さなデータ識別番号を削除する。そして、捕捉部62は、その確認応答を通信装置4へ送信する。
また、比較の結果、ロスしたデータパケットのデータ識別番号が擬似応答番号の最大値よりも大きな場合、捕捉部62は、通信装置5から送信されてきた確認応答内の応答番号を擬似応答番号の最大値へ書き換える。そして、捕捉部62は、この擬似応答番号を含む確認応答を通信装置4へ送信する。
さらに、捕捉部62は、データパケットがロスしたと判別した場合、連続してロスしたデータパケットの個数である連続ロス数をカウントし、連続ロス数と所定の閾値とを比較する。比較の結果、連続ロス数が所定の閾値以下である場合、捕捉部62は、軽度の輻輳が発生した旨をデータ捕捉部61と擬似応答出力部66とへ通知する。また、連続ロス数が所定の閾値よりも大きな場合、捕捉部62は、重度の輻輳が発生した旨をデータ捕捉部61と擬似応答出力部66とへ通知する。
また、捕捉部62は、通信装置5から送信されてきた確認応答を受信した時刻を記憶しておく。そして、捕捉部62は、確認応答の受信間隔を算出して擬似応答出力部66へ通知する。
再送制御部63は、データ捕捉部61から出力されてきたデータパケットと、データパケット内のそのデータパケットに付与されたデータ識別番号との対応付を、未応答データ記憶部64へ書込む。
また、再送制御部63は、データ捕捉部61から出力されてきたデータパケットのデータ識別番号をデータ管理情報661へ書き込むとともに、そのデータ識別番号と対応付けて記憶されている未応答データ削除フラグの値と確認応答受信フラグの値とを「0」に設定する。
また、再送制御部63は、捕捉部62から再送指示とデータ識別番号とが出力されてきた場合、そのデータ識別番号と同じデータ識別番号と対応付けて記憶されているデータパケットを未応答データ記憶部64から読み出して通信装置5へ送信する。
また、再送制御部63は、未応答データ記憶部64が記憶しているデータパケットのうちから受信したと判別したデータパケットを削除する。また、再送制御部63は、削除したデータパケットのデータ識別番号と対応付けてデータ管理情報661に記憶されている未応答データ削除フラグを、「0」から「1」へ書き換える。
未応答データ記憶部64は、再送制御部63が書き込んだデータパケットと当該データパケットに付与されたデータ識別番号との対応付を記憶する。
目標レート決定部65は、データパケットがロスした旨とそのデータパケットのデータ識別番号とが捕捉部62から通知された場合、そのデータ識別番号と連続し、かつそのデータ識別番号よりも小さなデータ識別番号と対応付けてデータ捕捉部61が記憶している送信レートを、目標レートRtargetとして決定する。
また、目標レート決定部65は、データパケットがロスしていない旨が捕捉部62から通知された場合、次の確認応答が到着するまでに通信装置5がデータパケットを1つ受信するごとに1つの確認応答を送信してきた場合にすべてのデータパケットの送信に成功したときに到達する送信レートを、目標レートRtargetとして決定する。
なお、目標レート決定部65は、目標レートRtargetを決定した場合、現在の送信レートRnowをデータ捕捉部61から読み出す。そして、目標レート決定部65は、決定した目標レートRtargetと、現在の送信レートRnowとを擬似応答出力部66へ通知する。
擬似応答出力部66は、図13に示したデータ管理情報661を記憶している。
また、擬似応答出力部66は、応答番号よりも大きな擬似応答番号を含む擬似応答と、応答番号と同じ値の擬似応答番号を含む擬似応答との2種類の擬似応答を生成する。そして、擬似応答出力部66は、生成した擬似応答を通信装置4の応答受信部42へ送信する。
擬似応答出力部66は、データパケットがロスしていない旨が捕捉部62から通知された場合、または測定した送信レートが現在の送信レートRnowの「1/2」倍の値である旨がデータ捕捉部61から通知された場合、または測定した送信レートが最小送信レートRminである旨がデータ捕捉部61から通知された場合、応答番号よりも大きな擬似応答番号を含む擬似応答を生成する。
この場合、擬似応答出力部66は、目標レート決定部65から通知された目標レートRtargetおよび現在の送信レートRnowと、再送制御部63がデータ管理情報661に書き込んだデータ識別番号とを用いて、擬似応答を生成する。
より具体的には、擬似応答出力部66は、再送制御部63が書き込んだデータ管理情報661内のデータ識別番号を、擬似応答に書き込む。また、擬似応答出力部66は、擬似応答に書き込んだデータ識別番号と所定数とを加算した値を、擬似応答番号として擬似応答に書き込む。さらに、擬似応答出力部66は、擬似応答に書き込んだデータ識別番号とその擬似応答に書き込んだ擬似応答番号との対応付をデータ管理情報661に書き込む。
なお、擬似応答出力部66は、データパケットがロスしていない旨が捕捉部62から通知された場合、次の確認応答が通信装置2から送信されてくるまでの間、データ捕捉部61が通信装置5へデータパケットを送信するごとに、その送信時刻から捕捉部62から出力されてきたRTTが経過した後に、擬似応答を生成して通信装置4へ送信する。
また、擬似応答出力部66は、軽度の輻輳が発生した旨が捕捉部62から通知された場合、または重度の輻輳が発生した旨が捕捉部62から通知された場合、通信装置5から送信されてきた確認応答内の応答番号と同じ値の擬似応答番号を含む擬似応答を生成する。
この場合、擬似応答出力部66は、捕捉部62から出力されてきた確認応答に含まれている応答番号と同じ値を、擬似応答番号として擬似応答に書き込む。なお、擬似応答出力部66は、所定の重複数(本実施形態では「3」)から通信装置5が送信してきた確認応答の数を減算した数の擬似応答を生成して通信装置4へ送信する。
なお、擬似応答出力部66は、目標レート決定部65から通知されてきた目標レートRtargetおよび現在の送信レートRnowを用いて、確認応答の受信間隔において生成する擬似応答の数を決定する。
本実施形態では、まず、擬似応答出力部66は、目標レートRtargetから、現在の送信レートRnowに「1/2」を乗じた値を減算した差分を算出する。そして、擬似応答出力部66は、この差分を、現在の送信レートRnowに「1/2」を乗じた値に基づいて定まる1つの確認応答を受信するごとに増加するレート増加量fで除算した値を、生成する擬似応答の数として決定する。
また、擬似応答出力部66は、捕捉部62から通知された確認応答の受信間隔を用いて、擬似応答を通信装置4へ送信する「出力間隔」を決定する。本実施形態では、擬似応答出力部66は、確認応答の受信間隔を生成する擬似応答の数で除算した値を、この出力間隔として決定する。
なお、軽度の輻輳が発生した旨が捕捉部62から通知された場合、擬似応答出力部66が応答番号と同じ値の擬似応答番号を含む擬似応答を通信装置4へ送信するタイミングは、その通知がされた直後である。
また、擬似応答出力部66は、重度の輻輳が発生した旨が捕捉部62から通知された場合、捕捉部62が確認応答を書き換えて通信装置4へ送信してから再送タイムアウト時間が経過した後に、擬似応答を通信装置4へ送信する。
つぎに、擬似応答装置6が擬似応答を出力する動作を、図14を参照して説明する。
図14に示すステップ751にて、まず、データ捕捉部61は、通信装置4から送信されてきたデータパケットをその宛先である通信装置5へ転送するとともに、そのデータパケットを再送制御部63へ出力する。
また、データ捕捉部61は、データパケットを通信装置5へ転送した送信時刻とそのデータパケットのデータ識別番号との対応付を、捕捉部62へ出力する。
また、データ捕捉部61は、所定の測定周期ごとに、測定周期にて通信装置4から送信されてきたデータパケットのデータ量に基づいて、データパケットの送信レートを測定する。そして、データ捕捉部61は、測定した送信レートと、データパケットに含まれているデータ識別番号とを対応付けて記憶する。
また、データ捕捉部61は、測定したうちで最新の送信レートを、現在の送信レートRnowとして記憶する。
その後、ステップ752にて、再送制御部63は、データ捕捉部61から出力されてきたデータパケットと、データパケットに含まれるそのデータパケットに付与されたデータ識別番号との対応付を、未応答データ記憶部64へ書込む。
また、再送制御部63は、データ捕捉部61から出力されてきたデータパケットのデータ識別番号をデータ管理情報661へ書き込むとともに、そのデータ識別番号と対応付けて記憶されている未応答データ削除フラグの値と確認応答受信フラグの値とを「0」に設定する。
続いて、ステップ753にて、捕捉部62は、データ捕捉部61から出力されてきた送信時刻から再送タイムアウト時間が経過する間に、その送信時刻と対応付けて記憶しているデータ識別番号を含む確認応答を通信装置5から受信したかどうかを判別している。
そして、送信時刻から再送タイムアウト時間が経過する間に、その送信時刻と対応付けて記憶しているデータ識別番号を含む確認応答を通信装置5から受信したと判別した場合、ステップ754にて、捕捉部62は、その間に送信されてきた同じ応答番号をそれぞれ含む確認応答の数と、所定の重複数とを比較する。
そして、捕捉部62は、比較の結果、送信時刻から再送タイムアウト時間が経過する間に送信されてきた同じ応答番号をそれぞれ含む確認応答の数が所定の重複数未満である場合、その送信時刻と対応付けて記憶されているデータ管理情報661内のデータ識別番号のデータパケットがロスしていないと判別する。この場合、捕捉部62は、データパケットがロスしていない旨を目標レート決定部65と擬似応答出力部66とへ通知する。さらに、この場合、捕捉部62は、その確認応答を通信装置4へ送信する。
なお、捕捉部62は、通信装置2から送信されてきた確認応答を受信した場合、その確認応答内のデータ識別番号と同じデータ識別番号と対応付けて記憶されているデータ管理情報661内の確認応答受信フラグを、「0」から「1」へ書き換える。また、捕捉部62は、通信装置5から送信されてきた確認応答を受信した時刻を記憶しておく。そして、捕捉部62は、確認応答の受信間隔を算出して擬似応答出力部66へ通知する。
その後、ステップ755にて、目標レート決定部65は、データパケットがロスしていない旨が捕捉部62から通知された場合、次の確認応答が到着するまでに通信装置5がデータパケットを1つ受信するごとに確認応答を送信してきた場合にすべてのデータパケットの送信に成功したときに到達する送信レートを、目標レートRtargetとして決定する。続いて、目標レート決定部65は、現在の送信レートRnowをデータ捕捉部61から読み出す。そして、目標レート決定部65は、決定した目標レートRtargetと、現在の送信レートRnowとを擬似応答出力部66へ通知する。
すると、ステップ756にて、擬似応答出力部66は、目標レート決定部65から通知された現在の送信レートRnowおよび目標レートRtargetと、捕捉部62から出力されてきた受信間隔とに基づいて、擬似応答を通信装置4へ送信する出力間隔を決定する。
そして、擬似応答出力部66は、擬似応答を生成する。続いて、ステップ757にて、擬似応答出力部66は、決定した出力間隔ごとに、生成した擬似応答を通信装置4の応答受信部42へ送信する。なお、通信装置4は、この擬似応答内のデータ識別番号と同じデータ識別番号と対応付けて記憶されているデータパケットを送信データ記憶部44から削除する。また、この場合、通信装置4の送信レート決定部43は、データパケットの送信レートを変更する。
一方、ステップ753にて送信時刻から所定の再送タイムアウト時間が経過する間に、その送信時刻と対応付けて記憶しているデータ識別番号を含む確認応答が通信装置5から受信しなかったと判別した場合、捕捉部62は、パケットロスが発生したと判別する。そして、捕捉部62は、その旨と、そのデータパケットのデータ識別番号とを目標レート決定部65へ通知する。
なお、送信時刻から再送タイムアウト時間が経過する間に確認応答が送信されてこなかったためにロスしたと判別されたデータパケットのデータ識別番号を含む確認応答が再送タイムアウト時間の経過後に送信されてきた場合、捕捉部62は、その確認応答に含まれている応答番号を擬似応答番号の最大値へ書き換えて、擬似応答番号を含む確認応答を通信装置4へ転送する。
また、ステップ754における比較の結果、送信時刻から再送タイムアウト時間が経過する間に送信されてきた同じ応答番号をそれぞれ含む確認応答の数が所定の重複数以上である場合にも、捕捉部62は、パケットロスが発生したと判別する。そして、捕捉部62は、その旨と、そのデータパケットのデータ識別番号とを目標レート決定部65へ通知する。
なお、データパケットがロスしたと判別した場合、擬似応答装置6は、ステップ758〜759の処理を実行し、データパケットの再送を行う。
この場合、捕捉部62は、ロスしたと判別したデータパケットのデータ識別番号と同じデータ識別番号と対応付けて記憶されている管理情報661内の確認応答受信フラグの値が「0」であるかどうかを判別する。この確認応答受信フラグの値が「0」であると判別した場合、ステップ758にて、捕捉部62は、データ管理情報661に記憶されている擬似応答番号の最大値と、ロスしたデータパケットのデータ識別番号とを比較する。
比較の結果、ロスしたデータパケットのデータ識別番号が擬似応答番号の最大値よりも大きな場合、捕捉部62は、通信装置5から送信されてきた確認応答内の応答番号を擬似応答番号の最大値へ書き換えて、この擬似応答番号を含む確認応答を通信装置4へ送信する。
一方、ステップ758における比較の結果、ロスしたデータパケットのデータ識別番号が擬似応答番号の最大値よりも小さな場合、捕捉部62は、そのデータ識別番号と、当該データ識別番号が付与されたデータパケットの再送を指示する再送指示とを再送制御部63へ出力する。
すると、再送制御部63は、このデータ識別番号と同じデータ識別番号と対応付けて記憶されているデータパケットを未応答データ記憶部64から読み出す。そして、ステップ759にて、再送制御部63は、読み出したデータパケットを通信装置5へ送信する。
さらに、この場合、捕捉部62は、通信装置2から送信されてきた確認応答に含まれている応答番号を擬似応答番号の最大値へ書き換える。また、捕捉部15は、確認応答内のデータ識別番号のうち擬似応答番号の最大値よりも小さなデータ識別番号を削除する。そして、捕捉部62は、その確認応答を通信装置4へ送信する。
その後、ステップ760にて、目標レート決定部65は、データパケットがロスした旨とそのデータパケットのデータ識別番号とが捕捉部62から通知された場合、そのデータ識別番号と連続し、かつそのデータ識別番号よりも小さなデータ識別番号と対応付けてデータ捕捉部61が記憶している送信レートを、目標レートRtargetとして決定する。また、目標レート決定部65は、現在の送信レートRnowをデータ捕捉部61から読み出し、決定した目標レートRtargetと現在の送信レートRnowとを擬似応答出力部66へ通知する。
続いて、捕捉部62は、連続してロスしたデータパケットの個数である連続ロス数をカウントする。そして、ステップ761にて、捕捉部62は、連続ロス数と所定の閾値とを比較する。この比較の結果、連続ロス数が所定の閾値以下である場合、捕捉部15は、軽度の輻輳が発生した旨をデータ捕捉部61と擬似応答出力部66とへ通知する。また、連続ロス数が所定の閾値よりも大きな場合、捕捉部15は、重度の輻輳が発生した旨をデータ捕捉部61と擬似応答出力部66とへ通知する。
すると、ステップ762にて、擬似応答出力部66は、目標レート決定部16から通知された現在の送信レートRnowおよび目標レートRtargetと、捕捉部15から重度の輻輳が発生した旨が通知されたかどうかと、捕捉部62から出力されてきた確認応答の受信間隔とに基づいて、擬似応答の出力間隔を決定する。
そして、擬似応答出力部66は、擬似応答を生成する。続いて、ステップ763にて、擬似応答出力部66は、決定した出力間隔ごとに、生成した擬似応答を通信装置4へ送信する。
なお、ステップ761の比較結果に応じて軽度の輻輳が発生した旨が捕捉部62から通知された場合、ステップ763にて擬似応答出力部66が応答番号と同じ値の擬似応答番号を含む擬似応答を通信装置4へ送信するタイミングは、その通知がされた直後である。
一方、ステップ761の比較結果に応じて重度の輻輳が発生した旨が捕捉部62から通知された場合、ステップ763にて、擬似応答出力部66は、捕捉部62が確認応答を書き換えて通信装置4へ送信してから再送タイムアウト時間が経過した後に、擬似応答を通信装置4へ送信する。以上で、擬似応答装置6が擬似応答を出力する一連の動作が終了する。
以上説明したように、実施形態2によれば、通信装置5が確認応答を送信する頻度が少ない場合でも、通信装置4がトラヒックの時間的変化に応じたデータパケットの送信レートの正確な制御を行うことができる。
また、実施形態2によれば、一般的な構成を有する通信装置4と通信装置5とに接続された擬似応答装置6が、擬似応答を生成して通信装置4へ送信する。そして、通信装置4が、この擬似応答を用いて、データパケットを送信する送信レートを制御する。これにより、通信装置4が有する構成の変更を伴うことなく、本発明を一般的な通信システムに容易に適用することが可能である。
なお、本発明においては、通信装置1内の処理は上述の専用のハードウェアにより実現されるもの以外に、その機能を実現するためのプログラムを、通信装置1として動作させるコンピュータにて読取可能な記録媒体に記録し、この記録媒体に記録されたプログラムをそのコンピュータに読み込ませ、実行するものであってもよい。通信装置1として動作させるコンピュータにて読取可能な記録媒体とは、フロッピーディスク(登録商標)、光磁気ディスク、DVD、CDなどの移設可能な記録媒体の他、そのコンピュータに内蔵されたHDD等を指す。この記録媒体に記録されたプログラムは、例えば、通信装置1として動作させるコンピュータが有する擬似応答出力部17として動作するプロセッサにて読み込まれ、そのプロセッサの制御によって、上述したものと同様の処理が行われる。
ここで、擬似応答出力部17として動作するプロセッサは、プログラムが記録された記録媒体から読み込まれたプログラムを実行するものである。なお、上述のプログラムは、擬似応答装置6についても同様に適用可能である。
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明の要旨を逸脱しない範囲で当業者が理解し得る各種の変形が可能である。