従来、インターネット通信において信頼性を保証するトランスポート層プロトコルとしてTCP(Transmission Control Protocol)が知られている。TCPはRFC793、RFC1122、RFC2581、RFC2582などに文書化されているが、その改良のための研究が続けられている。TCPは、OSI参照モデルにおいてトランスポート層に位置し、コネクションの制御、ストリーム型通信の実現、誤り制御やフロー制御などの品質の制御、ポート番号で指定されるポート間の通信、および輻輳制御(ネットワークのトラヒックが増加することにより、有効な通信を行うことができなくなる輻輳状態にならないように通信を制御する技術)を行っている。
TCPに基づいた通信においては、送信すべきデータをセグメントと呼ばれる小さなデータに分割し、そのセグメントをIP(Internet Protocol)パケットに格納して送信する。受信側はIPパケットを受信すると、TCPに基づいてセグメントを取り出し、順番に連結して元のデータを復元する。
ネットワーク層に位置するIPは、IPアドレスで指定されるホスト間の通信を規定する。TCPのコネクションは、IPアドレスに加えてポート番号で指定される二つのポート間で確立される。このため、複数のアプリケーションが同時に通信経路を使用しても、ポート番号の違いによって区別することができる。
TCPの誤り制御はACK(ACKnowledge:確認応答、肯定応答)によって実現されており、受信側から送信側へACKが送信され、送信側は、ACKの返らないデータセグメントを再送する。また、送信側はTCPに基づいて、スループットを大きくするために、あるウインドウサイズ分のデータセグメントを送信しようとする。この方式はスライディングウインドウフロー制御と呼ばれ、ウインドウサイズ分のデータセグメントの送信が許可され、そのデータセグメントに対するACKが受信側から返信されるとウインドウのシーケンス番号がスライドしていく。送信側が持つこのウィンドウはCongestion window(cwnd:輻輳ウィンドウ)と呼ばれ、輻輳制御も兼ねている。
TCPのフロー制御は、受信側から送信側へ返されるACKの中で、Receiver window(rwnd)を通知することによっても行われる。このrwndは、受信側が受け取ることができるデータ量を表しており、rwndとして0を通知すれば、送信を停止させることができる。rwndは、受信側が用意しているバッファ量に依存して決まる。送信側はrwndとcwndのうち小さい方を超えないように送信を抑制する。
スライディングウインドウフロー制御の目的は、ARQ(自動再送要求)による再送制御を行うことにより、受信側のバッファが不足する事態を避けると共に、スループットを向上させることにある。インターネットでは複数のデータリンクを経由して通信が行われるため、特定のデータリンク層に依存せずに、トランスポート層においてフロー制御を行う必要がある。
以下、TCPの輻輳制御について説明する。TCPの輻輳制御においては、ネットワークの輻輳崩壊を避けるために、スロースタートと輻輳回避動作とが行われる。スロースタートにおいては、送信の開始時にcwndを小さく設定しておき、受信側からACKが返送されるごとにcwndを指数関数状に増加させる。例えば、ACKが1個返送されるたびにcwndは1増加する。
つまり、1個のACKに対して2個のデータセグメントが送信可能となる。輻輳回避は、cwndを少しずつ増加させる動作である。輻輳回避においては、ACKが1個返送されるたびにcwndは1/cwnd増加する。つまり、cwnd個のACKが返送されると、現在のcwndに対して、cwnd+1が次のcwndの値となる。フロー制御が受信側に対する配慮であるのに対し、輻輳制御はネットワークに対する配慮である。
無線データ通信の普及により、通信経路中に無線通信路を含む利用形態が増えている。高速な無線通信路においては、一時的な遅延の発生とバースト的なパケットの送信とを伴うことがある。無線通信路のデータリンク層および物理層においては、自動再送要求(ARQ)に基づいたプロトコルを実行することにより信頼性を高めている。無線通信路にある受信端末は、受信したデータに誤りを検出すると、そのデータの再送を送信側に要求し、要求したデータが到着するまでの間に受信したデータを一時的にバッファに蓄積して遅延させる。
無線通信路の送信側にある基地局は、受信端末が受信確認応答(ACK)を返送するまでは、再送に備えてデータを保持している。無線通信路においては一時的に品質が悪化することがあるため、基地局は変調方式とデータ伝送速度とを変えることによって、誤り率が低くなり過ぎないように調節をしている。それでも、無線通信路の誤り率は有線通信路に比べて大きく、無線通信路においては再送制御が必要となっている。
TCPはDelayed ACKと呼ばれる機構を備えている。Delayed ACKに関してはRFC1122、RFC813で述べられている。Delayed ACKにおいては、ACKの送信を遅延させて、次のACKが発生するか、タイムアウトするか、または送信データセグメントが発生した際にACKを送信する。ACKを遅延させた状態で次のACKが発生した場合、送信するACKが2個に1個の割合で削減されることになり、また、送信データセグメントが発生した場合には、それにACKを相乗りさせることにより、送信するACKの個数が削減される。
このDelayed ACKの動作は、Telnetアプリケーションの実行時にはACKパケットの数を減らすというメリットがあったが、大きなデータをダウンロードする場合には特にメリットがなく、むしろRTT(Round Trip Time:遅延)のばらつきを生じさせるといったデメリットがある。また、Delayed ACKの方式を拡張してACKの送信の遅延を大きくし、ACKの個数の削減率を大きくすると、それに応じて、送信側から送信されるデータセグメントがバースト的になり、フォワードリンク(下り)で輻輳が発生しやすくなる。
なお、ACKを削減する技術として、以下のようなものが開示されている。フォワードリンクの伝送速度が大きくリバースリンク(上り)の伝送速度が小さい非対称な通信路において、リバースリンクの通信路で輻輳が発生しかけたときに、待ち行列の中に既に記憶されている最古のACKパケットを廃棄して最新のACKパケットを待ち行列に記憶することにより、先頭から落とすバッファ理論(drop−from−front buffer discipline)に基づいてACKの数の削減を実行するルーターが開示されている。この装置は、非対称な通信路では伝送速度が小さいリバースリンクで輻輳が生じやすいことに着目し、ルーターの中で送信できずに滞留しているACKパケットのうち、廃棄した場合の悪影響が最も少ない最古のACKパケットを廃棄するようにしたものである。
従来、無線端末がデータの送信側へ再送要求を送信しても、要求したデータが再送されない場合、無線通信路の通信プロトコルによって定められた遅延が発生する。無線端末は、ある所定の時間だけ再送を待つが、その再送がタイムアウトした場合に、無線端末はそのデータが失われたものとして、そのデータの再送を待っている間に受信してバッファに蓄積しているデータを下流に出力する。無線通信路のフォワードリンクの帯域は数百kbpsに達しており、将来はさらに大きくなると想定される。このため、無線通信路において生じる一時的な遅延の後には、データパケットがバースト的に送信されることになる。
このようなバースト的なデータセグメントが到着した下流のデータ通信装置は、TCPに基づいてACKパケットをバースト的に送信する。ただし、一部のデータセグメントが喪失している場合には、ACKにおけるシーケンス番号は増大しない。このACKが、送信側におけるTCPの再送タイムアウト前に到着した場合には重複ACKと認識され、送信側によって高速再転送が実行されるが、再送タイムアウトが発生していれば、送信側はTCPに基づいて、ACKの到着を待たずにデータの再送を行う。
上述した通信の様子は図12に示されている。図12は、従来知られているTCP NewReno(RFC2582)の受信側での動作を示すタイムシーケンスグラフであり、横軸は時間、縦軸はシーケンス番号を表している。なお、通常のタイムシーケンスグラフは送信側で測定されるものであるが、図12は受信側での状況を示している。受信側においては、無線通信路に接続している無線端末と、この無線端末とデータの入出力を行う下流側のデータ通信装置とが存在するものとする。図12はデータセグメント30の受信と、それに対するACK31の送信とをプロットしたものである。区間32において、データ通信装置は、無線端末を介してデータセグメント30を受信すると、わずかな遅延の後ただちにACK31を送信するため、両者のマークはほぼ重なってプロットされている。
区間32においては順調にデータセグメント30が下流のデータ通信装置に到着しているが、区間33においては大きな遅延が発生している。この間、無線端末は、再送要求したデータが再送されるのを待っており、その間も無線端末は次々とデータを受信し、そのデータを蓄積していく。無線通信路において再送要求したデータが再送されずにタイムアウトすると、無線端末は蓄積していたデータを下流に放出するため、区間34で示されるように、短時間に大量のデータセグメント30が下流のデータ通信装置に到着し、それらに対して大量のACK31が送信される。ただし、一部のデータセグメント30が到着していないため、ACKのシーケンス番号が一定のままで、大量の重複ACKが送信されている。
送信側は、TCPに基づいて重複ACKを検出するか、あるいは再送要求がタイムアウトした場合にデータセグメントの再送を行い、区間35でこれが無線端末および下流のデータ通信装置に届いたことが示されている。再送されたデータセグメントに対するACKは、次に到着すべきデータセグメントのシーケンス番号であるため、区間35に示されるように、ACK番号が増大する。その後、区間36において通信が順調に回復している。
無線通信路は、その帯域幅が比較的狭いため、多くの場合、通信経路中でのボトルネックとなっている。そして、上述したようなバースト的なACKパケットは、無線通信路のリバースリンクに対して負荷をかけることになる。無線通信路のリバースリンクの帯域幅はフォワードリンクの帯域幅の1/10程度しか用意されないことが多く、バースト的に発生したACKパケットは、無線端末の送信待ち行列に蓄積されることになる。なお、特許文献1には、TCP/IPによる回線インターフェース装置が記載されている。
特開平7−67088号公報
以下、図面を参照し、本発明を実施するための最良の形態について説明する。図1は、本発明の第1の実施形態による通信システムの構成を示すブロック図である。以下、図中の各構成について説明する。本実施形態によるデータ通信装置20は、IEEE802.3において定められているLAN(Local Area Network)によって無線端末21と接続している。
無線端末21は、データ通信装置20にとってのデフォルトゲートウェイとなる。また、無線端末21は、無線通信路を介して無線基地局22とのデータリンクを形成している。このデータリンクにおいては、誤りの少ない信頼性のある通信を実現するために、ARQ (自動再送要求)を行うデータリンク層プロトコルが実行されている。このデータリンク上をIPパケットが運ばれる。無線基地局22はインターネット23に接続している。
インターネット23に接続された情報サーバ24(外部装置)は、http(Hyper Text Transfer Protocol)サーバまたはftp(File Transfer Protocol)サーバとして稼動しており、データ通信装置20からのリクエストに応じて情報を提供する。なお、情報サーバ24においてもTCPが実行されるが、データ通信装置20と同様の機能を有している必要はなく、一般的に普及しているOS(Operating System)の機能を使用すればよい。もちろん、データ通信装置20の機能を情報サーバ24が備えていてもよい。
図2は、本発明の第1の実施形態によるデータ通信装置20の機能構成を示すブロック図である。以下、図中の各構成について説明する。送受信手段1は、IEEE 802.3に定められている物理層/データリンク層を用いると共に、ネットワーク層にIPを用いて、パケット交換網を経由する通信を実現するハードウェアおよびソフトウェアである。この送受信手段1は通信路上の他の通信装置とパケットの送受信を行うと共に、そのパケットからIPパケットを取り出して処理する。
IPパケットが自分に関するものであり、かつTCPプロトコルを使用している場合には、送受信手段1はIPパケットを伝送制御手段2へ出力し、そのパケットに関する処理を依頼する。なお、TCP以外のプロトコル、例えばUDP(User Datagram Protocol)やICMP(Internet Control Message Protocol)を使用した受信パケットに関しては、送受信手段1は、それを担当する図示せぬソフトウェアに処理を依頼する。
伝送制御手段2は、TCPに基づいて、誤り制御やフロー制御等の通信制御を行う。特に伝送制御手段2は、送受信手段1によってデータセグメントが受信された場合に、そのデータセグメントの受信を情報サーバ24へ通知するためのACK(確認応答情報)を生成する。また、伝送制御手段2は、TCPのコネクションごとにメモリーやタイマーなどのリソースの割り当てを行う。伝送制御手段2は、アプリケーション層等の図示せぬ上位プロトコルの機能手段とデータの受け渡しを行っており、送受信手段1から出力された受信データを上位プロトコルの機能手段へ渡すと共に、この機能手段から渡された送信データを送受信手段1へ出力する。
受信間隔検出手段3は、送受信手段1によってデータセグメントが受信される時間間隔を検出(測定)する。この受信間隔検出手段3は第1の所定値でタイムアウトするタイマーを有している。本実施形態において第1の所定値は500msに設定されている。この値は無線通信路のデータリンクプロトコルが再送を諦めるまでのタイムアウト値に一致させている。このタイマーは、データセグメントが送受信手段1から伝送制御手段2に渡されるときに、送受信手段1の指示によってリセットされる。受信間隔検出手段3のタイマーがタイムアウトした場合、受信間隔検出手段3は、ACK削減手段4を動作状態に設定することにより、ACK削減手段4に対して、ACKの数を削減するACK削減動作の開始を指示する。
ACK削減手段4は、受信間隔検出手段3によってACK削減動作の開始を指示された場合に、送受信手段1を介して無線端末21へ送信されるACKの数を削減する。このACK削減手段4は、バッファ5を有している。バッファ5は、ACK削減手段4に入力されたACKを一時的に記憶する。バッファ5が空の状態で、ACK削減手段4がACK削減動作を行っている場合、伝送制御手段2からACK削減手段4にACKが入力されると、ACK削減手段4はそのACKをバッファ5に一時的に格納し、送受信手段1には出力せずにおく。
この状態でさらにACKが入力されると、ACK削減手段4は新しいACKをバッファ5に上書きし、これも送受信手段1には出力せずにおく。これを繰り返すと、バッファ5には常に最新のACKが1個だけ記憶されていることになる。このACKは次にACK削減手段4が停止された際に送受信手段1に出力され、無線端末21へ送信される。つまり、連続して発生されたACKのうち、最新の1個だけが送信されることになる。
ACK間隔検出手段6は、伝送制御手段2によるACKの発生の時間間隔を検出(測定)する。ACK間隔検出手段6もタイマーを有しており、そのタイマーは第2の所定値でタイムアウトする。本実施形態において第2の所定値は10msに設定されている。この値に関しては、バースト的なACKの発生が終了したことを検出することができるだけの大きさであって、かつできるだけ小さい値が設定される。伝送制御手段2は、ACKを発生したときにACK間隔検出手段6に対してタイマーのリセットを指示する。この指示を受けたACK間隔検出手段6はタイマーをリセットする。
ACK間隔検出手段6のタイマーがタイムアウトすると、ACK間隔検出手段6はACK削減手段4によるACKの削減動作を停止させる。このとき、バッファ5の中にACKが格納されていた場合、ACK削減手段4はバッファ5中のACKを送受信手段1へ出力し、送受信手段1はACKを無線端末21へ送信する。ACK削減手段4がACK削減動作を停止している場合には、入力されたACKはバッファ5に記憶されることなく、直ちに送受信手段1に渡され送信される。なお、第1の所定値および第2の所定値の値は上述した値に限定されない。
次に、本実施形態によるデータ通信装置20の動作について説明する。情報サーバ24からコンテンツデータ等を受信するために、データ通信装置20はまずコネクションの確立を行う。伝送制御手段2はSYN(コネクション開始要求)パケットを作成し、送受信手段1を介して無線端末21へ送信する。このSYNパケットは無線端末21から無線通信によって無線基地局22へ送信され、無線基地局22からインターネット23を介して情報サーバ24へ送信される。情報サーバ24は、そのパケットがTCPのSYNパケットであることを認識し、TCPヘッダ内のACKフラグおよびSYNフラグを1としたパケット(SYN+ACK)を作成してデータ通信装置20へ送信する。SYNパケットとは逆向きに、SYN+ACKパケットがデータ通信装置20へ配送される。
TCPによるコネクション確立は3wayハンドシェークと呼ばれ、データ通信装置20がSYNパケットを送信し、続いてそれを受信した情報サーバ24がSYN+ACKパケットを送信し、続いてそれを受信したデータ通信装置20がACKを送信することによって、コネクションが確立する。このとき、送受信手段1によって受信されたSYN+ACKは伝送制御手段2によって処理され、伝送制御手段2によって生成されたACKは送受信手段1を介して情報サーバ24へ送信される。この時点において、ACK削減手段4はまだ動作していない。情報サーバ24によってACKが受信されて認識されると、コネクションが確立し、以後、情報サーバ24はデータ通信装置20へデータセグメントを送信する。
データ通信装置20の以後の動作は、図3〜図7に示されるフローチャートのようになる。以下、図3〜図7を用いてデータ通信装置20の動作について説明する。データ通信装置20は、無線端末21からデータセグメントを受信するたびに、図3に示される処理を行う。送受信手段1は、無線端末21からデータセグメントを受信し、そのデータセグメントを伝送制御手段2へ出力する(ステップS31)。伝送制御手段2はTCPのコネクションごとに受信間隔検出手段3およびACK間隔検出手段6のタイマーに対してリソースを割り当てる。これによって、伝送制御手段2は複数のコネクションを同時に処理することができる。伝送制御手段2は、受信間隔検出手段3に対して第1の受信間隔の測定を指示し、指示を受けた受信間隔検出手段3はタイマーを起動する(ステップS32)。
図4は、受信間隔検出手段3のタイマーがタイムアウトした場合の動作を示している。受信間隔検出手段3のタイマーがリセットされることなく500msでタイムアウトした場合、第2の時間間隔が500ms以上であることが検出され、図3の動作に対して割り込みが発生し、図4の動作が実行され、この動作の実行終了後に図3の続きの動作が行われる。図4において受信間隔検出手段3は、ACK削減手段4に対してACKの削減動作を開始させる(ステップS41)。
図3に戻り、ステップS32に続いて、伝送制御手段2は、送受信手段1から出力されたデータセグメントに誤りがあるかどうかの検査(確認)を行う(ステップS33)。この処理は図5に示されている。伝送制御手段2は、データセグメントの誤りを検査し(ステップS331)、誤りがなかった場合には、TCPに基づいて、シーケンス番号によって示される順番どおりにデータセグメントを連結し、データの到着を待っているアプリケーション等にデータを渡す(ステップS332)。続いて、伝送制御手段2は、内部に保持するデータセグメントのシーケンス番号を更新し(ステップS333)、誤り検査に関する処理を終了する。ステップS331において誤りがあった場合には、シーケンス番号を更新せずに、誤り検査に関する処理を終了する。
続いて、図3のステップS34へ進む。伝送制御手段2は、到着したデータセグメントに対応したACKを生成し、ACK削減手段4へ出力すると共に、ACK間隔検出手段6に対してタイマーのリセットを指示する。このACKには、確認されたデータセグメントの次に到着すべきデータセグメントのシーケンス番号が格納されている。伝送制御手段2から指示を受けたACK間隔検出手段6はタイマーをリセットする(ステップS34)。
続いて、ACK削減手段4はACK削減動作中であるかどうか判断する(ステップS35)。TCPコネクションが開始された直後には、ACK削減手段4はACKの削減機能を停止しており、ACK削減手段4は、入力されたACKをそのまま送受信手段1へ出力する。送受信手段1はこのACKをIPパケットに格納し、無線端末21へ送信する(ステップS36)。一方、ステップS35において、ACK削減手段4がACK削減動作中であった場合にはステップS37へ進む。
ステップS37における処理は図6に示されている。伝送制御手段2は、ACK間隔検出手段6に対してACKの発生間隔の測定を指示し、指示を受けたACK間隔検出手段6はタイマーを起動する(ステップS371)。続いて、ACK削減手段4は、伝送制御手段2から入力されたACKの数を削減する(ステップS372)。
この処理においてACK削減手段4は、バッファ5にACKが格納されていない場合には、入力されたACKをバッファ5に一時的に格納し、送受信手段1には出力せずにおく。また、バッファ5にACKが格納されていない場合には、ACK削減手段4は新しいACKをバッファ5に上書きし、これも送受信手段1には出力せずにおく。この動作により、バッファ5には常に最新のACKが1個だけ記憶されていることになる。このACKは次にACK削減手段4が停止された際に送受信手段1に出力され、無線端末21へ送信される。つまり連続して発生したACKのうち、最新の1個だけが送信されることになる。この後、処理は終了する。
図7は、ACK間隔検出手段6のタイマーがタイムアウトした場合の動作を示している。ACK間隔検出手段6のタイマーがリセットされることなく10msでタイムアウトした場合、図3または図5の動作に対して割り込みが発生し、図7の動作が実行され、この動作の実行終了後に図3または図5の続きの動作が行われる。ACK間隔検出手段6のタイマーがタイムアウトした場合、ACK間隔検出手段6は、ACK削減手段4に対してACK削減動作を停止させる(ステップS71)。
続いて、ACK削減手段4はバッファ5にACKが格納されているかどうか判定する(ステップS72)。バッファ5にACKが格納されていた場合、ACK削減手段4は、そのACKを送受信手段1へ出力する。送受信手段1はそのACKを無線端末21へ送信する(ステップS73)。一方、バッファ5にACKが格納されていなかった場合、処理が終了する。
本実施形態においては、バースト的に発生したACKが結果的に1個のACKに削減されてしまう。このとき、送信側では500ms程度の空白の後に、ACKによって通知されるACK番号(シーケンス番号)が急激に増大し、これによってバースト的な送信が発生する可能性がある。バースト的な送信はフォワードリンクで輻輳を起こす可能性があるが、輻輳を起こさなければ、先に発生した500ms程度の空白を埋め合わせてスループットの低下を防止する効果を期待することができる。フォワードリンクでもボトルネックは無線通信路であることが多いため、無線通信路のフォワードリンクが輻輳を起こしやすいかどうかが問題となる。
現在普及しつつある高速な無線通信路の無線基地局ではこうした輻輳は起こりにくいのであるが、もし輻輳が問題になるのであれば、ACK削減手段4がACKを削減する割合を小さく抑えるようにしてもよい。すなわち、ACK削減手段4は、入力されるACKの数をカウンターでカウントしておき、その数が一定数に達したら、バッファ5に記憶されているACKをクリアし、入力されたACKを、今度はバッファ5に記憶させずに送受信手段1へ渡し、送信させる。カウンターのしきい値をMとすると、伝送制御手段2によって生成されたACKのうち、無線端末21へ送信されるACKが占める送信比率は1/Mとなる。一定の割合でACKが送信されることにより、送信側でのバースト性を緩和することができる。
なお、本実施形態においては、ACKを記憶するためのバッファ5を含むACK削減手段4を示したが、バッファ5を持たずにACKの数を削減することも可能である。例えば、ACK削減手段4は、ACKの削減動作を行っている間は、入力されたACKを全て廃棄するものとしてもよいし、カウンターを備え、M個の入力に対して1個のACKを出力し、それ以外は破棄することにより、ACKの個数を1/Mに削減するようにしてもよい。
図8は、本実施形態の動作を示すタイムシーケンスグラフであり、横軸は時間、縦軸はシーケンス番号である。図8は受信側での状況を示している。区間32においては、順調にデータセグメント30がデータ通信装置20に到着しているが、区間33で大きな遅延が発生している。この間、無線端末21は、再送要求したデータが再送されるのを待っており、その間も無線端末21には次々とデータが蓄積されていく。無線通信路において再送要求したデータが再送されずにタイムアウトすると、無線端末21は蓄積していたデータを放出する。
このため、図8の区間34で示されるように短時間に大量のデータセグメント30がデータ通信装置20に到着する。ただし、一部のデータセグメントは到着していない。従来は、図12の区間34に示されように、大量のACK31がバースト的に発生していた。一方、本実施形態においては、区間33において受信間隔検出手段3のタイマーが第1の所定値でタイムアウトし、ACK削減手段4によるACK削減動作が開始される。区間34においては、ACK間隔検出手段6のタイマーがタイムアウトするまでの第2の所定値よりも短い時間間隔でデータセグメントが到着し、それに対するACKが伝送制御手段2によって生成される。このため、ACK間隔検出手段6はタイムアウトする前にリセットされるので、ACK削減手段4によるACK削減動作が継続され、区間34においてはACKが送信されない。
そして、区間35において、1個のACK31が送信されている。これは、ACK間隔検出手段6のタイマーが10msの時間経過によりタイムアウトして、ACK削減手段4によるACK削減動作が停止させられ、バッファ5に記憶されていたACKが送信されたものである。情報サーバ24は、TCPに基づいて、データセグメントの再送を行い、区間35でこれがデータ通信端末20に届いたことが示されている。再送されたデータセグメントに対するACKのACK番号は次に到着すべきデータセグメントのシーケンス番号であるから、急激にACK番号が増大する。その後、区間36で通信が順調に回復している。
次に、本発明の第2の実施形態について説明する。図9は、本実施形態によるデータ通信装置20の機能構成を示すブロック図である。図において、図2と同一の構成には同一の符号を付与し、説明を省略する。本実施形態においては、重複ACK検出手段7が設けられている。この重複ACK検出手段7は、ACKの識別番号であるACK番号に基づいて重複ACKを検出する。重複ACK検出手段7も、TCPコネクションが開始された際に、伝送制御手段2によってリソースが割り当てられる。
重複ACKとは、ACK番号の重複したACKのことである。受信側で、あるデータセグメントが受信できていない状態で後続のデータセグメントが受信された場合に、失われているデータセグメントのシーケンス番号にACK番号が固定されたまま複数のACKが送信され、送信側がこれを検出して再転送を行う。この動作は高速再転送と呼ばれている。送信側は、ACK番号が同じACKを3個重複して受信した場合に高速再転送を実行する。重複ACKは、データセグメントが失われた後でも後続のデータセグメントの受信が続いていることを示している。この重複ACKにより、輻輳が軽微であるか、輻輳ではないエラーなどによる喪失であるとみなせるので、送信側はTCPに基づいて、輻輳ウインドウcwndを落とし過ぎないように動作する。
重複ACKは、再送を早期に実行させるために重要であるので、本実施形態においては、ACK削減手段4によって重複ACKが失われることを重複ACK検出手段7が防いでいる。本実施形態によるデータ通信装置20は、図3のステップS37における動作として、図10に示される動作を行う以外は第1の実施形態と同様の動作を行う。以下、図10を用いて、図3のステップS37における動作について説明する。
伝送制御手段2は、ACK間隔検出手段6に対してACKの発生間隔の測定を指示し、指示を受けたACK間隔検出手段6はタイマーを起動する(ステップS373)。ACK削減手段4は、ステップS34において伝送制御手段2から出力されたACKに関して、バッファ5にACKが格納されていない場合には、バッファ5にACKを格納し、バッファ5にACKが格納されている場合には、バッファ5にACKを上書きする(ステップS374)。
伝送制御手段2は重複ACK検出手段7に対して、図3のステップS34で発生したACKのACK番号を通知する。重複ACK検出手段7は通知されたACK番号を記憶すると共に、そのACK番号が、以前に記憶した一つ前のACKのACK番号と同じであるか否かを判定する(ステップS375)。伝送制御手段2によって通知されたACK番号が、以前に記憶した一つ前のACKのACK番号と同一でなかった場合、図3に戻り、処理が終了する。
一方、伝送制御手段2によって通知されたACK番号が、以前に記憶した一つ前のACK番号と同一であった場合、重複ACK検出手段7はACK間隔検出手段6に対してタイマーの停止を指示する。この指示を受けたACK間隔検出手段6はタイマーを停止する(ステップS376)。重複ACK検出手段7はACK削減手段4のACK削減動作を停止させ、ACK削減手段4によるACK削減動作は停止状態となる(ステップS377)。
ACK削減手段4によるACK削減動作が停止した場合、ステップS377において、バッファ5にACKが記憶されていれば、ACK削減手段4はそのACKを送受信手段1へ出力し、以後、ACK削減手段4は入力されたACKをそのままACK送受信手段1へ出力する。送受信手段1はこのACKを無線端末21へ送信する。すなわち、重複ACKは失われずに送信される。重複ACKは最初の3個が意味を持っているから、4個目以後のバースト的に発生している重複ACKは削減すべきである。したがって、検出した重複ACKの数を数えるカウンタを重複ACK検出手段7が備え、4個目の重複ACKを検出した場合に、重複ACK検出手段7がACK削減手段4に対してACK削減動作を開始させるようにしてもよい。
図11は、本実施形態の動作を示すタイムシーケンスグラフであり、横軸は時間、縦軸はシーケンス番号である。図8と同様に、図11は受信側での状況を示している。図11においては、区間34で3個のACK31が送信されている。これは、一部のデータセグメント30が欠けていたためにACK番号が一定のままとなっている重複ACKである。重複ACK検出手段7がこれを検出し、ACK削減手段4のACK削減動作を停止することにより、重複ACKが送信されている。
重複ACKが3個あれば、情報サーバ24はTCPに基づいて高速再転送を行うので、不要な重複ACKを削減するため、重複ACK検出手段7は4個目の重複ACKを検出すると、ACK削減手段4に対してACK削減動作を開始させ、バースト的なACKの送信を回避している。重複ACKが情報サーバ24に届いて高速再転送が行われれば、図11の区間35におけるデータセグメントの再送は、図8の場合よりも早期に到着する可能性があり、スループットの向上に寄与する。
なお、上述した第1または第2の実施形態によるデータ通信装置20および無線端末21を一体の装置として構成し、その装置をUSB等の規格によりPC(Personal Computer)やPDA(Personal Digital Assistance)等に接続してもよいし、その装置がPCやPDA等に内蔵されていてもよい。
また、データ通信装置20と無線端末21との接続は上記の実施形態に限定されるものではなく、USB等のシリアルインターフェースにより接続してもよい。また、無線端末21がデータ通信カードの場合は、PCMCIAに準拠した接続でもよい。なお、データ通信装置20は例えばPCやPDA等の情報処理装置が挙げられ、無線端末21は例えば携帯電話機、データ通信デバイス、通信モジュール等の無線通信装置が挙げられる。また、データ通信装置20と無線端末21とを一体のデータ通信装置とした場合、このデータ通信装置は、例えば携帯電話機、PDA、無線接続手段を内蔵するPC等が挙げられる。
上述したように、第1の実施形態によれば、データが受信される時間間隔が所定値以上である場合に、ACKが発生される時間間隔が所定値以上となるまでの間、ACK削減手段4がACK削減動作を行うことにより、バースト的なACKの発生を防止し、リバースリンクに対する負荷を軽減することができる。すなわち、リバースリンクの帯域幅の不足を避けることができ、リバースリンクのパケットの遅延や、輻輳によるパケットの廃棄を避けることができる。
また、第2の実施形態によれば、重複ACK検出手段7が重複ACKを検出した場合に、ACK削減手段4のACK削減動作を停止させることにより、高速再転送に必要な重複ACKが送信されるので、高速再転送がより早期に実行されるようにすることができ、スループットを向上させることができる。さらに、重複ACK検出手段7が4個目以後の重複ACKを検出した場合に、ACK削減手段4に対してACK削減動作を開始させることにより、無用な重複ACKのバースト的な発生を防止することができる。
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成はこれらの実施の形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。例えば、上述した実施形態におけるデータ通信装置20は、その動作および機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませ、実行させることにより実現してもよい。
ここで、「コンピュータ」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。
また、上述したプログラムは、このプログラムを記憶装置等に格納したコンピュータから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。また、上述したプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能をコンピュータにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
1・・・送受信手段、2・・・伝送制御手段、3・・・受信間隔検出手段(第1検出手段)、4・・・ACK削減手段(削除手段)、5・・・バッファ、6・・・ACK間隔検出手段(第2検出手段)、7・・・重複ACK検出手段(重複検出手段)、20・・・データ通信装置、21・・・無線端末、22・・・無線基地局、23・・・インターネット、24・・・情報サーバ。