(57)【要約】【課題】ＴＣＰによる再送制御において、再送要求に対して実際に行われた再送との関連に着目して適切にタイムアウト時間を制御し、不用な再送を防止する。【解決手段】送信装置Ｔｎと受信装置Ｒｎによる通信網ＮＷを介するデータパケット送受信において、送信装置Ｔｎは、Fast Retransmitによる再送があった場合、その後でDuplicate ＡＣＫパケットを受信する度にＡＣＫされていないデータパケットのタイムアウト時間を調整する。タイムアウト時間の調整では、その時点におけるタイムアウト時間の最大増加量を計時中のタイムアウト時間に加算する。【選択図】図８
2008283523.tif 000002
【特許請求の範囲】
【請求項１】
ＴＣＰによるデータパケット送信をするデータ送信装置であって、
受信側からの再送要求に応じてするデータパケットの再送をしたときに、前記受信側からの受信の確認応答がされていない既送信データパケットにつき、前記受信側との当該再送時におけるデータパケットの送受信状況に基づいて、前記既送信データパケットの時間経過による再送に向けての経過時間の計時を調整する、データ送信装置。
【請求項２】
前記送受信状況に基づいて取得した前記時間経過による再送を行う経過時間の変更指標が示す最大の時間増加量を、同一データパケットの再送要求受信時に前記計時が示す再送までの時間に加えて前記計時を調整する、請求項１記載のデータ送信装置。
【請求項３】
前記時間経過による再送を行う経過時間の最大増加量を前記最大の時間増加量とする、請求項２記載のデータ送信装置。
【請求項４】
同一データパケットの再送要求受信時に前記計時が示す再送までの時間を計時開始当初の時間にリセットして前記計時を調整する、請求項１記載のデータ送信装置。
【請求項５】
同一データパケットの再送要求受信時に前記計時が示す再送までの時間に一定の時間を加えて前記計時を調整する、請求項１記載のデータ送信装置。
【請求項６】
ＴＣＰによるデータパケット送信をするデータ送信方法であって、
受信側からの再送要求に応じてするデータパケットの再送をしたときに、前記受信側からの受信の確認応答がされていない既送信データパケットにつき、前記受信側との当該再送時におけるデータパケットの送受信状況に基づいて、前記既送信データパケットの時間経過による再送に向けての経過時間の計時を調整する、データ送信方法。
【請求項７】
ＴＣＰによるデータパケット送信をするデータ送信プログラムであって、
受信側からの再送要求に応じてするデータパケットの再送をしたときに、前記受信側からの受信の確認応答がされていない既送信データパケットにつき、前記受信側との当該再送時におけるデータパケットの送受信状況に基づいて、前記既送信データパケットの時間経過による再送に向けての経過時間の計時を調整する機能を、コンピュータに実現させるためのデータ送信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＴＣＰ（Transmission Control Protocol）による再送制御を伴うデータ通信技術に関する。
【背景技術】
【０００２】
ＴＣＰは、ＷｅｂアクセスやＦＴＰ（File Transmission Protocol）等によるファイル転送等に用いられる伝送制御プロトコルである。ＴＣＰは、再送制御や輻輳回避アルゴリズムを有しており、信頼性の高い通信を行うことが可能であるという特徴がある。
【０００３】
かかるＴＣＰにおける再送制御については、その一般的な内容に関する事項が非特許文献１に開示されており、インターネットで広く用いられているＴＣＰでは、再送制御の形態として、送信側が受信側からの再送要求に応じて再送信をする形態と、所定のタイムアウト時間内に受信側からの受信確認応答を受信しないときに再送信をする形態が採用されている。このような形態の再送制御では、再送要求に対する再送信の後で送信側が当該再送信の受信確認応答を受信する前にタイムアウト時間の経過による重複した再送信をしてしまう場合があるので、非特許文献２は、その再送信を避けるためにルータ等の送信側と受信側の間にあるノードがＥＣＮ（Explicit Congestion Notification）というbitを立てて通知する方法を提案している。
【０００４】
また、ＴＣＰにおける再送制御については、特許文献１〜特許文献７に開示されているような技術も提案されている。特許文献１では、肯定応答のない送信パケットを再送する再送タイムアウトの初期値設定に関する技術が開示されている。特許文献２では、再送タイムアウトの発生原因がデータのロスか確認応答のロス又は遅延かによって輻輳ウインドウサイズの設定等を行う技術が開示されている。特許文献３では、無線通信区間と有線通信区間が混在する場合において、変動するパケット往復時間に応じて再送タイムアウト時間を計算する技術が開示されている。特許文献４では、端末装置間の通信において、メッセージ送信からレスポンス受信までの計測時間にマージンを加算して再送処理起動のタイムアウト時間とする技術が開示されている。特許文献５では、受信応答パケットでない制御パケットを受信したときに、その制御パケットの時間的な長さの分だけ再送タイマで計測中の応答待ち時間を戻す技術が開示されている。特許文献６では、送信済みのセグメントに対する再送信要求の受信時点を起算点として再送タイムアウト時間を計時し直す技術が開示されている。特許文献７では、送信フレームの送出時刻と受信確認フレームの受信時刻から求まるレスポンスタイムによって再送タイムアウト値の更新をする技術が開示されている。
【非特許文献１】TCP Illustrated Volume 1, W.Richard Stvens, ADDISON-WESLEY, 1994, Chapter17〜24全体（特にＴＣＰ再送のChapeter21）
【非特許文献２】The Addition of Explicit Congestion Notification (ECN) to IP, RFC3168
【特許文献１】特開平５−２８０７２号公報
【特許文献２】特開２００６−１７３９６１号公報
【特許文献３】特開２００４−２５３９３４号公報
【特許文献４】特開平６−１２１００２号公報
【特許文献５】特開平１０−９３６６１号公報
【特許文献６】特開２００５−１３６６３６号公報
【特許文献７】特開平８−８９９５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、上述した再送要求に対する再送信後のタイムアウト時間経過による重複した再送信は、再送要求に対して実際に再送が行われた場合に発生する。したがって、かかる重複再送を防止するためには、再送要求に対して実際に行われた再送との関連においてタイムアウト時間についての制御を考える必要がある。これに対し、上記各特許文献の技術には、タイムアウト時間の制御につき、再送要求に対して実際に行われた再送との関連を考慮したものはない。一方、非特許文献２の技術にあっては、特定の通知形態によって重複再送を避けようとするものであるから、タイムアウト時間を制御するのとはアプローチが異なる技術になっている。
【０００６】
本発明は、このような事情に鑑みてなされたものであり、ＴＣＰによる再送制御において、再送要求に対して実際に行われた再送との関連に着目して適切にタイムアウト時間を制御することを可能にし、不用な再送を防止してスループットの向上等を図ることができるデータ通信技術を提供することを目的としている。
【課題を解決するための手段】
【０００７】
かかる目的を達成するため、本発明に係るデータ送信装置は、ＴＣＰによるデータパケット送信をするデータ送信装置であって、受信側からの再送要求に応じてするデータパケットの再送をしたときに、前記受信側からの受信の確認応答がされていない既送信データパケットにつき、前記受信側との当該再送時におけるデータパケットの送受信状況に基づいて、前記既送信データパケットの時間経過による再送に向けての経過時間の計時を調整するものとなっている。
【０００８】
本データ送信装置においては、前記送受信状況に基づいて取得した前記時間経過による再送を行う経過時間の変更指標が示す最大の時間増加量を、同一データパケットの再送要求受信時に前記計時が示す再送までの時間に加えて前記計時を調整するものとしてもよい。この場合、前記時間経過による再送を行う経過時間の最大増加量を前記最大の時間増加量とするものとしてもよい。
【０００９】
また、本データ送信装置においては、同一データパケットの再送要求受信時に前記計時が示す再送までの時間を計時開始当初の時間にリセットして前記計時を調整するものとしてもよく、あるいは、同一データパケットの再送要求受信時に前記計時が示す再送までの時間に一定の時間を加えて前記計時を調整するものとしてもよい。
【００１０】
本発明に係るデータ送信方法は、ＴＣＰによるデータパケット送信をするデータ送信方法であって、受信側からの再送要求に応じてするデータパケットの再送をしたときに、前記受信側からの受信の確認応答がされていない既送信データパケットにつき、前記受信側との当該再送時におけるデータパケットの送受信状況に基づいて、前記既送信データパケットの時間経過による再送に向けての経過時間の計時を調整するものとなっている。
【００１１】
本発明に係るデータ送信プログラムは、ＴＣＰによるデータパケット送信をするデータ送信プログラムであって、受信側からの再送要求に応じてするデータパケットの再送をしたときに、前記受信側からの受信の確認応答がされていない既送信データパケットにつき、前記受信側との当該再送時におけるデータパケットの送受信状況に基づいて、前記既送信データパケットの時間経過による再送に向けての経過時間の計時を調整する機能を、コンピュータに実現させるためのデータ送信プログラムである。
【発明の効果】
【００１２】
本発明によれば、受信側からの再送要求に応じてするデータパケットの再送をしたときに、受信側からの受信の確認応答がされていない既送信データパケットにつき、当該再送時におけるデータパケットの送受信状況に基づいて時間経過による再送に向けての経過時間の計時を調整することとしたので、ＴＣＰによる再送制御において、再送要求に対して実際に行われた再送との関連に着目した適切なタイムアウト時間の制御をすることが可能となり、不用な再送を防止してスループットの向上等を図ることができる。
【発明を実施するための最良の形態】
【００１３】
＜構成＞
以下、図面を参照しつつ本発明の実施の形態について説明する。図１は、本発明の一実施形態によるデータ送信装置である送信装置Ｔｎを備えた通信システムの構成を示した図である。本通信システムは、図示のように送信装置Ｔｎ、送信装置ｔｎ、通信網ＮＷ及び受信装置Ｒｎによって構成されており、以下に説明するようにデータパケット（授受対象とする情報を示すデータのＴＣＰに準拠したパケット。一般にはＴＣＰパケットないしセグメント等とも呼ばれる。以下同じ。）を送受信してＴＣＰによる再送制御を伴うデータ通信を実施する。
【００１４】
送信装置Ｔｎは、ＴＣＰの通信規格によるデータパケット送信をするデータ送信装置である。送信装置Ｔｎは、そのデータパケット送信に必要なパケット送受信、再送制御及び輻輳回避アルゴリズム等の処理動作を規定したデータ送信プログラムがインストールされたコンピュータによって構成されており、当該データ送信プログラムの実行に必要な演算装置、記憶装置、制御装置及び通信インターフェース等を備え、通信網ＮＷに接続されている。当該データ送信プログラムにおいては、再送制御の処理動作として、再送要求に対する再送信の処理動作、所定のタイムアウト時間の経過による再送信の処理動作、及び特定条件下でタイムアウト時間を調整する特有の再送時間制御方式による処理動作等が規定されている。これにより、送信装置Ｔｎは、特有の再送制御を伴うデータパケット送信を実施するが、この送信装置Ｔｎ特有の再送制御の具体的内容は後述の動作説明で明らかにする。
【００１５】
送信装置ｔｎは、ＴＣＰの通信規格によるデータパケット送信をする在来のデータ送信装置である。送信装置ｔｎは、ＴＣＰにおける一般的なデータパケット送信を実施するためのパケット送受信、再送制御及び輻輳回避アルゴリズム等のプログラムがインストールされたコンピュータによって構成されており、通信網ＮＷに接続されている。送信装置ｔｎが実施する再送制御には、再送要求に対する再送信と所定のタイムアウト時間の経過による再送信に係るものがあり、送信装置ｔｎは、それらの再送信をＴＣＰにおいて一般的に採用されている在来の再送制御形態によって実施する。
【００１６】
通信網ＮＷは、ＴＣＰの通信規格に準拠したデータ伝送が可能な通信網である。通信網ＮＷを構成する代表的な通信網としてはインターネットが挙げられるが、通信網ＮＷは、ＴＣＰによるパケットの送受信が可能な通信回線を有する任意のネットワークで構成するものとしてよく、例えば、インターネットを主体として他の固定通信網や移動通信網、ＩＰ（Internet Protocol）電話網、ＬＡＮ（Local Area Network）、ＭＡＮ（Metropolitan Area Network）、ＷＡＮ（Wide Area Network）、衛星通信網、海底ケーブル、専用線等を適宜含むものとしてもよい。
【００１７】
受信装置Ｒｎは、ＴＣＰの通信規格によるデータパケット受信をするデータ受信装置である。受信装置Ｒｎは、そのデータパケット受信を実施するためのデータ受信プログラムがインストールされたコンピュータによって構成されており、通信網ＮＷに接続されている。当該データ受信プログラムは、ＴＣＰにおける一般的なデータパケット受信を実施するためのパケット送受信、受信の確認応答及び再送要求等の処理動作を規定したものでよい。このため、受信装置Ｒｎとしては、ＴＣＰによるデータパケット受信をする在来のデータ受信装置をそのまま利用することができる。送信装置Ｔｎと送信装置ｔｎが通信網ＮＷを介して送信するデータパケットは、いずれもＴＣＰの通信規格に準拠しているので、かかる在来のデータ受信装置等を利用した受信装置Ｒｎにおいて受信することができる。
【００１８】
上述のように送信装置Ｔｎ及び送信装置ｔｎはデータパケットを送信する装置であり、受信装置Ｒｎはデータパケットを受信する装置であるが、これらは、データパケットの送信又は受信のいずれかしか行わない装置であるというわけではなく、送信装置Ｔｎ及び送信装置ｔｎがデータパケットの受信も行い、受信装置Ｒｎがデータパケットの送信も行うようなものであってもよい。すなわち、「送信装置」とは、本実施形態においてデータパケットの送信者となる送信側の装置という程の意味であり、「受信装置」とは、本実施形態においてデータパケットの受信者となる受信側の装置という程の意味である。したがって、送信装置Ｔｎ、送信装置ｔｎ及び受信装置Ｒｎは、それぞれがデータパケットを適宜送受信する端末装置やサーバ、あるいは、ルータないしゲートウェイ等の装置であってもよい。本通信システムでは、かかる装置のうち、送信装置Ｔｎ及び送信装置ｔｎが送信側の装置として以下の動作説明で述べるようにデータパケットを送信し、そのデータパケットを受信装置Ｒｎが受信側の装置として受信する。
【００１９】
＜動作＞
次に、上記構成による動作について説明する。データパケットの送信においては、上述したように送信装置Ｔｎには特有の再送制御があるのに対し、送信装置ｔｎは一般的な在来の再送制御形態を採っている。そこで、以下の動作説明においては、まず、送信装置ｔｎと受信装置Ｒｎによるデータパケットの送受信について説明し、その送受信動作における在来の再送制御等についての考察をした後に、送信装置Ｔｎと受信装置Ｒｎによるデータパケットの送受信について説明することにより、在来の再送制御とは異なる送信装置Ｔｎ特有の再送制御の具体的内容を明らかにする。なお、以下の動作説明におけるパケットの送受信は、すべて通信網ＮＷを介して行われる（したがって、特に必要がない限り通信網ＮＷには言及しない。）。
【００２０】
（１）送信装置ｔｎと受信装置Ｒｎによるデータパケット送受信
ＴＣＰでは、送信側が送信したデータパケットに対し、受信側がＡＣＫ（Acknowledgement（確認応答））パケットを送信することによって受信確認を行う。データパケットにはシーケンス番号が付与されており、受信側は、送信するＡＣＫパケットによってどこまでのシーケンス番号のデータパケットを受信したかを示す。送信側は、そのＡＣＫパケットを受信することにより、受信側がどこまでデータパケットを受信したかを把握することができる。したがって、何らかの理由でデータパケット等にエラーが発生すると、送信側は、そのエラー発生を受信側からのＡＣＫパケットによって把握することが可能である。
【００２１】
送信側は、かかるＡＣＫパケットの受領状況に応じて２種類の再送制御を行う。第１の再送制御は、Fast Retransmit（高速再転送）と呼ばれている再送制御であり、第２の再送制御は、タイムアウト再送と呼ばれている再送制御である。Fast Retransmitは、送信装置Ｔｎ及び送信装置ｔｎが再送要求に対する再送信を行うための再送制御に相当し、タイムアウト再送は、送信装置Ｔｎ及び送信装置ｔｎが所定のタイムアウト時間の経過による再送信を行うための再送制御に相当する。送信装置ｔｎと受信装置Ｒｎによるデータパケット送受信においては、これらの再送制御が次のようにして行われる。
【００２２】
・Fast Retransmit（高速再転送）
図２は、送信装置ｔｎと受信装置Ｒｎの間におけるFast Retransmitを伴うデータパケットの送受信シーケンスを示した図である。図２においては、シーケンス番号をｉ（ｉ＝１、２、３、…）とすると、“Data,SEQ=i”がシーケンス番号ｉのデータパケットを表し、“ACK SEQ=i”がシーケンス番号ｉのデータパケットを受信したことを示すＡＣＫパケットを表している（以下、送受信シーケンスを示す他の図面における“Data,SEQ=i”、“ACK SEQ=i”も同様である。）。
【００２３】
図２に示すように、データパケット“Data,SEQ=1”を送信装置ｔｎが送信して受信装置Ｒｎが受信すると、受信装置ＲｎがＡＣＫパケット“ACK SEQ=1”を送信し、送信装置ｔｎは、それを受信して受信装置Ｒｎがシーケンス番号１のデータパケットを正常に受信したことを把握する。これに対し、送信装置ｔｎが続くデータパケット“Data,SEQ=2”を送信したが、そのデータパケット“Data,SEQ=2”が消失し、受信装置Ｒｎで受信できなかったとすると、受信装置Ｒｎは、ＡＣＫパケットを送信することなく、その後に送信装置ｔｎが送信するデータパケット“Data,SEQ=3”を受信する。
【００２４】
受信装置Ｒｎは、このようにデータパケットのシーケンス番号が１個だけ歯抜けの状態で受信された場合（受信データパケットのシーケンス番号に欠落が生じた場合）、歯抜けになったデータパケットのシーケンス番号を送信装置ｔｎに通知し、再送を要求する。歯抜けになったデータパケットのシーケンス番号は、その直前のＡＣＫ番号を知らせるDuplicate ＡＣＫパケット（その直前のＡＣＫした（確認応答をした）データパケットのシーケンス番号を知らせる既送信ＡＣＫパケットと同様のＡＣＫパケット）を送信することによって通知する。今、歯抜けになったデータパケットのシーケンス番号は２で直前のＡＣＫ番号は１なので、受信装置Ｒｎは、図２中に破線矢印で示したDuplicate ＡＣＫパケット“ACK SEQ=1”を送信する。Duplicate ＡＣＫパケット“ACK SEQ=1”に含まれるシーケンス番号１は、続くシーケンス番号２のデータパケットが消失したことを示しており、受信装置Ｒｎは、これによってシーケンス番号２のデータパケットの再送を要求する。
【００２５】
ＴＣＰでは、このようにして受信側がDuplicate ＡＣＫパケットを送信した場合、以後のＡＣＫパケットに含めるシーケンス番号は、再送を要求したシーケンス番号のデータパケットを受信するまで同一のシーケンス番号に維持する。したがって、受信装置Ｒｎは、送信装置ｔｎが送信したデータパケット“Data,SEQ=4”を受信した時も、同一のシーケンス番号が含まれるDuplicate ＡＣＫパケット“ACK SEQ=1”を送信する。そして、送信装置ｔｎは、同一のシーケンス番号を有するDuplicate ＡＣＫパケット“ACK SEQ=1”を２個受信すると、要求されたシーケンス番号２のデータパケット“Data,SEQ=2”を再送する。これにより、受信装置Ｒｎは、歯抜けになっていたデータパケット“Data,SEQ=2”を受信するが、既にデータパケット“Data,SEQ=3”と“Data,SEQ=4”を受信しているので、シーケンス番号４のデータパケットまでは正常受信できたことを示す“ACK SEQ=4”を送信し、それを送信装置ｔｎが受信して新しいデータパケット“Data,SEQ=5”を送信する。
【００２６】
Fast Retransmitは、上述のように同一のシーケンス番号を有するDuplicate ＡＣＫパケット（再送を要求するＡＣＫパケット）を送信側が２回受信した時に再送を開始する形態の再送制御である。これにより、受信側は、再送データパケットを受領すると、それまでに自身が受信したデータパケットの最新のシーケンス番号をＡＣＫパケットで通知し、以後のデータパケット送受信が続行される。
【００２７】
・タイムアウト再送
図３は、送信装置ｔｎと受信装置Ｒｎの間におけるタイムアウト再送を伴うデータパケットの送受信シーケンスを示した図である。図３に示すように、データパケット“Data,SEQ=1”を送信装置ｔｎが送信して受信装置Ｒｎが受信し、ＡＣＫパケット“ACK SEQ=1”を受信装置Ｒｎが送信して送信装置ｔｎが受信すると、送信装置ｔｎは、受信装置Ｒｎがシーケンス番号１のデータパケットを正常に受信したことを把握する。これに対し、続くデータパケット“Data,SEQ=2”を送信装置ｔｎが送信して受信装置Ｒｎが受信し、受信装置ＲｎがＡＣＫパケット“ACK SEQ=2”を送信したが、そのＡＣＫパケット“ACK SEQ=2”が消失し、送信装置ｔｎで受信できなかったとすると、送信装置ｔｎでは、ＡＣＫパケットが返送されてこないため、シーケンス番号２のデータパケットが正常に受信されたか否かが分からない。
【００２８】
この場合、送信装置ｔｎは、ＡＣＫパケットを受信しないまま所定のタイムアウト時間が経過すると、データパケット“Data,SEQ=2”が受信されなかったものとみなし、データパケット“Data,SEQ=2”を再送する。これにより、送信装置ｔｎは、受信装置Ｒｎが再びデータパケット“Data,SEQ=2”を受信して送信するＡＣＫパケット“ACK SEQ=2”を受信し、受信装置Ｒｎがシーケンス番号２のデータパケットまでを正常に受信したことを把握する。
【００２９】
タイムアウト再送は、何らかの理由でＡＣＫパケットが受領できなかった場合に、上述のようにタイムアウト時間と呼ばれる所定期間が経過した時点で受領確認されていないデータパケットを再送する形態の再送制御である。タイムアウト時間ＲＴＯ（Retransmission Time Out）は、データパケットの送信時刻と当該データパケットに対するＡＣＫパケットの受信時刻との間の時間であるＲＴＴ（Round Trip Time）等により、動的に例えば次式で計算されている。
ＭをＲＴＴの実測値、ＡをSmoothed ＲＴＴ（[Ａ←0.9Ａ＋0.1Ｍ]で算出されるＲＴ
Ｔの平滑化平均）、ＤをＲＴＴの変動部分として、
Ｅｒｒ＝Ｍ−Ａ
Ａ←Ａ＋1/8×Ｅｒｒ
Ｄ←Ｄ＋0.25（|Ｅｒｒ|−Ｄ）
ＲＴＯ＝Ａ＋4Ｄ
なお、Ｍ、Ａ及びＤの初期値は適宜設定される。
【００３０】
（２）在来の再送制御等についての考察
ＴＣＰにおいては、上述したFast Retransmitとタイムアウト再送が一般的な再送制御方法として採用されている。ＴＣＰによるデータ通信では、これらの再送制御を行いつつ、輻輳回避のための輻輳制御を実施している。輻輳制御の形態としては、cwnd（Congestion Windowの略。一回に送信するパケット数を意味し、ウィンドウサイズとも呼ばれる。以下同じ。）を当初は小さくしておき、ＡＣＫパケットを受信する毎に（すなわち、送信が成功する度に）cwndを少しずつ大きくしていくものが採用されている。この形態の輻輳制御はスロースタートと呼ばれている。cwndが大きいほど一回に多数のパケットが送信可能であることから、ＴＣＰスループット（ＴＣＰによるデータ通信のスループット。以下同じ。）の向上に役立つ。
【００３１】
ＴＣＰによるデータ通信において、パケットロスが発生した場合には、そのまま送信をするとさらにエラーや輻輳が発生する可能性があることから、輻輳回避のための輻輳回避アルゴリズムが動作する。輻輳回避は、cwndを小さくすることによって行う。そのcwndの制御方法としては、大きく分けると、タイムアウト再送時に行うものとFast Retransmit時に行うものの２種類が存在する。
【００３２】
タイムアウト再送時に行うものでは、タイムアウト再送が発生した時にcwndを初期状態（通常は１）にセットする。この制御方法では、以後、スロースタートによって少しずつcwndを上げていく必要があるため、ＴＣＰスループットに対する影響が発生し、タイムアウト再送が発生したときにはＴＣＰスループットが相当低下することになる。当初のＴＣＰ実装であるＴＣＰ Tahoeは、再送制御に関してはタイムアウト再送しか機能を有しなかった（Fast Retransmitはできなかった。）。しかし、それでは前述の通りＴＣＰスループットが低下してしまうという問題があったので、その問題を解決するべく、ＴＣＰ Renoという実装によってFast Retransmitが考案されたという経緯がある。
【００３３】
Fast Retransmitによる再送があった場合では、複数個のデータパケットがエラーになっているわけではないので、ネットワークに大きなエラーは発生していないと考えられることから、Fast Retransmit時に行うcwndの制御方法としては、cwndを初期状態に戻す必要はないということになった。このことに対応するため、cwndの増加アルゴリズムとしてFast Recoveryというものが考案された。Fast Recoveryは、Fast Retransmitによる再送に限って、cwndを再送直前の１／２にセットする仕組みである。このFast Recoveryによれば、cwndは半分の値からスロースタートで増加させればよいので、ＴＣＰスループットへの影響が抑えられるという効果がある。
【００３４】
図４は、Fast Retransmitとタイムアウト再送があったときのcwndの変動を示した図であり、横軸が順次送信されるデータパケットのシーケンス番号、縦軸がcwndの値を表している。この図に示すように、データパケットの送信開始後はスロースタートによってcwndが徐々に大きくなるが、Fast Retransmitが発生すると、図中の正円で示したようにFast Recoveryによってcwndの値が１／２になる。また、ＴＣＰでは、Fast Retransmitで再送したデータパケットに対して送信側にＡＣＫパケットがタイムアウト時間内に到達しないとタイムアウト再送を実施する。この場合、輻輳回避アルゴリズムはタイムアウト再送時のものが適用されるため、図中の楕円で示したようにタイムアウトによってcwndが１になり、ＴＣＰスループットに対して大きな影響を与える。したがって、Fast Retransmitにより再送されたデータパケットが受信側で正常に受信されたのであれば、そのデータパケットに対するＡＣＫパケットがタイムアウト時間内に届くことがＴＣＰスループットの低下を抑えるために重要となってくる。
【００３５】
ところが、ＴＣＰによるデータパケットの再送においては、データパケットが送信側から正しく再送でき、かつ、受信側で正常に受信できたのにも拘わらず、タイムアウト時間内にＡＣＫパケットが送信側に到達しないことからタイムアウト再送が発生してしまう事象が存在する。このような重複した再送が発生する理由としては、データパケットの送信に時間を要したことが考えられ、その原因となっている場合として、次のような場合があることが知られている。
・下位レイヤ（移動体網のような無線リンクやＯＳＩ（Open Systems Interconnection）参照モデルでいうところのレイヤ２）での再送による一時的な遅延増加があった場合
・ＱｏＳ（Quality of Service）を考慮して優先制御を行う際に、ＴＣＰのデータパケットが優先されずにデータパケットが送信されない場合
・時分割多重（ＴＤＭＡ（Time Division Multiple Access））の環境下でスケジューリングによりＴＣＰのデータパケットに対して帯域を得られなかった場合
【００３６】
図５は、かかる重複再送が発生しているデータパケットの送受信シーケンス例を示した図である。図５においては、データパケットの伝送を実線矢印、ＡＣＫパケットの伝送を一点鎖線矢印で示し、それぞれを斜線にしてパケットの伝送遅延を表してある（以下、送受信シーケンスを示す他の図面の表現形式も同様である。）。
【００３７】
図５に示すように、送信装置ｔｎがデータパケット“Data,SEQ=1”〜“Data,SEQ=8”を送信したが、データパケット“Data,SEQ=4”が消失したとすると、受信装置Ｒｎは、データパケット“Data,SEQ=1”〜“Data,SEQ=3”を受信してＡＣＫパケット“ACK SEQ=1”〜“ACK SEQ=3”を返送した後にデータパケット“Data,SEQ=5”を受信し、データパケット“Data,SEQ=4”が受信されないので、データパケット“Data,SEQ=5”の受信時にDuplicate ＡＣＫパケット“ACK SEQ=3”を発行し、以後の各データパケット受信時にもDuplicate ＡＣＫパケット“ACK SEQ=3”を送信する。これにより、送信装置ｔｎは、Duplicate ＡＣＫパケット“ACK SEQ=3”を２度受信した時点でFast Retransmitによりデータパケット“Data,SEQ=4”を再送し、受信装置Ｒｎは、再送されたデータパケット“Data,SEQ=4”を受信し、この時点でデータパケット“Data,SEQ=8”まで受信していることを示すＡＣＫパケット“ACK SEQ=8”を送信する。しかし、図示のように、そのＡＣＫパケット“ACK SEQ=8”がデータパケット“Data,SEQ=4”の再送時からのタイムアウト時間内に送信装置ｔｎに到達しないと、送信装置ｔｎでは、再送したデータパケット“Data,SEQ=4”に対するＡＣＫパケットがまだ受信されていないが、タイムアウト時間が来たということから、タイムアウト再送によりデータパケット“Data,SEQ=4”を重複再送してしまう。
【００３８】
このような重複再送が発生する場合には、データパケットが正常に再送されているにも拘わらず、再度データパケットが再送され、さらにタイムアウト再送によるcwnd増加の鈍化が発生するという問題がある。なお、上記非特許文献２の方法は、このような問題を避けるために利用することができるが、ノード、送信側及び受信側のすべてがＥＣＮを理解している必要があるため（送信側のみならず、受信側も含めたすべてのノードがＥＣＮに対応する機能を有している必要があるため）、あまり普及していない。
【００３９】
（３）送信装置Ｔｎと受信装置Ｒｎによるデータパケット送受信
以上の考察によれば、重複したタイムアウト再送を避けるためには、タイムアウト時間を適切に制御すればよいということになる。また同時に、Fast Retransmitの発生が、重複したタイムアウト再送の可能性を生じさせる前提になっているということもできる。そこで、送信装置Ｔｎによるデータパケット送信では、このFast Retransmitの発生に着目し、Fast Retransmitが実際に発生した時点から、Fast Retransmitとの関連を考慮したタイムアウト時間制御を実施することにより、上述した重複再送による問題を解決する。
【００４０】
(i)タイムアウト時間制御のためのタイムアウト調整アルゴリズム適用範囲
送信装置Ｔｎでは、タイムアウト時間を制御するために、Fast Retransmitが発生したシーケンス番号以降で、現在回線上に存在するデータパケット、及び再送データパケットの原送信時以降（再送されたデータパケットが以前最初に送信された時以降）で再送データパケットに対するＡＣＫパケットが返答されていない間に送信されたデータパケットに対するタイムアウト時間のみを増加するというタイムアウト調整アルゴリズムを用いる。すなわち、送信装置Ｔｎのタイムアウト調整アルゴリズムは、Fast Retransmitが発生した時点以降において、そのFast Retransmitによって再送されたデータパケットと、当該データパケットの再送前の原送信時から当該データパケットに対するＡＣＫパケットの受信時までの間に送信された各データパケットとを対象として適用し、それらのデータパケットのタイムアウト時間をそれぞれFast Retransmit発生時の状況に応じた所定の時間分だけ増加させる。
【００４１】
図６は、そのタイムアウト調整アルゴリズムの適用範囲例を送信装置Ｔｎと受信装置Ｒｎによるデータパケットの送受信シーケンス例中に表した図である。図６に示すように、送信装置Ｔｎがデータパケット“Data,SEQ=1”〜“Data,SEQ=8”を送信したが、データパケット“Data,SEQ=4”が消失したとすると、受信装置Ｒｎは、データパケット“Data,SEQ=1”〜“Data,SEQ=3”を受信してＡＣＫパケット“ACK SEQ=1”〜“ACK SEQ=3”を返送した後にデータパケット“Data,SEQ=5”を受信し、データパケット“Data,SEQ=4”が受信されないので、データパケット“Data,SEQ=5”の受信時にDuplicate ＡＣＫパケット“ACK SEQ=3”を送信し、以後のデータパケット“Data,SEQ=6”〜“Data,SEQ=8”の各受信時にもDuplicate ＡＣＫパケット“ACK SEQ=3”を送信する。これにより、送信装置Ｔｎは、Duplicate ＡＣＫパケット“ACK SEQ=3”を２度受信した時点でFast Retransmitによりデータパケット“Data,SEQ=4”を再送する。
【００４２】
ここで、再送したデータパケット“Data,SEQ=4”は、タイムアウト調整アルゴリズムによるタイムアウト時間の調整対象とする（原送信のデータパケット“Data,SEQ=4”自体は、再送時にタイムアウト時間がクリアされるので対象とはならない。）。また、データパケット“Data,SEQ=4”の原送信時以降に送信したデータパケット“Data,SEQ=5”〜“Data,SEQ=8”もタイムアウト時間の調整対象とする。送信装置Ｔｎは、以後、後続のデータパケット“Data,SEQ=9”、“Data,SEQ=10”を順次送信していくが、再送したデータパケット“Data,SEQ=4”に対するＡＣＫパケットが受信されるまでの間は、それらの順次送信するデータパケットも順次タイムアウト時間の調整対象としていく。
【００４３】
そして、受信装置Ｒｎは、再送されたデータパケット“Data,SEQ=4”を受信し、その時点でデータパケット“Data,SEQ=8”まで受信していることを示すＡＣＫパケット“ACK SEQ=8”を送信する。このＡＣＫパケット“ACK SEQ=8”は、再送されたデータパケット“Data,SEQ=4”のシーケンス番号をＡＣＫ番号としたものではないが、それまで受信できていなかった（再送要求をしていた）データパケット“Data,SEQ=4”を受信した結果、その時点でシーケンス番号８までのデータパケットを受信しているということを示している。すなわち、ＡＣＫパケット“ACK SEQ=8”は、データパケット“Data,SEQ=4”のFast Retransmit再送が完了したことを示しているので、送信装置Ｔｎは、ＡＣＫパケット“ACK SEQ=8”を再送したデータパケット“Data,SEQ=4”に対するＡＣＫパケットとして受信する。これにより、送信装置Ｔｎは、タイムアウト調整アルゴリズムによるタイムアウト時間の調整を終了し、ＡＣＫパケット“ACK SEQ=8”の受信時点から送信する後続のデータパケット“Data,SEQ=11”以降については、調整を行わない通常のタイムアウト時間（上記タイムアウト時間ＲＴＯ等）を適用する。
【００４４】
したがって、図６の送受信シーケンス例では、データパケット“Data,SEQ=4”〜“Data,SEQ=10”がタイムアウト調整アルゴリズムによるタイムアウト時間の調整対象となる。すなわち、タイムアウト調整アルゴリズムの適用範囲は、シーケンス番号でいえば、Fast Retransmit再送したデータパケットのシーケンス番号からFast Retransmitの完了前の最後に送信したデータパケットのシーケンス番号までである。送信装置Ｔｎは、その範囲にあるシーケンス番号のデータパケットにつき、それぞれのタイムアウト時間を調整するが、それらのデータパケットは、要するにＡＣＫされていないデータパケットであるので、送信装置Ｔｎにおいて容易に把握することが可能であり、それらのシーケンス番号を取得して送信装置Ｔｎでの再送制御におけるタイムアウト時間制御に利用することができる。
【００４５】
(ii)タイムアウト時間制御
図７は、送信装置Ｔｎが実行するタイムアウト時間制御の処理手順を示したフローチャートである。この処理手順による処理動作は、送信装置Ｔｎの上述したデータ送信プログラム中、特定条件下でタイムアウト時間を調整する特有の再送時間制御方式による処理動作の部分に当たり、送信装置Ｔｎは、データ送信プログラムの他の部分によるパケット送受信、Fast Retransmit及びタイムアウト再送等の再送制御、並びに輻輳回避アルゴリズム等を実行しつつ、図７の処理手順によるタイムアウト時間制御を実行し、特有の再送制御を伴うデータパケット送信を実施する。
【００４６】
送信装置Ｔｎのタイムアウト時間制御では、Fast Retransmitによる再送が発生したか否かを判断し（ステップＳ1）、発生しなければ（ステップＳ1での判断結果が“NO”となって）そのまま処理を終了し、発生すると（ステップＳ1での判断結果が“YES”となって）タイムアウト時間を調整するための処理（ステップＳ2以下の処理）へと進む。これにより、タイムアウト時間制御では、Fast Retransmitの発生を随時（例えば一定時間間隔等で）監視している。
【００４７】
ここで、送信装置Ｔｎと受信装置Ｒｎによるデータパケットの送受信において、送信装置ＴｎがFast Retransmitによる再送を行ったとすると（ステップＳ1での判断結果が“YES”となり）、タイムアウト時間制御では、Fast Retransmitによって再送したデータパケットのシーケンス番号Ｘを取得する（ステップＳ2）。そして、この時点（ここではFast Retransmitの発生時点）において、未だＡＣＫされていないデータパケットのシーケンス番号（受信したＡＣＫパケットによっては受信装置Ｒｎでの正常受信が未だ確認されていないデータパケットのシーケンス番号。以下「UnＡＣＫedシーケンス番号」といい、そのデータパケットを「UnＡＣＫedデータパケット」という。）の範囲を取得する（ステップＳ3）。
【００４８】
Fast Retransmitによって再送したデータパケットは未だＡＣＫされておらず、シーケンス番号Ｘ以降の既に送信した各データパケットも未だＡＣＫされていないが、シーケンス番号Ｘ直前のDuplicate ＡＣＫパケット中のＡＣＫ番号であるシーケンス番号のデータパケットまではＡＣＫされている。したがって、UnＡＣＫedシーケンス番号の範囲は、シーケンス番号Ｘから最新の既送信データパケットのシーケンス番号までである。送信装置Ｔｎは、このUnＡＣＫedシーケンス番号の範囲をタイムアウト調整アルゴリズムの適用範囲とし、それぞれのUnＡＣＫedデータパケットのタイムアウト時間を示すタイムアウト値を調整する（ステップＳ4）。
【００４９】
タイムアウト調整アルゴリズムでは、次のようにして各UnＡＣＫedデータパケットのタイムアウト値を調整する。
(a) Fast Retransmitが発生した時の最初の調整では、各UnＡＣＫedデータパケット
のタイムアウト値をクリアし、そのFast Retransmitの発生時点において算出さ
れているタイムアウト時間（上記タイムアウト時間ＲＴＯ等）の値を各UnＡＣＫ
edデータパケットのタイムアウト値に設定する。
(b) ２回目以降の調整では、以前のタイムアウト値の最大増加量を各UnＡＣＫedデー
タパケットのタイムアウト値に付加する。
ＴＣＰにおけるタイムアウト時間は、上記タイムアウト時間ＲＴＯ等のように動的に計算されているので、過去に順次算出されたタイムアウト時間において、タイムアウト時間が最も増加したときの増加量（最大増加値）を送信装置ＴｎのＲＡＭ、キャッシュメモリないしハードディスク等の記憶装置に記憶しておき、２回目以降の調整では、その最大増加量を各UnＡＣＫedデータパケットの計時中のタイムアウト値に加算する。ただし、２回目以降の調整で新たにUnＡＣＫedデータパケットが加わった場合（新たなデータパケットが送信された場合）には、その時点において算出されているタイムアウト時間の値を当該UnＡＣＫedデータパケットのタイムアウト値に設定し、他のUnＡＣＫedデータパケットのタイムアウト値はそのまま維持し、次回以降の調整で当該UnＡＣＫedデータパケットも含めた各UnＡＣＫedデータパケットについて(b)の調整をするものとする。
【００５０】
現時点では、Fast Retransmitが発生して最初の調整なので、算出されているタイムアウト時間の値を各UnＡＣＫedデータパケットのタイムアウト値に設定し、データパケットの送信又はＡＣＫパケットの受信を待つ（ステップＳ5）。そして、その送信又は受信のいずれかのイベントが発生すると、発生したイベントを判断し（ステップＳ6）、データパケットの送信である場合には、再びUnＡＣＫedシーケンス番号の範囲を取得してタイムアウト値の調整を行う（ステップＳ6での判断結果が“Data送信”の場合にはステップＳ3へ戻り、次いでステップＳ4へと進む。）。この場合には、当該イベントによって送信されたデータパケットが新たにUnＡＣＫedデータパケットの１つとして加わり、タイムアウト値が設定されて次回以降の調整で上記(b)の調整対象となる。すなわち、データパケットの送信イベントが発生すると、それによって送信されたデータパケットが新たにタイムアウト調整アルゴリズムの適用範囲に加わり、順次送信される新たなデータパケットが順次タイムアウト時間の調整対象として加えられていくことになる。
【００５１】
これに対し、発生したイベントがＡＣＫパケットの受信であった場合（ステップＳ6での判断結果が“ＡＣＫ受信”の場合）には、そのＡＣＫパケットによってＡＣＫされたデータパケットのシーケンス番号がＸ以上であるか否かを判断する（ステップＳ7）。ＡＣＫされたデータパケットがシーケンス番号Ｘ以上でなかったとすると、シーケンス番号Ｘ直前のシーケンス番号のデータパケットまではＡＣＫされているので、そのＡＣＫパケットは、Fast Retransmit再送を発生させたDuplicate ＡＣＫパケットと同一ＡＣＫ番号のDuplicate ＡＣＫパケットである。このようにFast Retransmitの発生後に同じDuplicate ＡＣＫパケットを受信した時には（ステップＳ7での判断結果が“NO”となった時には）、UnＡＣＫedシーケンス番号の範囲を取得し（ステップＳ3へと進み）、それぞれのUnＡＣＫedデータパケットのタイムアウト値を調整する（ステップＳ4）。
【００５２】
ここでのタイムアウト値の調整は、タイムアウト調整アルゴリズムによる上記(b)の調整である。すなわち、送信装置Ｔｎのタイムアウト時間制御では、Fast Retransmitの発生後に同じDuplicate ＡＣＫパケットを受信すると、各UnＡＣＫedデータパケットの計時中のタイムアウト値に以前のタイムアウト値の最大増加量を加算する。そして、以後においても同様に、Duplicate ＡＣＫパケットを受信する度に各UnＡＣＫedデータパケットのタイムアウト値に以前のタイムアウト値の最大増加量を加算する。
【００５３】
動的に計算されるタイムアウト時間の増加量は、ＴＣＰにおけるデータパケットの送受信状況を反映している。したがって、その最大増加量をUnＡＣＫedデータパケットのタイムアウト値に加算するということは、Fast Retransmitが発生したときのデータパケットの送受信状況に応じたパケット伝送遅延増加の最悪値に相当する分の時間を増加させるということである。ここにいう最悪値とは、最悪でもその分タイムアウト時間を増加させればＡＣＫパケットが返ってくると見込まれる必要最小限の値であり、データパケットの送受信状況に応じて変動する。Fast Retransmitの発生後は、タイムアウト時間の最大増加量をかかる最悪値として、Duplicate ＡＣＫパケットを受信する度に各UnＡＣＫedデータパケットのタイムアウト時間が最悪値の分だけ延長されることになる。
【００５４】
送信装置Ｔｎのタイムアウト時間制御では、このようにしてタイムアウト時間の調整を行い、各回の調整後は上述したようにデータパケットの送信又はＡＣＫパケットの受信を待つ（ステップＳ5）。そして、Fast Retransmit再送の完了を示すＡＣＫ番号がＸ以上のＡＣＫパケットを受信すると（ステップＳ6での判断結果が“ＡＣＫ受信”、ステップＳ7での判断結果が“YES”となると）、送信装置Ｔｎはタイムアウト時間制御の処理を終了する。
【００５５】
(iii)タイムアウト再送制御を伴うデータパケット送受信例
図８は、以上のようなタイムアウト時間制御を実施した場合の送信装置Ｔｎと受信装置Ｒｎによるデータパケットの送受信シーケンス例を示した図である。図８に示すように、送信装置Ｔｎがデータパケット“Data,SEQ=1”〜“Data,SEQ=8”を送信したが、データパケット“Data,SEQ=4”が消失したとすると、受信装置Ｒｎは、データパケット“Data,SEQ=1”〜“Data,SEQ=3”を受信してＡＣＫパケット“ACK SEQ=1”〜“ACK SEQ=3”を返送した後にデータパケット“Data,SEQ=5”を受信し、データパケット“Data,SEQ=4”が受信されないので、データパケット“Data,SEQ=5”の受信時にDuplicate ＡＣＫパケット“ACK SEQ=3”を送信し、以後のデータパケット“Data,SEQ=6”〜“Data,SEQ=8”の各受信時にもDuplicate ＡＣＫパケット“ACK SEQ=3”を送信する。これにより、送信装置Ｔｎは、Duplicate ＡＣＫパケット“ACK SEQ=3”を２度受信した時点でFast Retransmitによりデータパケット“Data,SEQ=4”を再送し、タイムアウト時間を調整するための処理（上記ステップＳ2以下の処理）を開始する。すなわち、データパケット“Data,SEQ=4”をFast Retransmit再送した送信装置Ｔｎは、シーケンス番号Ｘとしてシーケンス番号４、UnＡＣＫedシーケンス番号の範囲としてシーケンス番号４〜８を取得し（上記ステップＳ2及びＳ3）、送受信するパケットに応じて各UnＡＣＫedデータパケットのタイムアウト時間を調整する（上記ステップＳ3〜Ｓ7）。
【００５６】
図８においては、Fast Retransmit再送時に算出されているタイムアウト時間を１０、これまでの最悪値（その時点までのタイムアウト時間の最大増加量）を３として、Fast Retransmit再送によるデータパケット“Data,SEQ=4”の送信時からの経過時間と、データパケット“Data,SEQ=4”の計時中のタイムアウト時間を併せて示してある。これらの経過時間と計時中タイムアウト時間に示したように、再送したデータパケット“Data,SEQ=4”については、Fast Retransmit再送時にタイムアウト時間１０を設定し、経過時間３となった時にDuplicate ＡＣＫパケット“Data,SEQ=3”を受信すると、計時中タイムアウト時間（１０−３）に最悪値３を加算するので、計時中タイムアウト時間は１０になる。また、それから時間４が経って経過時間７となった時に再びDuplicate ＡＣＫパケット“Data,SEQ=3”を受信すると、計時中タイムアウト時間（１０−４）に最悪値３を加算するので、計時中タイムアウト時間は９になる。
【００５７】
そして、送信装置Ｔｎは、さらに時間５が経って経過時間１２となった時にＡＣＫパケット“ACK SEQ=8”を受信するが、このＡＣＫパケット“ACK SEQ=8”は、受信装置Ｒｎが再送データパケット“Data,SEQ=4”を受信して返送したＡＣＫ番号が４以上のＡＣＫパケットなので、タイムアウト時間制御の処理は終了する。この時、計時中タイムアウト時間は（９−（１２−７））で残り時間４となっているので、タイムアウト再送は発生しない。すなわち、始めに設定したタイムアウト時間１０は、ＡＣＫパケット“ACK SEQ=8”の受信（経過時間１２）以前に既に経過しているが、送信装置Ｔｎにおいては、上述したタイムアウト時間制御により、Fast Retransmitの発生から完了に至るまで計時中のタイムアウト時間がタイムアウトしない。これにより、送信装置Ｔｎは、Fast Retransmit再送をした場合に重複する不用なタイムアウト再送をすることなく、受信装置Ｒｎとのデータパケット送受信を行うことができる。なお、図８では省略したが、送信装置Ｔｎは、データパケット“Data,SEQ=5”〜“Data,SEQ=8”、及びFast Retransmit再送以後ＡＣＫパケット“ACK SEQ=8”受信前に送信したデータパケットについても、それぞれ上記同様のタイムアウト時間の調整を行っており、それらのデータパケットについても不用なタイムアウト再送を防止している。
【００５８】
送信装置Ｔｎのタイムアウト時間制御によれば、何らかの理由でデータパケットやＡＣＫパケットに遅延が発生するような状況においても、上述したように不要なＴＣＰによる再送を削減することができる。またこのことから、一度にデータパケットを送信可能な量であるcwndの大きさの減少を抑えることも可能になっている。すなわち、送信装置Ｔｎでは、Fast Retransmit再送が実際にあった場合のみを対象として上述のタイムアウト制御を行い、その再送データパケット等のUnＡＣＫedデータパケットのみを対象としてタイムアウト時間を修正しているので、再送効率を高め、無駄な通信を行うことを防止することができ、ＴＣＰスループットの向上等を図ることができる。なお、タイムアウト再送が実際に発生する場合には、通信状況がかなり悪いので、再送したデータパケットが届いている可能性が低く、タイムアウト時間を調整する実益がないようなことも多いが、送信装置Ｔｎは、Fast Retransmit再送があった場合のみを対象としてタイムアウト時間を調整することにより、再送効率の向上等を図ることができるものとなっている。
【００５９】
また、タイムアウト調整でタイムアウト値に加算する値を以前のタイムアウト値の最大増加量としているので、タイムアウト時間を増加させる量が回線に発生している遅延を指標として変化する。これにより、タイムアウト時間を適宜重複再送の回避に必要な量だけ増加させることが可能となっている。このようにタイムアウト時間を必要な量だけ増加させるためには、上述したタイムアウト値の最大増加量のみならず、Fast Retransmitがあったときの通信回線に発生している遅延を表す任意の指標を利用することができ、例えば、ＲＴＴの最大増加量等の他の指標を利用することもできる。
【００６０】
さらに、上述した送信装置Ｔｎと受信装置Ｒｎによるデータパケット送受信では、特有の処理を行うのが送信装置Ｔｎだけであり、受信装置ＲｎはＴＣＰによる通常のデータパケット受信が実施できればよく、通信網ＮＷもＴＣＰによる通常のデータ伝送が可能であればよい。したがって、送信側の装置以外には何等特別な機能を要することなく上記同様のデータパケット通信を実施することができるので、既存のインターネットによる通信システム等においても容易に上記タイムアウト時間制御を伴うデータパケット送受信を実現することができる。
【００６１】
(iv)他のタイムアウト調整アルゴリズム
送信装置Ｔｎにおいては、上述したタイムアウト調整アルゴリズム以外の他のタイムアウト調整アルゴリズムを利用して上記ステップＳ4での処理を行うものとしてもよい。以下、その例を挙げる。
【００６２】
・他のタイムアウト調整アルゴリズムＡ
同一シーケンス番号でのDuplicate ＡＣＫパケットが返る度にタイムアウト値の計測を元のタイムアウト値にリセットする。タイムアウト時間は、上述したように送信装置Ｔｎが同一ＡＣＫ番号のDuplicate ＡＣＫパケットを受信する度に操作している。これは、同一ＡＣＫ番号のDuplicate ＡＣＫパケットが受信側から返答されるということは、まだ再送されたデータパケットが受信側に到着していないことを示しているためである。そこで、他のタイムアウト調整アルゴリズムＡとしては、Duplicate ＡＣＫパケットを受信する度に各UnＡＣＫedデータパケットのタイムアウト時間の計測を止め、元から設定されているタイムアウト値にリセットする。具体的には、
(a) Fast Retransmitが発生した時の最初の調整では、各UnＡＣＫedデータパケット
のタイムアウト値をクリアし、そのFast Retransmitの発生時点において算出さ
れているタイムアウト時間（上記タイムアウト時間ＲＴＯ等）の値を各UnＡＣＫ
edデータパケットのタイムアウト値に設定する。
(b) ２回目以降の調整では、各UnＡＣＫedデータパケットの計時中タイムアウト値を
リセットする。
ただし、２回目以降の調整で新たにUnＡＣＫedデータパケットが加わった場合（新たなデータパケットが送信された場合）には、その時点において算出されているタイムアウト時間の値を当該UnＡＣＫedデータパケットのタイムアウト値に設定し、他のUnＡＣＫedデータパケットのタイムアウト値はそのまま維持し、次回以降の調整で当該UnＡＣＫedデータパケットも含めた各UnＡＣＫedデータパケットについて(b)の調整をするものとする。
【００６３】
図９は、かかる他のタイムアウト調整アルゴリズムＡによるタイムアウト時間制御を実施した場合の送信装置Ｔｎと受信装置Ｒｎによるデータパケットの送受信シーケンス例を示した図である。図９の送受信シーケンス例では、上記図８同様、データパケット“Data,SEQ=1”〜“Data,SEQ=8”の送信、データパケット“Data,SEQ=4”の消失、ＡＣＫパケット“ACK SEQ=1”〜“ACK SEQ=3”の返送があり、受信装置Ｒｎがデータパケット“Data,SEQ=5”〜“Data,SEQ=8”の各受信時にDuplicate ＡＣＫパケット“ACK SEQ=3”を送信し、送信装置ＴｎがFast Retransmitによりデータパケット“Data,SEQ=4”を再送して上記ステップＳ2以下の処理を開始する。
【００６４】
図９においては、Fast Retransmit再送時に算出されているタイムアウト時間を１０として、図８同様に経過時間とデータパケット“Data,SEQ=4”の計時中タイムアウト時間を併せて示してある。これらの経過時間と計時中タイムアウト時間に示したように、再送したデータパケット“Data,SEQ=4”については、Fast Retransmit再送時にタイムアウト時間１０を設定し、経過時間３となった時にDuplicate ＡＣＫパケット“Data,SEQ=3”を受信すると、タイムアウト時間をリセットして計時中タイムアウト時間を１０とする。また、経過時間７となった時に再びDuplicate ＡＣＫパケット“Data,SEQ=3”を受信すると、再びタイムアウト時間をリセットして計時中タイムアウト時間を１０とする。
【００６５】
そして、送信装置Ｔｎは、さらに時間５が経って経過時間１２となった時にＡＣＫパケット“ACK SEQ=8”を受信し、このＡＣＫパケット“ACK SEQ=8”のＡＣＫ番号が４以上であることからタイムアウト時間制御の処理を終了する。この時、計時中タイムアウト時間は（１０−（１２−７））で残り時間５となっているので、タイムアウト再送は発生しない。すなわち、始めに設定したタイムアウト時間１０は、ＡＣＫパケット“ACK SEQ=8”の受信（経過時間１２）以前に既に経過しているが、送信装置Ｔｎにおいては、Duplicate ＡＣＫパケットが返る度にタイムアウト時間をリセットするため、タイムアウト時間の減少がなく、Fast Retransmitの発生から完了に至るまで計時中のタイムアウト時間がタイムアウトしない。これにより、送信装置Ｔｎは、Fast Retransmit再送をした場合に重複する不用なタイムアウト再送をすることなく、受信装置Ｒｎとのデータパケット送受信を行うことができる。なお、図９では省略したが、送信装置Ｔｎは、データパケット“Data,SEQ=5”〜“Data,SEQ=8”、及びFast Retransmit再送以後ＡＣＫパケット“ACK SEQ=8”受信前に送信したデータパケットについても、それぞれ上記同様のタイムアウト時間の調整を行っており、それらのデータパケットについても不用なタイムアウト再送を防止している。
【００６６】
・他のタイムアウト調整アルゴリズムＢ
同一シーケンス番号でのDuplicate ＡＣＫパケットが返る度にタイムアウト値に予め定めた一定値を付加する。タイムアウト時間は、送信装置Ｔｎが同一ＡＣＫ番号のDuplicate ＡＣＫパケットを受信する度に操作しているので、その度に各UnＡＣＫedデータパケットのタイムアウト時間を予め定めた一定量だけ増加させる。具体的には、
(a) Fast Retransmitが発生した時の最初の調整では、各UnＡＣＫedデータパケット
のタイムアウト値をクリアし、そのFast Retransmitの発生時点において算出さ
れているタイムアウト時間（上記タイムアウト時間ＲＴＯ等）の値を各UnＡＣＫ
edデータパケットのタイムアウト値に設定する。
(b) ２回目以降の調整では、各UnＡＣＫedデータパケットの計時中タイムアウト値に
予め定めた一定値を加算する。
ただし、２回目以降の調整で新たにUnＡＣＫedデータパケットが加わった場合（新たなデータパケットが送信された場合）には、その時点において算出されているタイムアウト時間の値を当該UnＡＣＫedデータパケットのタイムアウト値に設定し、他のUnＡＣＫedデータパケットのタイムアウト値はそのまま維持し、次回以降の調整で当該UnＡＣＫedデータパケットも含めた各UnＡＣＫedデータパケットについて(b)の調整をするものとする。
【００６７】
図１０は、かかる他のタイムアウト調整アルゴリズムＢによるタイムアウト時間制御を実施した場合の送信装置Ｔｎと受信装置Ｒｎによるデータパケットの送受信シーケンス例を示した図である。図１０の送受信シーケンス例では、上記図８同様、データパケット“Data,SEQ=1”〜“Data,SEQ=8”の送信、データパケット“Data,SEQ=4”の消失、ＡＣＫパケット“ACK SEQ=1”〜“ACK SEQ=3”の返送があり、受信装置Ｒｎがデータパケット“Data,SEQ=5”〜“Data,SEQ=8”の各受信時にDuplicate ＡＣＫパケット“ACK SEQ=3”を送信し、送信装置ＴｎがFast Retransmitによりデータパケット“Data,SEQ=4”を再送して上記ステップＳ2以下の処理を開始する。
【００６８】
図１０においては、Fast Retransmit再送時に算出されているタイムアウト時間を１０、予め定めた一定の加算量を５として、図８同様に経過時間とデータパケット“Data,SEQ=4”の計時中タイムアウト時間を併せて示してある。これらの経過時間と計時中タイムアウト時間に示したように、再送したデータパケット“Data,SEQ=4”については、Fast Retransmit再送時にタイムアウト時間１０を設定し、経過時間３となった時にDuplicate ＡＣＫパケット“Data,SEQ=3”を受信すると、計時中タイムアウト時間（１０−３）に加算量５を加算して計時中タイムアウト時間を１２とする。また、経過時間７となった時に再びDuplicate ＡＣＫパケット“Data,SEQ=3”を受信すると、計時中タイムアウト時間（１２−４）に加算量５を加算して計時中タイムアウト時間を１３とする。
【００６９】
そして、送信装置Ｔｎは、さらに時間５が経って経過時間１２となった時にＡＣＫパケット“ACK SEQ=8”を受信し、このＡＣＫパケット“ACK SEQ=8”のＡＣＫ番号が４以上であることからタイムアウト時間制御の処理を終了する。この時、計時中タイムアウト時間は（１３−（１２−７））で残り時間８となっているので、タイムアウト再送は発生しない。すなわち、始めに設定したタイムアウト時間１０は、ＡＣＫパケット“ACK SEQ=8”の受信（経過時間１２）以前に既に経過しているが、送信装置Ｔｎにおいては、Duplicate ＡＣＫパケットが返る度にタイムアウト時間を一定量増加させているので、Fast Retransmitの発生から完了に至るまで計時中のタイムアウト時間がタイムアウトしない。これにより、送信装置Ｔｎは、Fast Retransmit再送をした場合に重複する不用なタイムアウト再送をすることなく、受信装置Ｒｎとのデータパケット送受信を行うことができる。なお、図１０では省略したが、送信装置Ｔｎは、データパケット“Data,SEQ=5”〜“Data,SEQ=8”、及びFast Retransmit再送以後ＡＣＫパケット“ACK SEQ=8”受信前に送信したデータパケットについても、それぞれ上記同様のタイムアウト時間の調整を行っており、それらのデータパケットについても不用なタイムアウト再送を防止している。
【００７０】
以上のような他のタイムアウト調整アルゴリズムＡ及びＢによれば、タイムアウト時間を増加させる量が若干多くなっているが、Fast Retransmit再送が実際にあった場合に、その再送データパケット等のUnＡＣＫedデータパケットのみを対象としてタイムアウト時間を修正しているので、再送効率を高め、無駄な通信を行うことを防止することができ、ＴＣＰスループットの向上を図ることができる。
【図面の簡単な説明】
【００７１】
【図１】本発明の一実施形態によるデータ送信装置である送信装置Ｔｎを備えた通信システムの構成を示した図である。
【図２】送信装置ｔｎと受信装置Ｒｎの間におけるFast Retransmitを伴うデータパケットの送受信シーケンスを示した図である。
【図３】送信装置ｔｎと受信装置Ｒｎの間におけるタイムアウト再送を伴うデータパケットの送受信シーケンスを示した図である。
【図４】Fast Retransmitとタイムアウト再送があったときのcwndの変動を示した図である。
【図５】重複した再送が発生しているデータパケットの送受信シーケンス例を示した図である。
【図６】送信装置Ｔｎのタイムアウト調整アルゴリズムの適用範囲例を表した図である。
【図７】送信装置Ｔｎが実行するタイムアウト時間制御の処理手順を示したフローチャートである。
【図８】図７のタイムアウト時間制御を実施した場合の送信装置Ｔｎと受信装置Ｒｎによるデータパケットの送受信シーケンス例を示した図である。
【図９】他のタイムアウト調整アルゴリズムＡによるタイムアウト時間制御を実施した場合の送信装置Ｔｎと受信装置Ｒｎによるデータパケットの送受信シーケンス例を示した図である。
【図１０】他のタイムアウト調整アルゴリズムＢによるタイムアウト時間制御を実施した場合の送信装置Ｔｎと受信装置Ｒｎによるデータパケットの送受信シーケンス例を示した図である。
【符号の説明】
【００７２】
Ｔｎ  送信装置
ＮＷ  通信網
Ｒｎ  受信装置
【図１】
2008283523.tif 000003
【図２】
2008283523.tif 000004
【図３】
2008283523.tif 000005
【図４】
2008283523.tif 000006
【図５】
2008283523.tif 000007
【図６】
2008283523.tif 000008
【図７】
2008283523.tif 000009
【図８】
2008283523.tif 000010
【図９】
2008283523.tif 000011
【図１０】
2008283523.tif 000012