【国等の委託研究の成果に係る記載事項】(出願人による申告)平成22年度、総務省「光空間通信技術の研究開発」委託研究、産業技術力強化法第19条の適用を受ける特許出願
【文献】
Jiwei Chen,et al.,TCP with delayed ack for wireless networks,[online],2008年,p.1098-1116,URL,http://202.41.85.117/~apcs/acn/2009/TCP-delack.pdf
【文献】
三好 昌弘、他,無線端末におけるTCPの性能向上に関する検討,電子情報通信学会技術研究報告. RCS, 無線通信システム 100(664),2001年 3月,p.137-142,RCS2000-265
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための最良の形態】
【0015】
以下では、本発明を適用した具体的な実施の形態について、図面を参照して詳細に説明する。
【0016】
<本発明の第一の実施形態>
図1は、本発明の第一の実施形態に係る通信システム50の構成例を示す図である。
【0017】
通信システム50は、ネットワーク30を介して互いに接続される、データ送信端末10とデータ受信端末20とを含む。データ送信端末10とデータ受信端末20とは、例えばTCPコネクション40を利用してデータを送受信する。
【0018】
データ送信端末10は、データを送信する機器である。また、データ受信端末20は、データ送信端末10から送信されたデータを受信する機器である。データ受信端末20は、データを受信すると、前記データに対する確認応答(ACK)を、データ送信端末に対して送信する。
【0019】
ここで、データ送信端末10は、例えば、TCP/IP(transmission control protocol/internet protocol)の動作に従うものであり、タイムアウトによる再送制御を行うものとする。
【0020】
タイムアウトによる再送制御について、
図2のシーケンス図を用いて説明する。
図2に示されるように、データ送信端末は、送信したデータに対するACKをタイムアウト時間内に受信しないと、該データを再送する。
図2の例では、データ送信端末10が送信したデータ2が送信経路上でエラーにより消失した場合を示している。この場合、データ受信端末20は、データ2を受信できないので、ACK2を返信することができない。よって、データ送信端末10は、タイムアウト時間内にACK2を受信できないので、データ2を再送する。また、
図2の例では図示されていないが、データ送信端末2が送信したデータ2はデータ受信端末20に到達したが、データ受信端末20が返信したACK2が伝送経路上で消失する場合もある。この場合も、同様に、データ送信端末10は、タイムアウト時間内にACK2を受信できないので、データ2を再送する。タイムアウト時間は、例えば、TCP/IPにおいて、データ送信端末がデータを再送する間隔である。
【0021】
また、タイムアウト時間は、例えば、TCP/IPにおいて、データ送信端末における送信データ量の低下の判断にも用いられる。すなわち、データ送信端末は、データを送信してからタイムアウト時間内に該データに対するACKを受信しないと、送信するデータの量を減らす。なお、例えば、TCP/IPでは、タイムアウト時間は、プロトコルとして決められているわけではなく、どのように設定してもよい。
【0022】
続いて、
図3を用いて、本発明の第一の実施形態におけるデータ受信端末20の構成例を説明する。
図3に示されるとおり、データ受信端末20は、受信側入出力処理部200を有する。また、データ受信端末20は、受信側TCP処理部201を有する。
【0023】
受信側入出力処理部200は、データやACKの送受信を行う。例えば、受信側入出力部200は、データ送信端末20が送信したデータを受信する。また、受信側入出力部200は、データの受信に応じて、データ送信端末20に対して、ACKを送信する。
【0024】
受信側TCP処理部201は、データ送信端末に対してACKを送信してから所定の時間内に該データ送信端末から新たなデータを受信したか否かに基づいて、ACKの再送の要否を判定する。
【0025】
具体的には、受信側TCP処理部201は、所定の時間内にデータ送信端末から新たなデータを受信しないことに基づいて、ACKの再送が必要と判定する。そして、受信側TCP処理部201は、データ送信側装置に対して、受信側入出力部200を介してACKを再送する。
【0026】
一方、受信側TCP処理部201は、所定の時間内にデータ送信端末から新たなデータを受信したことに基づいて、ACKの再送は不要と判定する。そして、受信側入出力部200は、新たなデータに対するACKをデータ送信端末10に送信する。
【0027】
所定の時間としては、例えば、TCPで実装されるタイマ機構のFast Timerで使用される50msが用いられる。しかし、所定の時間は固定値である必要はなく、どのように定められても良い。
【0028】
ここで、データ送信端末10がタイムアウトによる再送制御を行う場合、データ受信端末は、所定の時間を、例えば、データ送信端末10におけるタイムアウト時間よりも短く設定してもよい。所定の時間がタイムアウト時間よりも短いと、データ受信端末20は、タイムアウト時間の経過前にACKを再送することができる。
【0029】
したがって、ACKがネットワークで消失しても、データ送信端末10は再送されるACKをタイムアウト時間内に受け取ることができる。よって、データ受信端末20を備えた通信システム50は、不必要なデータの再送を回避でき、送信データ量を維持できる。
【0030】
続いて、本発明の第一の実施形態によるデータ送信端末10とデータ受信端末20による通信手順の一例について、
図4及び
図5を用いて説明する。なお、特に記載しない部分については、例えば、TCP/IPの通信動作に従うものとする。
【0031】
図4は、データ送信端末10とデータ受信端末20と間の、データトランザクションの一例を示すシーケンス図である。
図4の例では、データ送信端末10は、例えばTCP/IPに基づいて、タイムアウトによる再送制御を行っている。
【0032】
図4の例では、データ送信端末10が、データ1を、データ受信端末20へ送信する。データ1を受信したデータ受信端末20は、データ1に対するACK1をデータ送信端末10に送信する。ここで、
図4の例では、ACK1が、ネットワークにおいて消失し、データ送信端末10に到達していない。データ送信端末10は、ACK1を受信しないので、データ2を送信しない。そのため、データ受信端末20は、所定の時間内にデータ送信端末から新たなデータを受信しないことに基づいて、ACK1の再送が必要と判定し、ACK1を再送する。その結果、データ送信端末10は、該再送されたACK1受信し、受信したACK1に応じてデータ2を送信する。なお、
図4には示していないが、データ受信端末20は、ACK1を再送した際に、ACKの再送要否を判断する所定の時間の計測を開始してよい。
【0033】
データ2を受信したデータ受信端末20は、データ2に対するACK2をデータ送信端末10に送信する。ここで、
図4の例では、ACK2はネットワークで消失せず、データ送信端末に到達している。データ受信端末10は、ACK2を受信したことに応じて、データ3を送信する。データ受信端末20は、データ送信端末10から送信されるデータ3を、ACK2を送信してから所定の時間内に受信する。そのため、データ受信端末20は、ACK2の再送は必要ないと判定し、データ3に対するACK3を送信する。
【0034】
図5は、データ送信端末10とデータ受信端末20と間の、データトランザクションの他の一例を示すシーケンス図である。
図5は、
図4の例において、データ受信端末20から再送されたACK1がネットワークにおいて消失した場合の例である。
【0035】
データ受信端末20は、ACK1を再送してから所定の時間内にデータ送信端末から新たなデータを受信しないことに基づいて、再度ACK1の再送が必要と判定し、更にACK1を再送する。その結果、データ送信端末10は、再度再送されたACK1を受信し、受信したACK1に応じてデータ2を送信する。
【0036】
次に、本発明の第一の実施形態による、データ送信端末10の動作例を説明する。
図6は、データ送信端末10の動作手順の一例を示すフローチャートである。
【0037】
図6に示されるとおり、データ送信端末10は、送信されるべきデータが発生した場合に、データ受信端末20にコネクション開始要求を送信し、コネクションを開始する(S100)。
【0038】
ステップ101(S101)において、データ送信端末10は、データ受信端末20へデータを送信する。
【0039】
ステップ102(S102)において、データ送信端末10は、データ受信端末20へ送信すべき一連のデータの送信が完了したか否かを判断する。一連のデータとは、例えば、シーケンス番号が1から10のデータである(例えば、データ1からデータ10)。この例の場合、データ送信端末10は、データ1からデータ10まで送信が完了した否かを判断する。
【0040】
データ送信端末10は、データの送信が完了した場合には、ステップ103(S103)の手順に進み、データ受信端末20にコネクション切断要求を送信し、コネクションを切断する。
【0041】
一方、データの送信が完了していない場合、データ送信端末10はステップ104(S104)の手順に進み、データの再送要否を判定する。
【0042】
データ送信端末10は、データの再送条件を満たすか否かを判定する(S104)。データ再送の条件には、例えば、“タイムアウト”がある。データ送信端末10は、データを送信してからタイムアウト時間内に該データに対するACKを受信するか否かを判定する。
【0043】
データ送信端末10は、ACKをタイムアウト時間内に受信した場合、新たなデータを送信する(S105)。
【0044】
また、データ送信端末10は、ACKをタイムアウト時間内に受信しなかった場合、データを再送する(S106)。データを再送した場合、データ送信端末10は、再度、データ再送条件を満たすか否かを判定する。
【0045】
続いて、本発明の第一の実施形態による、データ受信端末20の動作例を説明する。
図7は、データ受信端末20の動作手順の一例を示すフローチャートである。
【0046】
図7に示されるとおり、データ受信端末20は、データ送信端末10からのコネクション開始要求を受信し、コネクションを開始する(S200)。
【0047】
ステップ201(S201)において、データ受信端末20は、受信したデータに対するACKを送信する。
【0048】
ステップ202(S202)において、データ受信端末20は、データ送信端末10から受信したデータが、コネクション切断(FIN)を示すデータか否かを判定する。
【0049】
データ受信端末20は、データ送信端末10から受信したデータがコネクション切断(FIN)であると判定されると、ステップ203(S203)の手順に進む。そして、データ受信端末20は、コネクション切断の応答(FIN/ACK)を送信し、コネクションを切断する。
【0050】
一方、データ受信端末20は、データ送信端末10から受信したデータが、コネクション切断を示すデータでないと判定されると、ステップ204(S204)の手順に進む。そしてデータ受信端末20は、ACKを送信してから所定の時間内にデータ送信端末10から新たなデータを受信したか否かを判定する。
【0051】
新たなデータが所定の時間内に受信された場合には、データ受信端末20は、ステップ201(S201)の手順に戻る。
【0052】
一方、新たなデータが所定の時間内に受信されない場合には、データ受信端末20は、ステップ205(S205)においてACKを再送し、ステップ204の手順に戻る。
【0053】
上記の通り、本発明の第一の実施形態では、データ受信端末20は、所定の時間内に新たなデータを受信しない場合にACKを再送する。このため、ACKがネットワーク中で消滅した場合であっても、データ送信端末10に再送されたACKが届くことによって、データが不必要に再送されることを防止できる。また、データ送信端末10は、再送されたACKを受信することから、送信するデータ量を減少することなくデータ通信を継続できる。
【0054】
<本発明の第二の実施形態>
本発明の第二の実施形態は、データ受信端末20の受信側TCP処理部201が、最大データサイズやRTTを用いて所定の時間を算定する場合の実施形態である。
【0055】
本発明の第二の実施形態の構成は、例えば、
図1に示された第一の実施形態に係る通信システム50の構成と同様である。
【0056】
図8は、第二の実施形態におけるデータ送信端末10の構成例を示す図である。
図8に示すとおり、データ送信端末10は、データやACKの送受信を行う送信側入出力処理部100を有する。また、データ送信端末10は、送信側TCP処理部101を有する。また、データ送信端末10は、送信するデータを生成する送信側アプリケーション部102を有する。
【0057】
送信側入出力処理部100は、データやACKの送受信を行う。例えば、送信側入出力部100は、データ受信端末20に対して、データを送信する。また、送信側入出力部100は、データ受信端末20が送信したACKを受信する。
【0058】
送信側TCP処理部101は、送信側アプリケーション部102から受け取ったデータをセグメント化し、送信レートの制御を行う。また、ACKによる到達確認や、シーケンス番号によるデータの送信順序の制御を行い、データに対してTCPコネクションを用いた信頼性のある通信を実現するための処理を行う。
【0059】
図9は、第二の実施形態におけるデータ受信端末20の構成例を示す図である。
図9に示すとおり、データ受信端末20は、第一の実施形態と同様に、受信側入出力処理部200と受信側TCP処理部201とを有する。また、データ受信端末20は、データ送信端末10から送信されたデータを受け取る受信側アプリケーション部202を有する。
【0060】
受信側TCP処理部201は、受信したデータに対してACKを返答するACK返答部2010を含む。また、受信側TCP処理部201は、受信したデータに対するACKの再送を制御するACK再送部2011を含む。また、受信側TCP処理部201は、データに対して処理を行うデータ処理部2012を含む。また、受信側TCP処理部201は、過去に受信されたデータと過去に送信されたACKとを記憶する記憶部2013を含む。さらに、受信側TCP処理部201は、データ受信端末20がACKを送信することに応じて起動される再送タイマ2014を含む。
【0061】
再送タイマ2014は、ACKが送信されてからの経過時間を計測する。再送タイマ2014は、データ受信端末20がデータ送信端末10から新たなデータを受信した場合、経過時間の計測を停止する。
【0062】
ACK再送部2011は、データ送信端末10から新たなデータを受信せず、再送タイマ2014により計測される経過時間が所定の時間に達した場合に、ACKを再送する。
【0063】
第二の実施形態において、ACK再送部2011は、所定の時間を、例えば次の(1)式で求めることができる。ただし、(1)式で求められる所定の時間はあくまでも例示であって、ACK再送部2011は、所定の時間を、どのように求めてもよい。
【0064】
(所定の時間)=1/{α×(RWIN/最大データサイズ)/RTT} (1)式
(1)式において、RWIN(Receive Window)は、データ受信端末20が、受信可能なデータの量として、データ送信端末10に通知しているウィンドウサイズである。また、RTT(Round Trip Time)は、データ送信端末10が、データを送信してから、データ受信端末20が送信したACKを受信するまでに要する時間である。最大データサイズは、データ送信端末が送信する最大のデータの量である。αは、データの到着時刻の揺らぎを吸収するための係数であり、例えば、α>1である(例えば、αは、整数や小数のいずれでもよい)。
【0065】
なお、(1)式において、RWIN/RTTは、想定される最大のデータ転送速度であり、これを最大データサイズで割ることで、単位時間当たりのデータ転送個数を求めている。そして、単位時間当たりのデータ転送個数の逆数を取ることによって、想定される最大スループットでデータ転送をしている際のデータ到着間隔を求めている。
【0066】
ACK再送部2011は、計測された最大データサイズやRTTを取得し、(1)式を用いてデータの到着間隔を推定する。そして、ACK再送部2011は、ACKを送信してからの経過時間が該データの到着間隔(すなわち、所定の時間)に達した場合に、ACKの再送を行う。ACK再送部2011は、データ送信端末とデータ受信端末との間で過去に送受信されたデータやACKの履歴を用いて、RTTを計算してもよい。この場合において、ACK再送部2011は、記憶部2013を参照して、データ受信端末20が過去に送受信したデータとACKとの履歴を確認する。
【0067】
ACKが再送された場合、再送タイマ2014は、経過時間の計測を停止する。その上で、再送タイマ2014は、ACKを再送してからの経過時間の計測を開始する。そして、データ受信端末20は、ACKを再送してからの経過時間が第二の所定の時間に達した場合に、もう一度ACKを再送する。データ受信端末20は、ACKの再送時に第二の所定の時間を必ずしも用いる必要はなく、ACKを再送した際に、式(1)で計算される所定の時間を用いてもよい。
【0068】
第二の所定の時間は、例えば、(1)式で求められる所定の時間のβ倍の時間とする。βは、例えば、β>1である(例えば、βは、整数や小数のいずれでもよい。)。また、第二の所定の時間は、(1)式で求められる所定の時間とおなじ時間にしてもよい。
【0069】
データ受信端末20が第二の所定の時間経過後にもう一度ACKを再送する場合、所定の時間と第二の所定の時間との合計時間は、データ送信端末10におけるタイムアウト時間よりも短く設定してもよい。このように設定することにより、ACK及び再送されたACKのいずれもがネットワークで消失しても、データ送信端末10は、もう一度再送されるACKをタイムアウト時間内に受け取ることができる。
【0070】
このようにして、データ受信端末20は、データ又は新たなデータが到着するまでACKの再送を繰り返す。
【0071】
なお、上記の例では、ACKが再送された場合に再送タイマ2014は経過時間の計測を停止するが、経過時間を計測し続けてもよい。その場合には、データ受信端末20は、ACKを再送する所定の時間を複数定めておき、所定の時間に達する毎に、ACKを再送する。
【0072】
次に、本発明の第二の実施形態による、データ受信端末20の動作例を説明する。
図10は、データ受信端末20の動作手順の一例を示すフローチャートである。なお、第二の実施形態におけるデータ送信端末10の動作例は、第一の実施形態と同様である。
【0073】
図10に示すとおり、ステップ301(S301)からステップ305(S305)の手順は、第一の実施形態のデータ受信端末の動作手順の一例のステップ201(S201)からステップ205と同様である。
【0074】
データ受信端末20は、ステップ305(S305)において、ACKの再送を行った場合、ステップ306(S306)の手順に進む。ステップ306(S306)では、データ受信端末20は、ACKを再送してから第二の所定の時間内にデータ送信端末10から新たなデータが受信されたか否かを判定する。
【0075】
新たなデータが第二の所定の時間内に受信された場合には、データ受信端末20は、ステップ301(S301)の手順に戻る。
【0076】
一方、新たなデータが所定の時間内に受信されない場合には、データ受信端末20は、ステップ307(S307)において、ACKを再送し、ステップ306の手順に戻る。
【0077】
<本発明の第三の実施形態>
本発明の第三の実施形態は、データ受信端末20が再送するACKに、ACKの再送であることを示す所定のデータ(フラグ)を格納する場合の実施形態である。
【0078】
第三の実施形態では、データ送信端末10は、例えば、TCP/IPの動作に従い、タイムアウトによる再送制御と、重複ACKによる再送制御とが併用される。
【0079】
重複ACKによる再送制御について、
図11のシーケンス図を用いて説明する。
【0080】
上述した
図2の例においては、データ送信端末10は、送信したデータに対するACKを受信したことに応じて、新たなデータを送信する。一方、
図11の例において、データ送信端末10は、例えば、TCP/IPに従い、送信したデータに対するACKの受信の有無に関わらず、データ受信端末20が受信可能なデータの量(ウィンドウサイズ)まで、データを送信する。
図11の例では、データ送信端末10は、ACKの受信の有無に関わらず、データ受信端末に対してデータ1乃至データ5を送信する。なお、データ受信端末20は、例えば、TCP/IPの動作に従い、データ送信端末10に対して、あらかじめ、受信可能なデータの量(ウィンドウサイズ)を通知する。
【0081】
図11の例において、データ受信端末20は、データ1を受信したことに基づいて、ACK1を送信する。
図11の例では、データ2がネットワークで消失し、データ受信端末20はデータ2を受信していない。一方、データ3はネットワークで消失せず、データ受信端末20はデータ3を受信する。この場合、データ受信端末20は、データ2を受信せずにデータ3を受信したことに基づいて、再度、ACK1を送信する。その結果、データ送信端末10は、送信されたACK1(重複ACK1)を受信する。データ受信端末20は、データ2を受信せずにデータ4又はデータ5を受信した場合も、それぞれ同様に、再度、ACK1を送信する。
【0082】
データ送信端末10は、再度送信されたACK1(重複ACK1)を、所定の回数だけ受信すると、例えばTCP/IPでは3回受信すると、データ2がネットワークで消失したと判断し、データ2を再送する。
【0083】
このように、データ送信端末10は、重複ACKを所定の回数だけ受信すると、例えばTCP/IPでは3回受信すると、データが消失した(データロス)と判定して、データを再送する。また、データ送信端末10は、重複ACKを所定の回数(例えばTCP/IPでは3回)受信すると、データの送信量を減らす。
【0084】
ここで、例えば、TCP/IPにおいて、データ送信端末10は、コネクション開始直後にデータの送信速度を制限し、送信するデータの量を減らす。
【0085】
図11の例には図示されていないが、データ送信端末10は、タイムアウト時間を用いて再送制御をしてもよい。この場合、データ送信端末10が、ウィンドウサイズに基づいてデータを送信(
図11の例では、データ1からデータ5)しているが、それらのデータ(データ1からデータ5)の各々に対応するACK(ACK1からACK5)を、タイムアウト時間内に受信できなかった場合、データ送信端末10は、データ(データ1からデータ5)を再送する。また、データ送信端末10は、タイムアウト時間内に送信したデータ(データ1からデータ5)の各々に対応するACK(ACK1からACK5)を受信しない場合に、データの送信速度を制限し、送信するデータの量を減らす。
【0086】
データ送信端末10がデータの送信速度を制限すると、
図12に示すように、データ送信端末10によるデータの送信間隔が長くなる。この場合おいて、データ受信端末20は、ACK1を送信してから所定の時間内に新たなデータを受信しないことに基づいて、ACK1の再送が必要と判定し、ACK1を再送する。
図12の例では、データ受信端末20は、ACK1の再送を複数回行っている。
【0087】
図12の例において、データ送信端末10が重複ACKによる再送制御を行う場合、データ送信端末10は、ACK1を所定の回数(例えば、TCP/IPでは3回)だけ受信すると、重複ACK1を所定の回数だけ受信したと判断する。そして、データ送信端末10は、データの消失が生じていないにも関わらず、データを再送する。また、データ送信端末10は、データ送信速度を制限して、送信データ量をさらに減らしてしまう。
【0088】
本発明の第三の実施形態では、上記のような問題を解消するため、データ受信端末20が再送するACKに、ACKの再送であることを示す所定のデータを格納する。データ送信端末10は、所定のデータが格納されたACKを、重複ACKと判定しない。また、データ送信端末10は、所定のデータが格納されたACKを受信したことに応じて、新たなデータを送信する。このように構成することで、データ送信端末10は、データの再送や送信データ量を減少させない。
【0089】
第三の実施形態において、データ受信端末20の受信側TCP処理部201に含まれるACK再送部2011は、ACKを再送する際に、再送するACKに所定のデータを格納する。
【0090】
データ送信端末10は、所定のデータが格納されたACKを受信すると、ACKであると認識するとともに、例えばデータパケットであると認識する。したがって、データ送信端末10が、所定のデータが格納されたACKを所定の回数受信した場合(例えば3回)であっても、重複ACKを所定の回数受信したとは判定せず、データの再送を行わない。
【0091】
ここで、ACKの再送であることを示す所定のデータは、例えば帯域外(OOB:Out Of Band)データである。帯域外データは、所定のフラグを有するデータであり、通常のデータと区別することができるデータである。そのため、データ送信端末10は、帯域外データを格納しているACKを、通常のACKとは異なるものと判定できる。なお、ACKの再送であることを示す所定のデータは帯域外データに限られず、データ送信端末10が、ACKの再送であることを認識できればどの様なデータであってもよい。
【0092】
図13は、第三の実施形態における、データ送信端末10の構成例を示す図である。なお、データ受信端末20の構成例は、例えば、第二の実施形態と同様である。
【0093】
図13に示されるとおり、データ送信端末10の送信側TCP処理部101は、ACK再送判定部1010を含む。なお、ACK再送判定部1010以外の構成は、例えば、第二の実施形態と同様である。ACK再送判定部1010は、データ受信端末20から受信したACKが、データロスを示す重複ACKなのか、再送されたACKなのかを判定する。
【0094】
具体的には、ACK再送判定部1010は、受信したACK内に、再送されたACKであることを示す所定のデータが格納されているか否かを判定する。所定のデータが格納されていない場合には、ACK再送判定部1010は、データロスを示す重複ACKと判定する。
【0095】
一方、受信したACK内に所定のデータが格納されていると判定された場合には、データ送信端末10は、再送されたACKであると判定し、新たなデータをデータ受信端末に送信する。
【0096】
次に、本発明の第三の実施形態によるデータ送信端末10とデータ受信端末20による通信手順の一例を、
図14を用いて説明する。なお、特に記載しない部分については、例えば、TCP/IPの通信動作に従うものとする。
【0097】
図14の例では、データ送信端末10は、ACKの受信の有無に関わらず、ウィンドウサイズにあわせて、データ1とデータ2を送信する。
図14の例では、データ送信端末10は、データ送信速度を制限しており、データの送信間隔が長い。
図14の例では、データ送信端末10のデータの送信間隔は、データ受信端末が計測する所定の時間よりも長い。データ受信端末20は、データ1を受信したことに応じて、ACK1を送信する。データ受信端末20は、ACK1を送信してから所定の時間経過後に、ACK1の再送であることを示す所定のデータを格納したACK1(再送ACK1)をデータ送信端末10に送信する。
図14の例では、データ受信端末20は、新しいデータ(データ2)を受信するまで、所定の時間が経過するごとに、所定のデータを格納したACK1(再送ACK1)を送信する。
【0098】
図14の例において、データ送信端末10は、所定のデータを格納したACK1(再送ACK1)を所定の回数(例えばTCP/IPでは3回)受信しているが、重複ACKを所定の回数受信したとは判定しないため、新しいデータ(データ3)をデータ受信端末20に送信する。
【0099】
続いて、第三の実施形態における、データ送信端末10の動作例を説明する。
図15は、データ送信端末10の動作手順の一例を示すフローチャートである。なお、データ受信端末20の動作例は、例えば、第一の実施形態と同様である。
【0100】
第三の実施形態において、ステップ400(S400)〜ステップ403(S403)の手順は、第一の実施形態のデータ送信端末10のステップ100(S100)〜ステップ103(S103)と同様の手順である。
【0101】
ステップ404(S404)において、データ送信端末10は、データの再送要否を判定する。
【0102】
データ送信端末10は、データの再送条件を満たすか否かを判定する(S404)。データ再送の条件には、例えば、“タイムアウト”がある。第三の実施形態において、データ送信端末10は、ウィンドウサイズに基づくデータ(例えば、
図11の例ではデータ1からデータ5)を送信してからタイムアウト時間内に、それらのデータの各々に対応するACK又は再送ACKを受信するか否かを判定する。
【0103】
データ送信端末10は、ウィンドウサイズに基づくデータの各々に対応するACK又は再送ACKをタイムアウト時間内に受信した場合、ウィンドウサイズに基づく新たなデータを送信する(S405)。
【0104】
また、データ送信端末10は、ウィンドウサイズに基づくデータの各々に対応するACK又は再送ACKをタイムアウト時間内に受信しなかった場合、そのデータを再送する(S406)。データを再送した場合、データ送信端末10は、再度、データ再送条件を満たすか否かを判定する。
【0105】
<本発明の第四の実施形態>
本発明の第四の実施形態は、所定の時間が、データ送信端末10のデータ送信間隔に応じて設定される例である。
【0106】
図12に示されるように、データ送信端末10がデータを送信する時間の間隔よりも、データ受信端末20がACKの再送の要否判定に用いる所定の時間が短いと、データ受信端末20がACKを再送してしまう。そのため、データ送信端末10が重複ACKによるデータの再送制御を行うと、データ送信端末10が本来は必要のないデータ再送を行う場合がある。また、データ送信端末10は、本来は必要ないにも関わらず、データの送信量を減らしてしまう場合がある。
【0107】
本発明の第四の実施形態は、上記の問題を解決するため、データ受信端末20は、所定の時間を、データ送信端末10がデータを送信する時間の間隔よりも長く設定する。このように構成することで、データ受信端末20がACKを再送する回数を減らし、データ送信端末10が、データの再送や送信データ量を減少させることを回避することができる。
【0108】
本発明の第四の実施形態におけるデータ送信端末10及びデータ受信端末20の構成例は、例えば、本発明の第二の実施形態と同様である。
【0109】
第四の実施形態において、ACK再送部2011は、所定の時間を、データ送信端末10がデータを送信する時間の間隔よりも長く設定する。ACK再送部2011は、例えば、データ受信端末20がデータ送信端末10に受信可能なデータの量として通知しているウィンドウサイズや、データ送信端末10がデータを送信する送信速度から、データ送信端末10がデータを送信する時間の間隔を推定する。そして、ACK再送部2011は、所定の時間を、推定したデータ送信の時間の間隔よりも長く設定する。
【0110】
次に、本発明の第四の実施形態によるデータ送信端末10とデータ受信端末20による通信手順の一例を、
図16を用いて説明する。なお、特に記載しない部分については、例えば、TCP/IPの通信動作に従うものとする。
【0111】
図16の例では、データ送信端末10が、ACKの受信の有無に関わらず、ウィンドウサイズにあわせて、データ1乃至データ3を送信する。第四の実施形態において、所定の時間は、データ送信端末10がデータを送信する時間の間隔よりも長い。そのため、データ受信端末20は、例えば、ACK1を送信してから所定の時間内にデータ2を受信し、ACK1の再送を行わない。したがって、データ送信端末10は、ACK1を所定の回数(TCP/IPでは3回)受信しないため、データ2の再送を行わない。
【0112】
本発明の第四の実施形態におけるデータ送信端末10及びデータ受信端末20の動作例は、例えば、本発明の第二の実施形態と同様である。
【0113】
<本発明の第五の実施形態>
本発明の第五の実施形態では、データ送信端末10が、ACKを受信したことに応じて、ACKを受信したことを示すACK受信通知を、データ受信端末20に対して送信する。また、本発明の第五の実施形態は、データ受信端末20は、例えば、ACKを送信してから所定の時間内にデータ送信端末10からACK受信通知を受信したか否かに基づいて、確認応答の再送の要否を判定する。
【0114】
図17において、データ送信端末10は、ACKの受信の有無に関わらず、ウィンドウサイズにあわせて、データ1乃至データ3を送信する。ここで、
図17の例では、ACK2が、ネットワークで消失しているものとする。したがって、データ送信端末10は、データ2に対するACK2を受信しない。一方、データ受信端末20は、ACK2を送信してから所定の時間内にデータ3を受信するため、ACK2の再送は行わない。
図17において、データ送信端末10がタイムアウトによる再送制御を行う場合、データ2は消失していないにも関わらず、データ送信端末10は、タイムアウト時間内にACK2を受信しないため、データ2を再送してしまう。また、データ送信端末10は、タイムアウト時間内にACK2を受信しないことに応じて、送信データ量を減少させてしまう。
【0115】
本発明の第五の実施形態では、上記のような問題を解消するため、データ送信端末10は、ACKを受信したことに応じて、ACK確認通知を送信する。したがって、データ受信端末20は、ACK受信通知の受信の有無により、データ送信端末10がACKを受信したか否かを判定できる。また、データ受信端末20は、ACKを送信してから所定の時間内に、送信したACKに対するACK受信通知を受信しないことに基づいて、ACKがネットワークで消失したと判断し、ACKを再送する。したがって、データ送信端末10は、データ受信端末20が再送したACKをタイムアウト時間内に受信でき、データの再送や送信データ量を減少させない。
【0116】
図18は、第五の実施形態における、データ送信端末10の構成例を示す図である。
図18に示すとおり、データ送信端末10の送信側TCP処理部101は、ACKの受信に応じて、ACK受信通知を送信するACK受信通知部1011を有する。なお、データ送信端末10のACK受信通知部1011以外の構成例は、例えば、第三の実施形態と同様である。
【0117】
ACK受信通知部1011は、ACKの受信に応じて、データ受信端末20に対して、ACKを受信したことを示すACK受信通知を送信する。
【0118】
第五の実施形態において、データ受信端末20の構成例は、例えば、第二の実施形態と同様である。
【0119】
第五の実施形態において、データ受信端末20は、送信したACKそれぞれに対して、ACKの再送条件を満たすか否かを判定する。
【0120】
第五の実施形態において、データ受信端末20の再送タイマ2014は、ACKを送信してからの経過時間を、送信したACKそれぞれに対して計測する。ACK再送部2011は、送信したACKそれぞれに対応するACK受信通知が所定の時間内に受信できたか否かを判定する。そして、ACK再送部2011は、ACK受信通知が所定の時間内に受信できなかった場合、該当するACKを再送する。
【0121】
次に、本発明の第五の実施形態によるデータ送信端末10とデータ受信端末20による通信手順の一例を、
図19を用いて説明する。なお、特に記載しない部分については、例えば、一般的なTCP/IPの通信動作に従うものとする。
【0122】
図19の例では、データ送信端末10が、ACKの受信の有無に関わらず、ウィンドウサイズにあわせて、データ1乃至データ3を送信する。データ1乃至データ3を受信したデータ受信端末20は、それぞれのデータに対するACK(ACK1乃至ACK3)をデータ送信端末に送信する。データ送信端末10は、ACKの受信に応じて、ACK受信通知をデータ受信端末20に送信する。例えば、データ送信端末10は、ACK1の受信に応じて、ACK受信通知1を送信する。
【0123】
図19の例において、データ受信端末20は、ACK1を送信してから所定の時間内にACK受信通知1を受信している。そのため、データ受信端末20は、ACK1の再送は必要ないと判定する。また、
図19の例では、データ受信端末20は、ACK3を送信してから所定の時間内にACK受信通知3を受信している。そのため、データ受信端末20は、ACK3の再送は必要ないと判定する。
【0124】
一方、
図19の例では、ACK2が、ネットワークにおいて消失している。そのため、データ送信端末10は、ACK2を受信せず、ACK2に対するACK受信通知2を送信しない。したがって、データ受信端末20は、所定の時間内に、データ送信端末からACK受信通知2を受信しない。そして、データ受信端末20は、該所定の時間内にACK受信通知2を受信しないことに基づいて、ACK2の再送が必要と判定し、ACK2を再送する。その結果、データ送信端末10は、タイムアウト時間内に再送されたACK2を含め、データ1乃至3のそれぞれに対応する全てのACK(ACK1乃至3)を受信したので、ウィンドウサイズに基づくデータ(データ1乃至3)の再送は行わない。
【0125】
続いて、本発明の第五の実施形態による、データ送信端末10の動作例を説明する。
図20は、本発明の第五の実施形態における、データ送信端末10の動作手順の一例を示すフローチャートである。
【0126】
第五の実施形態において、ステップ500(S500)〜ステップ504(S504)の手順は、第一の実施形態のデータ送信端末10のステップ100(S100)〜ステップ104(S104)の手順と同様である。
【0127】
データ送信端末10は、ウィンドウサイズに基づくデータ(
図19の例ではデータ1乃至3)の各々に対応するACK(ACK1乃至3)の全てをタイムアウト時間内に受信した場合、ウィンドウサイズに基づく新たなデータ(例えば、データ4乃至6)を送信する(S505)。
【0128】
一方、データ送信端末10は、ウィンドウサイズに基づくデータ(
図19の例ではデータ1乃至3)の各々に対応するACK(ACK1乃至3)の全てをタイムアウト時間内に受信しなかった場合、そのデータ(
図19の例ではデータ1乃至3)を再送する(S506)。データを再送した場合、データ送信端末は、再度、データ再送条件を満たすか否かを判定する。
【0129】
続いて、本発明の第五の実施形態による、データ受信端末20の動作例を説明する。
図21は、本発明の第五の実施形態における、データ受信端末20の動作手順の一例を示すフローチャートである。
【0130】
第五の実施形態において、ステップ600(S600)〜ステップ603(S603)の手順は、第一の実施形態のデータ受信端末10ステップ200(S200)〜ステップ203(S203)の手順と同様である。
【0131】
データ受信端末20は、ステップ602(S602)で、コネクション切断を示すデータでないと判定すると、ステップ604(S604)に進み、ACKを送信してから所定の時間内にデータ送信端末10から該ACKに対するACK受信通知を受信したか否かを判定する。
【0132】
データ受信端末20は、送信したACKに対するACK受信通知を所定の時間内に受信した場合には、ステップ601(S601)の手順に戻る。
【0133】
一方、データ受信端末20は、送信したACKに対するACK受信通知を所定の時間内に受信しない場合には、ステップ605(S605)において、ACKを再送し、ステップ604の手順に戻る。
【0134】
本発明の第一乃至第五の実施の形態は、適宜組み合わせることもできる。さらに、本発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【0135】
この出願は、2012年2月21日に出願された日本出願特願2012−035401を基礎とする優先権を主張し、その開示の全てをここに取り込む。