(57)【要約】【課題】トラヒックの時間的変化に応じて送信レートを正確に制御する。【解決手段】通信装置は、送信したパケットデータに対する確認応答を受信した場合、送信レートをレート増加量だけ増大させて記憶する。また、通信装置は、データパケットの送信時刻から再送タイムアウト時間が経過するまでにそのパケットデータのデータ識別番号が含まれた確認応答を受信したかどうかに基づいて目標レートを決定する。通信装置は、確認応答の受信時に記憶している送信レートと目標レートと確認応答の受信間隔とから決定した出力間隔ごとに擬似応答を出力する。通信装置は、擬似応答が出力された場合または確認応答を受信した場合、送信レートを、レート増加量だけ増大させる。【選択図】図２
2010263350.tif 000002
【特許請求の範囲】
【請求項１】
データパケットを送信し、該データパケットに対する応答として送信されてきた確認応答を受信する通信装置であって、
前記送信したパケットデータに付与されたデータ識別番号が含まれた前記確認応答を受信した場合、前記データパケットの送信レートをレート増加量だけ増大させ、該増大させた送信レートを記憶する送信レート決定部と、
前記データパケットを送信してから所定の再送タイムアウト時間が経過するまでの間に該パケットデータに付与されたデータ識別番号が含まれた前記確認応答を受信したかどうかに基づいて、前記送信レートの目標値である目標レートを決定する目標レート決定部と、
前記確認応答を受信した際に前記送信レート決定部が記憶している前記送信レートと、前記目標レートと、前記確認応答を受信する受信間隔とに基づいて、前記送信したパケットデータに付与された前記データ識別番号を含む擬似的な確認応答である擬似応答を出力する出力間隔を決定し、前記レート増加量を変更し、該出力間隔ごとに前記擬似応答を出力する擬似応答出力部とを有し、
前記送信レート決定部は、前記擬似応答が出力された場合または前記確認応答を受信した場合、前記送信レートを前記擬似応答出力部が変更したレート増加量だけ増大させる通信装置。
【請求項２】
請求項１記載の通信装置において、
前記データパケットと、該データパケットに付与された前記データ識別番号とを対応付けて記憶する送信データ記憶部と、
前記送信データ記憶部から読み出したデータパケットを送信するデータ送信部と、
前記データ送信部が送信した前記データパケットと、該データパケットに付与された前記データ識別番号とを対応付けて記憶する未応答データ記憶部と、
前記データ送信部が送信した前記データパケットに付与された前記データ識別番号が含まれた前記確認応答を受信した場合、または、該データ識別番号を含む前記擬似応答が前記擬似応答出力部から出力されてきた場合、該データ識別番号と対応付けて記憶されている前記データパケットを前記送信データ記憶部から削除する削除部と、
前記データ送信部が送信したデータ識別番号を含む前記確認応答を受信する前に前記擬似応答により前記送信データ記憶部から削除された前記データパケットと同じデータパケットを前記未応答データ記憶部から読み出して送信する再送制御部とを有することを特徴とする通信装置。
【請求項３】
請求項１または２記載の通信装置において、
前記確認応答に基づいて、前記送信したデータパケットが受信ロスしたかどうかを判別し、該ロスしたデータパケットのデータ識別番号を識別する捕捉部を有し、
前記目標レート決定部は、前記ロスしたデータパケットを送信する前に前記データパケットを送信した際の前記送信レートに基づいて、前記目標レートを決定することを特徴とする通信装置。
【請求項４】
請求項３記載の通信装置において、
前記目標レート決定部は、前記ロスしたデータパケットを送信する直前に前記データパケットを送信した送信レートを、前記目標レートとして決定することを特徴とする通信装置。
【請求項５】
請求項３記載の通信装置において、
前記目標レート決定部は、前記ロスしたデータパケットを送信する直前に前記データパケットを送信した送信レートの過去の平均値を、前記目標レートとして決定することを特徴とする通信装置。
【請求項６】
請求項３乃至５のいずれか１項に記載の通信装置において、
前記目標レート決定部は、前記送信したデータパケットがロスしていないと前記捕捉部が判別した場合、前記送信レート決定部が記憶している送信レートと前記レート増加量との乗算値と、該記憶している送信レートとを加算した値を、前記目標レートとして決定することを特徴とする通信装置。
【請求項７】
請求項３乃至５のいずれか１項に記載の通信装置において、
前記送信レート決定部は、前記データパケットがロスしたと前記捕捉部が判別した場合、前記送信レートを所定値まで減少させてから前記目標レートまで送信レートを増加させることを特徴とする通信装置。
【請求項８】
請求項７に記載の通信装置において、
前記捕捉部は、連続してロスした前記データパケットの数と閾値とを比較し、
前記送信レート決定部は、前記比較の結果、前記連続してロスした前記データパケットの数が前記閾値以下である場合、前記送信レートを、前記送信レート決定部が記憶している前記送信レートの半分の値にした後に前記目標レートまで増加させることを特徴とする通信装置。
【請求項９】
請求項８に記載の通信装置において、
前記送信レート決定部は、前記捕捉部による比較の結果、前記連続してロスした前記データパケットの数が前記閾値よりも大きな場合、前記送信レートを、前記受信間隔と同じ間隔で１つずつ前記データパケットを送信するときの送信レートまで減少させた後に前記目標レートまで増加させることを特徴とする通信装置。
【請求項１０】
データパケットを送信する通信装置と接続され、該データパケットに対する応答として送信されてきた確認応答を受信する擬似応答装置であって、
前記通信装置から送信されてきたデータパケットの送信レートを測定して記憶するとともに、該データパケットをその宛先へ転送するデータ捕捉部と、
前記通信装置から送信されてきたデータパケットを前記宛先へ転送してから所定の再送タイムアウト時間が経過するまでの間に該パケットデータに付与されたデータ識別番号が含まれた前記確認応答を受信したかどうかに基づいて、前記送信レートの目標値である目標レートを決定する目標レート決定部と、
前記確認応答を受信した際に前記データ捕捉部が記憶している前記送信レートと、前記目標レートと、前記確認応答を受信する受信間隔とに基づいて、前記送信したパケットデータに付与された前記データ識別番号を含む擬似的な確認応答である擬似応答を出力する出力間隔を決定し、該出力間隔ごとに前記擬似応答を前記通信装置へ送信する擬似応答出力部とを有する擬似応答装置。
【請求項１１】
請求項１０記載の擬似応答装置において、
前記データ捕捉部が転送した前記データパケットと、該データパケットに付与された前記データ識別番号とを対応付けて記憶する未応答データ記憶部と、
前記確認応答に基づいて、前記データ捕捉部が転送したデータパケットが受信ロスしたかどうかを判別し、該ロスしたデータパケットのデータ識別番号を識別する捕捉部と、
前記前記捕捉部が前記データパケットがロスしたと判別して該ロスしたデータパケットのデータ識別番号を識別した際、該データ識別番号を含む前記確認応答を受信していない場合、該データ識別番号と対応付けて記憶されているデータパケットを前記未応答データ記憶部から読み出して前記宛先へ送信する再送制御部とを有することを特徴とする擬似応答装置。
【請求項１２】
請求項１０または１１記載の擬似応答装置において、
前記目標レート決定部は、前記ロスしたデータパケットを送信する前に前記データパケットを送信した際の前記データ捕捉部が測定した送信レートに基づいて、前記目標レートを決定することを特徴とする擬似応答装置。
【請求項１３】
請求項１２記載の擬似応答装置において、
前記目標レート決定部は、前記ロスしたデータパケットを転送する直前に前記データ捕捉部が測定した送信レートを、前記目標レートとして決定することを特徴とする擬似応答装置。
【請求項１４】
請求項１２記載の擬似応答装置において、
前記目標レート決定部は、前記ロスしたデータパケットを転送する直前に前記データ捕捉部が測定した送信レートの過去の平均値を、前記目標レートとして決定することを特徴とする擬似応答装置。
【請求項１５】
請求項１２乃至１４のいずれか１項に記載の擬似応答装置において、
前記目標レート決定部は、前記送信したデータパケットがロスしていないと前記捕捉部が判別した場合、前記データ捕捉部が記憶している送信レートと前記レート増加量との乗算値と該記憶している送信レートとを加算した値を、前記目標レートとして決定することを特徴とする擬似応答装置。
【請求項１６】
データパケットを送信し、該データパケットに対する応答として送信されてきた確認応答を受信する通信装置における送信レート制御方法であって、
前記送信したパケットデータに付与されたデータ識別番号が含まれた前記確認応答を受信した場合、前記データパケットの送信レートをレート増加量だけ増大させ、該増大させた送信レートを当該通信装置に記憶する送信レート決定処理と、
前記データパケットを送信してから所定の再送タイムアウト時間が経過するまでの間に該パケットデータに付与されたデータ識別番号が含まれた前記確認応答を受信したかどうかに基づいて、前記送信レートの目標値である目標レートを決定する目標レート決定処理と、
前記確認応答を受信した際に当該通信装置が記憶している前記送信レートと、前記目標レートと、前記確認応答を受信する受信間隔とに基づいて、前記送信したパケットデータに付与された前記データ識別番号を含む擬似的な確認応答である擬似応答を出力する出力間隔を決定し、前記レート増加量を変更し、該出力間隔ごとに前記擬似応答を出力する擬似応答出力処理とを有し、
前記送信レート決定処理では、前記擬似応答が出力された場合または前記確認応答を受信した場合、前記送信レートを前記擬似応答出力処理にて変更したレート増加量だけ増大させる送信レート制御方法。
【請求項１７】
請求項１６記載の送信レート制御方法において、
当該通信装置の送信データ記憶部に前記データパケットに付与された前記データ識別番号と対応付けて記憶されている該データパケットを送信するデータ送信処理と、
前記データ送信処理にて送信した前記データパケットと、該データパケットに付与された前記データ識別番号とを対応付けて当該通信装置に記憶する再送制御処理と、
前記データ送信処理にて送信した前記データパケットに付与された前記データ識別番号が含まれた前記確認応答を受信した場合、または、該データ識別番号を含む前記擬似応答が前記擬似応答出力処理により出力されてきた場合、該データ識別番号と対応付けて記憶されている前記データパケットを前記送信データ記憶部から削除する削除処理とを有し、
前記再送制御処理では、前記データ送信処理にて送信したデータ識別番号を含む前記確認応答を受信する前に前記擬似応答により前記送信データ記憶部から削除された前記データパケットと同じデータパケットを読み出して送信することを特徴とする送信レート制御方法。
【請求項１８】
請求項１６または１７記載の送信レート制御方法において、
前記確認応答に基づいて、前記送信したデータパケットが受信ロスしたかどうかを判別し、該ロスしたデータパケットのデータ識別番号を識別する捕捉処理を有し、
前記目標レート決定処理では、前記ロスしたデータパケットを送信する前に前記データパケットを送信した際の前記送信レートに基づいて、前記目標レートを決定することを特徴とする送信レート制御方法。
【請求項１９】
請求項１８記載の送信レート制御方法において、
前記目標レート決定処理では、前記ロスしたデータパケットを送信する直前に前記データパケットを送信した送信レートを、前記目標レートとして決定することを特徴とする送信レート制御方法。
【請求項２０】
請求項１８記載の送信レート制御方法において、
前記目標レート決定処理では、前記ロスしたデータパケットを送信する直前に前記データパケットを送信した送信レートの過去の平均値を、前記目標レートとして決定することを特徴とする送信レート制御方法。
【請求項２１】
請求項１８乃至２０のいずれか１項に記載の送信レート制御方法において、
前記目標レート決定処理では、前記送信したデータパケットがロスしていないと前記捕捉処理にて判別した場合、当該通信装置が記憶している送信レートと前記レート増加量との乗算値と、該記憶している送信レートとを加算した値を、前記目標レートとして決定することを特徴とする送信レート制御方法。
【請求項２２】
請求項１８乃至２０のいずれか１項に記載の送信レート制御方法において、
前記送信レート決定処理では、前記データパケットがロスしたと前記捕捉処理にて判別した場合、前記送信レートを所定値まで減少させてから前記目標レートまで送信レートを増加させることを特徴とする送信レート制御方法。
【請求項２３】
請求項２２に記載の送信レート制御方法において、
前記捕捉処理では、連続してロスした前記データパケットの数と閾値とを比較し、
前記送信レート決定処理では、前記比較の結果、前記連続してロスした前記データパケットの数が前記閾値以下である場合、前記送信レートを、当該通信装置が記憶している前記送信レートの半分の値にした後に前記目標レートまで増加させることを特徴とする送信レート制御方法。
【請求項２４】
請求項２３に記載の送信レート制御方法において、
前記送信レート決定処理では、前記捕捉処理による比較の結果、前記連続してロスした前記データパケットの数が前記閾値よりも大きな場合、前記送信レートを、前記受信間隔と同じ間隔で１つずつ前記データパケットを送信するときの送信レートまで減少させた後に前記目標レートまで増加させることを特徴とする送信レート制御方法。
【請求項２５】
データパケットを送信し、該データパケットに対する応答として送信されてきた確認応答を受信する通信装置に、
前記送信したパケットデータに付与されたデータ識別番号が含まれた前記確認応答を受信した場合、前記データパケットの送信レートをレート増加量だけ増大させ、該増大させた送信レートを当該通信装置に記憶する送信レート決定手順と、
前記データパケットを送信してから所定の再送タイムアウト時間が経過するまでの間に該パケットデータに付与されたデータ識別番号が含まれた前記確認応答を受信したかどうかに基づいて、前記送信レートの目標値である目標レートを決定する目標レート決定手順と、
前記確認応答を受信した際に当該通信装置が記憶している前記送信レートと、前記目標レートと、前記確認応答を受信する受信間隔とに基づいて、前記送信したパケットデータに付与された前記データ識別番号を含む擬似的な確認応答である擬似応答を出力する出力間隔を決定し、前記レート増加量を変更し、該出力間隔ごとに前記擬似応答を出力する擬似応答出力手順とを実行させ、
前記送信レート決定手順では、前記擬似応答が出力された場合または前記確認応答を受信した場合、前記送信レートを前記擬似応答出力手順にて変更したレート増加量だけ増大させるプログラム。
【請求項２６】
請求項２５記載のプログラムにおいて、
当該通信装置の送信データ記憶部に前記データパケットに付与された前記データ識別番号と対応付けて記憶されている該データパケットを送信するデータ送信手順と、
前記データ送信手順にて送信した前記データパケットと、該データパケットに付与された前記データ識別番号とを対応付けて当該通信装置に記憶する再送制御手順と、
前記データ送信手順にて送信した前記データパケットに付与された前記データ識別番号が含まれた前記確認応答を受信した場合、または、該データ識別番号を含む前記擬似応答が前記擬似応答出力手順により出力されてきた場合、該データ識別番号と対応付けて記憶されている前記データパケットを前記送信データ記憶部から削除する削除手順とを前記通信装置にさらに実行させ、
前記再送制御手順では、前記データ送信手順にて送信したデータ識別番号を含む前記確認応答を受信する前に前記擬似応答により前記送信データ記憶部から削除された前記データパケットと同じデータパケットを読み出して送信することを特徴とするプログラム。
【請求項２７】
請求項２５または２６記載のプログラムにおいて、
前記確認応答に基づいて、前記送信したデータパケットが受信ロスしたかどうかを判別し、該ロスしたデータパケットのデータ識別番号を識別する捕捉手順を前記通信装置にさらに実行させ、
前記目標レート決定手順では、前記ロスしたデータパケットを送信する前に前記データパケットを送信した際の前記送信レートに基づいて、前記目標レートを決定することを特徴とするプログラム。
【請求項２８】
請求項２７記載のプログラムにおいて、
前記目標レート決定手順では、前記ロスしたデータパケットを送信する直前に前記データパケットを送信した送信レートを、前記目標レートとして決定することを特徴とするプログラム。
【請求項２９】
請求項２７記載のプログラムにおいて、
前記目標レート決定手順では、前記ロスしたデータパケットを送信する直前に前記データパケットを送信した送信レートの過去の平均値を、前記目標レートとして決定することを特徴とするプログラム。
【請求項３０】
請求項２７乃至２９のいずれか１項に記載のプログラムにおいて、
前記目標レート決定手順では、前記送信したデータパケットがロスしていないと前記捕捉手順にて判別した場合、当該通信装置が記憶している送信レートと前記レート増加量との乗算値と、該記憶している送信レートとを加算した値を、前記目標レートとして決定することを特徴とするプログラム。
【請求項３１】
請求項２７乃至２９のいずれか１項に記載のプログラムにおいて、
前記送信レート決定手順では、前記データパケットがロスしたと前記捕捉手順にて判別した場合、前記送信レートを所定値まで減少させてから前記目標レートまで送信レートを増加させることを特徴とするプログラム。
【請求項３２】
請求項３１に記載のプログラムにおいて、
前記捕捉手順では、連続してロスした前記データパケットの数と閾値とを比較し、
前記送信レート決定手順では、前記比較の結果、前記連続してロスした前記データパケットの数が前記閾値以下である場合、前記送信レートを、当該通信装置が記憶している前記送信レートの半分の値にした後に前記目標レートまで増加させることを特徴とするプログラム。
【請求項３３】
請求項３２に記載のプログラムにおいて、
前記送信レート決定手順では、前記捕捉手順による比較の結果、前記連続してロスした前記データパケットの数が前記閾値よりも大きな場合、前記送信レートを、前記受信間隔と同じ間隔で１つずつ前記データパケットを送信するときの送信レートまで減少させた後に前記目標レートまで増加させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置、擬似応答装置、送信レート制御方法およびプログラムに関する。
【背景技術】
【０００２】
送信元と宛先との間で送受信されるデータパケットの送達確認を行いながら送信レートを制御して通信を行うためのプロトコルの一例として、ＴＣＰ（Transmission Control Protocol）が挙げられる（例えば、特許文献１参照。）。
【０００３】
ＴＣＰを用いて通信する場合の送信レートを制御する方法は、データパケットを送信した通信装置がそのデータパケットを受信した他の通信装置から送信されてきた確認応答（いわゆる、ACK（Acknowledgement）パケット）を受信して、確認応答の受信状況や受信した確認応答が示す他の通信装置におけるデータパケットの受信状況に基づいて、送出可能なデータパケットの量を制御する。送信したデータパケットを宛先である他の通信装置が受信した場合、データパケットの送信レートを増加させ、送信したデータパケットの受信ロスが発生した場合、送信レートを減少させる。
【０００４】
この送信レートを制御する場合、例えば、以下に示す方法を用いることが可能である。この制御方法では、図１５に示す通信装置８００が有するデータ送信部８１０は、送信データ記憶部８４０から読み出したデータパケットを、送信レート決定部８３０から通知される送信レートで他の通信装置９００へ送信する。
【０００５】
その後、応答受信部８２０は、他の通信装置９００から送信されてきた図１６に示すような確認応答（ＡＣＫパケット）に基づいて、送信したデータパケットのロスを検出した場合、データ送信部８１０へロスが検出されたデータパケットの再送を要求する。また、応答受信部８２０は、送信したデータパケットを他の通信装置９００が受信したかどうかを送信レート決定部８３０へ通知する。
【０００６】
送信レート決定部８３０は、他の通信装置９００がデータパケットを受信した旨が応答受信部８２０から通知された場合、他の通信装置９００に対するデータパケットの送信レートを増加させる。送信レート決定部８３０は、例えば、図１７に示すように現在の送信レートが所定の基準送信レートssthreshよりも小さな場合、確認応答を１個受信するごとにデータパケットの送信レートを２倍にする。また、現在の送信レートが基準送信レートssthreshよりも大きな場合、確認応答を１個受信するごとに、送信レート決定部８３０は、他の通信装置９００に対するデータパケットの送信レートを「１／（現在の送信レート）」だけ増加させる。
【０００７】
また、応答受信部８２０は、同じ応答番号（例えば、ＡＣＫ番号）をそれぞれ含む複数の確認応答を重複して受信した場合、データパケットがロスしたと判定する。そして、応答受信部８２０は、その旨を送信レート決定部８３０へ通知する。すると、送信レート決定部８３０は、送信レートを半減させる。また、非特許文献１の3.1 Slow Start and Congestion Avoidanceに開示されているように、所定の再送タイムアウト時間を経過しても他の通信装置９００から確認応答が送信されてきていない場合、送信レート決定部８３０は、送信レートを、他の通信装置９００から確認応答を受信してからその確認応答の次に送信されてくる確認応答を受信するまでの間にデータ送信部８１０が１データパケットを送信するときの送信レートに減少させてもよい。
【０００８】
また、図１５に示した通信装置９００のデータ受信部９１０は、通信装置８００から送信されてきたデータパケットを受信データ記憶部９４０へ書き込む。また、データ受信部９１０は、受信したデータパケットに含まれているデータパケットに固有に付与されたデータ識別番号（例えば、シーケンス番号）を応答送信部９２０へ通知する。
【０００９】
応答送信部９２０は、応答頻度決定部９３０から通知される頻度で、データ受信部９１０から通知されたデータ識別番号に基づいて次に受信を期待するデータ識別番号である応答番号として決定し、その応答番号を含む確認応答を生成して通信装置８００へ送信する。
【００１０】
なお、応答頻度決定部９３０は、通信装置８００から送信されてきたデータパケットを所定の個数Ｘ個だけ受信するごとに１つの確認応答を送信するよう応答送信部９２０へ指示する。なお、非特許文献１の4.2 Generating Acknowledgmentsにおいては、TCPを用いた通信にて設定するデータパケットの個数Ｘとして、Ｘ＝２が推奨されている。また、応答頻度決定部９３０は、一定時間Ｔが経過した場合にも、確認応答を送信するよう応答送信部９２０へ指示する。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００５−１９８１１１号公報
【非特許文献】
【００１２】
【非特許文献１】M. Allman, V. Paxson, W. Stevens, “RFC2581 TCP congestion Control,”,[online], April 1999., IETF, ［平成 21年 4月 14日検索］、インターネット〈URL：http://www.ietf.org/rfc/rfc2581.txt?number=2581〉
【発明の概要】
【発明が解決しようとする課題】
【００１３】
しかし、上述した方法においては、Xが大きな値に設定されていくに従って、または一定時間Ｔが長く設定されていくに従って、他の通信装置９００が確認応答を送信する頻度がより減少していく。また、確認応答を送信する頻度が減少するに伴って、データパケットを送信した通信装置８００が送信レートを制御する時間間隔が長くなっていく。この場合、通信装置８００が、ネットワーク上のトラヒックの時間的変化に応じたデータパケットの送信レートの正確な制御を行うことが困難となってしまうという問題点がある。
【００１４】
この問題点について、図１８を参照してより具体的に説明する。図１８は、他の通信装置９００が互いに異なる２つの頻度で確認応答をそれぞれ送信する場合における、通信装置８００が変更した送信レートの経過時間に対する特性である。丸印のプロットは、他の通信装置９００がデータパケットを１個だけ受信するごとに確認応答を送信した場合の送信レートの時間的変化を表している。また、四角印のプロットは、他の通信装置９００がデータパケットを３個だけ受信するごとに確認応答を送信した場合の送信レートの時間的変化を表している。
【００１５】
図１８に示した例では、他の通信装置９００が、通信装置８００から送信されてきたデータパケットを３個受信するごとに確認応答を１個送信した場合、通信装置８００が、ネットワークの輻輳に応じて送信レートを減少させるタイミングが遅れてしまう。また、通信装置８００は、１つの確認応答を受信するごとに送信レートを所定のレート増加量だけ増大させるため、データパケットに対して確認応答を受信する頻度が少なくなるに伴って送信レートの増加が鈍化している。
【００１６】
本発明は、上述した課題を解決する通信装置、擬似応答装置、送信レート制御方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１７】
上記課題を解決するために、本発明の通信装置は、データパケットを送信し、該データパケットに対する応答として送信されてきた確認応答を受信する通信装置であって、前記送信したパケットデータに付与されたデータ識別番号が含まれた前記確認応答を受信した場合、前記データパケットの送信レートをレート増加量だけ増大させ、該増大させた送信レートを記憶する送信レート決定部と、前記データパケットを送信してから所定の再送タイムアウト時間が経過するまでの間に該パケットデータに付与されたデータ識別番号が含まれた前記確認応答を受信したかどうかに基づいて、前記送信レートの目標値である目標レートを決定する目標レート決定部と、前記確認応答を受信した際に前記送信レート決定部が記憶している前記送信レートと、前記目標レートと、前記確認応答を受信する受信間隔とに基づいて、前記送信したパケットデータに付与された前記データ識別番号を含む擬似的な確認応答である擬似応答を出力する出力間隔を決定し、前記レート増加量を変更し、該出力間隔ごとに前記擬似応答を出力する擬似応答出力部とを有し、前記送信レート決定部は、前記擬似応答が出力された場合または前記確認応答を受信した場合、前記送信レートを前記擬似応答出力部が変更したレート増加量だけ増大させる。
【００１８】
上記課題を解決するために、本発明の擬似応答装置は、データパケットを送信する通信装置と接続され、該データパケットに対する応答として送信されてきた確認応答を受信する擬似応答装置であって、前記通信装置から送信されてきたデータパケットの送信レートを測定して記憶するとともに、該データパケットを宛先へ転送するデータ捕捉部と、前記通信装置から送信されてきたデータパケットを前記宛先へ転送してから所定の再送タイムアウト時間が経過するまでの間に該パケットデータに付与されたデータ識別番号が含まれた前記確認応答を受信したかどうかに基づいて、前記送信レートの目標値である目標レートを決定する目標レート決定部と、前記確認応答を受信した際に前記データ捕捉部が記憶している前記送信レートと、前記目標レートと、前記確認応答を受信する受信間隔とに基づいて、前記送信したパケットデータに付与された前記データ識別番号を含む擬似的な確認応答である擬似応答を出力する出力間隔を決定し、該出力間隔ごとに前記擬似応答を前記通信装置へ送信する擬似応答出力部とを有する。
【００１９】
上記課題を解決するために、本発明の送信レート制御方法は、データパケットを送信し、該データパケットに対する応答として送信されてきた確認応答を受信する通信装置における送信レート制御方法であって、前記送信したパケットデータに付与されたデータ識別番号が含まれた前記確認応答を受信した場合、前記データパケットの送信レートをレート増加量だけ増大させ、該増大させた送信レートを当該通信装置に記憶する送信レート決定処理と、前記データパケットを送信してから所定の再送タイムアウト時間が経過するまでの間に該パケットデータに付与されたデータ識別番号が含まれた前記確認応答を受信したかどうかに基づいて、前記送信レートの目標値である目標レートを決定する目標レート決定処理と、前記確認応答を受信した際に当該通信装置が記憶している前記送信レートと、前記目標レートと、前記確認応答を受信する受信間隔とに基づいて、前記送信したパケットデータに付与された前記データ識別番号を含む擬似的な確認応答である擬似応答を出力する出力間隔を決定し、前記レート増加量を変更し、該出力間隔ごとに前記擬似応答を出力する擬似応答出力処理とを有し、前記送信レート決定処理では、前記擬似応答が出力された場合または前記確認応答を受信した場合、前記送信レートを前記擬似応答出力処理にて変更したレート増加量だけ増大させる。
【００２０】
また、コンピュータに実行させるプログラムであって、データパケットを送信し、該データパケットに対する応答として送信されてきた確認応答を受信する通信装置に、前記送信したパケットデータに付与されたデータ識別番号が含まれた前記確認応答を受信した場合、前記データパケットの送信レートをレート増加量だけ増大させ、該増大させた送信レートを当該通信装置に記憶する送信レート決定手順と、前記データパケットを送信してから所定の再送タイムアウト時間が経過するまでの間に該パケットデータに付与されたデータ識別番号が含まれた前記確認応答を受信したかどうかに基づいて、前記送信レートの目標値である目標レートを決定する目標レート決定手順と、前記確認応答を受信した際に当該通信装置が記憶している前記送信レートと、前記目標レートと、前記確認応答を受信する受信間隔とに基づいて、前記送信したパケットデータに付与された前記データ識別番号を含む擬似的な確認応答である擬似応答を出力する出力間隔を決定し、前記レート増加量を変更し、該出力間隔ごとに前記擬似応答を出力する擬似応答出力手順とを実行させ、前記送信レート決定手順では、前記擬似応答が出力された場合または前記確認応答を受信した場合、前記送信レートを前記擬似応答出力手順にて変更したレート増加量だけ増大させる。
【発明の効果】
【００２１】
本発明によれば、データパケットに対する確認応答の送信頻度が少ない場合でも、データパケットを送信する通信装置にて、ネットワーク上のトラヒックの時間的変化に応じたデータパケットの送信レートの正確な制御を行うことができる。
【図面の簡単な説明】
【００２２】
【図１】本発明の実施形態１に従った通信システムの構成を示す図である。
【図２】データパケットを送信する通信装置の構成を示す図である。
【図３】図２に示したデータ管理情報のデータ構造の一例を示した図である。
【図４】実施形態１にて、通信装置間で送受信されるデータの流れを示す図である。
【図５】経過時間に対して、データパケットを送信する通信装置により変更される送信レートを示す図である。
【図６】（ａ）確認応答のデータ構造の一例を示す図である。（ｂ）擬似応答番号が書き込まれた確認応答のデータ構造の一例を示す図である。
【図７】軽度の輻輳が発生した場合の送信レート変化を示した図である。
【図８】重度の輻輳が発生した場合の送信レート変化を示した図である。
【図９】ロスが発生していない場合の送信レート変化を示した図である。
【図１０】確認応答を送信する通信装置の構成を示す図である。
【図１１】データパケットを送信する通信装置が送信レートを制御する動作を示すフローチャートである。
【図１２】実施形態２の通信システムの構成を示す図である。
【図１３】データ管理情報のデータ構造の一例を示した図である。
【図１４】擬似応答装置が擬似応答を送信する動作を示すフローチャートである。
【図１５】ＴＣＰを用いて通信を行う通信システムの構成の一例を示す図である。
【図１６】確認応答のデータ構造の一例を示す図である。
【図１７】ＴＣＰを用いた通信にて一般的な制御方法により制御される送信レートの変化を示した図である。
【図１８】１つのデータパケットを受信するごとに１つの確認応答が送信される場合の送信レートの変化と、３つのデータパケットを受信するごとに確認応答が送信される場合の送信レートの変化とを示した図である。
【発明を実施するための形態】
【００２３】
以下、本発明の実施形態に従った通信システム（通信装置、擬似応答装置、送信レート制御方法およびプログラムを含む）を説明する。
【００２４】
まず、本実施形態の通信システムの構成を説明する。図１に示すように、この通信システムは、ネットワーク３を介して互いに通信可能に接続された通信装置１と通信装置２とから構成されている。
【００２５】
通信装置１、２は、ネットワーク３を介してデータパケットを互いに送受信する「通信装置」である。以下では、通信装置１が送信したデータパケットを通信装置２が受信する場合の動作を例に挙げて説明する。
【００２６】
通信装置１は、データパケットを送信する際、データパケットそれぞれの送信順序を示した「データ識別番号」であるシーケンス番号を当該データパケットそれぞれに付与して送信する。
【００２７】
なお、データパケットのサイズは任意でよいが、以下では、そのサイズが１００ｂｙｔｅｓである場合を例に挙げて説明する。また、データパケットに付与されるデータ識別番号が、データパケットのサイズと同じ値（＝「１００」）ずつ増加する場合を例に挙げて説明する。
【００２８】
通信装置２は、通信装置１から送信されてきたデータパケットを受信した場合、そのデータパケットを受信した旨を示す「確認応答」を生成する。この確認応答の例としては、ＡＣＫパケットが挙げられる。
【００２９】
なお、通信装置２は、この確認応答に、送信されてきたデータパケットに付与されているデータ識別番号を書き込む。また、通信装置２は、この確認応答に、次に受信を期待するデータ識別番号を「応答番号」として書き込む。例えば、送信されてきたデータパケットに付与されたデータ識別番号が「１１００」である場合、応答番号は「１２００」となる。そして、通信装置２は、生成した確認応答を通信装置１へ送信する。また、通信装置２が、次に受信を期待するシーケンス番号をＡＣＫ番号として確認応答に書き込む場合、TCP SACK（Selective Acknowledgement；選択確認応答）オプションを用いてもよい。
【００３０】
通信装置１は、確認応答に基づいてデータパケットが受信ロスしているかどうかを判別し、判別結果に応じて「目標レートＲtarget」を決定する。ここで、目標レートＲtargetとは、通信装置２に対するデータパケットの送信レートの目標値である。
【００３１】
そして、通信装置１は、データパケットの送信レートを、送信レートと目標レートＲtargetとを同じ値とするための「擬似応答」を用いて制御する。
【００３２】
ここで、「擬似応答」とは、確認応答のデータ構造と同じデータ構造を有し、応答番号に代えて、送信したデータパケットに付与されたデータ識別番号に基づいて通信装置１が決定した擬似応答番号が書き込まれたデータである。
【００３３】
つぎに、図１に示した通信装置１の構成について、図２を参照して詳細に説明する。
【００３４】
図２に示すように、通信装置１は、データ送信部１１と、削除部１２と、送信レート決定部１３と、送信データ記憶部１４と、捕捉部１５と、目標レート決定部１６と、擬似応答出力部１７と、再送制御部１８と、未応答データ記憶部１９とを有する。
【００３５】
送信データ記憶部１４は、データパケットと、そのデータパケットに付与されたデータ識別番号との対応付を記憶している。
【００３６】
データ送信部１１は、送信データ記憶部１４内のデータパケットを読み出す。そして、データ送信部１１は、読み出したデータパケットを、送信レート決定部１３から通知された送信レートに従って通信装置２へ送信するとともに、そのデータパケットを再送制御部１８へ出力する。
【００３７】
また、データ送信部１１は、データパケットを通信装置２へ送信した送信時刻とそのデータパケットのデータ識別番号との対応付を、削除部１２と捕捉部１５とへ出力する。
【００３８】
また、データ送信部１１は、通信装置２へ送信したデータパケットに付与されているデータ識別番号と、そのデータパケットの送信レートとの対応付を、送信レート決定部１３へ出力する。
【００３９】
また、データ送信部１１は、ロスしたデータパケットのデータ識別番号と、そのデータパケットの再送を指示する再送指示とが削除部１２から出力されてきた場合、そのデータ識別番号と同じデータ識別番号と対応付けて記憶されているデータパケットを送信データ記憶部１４から読み出して、送信レート決定部１３から通知された送信レートに従って通信装置２へ送信する。
【００４０】
また、データ送信部１１は、再送制御部１８から出力されてきたデータパケットを通信装置２へ送信する。
【００４１】
削除部１２は、捕捉部１５から確認応答が出力されてきた際、当該確認応答内のデータ識別番号と同じデータ識別番号とデータパケットとの対応付を送信データ記憶部１４から削除する。
【００４２】
また、削除部１２は、擬似応答出力部１７から擬似応答が出力されてきた際、当該擬似応答内のデータ識別番号と同じデータ識別番号と対応付けて記憶されているデータパケットを送信データ記憶部１４から削除する。
【００４３】
つまり、確認応答のデータ構造と擬似応答のデータ構造とを同じものとしておけば、確認応答（ＡＣＫパケット）に対して上述した動作を行う回路やプログラムを、削除部１２として流用することが可能である。
【００４４】
また、削除部１２は、データパケットを送信データ記憶部１４から削除した旨を送信レート決定部１３へ通知する。
【００４５】
さらに、削除部１２は、削除したデータパケットのデータ識別番号と対応付けて擬似応答出力部１７内のデータ管理情報１７１に記憶されている送信データ削除フラグを、そのデータパケットが送信データ記憶部１４から削除されていないことを示す情報から、そのデータパケットが送信データ記憶部１４から削除されたことを示す情報へ書き換える。
【００４６】
図３に示すように、このデータ管理情報１７１は、擬似応答番号と、データ識別番号と、送信データ削除フラグと、未応答データ削除フラグと、確認応答受信フラグとを対応付ける情報である。この例では、データ識別番号「１１００」〜「２０００」のデータパケットをデータ送信部１１が通信装置２へ送信し、これらのうちデータ識別番号「１１００」、「１３００」、「１５００」、「１７００」を用いて擬似応答出力部１７が４つの擬似応答を生成した際のデータ管理情報１７１を示している。
【００４７】
なお、「送信データ削除フラグ」とは、その送信データ削除フラグと対応付けられているデータ識別番号が付与されたデータパケットが、削除部１２により送信データ記憶部１４から削除されたかどうかを示す情報である。
【００４８】
送信データ削除フラグとして設定する情報は、削除部１２によるデータパケットの送信データ記憶部１４からの削除の有無をそれぞれ識別可能な情報であれば、任意の情報でよい。
【００４９】
本実施形態では、送信データ削除フラグは、その値が「０」である場合、データパケットが削除部１２により送信データ記憶部１４から削除されていないことを示し、その値が「１」である場合、データパケットが削除部１２により送信データ記憶部１４から削除されたことを示す。
【００５０】
つまり、本実施形態では、削除部１２は、データパケットを送信データ記憶部１４から削除した場合、そのデータパケットのデータ識別番号と対応付けてデータ管理情報１７１に記憶されている送信データ削除フラグを、「０」から「１」へ書き換える。
【００５１】
また、「未応答データ削除フラグ」とは、その未応答データ削除フラグと対応付けられているデータ識別番号が付与されたデータパケットが、再送制御部１８により未応答データ記憶部１９から削除されたかどうかを示す情報である。
【００５２】
未応答データ削除フラグとして設定する情報は、再送制御部１８によるデータパケットの未応答データ記憶部１９からの削除の有無をそれぞれ識別可能な情報であれば、任意の情報でよい。
【００５３】
本実施形態では、未応答データ削除フラグは、その値が「０」である場合、データパケットが再送制御部１８により未応答データ記憶部１９から削除されていないことを示し、その値が「１」である場合、データパケットが再送制御部１８により未応答データ記憶部１９から削除されたことを示す。
【００５４】
また、「確認応答受信フラグ」とは、その確認応答受信フラグと対応付けられているデータ識別番号を含む確認応答を捕捉部１５が通信装置２から受信したかどうかを示す情報である。
【００５５】
確認応答受信フラグとして設定する情報は、捕捉部１５による確認応答の受信の有無をそれぞれ識別可能な情報であれば、任意の情報でよい。
【００５６】
本実施形態では、確認応答受信フラグは、その値が「０」である場合、確認応答を捕捉部１５が通信装置２から受信していないことを示し、その値が「１」である場合、確認応答を捕捉部１５が通信装置２から受信したことを示す。
【００５７】
また、削除部１２は、捕捉部１５から出力されてきた確認応答の数と、その確認応答内の応答番号と同じ番号を擬似応答番号として含む擬似応答出力部１７から出力されてきた擬似応答の数との合計が「所定の重複数」以上となった場合、データパケットの送信レートを、送信レート決定部１３が記憶している現在の送信レートＲnowの「１／２」倍に変更するよう指示するレート変更指示を送信レート決定部１３へ出力する。
【００５８】
なお、ここでいう「所定の重複数」とは、通信装置１が送信したデータパケットがロスした場合に、再送タイムアウト時間内に通信装置２から送信される確認応答の数である。なお、削除部１２が変更を指示する送信レートの値は、送信レート決定部１３が記憶している現在の送信レートＲnowよりも小さな値であれば任意でよい。
【００５９】
また、削除部１２は、データ送信部１１から出力されてきた送信時刻とその送信時刻に送信されたデータパケットのデータ識別番号との対応付を記憶する。また、送信時刻とデータ識別番号との対応付がデータ送信部１１から出力されてきた場合、その送信時刻からあらかじめ設定された再送タイムアウト時間が経過したかどうかを判別する。そして、削除部１２は、送信時刻から再送タイムアウト時間が経過したと判別した後に、その送信時刻に送信されたデータパケットのデータ識別番号を含む擬似応答が擬似応答出力部１７から出力されてきた場合、データパケットの送信レートを、現在の送信レートＲnowから「最小送信レートＲmin」に変更するよう指示するレート変更指示を送信レート決定部１３へ出力する。
【００６０】
ここでいう「最小送信レートＲmin」とは、通信装置２から送信されてくる確認応答を通信装置１が受信する「受信間隔」と同じ間隔で通信装置１がデータパケットを１つずつ通信装置２へ送信するときの送信レートである。
【００６１】
また、削除部１２は、ロスしたデータパケットのデータ識別番号と、そのデータパケットの再送を指示する再送指示とが捕捉部１５から出力されてきた場合、データ送信部１１に対して、そのデータ識別番号と再送指示とを出力する。
【００６２】
送信レート決定部１３は、データ送信部１１から出力されてきたデータ識別番号とそのデータ識別番号が付与されたデータパケットの送信レートとの対応付を記憶する。
【００６３】
また、送信レート決定部１３は、データパケットを送信データ記憶部１４から削除した旨が削除部１２から通知された場合、送信レートを、記憶している現在の送信レートＲnowと所定のレート増加量ｆとを加算した値に変更する。また、送信レート決定部１３は、変更した送信レートを現在の送信レートＲnowとして新たに記憶する。また、送信レート決定部１３は、変更した送信レートをデータ送信部１１へ通知する。
【００６４】
本実施形態では、送信レート決定部１３は、レート増加量ｆを記憶している。
【００６５】
ここで、「レート増加量ｆ」とは、削除部１２がデータパケットを送信データ記憶部１４から削除した場合に、現在の送信レートＲnowに加算される値である。
【００６６】
なお、レート増加量ｆの値については特に限定しない。
【００６７】
本実施形態では、送信レート決定部１３は、データパケットを送信データ記憶部１４から削除した旨が削除部１２から通知された際に記憶している現在の送信レートＲnowと、所定の基準送信レートssthreshとを比較する。なお、基準送信レートssthreshの値は任意でよい。本実施形態では、基準送信レートssthreshの値が現在の送信レートＲnowの「１／２」倍である場合を例に挙げて説明する。
【００６８】
そして、送信レート決定部１３は、比較の結果、記憶している現在の送信レートＲnowが所定の基準送信レートssthresh以下である場合、レート増加量ｆを現在の送信レートＲnowと同じ値に決定する。つまり、この場合、送信レート決定部１３は、送信レートを現在の送信レートＲnowの２倍に変更する。
【００６９】
また、本実施形態では、送信レート決定部１３は、比較の結果、現在の送信レートＲnowが基準送信レートssthreshよりも大きな場合、レート増加量ｆを、「１／（現在の送信レートＲnow）」倍とする。
【００７０】
なお、送信レート決定部１３は、データパケットがロスしたと捕捉部１５が判別した場合、送信レートを「所定値」まで一旦減少させてから、目標レートまで送信レートを増加させる。本実施形態では、「所定値」は、現在の送信レートＲnowの「１／２」倍の値、または、最小送信レートＲminである。
【００７１】
より具体的には、送信レート決定部１３は、送信レートを現在の送信レートＲnowの「１／２」倍に変更するよう指示するレート変更指示が削除部１２から出力されてきた場合、送信レートを現在の送信レートＲnowの「１／２」倍の値に変更するとともに、その旨を擬似応答出力部１７へ通知する。
【００７２】
また、本実施形態では、送信レート決定部１３は、送信レートを最小送信レートＲminに変更するよう指示するレート変更指示が削除部１２から出力されてきた場合、送信レートを現在の送信レートＲnowから最小送信レートＲminへ変更するとともに、その旨を擬似応答出力部１７へ通知する。
【００７３】
捕捉部１５は、通信装置２から送信されてきた確認応答を受信した場合、その確認応答内のデータ識別番号と同じデータ識別番号と対応付けて記憶されているデータ管理情報１７１内の確認応答受信フラグを、「０」から「１」へ書き換える。
【００７４】
また、捕捉部１５は、データ送信部１１から出力されてきたデータパケットのデータ識別番号とそのデータパケットの送信時刻との対応付を記憶する。
【００７５】
また、捕捉部１５は、通信装置２から送信されてきた確認応答内のデータ識別番号に基づいて、データパケットがネットワーク３にてロスしたかどうかを判別する。
【００７６】
より具体的には、捕捉部１５は、データ送信部１１から送信時刻が出力されてきた場合、その送信時刻から再送タイムアウト時間が経過する間に、その送信時刻と対応付けて記憶しているデータ識別番号を含む確認応答を受信したかどうかを判別する。
【００７７】
そして、捕捉部１５は、送信時刻から再送タイムアウト時間が経過する間に、その送信時刻と対応付けて記憶しているデータ識別番号を含む確認応答を受信したと判別した場合、その間に送信されてきた同じ応答番号をそれぞれ含む確認応答の数と、「所定の重複数」とを比較する。
【００７８】
そして、捕捉部１５は、比較の結果、送信時刻から再送タイムアウト時間が経過する間に送信されてきた同じ応答番号をそれぞれ含む確認応答の数が所定の重複数未満である場合、その送信時刻と対応付けて記憶しているデータ識別番号のデータパケットがロスしていないと判別する。この場合、捕捉部１５は、データパケットがロスしていない旨を目標レート決定部１６と擬似応答出力部１７とへ通知する。
【００７９】
さらに、ロスしていないと判別した際、捕捉部１５は、その確認応答の受信時に書き換えた確認応答受信フラグと対応付けて記憶されている送信データ削除フラグの値が「０」である場合、その確認応答を削除部１２へ出力する。
【００８０】
また、捕捉部１５は、比較の結果、送信時刻から再送タイムアウト時間が経過する間に送信されてきた同じ応答番号をそれぞれ含む確認応答の数が所定の重複数以上である場合、データパケットがロスしたと判別する。
【００８１】
また、捕捉部１５は、データ送信部１１から出力されてきた送信時刻から再送タイムアウト時間が経過する間に、その送信時刻と対応付けて記憶しているデータ識別番号を含む確認応答が送信されてきていないと判別した場合、そのデータ識別番号が付与されたデータパケットがロスしたと判別する。
【００８２】
なお、送信時刻から再送タイムアウト時間が経過する間に確認応答が送信されてこなかったためにロスしたと判別されたデータパケットは、そのデータ識別番号を含む擬似応答を入力した削除部１２によって送信データ記憶部１４から削除される。しかし、捕捉部１５は、そのデータパケットのデータ識別番号を含む確認応答が、再送タイムアウト時間が経過した後に通信装置２から送信されてきた場合、その確認応答内の応答番号をデータ管理情報１７１内の擬似応答番号の最大値へ書き換えて、その擬似応答番号を含む確認応答を削除部１２へ出力する。
【００８３】
さらに、捕捉部１５は、データパケットがロスしたと判別した場合、その旨と、そのデータパケットのデータ識別番号とを目標レート決定部１６へ通知する。
【００８４】
また、捕捉部１５は、データパケットがロスしたと判別した場合、そのデータパケットのデータ識別番号と対応付けて記憶されている送信データ削除フラグの値が「１」であり、かつそのデータ識別番号と対応付けて記憶されている確認応答受信フラグの値が「０」であるかどうかを判別する。これにより、捕捉部１５は、送信したデータパケットのロスによって通信装置２が受信していないにも関わらず、擬似応答によって削除部１２が送信データ記憶部１４から削除したデータパケットの有無を確認する。
【００８５】
そして、ロスしたと判別されたデータ識別番号と対応付けて記憶されている送信データ削除フラグの値が「１」であり、かつそのデータ識別番号と対応付けて記憶されている確認応答受信フラグの値が「０」である場合、捕捉部１５は、データ管理情報１７１に記憶されている擬似応答番号の最大値と、ロスしたデータパケットのデータ識別番号とを比較する。
【００８６】
比較の結果、ロスしたデータパケットのデータ識別番号が擬似応答番号の最大値よりも小さな場合、捕捉部１５は、そのデータ識別番号と、当該データ識別番号が付与されたデータパケットの再送を指示する再送指示とを再送制御部１８へ出力する。
【００８７】
また、捕捉部１５は、通信装置２から送信されてきた確認応答に含まれている応答番号を、データ管理情報１７１に記憶されている擬似応答番号の最大値へ書き換える。また、捕捉部１５は、確認応答に含まれる通信装置２が受信したデータパケットのデータ識別番号のうち擬似応答番号の最大値よりも小さなデータ識別番号を削除する。そして、捕捉部１５は、その確認応答を、削除部１２へ出力する。
【００８８】
また、比較の結果、ロスしたデータパケットのデータ識別番号が擬似応答番号の最大値よりも大きな場合、捕捉部１５は、通信装置２から送信されてきた確認応答内の応答番号を、データ管理情報１７１に記憶されている擬似応答番号の最大値へ書き換える。そして、捕捉部１５は、この擬似応答番号を含む確認応答を削除部１２へ出力する。
【００８９】
なお、擬似応答番号の最大値よりも大きなデータ識別番号が付与されたデータパケットがロスした場合、このデータパケットは、削除部１２により送信データ記憶部１４から削除されておらず送信データ記憶部１４に記憶されている状態にある。そのため、捕捉部１５は、そのデータ識別番号と、当該データ識別番号が付与されたデータパケットの再送を指示する再送指示とを削除部１２へ出力する。
【００９０】
さらに、捕捉部１５は、データパケットがロスしたと判別した場合、連続してロスしたデータパケットの個数（以下、「連続ロス数」という）をカウントする。そして、捕捉部１５は、連続ロス数と、所定の閾値とを比較する。
【００９１】
当該比較の結果、連続ロス数が所定の閾値以下である場合、捕捉部１５は、軽度の輻輳が発生した旨を擬似応答出力部１７へ通知する。
【００９２】
また、比較の結果、連続ロス数が所定の閾値よりも大きな場合、捕捉部１５は、重度の輻輳が発生した旨を擬似応答出力部１７へ通知する。
【００９３】
ここで、軽度の輻輳とは、連続してロスしたデータパケットの数が所定の閾値以下であるような輻輳のことを指す。また、重度の輻輳とは、連続してロスしたデータパケットの数が所定の閾値よりも大きな輻輳のことを指す。
【００９４】
図４は、通信装置１から送信されたデータパケットと、通信装置２から送信された確認応答とのシーケンスを示す図である。通信装置１は、所定数（この例では、データパケットのサイズと同じ値「１００」）ずつ増加するデータ識別番号「１１００」〜「３２００」のデータパケットを送信している。
【００９５】
また、図５は、図４に示したデータ識別番号「１１００」〜「３２００」がそれぞれ付与されたデータパケットを送信したときの送信レートの経過時間に対する変化を示している。なお、擬似応答により、擬似応答番号は「３３００」まで進んでいる。
【００９６】
上述したように、捕捉部１５は、図６（ａ）に示すような通信装置２から送信されてきた確認応答に含まれていた応答番号（ＡＣＫ番号）「３０００」を、図６（ｂ）に示すように擬似応答番号と同じ番号「３３００」に書き換えている。また、図６（ｂ）に示すように、書換後の確認応答に含まれている通信装置２が受信したデータパケットのデータ識別番号（シーケンス番号）のうち擬似応答番号「３３００」よりも小さなデータ識別番号は削除している。
【００９７】
また、捕捉部１５は、通信装置２から送信されてきた確認応答を受信した際、確認応答を受信した時刻を記憶しておく。そして、捕捉部１５は、通信装置２から送信されてきた確認応答を受信した場合、その確認応答を受信した時刻からその確認応答の直前に確認応答を受信した時刻を減算した値を、確認応答の受信間隔として算出する。そして、捕捉部１５は、算出した受信間隔を擬似応答出力部１７へ通知する。
【００９８】
また、捕捉部１５は、送信時刻から再送タイムアウト時間が経過する間に、その送信時刻と対応付けて記憶しているデータ識別番号を含む確認応答が送信されてきたと判別した場合、その確認応答が出力されてきた時刻から送信時刻を減算した値をＲＴＴ（Round Trip Time）として算出する。そして、削除部１２は、このＲＴＴを擬似応答出力部１７へ出力する。ここでいうＲＴＴは、通信装置１が、１つのパケットデータを通信装置２へ送信してから、そのパケットデータに対して通信装置２が送信した確認応答を受信するまでの時間である。
【００９９】
目標レート決定部１６は、データパケットがロスした旨が捕捉部１５から通知されたかどうかに応じて、送信レートの目標値である目標レートＲtargetを決定する。
【０１００】
目標レート決定部１６は、データパケットがロスした旨とそのデータパケットのデータ識別番号とが捕捉部１５から通知された場合、そのデータ識別番号と連続し、かつそのデータ識別番号よりも小さなデータ識別番号と対応付けて送信レート決定部１３が記憶している送信レートを、目標レートＲtargetとして決定する。
【０１０１】
図４に示した例では、目標レート決定部１６は、ロスしたデータパケットのデータ識別番号「３０００」、「３１００」と連続し、かつこれらのデータ識別番号よりも小さなデータ識別番号である「２９００」と対応付けて記憶されている送信レートを、目標レートＲtargetとして決定する。
【０１０２】
また、目標レート決定部１６は、データパケットがロスしていない旨が捕捉部１５から通知された場合、通信装置２がデータパケットを１つ受信するごとに１つの確認応答を送信してきた際に受信間隔において到達する送信レートの最大値を、目標レートＲtargetとして決定する。つまり、この場合、目標レート決定部１６は、捕捉部１５から通知された際に送信レート決定部１３が記憶しているレート増加量ｆと受信間隔をデータパケットの送信間隔で除算した値との乗算値を算出する。そして、この乗算値と現在の送信レートＲnowとを加算した値を、目標レートＲtargetとして決定する。
【０１０３】
なお、目標レート決定部１６は、目標レートＲtargetを決定した場合、現在の送信レートＲnowを送信レート決定部１３から読み出す。そして、目標レート決定部１６は、決定した目標レートＲtargetと、現在の送信レートＲnowとを擬似応答出力部１７へ通知する。
【０１０４】
擬似応答出力部１７は、図３に示したデータ管理情報１７１を記憶している。
【０１０５】
また、擬似応答出力部１７は、応答番号よりも大きな擬似応答番号を含む擬似応答と、通信装置２からの確認応答内の応答番号と同じ値の擬似応答番号を含む擬似応答との２種類の擬似応答を生成する。そして、擬似応答出力部１７は、生成した擬似応答を削除部１２へ出力する。
【０１０６】
なお、応答番号よりも大きな擬似応答番号を含む擬似応答は、送信レート決定部１３に送信レートを増大させるために用いられる。
【０１０７】
また、応答番号と同じ値の擬似応答番号を含む擬似応答は、送信レート決定部１３に送信レートを減少させるために用いられる。
【０１０８】
まず、擬似応答出力部１７が、応答番号よりも大きな擬似応答番号を含む擬似応答を生成するときの動作について説明する。
【０１０９】
なお、擬似応答出力部１７は、データパケットがロスしていない旨が捕捉部１５から通知された場合、または送信レートを現在の送信レートＲnowの「１／２」倍の値に変更した旨が送信レート決定部１３から通知された場合、または送信レートを最小送信レートＲminへ変更した旨が送信レート決定部１３から通知された場合、応答番号よりも大きな擬似応答番号を含む擬似応答を生成する。
【０１１０】
この場合、擬似応答出力部１７は、目標レート決定部１６から通知されてきた目標レートＲtargetおよび現在の送信レートＲnowと、再送制御部１８がデータ管理情報１７１に書き込んだデータ識別番号とを用いて、擬似応答を生成する。
【０１１１】
より具体的には、擬似応答出力部１７は、データ管理情報１７１内のデータ識別番号を、擬似応答に書き込む。
【０１１２】
また、擬似応答出力部１７は、擬似応答へ書き込む擬似応答番号を決定する。本実施形態では、擬似応答出力部１７は、擬似応答に書き込んだデータ識別番号と互いに連続するデータ識別番号同士の差分である「所定数」とを加算した値を、擬似応答番号として決定する。そして、擬似応答出力部１７は、決定した擬似応答番号を擬似応答へ書き込むとともに、擬似応答に書き込んだデータ識別番号とその擬似応答に書き込んだ擬似応答番号との対応付をデータ管理情報１７１に書き込む。
【０１１３】
なお、擬似応答出力部１７は、データパケットがロスしていない旨が捕捉部１５から通知された場合、次の確認応答が通信装置２から送信されてくるまでの間、データ送信部１１がデータパケットを送信するごとに、その送信時刻から捕捉部１５から出力されてきたＲＴＴが経過した後に、擬似応答を生成して削除部１２へ出力する。
【０１１４】
つぎに、擬似応答出力部１７が、通信装置２から送信されてきた確認応答内の応答番号と同じ値の擬似応答番号を含む擬似応答を生成するときの動作について説明する。
【０１１５】
なお、擬似応答出力部１７は、軽度の輻輳が発生した旨が捕捉部１５から通知された場合、または重度の輻輳が発生した旨が捕捉部１５から通知された場合、応答番号と同じ値の擬似応答番号を含む擬似応答を生成する。
【０１１６】
この場合、擬似応答出力部１７は、捕捉部１５から出力されてきた確認応答に含まれている応答番号と同じ値を、擬似応答番号として擬似応答に書き込む。
【０１１７】
なお、擬似応答出力部１７は、所定の重複数（本実施形態では「３」）から通信装置２が送信してきた確認応答の数を減算した数と同数の擬似応答を生成する。つまり、擬似応答の数と確認応答の数との合計が所定の重複数となるように擬似応答を生成する。そして、擬似応答出力部１７は、その擬似応答を削除部１２へ出力する。
【０１１８】
なお、擬似応答出力部１７は、目標レート決定部１６から通知されてきた目標レートＲtargetおよび現在の送信レートＲnowを用いて、擬似応答を出力するごとに送信レート決定部１３が現在の送信レートＲnowに加算するレート増加量ｆと、確認応答の受信間隔にて出力する擬似応答の数とを決定する。
【０１１９】
本実施形態では、まず、擬似応答出力部１７は、目標レートＲtargetから、現在の送信レートＲnowに「１／２」を乗じた値を減算した差分を算出する。そして、擬似応答出力部１７は、この差分を、現在の送信レートＲnowに「１／２」を乗じた値に基づいて定まる１つの確認応答を受信するごとに増加するレート増加量ｆで除算した値を、生成する擬似応答の数として決定する。なお、擬似応答出力部１７は、除算して得られた値が整数でない場合、除算した値よりも小さな整数の最大値を擬似応答の数として決定する。
【０１２０】
また、擬似応答出力部１７は、捕捉部１５から通知された確認応答の受信間隔を用いて、擬似応答を出力する「出力間隔」を決定する。本実施形態では、擬似応答出力部１７は、確認応答の受信間隔を生成する擬似応答の数で除算した値を、擬似応答の出力間隔として決定する。
【０１２１】
例えば、確認応答の受信間隔が「１０秒」であり、擬似応答出力部１７が生成する擬似応答の数が「１０個」である場合、擬似応答の出力間隔は「１秒」である。
【０１２２】
なお、軽度の輻輳が発生した旨が捕捉部１５から通知された場合、擬似応答出力部１７が応答番号と同じ値の擬似応答番号を含む擬似応答を削除部１２へ出力するタイミングは、その通知がされた直後である。
【０１２３】
また、擬似応答出力部１７は、重度の輻輳が発生した旨が捕捉部１５から通知された場合、捕捉部１５が確認応答を書き換えて削除部１２へ出力してから再送タイムアウト時間が経過した後に、擬似応答を削除部１２へ出力する。
【０１２４】
再送制御部１８は、データ送信部１１から出力されてきたデータパケットと、データパケット内のそのデータパケットに付与されたデータ識別番号との対応付を、未応答データ記憶部１９へ書込む。これは、通信装置２が受信していないにも関わらず削除部１２が擬似応答に応じて送信データ記憶部１４から削除したデータパケットを再送できないことを回避するためである。
【０１２５】
また、再送制御部１８は、データ送信部１１から出力されてきたデータパケットに含まれるデータ識別番号をデータ管理情報１７１へ書き込むとともに、そのデータ識別番号と対応付けて記憶されている送信データ削除フラグの値と未応答データ削除フラグの値と確認応答受信フラグの値とを「０」に設定する。例えば、データ送信部１１がデータ識別番号「１０００」〜「２０００」が付与されたデータパケットを通信装置２へ送信した場合、再送制御部１８は、各データ識別番号「１０００」〜「２０００」をデータ管理情報１７１へ書き込むとともに、各データ識別番号とそれぞれ対応付けて記憶されている各送信データ削除フラグの値と各未応答データ削除フラグの値と各確認応答受信フラグの値とを「０」に設定する。
【０１２６】
また、再送制御部１８は、捕捉部１５から再送指示とデータ識別番号とが出力されてきた場合、そのデータ識別番号と同じデータ識別番号と対応付けて記憶されているデータパケットを未応答データ記憶部１９から読み出してデータ送信部１１へ出力する。
【０１２７】
また、再送制御部１８は、未応答データ記憶部１９が記憶しているデータパケットのうちから受信したと判別したデータパケットを削除する。
【０１２８】
また、再送制御部１８は、削除したデータパケットのデータ識別番号と対応付けて擬似応答出力部１７内のデータ管理情報１７１に記憶されている未応答データ削除フラグの値を、「０」から「１」へ書き換える。
【０１２９】
未応答データ記憶部１９は、再送制御部１８が書き込んだデータパケットと当該データパケットに付与されたデータ識別番号との対応付を記憶する。
【０１３０】
つぎに、目標レート決定部１６が目標レートＲtargetを決定する方法について、詳細に説明する。なお、本発明では、目標レート決定部１６は、この目標レートＲtargetを、ネットワーク３の帯域の利用効率の向上や輻輳の回避を考慮して決定する。
【０１３１】
図３に示した例では、通信装置１から送信されたデータ識別番号「１１００」〜「３２００」のデータパケットのうちデータ識別番号「３０００」、「３１００」のデータパケットが、ネットワーク３にてロスしている。そして、通信装置２は、データ識別番号「３２００」のデータパケットを受信した後、確認応答を通信装置１へ送信している。
【０１３２】
また、通信装置１は、通信装置２へ送信したデータパケットのロスが発生したかどうかに関わらず、ある確認応答を受信してからその確認応答の次に送信されてくる確認応答を受信するまでの間、擬似応答を用いて図４に示したように送信レートを変更している。なお、図４の例では、通信装置１から送信されたデータ識別番号「３０００」、「３１００」のデータパケットがネットワーク３においてロスしている。
【０１３３】
そこで、本実施形態では、目標レート決定部１６は、ロスしたこれらのデータパケットを送信した直前にデータパケットを送信したときの送信レート（すなわち、データ識別番号「２９００」が付与されたデータパケットの送信レート）を、目標レートＲtargetとして決定する。
【０１３４】
これは、データパケットのロスが発生する直前に設定されていた送信レートが、通信装置２へデータパケットを送信した場合にネットワーク３を輻輳させない上限の送信レートと考えられるためである。
【０１３５】
なお、目標レートＲtargetとして用いる値については、特に限定しない。目標レートＲtargetは、例えば、ロス直前の送信レートと定数α（０＜α＜１）とを乗算した値でもよい。また、目標レートＲtargetは、過去のロス直前の送信レートの平均値でもよい。
【０１３６】
また、目標レート決定部１６は、データパケットがロスしていない旨が捕捉部１５から通知された場合、次の確認応答が到着するまでに、通信装置２がデータパケットを１つ受信するごとに１つの確認応答を送信してきた場合にすべてのデータパケットが送信成功した場合に到達する送信レートを、目標レートＲtargetとして決定する。
【０１３７】
なお、通信装置２が、通信装置１から送信されてきたデータパケットを所定の個数Ｘ（Ｘ＞１）だけ受信するごとに確認応答を送信する場合、または一定時間ごとに確認応答を送信する場合、通信装置２がデータパケットを１個だけ受信するごとに確認応答を通信装置１へ送信する場合よりも、ネットワーク３上のトラヒックの時間的変化に応じたデータパケットの送信レートの正確な制御を行うことが難しくなる。そこで、本発明では、削除部１２が、ネットワーク３の状況に応じて擬似応答出力部１７が生成した擬似応答を用いて、通信装置２へ送信されたデータパケットを処理する。これにより、通信装置１は、通信装置２から送信されてくる確認応答のみに基づいて送信レートを制御する場合よりも、送信レートを変更する頻度が多くなるように送信レートを制御する。
【０１３８】
つぎに、通信装置１が、擬似応答を出力することにより送信レートを制御する動作について、図７〜９を参照して説明する。
【０１３９】
図７〜９のそれぞれは、通信装置１が、ある確認応答を受信してから次の確認応答を受信するまで間の送信レートの変化の様子を示している。なお、図７は、確認応答に基づいてデータパケットがロスしたと判別した場合において、軽度の輻輳が発生したときの送信レートの変化を表している。また、図８は、確認応答に基づいてデータパケットがロスしたと判別した場合において、重度の輻輳が発生したときの送信レートの変化を表している。また、図９は、データパケットがロスしていないと判別した場合の送信レートの変化を表している。
【０１４０】
まず、データパケットがロスしたと判別した場合において、軽度の輻輳が発生したと判別した際の動作について説明する。
【０１４１】
この場合、通信装置１は、図７に示すように送信レートを、現在の送信レートＲnowからその送信レートの「１／２」倍の値（＝Ｒnow／２）へと減少させる。
【０１４２】
そのために、通信装置１の擬似応答出力部１７は、通信装置２から送信されてくる確認応答の数と、その確認応答内の応答番号と同じ番号の擬似応答番号を含む擬似応答の数との合計が所定の重複数（この例では「３」）となるような数だけ、擬似応答を生成して削除部１２へ出力する。なお、擬似応答出力部１７は、この擬似応答を、データパケットがロスしたと判別した直後のタイミングで削除部１２へ出力する。
【０１４３】
また、削除部１２は、捕捉部１５からの確認応答の数と、その確認応答内の応答番号と同じ値の擬似応答番号を含む擬似応答の数との合計が所定の重複数（この例では、「３」）以上となった場合、送信レートを現在の送信レートＲnowの「１／２」倍に変更するよう指示するレート変更指示を送信レート決定部１３へ出力する。
【０１４４】
すると、送信レート決定部１３は、送信レートを、現在の送信レートＲnowの「１／２」倍の値に変更するとともに、その旨を擬似応答出力部１７へ通知する。
【０１４５】
続いて、通信装置１は、送信レートと目標レートＲtargetとが同じ値とするように送信レートを制御する。
【０１４６】
そのため、擬似応答出力部１７は、再送制御部１８から通知されたデータ識別番号を用いて、そのデータ識別番号よりも値が大きな擬似応答番号を含む確認応答を生成して削除部１２へ出力する。
【０１４７】
なお、擬似応答出力部１７は、目標レートＲtargetから現在の送信レートの「１／２」倍の値を減算した差分を求め、現在の送信レートの「１／２」倍の値から定める１つの確認応答を受信した場合に増加させるレート増加量ｆで除算した値を、生成する擬似応答の数として決定する。
【０１４８】
また、擬似応答出力部１７は、確認応答の受信間隔を擬似応答の数で除算した値を、擬似応答の出力間隔として決定する。図７に示した例では、擬似応答を削除部１２で処理させて送信レート決定部１３へデータパケットの成功を通知した時刻において、送信レートが更新されている。
【０１４９】
つぎに、データパケットがロスしたと判別した場合において、重度の輻輳が発生したと判別した際の動作について説明する。
【０１５０】
まず、通信装置１は、図８に示すように送信レートを最小送信レートＲminへ変更する。
【０１５１】
この場合、通信装置１は、再送タイムアウトを発生させる。より具体的には、擬似応答出力部１７は、重度の輻輳が発生した旨が捕捉部１５から通知された場合（つまり、連続してロスしたデータパケットの数が閾値よりも大きな場合）、捕捉部１５が確認応答を書き換えて削除部１２へ出力してから再送タイムアウト時間が経過した後に、擬似応答を削除部１２へ出力する。
【０１５２】
続いて、擬似応答出力部１７は、目標レートＲtargetと同じ値となるように送信レートを制御する。
【０１５３】
そのため、擬似応答出力部１７は、応答番号よりも大きな値を有する擬似応答番号を含む確認応答を生成する。
【０１５４】
ただし、擬似応答出力部１７は、再送タイムアウトの場合、現在の送信レートの「１／２」倍を閾値とする。そして、送信レートが閾値以下である場合、ACK受信毎に送信レートを２倍にする。また、送信レートが閾値よりも大きな場合、現在の送信レートに基づいて決定される増加量であることを考慮して、擬似応答の数と、擬似応答の出力間隔とを決定する。
【０１５５】
また、データパケットがロスしていない場合、通信装置１は、図９に示すように送信レートを変化させる。
【０１５６】
擬似応答出力部１７は、次の確認応答が通信装置２から送信されてくるまでの間、データ送信部１１がデータパケットを送信するごとに、その送信時刻からＲＴＴが経過した後に、擬似応答を生成して削除部１２へ出力する。
【０１５７】
上述した例では、通信装置１が、データパケットの送信の成功時に送信レートを増加させ、失敗時に送信レートを減少させる制御方法を例に挙げて説明した。しかしながら、擬似応答を用いて送信レートを制御する方法は、上述した制御方法以外の制御方法（例えば、確認応答をトリガとして送信レートを制御している方法など）にも適用することが可能である。
【０１５８】
つぎに、通信装置２の構成について、図１０を参照して詳細に説明する。図１０に示すように、通信装置２は、データ受信部２１と、応答送信部２２と、応答頻度決定部２３と、受信データ記憶部２４とを有する。
【０１５９】
データ受信部２１は、通信装置１から送信されてきたデータパケットを、受信データ記憶部２４へ書き込む。また、データ受信部２１は、そのデータパケット内の情報を応答送信部２２へ通知する。
【０１６０】
応答送信部２２は、データ受信部２１が受信したデータパケットに付与されたデータ識別番号を含む図６（ａ）に示したような確認応答を生成する。そして、応答送信部２２は、確認応答を、応答頻度決定部２３から通知される頻度に従って通信装置１へ送信する。
【０１６１】
応答頻度決定部２３は、通信装置２が通信装置１に確認応答を送信する頻度を決定して応答送信部２２へ通知する。なお、通信装置２が確認応答を送信する頻度は、ＲＦＣ（Request For Comment）１１２２に記載されている一般的な方法と同様に、データパケットをX個だけ受信するごとに確認応答を送信してもよく、一定周期ごとに確認応答を送信してもよい。応答頻度決定部２３は、Xの値と、確認応答を送信する周期とを決定して応答送信部２２へ通知する。
【０１６２】
つぎに、上記構成を有する通信装置１がデータパケットの送信レートを制御する動作を、図１１を参照して説明する。
【０１６３】
まず、図１１に示すステップ７０１にて、データ送信部１１は、送信レート決定部１３から通知された送信レートに従って、送信データ記憶部１４から読み出したデータパケットを通信装置２へ送信する。なお、通信装置２は、通信装置１から送信されてきたデータパケットを所定の個数だけ受信した場合、または、一定時間が経過した場合、１つの確認応答を通信装置１へ送信する。
【０１６４】
また、データ送信部１１は、送信したデータパケットを再送制御部１８へ出力する。また、データ送信部１１は、データパケットを通信装置２へ送信した送信時刻とそのデータパケットのデータ識別番号との対応付を、削除部１２と捕捉部１５とへ出力する。なお、削除部１２および捕捉部１５のそれぞれは、データ送信部１１から出力されてきた送信時刻とその送信時刻に送信されたデータパケットのデータ識別番号との対応付を記憶する。
【０１６５】
さらに、データ送信部１１は、通信装置２へ送信したデータパケットに付与されたデータ識別番号とそのデータパケットの送信レートとの対応付を、送信レート決定部１３へ出力する。すると、送信レート決定部１３は、データ送信部１１から出力されてきたデータ識別番号と送信レートとの対応付を記憶する。
【０１６６】
続いて、ステップ７０２にて、再送制御部１８は、そのデータパケットとそのデータパケットに付与されたデータ識別番号との対応付を、未応答データ記憶部１９へ書き込む。
【０１６７】
また、再送制御部１８は、データ送信部１１から出力されてきたデータパケットに含まれるデータ識別番号をデータ管理情報１７１へ書き込むとともに、そのデータ識別番号と対応付けて記憶されている送信データ削除フラグの値と未応答データ削除フラグの値と確認応答受信フラグの値とを「０」に設定する。
【０１６８】
その後、ステップ７０３にて、捕捉部１５は、データ送信部１１から出力されてきた送信時刻から再送タイムアウト時間が経過する間に、その送信時刻と対応付けて記憶しているデータ識別番号を含む確認応答を通信装置２から受信したかどうかを判別している。
【０１６９】
そして、送信時刻から再送タイムアウト時間が経過する間に、その送信時刻と対応付けて記憶しているデータ識別番号を含む確認応答を受信したと判別した場合、捕捉部１５は、その確認応答内のデータ識別番号と同じデータ識別番号と対応付けて記憶されているデータ管理情報１７１内の確認応答受信フラグを、「０」から「１」に書き換える。また、捕捉部１５は、通信装置２から送信されてきた確認応答を受信した場合、その確認応答を受信した時刻からその確認応答の直前に確認応答を受信した時刻を減算した値を、確認応答の受信間隔として算出して擬似応答出力部１７へ通知する。
【０１７０】
さらに、送信時刻から再送タイムアウト時間が経過する間に、その送信時刻と対応付けて記憶しているデータ識別番号を含む確認応答を通信装置２から受信した場合、ステップ７０４にて、捕捉部１５は、その間に送信されてきた同じ応答番号をそれぞれ含む確認応答の数と、「所定の重複数」とを比較する。
【０１７１】
そして、捕捉部１５は、比較の結果、送信時刻から再送タイムアウト時間が経過する間に送信されてきた同じ応答番号をそれぞれ含む確認応答の数が所定の重複数未満である場合、その送信時刻と対応付けて記憶しているデータ識別番号のデータパケットがロスしていないと判別する。この場合、捕捉部１５は、データパケットがロスしていない旨を目標レート決定部１６と擬似応答出力部１７とへ通知する。
【０１７２】
さらに、ロスしていないと判別した際、捕捉部１５は、その確認応答の受信時に書き換えた確認応答受信フラグと対応付けて記憶されている送信データ削除フラグの値が「０」である場合、その確認応答を削除部１２へ出力する。
【０１７３】
その後、ステップ７０５にて、目標レート決定部１６は、データパケットがロスしていない旨が捕捉部１５から通知された場合、次の確認応答が到着するまでに通信装置２がデータパケットを１つ受信するごとに１つの確認応答を送信してきた場合にすべてのデータパケットの送信に成功した場合に到達する送信レートを、目標レートＲtargetとして決定する。続いて、目標レート決定部１６は、現在の送信レートＲnowを送信レート決定部１３から読み出す。そして、目標レート決定部１６は、決定した目標レートＲtargetと、現在の送信レートＲnowとを擬似応答出力部１７へ通知する。
【０１７４】
すると、ステップ７０６にて、擬似応答出力部１７は、目標レート決定部１６から通知された現在の送信レートＲnowおよび目標レートＲtargetと、捕捉部１５から出力されてきた受信間隔とに基づいて、擬似応答の出力間隔を決定する。
【０１７５】
そして、擬似応答出力部１７は、擬似応答を生成する。続いて、ステップ７０７にて、擬似応答出力部１７は、決定した出力間隔ごとに、生成した擬似応答を削除部１２へ出力する。
【０１７６】
すると、削除部１２は、この擬似応答内のデータ識別番号と同じデータ識別番号と対応付けて記憶されているデータパケットを送信データ記憶部１４から削除する。また、この場合、削除部１２は、データパケットを送信データ記憶部１４から削除した旨を送信レート決定部１３へ通知する。さらに、削除部１２は、削除したデータパケットのデータ識別番号と対応付けて記憶されているデータ管理情報１７１内の送信データ削除フラグを、「０」から「１」へ書き換える。
【０１７７】
すると、ステップ７０８にて、送信レート決定部１３は、データパケットの送信レートを、記憶している現在の送信レートＲnowと所定のレート増加量ｆとを加算した値に変更する。なお、本実施形態では、送信レート決定部１３は、データパケットを削除した旨が削除部１２から通知された際に記憶している現在の送信レートＲnowが所定の基準送信レート以下である場合、レート増加量ｆを現在の送信レートＲnowと同じ値とする。また、送信レート決定部１３は、現在の送信レートＲnowが基準送信レートよりも大きな場合、レート増加量ｆを、「１／（現在の送信レートＲnow）」倍とする。
【０１７８】
一方、ステップ７０３にて送信時刻から再送タイムアウト時間が経過する間に、その送信時刻と対応付けて記憶しているデータ識別番号を含む確認応答を通信装置２から受信していないと判別した場合、捕捉部１５は、データパケットがロスしたと判別する。そして、捕捉部１５は、その旨と、そのデータパケットのデータ識別番号とを目標レート決定部１６へ通知する。
【０１７９】
なお、送信時刻から再送タイムアウト時間が経過する間に確認応答が送信されてこなかったためにロスしたと判別されたデータパケットのデータ識別番号を含む確認応答が再送タイムアウト時間の経過後に送信されてきた場合、捕捉部１５は、その確認応答に含まれている応答番号を擬似応答番号の最大値へ書き換えて、擬似応答番号を含む確認応答を削除部１２へ出力する。
【０１８０】
また、ステップ７０４における比較の結果、送信時刻から再送タイムアウト時間が経過する間に送信されてきた同じ応答番号をそれぞれ含む確認応答の数が所定の重複数以上である場合にも、捕捉部１５は、データパケットがロスしたと判別する。そして、捕捉部１５は、その旨と、そのデータパケットのデータ識別番号とを目標レート決定部１６へ通知する。
【０１８１】
なお、データパケットがロスしたと判別した場合、通信装置１は、ステップ７０９〜７１１の処理を実行し、データパケットの再送制御を行う。
【０１８２】
この場合、捕捉部１５は、ロスしたと判別したデータパケットのデータ識別番号と対応付けて記憶されているデータ管理情報１７１内の送信データ削除フラグの値が「１」であり、かつそのデータ識別番号と対応付けて記憶されているデータ管理情報１７１内の確認応答受信フラグの値が「０」であるかどうかを判別する。
【０１８３】
そして、ロスしたと判別されたデータパケットのデータ識別番号と対応付けて記憶されている送信データ削除フラグの値が「１」であり、かつそのデータ識別番号と対応付けて記憶されている確認応答受信フラグの値が「０」である場合、ステップ７０９にて、捕捉部１５は、データ管理情報１７１に記憶されている擬似応答番号の最大値と、ロスしたデータパケットのデータ識別番号とを比較する。
【０１８４】
比較の結果、そのデータ識別番号が擬似応答番号の最大値よりも大きな場合、捕捉部１５は、確認応答内の応答番号をデータ管理情報１７１に記憶されている擬似応答番号の最大値へ書き換え、この擬似応答番号を含む確認応答を削除部１２へ出力する。
【０１８５】
また、この場合、捕捉部１５は、そのデータ識別番号と、当該データ識別番号が付与されたデータパケットの再送を指示する再送指示とを削除部１２へ出力する。すると、削除部１２は、データ送信部１１に対して、そのデータ識別番号と再送指示とを出力する。
【０１８６】
そして、ステップ７１０にて、データ送信部１１は、削除部１２から出力されてきたデータ識別番号と同じデータ識別番号と対応付けて記憶されているデータパケットを送信データ記憶部１４から読み出して、送信レート決定部１３から通知された送信レートに従って通信装置２へ送信する。
【０１８７】
一方、ステップ７０９における比較の結果、ロスしたデータパケットのデータ識別番号が擬似応答番号の最大値以下である場合、捕捉部１５は、そのデータ識別番号と、当該データ識別番号が付与されたデータパケットの再送を指示する再送指示とを再送制御部１８へ出力する。
【０１８８】
すると、再送制御部１８は、このデータ識別番号と同じデータ識別番号と対応付けて記憶されているデータパケットを未応答データ記憶部１９から読み出してデータ送信部１１へ出力する。そして、ステップ７１１にて、データ送信部１１は、再送制御部１８から出力されてきたデータパケットを通信装置２へ送信する。
【０１８９】
また、ロスしたデータパケットのデータ識別番号が擬似応答番号の最大値以下である場合、捕捉部１５は、通信装置２から送信されてきた確認応答に含まれている応答番号を、データ管理情報１７１に記憶されている擬似応答番号の最大値へ書き換える。また、捕捉部１５は、確認応答内のデータ識別番号のうち擬似応答番号の最大値よりも小さなデータ識別番号を削除する。そして、捕捉部１５は、その確認応答を、削除部１２へ出力する。
【０１９０】
その後、ステップ７１２にて、目標レート決定部１６は、データパケットがロスした旨とそのデータパケットのデータ識別番号とが捕捉部１５から通知された場合、そのデータ識別番号と互いに連続し、かつそのデータ識別番号よりも小さなデータ識別番号と対応付けて送信レート決定部１３が記憶している送信レートを、目標レートＲtargetとして決定する。また、目標レート決定部１６は、現在の送信レートＲnowを送信レート決定部１３から読み出す。そして、目標レート決定部１６は、決定した目標レートＲtargetと、送信レート決定部１３から読み出した現在の送信レートＲnowとを擬似応答出力部１７へ通知する。
【０１９１】
続いて、捕捉部１５は、連続してロスしたデータパケットの個数である連続ロス数をカウントする。そして、ステップ７１３にて、捕捉部１５は、カウントした連続ロス数と、所定の閾値とを比較する。
【０１９２】
この比較の結果、カウントした連続ロス数が所定の閾値以下である場合、捕捉部１５は、軽度の輻輳が発生した旨を擬似応答出力部１７へ通知する。
【０１９３】
また、カウントした連続ロス数が所定の閾値よりも大きな場合、捕捉部１５は、重度の輻輳が発生した旨を擬似応答出力部１７へ通知する。
【０１９４】
すると、ステップ７１４にて、擬似応答出力部１７は、目標レート決定部１６から通知された現在の送信レートＲnowおよび目標レートＲtargetと、捕捉部１５から重度の輻輳が発生した旨が通知されたかどうかと、捕捉部１５から出力されてきた確認応答の受信間隔とに基づいて、擬似応答の出力間隔を決定する。
【０１９５】
そして、擬似応答出力部１７は、擬似応答を生成する。続いて、ステップ７１５にて、擬似応答出力部１７は、決定した出力間隔ごとに、生成した擬似応答を削除部１２へ出力する。
【０１９６】
なお、ステップ７１３の比較結果に応じて軽度の輻輳が発生した旨が捕捉部１５から通知された場合、ステップ７１５にて擬似応答出力部１７が応答番号と同じ番号の擬似応答番号を含む擬似応答を削除部１２へ出力するタイミングは、その通知がされた直後である。
【０１９７】
この場合、削除部１２は、捕捉部１５から出力されてきた確認応答の数と、その確認応答内の応答番号と同じ値の擬似応答番号を含む擬似応答の数との合計が所定の重複数以上となった際、送信レートを、現在の送信レートＲnowの「１／２」倍に変更するよう指示するレート変更指示を送信レート決定部１３へ出力する。
【０１９８】
すると、ステップ７０８にて、送信レート決定部１３は、送信レートを現在の送信レートＲnowの「１／２」倍の値に変更するとともに、その旨を擬似応答出力部１７へ通知する。
【０１９９】
一方、ステップ７１３の比較結果に応じて重度の輻輳が発生した旨が捕捉部１５から通知された場合、ステップ７１５にて、擬似応答出力部１７は、捕捉部１５が確認応答を書き換えて削除部１２へ出力してから再送タイムアウト時間が経過した後に、擬似応答を削除部１２へ出力する。
【０２００】
すると、削除部１２は、送信レートを、現在の送信レートＲnowから最小送信レートＲminに変更するよう指示するレート変更指示を送信レート決定部１３へ出力する。
【０２０１】
そして、ステップ７０８にて、送信レート決定部１３は、送信レートを、現在の送信レートＲnowから最小送信レートＲminへ変更するとともに、その旨を擬似応答出力部１７へ通知する。以上で、通信装置１がデータパケットの送信レートを制御する一連の動作が終了する。
【０２０２】
以上説明したように、本発明の実施形態１によれば、通信装置２が確認応答を送信する頻度が少ない場合でも、ネットワーク３上のトラヒックの時間的変化に応じたデータパケットの送信レートの正確な制御を行うことができ、ひいてはネットワーク３の輻輳への対応の遅れを抑制することやネットワーク３の利用効率の低下を回避することが可能となる。
（実施形態２）
つぎに、実施形態２の通信システムについて説明する。
【０２０３】
図１２に示すように、実施形態２の通信システムは、通信装置４と、通信装置５と、擬似応答装置６とから構成されている。
【０２０４】
本実施形態では、通信装置４は、パケットを一意に識別するためのシーケンス番号を含んだデータパケットを送信する。
【０２０５】
また、通信装置５は、TCP SACKオプションと同様、次に受信を期待するシーケンス番号であるACK番号と、受信したデータパケットのシーケンス番号とを含む確認応答を通信装置４へ送信する。なお、通信装置５は、所定の個数（例えば、１００個）のデータパケットを受信した場合、および、一定時間が経過した場合、１つの確認応答を擬似応答装置６を介して通信装置４へ送信する。
【０２０６】
擬似応答装置６は、通信装置４から送信されてきたデータパケットを、そのデータパケットに対する確認応答（ACK）が通信装置５から送信されてくるまで記憶しておく。また、擬似応答装置６は、その確認応答に含まれるデータパケットの受信が成功したかどうかを示す情報に基づいて、輻輳を回避しつつ帯域を有効に活用することが可能な帯域を目標レートＲtargetとして設定する。そして、擬似応答装置６は、送信レートを目標レートＲtargetと同じとするための擬似応答を生成して通信装置４へ送信する。すると、通信装置４は、通信装置５に対するデータパケットの送信レートを変更する。
【０２０７】
通信装置４の構成は、図１４に示した通信装置８００と同じ構成である。また、通信装置５の構成は、図１４に示した通信装置９００と同じ構成である。
【０２０８】
また、図１２に示すように、擬似応答装置６は、データ捕捉部６１と、捕捉部６２と、再送制御部６３と、未応答データ記憶部６４と、目標レート決定部６５と、擬似応答出力部６６とを有する。
【０２０９】
データ捕捉部６１は、通信装置４から送信されてきたデータパケットをその「宛先」である通信装置５へ転送するとともに、そのデータパケットを再送制御部６３へ出力する。
【０２１０】
また、データ捕捉部６１は、データパケットを通信装置５へ転送した送信時刻とそのデータパケットのデータ識別番号との対応付を、捕捉部６２へ出力する。
【０２１１】
また、データ捕捉部６１は、データパケットの送信レートを測定する測定周期ごとに、当該測定周期において通信装置４から送信されてきたデータパケットのデータ量に基づいて、データパケットの送信レートを測定する。そして、データ捕捉部６１は、測定した送信レートと、データパケットに含まれているデータ識別番号とを対応付けて記憶する。
【０２１２】
また、データ捕捉部６１は、測定したうちで最新の送信レートを、現在の送信レートＲnowとして記憶する。
【０２１３】
また、データ捕捉部６１は、軽度の輻輳が発生した旨が捕捉部６２から通知された場合、その通知後に測定した送信レートが、その通知の際に記憶していた現在の送信レートＲnowの「１／２」倍の値であるかどうかを判別する。そして、測定した送信レートが現在の送信レートＲnowの「１／２」倍の値であると判別した場合、データ捕捉部６１は、その旨を擬似応答出力部６６へ通知する。
【０２１４】
また、データ捕捉部６１は、確認応答の受信間隔と同じ間隔で１つずつデータパケットを送信するときの送信レートである最小送信レートＲminを記憶している。
【０２１５】
そして、データ捕捉部６１は、重度の輻輳が発生した旨が捕捉部６２から通知された場合、その通知後に測定した送信レートが最小送信レートＲminであるかどうかを判別する。測定した送信レートが最小送信レートＲminと同じであると判別した場合、データ捕捉部６１は、その旨を擬似応答出力部６６へ通知する。
【０２１６】
捕捉部６２は、データ捕捉部６１から出力されてきたデータパケットのデータ識別番号とそのデータパケットの送信時刻との対応付を記憶する。
【０２１７】
また、捕捉部６２は、通信装置５から送信されてきた確認応答を受信した場合、その確認応答内のデータ識別番号と同じデータ識別番号と対応付けて擬似応答出力部６６に記憶されている図１３に示すデータ管理情報６６１内の確認応答受信フラグを、「０」から「１」に書き換える。
【０２１８】
なお、本実施形態では、データ管理情報６６１内の確認応答受信フラグは、その値が「０」である場合、確認応答を捕捉部６２が通信装置５から受信していないことを示し、その値が「１」である場合、確認応答を捕捉部６２が通信装置５から受信したことを示す。
【０２１９】
また、本実施形態では、データ管理情報６６１内の未応答データ削除フラグは、その値が「０」である場合、データパケットが再送制御部６３により未応答データ記憶部６４から削除されていないことを示し、その値が「１」である場合、データパケットが再送制御部６３により未応答データ記憶部６４から削除されたことを示す。
【０２２０】
また、捕捉部６２は、通信装置５から送信されてきた確認応答内のデータ識別番号に基づいて、通信装置５へ送信したデータパケットがロスしたかどうかを判別する。
【０２２１】
より具体的には、捕捉部６２は、データ捕捉部６１から送信時刻が出力されてきた場合、その送信時刻から再送タイムアウト時間が経過する間に、その送信時刻と対応付けて記憶されているデータ識別番号を含む確認応答を通信装置５から受信したかどうかを判別する。
【０２２２】
そして、捕捉部６２は、送信時刻から再送タイムアウト時間が経過する間に、その送信時刻と対応付けて記憶しているデータ識別番号を含む確認応答を受信したと判別した場合、その間に通信装置５から送信されてきた同じ応答番号をそれぞれ含む確認応答の数と、「所定の重複数」とを比較する。
【０２２３】
そして、捕捉部６２は、比較の結果、送信時刻から再送タイムアウト時間が経過する間に送信されてきた同じ応答番号をそれぞれ含む確認応答の数が所定の重複数未満である場合、データパケットがロスしていないと判別し、その旨を目標レート決定部６５と擬似応答出力部６６とへ通知する。また、この場合、捕捉部１５は、その確認応答を通信装置４へ送信する。
【０２２４】
また、捕捉部６２は、送信時刻から再送タイムアウト時間が経過する間に送信されてきた同じ応答番号をそれぞれ含む確認応答の数が所定の重複数以上である場合、データパケットがロスしたと判別する。
【０２２５】
また、捕捉部６２は、データ捕捉部６１から出力されてきた送信時刻から再送タイムアウト時間が経過する間に、その送信時刻と対応付けて記憶されているデータ管理情報６６１内のデータ識別番号を含む確認応答が送信されてきていないと判別した場合、そのデータ識別番号が付与されたデータパケットがロスしたと判別する。
【０２２６】
なお、捕捉部６２は、ロスしたと判別されたデータパケットのデータ識別番号を含む確認応答が、再送タイムアウト時間が経過した後に送信されてきた場合、その確認応答に含まれている応答番号を擬似応答番号の最大値へ書き換えて、擬似応答番号を含む確認応答を通信装置４の応答受信部４２へ送信する。
【０２２７】
なお、捕捉部６２は、データパケットがロスしたと判別した場合、その旨と、そのデータパケットのデータ識別番号とを目標レート決定部６５へ通知する。
【０２２８】
また、捕捉部６２は、データパケットがロスしたと判別した場合、そのデータパケットのデータ識別番号と対応付けて記憶されている管理情報６６１内の確認応答受信フラグの値が「０」であるかどうかを判別する。
【０２２９】
そして、ロスしたと判別されたデータ識別番号と対応付けて記憶されている確認応答受信フラグの値が「０」であると判別した場合、捕捉部６２は、データ管理情報６６１に記憶されている擬似応答番号の最大値と、ロスしたデータパケットのデータ識別番号とを比較する。
【０２３０】
比較の結果、ロスしたデータパケットのデータ識別番号が擬似応答番号の最大値よりも小さな場合、捕捉部６２は、そのデータ識別番号と、当該データ識別番号が付与されたデータパケットの再送を指示する再送指示とを再送制御部６３へ出力する。
【０２３１】
また、捕捉部６２は、通信装置５から送信されてきた確認応答に含まれている応答番号を擬似応答番号の最大値へ書き換える。さらに、捕捉部６２は、確認応答内のデータ識別番号のうち擬似応答番号の最大値よりも小さなデータ識別番号を削除する。そして、捕捉部６２は、その確認応答を通信装置４へ送信する。
【０２３２】
また、比較の結果、ロスしたデータパケットのデータ識別番号が擬似応答番号の最大値よりも大きな場合、捕捉部６２は、通信装置５から送信されてきた確認応答内の応答番号を擬似応答番号の最大値へ書き換える。そして、捕捉部６２は、この擬似応答番号を含む確認応答を通信装置４へ送信する。
【０２３３】
さらに、捕捉部６２は、データパケットがロスしたと判別した場合、連続してロスしたデータパケットの個数である連続ロス数をカウントし、連続ロス数と所定の閾値とを比較する。比較の結果、連続ロス数が所定の閾値以下である場合、捕捉部６２は、軽度の輻輳が発生した旨をデータ捕捉部６１と擬似応答出力部６６とへ通知する。また、連続ロス数が所定の閾値よりも大きな場合、捕捉部６２は、重度の輻輳が発生した旨をデータ捕捉部６１と擬似応答出力部６６とへ通知する。
【０２３４】
また、捕捉部６２は、通信装置５から送信されてきた確認応答を受信した時刻を記憶しておく。そして、捕捉部６２は、確認応答の受信間隔を算出して擬似応答出力部６６へ通知する。
【０２３５】
再送制御部６３は、データ捕捉部６１から出力されてきたデータパケットと、データパケット内のそのデータパケットに付与されたデータ識別番号との対応付を、未応答データ記憶部６４へ書込む。
【０２３６】
また、再送制御部６３は、データ捕捉部６１から出力されてきたデータパケットのデータ識別番号をデータ管理情報６６１へ書き込むとともに、そのデータ識別番号と対応付けて記憶されている未応答データ削除フラグの値と確認応答受信フラグの値とを「０」に設定する。
【０２３７】
また、再送制御部６３は、捕捉部６２から再送指示とデータ識別番号とが出力されてきた場合、そのデータ識別番号と同じデータ識別番号と対応付けて記憶されているデータパケットを未応答データ記憶部６４から読み出して通信装置５へ送信する。
【０２３８】
また、再送制御部６３は、未応答データ記憶部６４が記憶しているデータパケットのうちから受信したと判別したデータパケットを削除する。また、再送制御部６３は、削除したデータパケットのデータ識別番号と対応付けてデータ管理情報６６１に記憶されている未応答データ削除フラグを、「０」から「１」へ書き換える。
【０２３９】
未応答データ記憶部６４は、再送制御部６３が書き込んだデータパケットと当該データパケットに付与されたデータ識別番号との対応付を記憶する。
【０２４０】
目標レート決定部６５は、データパケットがロスした旨とそのデータパケットのデータ識別番号とが捕捉部６２から通知された場合、そのデータ識別番号と連続し、かつそのデータ識別番号よりも小さなデータ識別番号と対応付けてデータ捕捉部６１が記憶している送信レートを、目標レートＲtargetとして決定する。
【０２４１】
また、目標レート決定部６５は、データパケットがロスしていない旨が捕捉部６２から通知された場合、次の確認応答が到着するまでに通信装置５がデータパケットを１つ受信するごとに１つの確認応答を送信してきた場合にすべてのデータパケットの送信に成功したときに到達する送信レートを、目標レートＲtargetとして決定する。
【０２４２】
なお、目標レート決定部６５は、目標レートＲtargetを決定した場合、現在の送信レートＲnowをデータ捕捉部６１から読み出す。そして、目標レート決定部６５は、決定した目標レートＲtargetと、現在の送信レートＲnowとを擬似応答出力部６６へ通知する。
【０２４３】
擬似応答出力部６６は、図１３に示したデータ管理情報６６１を記憶している。
【０２４４】
また、擬似応答出力部６６は、応答番号よりも大きな擬似応答番号を含む擬似応答と、応答番号と同じ値の擬似応答番号を含む擬似応答との２種類の擬似応答を生成する。そして、擬似応答出力部６６は、生成した擬似応答を通信装置４の応答受信部４２へ送信する。
【０２４５】
擬似応答出力部６６は、データパケットがロスしていない旨が捕捉部６２から通知された場合、または測定した送信レートが現在の送信レートＲnowの「１／２」倍の値である旨がデータ捕捉部６１から通知された場合、または測定した送信レートが最小送信レートＲminである旨がデータ捕捉部６１から通知された場合、応答番号よりも大きな擬似応答番号を含む擬似応答を生成する。
【０２４６】
この場合、擬似応答出力部６６は、目標レート決定部６５から通知された目標レートＲtargetおよび現在の送信レートＲnowと、再送制御部６３がデータ管理情報６６１に書き込んだデータ識別番号とを用いて、擬似応答を生成する。
【０２４７】
より具体的には、擬似応答出力部６６は、再送制御部６３が書き込んだデータ管理情報６６１内のデータ識別番号を、擬似応答に書き込む。また、擬似応答出力部６６は、擬似応答に書き込んだデータ識別番号と所定数とを加算した値を、擬似応答番号として擬似応答に書き込む。さらに、擬似応答出力部６６は、擬似応答に書き込んだデータ識別番号とその擬似応答に書き込んだ擬似応答番号との対応付をデータ管理情報６６１に書き込む。
【０２４８】
なお、擬似応答出力部６６は、データパケットがロスしていない旨が捕捉部６２から通知された場合、次の確認応答が通信装置２から送信されてくるまでの間、データ捕捉部６１が通信装置５へデータパケットを送信するごとに、その送信時刻から捕捉部６２から出力されてきたＲＴＴが経過した後に、擬似応答を生成して通信装置４へ送信する。
【０２４９】
また、擬似応答出力部６６は、軽度の輻輳が発生した旨が捕捉部６２から通知された場合、または重度の輻輳が発生した旨が捕捉部６２から通知された場合、通信装置５から送信されてきた確認応答内の応答番号と同じ値の擬似応答番号を含む擬似応答を生成する。
【０２５０】
この場合、擬似応答出力部６６は、捕捉部６２から出力されてきた確認応答に含まれている応答番号と同じ値を、擬似応答番号として擬似応答に書き込む。なお、擬似応答出力部６６は、所定の重複数（本実施形態では「３」）から通信装置５が送信してきた確認応答の数を減算した数の擬似応答を生成して通信装置４へ送信する。
【０２５１】
なお、擬似応答出力部６６は、目標レート決定部６５から通知されてきた目標レートＲtargetおよび現在の送信レートＲnowを用いて、確認応答の受信間隔において生成する擬似応答の数を決定する。
【０２５２】
本実施形態では、まず、擬似応答出力部６６は、目標レートＲtargetから、現在の送信レートＲnowに「１／２」を乗じた値を減算した差分を算出する。そして、擬似応答出力部６６は、この差分を、現在の送信レートＲnowに「１／２」を乗じた値に基づいて定まる１つの確認応答を受信するごとに増加するレート増加量ｆで除算した値を、生成する擬似応答の数として決定する。
【０２５３】
また、擬似応答出力部６６は、捕捉部６２から通知された確認応答の受信間隔を用いて、擬似応答を通信装置４へ送信する「出力間隔」を決定する。本実施形態では、擬似応答出力部６６は、確認応答の受信間隔を生成する擬似応答の数で除算した値を、この出力間隔として決定する。
【０２５４】
なお、軽度の輻輳が発生した旨が捕捉部６２から通知された場合、擬似応答出力部６６が応答番号と同じ値の擬似応答番号を含む擬似応答を通信装置４へ送信するタイミングは、その通知がされた直後である。
【０２５５】
また、擬似応答出力部６６は、重度の輻輳が発生した旨が捕捉部６２から通知された場合、捕捉部６２が確認応答を書き換えて通信装置４へ送信してから再送タイムアウト時間が経過した後に、擬似応答を通信装置４へ送信する。
【０２５６】
つぎに、擬似応答装置６が擬似応答を出力する動作を、図１４を参照して説明する。
【０２５７】
図１４に示すステップ７５１にて、まず、データ捕捉部６１は、通信装置４から送信されてきたデータパケットをその宛先である通信装置５へ転送するとともに、そのデータパケットを再送制御部６３へ出力する。
【０２５８】
また、データ捕捉部６１は、データパケットを通信装置５へ転送した送信時刻とそのデータパケットのデータ識別番号との対応付を、捕捉部６２へ出力する。
【０２５９】
また、データ捕捉部６１は、所定の測定周期ごとに、測定周期にて通信装置４から送信されてきたデータパケットのデータ量に基づいて、データパケットの送信レートを測定する。そして、データ捕捉部６１は、測定した送信レートと、データパケットに含まれているデータ識別番号とを対応付けて記憶する。
【０２６０】
また、データ捕捉部６１は、測定したうちで最新の送信レートを、現在の送信レートＲnowとして記憶する。
【０２６１】
その後、ステップ７５２にて、再送制御部６３は、データ捕捉部６１から出力されてきたデータパケットと、データパケットに含まれるそのデータパケットに付与されたデータ識別番号との対応付を、未応答データ記憶部６４へ書込む。
【０２６２】
また、再送制御部６３は、データ捕捉部６１から出力されてきたデータパケットのデータ識別番号をデータ管理情報６６１へ書き込むとともに、そのデータ識別番号と対応付けて記憶されている未応答データ削除フラグの値と確認応答受信フラグの値とを「０」に設定する。
【０２６３】
続いて、ステップ７５３にて、捕捉部６２は、データ捕捉部６１から出力されてきた送信時刻から再送タイムアウト時間が経過する間に、その送信時刻と対応付けて記憶しているデータ識別番号を含む確認応答を通信装置５から受信したかどうかを判別している。
【０２６４】
そして、送信時刻から再送タイムアウト時間が経過する間に、その送信時刻と対応付けて記憶しているデータ識別番号を含む確認応答を通信装置５から受信したと判別した場合、ステップ７５４にて、捕捉部６２は、その間に送信されてきた同じ応答番号をそれぞれ含む確認応答の数と、所定の重複数とを比較する。
【０２６５】
そして、捕捉部６２は、比較の結果、送信時刻から再送タイムアウト時間が経過する間に送信されてきた同じ応答番号をそれぞれ含む確認応答の数が所定の重複数未満である場合、その送信時刻と対応付けて記憶されているデータ管理情報６６１内のデータ識別番号のデータパケットがロスしていないと判別する。この場合、捕捉部６２は、データパケットがロスしていない旨を目標レート決定部６５と擬似応答出力部６６とへ通知する。さらに、この場合、捕捉部６２は、その確認応答を通信装置４へ送信する。
【０２６６】
なお、捕捉部６２は、通信装置２から送信されてきた確認応答を受信した場合、その確認応答内のデータ識別番号と同じデータ識別番号と対応付けて記憶されているデータ管理情報６６１内の確認応答受信フラグを、「０」から「１」へ書き換える。また、捕捉部６２は、通信装置５から送信されてきた確認応答を受信した時刻を記憶しておく。そして、捕捉部６２は、確認応答の受信間隔を算出して擬似応答出力部６６へ通知する。
【０２６７】
その後、ステップ７５５にて、目標レート決定部６５は、データパケットがロスしていない旨が捕捉部６２から通知された場合、次の確認応答が到着するまでに通信装置５がデータパケットを１つ受信するごとに確認応答を送信してきた場合にすべてのデータパケットの送信に成功したときに到達する送信レートを、目標レートＲtargetとして決定する。続いて、目標レート決定部６５は、現在の送信レートＲnowをデータ捕捉部６１から読み出す。そして、目標レート決定部６５は、決定した目標レートＲtargetと、現在の送信レートＲnowとを擬似応答出力部６６へ通知する。
【０２６８】
すると、ステップ７５６にて、擬似応答出力部６６は、目標レート決定部６５から通知された現在の送信レートＲnowおよび目標レートＲtargetと、捕捉部６２から出力されてきた受信間隔とに基づいて、擬似応答を通信装置４へ送信する出力間隔を決定する。
【０２６９】
そして、擬似応答出力部６６は、擬似応答を生成する。続いて、ステップ７５７にて、擬似応答出力部６６は、決定した出力間隔ごとに、生成した擬似応答を通信装置４の応答受信部４２へ送信する。なお、通信装置４は、この擬似応答内のデータ識別番号と同じデータ識別番号と対応付けて記憶されているデータパケットを送信データ記憶部４４から削除する。また、この場合、通信装置４の送信レート決定部４３は、データパケットの送信レートを変更する。
【０２７０】
一方、ステップ７５３にて送信時刻から所定の再送タイムアウト時間が経過する間に、その送信時刻と対応付けて記憶しているデータ識別番号を含む確認応答が通信装置５から受信しなかったと判別した場合、捕捉部６２は、パケットロスが発生したと判別する。そして、捕捉部６２は、その旨と、そのデータパケットのデータ識別番号とを目標レート決定部６５へ通知する。
【０２７１】
なお、送信時刻から再送タイムアウト時間が経過する間に確認応答が送信されてこなかったためにロスしたと判別されたデータパケットのデータ識別番号を含む確認応答が再送タイムアウト時間の経過後に送信されてきた場合、捕捉部６２は、その確認応答に含まれている応答番号を擬似応答番号の最大値へ書き換えて、擬似応答番号を含む確認応答を通信装置４へ転送する。
【０２７２】
また、ステップ７５４における比較の結果、送信時刻から再送タイムアウト時間が経過する間に送信されてきた同じ応答番号をそれぞれ含む確認応答の数が所定の重複数以上である場合にも、捕捉部６２は、パケットロスが発生したと判別する。そして、捕捉部６２は、その旨と、そのデータパケットのデータ識別番号とを目標レート決定部６５へ通知する。
【０２７３】
なお、データパケットがロスしたと判別した場合、擬似応答装置６は、ステップ７５８〜７５９の処理を実行し、データパケットの再送を行う。
【０２７４】
この場合、捕捉部６２は、ロスしたと判別したデータパケットのデータ識別番号と同じデータ識別番号と対応付けて記憶されている管理情報６６１内の確認応答受信フラグの値が「０」であるかどうかを判別する。この確認応答受信フラグの値が「０」であると判別した場合、ステップ７５８にて、捕捉部６２は、データ管理情報６６１に記憶されている擬似応答番号の最大値と、ロスしたデータパケットのデータ識別番号とを比較する。
【０２７５】
比較の結果、ロスしたデータパケットのデータ識別番号が擬似応答番号の最大値よりも大きな場合、捕捉部６２は、通信装置５から送信されてきた確認応答内の応答番号を擬似応答番号の最大値へ書き換えて、この擬似応答番号を含む確認応答を通信装置４へ送信する。
【０２７６】
一方、ステップ７５８における比較の結果、ロスしたデータパケットのデータ識別番号が擬似応答番号の最大値よりも小さな場合、捕捉部６２は、そのデータ識別番号と、当該データ識別番号が付与されたデータパケットの再送を指示する再送指示とを再送制御部６３へ出力する。
【０２７７】
すると、再送制御部６３は、このデータ識別番号と同じデータ識別番号と対応付けて記憶されているデータパケットを未応答データ記憶部６４から読み出す。そして、ステップ７５９にて、再送制御部６３は、読み出したデータパケットを通信装置５へ送信する。
【０２７８】
さらに、この場合、捕捉部６２は、通信装置２から送信されてきた確認応答に含まれている応答番号を擬似応答番号の最大値へ書き換える。また、捕捉部１５は、確認応答内のデータ識別番号のうち擬似応答番号の最大値よりも小さなデータ識別番号を削除する。そして、捕捉部６２は、その確認応答を通信装置４へ送信する。
【０２７９】
その後、ステップ７６０にて、目標レート決定部６５は、データパケットがロスした旨とそのデータパケットのデータ識別番号とが捕捉部６２から通知された場合、そのデータ識別番号と連続し、かつそのデータ識別番号よりも小さなデータ識別番号と対応付けてデータ捕捉部６１が記憶している送信レートを、目標レートＲtargetとして決定する。また、目標レート決定部６５は、現在の送信レートＲnowをデータ捕捉部６１から読み出し、決定した目標レートＲtargetと現在の送信レートＲnowとを擬似応答出力部６６へ通知する。
【０２８０】
続いて、捕捉部６２は、連続してロスしたデータパケットの個数である連続ロス数をカウントする。そして、ステップ７６１にて、捕捉部６２は、連続ロス数と所定の閾値とを比較する。この比較の結果、連続ロス数が所定の閾値以下である場合、捕捉部１５は、軽度の輻輳が発生した旨をデータ捕捉部６１と擬似応答出力部６６とへ通知する。また、連続ロス数が所定の閾値よりも大きな場合、捕捉部１５は、重度の輻輳が発生した旨をデータ捕捉部６１と擬似応答出力部６６とへ通知する。
【０２８１】
すると、ステップ７６２にて、擬似応答出力部６６は、目標レート決定部１６から通知された現在の送信レートＲnowおよび目標レートＲtargetと、捕捉部１５から重度の輻輳が発生した旨が通知されたかどうかと、捕捉部６２から出力されてきた確認応答の受信間隔とに基づいて、擬似応答の出力間隔を決定する。
【０２８２】
そして、擬似応答出力部６６は、擬似応答を生成する。続いて、ステップ７６３にて、擬似応答出力部６６は、決定した出力間隔ごとに、生成した擬似応答を通信装置４へ送信する。
【０２８３】
なお、ステップ７６１の比較結果に応じて軽度の輻輳が発生した旨が捕捉部６２から通知された場合、ステップ７６３にて擬似応答出力部６６が応答番号と同じ値の擬似応答番号を含む擬似応答を通信装置４へ送信するタイミングは、その通知がされた直後である。
【０２８４】
一方、ステップ７６１の比較結果に応じて重度の輻輳が発生した旨が捕捉部６２から通知された場合、ステップ７６３にて、擬似応答出力部６６は、捕捉部６２が確認応答を書き換えて通信装置４へ送信してから再送タイムアウト時間が経過した後に、擬似応答を通信装置４へ送信する。以上で、擬似応答装置６が擬似応答を出力する一連の動作が終了する。
【０２８５】
以上説明したように、実施形態２によれば、通信装置５が確認応答を送信する頻度が少ない場合でも、通信装置４がトラヒックの時間的変化に応じたデータパケットの送信レートの正確な制御を行うことができる。
【０２８６】
また、実施形態２によれば、一般的な構成を有する通信装置４と通信装置５とに接続された擬似応答装置６が、擬似応答を生成して通信装置４へ送信する。そして、通信装置４が、この擬似応答を用いて、データパケットを送信する送信レートを制御する。これにより、通信装置４が有する構成の変更を伴うことなく、本発明を一般的な通信システムに容易に適用することが可能である。
【０２８７】
なお、本発明においては、通信装置１内の処理は上述の専用のハードウェアにより実現されるもの以外に、その機能を実現するためのプログラムを、通信装置１として動作させるコンピュータにて読取可能な記録媒体に記録し、この記録媒体に記録されたプログラムをそのコンピュータに読み込ませ、実行するものであってもよい。通信装置１として動作させるコンピュータにて読取可能な記録媒体とは、フロッピーディスク（登録商標）、光磁気ディスク、ＤＶＤ、ＣＤなどの移設可能な記録媒体の他、そのコンピュータに内蔵されたＨＤＤ等を指す。この記録媒体に記録されたプログラムは、例えば、通信装置１として動作させるコンピュータが有する擬似応答出力部１７として動作するプロセッサにて読み込まれ、そのプロセッサの制御によって、上述したものと同様の処理が行われる。
【０２８８】
ここで、擬似応答出力部１７として動作するプロセッサは、プログラムが記録された記録媒体から読み込まれたプログラムを実行するものである。なお、上述のプログラムは、擬似応答装置６についても同様に適用可能である。
【０２８９】
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明の要旨を逸脱しない範囲で当業者が理解し得る各種の変形が可能である。
【符号の説明】
【０２９０】
１、２、４、５  通信装置
３  ネットワーク
６  擬似応答装置
１１  データ送信部
１２  削除部
１３  送信レート決定部
１４  送信データ記憶部
１５  捕捉部
１６  目標レート決定部
１７  擬似応答出力部
１７１  データ管理情報
１８  再送制御部
１９  未応答データ記憶部
６１  データ捕捉部
６２  捕捉部
６３  再送制御部
６４  未応答データ記憶部
６５  目標レート決定部
６６  擬似応答出力部
６６１  データ管理情報
【図１】
2010263350.tif 000003
【図２】
2010263350.tif 000004
【図３】
2010263350.tif 000005
【図４】
2010263350.tif 000006
【図５】
2010263350.tif 000007
【図６】
2010263350.tif 000008
【図７】
2010263350.tif 000009
【図８】
2010263350.tif 000010
【図９】
2010263350.tif 000011
【図１０】
2010263350.tif 000012
【図１１】
2010263350.tif 000013
【図１２】
2010263350.tif 000014
【図１３】
2010263350.tif 000015
【図１４】
2010263350.tif 000016
【図１５】
2010263350.tif 000017
【図１６】
2010263350.tif 000018
【図１７】
2010263350.tif 000019
【図１８】
2010263350.tif 000020