JP7067544B2 - 通信システム、通信装置、方法およびプログラム - Google Patents

通信システム、通信装置、方法およびプログラム Download PDF

Info

Publication number
JP7067544B2
JP7067544B2 JP2019501323A JP2019501323A JP7067544B2 JP 7067544 B2 JP7067544 B2 JP 7067544B2 JP 2019501323 A JP2019501323 A JP 2019501323A JP 2019501323 A JP2019501323 A JP 2019501323A JP 7067544 B2 JP7067544 B2 JP 7067544B2
Authority
JP
Japan
Prior art keywords
packet
ack
retransmission
time
data
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.)
Active
Application number
JP2019501323A
Other languages
English (en)
Other versions
JPWO2018155406A1 (ja
Inventor
洋平 長谷川
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Publication of JPWO2018155406A1 publication Critical patent/JPWO2018155406A1/ja
Application granted granted Critical
Publication of JP7067544B2 publication Critical patent/JP7067544B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/188Time-out mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • H04L1/1671Details of the supervisory signal the supervisory signal being transmitted together with control information
    • H04L1/1678Details of the supervisory signal the supervisory signal being transmitted together with control information where the control information is for timing, e.g. time stamps
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • H04L1/1685Details of the supervisory signal the supervisory signal being transmitted in response to a specific request, e.g. to a polling signal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1809Selective-repeat protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1829Arrangements specially adapted for the receiver end
    • H04L1/1858Transmission or retransmission of more than one copy of acknowledgement message
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L5/00Arrangements affording multiple use of the transmission path
    • H04L5/003Arrangements for allocating sub-channels of the transmission path
    • H04L5/0053Allocation of signalling, i.e. of overhead other than pilot signals
    • H04L5/0055Physical resource allocation for ACK/NACK
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L5/00Arrangements affording multiple use of the transmission path
    • H04L5/003Arrangements for allocating sub-channels of the transmission path
    • H04L5/0078Timing of allocation
    • H04L5/0082Timing of allocation at predetermined intervals

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Communication Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Description

本発明は、通信システム、通信装置、方法およびプログラムに関し、特に、TCP(Transmission Control Protocol)による再送制御を用いる通信システム、通信装置、方法およびプログラムに関する。
TCP/IP(Transmission Control Protocol/Internet Protocol)は、インターネット等の通信ネットワークにおいて通信の信頼性を確保できる通信プロトコルとして広く用いられている。そして、TCPは、信頼性の高い通信を行うために、確認応答、再送制御、輻輳回避のための輻輳制御の機能を有している。
TCPが具備する確認応答、再送制御、輻輳制御を以下に概観する。
確認応答は、送信端末が送信したデータパケットに対して、受信端末がその受信を確認したことを示す確認応答(ACK、Acknowledgement)パケットを送信端末に返信する。この確認応答パケットを、以降、ACKパケットとも称する。
送信端末が送信するデータパケットにはシーケンス番号が付与されており、受信端末は、そのデータパケットに対して返信するACKパケットのACK番号を、そのデータパケットに付与されたシーケンス番号と受信したデータサイズで更新する。また、送信端末は、受信したACKパケットが示すACK番号を次に送信するデータパケットのシーケンス番号とする。これにより、受信端末は、次に受信を期待するデータパケットのシーケンス番号をACK番号として送信端末に通知する。そして、送信端末はそのACKパケットを受信することにより、受信端末がどこまでのシーケンス番号のデータパケットを受信したかを把握する。
また、ACKパケットには、フロー制御を行うためのウィンドウサイズが受信端末の受信バッファ容量に応じて設定され、広告ウィンドウとして示される。つまり、データ受信により受信バッファ容量が減少した場合にはウィンドウサイズを小さく設定し、上位アプリケーションによりデータが読み出されて受信バッファ容量が増加した場合にはウィンドウサイズを大きく設定する。
再送制御は、送信したデータパケットが通信ネットワークにおいて消失したことを検出した場合に、送信端末がその送信したデータパケットを再送信する制御である。
送信端末は、ACKパケットの受信状況に応じて、タイムアウト再送と高速再転送の2種類の再送制御を行う。
タイムアウト再送は、送信したデータパケットの受信確認のACKパケットを、送信端末が所定時間待っても受信できなかった場合に、その受信確認がされないデータパケットを再送信するものである。
例えば、送信したデータパケットが通信ネットワークの中で消失した場合、受信端末はACK番号を更新したACKパケットを送信できない。そのため、送信端末は対応するACKパケットを所定時間の間待っても受信できないときは、そのデータが受信端末に到達していないと判断し、最後に受け取ったACK番号で示されるシーケンス番号のデータパケットを再送する。
送信端末は、タイムアウト再送の準備のために、データパケットを送信すると、それに対応するACKパケットの返信を待受けるための再送タイマ(RTO、Retransmission Time Out)を初期時間に設定してタイマスタートする。
再送タイマの設定時間は、短く設定するとデータ転送に遅延が生じた場合に、通信ネットワークでパケットが消失しない場合でも誤再送が行われ、通信効率を悪化させてしまう懸念がある。そのため、再送タイマの設定時間は、通信ネットワークにおけるパケット往復時間RTT(Round Trip Time)に対して十分なマージンを取って設定される。RFC(Request for Comments)による規定では、RTTの変動履歴に4を乗じた値を初期時間としている。
確認応答のACKパケットが受信端末から返ってこないまま再送タイマがタイムアウトすると、確認応答が得られなかったデータパケットを1つだけ受信端末へ再送する。そして、再送タイマが作動するたびに、次の再送タイマの設定時間は2倍ずつ長くなるように規定されている。
高速再転送は、受信端末からの再送要求に応じて再送を行う再送制御である。
送信端末は、受信端末から通知されたウィンドウサイズで許容される数のデータパケットを、ACKパケットを待たずに連続して送信することができる。この場合、受信端末も、まとめて受信したデータパケットに対して、正常に連続受信したシーケンス番号を示した1つのACKパケットを返す。送信端末はこのように遅れて到着するACKパケットを見て正常に受信されたかどうかを判断する。
受信端末は、受信したデータパケットのシーケンス番号に基づいて、シーケンス番号が欠落して受信していないデータパケットがあることを識別すると、欠落したシーケンス番号を送信端末に通知して、対応するデータパケットの再送を要求する。
欠落したシーケンス番号は、直近に正常受信したデータパケットに対して返信したACKパケットと同じACK番号を持つ重複ACKパケットを送信することにより通知する。つまり、重複ACKパケットのACK番号は、直近に受信確認したデータパケットの次に受信を期待しているデータパケットのシーケンス番号であり、それは欠落したシーケンス番号である。
そして、受信端末は、再送を要求したシーケンス番号のデータパケットを受信するまで重複ACKパケットを送信する。つまり、後続して別のシーケンス番号のデータパケットを正常に受信した場合であっても、欠落したシーケンス番号を通知する重複ACKパケットを送信する。
送信側は重複ACKパケットを3回受け取った時点で未着のデータパケットがあることを知る。1回目、2回目の重複ACKパケットで再送しないのは、受信側でデータパケットの到着順序が入れ替わっただけである可能性を考慮している。
再送を要求したシーケンス番号のデータパケットを受信すると、受信装置は、それまで正常受信できているデータパケットの最新のシーケンス番号をACKパケットで送信装置に通知して、以後のデータパケットの送受信が続行される。
また、途中のデータパケットが抜けている場合、受信端末が抜けたデータパケットをSACK(Selective ACK、選択的確認応答)により送信端末に通知する再送制御のオプションもある。送信端末はSACKの内容を見て、抜けている部分のデータパケットだけを送りなおす。
TCPは上記の確認応答と再送制御を行いつつ輻輳回避のための輻輳制御を実施している。輻輳制御は、送信端末において、通信状況によって送信可能なデータ量を増減させるための値であるcwnd(Congestion Window、輻輳ウィンドウ)を用いて行う。cwndは、一回に連続送信を許容するパケット数(ウィンドウサイズ)を示し、当初は小さく設定され、受信端末からACKパケットを受信する毎に少しずつ大きく設定される。
TCPでは、パケットロスが発生した場合にそのまま送信を続けるとさらにエラーや輻輳が発生する可能性があることから、cwndを小さく設定することで輻輳回避を図っている。cwndは、タイムアウト再送時に設定されるものと高速再転送時に設定されるものとの2種類がある。
タイムアウト再送が起きるのは、通常、通信ネットワークが非常に輻輳している場合や、重大な故障が発生していると場合と考えられる。そのため、タイムアウト再送が発生した時にはcwndを初期状態にリセットして、送信するパケット数を大きく絞り込む。初期状態は通常は1である。
高速再転送による再送が起きるのは、通信ネットワークが軽度に輻輳しており、受信端末に到着したデータパケットに抜けがあった程度で、複数個のデータパケットが消失するような大きな障害は発生していないと考えられている。そのため、高速再転送による再送があった場合は、cwndを1/2に設定して送信するパケット数を半分に絞り込む。
なお、ウィンドウには、受信端末が持つバッファの空き容量を示し、ACKパケットに書き込んで送信端末に知らせるawnd(Advertised Window、広告ウィンドウ)がある。また、直近のACKパケットで通知されたawndをrwnd(Receive Window、受信ウィンドウ)と称する。送信端末は、cwndとrwndの小さい方の値を用いてデータ転送の輻輳制御を行う。
上記に概観したTCPの機能に関連して、通信ネットワークでデータを送受信する際にパケットの消失を検出し、消失したパケットデータの再送を送信側の通信装置に要求する技術が特許文献1乃至特許文献5に開示されている。
特許文献1は、オーディオデータおよびビデオデータを符号化したデータストリームをリアルタイムに配送するためのRTP(Real-time Transport Protocol)、RTCP(Real-time Transport Control Protocol)を扱う通信装置に関する。特許文献1は、高速再転送において、欠落したパケットデータが検出できるのは欠落したシーケンス番号の後ろのシーケンス番号を持つパケットデータを受信したタイミングなのでリアルタイム性に欠けるという課題を解決する。
特許文献1は、受信側において所定の時間間隔を計時してパケットデータの再送を要求する技術を開示する。当該技術によれば、パケットデータを前回受信してから所定の時間内に前回受信したパケットデータに続いて受信すべきパケットデータを受信していない場合に、送信元に再送要求NACK(Negative ACK)を送信してパケットデータの再送を要求する。また、再送要求NACKとして、最新に受信したパケットデータのシーケンス番号に「1」を加算した再送要求シーケンス番号を使うとしている。
特許文献2は、高速再転送で受信側から再送要求されてデータパケットを再送信した後、当該再送データパケットに対する確認応答を受信する前にタイムアウトとなった場合に、タイムアウト再送で重複した再送信をしてしまうという課題を解決する。
特許文献2は、このような重複再送を防止するために、送信側で、再送要求に対して実際に行われた再送との関連において、受信確認応答がされていない既送信データパケットについてのタイムアウト時間を増加させる制御を行っている。
特許文献3は、物理伝送媒体が中断し、再び利用可能になった後のTCPコネクションの再開時間を少なくしてTCPデータ伝送プロセスを改善する技術を開示する。特許文献3が開示する技術は、サーバ(送信側)からのデータフローが中断されたことをクライアント(受信側)が検知すると、クライアントは同じACKメッセージを繰り返してサーバに送ることでデータパケットの再送を促すように構成している。当該技術によれば、クライアントはサーバから受信したデータパケットに対するACKを送信した後に、事前設定された時間T1を有するタイマをスタートする。タイマはサーバからデータパケットを受信するとストップする。クライアントは時間T1のタイムアウトにより、サーバからの次のデータパケットが届かないことを検出し、その場合は同じACKメッセージを再送する。このように構成することで、中断していた物理伝送媒体が再び利用可能になった後で、データ転送が中断されたままの時間を短くすることができる。
特許文献4は、送信端末が送信したデータが受信端末に到達し、その確認応答のACKパケットがネットワーク中で消失して送信端末に到達しない場合の対処方法に関する技術を開示する。このような状況になった場合、送信端末でのタイムアウト再送により、本来は必要のないデータまで再送してしまい、ネットワークのスループットを低下させてしまう。また、ACKパケットを受信しないことにより、送信端末は輻輳ウィンドウを縮小してしまい、送信するデータの量を不必要に減少させてしまう。
特許文献4が開示する技術では、受信端末がACKパケットを送信してから所定の時間内に送信端末から新たなデータを受信したか否かに基づいて、ACKパケットの再送の要否を判定する。受信端末は、所定の時間内に送信端末から新たなデータを受信しない場合に、ACKパケットの再送を行う。そのため、受信端末が送信したACKパケットがネットワークで消失しても、送信端末は再送されるACKパケットを再送タイマのタイムアウト時間前に受け取ることができる。
特許文献4が開示する技術では、上記の所定の時間を送信端末の再送タイマのタイムアウト時間よりも短く設定することで、送信端末での再送タイムアウト前にACKを再送することができる。これにより、不要なデータの再送を回避し、送信データ量を維持することができる。
なお、再送するACKパケットには、高速再転送で使用される3つの重複ACKパケットと区別できるように、再送ACKパケットであることを示す所定の情報が付加されている。
さらに、特許文献5は、パケットのロスが検知されたとき、未着パケットの再送を要求するパケットを送信装置に送信する技術を開示する。
特開2005-020590号公報 特開2008-283523号公報 特許第5185955号公報 国際公開第2013/125175号 特開2005-198055号公報
インターネットや無線通信システムにおいては、しばしば通信方向毎の可用性が非対称であり、送信データは消失するものの、逆方向の確認応答(ACK)は到達できる場合がある。つまり、送信端末から受信端末への回線品質が悪くなり、送信したデータパケットが連続して多数消失してしまうが、受信端末から送信端末への回線品質は正常に保たれている環境を想定する。
特許文献1は、受信端末側で未受信のデータパケットがあることを検出して、送信端末にその再送を要求する技術である。
送信端末から受信端末に送信されたデータパケットのうち、最初のデータパケットは受信端末に届くが、それ以降のデータパケットが連続して多数消失してしまう場合を考えてみる。受信端末は最初に受信したデータパケットに対するACKパケットを送信端末に返送する。しかし、最初に受信したデータパケット以降のデータパケットは未受信となる。そのため、受信端末は最初のデータパケットを受信してから許容パケット時間間隔経過後に再送を要求する再送要求NACKを送信端末に返送する。送信端末は再送要求NACKを受信できるので、要求されたデータパケットを再送するが、その再送データパケットも消失してしまう。同じ再送要求NACKを所定の時間間隔で繰り返して送信できるように構成したとしても、再送要求NACKを受信する度に要求された同じデータパケットを再送するだけである。
その後、送信端末から受信端末への回線品質が改善され、送信端末からのデータパケットが受信端末に到達するようになった状況を想定する。送信端末は再送要求NACKで指定されたデータパケットを再送するだけで、受信端末からの再送要求を受けるまで、次のデータパケットを再送できない。特許文献1の技術では、データパケットが連続して多数消失してしまったような場合、どれだけの量のデータが消失したのかということを把握することができない。そのため、回線が回復しても、受信端末からの再送要求を逐次受けてから再送が行われるので、消失したデータパケットを受信端末が受信するまでに時間がかかり、すぐには通信性能を改善することができない。
特許文献2は、送信側で、高速再転送による再送との関連において、受信確認応答がされていない既送信データパケットについてのタイムアウト再送を極力減らす技術である。
送信端末から受信端末に送信された最初のデータパケットは受信端末に届くが、それ以降のデータパケットが連続して多数消失してしまうような場合、受信端末は重複ACKパケットを送信することができない。そのため、特許文献2が開示する技術では、送信端末においてタイムアウト再送が繰り返し行われることになる。そして、回線が回復してもデータ転送のスループットを大きく低下させる。
特許文献3は、物理伝送媒体が中断し、送信側からのデータパケットが届かなくなった場合に、受信側が所定のタイムアウトにより同じACKメッセージを繰り返して送信側に送ることでデータパケットの再送を促すようにした技術である。
受信端末から送信端末への回線品質は正常に保たれていることから、受信端末がタイムアウト毎に送信するACKメッセージは繰返し送信側に送られる。そして、送信端末は再送を促されたデータパケットを繰返し再送する。その後、送信端末から受信端末への回線品質が改善され、送信端末からのデータパケットが受信端末に到達するようになった場合、特許文献1に開示の技術と同様の課題がある。つまり、データパケットが連続して多数消失してしまったような状況下では、回線が回復しても、送信端末は再送を促されたデータパケットを再送するだけである。そのため、消失したデータパケットを受信端末が受信するまでに時間がかかり、すぐには通信性能を改善することができない。
特許文献4は、受信端末がACKパケットを送信してから所定の時間内に送信端末から新たなデータを受信しない場合に、送信端末での再送タイマのタイムアップ前に再送を促す再送ACKパケットを導入した技術である。
この再送ACKパケットは、高速再転送で使用する3つの重複ACKと区別されるようになっている。そのため、受信端末から送信端末への回線品質は正常に保たれている場合には、受信側で送信した再送ACKパケットは送信端末に届き、送信側はそれに伴う再送を繰り返すことになる。その後、送信端末から受信端末への回線品質が改善され、送信端末からのデータパケットが受信端末に到達するようになった場合は、特許文献1や特許文献3に開示の技術と同様の課題がある。つまり、データパケットが連続して多数消失してしまったような状況下では、再送を要求されたデータパケットは再送するものの、どれだけのデータパケットが欠落したのかを知ることができない。そのため、回線が回復しても、送信端末のデータスループットが低下し、すぐには通信性能を改善することができない。
上記を鑑み、本発明は、送信したデータパケットが連続して多数消失してしまう状況になっても、そのような状況が解消した場合に即座に通信性能を改善することができる通信システム、通信装置、再送制御方法およびプログラムを提供する。
上記の目的を実現するために、本発明の一形態である通信システムは、受信したデータパケットの確認応答(ACK、acknowledgement)パケットを送信後、次のデータパケットが到着しないと判断する未着判定時間を設定し、前記未着判定時間内に次のデータパケットが到着しない場合は、当該次のデータパケットの送信を促す再送要求(RACK、retransmission acknowledgement)パケットを前記未着判定時間間隔で繰返し送信する受信端末と、前記ACKパケットを受信した以降に前記RACKパケットを前記受信端末から受信すると、直前に受信した前記ACKパケットまたは直前に受信した前記RACKパケットの時刻情報と今回受信した前記RACKパケットの時刻情報に基づく時間差情報を用いて、前記受信端末に未到達のデータパケットを特定して再送する送信端末と、を含み、前記時刻情報は、前記受信端末が前記ACKパケットおよび前記RACKパケットの送信時にそれぞれ付すタイムスタンプ、または前記送信端末が前記ACKパケットおよび前記RACKパケットの受信時にそれぞれ付すタイムスタンプであることを特徴とする。
また、本発明の別の形態である通信装置は、送信したデータパケットに対して受信側が返信する確認応答(ACK、acknowledgement)パケットを受信した以降に、次のデータパケットが到着しないと判断する未着判定時間間隔で前記受信側が繰返し送信する、次のデータパケットの送信を促す再送要求(RACK、retransmission acknowledgement)パケットを受信すると、直前に受信した前記ACKパケットまたは直前に受信した前記RACKパケットの時刻情報と今回受信した前記RACKパケットの時刻情報に基づく時間差情報を用いて、前記受信側に未到達のデータパケットを特定して再送する再送制御手段を含み、前記時刻情報は、前記受信側が前記ACKパケットおよび前記RACKパケットの送信時にそれぞれ付すタイムスタンプ、または前記再送制御手段が前記ACKパケットおよび前記RACKパケットの受信時にそれぞれ付すタイムスタンプであることを特徴とする。
更に、本発明の別の形態である再送制御方法は、送信したデータパケットに対して受信側が返信する確認応答(ACK、acknowledgement)パケットを受信した以降に、次のデータパケットが到着しないと判断する未着判定時間間隔で前記受信側が繰返し送信する、次のデータパケットの送信を促す再送要求(RACK、retransmission acknowledgement)パケットを受信し、直前に受信した前記ACKパケットまたは直前に受信した前記RACKパケットの時刻情報と、今回受信した前記RACKパケットの時刻情報に基づく時間差情報を用いて、前記受信側に未到達のデータパケットを特定して再送し、前記時刻情報は、前記ACKパケットおよび前記RACKパケットの送信時にそれぞれ付されるタイムスタンプ、または前記ACKパケットおよび前記RACKパケットの受信時にそれぞれ付されるタイムスタンプであることを特徴とする。
また、本発明の別の形態である再送制御プログラムは、コンピュータを、送信したデータパケットに対して受信側が返信する確認応答(ACK、acknowledgement)パケットを受信した以降に、次のデータパケットが到着しないと判断する未着判定時間間隔で前記受信側が繰返し送信する、次のデータパケットの送信を促す再送要求(RACK、retransmission acknowledgement)パケットを受信すると、直前に受信した前記ACKパケットまたは直前に受信した前記RACKパケットの時刻情報と、今回受信した前記RACKパケットの時刻情報に基づく時間差情報を用いて、前記受信側に未到達のデータパケットを特定して再送する再送制御機能手段として機能させ、前記時刻情報は、前記受信側が前記ACKパケットおよび前記RACKパケットの送信時にそれぞれ付すタイムスタンプ、または前記再送制御機能手段が前記ACKパケットおよび前記RACKパケットの受信時にそれぞれ付すタイムスタンプであることを特徴とする。
本発明は、送信したデータパケットが連続して多数消失してしまう状況になっても、そのような状況が解消した場合に即座に通信性能を改善することができる。
本発明の第1の実施形態による通信システムの構成例を示すブロック図である。 本発明の第1の実施形態による通信装置の構成例を示すブロック図である。 本発明の第1の実施形態による再送制御方法の動作例を示すフロー図である。 本発明の第1の実施形態による通信装置のハードウェアの構成例を示すブロック図である。 本発明の第1の実施形態による再送制御プログラムが実現する機能手段の構成例を示すブロック図である。 本発明の第2の実施形態による通信システムの構成例を示すブロック図である。 本発明の第2の実施形態による受信端末としての通信装置の構成例を示すブロック図である。 本発明の第2の実施形態による送信端末としての通信装置の構成例を示すブロック図である。 TCPのタイムアウト再送が行われる例を説明するデータトランザクションを示すシーケンス図である。 特許文献4が開示する技術により再送が行われる例を説明するデータトランザクションを示すシーケンス図である。 本発明の第2の実施形態により再送が行われる例を説明するデータトランザクションを示すシーケンス図である。 本発明の第2の実施形態による受信側の再送要求制御の動作を説明するフロー図である。 本発明の第2の実施形態による送信側の再送制御の動作を説明するフロー図である。
本発明を実施するための形態の概要を説明する。
なお、実施の形態は例示であり、開示のシステム、装置及び方法は、以下の実施の形態の構成には限定されない。また、図に付した参照符号は理解を助けるための一例として便宜上付記したものであり、なんらの限定を意図するものではない。さらに、図面中の矢印の向きは、一例を示すものであり、ブロック間の信号の向きを限定するものではない。
(第1の実施形態)
第1の実施形態を、図1乃至図5を参照して説明する。
図1は、本発明の第1の実施形態による通信システムの構成例を示すブロック図である。
第1の実施形態の通信システム10は、受信端末11と送信端末12を含む構成となっている。
受信端末11と送信端末12は、TCPの通信規格に準拠したデータ伝送が可能な通信網であるネットワーク13上に、TCPコネクションを確立して接続される。ネットワーク13の代表的なネットワークとしてはインターネットが挙げられるが、TCPによるパケットの送受信が可能な通信回線を有する任意のネットワークであってよい。ネットワーク13は、例えば、IP(Internet Protocol)電話網、LAN(Local Area Network)、WAN(Wide Area Network)、衛星通信網、専用線網等であってもよい。
ネットワーク13上には、受信端末11から送信端末12に向かう上りリンクと送信端末12から受信端末11に向かう下りリンクが設定される。送信端末12が送信したデータパケットは下りリンクを通過し、受信端末11が送信した確認応答(ACKパケット)は上りリンクを通過して転送される。
本実施形態では、送信端末12から受信端末11への下りリンクにおいて、例えば外的要因により伝送媒体の回線品質が悪化する等により、転送中のデータパケットが連続して多数消失してしまう状況になり得るケースを考える。
受信端末11は、送信端末12から受信したデータパケットに対するACKパケットを送信する。そして、受信端末11は、ACKパケットを送信すると、次に待受けるデータパケットが到着しないと判断する未着判定時間を設定する。設定した未着判定時間内に次のデータパケットが到着しない場合、受信端末11は当該次のデータパケットの送信を促す再送要求(RACK、retransmission acknowledgement)パケットを送信する。RACKパケットの送信後も次に待受けるデータパケットが到着しないと判断する未着判定時間を設定し、次のデータパケットが到着するまで当該未着判定時間毎にRACKパケットを繰返し送信する。
送信端末12は、ACKパケットを受信した以降にRACKパケットを受信すると再送を行う。送信端末12は、直前に受信したACKパケットまたはRACKパケットの時刻情報と、今回受信した前記RACKパケットの時刻情報に基づく時間差情報を用いて、受信端末11に未到達のデータパケットを特定して再送する。ここで、前記の時刻情報は、受信端末がACKパケットおよびRACKパケットの送信時にそれぞれ付すタイムスタンプ、または送信端末がACKパケットおよびRACKパケットの受信時にそれぞれ付すタイムスタンプである。
RACKパケットは、受信端末11が待ち受ける次のデータパケットが到着するまで、受信端末11から繰返し送信される。そのため、ACKパケットを受信した次にRACKパケットを受信した場合、送信端末12は、ACKパケットと受信したRACKパケットの時間差情報を用いて受信端末11に未到達のデータパケットを特定する。また、送信端末12は、RACKパケットを繰返し受信するようになった場合には、今回受信したRACKパケットと直前に受信したRACKパケットの時間差情報を用いて受信端末11に未到達のデータパケットを特定する。
図2は、本発明の第1の実施形態による通信装置の構成例を示すブロック図である。
通信装置14は、前述した通信システム10における送信端末12に適用する通信装置である。
通信装置14は再送制御部140を含む構成となっている。
再送制御部140は、送信したデータパケットに対して受信側が返信する確認応答(ACK、acknowledgement)パケットを受信した以降に、受信側から再送要求(RACK、retransmission acknowledgement)パケットを受信する。
RACKパケットは、次のデータパケットが到着しないと判断する未着判定時間間隔で受信側が繰返し送信するパケットで、受信側に到着しない次のデータパケットの送信を促すパケットである。
再送制御部140は、RACKパケットを受信する直前に受信したACKパケットまたはRACKパケットの時刻情報と今回受信したRACKパケットの時刻情報に基づく時間差情報を用いて受信側に未到達のデータパケットを特定して再送する。ここで、前記の時刻情報は、受信端末がACKパケットおよびRACKパケットの送信時にそれぞれ付すタイムスタンプ、または再送制御部140がACKパケットおよびRACKパケットの受信時にそれぞれ付すタイムスタンプである。
RACKパケットは、受信側が待ち受ける次のデータパケットが到着するまで、受信側から繰返し送信される。そのため、ACKパケットを受信した次にRACKパケットを受信した場合、再送制御部140は、ACKパケットと受信したRACKパケットの時間差情報を用いて受信側に未到達のデータパケットを特定する。
再送制御部140は、RACKパケットを繰返し受信するようになった場合には、今回受信したRACKパケットと直前に受信したRACKパケットの時間差情報を用いて受信端末11に未到達のデータパケットを特定する。
図3は、本発明の第1の実施形態による再送制御方法の動作例を示すフロー図である。
第1の実施形態による再送制御方法は、通信装置14が図3に示すフローのように動作することで実現される。
送信したデータパケットに対して受信側が返信する確認応答(ACK、acknowledgement)パケットを受信した以降に、受信側から再送要求(RACK、retransmission acknowledgement)パケットを受信する(S11)。
RACKパケットは、次のデータパケットが到着しないと判断する未着判定時間間隔で受信側が繰返し送信するパケットで、受信側に到着しない次のデータパケットの送信を促すパケットである。
RACKパケットを受信する直前に受信したACKパケットまたはRACKパケットの時刻情報と今回受信したRACKパケットの時刻情報に基づく時間差情報を用いて、受信側に未到達のデータパケットを特定して再送する(S12)。ここで、前記の時刻情報は、ACKパケットおよびRACKパケットの送信時にそれぞれ付されるタイムスタンプ、またはACKパケットおよびRACKパケットの受信時にそれぞれ付されるタイムスタンプである。
RACKパケットは、受信側が待ち受ける次のデータパケットが到着するまで、受信側から繰返し送信される。そのため、ACKパケットを受信した次にRACKパケットを受信した場合は、ACKパケットと受信したRACKパケットの時間差情報を用いて受信側に未到達のデータパケットを特定する。また、RACKパケットを繰返し受信するようになった場合には、今回受信したRACKパケットと直前に受信したRACKパケットの時間差情報を用いて受信側に未到達のデータパケットを特定する。
図4は、本発明の第1の実施形態による通信装置のハードウェアの構成例を示すブロック図である。
図4を参照すると、通信装置14は、一般的なコンピュータ装置と同様のハードウェア構成によって実現することができ、次の構成を備える。
ハードウェア構成として、制御部であるCPU(Central Processing Unit)141、主記憶部142、補助記憶部143を含む。主記憶部142は、RAM(Random Access Memory)等で構成され、補助記憶部143は、磁気ディスク、半導体メモリ等の不揮発メモリから構成されるハードディスク装置を含む。
また、ハードウェア構成として、通信回線を介して外部との通信を行う通信部144、マン・マシン・インタフェースとしての入出力部145、上記各構成要素を相互に接続するシステムバス146等を含む。
本実施形態の通信装置14は、TCPコネクションにおけるデータパケットの再送制御に関わる各機能を提供するプログラムを、コンピュータ処理装置上のCPU141で実行することにより、ソフトウェア的に実現することができる。
すなわち、CPU141は、補助記憶部143に格納されているプログラムを、主記憶部142にロードして実行し、あるいは補助記憶部143上で直接実行し、通信装置14の動作を制御することにより、各機能をソフトウェア的に実現する。
前述したように、通信装置14は、図1で説明した通信システム10における送信端末12として機能する装置である。
本発明の第1の実施形態の再送制御プログラムが実現する機能手段の構成を図5に示す。
本発明の第1の実施形態による再送制御プログラムは、コンピュータを再送制御機能部150として機能させる。
再送制御機能部150は、送信したデータパケットに対して受信側が返信する確認応答(ACK、acknowledgement)パケットを受信した以降に、受信側から再送要求(RACK、retransmission acknowledgement)パケットを受信する。
RACKパケットは、次のデータパケットが到着しないと判断する未着判定時間間隔で受信側が繰返し送信するパケットで、受信側に到着しない次のデータパケットの送信を促すパケットである。
再送制御機能部150は、RACKパケットを受信する直前に受信したACKパケットまたはRACKパケットの時刻情報と今回受信したRACKパケットの時刻情報に基づく時間差情報を用いて、受信側に未到達のデータパケットを特定して再送する。ここで、前記の時刻情報は、受信側がACKパケットおよびRACKパケットの送信時にそれぞれ付すタイムスタンプ、または再送制御機能部150がACKパケットおよびRACKパケットの受信時にそれぞれ付すタイムスタンプである。
RACKパケットは、受信側が待ち受ける次のデータパケットが到着するまで、受信側から繰返し送信される。そのため、ACKパケットを受信した次にRACKパケットを受信した場合、再送制御機能部150は、ACKパケットと受信したRACKパケットの時間差情報を用いて受信側に未到達のデータパケットを特定する。また、再送制御機能部150は、RACKパケットを繰返し受信するようになった場合には、今回受信したRACKパケットと直前に受信したRACKパケットの時間差情報を用いて受信側に未到達のデータパケットを特定する。
以上のように、本実施形態では、送信したデータパケットに対するACKパケットの返信を受けた以降に受信側からRACKパケットを受信すると、送信側は受信側に到着しない次のデータパケットの送信を促されていると認識する。RACKパケットは、受信側が待ち受ける次のデータパケットが到着するまで、受信側から繰返し送信される。そして、送信側は、直前に受信したACKパケットまたはRACKパケットの時刻情報と今回受信したRACKパケットの時刻情報の時間差情報を用いて、その間に送信したデータパケットを特定する。この時間差は、ACKパケットおよびRACKパケットの送信時間差と把握しても良いし、受信時間差と把握しても良い。この時間差を用いることでRACKパケットが要求する次のデータパケットのみならず、連続して消失した複数のデータパケットを特定して、それらを再送することができる。
従って、本実施形態によれば、送信したデータパケットが連続して多数消失してしまう状況になっても、そのような状況が解消した場合に即座に通信性能を改善することができる。
(第2の実施形態)
次に、第2の実施形態を説明する。
図6は、本発明の第2の実施形態による通信システムの構成例を示すブロック図である。
第2の実施形態による通信システム20は、受信端末21と送信端末22を含む構成となっており、TCPの通信規格に準拠したデータ伝送が可能な通信網であるネットワーク23上に、TCPコネクションを確立して接続される。ネットワーク例、上りリンクおよび下りリンクの方向については第1の実施形態で説明しているのでその説明を省略する。
受信端末21はTCP受信部211を備え、送信端末22はTCP送信部221を備える。TCP送信部221から送信したデータパケットは、TCPコネクションの下りリンクを介してTCP受信部211で受信される。TCP受信部211は、受信したデータパケットの確認応答のACKパケットをTCPコネクションの上りリンクを介して送信する。
受信端末21が備えるTCP受信部211はACK再送制御部2111とACK再送タイマ2112を含む構成となっている。
ACK再送制御部2111はACKパケットの再送を制御する回路である。ACK再送制御部2111は、受信したデータパケットに対するACKパケットを送出した後に、次に受信するデータパケットの到着を時限監視するためにACK再送タイマ2112をスタートさせる。ACK再送タイマ2112がタイムアウトするまでに次のデータパケットを受信できなかった場合、ACK再送制御部2111はACKパケットを再送する。つまり、ACK再送タイマ2112は、次に待受けるデータパケットが到着しないと判断する未着判定時間の時限監視を行う。再送したACKパケットを再送ACKまたはRACK(Retransmission ACK)パケットと称し、送信端末22に対して次のデータパケットの送信を促す。
RACKパケットは、ACKパケットで確認応答した次のデータパケットが未着であることを送信端末22に知らせ、その再送を促すものである。そして、通常の確認応答のACKや高速再転送の際に使用する重複ACKと区別するために、再送のACKであることを示すフラグをTCP規格のオプションフィールドに格納する。このRACKの適用は、TCPコネクション確立時に行われる3Wayハンドシェークにて送受信間で合意しておくと良い。
ACK再送制御部2111は、RACKパケットの送信に際してもACK再送タイマ2112をスタートさせて、再送を要求したデータパケットの到着を待つ。ACK再送制御部2111は、この時限監視でもデータパケットが受信できなかった場合には、RACKパケットを再度送信してACK再送タイマ2112によるデータパケットの到着時限監視を繰り返す。このように、再送を要求したデータパケットが到着しない場合には未着判定時間を経過する度にRACKパケットを繰返し送信する。
また、ACK再送制御部2111は、ACKパケットやRACKパケットの時刻情報として、送信時刻を示すタイムスタンプを付加しても良い。これは、TCP規格のタイムスタンプオプションを使用すれば良い。
上述したように、ACK再送タイマ2112には、次に待受けるデータパケットが到着しないと判断する未着判定時間が設定される。例えば、送信端末22と受信端末21との間のパケット往復時間であるRTT(Round Trip Time)に基づいてデータパケットの到着間隔を推定し、その推定値に基づいて未着判定時間を設定すれば良い。RTTは、通常のTCPパケットの転送中に計測した過去の履歴を用いて計算すれば良い。また、ACK再送タイマ2112の未着判定時間の設定値として、TCP規格で実装されるタイマ機構の「Fast Timer(遅延ACKの送信等で使用される。)」で使用される50ミリ秒を固定値として使用しても良い。
送信端末22が備えるTCP送信部221は、ACK再送判定部2211と再送レート判定部2212を含む構成となっている。
ACK再送判定部2211は、受信したACKパケットが、通常の確認応答のACK、高速再転送による再送を要求する重複ACK、上述したACK再送タイマに基づいて再送されたACKであるRACKのいずれであるかを識別する。受信したACKパケットがRACKであることを識別すると、ACK再送判定部2211は、その直前に受信したACKまたはRACKの時刻情報と、今回受信したRACKの時刻情報に基づいて、それらの時間差を算出する。そして、この算出した時間差が示す時間の間は受信側にはデータパケットが届いていないものと推定される。
なお、時刻情報として、ACK再送制御部2111が送信時刻を示すタイムスタンプを付加して送信する場合には、受信端末21からの送信時刻情報が使用される。また、ACK再送判定部2211がACKパケットおよびRACKパケットを受信した際に、受信時刻をそれぞれ付加するように構成しても良い。この場合は、時刻情報として、送信端末22での受信時刻情報が使用される。以降では、時刻情報として、ACK再送制御部2111が送信時刻を示すタイムスタンプを付加して送信するものとして説明する。
ACK再送判定部2211は、受信側にデータパケットが届いていないと推定される時間とデータパケットの送信履歴または輻輳ウィンドウ(cwnd)のサイズに基づいて、受信側で受信できていないデータ量を推定する。
再送レート判定部2212は、TCPの送信アルゴリズムにより、cwndサイズとの関係でデータパケットの送信可能なデータ量を判定し、ネットワークの状況を考慮した適切なデータ再送量を決定する。そして、再送が決定された量のデータを、RACKパケットで要求されたデータパケットおよびこれに続く後続データパケットとして再送信する。
次に、図7および図8を参照して、上述した受信端末21や送信端末22として使用する通信装置について説明する。
図7は、本発明の第2の実施形態による受信端末としての通信装置の構成例を示すブロック図である。
通信装置31は、受信端末として機能する通信装置であって、アプリケーション処理部312、TCP受信部311、IP処理部313および入出力処理部314を含む構成になっている。
アプリケーション処理部312はデータを受信もしくは転送をする上位アプリケーションである。TCP受信部311はデータを受信しその受信状況を送信側に確認応答するトランスポート処理部である。IP処理部313はデータのネットワーク転送を制御するネットワーク処理部である。入出力処理部314は物理的なリンクを介してデータを送受信するデータリンク処理部である。
各処理部は次のように機能する。
入出力処理部314はネットワークから受け取ったフレームデータからIPパケットを取り出してIP処理部313に渡す。IP処理部313は入出力処理部314から受け取ったIPパケットからTCPパケットを取り出してTCP受信部311へと渡す。TCP受信部311はIP処理部313から受け取ったTCPパケットに対してACKを返信し、そのTCPパケットをデータ化してアプリケーション処理部312に渡す。そして、アプリケーション処理部312はTCP受信部311からデータを受け取る。
TCP受信部311は、TCPパケットを受信するデータ受信部3113、セグメントを記憶するセグメント記憶部3114、ACK再送制御部3111およびACK再送タイマ3112を含む構成になっている。なお、以降の説明でデータパケットは、特に断りのない限りはTCPパケットを意味している。
データ受信部3113は、受信したデータパケットのパケットデータ(セグメント)をセグメント記憶部3114に格納する。また、データ受信部3113は、受信したデータパケットに対してACKを返信する。受信したセグメントはセグメント記憶部3114に所定の時間保持された後にアプリケーション処理部312に出力される。
ACK再送制御部3111およびACK再送タイマ3112は、受信したデータパケットに対するACKパケットの再送を制御する。
ACK再送制御部3111およびACK再送タイマ3112は、図6を参照して説明したACK再送制御部2111およびACK再送タイマ2112と同様の機能を有する。
ACK再送タイマ3112には、ACKパケットを送出した後の次に待受けるデータパケットが到着しないと判断する未着判定時間が監視時間として設定される。
つまり、ACK再送制御部3111は、受信したデータパケットに対するACKパケットを送出した後に、次に受信するデータパケットの到着を未着判定時間で時限監視するためにACK再送タイマ3112をスタートさせる。
ACK再送制御部3111は、ACK再送タイマ3112がタイムアウトするまでに次のデータパケットを受信できなかった場合、再送ACKとしてRACKパケットを送信する。RACKパケットの送信の際にもACK再送タイマ3112をスタートさせ、再送を要求したデータパケットが到着しない場合には未着判定時間を経過する度にRACKパケットを繰返し送信する。ACKパケットおよびRACKパケットには、送信時刻を示すタイムスタンプが付される。
ACK再送タイマ3112に設定する未着判定時間は、送信端末と受信端末との間のパケット往復時間であるRTTに基づいてデータパケットの到着間隔を推定し、その推定値に基づいて決定すれば良い。例えば、受信可能として送信端末に通知している広告ウィンドウの最新値である受信ウィンドウ(rwnd)サイズ、最大パケットサイズおよびRTTに基づいてデータパケットの到着間隔を推定できる。そして、その推定値に基づいて(1)式で算出した時間(タイマ値)を未着判定時間とすれば良い。
タイマ値=1/{α×(rwnd/RTT)/最大パケットサイズ} (1)式
(1)式において、最大パケットサイズは送信端末が送信するパケットの最大のデータ量である。αはパケットの到着時間の揺らぎを吸収するための係数であり、α>1である。例えば、α=1000とする。
(1)式において、rwnd/RTTは想定される最大のデータ転送速度である。これを最大パケットサイズで割ることで、単位時間当たりのパケット転送個数を求めている。そして、単位時間当たりのパケット転送個数の逆数を取ることによって、想定される最大スループットでデータ転送をしている際のパケットの到着間隔を求めている。
ACK再送制御部3111は、計測された最大パケットサイズやRTTを取得し、(1)式を用いてパケットの到着間隔を推定する。そして、ACK再送制御部3111は、ACKパケットを送信してからの経過時間が上記計算して設定した未着判定時間に達した場合に、ACKパケットの再送(RACKパケット送信)を行う。ACK再送制御部3111は、送信端末と受信端末との間で過去に受信されたデータやACKの履歴を用いて、RTTを計算しても良い。また、MSS(Maximum Segment Size)オプションで通知された最大セグメントサイズを用いて最大パケットサイズを求めても良い。
また、ACK再送タイマ3112が一度タイムアウトになると、次に設定する監視時間をβ(β>1)倍に設定しても良い。
RACKパケットは、再送のACKであることを示すフラグをTCP規格のオプションフィールドに格納する。また、RACKパケットは、再送のACKであることを示す帯域外(OOB、Out Of Band)データを格納しても良い。帯域外データは、所定のフラグを有するデータであり、通常のデータストリームと区別することができるデータである。そして、帯域外データは通常のデータとは無関係に配信することができる。
図8は、本発明の第2の実施形態による送信端末としての通信装置の構成例を示すブロック図である。
通信装置32は、送信端末として機能する通信装置であって、アプリケーション処理部322、TCP送信部321、IP処理部323および入出力処理部324を含む構成になっている。
アプリケーション処理部322はデータを生成もしくは転送をする上位アプリケーションである。TCP送信部321はデータの送信と再送信をするトランスポート処理部である。IP処理部323はデータのネットワーク転送を制御するネットワーク処理部である。入出力処理部324は物理的なリンクを介してデータを送受信するデータリンク処理部である。
各処理部は次のように機能する。
アプリケーション処理部322は送信するデータを生成してTCP送信部321に渡す。TCP送信部321は、送信するデータをアプリケーション処理部322から受け取り、レートコントロールしつつ信頼性のある通信を行うために、送信するデータをTCPパケットとしてセグメント化する。IP処理部323はTCP送信部321から受け取ったTCPパケットのデータをIPパケット化して入出力処理部324に渡す。入出力処理部324はIP処理部323から渡されたIPパケットをフレーム化してネットワークに出力する。
TCP送信部321は、アプリケーション処理部322から受信したデータをTCPパケットとして送信するデータ送信部3213、データを記憶するデータ記憶部3214、ACK再送判定部3211および再送レート判定部3212を含む構成になっている。
ACK再送判定部3211は、受信端末から送られてきたACKパケットが、通常の確認応答のACK、高速再転送による再送を要求する重複ACK、再送されたACKであるRACKのいずれであるかを識別する。ACK再送判定部2211は、受信したACKパケットがRACKであることを識別すると、その直前に受信したACKまたはRACKのタイムスタンプを参照して今回受信したRACKと直前に受信したACKまたはRACKとの時間差を算出する。つまり、直前に受信したACKまたはRACKの送信時刻と今回受信したRACKの送信時刻の時間差が示す時間の間は受信側にはデータパケットが届いていないものと推定する。
より詳細には、ACK再送判定部3211は、受信したACKパケットに格納されたタイムスタンプ(t_ack)を記憶する。送信済みであるが確認応答を受けていないデータパケットがある場合には、RACKパケットを受信すると、RACKパケットに格納されたタイムスタンプ(t_rack)を参照する。そして、(2)式に示す、ACKパケットとRACKパケットの間の時間(ACK_INT)を受信側がデータパケットを受信しなかった時間として推定する。(ACK_INT)を再送ACK間隔時間とも称する。
ACK_INT=t_rack-t_ack (2)式
つづいて、ACK再送判定部3211は、受信側にデータパケットが届いていないと推定される時間と、データパケットの送信履歴または輻輳ウィンドウ(cwnd)のサイズに基づいて、受信側で受信できていないデータ量を推定し、特定する。
データパケットの送信履歴を使う場合は、送信したデータパケットの送信時刻を送信履歴としてそれぞれ記録しておく。そして、確認応答を受けてから送信したデータパケットの送信時刻から上記(2)式で算出した時間(ACK_INT)内に送出したデータパケットを特定することで、受信側で受信できていないデータ量とすれば良い。つまり、受信側から直近のACKパケットで確認応答を受けてから送信したデータパケットを先頭に、再送ACK間隔時間内に送信した後続するデータパケットが消失したものと推定する。
また、輻輳ウィンドウサイズを使う場合は、(3)式に示すように、受信側にデータパケットが届いていないと推定される時間(ACK_INT)がRTTに占める割合に、輻輳ウィンドウサイズを乗じた値を再送データ量とすれば良い。再送データ量をRD(Retransmission Data)で示す。
RD=cwnd×ACK_INT/RTT (3)式
ここで、高いスループットが必要な場合にはこの限りではないが、ACK_INT≦RTTとする。
また、輻輳ウィンドウサイズは、RTT毎に送信可能なデータ量として位置づけられる。
上記に基づいて、ACK再送判定部3211は、直近のACKパケットで確認応答を受けてから送信したデータを先頭にして、算出したRDの量のデータを再送する必要があると判断する。これは、直近のACKパケットで確認応答を受けてから送信したデータを含め、その送信時刻から上記の再送ACK間隔時間内に送信側が送信したデータ量でもある。
受信側で受信できていないデータ量を輻輳ウィンドウサイズに基づいて推定する例を以下の説明では使用するが、データパケットの送信履歴に基づいて受信側で受信できていないデータ量を推定する場合も同様に機能することは言うまでもない。
前述したように、受信側はRACKパケットで送信を促したデータパケットを受信するまで、ACK再送タイマに設定した未着判定時間がタイムアウトする毎にRACKパケットを繰返して送信してくる。そこで、ACK再送判定部3211は、RACKパケットを受信する毎に上述した再送データ量を計算する。
RACKパケットに格納されたタイムスタンプが(t_rack_i)であった場合、その前回に受信したRACKパケットに格納されたタイムスタンプ(t_rack_i-1)との時間差(ACK_INT_i)を、(4)式のようにして求める。
ACK_INT_i=(t_rack_i)-(t_rack_i-1) (4)式
この場合の再送データ量(RD_i)は(5)式で示される。
RD_i=cwnd×ACK_INT_i/RTT (5)式
再送レート判定部3212は、TCPの送信アルゴリズムにより、輻輳ウィンドウサイズとの関係でデータパケットの送信可能なデータ量を判定し、ネットワークの状況を考慮した適切なデータ再送量を決定する。つまり、算出した再送データ量の合計(ΣRD)が輻輳ウィンドウサイズに達した場合は、ACKパケットで指定されたデータの先頭のパケットの再送を繰り返すように制御する。再送を繰り返す場合には、輻輳を防止するために再送を一時停止しても良い。また、逆に、高いスループットが必要な場合には、輻輳ウィンドウサイズを超えるデータを送信するようにしても良い。
輻輳ウィンドウサイズとの関係で決定された量の再送データは、RACKパケットで要求されたデータパケットおよびこれに続く後続データパケットとして再送される。
上述したRACKパケットを導入した再送によるデータトランザクションの例を、通常のTCPのタイムアウト再送や特許文献4が開示する技術による再送を参照して説明する。
図9はTCPのタイムアウト再送が行われる例を説明するデータトランザクションを示すシーケンス図である。図10は特許文献4が開示する技術により再送が行われる例を説明するデータトランザクションを示すシーケンス図である。
そして、図11は、本発明の第2の実施形態により再送が行われる例を説明するデータトランザクションを示すシーケンス図である。
なお、図9乃至図11において影付き直方体の箇所は下りリンクが劣化している期間を示す。この期間は下りリンクを流れるデータパケットが消失するものとする。
図9に示す通常のTCPのタイムアウト再送を説明する。
ウィンドウサイズの範囲で5つのデータパケット(データ100乃至データ104)がACKを受けることなく連続して送信されるものとする。そのうちの、最初のデータパケットであるデータ100は受信端末まで到達するが他のデータ101乃至データ104は下りリンクを伝送中に消失するものとする。
受信端末に到達したデータ100の確認応答であるACK101が受信端末から返信され、送信端末で受信される。しかし、他のデータ101乃至データ104は下りリンクを伝送中に消失するので、確認応答が返らない。そのため、送信端末では、データ101を送信した際に設定した再送タイマがタイムアウトし、データ101が再送される。
しかし、この再送されたデータ101も下りリンクを伝送中に消失する。
そのため、再送のデータ101を送信した際に、より長く設定した再送タイマがタイムアウトし、2度目の再送データ101が送信端末から送信される。この時点では下りリンクの通信品質が改善しており、2度目の再送のデータ101が受信端末に到達する。
データ101を受信した受信端末は、データ101の確認応答であるACK102を返信する。ACK102を受信した送信端末は、要求されたデータ102を送信する。
このように、通常のTCPのタイムアウト再送を適用した例では、データパケットが連続して多数消失してしまう状況が解消した後において、送信端末のデータスループットが低下する。
次に、図10に示す特許文献4が開示する技術により再送が行われる例を説明する。特許文献4が開示する技術では、確認応答のACKパケットを返信後に所定の時間内に次のデータパケットを受信できない場合に、再送を促す再送ACKパケットを送信する。再送ACKパケットには、再送ACKパケットであることを示す所定の情報が付加されている。
ウィンドウサイズの範囲で5つのデータパケット(データ100乃至データ104)がACKを受けることなく連続して送信されるものとする。そのうちの、最初のデータパケットであるデータ100は受信端末まで到達するが他のデータ101乃至データ104は下りリンクを伝送中に消失するものとする。
受信端末に到達したデータ100の確認応答であるACK101が受信端末から返信され、送信端末で受信される。しかし、他のデータ101乃至データ104は下りリンクを伝送中に消失して、受信端末に届かない。そのため、受信端末では、ACK101を返信した際に設定したACK再送タイマがタイムアウトし、ACK101が再送される。
再送ACKパケットであるACK101を受信した送信端末は、データ101を再送する。しかし、この再送されたデータ101も下りリンクを伝送中に消失する。
下りリンクが劣化している期間はデータパケットが受信端末に届かないので、ACK再送タイマが繰返し設定され、再送ACKパケットであるACK101が繰返し送信される。そして、送信端末は、再送ACKパケットであるACK101を受信する度にデータ101を再送する。
下りリンクの通信品質が改善してから再送されたデータ101は受信端末に到達する。
データ101を受信した受信端末は、データ101の確認応答である通常のACK102を返信する。ACK102を受信した送信端末は、要求されたデータ102を送信する。
このように、特許文献4が開示する技術により再送が行われる例でも、データパケットが連続して多数消失してしまう状況が解消した後において、送信端末のデータスループットが低下する。
次に、図11に示す本実施形態により再送が行われる例を説明する。
ウィンドウサイズの範囲で5つのデータパケット(データ100乃至データ104)がACKを受けることなく連続して送信されるものとする。そのうちの、最初のデータパケットであるデータ100は受信端末まで到達するが他のデータ101乃至データ104は下りリンクを伝送中に消失するものとする。
受信端末に到達したデータ100の確認応答であるACK101が受信端末から返信され、送信端末で受信される。しかし、他のデータ101乃至データ104は下りリンクを伝送中に消失して、受信端末に届かない。そのため、受信端末では、ACK101を返信した際に設定したACK再送タイマがタイムアウトし、RACK101が再送される。
ここで、タイムスタンプ値(TSval)として、ACK101には「1000」、RACK101には「1020」が格納されているものとする。
RACK101を受信した送信端末は、再送ACKであることを認識し、再送すべきデータ量を推定する。
上述した(2)式によりACK101とRACK101の時間差を求める。
ACK_INT=t_rack-t_ack=1020-1000=20
そして、ACK101とRACK101の時間差が示す時間に送信端末が送信したデータ量を(3)式により求める。なお、RTT=30、cwnd=3と想定する。
RD=cwnd×ACK_INT/RTT=3×20/30=2
つまり、送信端末は2つのデータパケットであるデータ101とデータ102を再送するデータ量として算出する。そして、RACK101(TSval001020)に対する再送データとして、データ101に加えてデータ102(太線表示)を再送する。しかし、この再送されたデータ101とデータ102も下りリンクを伝送中に消失する。
下りリンクが劣化している期間はデータパケットが受信端末に届かないので、ACK再送タイマが繰返し設定され、再送ACKパケットであるRACK101が繰返し送信される。
しかし、本実施形態では、各RACKにはタイムスタンプが格納されている。
そのため、送信端末は、受信したRACK101(TSval001040)と直前に受信したRACK101(TSval001020)のタイムスタンプ値から、(4)式、(5)式に基づいて、送信データ量を算出する。
ACK_INT_2=(t_rack_2)-(t_rack_1)=20
RD_2=cwnd×ACK_INT_2/RTT=3×20/30=2
上記により、送信端末はRACK101(TSval001040)に対して再送すべきデータパケットは2個であることを決定する。更に、前回受信したRACK101(TSval001020)に対して再送したデータがデータ101とデータ102であることを記憶しており、今回はデータ103から送信することを決定する。
ここで、ΣRD=RD+RD_2=4となり、cwnd=3を超えてしまう。そのため、送信端末は、データ103(太線表示)の後は、再送しているデータの先頭であるデータ101を送信する。しかし、この再送されたデータ103とデータ101も下りリンクを伝送中に消失する。
その後、送信端末は、下りリンクの劣化により、再送したデータパケットが受信端末に届かないことから、RACK101(TSval001060)、RACK101(TSval001080)を受信する。これらのRACKパケットを受信した際も、上述したようにタイムスタンプ、RTT、輻輳ウィンドウサイズに基づいて再送データ量を算出し、輻輳ウィンドウサイズとの関係で決定した適切なデータ量を再送する。
下りリンクの通信品質が改善して受信端末にデータが到着するようになると、受信端末は、部分的な受信を示すSACK(Selective ACK:選択的確認応答)信号を含むACK(sack:xxx)パケットを送信して、受信したデータパケットを揃える。
例えば、図11では、RACK101(TSval001060)に対して再送されたデータ102(太線表示)とデータ103(太線表示)が受信端末に到達する。データ102に対する確認応答として、受信端末はACK101(sack:102)パケットを送信し、データ101は受信していないがデータ102を受信した旨の確認応答を行う。また、データ103に対する確認応答として、受信端末はACK101(sack:102、103)パケットを送信し、データ101はまだ受信していないがデータ102とデータ103を受信した旨の確認応答を行う。
一方、RACK101(TSval001080)に対して送信端末は2つのパケットを再送することを決定する。また、その直後にSACK信号を含むACK101を受けてウィンドウがスライドしたので、データ101とデータ104(太線表示)を再送する。
受信端末ではRACK101(TSval001080)に対して再送されたデータ101を受信したことで、データ101、102、103まで揃ったことを示す通常の確認応答のACK104を送信する。また、RACK101(TSval001080)に対して再送されたデータ104も受信端末に到達するので、受信端末は通常の確認応答のACK105を送信する。
上述したように、本実施形態ではRACKパケットを受信した送信端末は、再送を要求されたデータだけではなく、受信端末に届いてないと推定されるデータも含めて再送する。そのため、データパケットが連続して多数消失してしまう状況が解消した後においても、送信端末のデータスループットが低下することはなく、即座に通信性能を改善することができる。
本実施形態の通信装置の動作を図12および図13を参照して説明する。
図12は通信装置が受信端末として機能する際の動作であり、図13は通信装置が送信端末として機能する際の動作である。
図12は、本発明の第2の実施形態による受信側の再送要求制御の動作を説明するフロー図である。
受信端末は、コネクションの開始を要求する送信端末との間で3wayハンドシェークの手順でコネクションを確立して受信処理を開始する。
受信端末は、送信端末から送られるパケットの受信を待ち、受信したパケットの内容に基づいてデータ転送の終了か否かを判定する(S101)。受信したパケットがコネクション切断を示すFIN(Finish)パケットである場合(S101、YES)、コネクション切断の応答(FIN/ACK)を返信して処理を終了する。また、受信したパケットがデータを含むパケットである場合(S101、NO)、ステップS102に処理を進める。
ステップS102では、受信したデータをアプリケーションに渡し、データ受信の確認応答のACKパケットを返信する。また、そのとき、次のデータパケットの到着を待ち合わせるタイミングとして、ACK再送タイマに未着判定時間をセットする。これらの処理が終了したら、ステップS103に処理を進める。
ステップS103では、送信端末からの新たなデータパケットの受信の有無を判定する。新たなデータパケットを受信した場合(S103、YES)、ACK再送タイマを解除してステップS101に戻る。新たなデータパケットを受信していない場合(S103、NO)、ステップS104に処理を進めてACK再送タイマの判定を待つ。
ステップS104では、ACK再送タイマがタイムアウトになったか否かを判定する。ACK再送タイマの未着判定時間がまだタイムアウトにならない場合(S104、NO)、ステップS103に戻り、送信端末からの新たなデータパケットの受信を待ち、その受信の有無を判定する。ACK再送タイマの未着判定時間がタイムアウトになった場合(S104、YES)、ステップS105に処理を進める。
ステップS104では、ACK再送タイマがタイムアウトになったことにより、RACK(再送ACK)パケットを送信し、ACK再送タイマに未着判定時間を再セットする。そして、ステップS103に戻り、送信端末からの新たなデータパケットの受信を待ち、その受信の有無を判定する。RACKパケットには、再送するACKであることを示すフラグを立てる。また、前述したように、帯域外(OOB)データを格納しても良い。
つづいて、通信装置が送信端末として機能する際の動作を説明する。
図13は、本発明の第2の実施形態による送信側の再送制御の動作を説明するフロー図である。
送信端末は、送信すべきデータが発生した場合に、受信端末との間で3wayハンドシェークの手順でコネクションを確立して送信処理を開始する。
送信すべきデータの有無を確認する(S201)。受信端末へのデータの転送が完了し、送信すべきデータがない場合(S201、YES)は、処理を終了してコネクションを切断する。送信すべきデータがある場合(S201、NO)は、ステップS202に処理を進める。
ステップS202では、TCPの送信アルゴリズムに基づいて、データの送信が可能か否かを判定する。この場合、送信済みのデータパケットに対する確認応答が返ってきたことでデータ番号を減じ、ウィンドウサイズとの関連で送信の可否を判定する。そして、データ送信が可能と判定した場合(S202、YES)は、ステップS203に処理を進める。
ステップS203では、データを送信し、送信済みデータ番号を記憶し、ステップS201の処理に戻る。
ステップS202で、送信済みのデータパケットに対する確認応答がまだ帰っておらず、ウィンドウサイズとの関連でデータ送信がまだできない場合(S202、NO)には、ステップS204に進み、ACKパケットの受信を待つ。
ステップS204でACKパケットを受信すると、ステップS205に処理を進める。
ステップS205では、受信したACKパケットが再送されたACKパケット(RACKパケット)か否かを判定する。
受信したACKパケットがRACKパケットではない場合(S205、NO)、その受信したACKパケットに対応する送信済みのデータパケットには確認応答が返ってきたものとして、そのデータ番号を記憶する。そして、ステップS202の処理に戻る。
一方、受信したACKパケットがRACKパケットであった場合(S205、YES)、受信端末からデータパケットの再送を促されていると認識し、ステップS206およびステップS207に処理を進める。
ステップS206では、上述した(2)式または(4)式でACK送信間隔を計算し、(3)式または(5)式で再送データ量を決定する。ステップS207では、輻輳ウィンドウサイズとの関係でデータパケットの送信可能なデータ量を判定し、ネットワークの状況を考慮した適切な再送データを決定する。そして、ステップS202の処理に戻り、決定した再送データを送信する。
以上の動作により、送信端末は、ACKパケットで確認応答を受けた次のデータを送信するのみならず、そのデータを先頭にして、ステップS206で決定した量のデータを再送することができる。
以上に説明したように、本実施形態では、送信端末はACKパケットやRACKパケットの時刻情報を用いて、繰返し再送されるRACKパケットに関して前後のACKパケットまたはRACKパケットの時刻情報との時間差を計算する。この時間差が示す時間を以て受信側にデータパケットが届いていない時間と推定し、データパケットの送信履歴または輻輳ウィンドウ(cwnd)のサイズに基づいてその時間に受信側で受信できていないデータ量を推定する。そして、送信端末は、ACKパケットで確認応答を受けた次のデータを送信するのみならず、そのデータを先頭にして、受信側で受信できていないと推定した量のデータを再送する。そのため、データパケットが連続して多数消失してしまう状況が解消した後においても、送信端末のデータスループットが低下することはなく、即座に通信性能を改善することができる。
なお、上述した本実施形態の通信装置は、TCPの通信規格によるパケット送受信、再送制御および輻輳回避アルゴリズム等の処理動作を規定した制御プログラムがインストールされたコンピュータによって構成されていても良い。そして、この制御プログラムの実行に必要な演算装置、記憶装置、制御装置および通信インタフェース等を備え、ネットワークに接続される。例えば、第1の実施形態で説明した、図4に示すハードウェア構成が適用されても良い。
なお、上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1) 受信したデータパケットの確認応答(ACK、acknowledgement)パケットを送信後、次のデータパケットが到着しないと判断する未着判定時間を設定し、前記未着判定時間内に次のデータパケットが到着しない場合は、当該次のデータパケットの送信を促す再送要求(RACK、retransmission acknowledgement)パケットを前記未着判定時間間隔で繰返し送信する受信端末と、前記ACKパケットを受信した以降に前記RACKパケットを前記受信端末から受信すると、直前に受信した前記ACKパケットまたは直前に受信した前記RACKパケットの時刻情報と今回受信した前記RACKパケットの時刻情報に基づく時間差情報を用いて、前記受信端末に未到達のデータパケットを特定して再送する送信端末と、を含み、前記時刻情報は、前記受信端末が前記ACKパケットおよび前記RACKパケットの送信時にそれぞれ付すタイムスタンプ、または前記送信端末が前記ACKパケットおよび前記RACKパケットの受信時にそれぞれ付すタイムスタンプであることを特徴とする通信システム。
(付記2) 送信したデータパケットに対して受信側が返信する確認応答(ACK、acknowledgement)パケットを受信した以降に、次のデータパケットが到着しないと判断する未着判定時間間隔で前記受信側が繰返し送信する、次のデータパケットの送信を促す再送要求(RACK、retransmission acknowledgement)パケットを受信すると、直前に受信した前記ACKパケットまたは直前に受信した前記RACKパケットの時刻情報と今回受信した前記RACKパケットの時刻情報に基づく時間差情報を用いて、前記受信側に未到達のデータパケットを特定して再送する再送制御手段を含み、前記時刻情報は、前記受信側が前記ACKパケットおよび前記RACKパケットの送信時にそれぞれ付すタイムスタンプ、または前記再送制御手段が前記ACKパケットおよび前記RACKパケットの受信時にそれぞれ付すタイムスタンプであることを特徴とする通信装置。
(付記3) 前記再送制御手段は、今回受信した前記RACKパケットの前記時刻情報と、直前に受信した前記ACKパケットまたは直前に受信した前記RACKパケットの前記時刻情報との時間差を示す再送ACK間隔時間に基づいて、前記受信側に未到達のデータパケットを特定するACK再送判定部と、前記特定した前記受信側に未到達のデータパケットに対し、ネットワークの状況を考慮して決定した量の再送データを決定する再送レート判定部と、を含むことを特徴とする付記2に記載の通信装置。
(付記4) 前記ACK再送判定部は、前記ACKパケットで確認応答を受けてから送信したデータパケットを含め、当該データパケットの送信時刻から前記再送ACK間隔時間の間に送信したデータパケットを、前記受信側に未到達のデータパケットと特定することを特徴とする付記3に記載の通信装置。
(付記5) 前記ACK再送判定部は、前記再送ACK間隔時間がRTT(Round Trip Time)に占める割合に、輻輳ウィンドウサイズを乗じたデータ量のパケットを、前記受信側に未到達のデータパケットと特定することを特徴とする付記3に記載の通信装置。
(付記6) 前記再送レート判定部は、前記特定した前記受信側に未到達のデータパケットに対し、輻輳ウィンドウサイズとの関係で送信可能なデータ量を判定することを特徴とする付記3乃至付記5のいずれかの付記に記載の通信装置。
(付記7) 前記送信端末は、付記2乃至付記6のいずれかの付記に記載の通信装置であることを特徴とする付記1に記載の通信システム。
(付記8) 送信したデータパケットに対して受信側が返信する確認応答(ACK、acknowledgement)パケットを受信した以降に、次のデータパケットが到着しないと判断する未着判定時間間隔で前記受信側が繰返し送信する、次のデータパケットの送信を促す再送要求(RACK、retransmission acknowledgement)パケットを受信し、直前に受信した前記ACKパケットまたは直前に受信した前記RACKパケットの時刻情報と、今回受信した前記RACKパケットの時刻情報に基づく時間差情報を用いて、前記受信側に未到達のデータパケットを特定して再送し、前記時刻情報は、前記ACKパケットおよび前記RACKパケットの送信時にそれぞれ付されるタイムスタンプ、または前記ACKパケットおよび前記RACKパケットの受信時にそれぞれ付されるタイムスタンプであることを特徴とする再送制御方法。
(付記9) 前記受信側に未到達のデータパケットは、今回受信した前記RACKパケットの前記時刻情報と、直前に受信した前記ACKパケットまたは直前に受信した前記RACKパケットの前記時刻情報との時間差を示す再送ACK間隔時間に基づいて特定し、当該特定した前記受信側に未到達のデータパケットに対し、ネットワークの状況を考慮して決定した量の再送データを決定することを特徴とする付記8に記載の再送制御方法。
(付記10) 前記ACKパケットで確認応答を受けてから送信したデータパケットを含め、当該データパケットの送信時刻から前記再送ACK間隔時間の間に送信したデータパケットを、前記受信側に未到達のデータパケットと特定することを特徴とする付記9に記載の再送制御方法。
(付記11) 前記再送ACK間隔時間がRTT(Round Trip Time)に占める割合に、輻輳ウィンドウサイズを乗じたデータ量のパケットを、前記受信側に未到達のデータパケットと特定することを特徴とする付記9に記載の再送制御方法。
(付記12) 前記特定した前記受信側に未到達のデータパケットに対し、輻輳ウィンドウサイズとの関係で送信可能なデータ量を判定することを特徴とする付記9乃至付記11のいずれかの付記に記載の再送制御方法。
(付記13) コンピュータを、送信したデータパケットに対して受信側が返信する確認応答(ACK、acknowledgement)パケットを受信した以降に、次のデータパケットが到着しないと判断する未着判定時間間隔で前記受信側が繰返し送信する、次のデータパケットの送信を促す再送要求(RACK、retransmission acknowledgement)パケットを受信すると、直前に受信した前記ACKパケットまたは直前に受信した前記RACKパケットの時刻情報と、今回受信した前記RACKパケットの時刻情報に基づく時間差情報を用いて、前記受信側に未到達のデータパケットを特定して再送する再送制御機能手段として機能させ、前記時刻情報は、前記受信側が前記ACKパケットおよび前記RACKパケットの送信時にそれぞれ付すタイムスタンプ、または前記再送制御機能手段が前記ACKパケットおよび前記RACKパケットの受信時にそれぞれ付すタイムスタンプであることを特徴とする再送制御プログラム。
(付記14) 前記再送制御機能手段は、今回受信した前記RACKパケットの前記時刻情報と、直前に受信した前記ACKパケットまたは直前に受信した前記RACKパケットの前記時刻情報との時間差を示す再送ACK間隔時間に基づいて、前記受信側に未到達のデータパケットを特定するACK再送判定機能部と、前記特定した前記受信側に未到達のデータパケットに対し、ネットワークの状況を考慮して決定した量の再送データを決定する再送レート判定機能部と、を含むことを特徴とする付記13に記載の再送制御プログラム。
(付記15) 前記ACK再送判定機能部は、前記ACKパケットで確認応答を受けてから送信したデータパケットを含め、当該データパケットの送信時刻から前記再送ACK間隔時間の間に送信したデータパケットを、前記受信側に未到達のデータパケットと特定することを特徴とする付記14に記載の再送制御プログラム。
(付記16) 前記ACK再送判定機能部は、前記再送ACK間隔時間がRTT(Round Trip Time)に占める割合に、輻輳ウィンドウサイズを乗じたデータ量のパケットを、前記受信側に未到達のデータパケットと特定することを特徴とする付記14に記載の再送制御プログラム。
(付記17) 再送レート判定機能部は、前記特定した前記受信側に未到達のデータパケットに対し、輻輳ウィンドウサイズとの関係で送信可能なデータ量を判定することを特徴とする付記14乃至付記16のいずれかの付記に記載の再送制御プログラム。
この出願は、2017年2月27日に出願された日本出願特願2017-034413を基礎とする優先権を主張し、その開示の全てをここに取り込む。
10、20 通信システム
11、21 受信端末
12、22 送信端末
13、23 ネットワーク
14、31、32 通信装置
140 再送制御部
141 CPU
142 主記憶部
143 補助記憶部
144 通信部
145 入出力部
146 システムバス
150 再送制御機能部
211、311 TCP受信部
221、321 TCP送信部
312、322 アプリケーション処理部
313、323 IP処理部
314、324 入出力処理部
2111、3111 ACK再送制御部
2112、3112 ACK再送タイマ
2211、3211 ACK再送判定部
2212、3212 再送レート判定部
3113 データ受信部
3114 セグメント記憶部
3213 データ送信部
3214 データ記憶部

Claims (10)

  1. 受信したデータパケットの確認応答(ACK、acknowledgement)パケットを送信後、次のデータパケットが到着しないと判断する未着判定時間を設定し、前記未着判定時間内に次のデータパケットが到着しない場合は、当該次のデータパケットの送信を促す再送要求(RACK、retransmission acknowledgement)パケットを前記未着判定時間間隔で繰返し送信する受信端末と、
    前記ACKパケットを受信した以降に前記RACKパケットを前記受信端末から受信すると、直前に受信した前記ACKパケットまたは直前に受信した前記RACKパケットの時刻情報と今回受信した前記RACKパケットの時刻情報に基づく時間差情報を用いて、前記受信端末に未到達のデータパケットを特定して再送する送信端末と、を含み、
    前記時刻情報は、前記受信端末が前記ACKパケットおよび前記RACKパケットの送信時にそれぞれ付すタイムスタンプ、または前記送信端末が前記ACKパケットおよび前記RACKパケットの受信時にそれぞれ付すタイムスタンプであることを特徴とする通信システム。
  2. 送信したデータパケットに対して受信側が返信する確認応答(ACK、acknowledgement)パケットを受信した以降に、次のデータパケットが到着しないと判断する未着判定時間間隔で前記受信側が繰返し送信する、次のデータパケットの送信を促す再送要求(RACK、retransmission acknowledgement)パケットを受信すると、直前に受信した前記ACKパケットまたは直前に受信した前記RACKパケットの時刻情報と今回受信した前記RACKパケットの時刻情報に基づく時間差情報を用いて、前記受信側に未到達のデータパケットを特定して再送する再送制御手段を含み、
    前記時刻情報は、前記受信側が前記ACKパケットおよび前記RACKパケットの送信時にそれぞれ付すタイムスタンプ、または前記再送制御手段が前記ACKパケットおよび前記RACKパケットの受信時にそれぞれ付すタイムスタンプであることを特徴とする通信装置。
  3. 前記再送制御手段は、
    今回受信した前記RACKパケットの前記時刻情報と、直前に受信した前記ACKパケットまたは直前に受信した前記RACKパケットの前記時刻情報との時間差を示す再送ACK間隔時間に基づいて、前記受信側に未到達のデータパケットを特定するACK再送判定手段と、
    前記特定した前記受信側に未到達のデータパケットに対し、ネットワークの状況を考慮して決定した量の再送データを決定する再送レート判定手段と、
    を含むことを特徴とする請求項2に記載の通信装置。
  4. 前記ACK再送判定手段は、前記ACKパケットで確認応答を受けてから送信したデータパケットを含め、当該データパケットの送信時刻から前記再送ACK間隔時間の間に送信したデータパケットを、前記受信側に未到達のデータパケットと特定することを特徴とする請求項3に記載の通信装置。
  5. 前記ACK再送判定手段は、前記再送ACK間隔時間がRTT(Round Trip Time)に占める割合に、輻輳ウィンドウサイズを乗じたデータ量のパケットを、前記受信側に未到達のデータパケットと特定することを特徴とする請求項3に記載の通信装置。
  6. 前記再送レート判定手段は、前記特定した前記受信側に未到達のデータパケットに対し、輻輳ウィンドウサイズとの関係で送信可能なデータ量を判定することを特徴とする請求項3乃至請求項5のいずれかに記載の通信装置。
  7. 前記送信端末は、請求項2乃至請求項6のいずれかに記載の通信装置であることを特徴とする請求項1に記載の通信システム。
  8. 送信したデータパケットに対して受信側が返信する確認応答(ACK、acknowledgement)パケットを受信した以降に、次のデータパケットが到着しないと判断する未着判定時間間隔で前記受信側が繰返し送信する、次のデータパケットの送信を促す再送要求(RACK、retransmission acknowledgement)パケットを受信し、
    直前に受信した前記ACKパケットまたは直前に受信した前記RACKパケットの時刻情報と、今回受信した前記RACKパケットの時刻情報に基づく時間差情報を用いて、前記受信側に未到達のデータパケットを特定して再送し、
    前記時刻情報は、前記ACKパケットおよび前記RACKパケットの送信時にそれぞれ付されるタイムスタンプ、または前記ACKパケットおよび前記RACKパケットの受信時にそれぞれ付されるタイムスタンプである
    ことを特徴とする再送制御方法。
  9. 前記受信側に未到達のデータパケットは、今回受信した前記RACKパケットの前記時刻情報と、直前に受信した前記ACKパケットまたは直前に受信した前記RACKパケットの前記時刻情報との時間差を示す再送ACK間隔時間に基づいて特定し、当該特定した前記受信側に未到達のデータパケットに対し、ネットワークの状況を考慮して決定した量の再送データを決定することを特徴とする請求項8に記載の再送制御方法。
  10. コンピュータを、
    送信したデータパケットに対して受信側が返信する確認応答(ACK、acknowledgement)パケットを受信した以降に、次のデータパケットが到着しないと判断する未着判定時間間隔で前記受信側が繰返し送信する、次のデータパケットの送信を促す再送要求(RACK、retransmission acknowledgement)パケットを受信すると、直前に受信した前記ACKパケットまたは直前に受信した前記RACKパケットの時刻情報と、今回受信した前記RACKパケットの時刻情報に基づく時間差情報を用いて、前記受信側に未到達のデータパケットを特定して再送する再送制御機能手段として機能させ、
    前記時刻情報は、前記受信側が前記ACKパケットおよび前記RACKパケットの送信時にそれぞれ付すタイムスタンプ、または前記再送制御機能手段が前記ACKパケットおよび前記RACKパケットの受信時にそれぞれ付すタイムスタンプであることを特徴とする再送制御プログラム
JP2019501323A 2017-02-27 2018-02-20 通信システム、通信装置、方法およびプログラム Active JP7067544B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2017034413 2017-02-27
JP2017034413 2017-02-27
PCT/JP2018/005881 WO2018155406A1 (ja) 2017-02-27 2018-02-20 通信システム、通信装置、方法およびプログラム

Publications (2)

Publication Number Publication Date
JPWO2018155406A1 JPWO2018155406A1 (ja) 2019-12-26
JP7067544B2 true JP7067544B2 (ja) 2022-05-16

Family

ID=63252733

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019501323A Active JP7067544B2 (ja) 2017-02-27 2018-02-20 通信システム、通信装置、方法およびプログラム

Country Status (3)

Country Link
US (1) US11405148B2 (ja)
JP (1) JP7067544B2 (ja)
WO (1) WO2018155406A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109217978A (zh) * 2017-06-30 2019-01-15 华为技术有限公司 数据传输的方法、装置和系统
US11848700B2 (en) 2020-03-27 2023-12-19 Nec Corporation Communication device, communication controlling method, and non-transitory computer-readable media
CN113242113A (zh) * 2021-04-30 2021-08-10 北京汇钧科技有限公司 数据传输控制方法、装置、电子设备及存储介质
US20230370203A1 (en) * 2022-05-12 2023-11-16 Meta Platforms, Inc. Selective acknowledgement framework for high-performance networks

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007274206A (ja) 2006-03-30 2007-10-18 Ntt Docomo Inc 通信端末及び再送制御方法
WO2013125175A1 (ja) 2012-02-21 2013-08-29 日本電気株式会社 通信システム、通信方法及びデータ受信端末

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4285111B2 (ja) 2003-06-27 2009-06-24 ソニー株式会社 通信装置、その方法およびそのシステム
JP4452983B2 (ja) 2004-01-08 2010-04-21 ソニー株式会社 受信装置および方法、プログラム、並びに記録媒体
US7496038B2 (en) * 2005-12-12 2009-02-24 International Business Machines Corporation Method for faster detection and retransmission of lost TCP segments
DE102007011071B4 (de) 2007-03-07 2009-06-18 T-Mobile Internationale Ag Verfahren zur Verbesserung eines TCP Datenübertragungsprozesses im Fall einer Unterbrechung des physikalischen Übertragungsmediums
JP4925916B2 (ja) 2007-05-11 2012-05-09 Kddi株式会社 データ送信装置、データ送信方法及びデータ送信プログラム
EP2299621A4 (en) * 2008-07-03 2013-12-18 Fujitsu Ltd CODIER, DECODER, CODING METHOD AND DECODING METHOD
EP2416518B1 (en) * 2010-08-02 2013-01-02 Alcatel Lucent Method for transmission of data in a radio communication system, first network node and second network node thereof

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007274206A (ja) 2006-03-30 2007-10-18 Ntt Docomo Inc 通信端末及び再送制御方法
WO2013125175A1 (ja) 2012-02-21 2013-08-29 日本電気株式会社 通信システム、通信方法及びデータ受信端末

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
長谷川 洋平 他,光空間通信用トランスポートプロトコルTCP-FSOの実環境評価,電子情報通信学会技術研究報告,日本,一般社団法人電子情報通信学会,2012年05月,Vol.112 No.27,p.17-22,NS2012-19

Also Published As

Publication number Publication date
US11405148B2 (en) 2022-08-02
WO2018155406A1 (ja) 2018-08-30
US20200028631A1 (en) 2020-01-23
JPWO2018155406A1 (ja) 2019-12-26

Similar Documents

Publication Publication Date Title
JP5816718B2 (ja) 通信装置、通信システム、およびデータ通信の中継方法
CN108494782B (zh) 一种基于udp的数据传输方法、终端设备及存储介质
JP4587053B2 (ja) 通信装置、通信システム、パケット欠落検出方法、およびパケット欠落検出プログラム
CN107979449B (zh) 一种数据传输方法及装置
US20160323062A1 (en) Packet recovery in interactive real-time media protocol
CN101369877B (zh) 无线传输控制协议处理方法和设备
JP5867188B2 (ja) 情報処理装置、輻輳制御方法および輻輳制御プログラム
JP2004537218A (ja) Nackベースのプロトコルにおける輻輳制御の信頼性のある効率的な対応方法
JP7067544B2 (ja) 通信システム、通信装置、方法およびプログラム
CN109981385B (zh) 一种实现丢包检测的方法、装置和系统
JP4654926B2 (ja) 通信システム、通信装置及びそれらに用いる輻輳制御方法並びにそのプログラム
US20180167168A1 (en) Low latency communications
JP5080654B2 (ja) 通信装置、通信方法
CN107959554B (zh) 一种数据的重传方法及装置
US8279756B2 (en) Communication terminal, communication control method, and communication control program
WO2016201904A1 (zh) 一种基于tcp的数据传输方法及装置
EP3939191B1 (en) Device and method for delivering acknowledgment in network transport protocols
CN101141393B (zh) 通信终端、通信控制方法
JP4229807B2 (ja) データ転送方法とtcpプロキシ装置およびそれを用いたネットワークシステム
CN116566920A (zh) 一种数据传输控制方法及相关装置
JP2000022744A (ja) パケット通信システム、パケット通信装置及びパケット通信方法
JP6011813B2 (ja) 通信装置およびその通信制御方法
JP5046197B2 (ja) 通信装置、通信システム、パケット欠落検出方法、およびパケット欠落検出プログラム
JP4925916B2 (ja) データ送信装置、データ送信方法及びデータ送信プログラム
EP3613164B1 (en) Device and method for monitoring a tcp connection

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190801

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210115

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20211020

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: 20220329

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220411

R151 Written notification of patent or utility model registration

Ref document number: 7067544

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151