JP3784801B2 - 伝送制御方法、通信装置、通信システム及びプログラム - Google Patents

伝送制御方法、通信装置、通信システム及びプログラム Download PDF

Info

Publication number
JP3784801B2
JP3784801B2 JP2003430449A JP2003430449A JP3784801B2 JP 3784801 B2 JP3784801 B2 JP 3784801B2 JP 2003430449 A JP2003430449 A JP 2003430449A JP 2003430449 A JP2003430449 A JP 2003430449A JP 3784801 B2 JP3784801 B2 JP 3784801B2
Authority
JP
Japan
Prior art keywords
transmitted
acknowledgment
data blocks
confirmation response
data block
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.)
Expired - Fee Related
Application number
JP2003430449A
Other languages
English (en)
Other versions
JP2004222271A (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.)
NTT Docomo Inc
Original Assignee
NTT Docomo Inc
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 NTT Docomo Inc filed Critical NTT Docomo Inc
Priority to JP2003430449A priority Critical patent/JP3784801B2/ja
Publication of JP2004222271A publication Critical patent/JP2004222271A/ja
Application granted granted Critical
Publication of JP3784801B2 publication Critical patent/JP3784801B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

本発明は、通信網を介して行われるデータ通信における再送制御のための技術に関する。
近年、TCP(Transmission Control Protocol)に従ってデータの送受信を行う装置が一般的に普及している。TCPは、OSI参照モデルにおけるトランスポート層の通信プロトコルの代表的なものとして周知である。このTCPでは、上位層から渡されたデータストリームをセグメントに分割し、通信相手である受信装置に送信する。TCPは、分割されたデータのセグメントを順番どおり確実に受信装置まで送り届けるための機能を提供している。具体的には、TCPでは、各データセグメントにデータの順番を示す番号(以下、シーケンス番号という)を付与する。送信装置は、データセグメントを送信する際にはこのシーケンス番号をヘッダにセットして送信する。また、送信装置は各データセグメントを送信するとき、これと同時にタイマをセットする。そして、このタイマがタイムアウト値に到達するまでに確認応答を受信しなかった場合には、送信装置はデータセグメントが受信装置まで到達することなく喪失したと一応の判断を行い、当該喪失したとみなされたデータセグメントを同受信装置に対して再送するようになっている。ここで、タイムアウト値は、データセグメントを送信してから、当該データセグメントに対する確認応答を受け取ると期待する時間(データセグメントの予測往復時間)に基づいて定められる。
送信装置において、受信した確認応答がどのデータセグメントに対する確認応答であるかは、確認応答のヘッダに含まれる確認応答番号を参照して判断される。以下、この判断について説明する。まず、受信装置がデータセグメントを受信し、これに対する確認応答を送信する際には、受信装置が次に受信を期待するシーケンス番号(以下、確認応答番号という)を確認応答のヘッダにセットする。例えば、500から始まり、1000、1500・・・と続くシーケンス番号が用いられる場合に、シーケンス番号500を持つデータセグメントを受信したときに送信装置に送信する確認応答番号は1000となる。送信装置は、このような確認応答番号を有する確認応答を受信することにより、送信装置が送信したデータセグメントが無事受信装置によって受信されたと判定し、後続のデータセグメントを送信する。
尚、このように送信装置が確認応答番号1000を有する確認応答を受信する場合とは、送信装置がシーケンス番号1000を有するデータセグメントを未送信であるか、送信済みであってもそのデータセグメントが受信装置に届いていない場合である。この確認応答番号は、受信装置が、シーケンス番号1000を有するデータセグメントを受信するまでは常に1000となる。例えば、シーケンス番号1000を有するデータセグメントが喪失されたなどの理由により、その後続セグメントであるシーケンス番号1500を有するデータセグメントの方が先に受信装置に到着している場合であっても、受信装置がシーケンス番号1000を有するデータセグメントを受信するまでは、受信装置から送信される確認応答の確認応答番号には1000がセットされる。つまり、確認応答番号には、受信装置が未だ受信していないデータセグメントの最も若いセグメントのシーケンス番号が常にセットされる。
以上説明したデータセグメントの伝送において、各データセグメントを確実に送信するためには、ひとつのデータセグメントを送信した後に、それに対する確認応答を受信してから次のデータセグメントを送信する方式を採用するのが好ましい。しかし、この方式は確実ではあるがデータの伝送効率が悪くなってしまう。伝送効率を高めるため、TCPでは、ウィンドウによって定められる数のデータセグメントを一度に送信する方式を採用している。ウィンドウとは、確認応答を受信する前に受信装置に対して送信することが許されているデータのバイト数、つまりデータセグメントの数である。このウィンドウのサイズは、受信装置におけるバッファの空き容量を超えない範囲で送信装置によって定められる。送信装置が送信済みのデータセグメントに対して確認応答を受信すると、ウィンドウはその時に確認応答を受信したデータセグメントの数だけスライドし、ウィンドウがスライドした数だけ後続のデータセグメントが送信される。これが、「スライディングウィンドウ方式」である。このスライディングウィンドウ方式では、ウィンドウのサイズを制御することによりデータの流量を制御することができる。
ところで、このスライディングウィンドウ方式に従って複数のデータセグメントが受信装置に対して送信された後、送信装置と受信装置間の通信路が輻輳状態になるなどして、通信が停止状態となることがある。特に、通信路が無線区間を含むような場合には、電波環境が悪化する可能性が高い。このような状況下で送信装置がデータセグメントを送信しても、当該データセグメントは受信装置へ届かず中途で喪失してしまうか、通信網の通信状態が復元されるまで通信網のどこかのノードに一時的に保存されることになる。その後、無線環境が改善したりして通信が再開されると、網内に一時的に保存されていたデータセグメントが遅延した後に受信装置に届く場合がある。
ここで、通信路の状態が悪化している時間が長い場合には次のような事態が発生する。まず、送信装置では、データセグメント送信後、タイムアウト発生前に確認応答が受信されない場合には、送信済みであり且つ確認応答を未受信であるデータセグメントの先頭セグメントが再送される。その結果、受信装置には、網内に滞留していたデータセグメント(以下、オリジナルデータセグメントという)と、再送されたデータセグメント(以下、再送データセグメントという)との両方が届くことになる。そして、受信装置は、オリジナルデータセグメントを受信したときに、これに対する確認応答を送信し、再送データセグメントを受信したときに、これに対する確認応答を送信する。
このオリジナルデータセグメントに対する確認応答と再送データセグメントに対する確認応答は、通常の場合、同一の確認応答番号を有する。このため、送信装置がひとつめの確認応答を受信した時点では、当該確認応答がオリジナルデータセグメントに対するものなのか又は再送データセグメントに対するものなのかを判別することができない。このような場合、送信装置は、再送データセグメント送信後最初に確認応答を受信すると、当該確認応答は再送データセグメントに対する確認応答であるとみなし、オリジナルデータセグメントは受信装置に届かなかったものと判断する。以下、2つの事例を挙げ、このような判断が行われる理由について詳述する。
図10は、従来のサーバ装置10'(送信装置)とクライアント装置50(受信装置)との間でパケット通信を行う場合の一例を示すシーケンスチャートである。尚、同図において、サーバ装置10'における各矢印の始点の右側に示される4桁の番号は、サーバ装置10'からパケット通信により送信されるデータセグメントのシーケンス番号である。また、クライアント装置50における各矢印の始点の左側に示される4桁の番号は、クライアント装置50から送信される確認応答に含まれる確認応答番号である。ここでは、初期ウィンドウサイズは「3」であると仮定する。つまり、送信装置は、確認応答の受信を待たずに3つのデータセグメントを送信可能である。
図10において、サーバ装置10'からクライアント装置50へシーケンス番号0、1000、2000を有するそれぞれのオリジナルデータセグメントS1、S2、S3が送信される。この際、サーバ装置10'ではタイマがセットされる。
図示の例では、網内の通信環境の悪化により、当該オリジナルデータセグメントS1、S2、S3は、クライアント装置50により遅延して順次受信される。クライアント装置50は、オリジナルデータセグメントS1を受信すると確認応答番号1000を有する確認応答R1が送信される。同様に、クライアント装置50は、オリジナルデータセグメントS2を受信すると確認応答番号2000を有する確認応答R2を送信し、オリジナルデータセグメントS3を受信すると確認応答番号3000を有する確認応答R3を送信する。
図10に示す例において、サーバ装置10'では、タイマによって測定される経過時間がタイムアウト値に到達しても確認応答が受信されない。このため、サーバ装置10'では、タイムアウトとなった時点で、オリジナルデータセグメントS1はクライアント装置50に受信されなかったと判定されて、シーケンス番号0を有するデータセグメント(再送データセグメントS′1)が再送される。この時、タイムアウトが発生した時点でウインドウサイズが最小値に縮小されるため、再送データセグメントS′1のみが送信されている。
その後、サーバ装置10'では、確認応答R1が受信されるが、上述の事情で当該確認応答R1がオリジナルデータセグメントS1に対応するものなのか又は再送データセグメントS′1に対応するものなのかを判定することができない。その結果、再送データセグメントS′1に対応するものであるとみなされて、シーケンス番号1000を有するデータセグメント(再送データセグメントS′2)が送信される。また、確認応答R1を受信することにより、ウィンドウサイズが1データセグメント分増加するため、後続のシーケンス番号2000を有するデータセグメント(再送データセグメントS′3)も送信される。
次いで、サーバ装置10'では、クライアント装置50から送信された確認応答番号2000を有する確認応答R2が受信され後続のデータセグメント(オリジナルデータセグメントS4以降のデータセグメント)が順次送信される。
この例では、オリジナルデータセグメントS2とS3が実際は受信装置に無事受信されているにもかかわらず、再送されている(再送データセグメントS'2およびS'3)。すなわち、データセグメントS2とS3はいずれも2回ずつ受信装置に受信されているので、結果的に無駄なデータセグメントの再送が行われてしまったと云える。また、図10からも明らかなように、再送データセグメントS'2およびS'3に対する確認応答R'2およびR'3が送られるので、合計で4つのデータセグメントの送信が結果的には無駄であった。
図11は、無駄なセグメントの再送が起こりうる別の事例について説明する図である。TCPでは、受信装置が過度の確認応答を送信しないように、確認応答の送信を所定の時間内であれば遅らせ、次のデータ送信に相乗りできることが規定されている(遅延確認応答、RFC 2581)。しかし、その所定の時間内であっても、受信装置は2個のフルサイズのデータセグメントを連続受信した場合には次のデータ送信を待つことなく即座に確認応答を送信するべきとなっている。つまり、2個のデータセグメントが例えば200ミリ秒などの短い時間差で連続して受信された場合は、2個のデータセグメントの受信を通知する確認応答を1個の確認応答で代用することになっており、具体的には、受信装置は、2番目に受信したデータセグメントの確認応答を送信することにより、2個のデータセグメントの受信を送信装置に通知する。図11に示す事例はこの取り決めが適用された場合を想定している。
図11において、図10の場合と同様にオリジナルデータセグメントS1、S2、S3がサーバ装置10'から送信され、通信路の障害が理由で遅延した後、クライアント装置50に順次受信される。次いで、上記取り決めによりクライアント装置50は確認応答R2を送信する。一方、サーバ装置10'では、タイムアウト発生により再送データセグメントS'1を送信する。この時、タイムアウト発生により、ウィンドウサイズが1データセグメント分に縮小されるので、再送データセグメントS'1のみが送信されている。
次に、サーバ装置10'は、クライアント装置50から送信された確認応答R2を受信する。サーバ装置10'は、確認応答R2に含まれる確認応答番号2000を参照し、同シーケンス番号を有するセグメント、即ち、オリジナルデータセグメントS3を再送する。また、この時、確認応答R2を受信することによりウィンドウサイズが1データセグメント分増加するので、後続のオリジナルデータセグメントS4(シーケンス番号3000)も送信される。
次いで、サーバ装置10'では、クライアント装置50から送信された確認応答番号3000を有する確認応答R3が受信される。この確認応答R3の受信により、サーバ装置10'では、後続のシーケンス番号4000を有するオリジナルデータセグメントS5以降のデータセグメントが順次送信される。
この事例においては、オリジナルデータセグメントS3がクライアント装置50に既に受信されているにもかかわらず再送され、図11に示すようにそれに対する確認応答R′3も送信される。つまり、再送データセグメントS′3及び確認応答R′3が無駄に送られることが分かる。
データセグメント再送後最初の確認応答がオリジナルデータセグメントに対するものなのか又は再送データセグメントに対するものなのかを判別することができない場合に、仮にオリジナルデータセグメントに対するものであると判断すると、このような無駄な再送は行われない。
しかし、このような判断をすると、実際は再送データセグメントに対する確認応答であるのにオリジナルデータセグメントに対する確認応答であるとみなしてしまう場合が生じる。この場合、データセグメントの並びの後方にウィンドウがスライドされ、後続のオリジナルデータセグメントが送信される。このようなことが繰り返し発生すると、サーバ装置10'から送信され、クライアント装置50に到着していないデータセグメントの数が累増するおそれがある。
このような事態に陥るリスクを避けるため、確認応答がオリジナルデータセグメントに対するものなのか又は再送データセグメントに対するものなのかを判別することができない場合に、オリジナルデータセグメントに対するものであると判断することにしているのである。
しかし、このような判断手法を採った場合、データセグメントの無駄な再送が行われるのを回避することができない。
このような問題を解決する技術が非特許文献1及び非特許文献2に記載されている。非特許文献1には、タイムスタンプオプション(RFC 1323)を利用することにより、確認応答がオリジナルデータセグメントに対するものか又は再送データセグメントに対するものかについての判別を正確に行うことを可能とさせる技術が記載されている。
また、非特許文献2には、有線パケット通信網を介するパケット通信において、統計情報を用いて、確認応答がオリジナルデータセグメントに対するものか又は再送データセグメントに対するものかを推定する技術が記載されている。
この文献では、送信装置と受信装置との間の通信コネクションが確立されているときにデータセグメントを送信してから確認応答が届くまでの時間を実測して得られるラウンドトリップタイムのうち最小のラウンドトリップタイムの1/2を閾値として上記の推定を行うことが提案されている。つまり、再送データセグメントを送信してからひとつめの確認応答を受信するまでの経過時間が閾値以上の場合(又は閾値を超過した場合)には再送データセグメントに対する確認応答とみなし、閾値未満の場合(又は閾値以下の場合)にはオリジナルデータセグメントに対する確認応答とみなす。
最小のラウンドトリップタイムの1/2を閾値とすることは、以下に列記する事情に基づいて提案されている。
[事情1] 統計をとったところ、再送データセグメントを送信してから最小のラウンドトリップタイムの1/2が経過するまでの期間、3/4が経過するまでの期間、及び1/1が経過するまでの期間内にオリジナルデータセグメントに対する確認応答を受信する確率に大差はないことが分かった。
[事情2] 統計をとったところ、再送データセグメントを送信してから最小のラウンドトリップタイムの1/2が経過した辺りから再送データセグメントに対する確認応答を受信する確率が急激に増加することが分かった。
アール・ルドウィグ、外1名 (R. Ludwig, et. al),"TCPにおけるアイフル検知アルゴリズム"("The Eifel Detection Algorithm for TCP" <draft-ietf-tsvwg-tcp-eifel-alg-04.txt>),[online],2002年7月24日,インターネット<URL:http://www.watersprings.org/pub/id/draft−ietf−tsvwg−tcp−eifel−alg−04.txt> マーク・アルマン、外1名 (Mark Allman, et. al),"エンドトゥエンドのネットワークパス特性の推測について」("On Estimating End-To-End Network Path Properties"),ACM SIGCOMM '99,1999年10月,第29巻,第4号, p.263−274,(2.8節)
しかしながら、非特許文献1の技術においては、通信環境が良好であっても、送信装置においてはオリジナルデータセグメントに対してタイムスタンプ情報が付加され、受信装置においては確認応答に対してタイムスタンプ情報が付加される。つまり、どちらのデータセグメントについてもその情報量が増加する。したがって、この技術を、通信量に応じて通信料金が変化する従量制課金を前提としている移動パケット通信網を介したパケット通信に適用した場合、通信料の上昇を招いてしまう。データの再送が必要となるケースが少ない良好な通信環境においては、これは不要な通信量の上昇である。また、言うまでもなく、通信料の上昇は受信装置の使用者や送信装置の使用者の望むところではない。
代わりに、当該技術を応用して、データセグメントに対して情報を付加するのではなく、通信時に使用されるTCPヘッダ内の予約ビットに情報を設定する方法も考えられる。しかし、このような方法を用いる場合、既存の通信システムでは対応できず、従って、送信装置及び受信装置に対して、当該方法を用いるための大幅な設計変更が必要となってしまう。
また、非特許文献2の技術を、移動通信網を介する移動通信環境のように無線区間でのデータセグメントの遅延が非常に大きい通信環境に用いても、最適な判別結果を得ることはできない。
本発明は、以上説明した事情に鑑みてなされたものであり、送信装置に受信される確認応答データセグメントがオリジナルデータセグメントに対するのものであるか又は再送データセグメントに対するものであるのかを適切に判別することができる技術を提供することを目的としている。この技術によれば、データセグメントの情報量を増加させることなく、且つ受信装置の設計変更を必要とせず、また送信装置に対しては軽微な設計変更を行えば済む。
上記課題を解決するため、本発明は、送信装置から受信装置に連続的に送信されるべき各データブロックにシーケンス情報を割り当てる割り当て過程と、複数のデータブロックに前記シーケンス情報を付加し、前記受信装置に対して順次送信する送信過程と、前記受信装置に対して送信された複数のデータブロックのうち、前記受信装置から確認応答信号を受信していないデータブロックを再送する再送過程と、前記受信装置に対して送信された複数のデータブロックのうち、前記受信装置が未だ受信していない先頭のデータブロックのシーケンス情報を含む確認応答信号を、前記受信装置から受信する受信過程と、前記再送が行われたデータブロックのシーケンス情報および前記確認応答信号に含まれる前記シーケンス情報に基づいて、前記確認応答信号が前記送信された複数のデータブロックの1に対する確認応答であるか否かを判断する判断過程とを有し、前記送信過程は、前記確認応答信号が前記送信された複数のデータブロックの1に対する確認応答であると判断された場合に、前記受信装置に対して送信された複数のデータブロックに後続するデータブロックを送信することを特徴とする通信網における伝送制御方法を提供する。前記データブロックの一例としては、TCPにおけるデータセグメントがある。また、好ましくは、前記受信装置は、移動通信網を介してパケット通信を行う移動通信端末である。
好ましい態様において、前記再送されたデータブロックの直後に後続するデータブロックのシーケンス情報を記憶手段に記憶する過程を更に有し、前記判断過程において、前記記憶手段に記憶された前記シーケンス情報および前記確認応答信号に含まれる前記シーケンス情報を比較することにより前記判断を行うようにしてもよい。この場合、前記確認応答信号に含まれる前記シーケンス情報により特定されるデータブロックが、前記記憶手段に記憶されている前記シーケンス情報によって特定されるデータブロックに後続するデータブロックの1である場合に、前記確認応答信号が前記送信済みである複数のデータブロ
ックの1に対する確認応答であると判断する。
別の好ましい態様において、前記判断過程は、前記再送が行われたデータブロックに対する確認応答信号に含まれると予測されるシーケンス情報である予測確認応答番号と前記確認応答信号に含まれるシーケンス情報である比較対象確認応答番号を比較することにより前記判断を行い、前記比較対象確認応答番号により特定されるデータブロックが前記予測確認応答番号によって特定されるデータブロックに後続するデータブロックの1である場合に、前記確認応答信号が前記送信された複数のデータブロックの1に対する確認応答であると判断するようにしてもよい。好ましくは、前記再送過程において前記データブロックが再送されたときに、前記予測確認応答番号を前記送信装置の記憶部に記憶する記憶過程をさらに有し、前記判断過程は、前記記憶部に記憶された予測確認応答番号と前記比較対象確認応答番号を比較することにより前記判断を行うようにしてもよい。この場合、前記予測確認応答番号は、前記再送が行われたデータブロックに後続するデータブロックのシーケンス情報である。また、前記判断過程は、前記予測確認応答番号としてsnd_nxtの値を用いるようにしてもよい。
上記伝送制御方法の別の好ましい態様において、前記伝送制御方法は、前記送信過程において送信される前記複数のデータブロックの数は、確認応答信号を受信することなく送信できるデータブロックの数であるウィンドウサイズに従って定められ、前記再送過程において、予測時間内に確認応答が受信されていないデータブロックの再送を行う場合には、前記ウィンドウサイズを最小値に変更し、変更後のウィンドウサイズにより定められる数のデータブロックを再送し、前記送信過程は、前記判断過程において前記確認応答信号が前記送信された複数のデータブロックの1に対する確認応答であると判断された場合には、前記再送過程において前記ウィンドウサイズが最小値に変更される前のウィンドウサイズと等しいかまたはより大きくなるように前記ウィンドウサイズを増加させ、増加後のウィンドウサイズにより定められる数の前記後続するデータブロックを送信する。
また、本発明は、受信装置に対して連続的に送信されるべき各データブロックにシーケンス情報を割り当てる割り当て手段と、複数のデータブロックに前記シーケンス情報を付加し、前記受信装置に対して順次送信する送信手段と、前記受信装置に対して送信された複数のデータブロックのうち、前記受信装置から確認応答信号を受信していないデータブロックを再送する再送手段と、前記受信装置に対して送信された複数のデータブロックのうち、前記受信装置が未だ受信していない先頭のデータブロックのシーケンス情報を含む確認応答信号を、前記受信装置から受信する受信手段と、前記再送が行われたデータブロックのシーケンス情報および前記確認応答信号に含まれる前記シーケンス情報に基づいて、前記確認応答信号が前記送信された複数のデータブロックの1に対する確認応答であるか否かを判断する判断手段とを有する通信装置を提供する。前記送信手段は、前記確認応答信号が前記送信された複数のデータブロックの1に対する確認応答であると判断された場合に、前記受信装置に対して送信された複数のデータブロックに後続するデータブロックを送信することを特徴としている。
好ましい態様において、前記再送されたデータブロックの直後に後続するデータブロックのシーケンス情報を記憶する記憶手段を有し、前記判断手段は、前記記憶手段に記憶された前記シーケンス情報および前記確認応答信号に含まれる前記シーケンス情報を比較することにより前記判断を行う。この場合、前記判断手段は、前記確認応答信号に含まれる前記シーケンス情報により特定されるデータブロックが、前記記憶手段に記憶されている前記シーケンス情報によって特定されるデータブロックに後続するデータブロックの1である場合に、前記確認応答信号が前記送信済みである複数のデータブロックの1に対する確認応答であると判断する。
別の好ましい態様において、前記通信装置は、前記送信手段により送信される前記複数のデータブロックの数は、確認応答信号を受信することなく送信できるデータブロックの数であるウィンドウサイズに従って定められ、前記再送手段は、予測時間内に確認応答が受信されていないデータブロックの再送を行う場合には、前記ウィンドウサイズを最小値に変更し、変更後のウィンドウサイズにより定められる数のデータブロックを再送し、前記送信手段は、前記判断手段により前記確認応答信号が前記送信された複数のデータブロックの1に対する確認応答であると判断された場合には、前記再送手段において前記ウィンドウサイズが最小値に変更される前のウィンドウサイズと等しいかまたはより大きくなるように前記ウィンドウサイズを増加させ、増加されたウィンドウサイズにより定められる数の前記後続するデータブロックを送信するようにしてもよい。
さらに、本発明は、上記通信装置が有する手段または上記伝送制御方法が有する過程を実行する手段を、少なくとも2の装置に具備させることにより上記様々な態様における伝送制御方法を実現可能な通信システムを提供する。加えて、上述した様々な態様における伝送制御方法をコンピュータに実行させるためのプログラムを提供する。このプログラムは、当該プログラムが記憶された磁気テープ、磁気ディスク、フロッピー(登録商標)ディスク、光記録媒体、光磁気記録媒体、DVD(Digital Video Disk)、RAM等、その他記録媒体に記録され得る。
本発明によれば、送信装置に受信される確認応答がオリジナルデータセグメントに対するのものであるか又は再送データセグメントに対するものであるのかを適切に判別することができ、この結果、データセグメントの不必要な送信を防ぐことが可能となる。この技術によれば、データセグメントの情報量を増加させることなく、且つ受信装置に対する設計変更を一切必要とせず、また送信装置に対しては軽微な設計変更で済む。
以下、図面を参照して本発明の実施の形態を詳細に説明する。なお、実施の形態を説明するための全図において、同一機能を有するものは同一符号を付け、その繰り返しの説明は省略する。
[第1実施形態]
(1.構成)
<通信システム1の構成>
図1は、この発明の第1実施形態に係る通信システム1の構成を例示する図である。
通信端末40は、クライアント装置50と接続され、クライアント装置50と通信を行う。移動パケット通信網30は、当該移動パケット通信網30に収容される通信端末40に対して、パケット通信サービスを提供する。サーバ装置10は、インターネット20、移動パケット通信網30、通信端末40を介してクライアント装置50とパケット通信を行う。なお、本実施形態においては、TCP(Transmission Control Protocol)に従って、パケット通信を行うことによりデータセグメントを送信するものとする。
<サーバ装置10の構成>
次に、サーバ装置10の構成について説明する。サーバ装置10の構成は一般的なコンピュータと同様であるから、本発明に係る構成のみについて図2を参照しながら説明する。
CPU100は、記憶部105に記憶されるプログラムを実行することにより、サーバ装置10の装置各部の制御を行う。また、CPU100は、タイマ100aを備える。タイマ100aは、CPU100によりセットされた一定時間が経過すると、トリガ信号を出力する。
記憶部105は、RAM(Random Access Memory)102と、ROM(Read Only Memory)103と、HD(Hard Disk)104とから構成される。
ROM103には、CPU100にデータセグメントの送信制御処理を行わせるためのプログラムが記憶されている。このデータセグメント送信制御処理において、CPU100は、クライアント装置50へデータを送信する場合、当該データをセグメント単位に分割し、分割したデータセグメントの各々にヘッダを付加し、これらを順次クライアント装置50へ送信する。
なお、本実施形態においては、CPU100は、データセグメントをクライアント装置50へ送信する場合、HD104に記憶したパラメータ変数(第2実施形態に詳述する)に基づいて上述したスライディングウィンドウ方式による制御を行うものとする。
データセグメントに付加されるヘッダのデータ構造は、図3に示されるような構造になっている。CPU100は、同図におけるシーケンス番号に当該データセグメントがデータのどの位置にあたるのかを相対的に示す情報をセットし、その他必要な情報を各データエリアにセットして、これを当該データセグメントに付加する。
CPU100は、クライアント装置50へデータセグメントを送信した後、当該データセグメントがクライアント装置50に受信されたことを示す確認応答の受信を待機する。なお、確認応答のヘッダのデータ構造も、図3に示されるような構造になっている。同図における確認応答番号には、クライアント装置50が次に受信を期待するデータセグメントのシーケンス番号がクライアント装置50によりセットされる。
CPU100は、このような確認応答の受信を待機するため、タイマ100aに一定時間(以下、タイムアウト値という)をセットし、タイマ100aにその後の経過時間を計測させる。この計測の間、確認応答を受信する前に、タイマ100aからタイムアウト値が経過したことを示すトリガ信号が出力されると、CPU100は、当該データセグメントがクライアント装置50に受信されなかったと判定する。そして、タイマ100aの値をリセットするとともに、当該データセグメントを再送する。このデータセグメント再送後に確認応答を受信すると、当該確認応答がオリジナルデータセグメントに対するものであるのか又は再送データセグメントに対するものであるのかの判定処理を以下のように行う。
この判定処理において、CPU100は、再送したデータセグメントに対する確認応答が有すると予測される確認応答番号(以下、予測確認応答番号という)の値と、受信した確認応答の確認応答番号(以下、比較対象確認応答番号という)の値とを比較する。ここで、再送データセグメントに対する予測確認応答番号の値とは、当該再送データセグメントに後続するデータセグメントのシーケンス番号の値と同じである。本実施形態では、データセグメントを再送した際に、その後続データセグメントのシーケンス番号の値を予測確認応答番号としてRAM102に記憶しておき、確認応答を受信することにより判定処理を実行する際には記憶しておいた予測確認応答番号を読み出して比較のために用いるようになっている。尚、後述の第2実施形態において説明するが、サーバ装置10は複数種類のパラメータ変数を記憶し、輻輳制御に用いている。この変数のうち、次に送信するデータセグメントのシーケンス番号を記憶する変数snd_nxtの値は、再送されたデータセグメントに後続する値となっているはずである。従って、予測確認応答番号をRAM102に記憶しておくのではなく、snd_nxtの値を用いて上記判定を行ってもよい。
そして、比較対象確認応答番号が予測確認応答番号よりも大きい場合には、当該確認応答がオリジナルデータセグメントに対応するものであると判定する。即ち、オリジナルデータセグメントはクライアント装置50に受信されたと判定し、続いて、後続のオリジナルデータセグメントを送信する。
また、比較対象確認応答番号の値が予測確認応答番号の値と同じである場合には、当該確認応答がオリジナルデータセグメントに対応するものであるか又は再送データセグメントに対応するものであるか判定できない。そのため、CPU100は、当該確認応答は再送データセグメントに対応するものだと推定する。即ち、オリジナルデータセグメントはクライアント装置50に受信されなかったと判定し、続いて、当該再送データセグメントに後続する再送データセグメントが有るか否かを判定する。この判定結果が肯定的で有れば、後続の再送データセグメントを送信し、この判定結果が否定的で有れば、後続のオリジナルデータセグメントを送信する。
以上のようにして、CPU100は判定処理を行う。
<クライアント装置50の構成>
クライアント装置50は、一般的なコンピュータと同様であるから、本実施形態に係る機能についてのみ説明する。
クライアント装置50は、サーバ装置10からデータセグメントを受信すると、当該データセグメントを受信したことを示す確認応答をサーバ装置10へ送信する。具体的には、確認応答に含まれる確認応答番号に、当該データセグメントに後続するデータ位置を示すシーケンス番号をセットして、これをサーバ装置10へ送信する。
しかし、クライアント装置50がサーバ装置10とパケット通信を行っている際、例えば通信端末40と移動パケット通信網30との間の無線通信環境が悪化したとする。この場合、クライアント装置50はサーバ装置10から送信されたデータセグメントを遅延して順次受信することになる。このとき、例えば、2個のデータセグメントを受信する間隔が所定の時間よりも短い場合には、2つめのデータセグメントに対する確認応答により、2個のデータセグメントを受信したことをサーバ装置10に通知する。具体的には、確認応答の確認応答番号に、2つ目に受信したデータセグメントに後続するデータのシーケンス番号をセットし、これをサーバ装置10へ送信する。
(2.動作)
次に本実施形態の動作について説明する。
図4は、サーバ装置10とクライアント装置50との間でパケット通信を行う場合の一例を示すシーケンスチャートである。また、図5は、サーバ装置10の本実施形態に係るデータセグメントの送信動作及び受信動作を示すフローチャートである。なお、本実施形態の動作においては、スライディングウィンドウ方式を用いて、データセグメントを送信するものとする。本実施形態において、通信開始時点でのウィンドウサイズを「3」とし、クライアント装置50が受信可能なデータセグメントの容量は送信装置が設定するウィンドウのサイズに対して十分に大きいと仮定する。また、説明の簡易のため、ウィンドウサイズは「3」のまま固定とし、輻輳制御によるウィンドウの増加は行わない。また、再送タイムアウトが発生した場合には、再送タイムアウトの発生を検出する直前のウィンドウサイズをRAM102に記憶する。
まず、図4において、サーバ装置10から、シーケンス番号0、1000、2000をそれぞれ有するデータセグメント(オリジナルデータセグメントS1、S2、S3)がクライアント装置50へ送信される。
しかし、図示の例では、通信端末40と移動パケット通信網30との間の無線通信環境が悪化し、当該オリジナルデータセグメントS1、S2、S3の送信が一時的に中断されてしまう。その後、無線通信環境が良好となり、通信が再開されると、オリジナルデータセグメントS1、S2、S3はクライアント装置50に送信される。
一方、クライアント装置50では、オリジナルデータセグメントS1、S2、S3が順次遅延して受信される。ここでは、オリジナルデータセグメントS1及びS2の受信間隔が所定の時間より短かったとし、確認応答番号2000を有する確認応答R2が、オリジナルデータセグメントS1に対応する確認応答とオリジナルデータセグメントS2に対応する確認応答としてサーバ装置10へ送信される。
次に、以上説明したところまでのサーバ装置10の動作について、図5を参照しながら説明する。
サーバ装置10のCPU100は、ステップS300において、オリジナルデータセグメントS1、S2、S3の送信を行う。次いで、オリジナルデータセグメントS1に対してクライアント装置50から送信される確認応答の受信を待機する。このため、CPU100は、タイマ100aにタイムアウト値をセットし、タイマ100aにその後の経過時間の計測をさせる(ステップS301)。
そして、CPU100は、何らかの確認応答を受信したか否かを判断し(ステップS302)、この判断結果が「NO」である場合にはタイマ100aのタイムアウトが発生したか否かを判断する(ステップS303)。そして、ステップS303の判断結果が「NO」である場合には、ステップS302に戻る。以後、CPU100は、タイマ100aにタイムアウトが発生するまでの間、確認応答が受信されない限り、ステップS302およびS303の判断を繰り返す。
ここで、データセグメントS1〜S3のクライアント装置50への到達が遅れ、クライアント装置50から送信された確認応答R2を受信する前に、タイムアウト値が経過したとする。
この場合、確認応答を受信することなく、タイマ100aによって測定される経過時間がタイムアウト値に達し、トリガ信号が出力される(ステップS302;NO、ステップS303;YES)。この場合、CPU100は、タイマ100aの値をリセットするとともに、処理をステップS304へ進める。
ステップS304において、CPU100は、オリジナルデータセグメントS1がクライアント装置50に受信されなかったと判定し、シーケンス番号0を有するデータセグメント(図4における再送データセグメントS′1)をクライアント装置50へ再送するとともに、タイマ100aにタイムアウト値をセットし、タイマ100aに経過時間の計測をさせる。この時、タイムアウト発生により、ウィンドウサイズは最小値に縮小されるので、1データセグメントのみが再送される。
そして、CPU100は、何らかの確認応答を受信したか否かを判断し(ステップS305)、この判断結果が「NO」である場合にはタイマ100aのタイムアウトが発生したか否かを判断する(ステップS306)。そして、ステップS306の判断結果が「NO」である場合には、ステップS305に戻る。以後、CPU100は、タイマ100aにタイムアウトが発生するまでの間、確認応答が受信されない限り、ステップS305およびS306の判断を繰り返す。
その後、タイムアウト値が経過する前に、即ちタイマ100aからトリガ信号が出力される前に、上述の確認応答R2を受信したとする。この場合、ステップS305に進んだとき、その判断結果が「YES」となって、処理はステップS307に移行する。
ステップS307において、CPU100は、タイマ100aの値をリセットする。そして、確認応答R2の有する確認応答番号(比較対象確認応答番号)の値(2000)と、RAM102に記憶しておいた、ステップS304で再送した再送データセグメントに対する確認応答の予測確認応答番号の値(1000)とを比較する。この例では、比較対象確認応答番号の値が予測確認応答番号の値よりも大きい。このため、CPU100は、当該確認応答R2はオリジナルデータセグメントS1及びS2に対応するものであると判定する。即ち、オリジナルデータセグメントS1、S2はクライアント装置50に受信され、パケットロスは発生していなかったと判定する。この結果、ウィンドウサイズが、RAM102の記憶情報に基づいてタイムアウト発生前の「3」に復元するとともに、ウィンドウがオリジナルデータセグメントS1、S2の分だけスライドし、送信済みのデータセグメントS3に後続する2個のデータセグメントの送信が可能になる。
そこで、ステップS309において、サーバ装置10のCPU100は、オリジナルデータセグメントS3に後続するオリジナルデータセグメントS4およびS5を送信する。
図4においては、ステップS309に対応する処理として、サーバ装置10からクライアント装置50へオリジナルデータセグメントS4およびS5が送信される。そして、処理は、ステップS301に戻り、タイマ100aによる経過時間の測定が開始される。
その後、CPU100は、タイマ100aにタイムアウトが発生するまでの間、確認応答が受信されない限り、上述したステップS302およびS303の判断を繰り返す。
一方、サーバ装置10で上述の処理が行われている間、クライアント装置50にオリジナルデータセグメントS3が受信され、当該オリジナルデータセグメントS3に対応する、確認応答番号3000を有する確認応答R3が、サーバ装置10へ送信される。
この確認応答番号3000を有する確認応答R3がサーバ装置10に到達すると、図5において、サーバ装置10のCPU100によるステップS302の判断結果は「YES」となる。この結果、ウィンドウがさらに1つ分スライドされ、送信済みデータセグメントの最後尾であるオリジナルデータセグメントS5に後続するデータセグメントが1個送信可能となる。そこで、ステップS300において、後続のシーケンス番号5000を有するオリジナルデータセグメントS6を送信する。
図4においては、ステップS302に対応する処理として、サーバ装置10からオリジナルデータセグメントS6がクライアント装置50へ送信される。
以上のようにして、サーバ装置10からクライアント装置50へデータセグメントが送信される。
[第2実施形態]
次に、サーバ装置10とクライアント装置50との間でパケット通信を行う場合の他の例について説明する。以下、上記第1実施形態と共通する部分については、その説明を省略したり、同一の符号を使用して説明したりする。
(1.構成)
<サーバ装置10の構成>
サーバ装置10の本実施形態に係る構成のみについて説明する。
サーバ装置10のROM103には、CPU100にデータセグメント送信制御処理を行わせるためのプログラムが記憶されている。本実施形態に係る送信制御処理とは、以下の処理のことであるが、上述の第1実施形態の送信制御処理と共通する部分についての説明は省略する。
本実施形態においては、CPU100は、データセグメントをクライアント装置50へ送信する場合、第1実施形態におけるスライディングウィンドウ方式による制御の他に、輻輳制御を行うことによりデータセグメントの通信速度を制御する。簡単にいうと、CPU100は、通信の状態に応じて、確認応答の受信を待たずに一度に送信することができるデータセグメント数、つまりウィンドウサイズを増減させる。このウィンドウサイズの変更は、送信済みデータセグメントに対する確認応答を受信する度に行われる。なお、通信状態に応じて、輻輳ウィンドウをどのように設定するかという情報も予めROM103に記憶されている。
ここで、輻輳制御について詳述する。本実施形態によるサーバ装置10は、少なくともsnd_max、snd_nxt、snd_una、snd_wndおよびsnd_cwndの5種類のパラメータ変数をHD104に記憶しており、これら5種類のパラメータ変数に基づいて算出される数のデータセグメントをクライアント装置50へ送信することにより、輻輳制御を行っている。図6は、これら5種類のパラメータ変数の関係を説明するための図である。snd_maxには、次に送信するべきオリジナルデータセグメントのシーケンス番号のうちで最大のシーケンス番号(図6では、シーケンス番号5000)が格納されている。snd_nxtには、サーバ装置10が次に送信するデータセグメントのシーケンス番号(図6では、シーケンス番号5000)が格納されている。snd_unaには、送信済みデータセグメントのうち、確認応答を受信していないデータセグメントが有するシーケンス番号のうちで最小のシーケンス番号(図6では、シーケンス番号2000)が格納されている。
snd_cwndには、サーバ装置10が先に送信したデータセグメントに対して確認応答を受信することなく送信可能なセグメントの数を示す値が格納されている。1個のセグメントは、最大セグメントサイズ(Maximum Segment Size:以下、「MSS」という)の単位で表され、デフォルトでは1MSS=1,460バイトと定められている。snd_cwndには、例えば、初期値として3MSSが格納されており、サーバ装置10のCPU100はデータセグメントの送信が正常に行われている限り、スロースタートと呼ばれるアルゴリズムに従って、snd_cwndの値を増加させていく。具体的には、送信したデータセグメントに対する確認応答を受信する度に、snd_cwndが所定の閾値(例えば、65535バイト)に達するまで、その値を指数関数的に増加させていく。尚、snd_cwndは、サーバ装置10が設定する値であり、輻輳ウィンドウサイズと呼ばれる。
一方、snd_wndには、クライアント装置50から通知された広告ウィンドウサイズが格納されている。この広告ウィンドウサイズとは、クライアント装置50の受信バッファの空き容量を示す値であり、バイト単位で表される。
サーバ装置10は、広告ウィンドウサイズ(snd_wnd)と輻輳ウィンドウサイズ(snd_cwnd)の値のより小さい方を送信ウィンドウサイズとして定め、これにより輻輳制御を実現する。このように、送信ウィンドウサイズは広告ウィンドウサイズを超えることがないため、クライアント装置50のバッファの空き容量を超える数のデータセグメントがクライアント装置50に対して送信されることはない。本実施形態では、広告ウィンドウサイズが、輻輳ウィンドウサイズに対して十分大きい値であると仮定し、説明の便宜上、送信ウィンドウサイズを「輻輳ウィンドウサイズ」と称する。
本実施形態において、サーバ装置10のCPU100は、再送タイムアウトの発生を検出すると、まず、snd_cwndの値を1MSSに設定するとともに、再送タイムアウトの発生を検出する直前のsnd_cwndの値をRAM102に格納する。また、CPU100は、snd_nxtをsnd_unaの値で書き換えて、snd_nxtで示されるデータセグメントから再送信を開始するとともに、再送信したデータセグメントに対して確認応答を受信する毎にsnd_cwndに格納されている値を上述したスロースタートにしたがって1MSSずつ増加させる。
本実施形態では、データセグメントの再送後確認応答を受信した場合には、第1実施形態で説明した判定処理(図5のステップS307、第2実施形態では図8のステップS307)を行う。その結果、受信した確認応答がオリジナルデータセグメントに対するものであると判定された場合には、輻輳ウィンドウサイズを、再送データセグメントを送信する前に設定されていた輻輳ウィンドウサイズに復元する。つまり、輻輳ウィンドウサイズの値を、再送タイムアウト検出時にRAM102に記憶しておいたsnd_cwndの値で更新する。また、この際、CPU100は、snd_nxtをsnd_maxのシーケンス番号で書き換えて、snd_nxtで示されるデータセグメントから送信を開始する。
本実施形態においては、CPU100は、以上のような輻輳制御を行うことにより、タイムアウト発生前のデータの流量を即座に回復できる。
(2.動作)
図7は、サーバ装置10とクライアント装置50との間でパケット通信を行う場合の他の例を示すシーケンスチャートである。図8は、サーバ装置10の本実施形態に係るセグメント送信動作及び受信動作を示すフローチャートである。また、図9(a)から図9(c)は、輻輳ウィンドウサイズの遷移例を説明するための概念図である。なお、上述の第1実施形態と共通するステップについては同一の符号を使用し、その詳細な説明を省略する。
まず、図7において、サーバ装置10から、シーケンス番号0、1000、2000、3000,4000を有するそれぞれのデータセグメント(オリジナルデータセグメントS11、S12、S13、S14、S15)がクライアント装置50へ送信される。この時点での輻輳ウィンドウサイズsnd_cwndは、5MSSである。ここで、図9(a)に示すように、確認応答未受信のデータセグメントの最小シーケンス番号0(S11)がsnd_unaの値として記憶される。また、次に送信されるオリジナルデータセグメントのシーケンス番号5000がsnd_maxに記憶され、次に送信されるべきデータセグメント(S16)のシーケンス番号5000がsnd_nxtに記憶される。
図示の例では、例えば通信端末40と移動パケット通信網30との間の無線通信環境が悪化し、当該オリジナルデータセグメントS11〜S15が一時的にネットワーク内に滞留したとする。その後、無線通信環境が良好となり、通信が再開されると、オリジナルデータセグメントS11〜S15はクライアント装置50に順次到着する。即ち、オリジナルデータセグメントS11〜S15は、各々の送信時から大きく遅延してクライアント装置50に到着することとなる。
クライアント装置50では、まず、オリジナルデータセグメントS11が受信されると、当該オリジナルデータセグメントS11に対応する、確認応答番号1000を有する確認応答R11が送信される。
一方、サーバ装置10では、上述のデータセグメントS11〜S15の受信遅延があったため、クライアント装置50から送信された確認応答R11を受信する前に、タイムアウト値が経過したとする。即ち、ステップS301の後タイムアウト値が経過してタイマ100aからトリガ信号が出力されても、CPU100は、確認応答を受信することができなかったとする(ステップS302;NO、ステップS303;YES)。ここで、図9(a)に示すように、サーバ装置10は、輻輳ウィンドウサイズを1MSSに書き換えるとともに、snd_nxtの値をsnd_unaの値で置き換える。
次に、ステップS'304において、CPU100は、オリジナルデータセグメントS11がクライアント装置50に受信されなかったと判定し、snd_nxtが示すシーケンス番号0を有するデータセグメント(図7における再送データセグメントS′11)をクライアント装置50へ再送するとともに、タイマ100aにタイムアウト値をセットし、タイマ100aにタイムアウト値の計測をさせる。
その後、タイムアウト値が経過する前に即ちタイマ100aからトリガ信号が出力される前に、上述の確認応答R11を受信すると、処理はステップS307に移行する。
次に、以上説明したところまでのサーバ装置10の動作について、図8を参照しながら説明する。
サーバ装置10のCPU100は、ステップS300において、輻輳ウィンドウサイズを5MSSとして、5つのオリジナルデータセグメントS11〜S15を送信する。次いで、S301〜S303の処理を行い、続いて、ステップS′304に進んだとする。ステップS′304では、CPU100は、輻輳ウィンドウサイズを1MSSとして、輻輳制御を行い、シーケンス番号0を有するデータセグメント(再送データセグメントS′11)を再送する。次いで、サーバ装置10は確認応答R11を受信するので(ステップS305;YES)、続いて、ステップS307の処理を行う。
このステップS307において、CPU100は、確認応答R11の有する確認応答番号(比較対象確認応答番号)の値(1000)と、ステップS304で再送した再送データセグメントに対する確認応答の予測確認応答番号の値(1000)とを比較する。この場合、snd_nxtの値を参照することにより予測確認応答番号の値を取得してもよいし、第1実施形態で示したように、RAM102の記憶情報を参照するようにしてもよい。ここでは、比較対象確認応答番号の値が予測確認応答番号の値と一致するため、当該確認応答R11がオリジナルデータセグメントS11に対応するものであるか又は再送データセグメントS′11に対応するものであるか判定できない。そのため、CPU100は、確認応答R11は再送データセグメントS′11に対応するものだと推定する。即ち、セグメントが喪失し、オリジナルデータセグメントS11はクライアント装置50に受信されなかったと判定し、ステップS308へ進む。
ステップS308では、再送データセグメントS′11に後続する再送データセグメントが有るか否かの判定を行う。この時のsnd_nxtの値は、送信済みデータセグメントS12のシーケンス番号1000なので(図9(a)参照)、再送データセグメントは有ると判定して、次いでステップS′304に進む。ステップS′304においては、確認応答R11を受信したことからウィンドウサイズを2MSSとして輻輳制御を行い、後続のシーケンス番号1000、2000を有するそれぞれのデータセグメントを2つ(S′12、S′13)再送するとともに、タイマ100aをセットする。
図7においては、サーバ装置10から再送データセグメントS′12、S′13が送信される。
一方、クライアント装置50では、オリジナルデータセグメントS12、S13、S14に対応する、確認応答番号2000,3000,4000を有するそれぞれの確認応答R12、R13、R14が送信されるが、無線通信環境の悪化により、確認応答R12、R13が喪失されたとする。この結果、確認応答R14のみがサーバ装置10へ送信される。
図8に戻って、タイマ100aによって計測される経過時間がタイムアウト値を経過することなく、サーバ装置10が確認応答R14を受信する(ステップS305;YES)と、ステップS307へ進む。
ステップS307においては、CPU100は、確認応答R14の有する確認応答番号(比較対象確認応答番号)の値(4000)と、再送データセグメントS′13に対する確認応答の予測確認応答番号の値(3000)とを比較する。ここでは、比較対象確認応答番号が予測確認応答番号の値より大きくなるため、CPU100は、セグメントの喪失は発生せずオリジナルデータセグメントS11〜S14はクライアント装置50に受信されたと判定し、ステップS′309へ進む。
ステップS′309では、CPU100は、RAM102の記憶情報を参照して、輻輳ウィンドウサイズを、再送タイムアウト発生直前の輻輳ウィンドウサイズに復元する。即ち、ステップS′309では、輻輳ウィンドウサイズを、RAM102に記憶しておいた輻輳ウィンドウサイズ5MSSにまず復元し、確認応答R14を受信したことにより更に1MSS増分して、輻輳ウィンドウサイズを6MSSとする。この際、図9(b)に示すように、snd_nxtの値をsnd_maxの値で書き換える。また、オリジナルデータセグメントS15に対する確認応答は未受信なので、snd_unaの値はオリジナルデータセグメントS15のシーケンス番号である4000となる。輻輳ウィンドウはsnd_unaの値から6MSS分であるので、輻輳ウィンドウ内であり且つ未送信である5つのオリジナルデータセグメントS16〜S20を続けて送信する。
図8においては、シーケンス番号5000、6000,7000,8000、9000を有するそれぞれのオリジナルデータセグメントS16、S17、S18、S19、S20がサーバ装置10からクライアント装置50へ送信される。
これらオリジナルデータセグメントの送信を行っている間、CPU100は、確認応答R15を受信する。これにより、CPU100は、オリジナルデータセグメントS15がクライアント装置50により受信されたと判定し、snd_unaの値をオリジナルデータセグメントS16に対応するシーケンス番号5000とする。更に、輻輳ウィンドウサイズが1MSS増分され、7MSSとなる(図9(c)参照)。この結果、後続するオリジナルデータセグメントS21、S22の送信が可能となり、これらのデータセグメントがサーバ装置10からクライアント装置50へ送信される。
以上のような構成により、データセグメントの不必要な再送を防ぐと共に、データセグメントの通信速度の不必要な減速を防ぐことができる。また、通信速度を再送タイムアウト発生前の速度から求められる値に復元するため、不必要な再送により生じた通信速度の低下を、すばやく補正することができる。
[変形例]
以上、本発明の実施形態について説明したが、本発明はその主要な特徴から逸脱することなく他の様々な形態で実施することが可能である。なお、変形例としては、例えば、以下のようなものが考えられる。
上述の実施形態においては、TCPに従ってパケット通信を行うようにしたが、本発明は、データセグメントまたはデータブロックの再送制御を行うプロトコルであれば、TCP以外の通信プロトコルにも適用可能である。また、他のプロトコルを用いる場合、TCPが採用しているスライディングウィンドウ方式と類似のウィンドウを用いて、データセグメントを送信しても良い。
また、サーバ装置10で行った確認応答に対するデータセグメントの上述の判定は、他のサーバ装置で行っても良い。このような構成において、サーバ装置10は、再送データセグメント送信後に確認応答を受信すると、この他のサーバ装置に当該確認応答がオリジナルデータセグメントに対するものか又は再送データセグメントに対するものかを問い合わせる。他のサーバ装置は、上述のサーバ装置10が行った判定処理を行い、この判定結果をサーバ装置10へ送信する。サーバ装置10は、送信された判定結果に基づいて、確認応答に対するデータセグメントを判定することができる。
なお、上述の実施形態においては、クライアント装置50は通信端末40を介してサーバ装置10とパケット通信を行った。しかし、クライアント装置50が無線通信機能を備え、通信端末40を介することなく、移動パケット通信網30、インターネット20を介してサーバ装置10とパケット通信を行う構成であっても良い。
本発明の第1実施形態に係る通信システム1の構成を示すブロック図である。 同実施形態に係るサーバ装置10の構成を示すブロック図である。 同実施形態に係るデータセグメントに付加されるヘッダのデータ構成を示す図である。 同実施形態に係るサーバ装置10とクライアント装置50との間でパケット通信を行う場合の一例を示すシーケンスチャートである。 同実施形態に係るサーバ装置10のデータセグメントの送信及び受信動作を示すフローチャートである。 本発明の第2実施形態に係る送信ウィンドウを説明するための図である。 同2実施形態に係るサーバ装置10とクライアント装置50との間でパケット通信を行う場合の一例を示すシーケンスチャートである。 同実施形態に係るサーバ装置10のデータセグメントの送信及び受信動作を示すフローチャートである。 同実施形態に係る輻輳ウィンドウの遷移を説明するための図である。 同実施形態に係る輻輳ウィンドウの遷移を説明するための図である。 同実施形態に係る輻輳ウィンドウの遷移を説明するための図である。 従来のサーバ装置10'とクライアント装置50との間でパケット通信を行う場合の一例を示すシーケンスチャートである。 従来のサーバ装置10'とクライアント装置50との間でパケット通信を行う場合の別の一例を示すシーケンスチャートである。
符号の説明
1・・・通信システム、10・・・サーバ装置、100・・・CPU、100a・・・タイマ、101・・・通信部、102・・・RAM、103・・・ROM、104・・・HD、105・・・記憶部、111・・・バス、20・・・インターネット、30・・・移動パケット通信網、40・・・通信端末、50・・・クライアント装置。

Claims (14)

  1. 送信装置から受信装置に連続的に送信されるべき各データブロックにシーケンス情報を割り当てる割り当て過程と、
    複数のデータブロックに前記シーケンス情報を付加し、前記受信装置に対して順次送信する送信過程と、
    前記受信装置に対して送信された複数のデータブロックのうち、前記受信装置から確認応答信号を受信していないデータブロックを再送する再送過程と、
    前記受信装置に対して送信された複数のデータブロックのうち、前記受信装置が未だ受信していない先頭のデータブロックのシーケンス情報を含む確認応答信号を、前記受信装置から受信する受信過程と、
    前記再送が行われたデータブロックのシーケンス情報および前記確認応答信号に含まれる前記シーケンス情報に基づいて、前記確認応答信号が前記送信された複数のデータブロックの1に対する確認応答であるか否かを判断する判断過程とを有し、
    前記送信過程は、前記確認応答信号が前記送信された複数のデータブロックの1に対する確認応答であると判断された場合に、前記送信過程において送信された複数のデータブロックに後続するデータブロックを送信する
    ことを特徴とする通信網における伝送制御方法。
  2. 前記判断過程は、前記再送が行われたデータブロックに対する確認応答信号に含まれると予測されるシーケンス情報である予測確認応答番号と前記確認応答信号に含まれるシーケンス情報である比較対象確認応答番号を比較することにより前記判断を行い、前記比較対象確認応答番号により特定されるデータブロックが前記予測確認応答番号によって特定されるデータブロックに後続するデータブロックの1である場合に、前記確認応答信号が前記送信された複数のデータブロックの1に対する確認応答であると判断する
    ことを特徴とする請求項1に記載の伝送制御方法。
  3. 前記再送過程において前記データブロックが再送されたときに、前記予測確認応答番号を前記送信装置の記憶部に記憶する記憶過程をさらに有し、
    前記判断過程は、前記記憶部に記憶された予測確認応答番号と前記比較対象確認応答番号を比較することにより前記判断を行う
    ことを特徴とする請求項2に記載の伝送制御方法。
  4. 前記予測確認応答番号は、前記再送が行われたデータブロックに後続するデータブロックのシーケンス情報である
    ことを特徴とする請求項2または3に記載の伝送制御方法。
  5. 前記判断過程は、前記予測確認応答番号としてsnd_nxtの値を用いる
    ことを特徴とする請求項2に記載の伝送制御方法。
  6. 前記送信過程において送信される前記複数のデータブロックの数は、確認応答信号を受信することなく送信できるデータブロックの数であるウィンドウサイズに従って定められ、
    前記再送過程において、予測時間内に確認応答が受信されていないデータブロックの再送を行う場合には、前記ウィンドウサイズを最小値に変更し、変更後のウィンドウサイズにより定められる数のデータブロックを再送し、
    前記送信過程は、前記判断過程において前記確認応答信号が前記送信された複数のデータブロックの1に対する確認応答であると判断された場合には、前記再送過程において前記ウィンドウサイズが最小値に変更される前のウィンドウサイズと等しいかまたはより大きくなるように前記ウィンドウサイズを増加させ、増加後のウィンドウサイズにより定められる数の前記後続するデータブロックを送信する
    ことを特徴とする請求項1乃至5のいずれかに記載の伝送制御方法
  7. 受信装置に対して連続的に送信されるべき各データブロックにシーケンス情報を割り当てる割り当て手段と、
    複数のデータブロックに前記シーケンス情報を付加し、前記受信装置に対して順次送信する送信手段と、
    前記受信装置に対して送信された複数のデータブロックのうち、前記受信装置から確認応答信号を受信していないデータブロックを再送する再送手段と、
    前記受信装置に対して送信された複数のデータブロックのうち、前記受信装置が未だ受信していない先頭のデータブロックのシーケンス情報を含む確認応答信号を、前記受信装置から受信する受信手段と、
    前記再送が行われたデータブロックのシーケンス情報および前記確認応答信号に含まれる前記シーケンス情報に基づいて、前記確認応答信号が前記送信された複数のデータブロックの1に対する確認応答であるか否かを判断する判断手段とを有し、
    前記送信手段は、前記確認応答信号が前記送信された複数のデータブロックの1に対する確認応答であると判断された場合に、前記受信装置に対して送信された複数のデータブロックに後続するデータブロックを送信する
    ことを特徴とする通信装置。
  8. 前記再送されたデータブロックの直後に後続するデータブロックのシーケンス情報を記憶する記憶手段を更に有し、
    前記判断手段は、前記記憶手段に記憶された前記シーケンス情報および前記確認応答信号に含まれる前記シーケンス情報を比較することにより前記判断を行う
    ことを特徴とする請求項7に記載の通信装置。
  9. 前記判断手段は、前記確認応答信号に含まれる前記シーケンス情報により特定されるデータブロックが、前記記憶手段に記憶されている前記シーケンス情報によって特定されるデータブロックに後続するデータブロックの1である場合に、前記確認応答信号が前記送信手段により送信された前記複数のデータブロックの1に対する確認応答であると判断する
    ことを特徴とする請求項8に記載の通信装置。
  10. 前記送信手段により送信される前記複数のデータブロックの数は、確認応答信号を受信することなく送信できるデータブロックの数であるウィンドウサイズに従って定められ、
    前記再送手段は、予測時間内に確認応答が受信されていないデータブロックの再送を行う場合には、前記ウィンドウサイズを最小値に変更し、変更後のウィンドウサイズにより定められる数のデータブロックを再送し、
    前記送信手段は、前記判断手段により前記確認応答信号が前記送信された複数のデータブロックの1に対する確認応答であると判断された場合には、前記再送手段において前記ウィンドウサイズが最小値に変更される前のウィンドウサイズと等しいかまたはより大きくなるように前記ウィンドウサイズを増加させ、増加されたウィンドウサイズにより定められる数の前記後続するデータブロックを送信する
    ことを特徴とする請求項7乃至9のいずれかに記載の通信装置。
  11. 送信装置から受信装置に連続的に送信されるべき各データブロックにシーケンス情報を割り当てる割り当て手段と、
    複数のデータブロックに前記シーケンス情報を付加し、前記受信装置に対して順次送信する送信手段と、
    前記受信装置に対して送信された複数のデータブロックのうち、前記受信装置から確認応答信号を受信していないデータブロックを再送する再送手段と、
    前記受信装置に対して送信された複数のデータブロックのうち、前記受信装置が未だ受信していない先頭のデータブロックのシーケンス情報を含む確認応答信号を、前記受信装置から受信する受信手段と、
    前記再送が行われたデータブロックのシーケンス情報および前記確認応答信号に含まれる前記シーケンス情報に基づいて、前記確認応答信号が前記送信された複数のデータブロックの1に対する確認応答であるか否かを判断する判断手段とを有し、
    前記送信手段は、前記確認応答信号が前記送信された複数のデータブロックの1に対する確認応答であると判断された場合に、前記受信装置に対して送信された複数のデータブロックに後続するデータブロックを送信する
    ことを特徴とする通信システム。
  12. 前記判断手段は、前記再送が行われたデータブロックに対する確認応答信号に含まれると予測されるシーケンス情報である予測確認応答番号と前記確認応答信号に含まれるシーケンス情報である比較対象確認応答番号を比較することにより前記判断を行い、前記比較対象確認応答番号により特定されるデータブロックが前記予測確認応答番号によって特定されるデータブロックに後続するデータブロックの1である場合に、前記確認応答信号が前記送信された複数のデータブロックの1に対する確認応答であると判断する
    ことを特徴とする請求項11に記載の通信システム。
  13. 受信装置に連続的に送信されるべき各データブロックにシーケンス情報を割り当てる処理と、
    複数のデータブロックに前記シーケンス情報を付加し、前記受信装置に対して順次送信する処理と、
    前記受信装置に対して送信された複数のデータブロックのうち、前記受信装置から確認応答信号を受信していないデータブロックを再送する再送処理と、
    前記受信装置に対して送信された複数のデータブロックのうち、前記受信装置が未だ受信していない先頭のデータブロックのシーケンス情報を含む確認応答信号を、前記受信装置から受信する処理と、
    前記再送が行われたデータブロックのシーケンス情報および前記確認応答信号に含まれる前記シーケンス情報に基づいて、前記確認応答信号が前記送信された複数のデータブロックの1に対する確認応答であるか否かを判断する処理と
    前記確認応答信号が前記送信された複数のデータブロックの1に対する確認応答であると判断された場合に、前記受信装置に対して送信された複数のデータブロックに後続するデータブロックを送信する処理と
    をコンピュータに実行させるためのプログラム。
  14. 前記判断を行う処理においては、前記再送が行われたデータブロックに対する確認応答信号に含まれると予測されるシーケンス情報である予測確認応答番号と前記確認応答信号に含まれるシーケンス情報である比較対象確認応答番号を比較することにより前記判断を行い、前記比較対象確認応答番号により特定されるデータブロックが前記予測確認応答番号によって特定されるデータブロックに後続するデータブロックの1である場合に、前記確認応答信号が前記送信された複数のデータブロックの1に対する確認応答であると判断する
    ことを特徴とする請求項13に記載のプログラム。
JP2003430449A 2002-12-27 2003-12-25 伝送制御方法、通信装置、通信システム及びプログラム Expired - Fee Related JP3784801B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003430449A JP3784801B2 (ja) 2002-12-27 2003-12-25 伝送制御方法、通信装置、通信システム及びプログラム

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2002382222 2002-12-27
JP2003430449A JP3784801B2 (ja) 2002-12-27 2003-12-25 伝送制御方法、通信装置、通信システム及びプログラム

Publications (2)

Publication Number Publication Date
JP2004222271A JP2004222271A (ja) 2004-08-05
JP3784801B2 true JP3784801B2 (ja) 2006-06-14

Family

ID=32911355

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003430449A Expired - Fee Related JP3784801B2 (ja) 2002-12-27 2003-12-25 伝送制御方法、通信装置、通信システム及びプログラム

Country Status (1)

Country Link
JP (1) JP3784801B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220123869A1 (en) * 2018-12-06 2022-04-21 InterDigital CE Paatent Holdings Network equipment and method for delivering data packets

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007053588A (ja) * 2005-08-18 2007-03-01 Nec Corp パケット再送方式、パケット再送システム、パケット再送プログラム及びプログラム記録媒体
EP3629505A1 (en) 2018-09-25 2020-04-01 Panasonic Intellectual Property Corporation of America User equipment and base station involved in transmission of data

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220123869A1 (en) * 2018-12-06 2022-04-21 InterDigital CE Paatent Holdings Network equipment and method for delivering data packets

Also Published As

Publication number Publication date
JP2004222271A (ja) 2004-08-05

Similar Documents

Publication Publication Date Title
EP1434380B1 (en) Data transmission control method and system
JP4283589B2 (ja) 通信装置、通信制御方法及びプログラム
US11876714B2 (en) Method and apparatus for network congestion control based on transmission rate gradients
JP5694993B2 (ja) 通信装置及び通信方法
KR100785293B1 (ko) 다중 tcp확인응답을 이용한 tcp 혼잡 제어 시스템및 그 방법
JP4589764B2 (ja) スプリアスタイムアウトに対する応答
JP2004537218A (ja) Nackベースのプロトコルにおける輻輳制御の信頼性のある効率的な対応方法
CN101369877B (zh) 无线传输控制协议处理方法和设备
EP1787419A1 (en) Signalling a state of a transmission link via a transport control protocol
US20040264370A1 (en) Congestion control method and system for reducing a retransmission timeout count in a transmission control protocol
KR100912178B1 (ko) 무선 환경에서의 혼잡제어방법 및 기록매체
EP1435704B1 (en) Transmission control method and system
JP4186893B2 (ja) パケット通信装置、パケット通信方法、データ受信装置およびデータ受信方法
JP3784801B2 (ja) 伝送制御方法、通信装置、通信システム及びプログラム
JP3727941B2 (ja) 伝送制御方法、通信装置、通信システム及びプログラム
WO2006058255A2 (en) Methods and apparatus for optimizing a tcp session for a wireless network
Dunaytsev et al. An analytical comparison of the slow-but-steady and impatient variants of TCP New Reno
Kocan et al. TCP for wireless network
WO2003069920A2 (en) Transmission and flow control

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050422

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050510

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050711

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060315

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20090324

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20100324

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100324

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110324

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110324

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120324

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees