JP2008283523A - データ送信装置、データ送信方法及びデータ送信プログラム - Google Patents

データ送信装置、データ送信方法及びデータ送信プログラム Download PDF

Info

Publication number
JP2008283523A
JP2008283523A JP2007126640A JP2007126640A JP2008283523A JP 2008283523 A JP2008283523 A JP 2008283523A JP 2007126640 A JP2007126640 A JP 2007126640A JP 2007126640 A JP2007126640 A JP 2007126640A JP 2008283523 A JP2008283523 A JP 2008283523A
Authority
JP
Japan
Prior art keywords
time
data packet
data
retransmission
packet
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2007126640A
Other languages
English (en)
Other versions
JP4925916B2 (ja
Inventor
Hiroyuki Shinpo
宏之 新保
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
KDDI Corp
Original Assignee
KDDI Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by KDDI Corp filed Critical KDDI Corp
Priority to JP2007126640A priority Critical patent/JP4925916B2/ja
Publication of JP2008283523A publication Critical patent/JP2008283523A/ja
Application granted granted Critical
Publication of JP4925916B2 publication Critical patent/JP4925916B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

【課題】TCPによる再送制御において、再送要求に対して実際に行われた再送との関連に着目して適切にタイムアウト時間を制御し、不用な再送を防止する。
【解決手段】送信装置Tnと受信装置Rnによる通信網NWを介するデータパケット送受信において、送信装置Tnは、Fast Retransmitによる再送があった場合、その後でDuplicate ACKパケットを受信する度にACKされていないデータパケットのタイムアウト時間を調整する。タイムアウト時間の調整では、その時点におけるタイムアウト時間の最大増加量を計時中のタイムアウト時間に加算する。
【選択図】図8

Description

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

Claims (7)

  1. TCPによるデータパケット送信をするデータ送信装置であって、
    受信側からの再送要求に応じてするデータパケットの再送をしたときに、前記受信側からの受信の確認応答がされていない既送信データパケットにつき、前記受信側との当該再送時におけるデータパケットの送受信状況に基づいて、前記既送信データパケットの時間経過による再送に向けての経過時間の計時を調整する、データ送信装置。
  2. 前記送受信状況に基づいて取得した前記時間経過による再送を行う経過時間の変更指標が示す最大の時間増加量を、同一データパケットの再送要求受信時に前記計時が示す再送までの時間に加えて前記計時を調整する、請求項1記載のデータ送信装置。
  3. 前記時間経過による再送を行う経過時間の最大増加量を前記最大の時間増加量とする、請求項2記載のデータ送信装置。
  4. 同一データパケットの再送要求受信時に前記計時が示す再送までの時間を計時開始当初の時間にリセットして前記計時を調整する、請求項1記載のデータ送信装置。
  5. 同一データパケットの再送要求受信時に前記計時が示す再送までの時間に一定の時間を加えて前記計時を調整する、請求項1記載のデータ送信装置。
  6. TCPによるデータパケット送信をするデータ送信方法であって、
    受信側からの再送要求に応じてするデータパケットの再送をしたときに、前記受信側からの受信の確認応答がされていない既送信データパケットにつき、前記受信側との当該再送時におけるデータパケットの送受信状況に基づいて、前記既送信データパケットの時間経過による再送に向けての経過時間の計時を調整する、データ送信方法。
  7. TCPによるデータパケット送信をするデータ送信プログラムであって、
    受信側からの再送要求に応じてするデータパケットの再送をしたときに、前記受信側からの受信の確認応答がされていない既送信データパケットにつき、前記受信側との当該再送時におけるデータパケットの送受信状況に基づいて、前記既送信データパケットの時間経過による再送に向けての経過時間の計時を調整する機能を、コンピュータに実現させるためのデータ送信プログラム。
JP2007126640A 2007-05-11 2007-05-11 データ送信装置、データ送信方法及びデータ送信プログラム Expired - Fee Related JP4925916B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007126640A JP4925916B2 (ja) 2007-05-11 2007-05-11 データ送信装置、データ送信方法及びデータ送信プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007126640A JP4925916B2 (ja) 2007-05-11 2007-05-11 データ送信装置、データ送信方法及びデータ送信プログラム

Publications (2)

Publication Number Publication Date
JP2008283523A true JP2008283523A (ja) 2008-11-20
JP4925916B2 JP4925916B2 (ja) 2012-05-09

Family

ID=40143958

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007126640A Expired - Fee Related JP4925916B2 (ja) 2007-05-11 2007-05-11 データ送信装置、データ送信方法及びデータ送信プログラム

Country Status (1)

Country Link
JP (1) JP4925916B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015133688A (ja) * 2013-12-11 2015-07-23 パナソニックIpマネジメント株式会社 通信制御装置
US11405148B2 (en) 2017-02-27 2022-08-02 Nec Corporation Communication system, communication device, method, and recording medium of program

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000261496A (ja) * 1999-03-04 2000-09-22 Toshiba Corp 無線通信装置
JP2002330168A (ja) * 2001-05-07 2002-11-15 Nec Corp 通信システムにおける再転送タイムアウト時間の設定方法
JP2004015556A (ja) * 2002-06-07 2004-01-15 Sony Corp 通信方法、通信装置及び通信システム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000261496A (ja) * 1999-03-04 2000-09-22 Toshiba Corp 無線通信装置
JP2002330168A (ja) * 2001-05-07 2002-11-15 Nec Corp 通信システムにおける再転送タイムアウト時間の設定方法
JP2004015556A (ja) * 2002-06-07 2004-01-15 Sony Corp 通信方法、通信装置及び通信システム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015133688A (ja) * 2013-12-11 2015-07-23 パナソニックIpマネジメント株式会社 通信制御装置
US11405148B2 (en) 2017-02-27 2022-08-02 Nec Corporation Communication system, communication device, method, and recording medium of program

Also Published As

Publication number Publication date
JP4925916B2 (ja) 2012-05-09

Similar Documents

Publication Publication Date Title
JP5694993B2 (ja) 通信装置及び通信方法
JP4016387B2 (ja) データフロー制御方法
JP4654926B2 (ja) 通信システム、通信装置及びそれらに用いる輻輳制御方法並びにそのプログラム
JP4021885B2 (ja) 無線通信システムにおいて送信ウィンドウサイズ変更手順を処理するために受信機と送信機とを制御する方法
EP1568180B1 (en) A method for enhancing transmission quality of streaming media
KR100533686B1 (ko) 모바일 애드 혹 네트워크에서의 데이터 전송 방법 및 이를이용한 네트워크 장치
US20080101290A1 (en) Apparatus for Arq Controlling in Wireless Portable Internet System and Method Thereof
US9456377B2 (en) System and method for transmission control protocol service delivery in wireless communications systems
JP2004537218A (ja) Nackベースのプロトコルにおける輻輳制御の信頼性のある効率的な対応方法
WO2014069642A1 (ja) 通信装置、送信データ出力制御方法、及びそのプログラム
US6662330B1 (en) Joint range reject automatic repeat request protocol
JP2008524942A (ja) 重複受信確認を用いたデータフロー制御
CN113014505B (zh) 一种高动态拓扑卫星网络中时延区分的传输控制方法
JP4817077B2 (ja) 無線lan通信システム
JP7067544B2 (ja) 通信システム、通信装置、方法およびプログラム
JP4925916B2 (ja) データ送信装置、データ送信方法及びデータ送信プログラム
WO2017118239A1 (zh) 数据包的无线传输跨层优化方法及装置
JP2002521960A (ja) 通信システムにおけるデータ・パケットの伝達方法および装置
JP5387058B2 (ja) 送信装置、送信レート算出方法及び送信レート算出プログラム
JP3163479B2 (ja) 帯域制御方法
JP2005509370A (ja) 信頼性の低い通信環境における通信効率および性能の改良
JP6011813B2 (ja) 通信装置およびその通信制御方法
JP2000022744A (ja) パケット通信システム、パケット通信装置及びパケット通信方法
JP6145190B1 (ja) 中継装置、中継方法及び中継プログラム
KR20090050125A (ko) 무선 네트워크에서 티시피 성능 향상을 위한 장치 및 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100201

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20100202

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110405

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110527

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110530

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120110

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120207

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150217

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees