(57)【特許請求の範囲】
【請求項１】
送信装置から受信装置に対して複数のオリジナルデータブロックを順次送信する送信過程と、
前記受信装置に対して送信された複数のオリジナルデータブロックのうち、前記受信装置から確認応答信号を受信していないデータブロックを再送するとともに、計時手段を起動し、当該再送データブロックを送信してからの経過時間の測定を開始する過程と、
前記受信装置から確認応答信号を受信したとき、前記計時手段により測定された経過時間を取得する取得過程と、
前記取得過程において取得された経過時間の値と、過去のデータブロックのラウンドトリップタイムの出現確率を示す第１の確率分布情報とに基づいて、前記確認応答信号が前記複数のオリジナルデータブロックの１に対する確認応答であるか否かを推定する推定過程とを有し、
前記送信過程は、前記推定過程において、前記確認応答信号が前記複数のオリジナルデータブロックの１に対する確認応答であると推定された場合に、前記送信過程において送信された複数のオリジナルデータブロックに後続するデータブロックを送信する
ことを特徴とする通信網における伝送制御方法。
【請求項２】
前記過去のデータブロックは、前記複数のオリジナルデータブロックのうち、前記受信装置から確認応答信号を受信済みであるデータブロックを少なくとも含む
ことを特徴とする請求項１に記載の伝送制御方法。
【請求項３】
前記推定過程において、前記経過時間の値と前記第１の確率分布情報に基づいて、前記確認応答信号が前記複数のオリジナルデータブロックの１に対する確認応答である確率と、前記再送データブロックに対する確認応答である確率を求め、両者を比較することにより当該確認応答信号が複数のオリジナルデータブロックの１に対する確認応答であるか否かを推定する
ことを特徴とする請求項１に記載の伝送制御方法。
【請求項４】
前記推定過程において、前記経過時間の値から推定されるオリジナルデータブロックのラウンドトリップタイムを示す値に基づいて第１の確率分布を参照することにより、前記確認応答信号が前記複数のオリジナルデータブロックの１に対する確認応答である確率を求め、前記経過時間の値に基づいて、前記第１の確率分布情報または当該第１の確率分布情報と同様の分布を有する確率分布情報であって再送データブロックのラウンドトリップタイムの出現確率を示す再送データブロックの確率分布情報を参照することにより、前記確認応答信号が前記再送データブロックに対する確認応答である確率を求める
ことを特徴とする請求項３に記載の伝送制御方法。
【請求項５】
前記後続するオリジナルデータブロックを送信した後、前記推定過程において行われた推定が正しいと判断された場合に、前記取得過程において取得した、前記再送データブロックを送信してからの経過時間の値を用いて、前記経過時間の出現確率を示す第２の確率分布情報を生成する生成過程を更に有し、
前記推定過程は、前記取得過程において取得した経過時間の値、前記第１および第２の確率分布情報に基づいて、前記推定を行う
ことを特徴とする請求項１に記載の伝送制御方法。
【請求項６】
前記第２の確率分布情報は、第１の確率分布情報とは異なる分布を有し、
前記推定過程は、前記第２の確率分布情報を参照して、前記確認応答信号が前記複数のオリジナルデータブロックの１に対する確認応答である確率を求める一方、前記第１の確率分布情報と同様の分布を有する確率分布情報であって再送データブロックのラウンドトリップタイムの出現確率を示す再送データブロックの確率分布情報を参照して、前記確認応答信号が前記再送データブロックに対する確認応答である確率を求める
ことを特徴とする請求項５に記載の伝送制御方法。
【請求項７】
受信装置に対して複数のオリジナルデータブロックを順次送信する送信手段と、
過去のデータブロックのラウンドトリップタイムの出現確率を示す第１の確率分布情報を生成する第１の生成手段と、
再送データブロックを送信してからの経過時間を測定するための計時手段と、
前記受信装置に対して送信された複数のオリジナルデータブロックのうち、前記受信装置から確認応答信号を受信していないデータブロックを再送するとともに、前記計時手段を起動し、前記経過時間の測定を開始する手段と、
前記受信装置から確認応答信号を受信したとき、前記計時手段により測定された経過時間を取得する取得手段と、
前記取得手段により取得された経過時間の値と、前記第１の生成手段によって生成された第１の確率分布情報とに基づいて、前記確認応答信号が前記複数のオリジナルデータブロックの１に対する確認応答であるか否かを推定する推定手段とを有し、
前記送信手段は、前記推定手段により、前記確認応答信号が前記複数のオリジナルデータブロックの１に対する確認応答であると推定された場合に、前記送信手段により送信された複数のオリジナルデータブロックに後続するデータブロックを送信する
ことを特徴とする通信装置。
【請求項８】
前記推定手段は、前記経過時間の値と前記第１の確率分布情報に基づいて、前記確認応答信号が前記複数のオリジナルデータブロックの１に対する確認応答である確率と、前記再送データブロックに対する確認応答である確率を求め、両者を比較することにより当該確認応答信号が複数のオリジナルデータブロックの１に対する確認応答であるか否かを推定する
ことを特徴とする請求項７に記載の通信装置。
【請求項９】
前記推定手段は、前記経過時間の値から推定されるオリジナルデータブロックのラウンドトリップタイムを示す値に基づいて第１の確率分布を参照することにより、前記確認応答信号が前記複数のオリジナルデータブロックの１に対する確認応答である確率を求め、前記経過時間の値に基づいて、前記第１の確率分布情報または当該第１の確率分布情報と同様の分布を有する確率分布情報であって再送データブロックのラウンドトリップタイムの出現確率を示す再送データブロックの確率分布情報を参照することにより、前記確認応答信号が前記再送データブロックに対する確認応答である確率を求める
ことを特徴とする請求項８に記載の伝送制御方法。
【請求項１０】
複数の前記受信装置に対して前記複数のオリジナルデータブロックを送信する場合に、
前記第１の生成手段は、前記複数の受信装置との間に設定された複数のコネクションの各々について前記第１の確率分布情報を生成し、
前記推定手段は、前記複数の受信装置のいずれかから確認応答信号を受信した際に、前記取得手段により取得した経過時間の値と当該いずれかの受信装置との間に設定されているコネクションについて生成された前記第１の確率分布情報に基づいて前記推定を行う
ことを特徴とする請求項７乃至請求項９のいずれか１に記載の通信装置。
【請求項１１】
各々が異なるサブネットワークに属する複数の前記受信装置に対して前記複数のオリジナルデータブロックを送信する場合に、
前記第１の生成手段は、前記サブネットワーク毎に前記第１の確率分布情報を生成し、
前記推定手段は、前記複数の受信装置のいずれかから確認応答信号を受信した際に、前記取得手段により取得した経過時間の値と当該いずれかの受信装置が属する前記サブネットワークについて生成された前記第１の確率分布情報に基づいて前記推定を行う
ことを特徴とする請求項７乃至請求項９のいずれか１に記載の通信装置。
【請求項１２】
前記過去のデータブロックは、前記複数のオリジナルデータブロックのうち、前記受信装置から確認応答信号を受信済みであるデータブロックを少なくとも含む
ことを特徴とする請求項７乃至請求項１１のいずれか１に記載の通信装置。
【請求項１３】
前記第１の確率分布情報は前記受信装置に対して前記複数のオリジナルデータブロックを送信する前に試験的に求められた統計情報であり、
前記第１の生成手段は、前記複数のオリジナルデータブロックの送信を開始した後、当該試験的に求められた統計情報を更新することにより前記第１の確率分布情報を生成する
ことを特徴とする請求項１２に記載の通信装置。
【請求項１４】
前記第１の確率分布情報は前記受信装置に対して前記複数のオリジナルデータブロックを送信するための通信を開始する前に予め求められた統計情報であり、
前記第１の生成手段は、前記複数のオリジナルデータブロック送信のための通信を開始した後、当該予め求められた統計情報を更新することにより前記第１の確率分布情報を生成する
ことを特徴とする請求項１２に記載の通信装置。
【請求項１５】
前記後続するオリジナルデータブロックを送信した後、前記推定手段により行われた推定が正しいと判断された場合に、前記取得手段により取得した、再送データブロックを送信してからの経過時間の値を用いて、前記経過時間の出現確率を示す第２の確率分布情報を生成する第２の生成手段を更に有し、
前記推定手段は、前記取得手段により取得された経過時間の値、前記第１および第２の確率分布情報に基づいて、前記推定を行う
ことを特徴とする請求項７に記載の通信装置。
【請求項１６】
前記第２の生成手段は、前記後続するオリジナルデータブロックを要求する確認応答信号を前記受信装置から少なくとも２回受信した場合に前記推定手段により行われた推定が正しいと判断する
ことを特徴とする請求項１５に記載の通信装置。
【請求項１７】
複数の前記受信装置に対して前記複数のオリジナルデータブロックを送信する場合に、
前記第１および第２の各生成手段は、前記複数の受信装置との間に設定された複数のコネクションの各々について当該第１および第２の確率分布情報を生成し、
前記推定手段は、前記複数の受信装置のいずれかから確認応答信号を受信した際に前記取得手段により取得した経過時間の値と、当該いずれかの受信装置との間に設定されているコネクションについて生成された前記第１および第２の確率分布情報に基づいて前記推定を行う
ことを特徴とする請求項１５または請求項１６に記載の通信装置。
【請求項１８】
各々が異なるサブネットワークに属する複数の前記受信装置に対して前記複数のオリジナルデータブロックを送信する場合に、
前記第１および第２の各生成手段は、前記サブネットワーク毎に当該第１および第２の確率分布情報を生成し、
前記推定手段は、前記複数の受信装置のいずれかから確認応答信号を受信した際に前記取得手段により取得した経過時間の値と、当該いずれかの受信装置が属するサブネットワークについて生成された前記第１および第２の確率分布情報に基づいて前記推定を行う
ことを特徴とする請求項１５または請求項１６に記載の通信装置。
【請求項１９】
前記第１および第２の確率分布情報は当該通信装置から前記受信装置に対して前記複数のオリジナルデータブロックを送信する前に試験的に求められた統計情報であり、
前記第１および第２の各生成手段は、前記複数のオリジナルデータブロックの送信を開始した後当該試験的に求められた統計情報を各々更新することにより前記第１および第２の確率分布情報を生成する
ことを特徴とする請求項１５乃至請求項1８のいずれか１に記載の通信装置。
【請求項２０】
前記第１および第２の確率分布情報は当該通信装置から前記受信装置に対して前記複数のオリジナルデータブロックを送信するための通信を開始する前に予め求められた統計情報であり、
前記第１および第２の各生成手段は、前記複数のオリジナルデータブロック送信のための通信を開始した後、当該予め求められた統計情報を更新することにより前記第１および第２の確率分布情報を生成する
ことを特徴とする請求項１５乃至請求項1８のいずれか１に記載の通信装置。
【請求項２１】
送信装置から受信装置に対して複数のオリジナルデータブロックを順次送信する送信手段と、
過去のデータブロックのラウンドトリップタイムの出現確率を示す第１の確率分布情報を生成する生成手段と、
再送データブロックを送信してからの経過時間を測定するための計時手段と、
前記受信装置に対して送信された複数のオリジナルデータブロックのうち、前記受信装置から確認応答信号を受信していないデータブロックを再送するとともに、前記計時手段を起動し、前記経過時間の測定を開始する手段と、
前記受信装置から確認応答信号を受信したとき、前記計時手段により測定された経過時間を取得する取得手段と、
前記取得手段により取得された経過時間の値と前記生成手段によって生成された第１の確率分布情報とに基づいて、前記確認応答信号が前記複数のオリジナルデータブロックの１に対する確認応答であるか否かを推定する推定手段とを有し、
前記送信手段は、前記確認応答信号が前記複数のオリジナルデータブロックの１に対する確認応答であると推定された場合に、前記送信手段により送信された複数のオリジナルデータブロックに後続するデータブロックを送信する
ことを特徴とする通信システム。
【請求項２２】
受信装置に対して複数のオリジナルデータブロックを順次送信する送信処理と、
前記受信装置に対して送信された複数のオリジナルデータブロックのうち、前記受信装置から確認応答信号を受信していないデータブロックを再送するとともに、計時手段を起動し、当該再送データブロックを送信してからの経過時間の測定を開始する処理と、
前記受信装置から確認応答信号を受信したとき、前記計時手段により測定された経過時間を取得する処理と、
前記取得された経過時間の値と、過去のデータブロックのラウンドトリップタイムの出現確率を示す第１の確率分布情報とに基づいて、前記確認応答信号が前記複数のオリジナルデータブロックの１に対する確認応答であるか否かを推定する処理と、
前記確認応答信号が前記複数のオリジナルデータブロックの１に対する確認応答であると推定された場合に、前記送信処理により送信された複数のオリジナルデータブロックに後続するデータブロックを送信する処理と
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信網を介して行われるデータ通信における再送制御のための技術に関する。
【背景技術】
【０００２】
近年、ＴＣＰ（Transmission  Control  Protocol）に従ってデータの送受信を行う装置が一般的に普及している。ＴＣＰは、ＯＳＩ参照モデルにおけるトランスポート層の通信プロトコルの代表的なものとして周知である。このＴＣＰでは、上位層から渡されたデータストリームをセグメントに分割し、通信相手である受信装置に送信する。ＴＣＰは、分割されたデータのセグメントを順番どおり確実に受信装置まで送り届けるための機能を提供している。具体的には、ＴＣＰでは、各データセグメントにデータの順番を示す番号（以下、シーケンス番号という）を付与する。送信装置は、データセグメントを送信する際にはこのシーケンス番号をヘッダにセットして送信する。また、送信装置は各データセグメントを送信するとき、これと同時にタイマをセットする。そして、このタイマがタイムアウト値に到達するまでに確認応答を受信しなかった場合には、送信装置はデータセグメントが受信装置まで到達することなく喪失したと一応の判断を行い、当該喪失したとみなされたデータセグメントを同受信装置に対して再送するようになっている。ここで、タイムアウト値は、データセグメントを送信してから、当該データセグメントに対する確認応答を受け取ると期待する時間（データセグメントの予測往復時間）に基づいて定められる。
【０００３】
送信装置において、受信した確認応答がどのデータセグメントに対する確認応答であるかは、確認応答のヘッダに含まれる確認応答番号を参照して判断される。以下、この判断について説明する。まず、受信装置がデータセグメントを受信し、これに対する確認応答を送信する際には、受信装置が次に受信を期待するシーケンス番号（以下、確認応答番号という）を確認応答のヘッダにセットする。例えば、５００から始まり、１０００、１５００・・・と続くシーケンス番号が用いられる場合に、シーケンス番号５００を持つデータセグメントを受信したときに送信装置に送信する確認応答番号は１０００となる。送信装置は、このような確認応答番号を有する確認応答を受信することにより、送信装置が送信したデータセグメントが無事受信装置によって受信されたと判定し、後続のデータセグメントを送信する。
【０００４】
尚、送信装置が確認応答番号１０００を有する確認応答を受信する場合とは、送信装置がシーケンス番号１０００を有するデータセグメントを未送信であるか、送信済みであってもそのデータセグメントが受信装置に届いていない場合である。この確認応答番号は、受信装置が、シーケンス番号１０００を有するデータセグメントを受信するまでは常に１０００となる。例えば、シーケンス番号１０００を有するデータセグメントが喪失されたなどの理由により、その後続セグメントであるシーケンス番号１５００を有するデータセグメントの方が先に受信装置に到着している場合であっても、受信装置がシーケンス番号１０００を有するデータセグメントを受信するまでは、受信装置から送信される確認応答の確認応答番号には１０００がセットされる。つまり、確認応答番号には、受信装置が未だ受信していないデータセグメントの最も若いセグメントのシーケンス番号が常にセットされる。
【０００５】
以上説明したデータセグメントの伝送において、各データセグメントを確実に送信するためには、ひとつのデータセグメントを送信した後に、それに対する確認応答を受信してから次のデータセグメントを送信する方式を採用するのが好ましい。しかし、この方式は確実ではあるがデータの伝送効率が悪くなってしまう。伝送効率を高めるため、ＴＣＰでは、ウィンドウによって定められる数のデータセグメントを一度に送信する方式を採用している。ウィンドウとは、確認応答を受信する前に受信装置に対して送信することが許されているデータのバイト数、つまりデータセグメントの数である。このウィンドウのサイズは、受信装置におけるバッファの空き容量を超えない範囲で送信装置によって定められる。送信装置が送信済みのデータセグメントに対して確認応答を受信すると、ウィンドウはその時に確認応答を受信したデータセグメントの数だけスライドし、ウィンドウがスライドした数だけ後続のデータセグメントが送信される。これが、「スライディングウィンドウ方式」である。このスライディングウィンドウ方式では、ウィンドウのサイズを制御することによりデータの流量を制御することができる。
【０００６】
ところで、このスライディングウィンドウ方式に従って複数のデータセグメントが受信装置に対して送信された後、送信装置と受信装置間の通信路が輻輳状態になるなどして、通信が停止状態となることがある。特に、通信路が無線区間を含むような場合には、電波環境が悪化する可能性が高い。このような状況下で送信装置がデータセグメントを送信しても、当該データセグメントは受信装置へ届かず中途で喪失してしまうか、通信網の通信状態が復元されるまで通信網のどこかのノードに一時的に保存されることになる。その後、無線環境が改善したりして通信が再開されると、網内に一時的に保存されていたデータセグメントが遅延した後に受信装置に届く場合がある。
【０００７】
ここで、通信路の状態が悪化している時間が長い場合には次のような事態が発生する。まず、送信装置では、データセグメント送信後、タイムアウト発生前に確認応答が受信されない場合には、送信済みであり且つ確認応答を未受信であるデータセグメントの先頭セグメントが再送される。その結果、受信装置には、網内に滞留していたデータセグメント（以下、オリジナルデータセグメントという）と、再送されたデータセグメント（以下、再送データセグメントという）との両方が届くことになる。そして、受信装置は、オリジナルデータセグメントを受信したときに、これに対する確認応答を送信し、再送データセグメントを受信したときに、これに対する確認応答を送信する。
【０００８】
このオリジナルデータセグメントに対する確認応答と再送データセグメントに対する確認応答は、通常の場合、同一の確認応答番号を有する。このため、送信装置がひとつめの確認応答を受信した時点では、当該確認応答がオリジナルデータセグメントに対するものなのか又は再送データセグメントに対するものなのかを判別することができない。このような場合、送信装置は、再送データセグメント送信後最初に確認応答を受信すると、当該確認応答は再送データセグメントに対する確認応答であるとみなし、オリジナルデータセグメントは受信装置に届かなかったものと判断する。以下、事例を挙げ、このような判断が行われる理由について詳述する。
【０００９】
図９は、従来のサーバ装置１０'（送信装置）とクライアント装置５０（受信装置）との間でパケット通信を行う場合の一例を示すシーケンスチャートである。尚、同図において、サーバ装置１０'における各矢印の始点の右側に示される４桁の番号は、サーバ装置１０'からパケット通信により送信されるデータセグメントのシーケンス番号である。また、クライアント装置５０における各矢印の始点の左側に示される４桁の番号は、クライアント装置５０から送信される確認応答に含まれる確認応答番号である。ここでは、初期ウィンドウサイズは「３」であると仮定する。つまり、確認応答を受信する前に３つのデータセグメントを送信可能である。
【００１０】
図９において、サーバ装置１０'からクライアント装置５０へシーケンス番号０、１０００、２０００を有するそれぞれのオリジナルデータセグメントＳ１，Ｓ２，Ｓ３が送信される。この際、サーバ装置１０'ではタイマがセットされる。
【００１１】
図示の例では、網内の通信環境の悪化により、当該オリジナルデータセグメントＳ１、Ｓ２、Ｓ３は、クライアント装置５０により遅延して順次受信される。クライアント装置５０は、オリジナルデータセグメントＳ１を受信すると確認応答番号１０００を有する確認応答Ｒ１が送信される。同様に、クライアント装置５０は、オリジナルデータセグメントＳ２を受信すると確認応答番号２０００を有する確認応答Ｒ２を送信し、オリジナルデータセグメントＳ３を受信すると確認応答番号３０００を有する確認応答Ｒ３を送信する。
【００１２】
図９に示す例において、サーバ装置１０'では、タイマによって測定される経過時間がタイムアウト値に到達しても確認応答が受信されない。このため、サーバ装置１０'では、タイムアウトとなった時点で、オリジナルデータセグメントＳ１はクライアント装置５０に受信されなかったと判定されて、シーケンス番号０を有するデータセグメント（再送データセグメントＳ′１）が再送される。この時、再送タイムアウトの発生によりウィンドウサイズが最小値に縮小されるため、１データセグメントのみが再送されている。
【００１３】
その後、サーバ装置１０'では、確認応答番号１０００を有する確認応答Ｒ１が受信されるが、上述の事情で当該確認応答Ｒ１がオリジナルデータセグメントＳ１に対応するものなのか又は再送データセグメントＳ′１に対応するものなのかを判定することができない。その結果、再送データセグメントＳ′１に対応するものであるとみなされて、シーケンス番号１０００を有するデータセグメント（再送データセグメントＳ′２）が送信される。また、この時、確認応答Ｒ１の受信によりウィンドウサイズが１データセグメント分増加するので、シーケンス番号２０００を有するデータセグメント（再送データセグメントＳ′３）も引き続き送信される。
【００１４】
次いで、サーバ装置１０'では、クライアント装置５０から送信された確認応答番号２０００を有する確認応答Ｒ２が受信され、その結果、シーケンス番号３０００を有するデータセグメント（オリジナルデータセグメントＳ４）およびそれ以降のデータセグメントが順次送信される。
【００１５】
図示の例では、オリジナルデータセグメントＳ２とＳ３が実際はクライアント装置５０に無事受信されているにもかかわらず、再送されている（再送データセグメントＳ'２およびＳ'３）。すなわち、データセグメントＳ２とＳ３はいずれも２回ずつクライアント装置５０に受信されているので、結果的に無駄なデータセグメントの再送が行われてしまったと云える。また、図９からも明らかなように、再送データセグメントＳ'２およびＳ'３に対する確認応答Ｒ'２およびＲ'３が送られるので、合計で４つのデータセグメントの再送が結果的には無駄であった。
【００１６】
データセグメント再送後最初の確認応答がオリジナルデータセグメントに対するものなのか又は再送データセグメントに対するものなのかを判別することができない場合に、仮に、オリジナルデータセグメントに対するものであると判断すると、このような無駄な再送は行われない。
しかし、このような判断をすると、実際は再送データセグメントに対する確認応答であるのにオリジナルデータセグメントに対する確認応答であるとみなしてしまう場合が生じる。この場合、データセグメントの並びの後方にウィンドウがスライドされ、後続のオリジナルデータセグメントが送信される。このようなことが繰り返し発生すると、サーバ装置１０'から送信され、クライアント装置５０に到着していないデータセグメントの数が累増するおそれがある。
【００１７】
このような事態に陥るリスクを避けるため、確認応答がオリジナルデータセグメントに対するものなのか又は再送データセグメントに対するものなのかを判別することができない場合に、オリジナルデータセグメントに対するものであると判断することにしているのである。
しかし、このような判断手法を採った場合、データセグメントの無駄な再送が行われるのを回避することができない。
【００１８】
このような問題を解決する技術が非特許文献１及び非特許文献２に記載されている。非特許文献１には、タイムスタンプオプション(RFC 1323)を利用することにより、確認応答がオリジナルデータセグメントに対するものか又は再送データセグメントに対するものかについての判別を正確に行うことを可能とさせる技術が記載されている。
【００１９】
また、非特許文献２には、有線パケット通信網を介するパケット通信において、統計情報を用いて、確認応答がオリジナルデータセグメントに対するものか又は再送データセグメントに対するものかを推定する技術が記載されている。
この文献では、送信装置と受信装置との間の通信コネクションが確立されているときにデータセグメントを送信してから確認応答が届くまでの時間を実測して得られるラウンドトリップタイムのうち最小のラウンドトリップタイムの１／２を閾値として上記の推定を行うことが提案されている。つまり、再送データセグメントを送信してからひとつめの確認応答を受信するまでの経過時間が閾値以上の場合（又は閾値を超過した場合）には再送データセグメントに対する確認応答とみなし、閾値未満の場合（又は閾値以下の場合）にはオリジナルデータセグメントに対する確認応答とみなす。
【００２０】
最小のラウンドトリップタイムの１／２を閾値とすることは、以下に列記する事情に基づいて提案されている。
［事情１］  統計をとったところ、再送データセグメントを送信してから最小のラウンドトリップタイムの１／２が経過するまでの期間、３／４が経過するまでの期間、及び１／１が経過するまでの期間内にオリジナルデータセグメントに対する確認応答を受信する確率に大差はないことが分かった。
［事情２］  統計をとったところ、再送データセグメントを送信してから最小のラウンドトリップタイムの１／２が経過した辺りから再送データセグメントに対する確認応答を受信する確率が急激に増加することが分かった。
【００２１】
【非特許文献１】アール・ルドウィグ、外１名 (R. Ludwig, et. al)，“ＴＣＰにおけるアイフル検知アルゴリズム”（"The Eifel Detection Algorithm for TCP" <draft-ietf-tsvwg-tcp-eifel-alg-04.txt>），[online]，２００２年７月２４日，インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｗａｔｅｒｓｐｒｉｎｇｓ．ｏｒｇ／ｐｕｂ／ｉｄ／ｄｒａｆｔ−ｉｅｔｆ−ｔｓｖｗｇ−ｔｃｐ−ｅｉｆｅｌ−ａｌｇ−０４．ｔｘｔ＞
【非特許文献２】マーク・アルマン、外１名 (Mark Allman, et. al)，“エンドトゥエンドのネットワークパス特性の推測について」("On Estimating End-To-End Network Path Properties")，ACM SIGCOMM '99，１９９９年１０月，第２９巻,第４号, ｐ．２６３−２７４，（２．８節）
【発明の開示】
【発明が解決しようとする課題】
【００２２】
しかしながら、非特許文献１の技術においては、通信環境が良好であっても、送信装置においてはオリジナルデータセグメントに対してタイムスタンプ情報が付加され、受信装置においては確認応答に対してタイムスタンプ情報が付加される。つまり、どちらのデータセグメントについてもその情報量が増加する。したがって、この技術を、通信量に応じて通信料金が変化する従量制課金を前提としている移動パケット通信網を介したパケット通信に適用した場合、通信料の上昇を招いてしまう。データの再送が必要となるケースが少ない良好な通信環境においては、これは不要な通信量の上昇である。また、言うまでもなく、通信料の上昇は受信装置の使用者や送信装置の使用者の望むところではない。
【００２３】
代わりに、当該技術を応用して、データセグメントに対して情報を付加するのではなく、通信時に使用されるＴＣＰヘッダ内の予約ビットに情報を設定する方法も考えられる。しかし、このような方法を用いる場合、既存の通信システムでは対応できず、従って、送信装置及び受信装置に対して、当該方法を用いるための大幅な設計変更が必要となってしまう。
【００２４】
また、非特許文献２の技術を、移動通信網を介する移動通信環境のように無線区間でのデータセグメントの遅延が非常に大きい通信環境に用いても、最適な判別結果を得ることはできない。
【００２５】
本発明は、以上説明した事情に鑑みてなされたものであり、送信装置に受信される確認応答がオリジナルデータセグメントに対するのものであるか又は再送データセグメントに対するものであるのかを適切に判別することができる技術を提供することを目的としている。この技術によれば、データセグメントの情報量を増加させることなく、且つ受信装置に対する設計変更を一切必要とせず、送信装置に対する軽微な設計変更で済む。
【課題を解決するための手段】
【００２６】
上記課題を解決するため、本発明は、送信装置から受信装置に対して複数のオリジナルデータブロックを順次送信する送信過程と、  前記受信装置に対して送信された複数のオリジナルデータブロックのうち、前記受信装置から確認応答信号を受信していないデータブロックを再送するとともに、計時手段を起動し、当該再送データブロックを送信してからの経過時間の測定を開始する過程と、前記受信装置から確認応答信号を受信したとき、前記計時手段により測定された経過時間を取得する取得過程と、前記取得過程において取得された経過時間の値と、過去のデータブロックのラウンドトリップタイムの出現確率を示す第１の確率分布情報とに基づいて、前記確認応答信号が前記複数のオリジナルデータブロックの１に対する確認応答であるか否かを推定する推定過程とを有し、前記送信過程は、前記推定過程において、前記確認応答信号が前記複数のオリジナルデータブロックの１に対する確認応答であると推定された場合に、前記送信過程において送信された複数のオリジナルデータブロックに後続するデータブロックを送信することを特徴とする通信網における伝送制御方法を提供する。好ましくは、前記データブロックの一例としては、ＴＣＰにおけるデータセグメントがある。好ましくは、前記受信装置は、移動通信網を介してパケット通信を行う移動通信端末である。
【００２７】
好ましい態様において、前記推定過程において、前記経過時間の値と前記第１の確率分布情報に基づいて、前記確認応答信号が前記複数のオリジナルデータブロックの１に対する確認応答である確率と、前記再送データブロックに対する確認応答である確率を求め、両者を比較することにより当該確認応答信号が複数のオリジナルデータブロックの１に対する確認応答であるか否かを推定するようにしてもよい。この場合、前記推定過程において、前記経過時間の値から推定されるオリジナルデータブロックのラウンドトリップタイムを示す値に基づいて第１の確率分布を参照することにより、前記確認応答信号が前記複数のオリジナルデータブロックの１に対する確認応答である確率を求め、前記経過時間の値に基づいて、前記第１の確率分布情報または当該第１の確率分布情報と同様の分布を有する確率分布情報であって再送データブロックのラウンドトリップタイムの出現確率を示す再送データブロックの確率分布情報を参照することにより、前記確認応答信号が前記再送データブロックに対する確認応答である確率を求めるようにしてもよい。
別の好ましい態様において、前記後続するオリジナルデータブロックを送信した後、前記推定過程において行われた推定が正しいと判断された場合に、前記取得過程において取得した、前記再送データブロックを送信してからの経過時間の値を用いて、前記経過時間の出現確率を示す第２の確率分布情報を生成する生成過程を更に有し、前記推定過程は、前記取得過程において取得した経過時間の値、前記第１および第２の確率分布情報に基づいて、前記推定を行う。この場合、前記第２の生成過程において、前記後続するオリジナルデータブロックを要求する確認応答信号を前記受信装置から少なくとも２回受信した場合に前記推定過程において行われた推定が正しいと判断するようにしてもよい。好ましくは、前記第２の確率分布情報は、第１の確率分布情報とは異なる分布を有し、前記推定過程は、前記第２の確率分布情報を参照して、前記確認応答信号が前記複数のオリジナルデータブロックの１に対する確認応答である確率を求める一方、前記第１の確率分布情報と同様の分布を有する確率分布情報であって再送データブロックのラウンドトリップタイムの出現確率を示す再送データブロックの確率分布情報を参照して、前記確認応答信号が前記再送データブロックに対する確認応答である確率を求めるようにしてもよい。
【００２８】
別の好ましい態様において、複数の前記受信装置に対して前記複数のオリジナルデータブロックを送信する場合に、前記複数の受信装置との間に設定された複数のコネクションの各々について当該第１および／または第２の確率分布情報を生成し、前記推定過程において、前記複数の受信装置のいずれかから確認応答信号を受信した際に前記取得過程において取得した経過時間の値と、当該いずれかの受信装置との間に設定されているコネクションについて生成された前記第１および／または第２の確率分布情報に基づいて前記推定を行うようにすればよい。さらに、別の好ましい態様において、各々が異なるサブネットワークに属する複数の前記受信装置に対して前記複数のオリジナルデータブロックを送信する場合に、前記サブネットワーク毎に前記第１および／または第２の確率分布情報を生成し、前記推定過程は、前記複数の受信装置のいずれかから確認応答信号を受信した際に、前記取得手段により取得した経過時間の値と当該いずれかの受信装置が属する前記サブネットワークについて生成された前記第１および／または第２の確率分布情報に基づいて前記推定を行うようにすればよい。
【００２９】
好ましくは、前記過去のデータブロックは、前記複数のオリジナルデータブロックのうち、前記受信装置から確認応答信号を受信済みであるデータブロックを少なくとも含む。この場合、前記第１および第２の確率分布情報は前記受信装置に対して前記複数のオリジナルデータブロックを送信する前に試験的に求められた統計情報であり、前記第１および第２の各生成過程において、前記複数のオリジナルデータブロックの送信を開始した後、当該試験的に求められた統計情報を更新することにより前記第１および第２の確率分布情報を生成してもよい。あるいは、前記第１および第２の確率分布情報は前記受信装置に対して前記複数のオリジナルデータブロックを送信するための通信を開始する前に予め求められた統計情報であり、前記第１および第２の生成過程において、前記複数のオリジナルデータブロック送信のための通信を開始した後、当該予め求められた統計情報を更新することにより前記第１および第２の確率分布情報を生成するようにしてもよい。
【００３０】
また、本発明は、受信装置に対して複数のオリジナルデータブロックを順次送信する送信手段と、過去のデータブロックのラウンドトリップタイムの出現確率を示す第１の確率分布情報を生成する第１の生成手段と、再送データブロックを送信してからの経過時間を測定するための計時手段と、前記受信装置に対して送信された複数のオリジナルデータブロックのうち、前記受信装置から確認応答信号を受信していないデータブロックを再送するとともに、前記計時手段を起動し、前記経過時間の測定を開始する手段と、前記受信装置から確認応答信号を受信したとき、前記計時手段により測定された経過時間を取得する取得手段と、前記取得手段により取得された経過時間の値と、前記第１の生成手段によって生成された第１の確率分布情報とに基づいて、前記確認応答信号が前記複数のオリジナルデータブロックの１に対する確認応答であるか否かを推定する推定手段とを有し、前記送信手段は、前記推定手段により、前記確認応答信号が前記複数のオリジナルデータブロックの１に対する確認応答であると推定された場合に、前記送信手段により送信された複数のオリジナルデータブロックに後続するデータブロックを送信することを特徴とする通信装置を提供する。
【００３１】
好ましい態様において、前記後続するオリジナルデータブロックを送信した後、前記推定手段により行われた推定が正しいと判断された場合に、前記取得手段により取得した経過時間の値を用いて、前記経過時間の出現確率を示す第２の確率分布情報を生成する第２の生成手段を更に有し、前記推定手段は、前記取得手段により取得した経過時間の値、前記第１および第２の確率分布情報に基づいて、前記推定を行えばよい。加えて、本発明による通信装置は、上記伝送制御方法における様々な態様を実行するための手段を有している。
【００３２】
さらに、本発明は、上記通信装置が有する手段を少なくとも２の装置に具備させることにより上記様々な態様における伝送制御方法を実現可能な通信システムを提供する。
加えて、本発明は、上述した様々な態様における伝送制御方法を通信装置に実行させるためのプログラムを提供する。このプログラムは、当該プログラムが記憶された磁気テープ、磁気ディスク、フロッピー（登録商標）ディスク、光記録媒体、光磁気記録媒体、ＤＶＤ（Digital Video Disk）、ＲＡＭ等、その他記録媒体に記録され得る。
【発明の効果】
【００３３】
本発明によれば、送信装置に受信される確認応答データセグメントがオリジナルデータセグメントに対するのものであるか又は再送データセグメントに対するものであるのかを最適に判別することができ、この結果、データセグメントの不必要な送信を防ぐことが可能となる。この技術によれば、データセグメントの情報量を増加させることなく、且つ受信装置に対する設計変更を一切必要とせず、送信装置に対する軽微な設計変更で済む。
【発明を実施するための最良の形態】
【００３４】
以下、図面を参照して本発明の実施の形態を詳細に説明する。なお、実施の形態を説明するための全図において、同一機能を有するものは同一符号を付け、その繰り返しの説明は省略する。
【００３５】
［第１実施形態］
（１．構成）
＜通信システム１の構成＞
図１は、この発明の第１実施形態に係る通信システム１の構成を例示するブロック図である。
通信端末４０は、クライアント装置５０と接続され、クライアント装置５０と通信を行う。
移動パケット通信網３０は、当該移動パケット通信網３０に収容される通信端末４０に対してパケット通信サービスを提供する。なお、移動パケット通信網３０と通信端末４０との間の通信区間には、図示しない無線区間が含まれている。この無線区間における通信は、電波を用いて行われる。
サーバ装置１０は、通信端末４０、移動パケット通信網３０、インターネット２０を介してクライアント装置５０とパケット通信を行い、パケット通信によりクライアント装置５０に対してデータセグメントを送信する。なお、本実施形態においては、ＴＣＰ（Transmission Control Protocol）に従って、パケット通信を行うものとする。
【００３６】
＜サーバ装置１０の構成＞
次に、サーバ装置１０の構成について説明する。サーバ装置１０の構成は一般的なコンピュータと同様であるから、本発明に係る構成のみについて図２を参照しながら説明する。
ＣＰＵ１００は、記憶部１０５に記憶されるプログラムを実行することにより、サーバ装置１０の装置各部の制御を行う。また、ＣＰＵ１００は、タイマ１００ａと１００ｂとを備える。
【００３７】
タイマ１００ａは、ＣＰＵ１００によりセットされたタイムアウト値が経過すると、トリガ信号を出力する。また、このタイマ１００ａは、データセグメントが送信されてから当該データセグメントに対する確認応答が受信されるまでの時間（以下、ラウンドトリップタイムという）を計測している。従来からの方法と同様に、タイマ１００ａにより取得されたラウンドトリップタイムはタイムアウト値の計算に用いられる。このタイムアウト値は時々刻々と変化する通信環境に応じて定められる可変の値である。また、本実施形態において、タイマ１００ａによって計測されたラウンドトリップタイムは、ラウンドトリップタイムの出現確率を示す確率分布データ（図３参照、詳しくは後述する）の生成時にも用いられる。
尚、ラウンドトリップタイムは、ウィンドウ毎にひとつのデータセグメントについて計測する方法が一般的であるが、すべてのデータセグメントについてラウンドトリップタイムを計測し、タイムアウト値または確率分布データの更新に用いてもよい。
【００３８】
タイマ１００ｂは、再送データセグメントが送信された時にのみ動作する。具体的には、タイマ１００ｂは、再送データセグメントの送信時にＣＰＵ１００の指示により時間の測定を開始し、再送データセグメント送信後ひとつめの確認応答が受信された時に、ＣＰＵ１００の指示により当該測定を終了する。タイマ１００ｂによって測定された時間はＣＰＵ１００に通知される。ＣＰＵ１００は、この時間を確率分布データと比較することにより、受信した確認応答がオリジナルデータセグメントに対するものであるか又は再送データセグメントに対するものであるかを推定する。
【００３９】
記憶部１０５は、ＲＡＭ(Random Accsess Memory)１０２と、ＲＯＭ（Read Only Memory)１０３と、ＨＤ(Hard Disk)１０４とから構成される。
ＲＯＭ１０３には、ＣＰＵ１００にデータセグメントの伝送制御処理を行わせるためのプログラムが記憶されている。ＣＰＵ１００は、このプログラムに従い、クライアント装置５０に対してデータセグメント（以下、オリジナルデータセグメントという）を送信した後、当該データセグメントに対応する確認応答の受信を待機する。また、ＣＰＵ１００は、オリジナルデータセグメントの送信時にタイマ１００ａにタイムアウト値をセットし、その後の経過時間をタイマ１００ａに計測させる。
【００４０】
ここで、通信端末４０と移動パケット通信網３０との間の無線区間における電波環境が悪化したなどの場合に、タイムアウト値に相当する時間が経過しても確認応答を受信されない事態が発生し得る。このような場合に、確認応答を受信することなく、タイマ１００ａからタイムアウト値が経過したことを示すトリガ信号が出力されてしまうと、ＣＰＵ１００は、当該データセグメントがクライアント装置５０に受信されなかったと判定する。そして、当該データセグメントを再送するとともに、タイマ１００ａに再び経過時間の測定を開始させる。また、データセグメントが再送されたので、タイマ１００ｂによる経過時間の測定も開始させる。
【００４１】
電波環境が改善されることにより移動パケット通信網３０を介した通信が再開されて、データセグメント及び確認応答の送受信が再び可能となったとする。これに伴い、確認応答を受信すると、ＣＰＵ１００は、タイマ１００ａをリセットするとともに、タイマ１００ｂに経過時間の測定を終了させる。そして、このタイマ１００ｂによって測定された経過時間と後述の確率分布データとを用いて、受信された確認応答がオリジナルデータセグメントに対応するものである確率が高いのか、再送されたデータセグメントに対応するものである確率が高いのかを判定する。
【００４２】
オリジナルデータセグメントに対応するものである確率が高いと判定した場合、ＣＰＵ１００は、オリジナルデータセグメントがクライアント装置５０に受信されたと推定し、続いて、後続のオリジナルデータセグメントを送信する。再送データセグメントに対応するものである確率が高いと判定した場合、ＣＰＵ１００は、オリジナルデータセグメントがクライアント装置５０に受信されなかったと推定し、続いて、後続の再送データセグメントが有るか否かを判定する。この判定結果が肯定的で有れば、後続の再送データセグメントを送信し、この判定結果が否定的で有れば、後続のオリジナルデータセグメントを送信する。
【００４３】
ＨＤ１０４は、タイマ１００ａによって計測されたラウンドトリップタイムの出現確率を示す確率分布データ（図３）を記憶している。
この確率分布データは、通信が正常に行われている場合に、データセグメントに対する確認応答が受信されるまでのラウンドトリップタイムの確率分布を示すデータである。図３において、データセグメントが送信された時刻を起点として、各データセグメントのラウンドトリップタイムの出現確率が示されている。
【００４４】
好ましい態様において、通信が正常に行われている場合に、オリジナルデータセグメントに対する確認応答が受信されるまでのラウンドトリップタイム（以下、Ｏ１−ＲＴＴという）と、再送データセグメントに対する確認応答が受信されるまでのラウンドトリップタイム（以下、Ｓ１−ＲＴＴという）のそれぞれの確率分布は、以下説明するように同様であるとして取り扱われる。
【００４５】
図４に、オリジナルデータセグメントが送信された時刻を起点として、オリジナルデータセグメントに対する確認応答が受信されるまでの到着時刻の確率分布を実線で示し、再送データセグメントに対する確認応答パケットが受信されるまでの到着時刻の確率分布を点線で示す。この図において、時刻ｔ１は、再送データセグメントが送信された時刻である。時刻ｔ２は、オリジナルデータセグメントに対する確認応答が受信されるまでの到着時刻の出現確率と、再送データセグメントに対する確認応答が受信されるまでの到着時刻の出現確率とが等しくなるときの時刻である。この図に示すように、一般的に、オリジナルデータセグメントが送信されてから、ある時間が経過するまでの間（図示の例では時刻ｔ２までの間）は、オリジナルデータセグメントに対する確認応答が受信される確率が高く、それ以後は、再送データセグメントに対する確認応答が受信される確率が高い。そこで、本実施形態では、図示のように同一曲線を描く２つの確率分布を用いて、再送データセグメント送信後に受信した確認応答がオリジナルデータセグメントに対するものか又は再送データセグメントに対するものであるかの推定を行っている。
【００４６】
更に、ＨＤ１０４には、ＣＰＵ１００に上述の確率分布の学習処理を行わせるための学習プログラムが記憶されている。この学習処理において、ＣＰＵ１００は、クライアント装置５０にオリジナルデータセグメントを送信してから当該データセグメントに対応する確認応答を受信するまでのラウンドトリップタイムをタイマ１００ａにて測定させる。そして、測定された各ラウンドトリップタイムの出現確率を計算することにより、ＨＤ１０４に記憶された確率分布データの値を逐次的に更新する。以上のようにして、ＣＰＵ１００は、上述の確率分布を学習する。
好ましい態様において、タイムアウト後に再送データセグメントを送信してひとつめに受信した確認応答が再送データセグメントに対応していると判定された場合には、タイマ１００ｂによる時間の計測値を用いて、確率分布データを更新するようにしてもよい。確認応答が再送データセグメントに対応していると判定される場合とは、タイマ１００ｂによる計測値が図４における時刻ｔ２までの経過時間より長く、且つひとつめに受信した確認応答と同一の確認応答番号を有するふたつめの確認応答を受信しない場合である。
【００４７】
なお、ＣＰＵ１００は、サーバ装置１０とクライアント装置５０との通信を開始してから確率分布の学習を行うようにしても良いし、予め統計された統計結果に基づいて確率分布の学習を行っても良い。具体的には、３通りの方法が考えられる。
第１の方法は、サーバ装置１０とクライアント装置５０との通信を開始後、テストデータセグメントを送信する期間を設け、その期間内に送受信されたデータセグメントおよび確認応答に基づいて確率分布データを生成する。そして、一定期間が経過した後に送信対象のデータセグメントの送信を開始し、データセグメントの再送が必要となる事態が発生した場合には、テストデータセグメントを用いて得られた確率分布データを用いて上述の判定を行う。送信対象のデータセグメントの送信が開始した後も、タイマ１００ａがラウンドトリップタイムを取得する度に確率分布データは更新される。
【００４８】
第２の方法は、サーバ装置１０とクライアント装置５０との通信を開始後すぐに送信対象データセグメントの送信を開始し、しばらくの間は確率分布データが存在しないので上述の判定を行わず、確率分布の学習のみを行うという方法である。この方法において本願の伝送制御方法が用いられるのは、通信開始後一定期間が過ぎてからになるので、比較的に長時間に亙る通信に用いれば、効果が期待できる。
第３の方法は、サーバ装置１０とクライアント装置５０との通信を開始後すぐに送信対象のデータセグメントの送信を開始し、類似する通信環境を用いて予め測定された確率分布データを用いて上記判定を行うという方法である。尚、この場合、通信開始後に取得されたラウンドトリップタイムを用いて、過去の確率分布データを逐次更新することにより学習を行う。
また、図示しないクライアント装置５０が複数存在する場合、ＣＰＵ１００は、クライアント装置５０のＩＰアドレス毎に、上述の確率分布を学習する。
【００４９】
以上のように、本実施形態においてサーバ装置１０は、再送データセグメント送信後に確認応答が受信されるまでの経過時間を測定し、学習した確率分布のデータを用いて、測定した当該経過時間がＯ１−ＲＴＴである確率が高いのか又はＳ１−ＲＴＴである確率が高いのかを判定することにより、当該確認応答がオリジナルデータセグメントに対応するものであるのか又は再送データセグメントに対応するものであるのかを推定する。
【００５０】
＜クライアント装置５０の構成＞
クライアント装置５０は、一般的なコンピュータと同様であるから、本発明に係る機能についてのみ説明する。
クライアント装置５０は、サーバ装置１０からデータセグメントを受信すると、当該データセグメントを受信したことを示す確認応答をサーバ装置１０へ送信する機能を有している。具体的には、クライアント装置５０は、確認応答のヘッダの確認応答番号フィールドに、次に受信を期待するデータセグメントのシーケンス番号をセットし、当該確認応答をサーバ装置１０へ送信する。
【００５１】
（２．動作）
次に本実施形態の動作について説明する。
図５は、サーバ装置１０とクライアント装置５０との間でパケット通信を行う場合の一例を示すシーケンスチャートである。また、図６は、サーバ装置１０の本実施形態に係るデータセグメントの送信及び受信動作を示すフローチャートである。なお、本実施形態においては、スライディングウィンドウ方式を用いて、データセグメントを送信するものとし、通信開始時点でのウィンドウサイズを「３」とする。また、クライアント装置が受信可能なデータセグメントの容量は送信装置が設定するウィンドウのサイズに対して十分に大きいと仮定する。また、説明の簡易のため、ウィンドウサイズは「３」のまま固定とする。
また、サーバ装置１０のＣＰＵ１００は、クライアント装置５０とパケット通信を行っている間、データセグメントの送受信を行う度、ＨＤ１０４に記憶された学習プログラムを実行して、上述の確率分布の学習処理を行っているものとする。
【００５２】
まず、図５において、サーバ装置１０から、シーケンス番号０、１０００、２０００を有するそれぞれのデータセグメント（オリジナルデータセグメントＳ１、Ｓ２、Ｓ３）がクライアント装置５０へ送信される。３つのデータセグメントが送信されるのは、ウィンドウサイズが「３」であることに拠る。
図示の例では、通信端末４０と移動パケット通信網３０との間の通信区間に含まれる無線区間における電波環境が悪化し、当該オリジナルデータセグメントＳ１、Ｓ２、Ｓ３が一時的に通信網内に滞留している。その後、電波環境が改善され、移動パケット通信網３０を介してオリジナルデータセグメントＳ１、Ｓ２、Ｓ３はクライアント装置５０に送信される。即ち、オリジナルデータセグメントＳ１〜Ｓ３は、各々の送信時から大きく遅延してクライアント装置５０に到着することとなる。そして、まず、オリジナルデータセグメントＳ１を受信したクライアント装置５０により、オリジナルデータセグメントＳ１に対応する確認応答番号１０００を有する確認応答Ｒ１がサーバ装置１０へ送信される。
【００５３】
次に、以上説明したところまでのサーバ装置１０の動作について、図６を参照しながら説明する。
サーバ装置１０のＣＰＵ１００は、ステップＳ１０において、オリジナルデータセグメントＳ１、Ｓ２、Ｓ３の送信を行う。次いで、オリジナルデータセグメントＳ１に対してクライアント装置５０から送信される確認応答の受信を待機する。このため、ＣＰＵ１００は、タイマ１００ａにタイムアウト値をセットし、タイマ１００ａにその後の経過時間の計測をさせる（ステップＳ１１）。
そして、ＣＰＵ１００は、何らかの確認応答を受信したか否かを判断し（ステップＳ１２）、この判断結果が「ＮＯ」である場合にはタイマ１００ａのタイムアウトが発生したか否かを判断する（ステップＳ１３）。そして、ステップＳ１３の判断結果が「ＮＯ」である場合には、ステップＳ１２に戻る。以後、ＣＰＵ１００は、タイマ１００ａにタイムアウトが発生するまでの間、確認応答が受信されない限り、ステップＳ１２およびＳ１３の判断を繰り返す。
【００５４】
そして、クライアント装置５０から送信された確認応答Ｒ１を受信する前に、タイムアウトが発生したとする。この場合、確認応答を受信することなく、タイマ１００ａによって測定される経過時間がタイムアウト値に達し、トリガ信号が出力される（ステップＳ１２；ＮＯ、ステップＳ１３；ＹＥＳ）。そして、ＣＰＵ１００はタイマ１００ａの値をリセットするとともに、処理をステップＳ１４へ進める。
【００５５】
ステップＳ１４において、ＣＰＵ１００は、オリジナルデータセグメントＳ１がクライアント装置５０に受信されなかったと判定し、シーケンス番号０を有するデータセグメント（図５における再送データセグメントＳ′１）をクライアント装置５０へ再送するとともに、タイマ１００ａにタイムアウト値をセットし、タイマ１００ａに経過時間の計測をさせる。また、この際、タイマ１００ｂにも経過時間の測定を開始させる。
【００５６】
そして、ＣＰＵ１００は、何らかの確認応答を受信したか否かを判断し（ステップＳ１５）、この判断結果が「ＮＯ」である場合にはタイマ１００ａのタイムアウトが発生したか否かを判断する（ステップＳ１６）。そして、ステップＳ１６の判断結果が「ＮＯ」である場合には、ステップＳ１５に戻る。以後、ＣＰＵ１００は、タイマ１００ａにタイムアウトが発生するまでの間、確認応答が受信されない限り、ステップＳ１５およびＳ１６の判断を繰り返す。
その後、タイムアウト値が経過する前に、即ちタイマ１００ａからトリガ信号が出力される前に、上述の確認応答Ｒ１を受信したとする。この場合、ステップＳ１５に進んだとき、その判断結果が「ＹＥＳ」となって、処理はステップＳ１７に移行する。
【００５７】
ステップＳ１７において、ＣＰＵ１００は、タイマ１００ｂに経過時間の測定を終了させる。そして、測定された経過時間とＨＤ１０４に記憶されている確率分布データとを用いて、確認応答Ｒ１がオリジナルデータセグメントＳ１に対応するものである確率が高いのか、再送データセグメントＳ′１に対応するものである確率が高いのかを判定する処理を行う（ステップＳ１８）。
【００５８】
具体的には、上述の＜サーバ装置１０の構成＞欄で説明したように、図４における２種類の確率分布データの関係に着目して、ステップＳ１７で測定された経過時間がＳ１−ＲＴＴである確率が高いのか又はＯ１−ＲＴＴである確率が高いのかを判定する。
【００５９】
好ましい態様において、ＨＤ１０４は、図３に示すような１種類の確率分布データを記憶しておく。そして、ＣＰＵ１００は、タイマ１００ｂが測定した経過時間の値を当該確率分布データと比較し、測定値に対応するＳ１−ＲＴＴの出現確率を求める。また、タイマ１００ｂによる測定値に、再送データセグメント送信の契機となったタイムアウト値として１００ａに設定された値を足し算して、測定値＋タイムアウト値に対応するＯ１−ＲＴＴの出現確率を求める。その結果、Ｓ１−ＲＴＴの出現確率が、Ｏ１−ＲＴＴの出現確率と等しいか大きい場合、確認応答Ｒ１は再送データセグメントに対して送信されたものとみなす。逆に、前者が後者よりも小さい場合、確認応答Ｒ１はオリジナルデータセグメントに対して送信されたものとみなす。
【００６０】
別の態様において、ＨＤ１０４は、図４に示すような２種類の確率分布データを記憶しておく。ＣＰＵ１００は、タイマ１００ｂによる測定値に、再送データセグメント送信の契機となったタイムアウト値として１００ａに設定された値を足し算して、Ｏ１−ＲＴＴの出現確率を示す確率分布データ（図４の実線）と比較し、測定値＋タイムアウト値に対応するＯ１−ＲＴＴの出現確率を求める。また、同様に、測定値＋タイムアウト値をＳ１−ＲＴＴの出現確率を示す確率分布データ（図４の点線）と比較し、測定値＋タイムアウト値に対応するＳ１−ＲＴＴの出現確率を求める。そして、Ｓ１−ＲＴＴの確率分布データを参照して求められた出現確率が、Ｏ１−ＲＴＴの確率分布データを参照して求められた出現確率と等しいか大きい場合、確認応答Ｒ１は再送データセグメントに対して送信されたものとみなす。逆に、前者が後者よりも小さい場合、確認応答Ｒ１はオリジナルデータセグメントに対して送信されたものとみなす。
【００６１】
図４に示すＳ１−ＲＴＴの確率分布データとＯ１−ＲＴＴの確率分布データを用いる場合、２つの曲線の交差点（図４の時刻ｔ２）を閾値と定め、タイマ１００ｂの計測値にタイムアウト値を足した値が当該閾値より小さい場合には、確認応答Ｒ１はオリジナルデータセグメントに対応するものとみなし、閾値と等しいかより大きな場合には、再送データセグメントに対応するとみなすようにしてもよい。
例えば、図４に示すように、ステップＳ１７で測定された経過時間にタイムアウト値を足した値がｔ′１であったとすると、Ｏ１−ＲＴＴである確率が高いことが分かる。
【００６２】
従って、ＣＰＵ１００は、確認応答Ｒ１がオリジナルデータセグメントＳ１に対応するものである確率が高いと判定し、ステップＳ２１へ進む。この場合、Ｓ１に対する確認応答を受け取ったので、ウィンドウがデータセグメントひとつ分だけスライドし、後続のオリジナルデータセグメントをひとつ送信することが可能となる。そこで、ステップＳ２１において、後続のシーケンス番号３０００を有するオリジナルデータセグメント（図５のＳ４）を送信する。そして、ステップＳ１１、ステップＳ１２へと進む。
【００６３】
ここで、図５に戻って、図６のＳ２１に対応する処理として、サーバ装置１０からクライアント装置５０へオリジナルデータセグメントＳ４が送信されている。そして、処理は、ステップＳ１１に戻り、タイマ１００ａによる経過時間の測定が開始される。
その後、ＣＰＵ１００は、タイマ１００ａにタイムアウトが発生するまでの間、確認応答が受信されない限り、上述したステップＳ１２およびＳ１３の判断を繰り返す。
一方、サーバ装置１０で上述の処理が行われている間、クライアント装置５０にオリジナルデータセグメントＳ２が受信され、当該オリジナルデータセグメントＳ２に対応する、確認応答番号２０００を有する確認応答Ｒ２が、サーバ装置１０へ送信される。
【００６４】
この確認応答番号２０００を有する確認応答Ｒ２がサーバ装置１０に到達すると、図６において、サーバ装置１０のＣＰＵ１００によるステップＳ１２の判断結果は「ＹＥＳ」となる。この結果、ウィンドウがさらにデータセグメントひとつ分スライドし、後続のシーケンス番号４０００を有するオリジナルデータセグメント（図５におけるＳ５）を送信する（ステップＳ１０）。
このステップに対応する処理として、図５においては、サーバ装置１０からオリジナルデータセグメントＳ５がクライアント装置５０へ送信される。
【００６５】
以上のようにして、サーバ装置１０からクライアント装置５０へデータセグメントが送信される。
なお、図６におけるステップＳ１９で、ＣＰＵ１００は、再送データセグメントに対応するものである確率が高いと判定した場合には、ステップＳ２０に進む。ステップＳ２０においては、後続の再送データセグメントが有るか否かの判定を行う。有ると判定した場合には、ステップＳ１４に進み、無いと判定した場合には、ステップＳ２１に進む。
【００６６】
［第２実施形態］
次に、図１〜図８を参照しながら、第１実施形態と同様の構成を持つサーバ装置１０とクライアント装置５０間でパケット通信を行う他の例について説明する。
【００６７】
第２実施形態では、第１実施形態で用いた確率分布（以下、確率分布１という）に加え、別の確率分布（以下、確率分布２という）も併用して、図６におけるステップＳ１８の判定処理を行う。
確率分布２は図７に例示するが、タイムアウト発生による再送データセグメントの送信時点を起点とし、タイムアウト後に受け取ったひとつめの確認応答がオリジナルデータセグメントに対する確認応答であった場合の当該確認応答を受信するまでに要した時間（以下、仮のラウンドトリップタイムという）の出現確率を示す。これに対し、確率分布１は、オリジナルデータセグメントの送信時点を起点として得られたラウンドトリップタイムの出現確率を示すが、オリジナルデータセグメントの送信時点と再送データセグメントの送信時点では通信路の状況が必ずしも同程度ではない。このため、ステップＳ１８の判定処理において、確認応答がオリジナルデータセグメントに対応するものである確率を求める場合には、確率分布１に基づくよりも確率分布２の方に基づいた方が信頼性の高い判定結果が得られる。
このような事情のもと、本実施形態では、受信した確認応答が再送データセグメントに対する確認応答である確率を求める場合には確率分布１を用い、オリジナルデータセグメントに対する確認応答である確率を求める場合には確率分布２を用いている。
【００６８】
（１．構成）
第２実施形態の構成は、その主要な部分において第１実施形態と同様であるので、第２実施形態で用いられる付加的な機能についてのみ説明する。
まず、第１実施形態と同様、第２実施形態によるサーバ装置１０のＣＰＵ１００は２種類のタイマ１００ａと１００ｂを有する（図１参照）。タイマ１００ａ、１００ｂ共に、第１実施形態と同様の機能を有するが、第２実施形態において、タイマ１００ｂによって測定された経過時間の値は、ステップＳ１８の判定処理に用いられるのみでなく、確率分布２の学習にも用いられる。
【００６９】
ＨＤ１０４には、確率分布１データに加え、確率分布２データが記憶されている。同様に、ＨＤ１０４には、第１実施形態で述べた確率分布１を学習するための学習プログラム（以下、第１の学習プログラムという）に加え、ＣＰＵ１００に確率分布２の学習処理を行わせるための学習プログラム（以下、第２の学習プログラムという）が記憶されている。
第２の学習プログラムによる処理において、ＣＰＵ１００は、データセグメント再送後に受信された確認応答がオリジナルデータセグメントに対応するものである確率が高いと判定された場合、タイマ１００ｂによって測定された経過時間の値を用いてＨＤ１０４に記憶された確率分布２データの値を更新する。具体的には、タイマ１００ｂが測定した経過時間がオリジナルデータセグメントに対する仮のラウンドトリップタイムである確率を求め、求めた確率を用いて、ＨＤ１０４に記憶された確率分布２データの値を逐次的に更新する。
尚、確率分布２データの更新の具体的な方法については、過去にタイマ１００ｂによって測定された値と合わせて再計算を行うなど様々な方法が考えられ、任意に変更可能である。
【００７０】
ここで、上述の、「データセグメント再送後に受信された確認応答がオリジナルデータセグメントに対応するものである確率が高いと判定された場合」とは、以下のような場合である。ＣＰＵ１００が再送データセグメント送信後にオリジナルデータセグメントに対する確認応答（図５のＲ１）と再送データセグメントに対する確認応答（図５のＲ'１）の両方を受信する場合、確認応答Ｒ１を先に受信し、確認応答Ｒ'１を後に受信することとなる。図６のステップＳ１８の判定処理は確認応答Ｒ１を受信した時点で行われ、この時点ではいずれのセグメントに対する確認応答かに関する推定は可能であっても断定はできない。後になって確認応答Ｒ'１を受信した時点で、先に受信された確認応答がオリジナルデータセグメントに対するものであり、後に受信された確認応答が再送データセグメントに対するものであることが断定できる。このように、ステップＳ１８の判定処理によって得られた結果の正否は、２つめの確認応答Ｒ'１を受信した時点で始めて確定するので、ＣＰＵ１００は２つめの確認応答を受信した時点で、タイマ１００ｂによる測定値を用いて確率分布２データを更新するようにしている。
【００７１】
実際には、図５に示すように、再送データセグメントＳ'１がクライアント装置５０によって受信されるのはオリジナルデータセグメントＳ１、Ｓ２、Ｓ３を受信した後であるので、確認応答Ｒ'１に含まれる確認応答番号はひとつめの確認応答Ｒ１とは異なっている。従って、サーバ装置１０のＣＰＵ１００は、同一の確認応答番号を有する確認応答が２個（図５のＲ３とＲ'１）受信された時点で、確率分布２データの更新を行うようにしている。
【００７２】
尚、第１実施形態において説明した確率分布１の学習処理と同様、第１〜第３いずれかの方法を用いて確率分布２を学習するようにすればよい。第１の方法とは、サーバ装置１０とクライアント装置５０との通信を開始後、テストデータセグメントを送信する期間を設け、このテストデータセグメントの再送が発生した場合にタイマ１００ｂが取得した仮のラウンドトリップタイムに基づいて確率分布２データを生成する方法である。
【００７３】
第２の方法は、通信開始後に確率分布２の学習を開始するという方法である。この場合、通信開始後しばらくの間は、確率分布２データが存在しないので上述の判定を行わず、一定の時間が経過してから判定処理が行われる。ここでは、再送データセグメントを送信した場合にタイマ１００ｂによる測定を開始させ、ひとつめの確認応答を受信するまでの経過時間を測定しておく。そして、同一の確認応答番号を有するふたつめの確認応答を受信した時点で、タイマ１００ｂによる測定値を用いて確率分布データを生成する。
【００７４】
第３の方法は、通信開始後、類似する通信環境を用いて予め測定された確率分布２データを用いてすぐに上記判定を開始するという方法である。具体的には、従来技術欄で説明したタイムスタンプオプションを用いることにより、再送データセグメント送信後に受信された確認応答がオリジナルデータセグメントに対するものか又は再送データセグメントに対するものかを判別し、予め確率分布２を学習しておく。そして、通信開始後にこの確率分布２データを更新していく形で上述の確率分布２の学習処理を行うようにすれば良い。尚、このタイムスタンプオプションは、第１の方法におけるテストデータセグメントの送信期間、および第２の方法における通信開始直後に学習のみを行っている期間のいずれの場合にも適用可能である。
【００７５】
このようにして学習された確率分布２と、第１実施形態で説明した確率分布１とを用いて、以下のことが分かる。まず、通信が正常に行われている場合に、再送データセグメント送信後に当該再送データセグメントに対する確認応答が受信されるまでのラウンドトリップタイム（以下、Ｓ２−ＲＴＴという）の確率分布は、確率分布１（図３）で表されうる。また、再送データセグメント送信後にオリジナルデータセグメントに対する確認応答が受信されるまでの仮のラウンドトリップタイム（以下、Ｏ２−ｐＲＴＴという）は、確率分布２（図７）で表される。そこで、図８に、再送データセグメントが送信された時刻を起点として、Ｏ２−ｐＲＴＴの確率分布（確率分布２）を実線で示し、Ｓ２−ＲＴＴの確率分布（確率分布１）を点線で示す。この図において、２つの曲線の交点である時刻ｔ′２は、Ｏ２−ｐＲＴＴの出現確率と、Ｓ２−ＲＴＴの出現確率とが等しくなるときの時刻である。図示の例では、再送データセグメントが送信されてから時刻ｔ′２が経過するまでの間は、オリジナルデータセグメントに対する確認応答が受信される確率が高く、時刻ｔ′２が経過した後は、再送データセグメントに対する確認応答が受信される確率が高いことが分かる。本実施形態では、この性質を利用して、確率分布１データおよび確率分布２データの両方に基づいて、図６のステップＳ１８における判定を行うようにしている。
【００７６】
また、図示しないクライアント装置５０が複数存在する場合、ＣＰＵ１００は、クライアント装置５０のＩＰアドレス毎に、上述の確率分布２を学習する。
【００７７】
（２．動作）
次に、第２実施形態の動作について説明する。
第２実施形態の動作は、図６のステップＳ１８の判定処理に係る動作を除いて、第１実施形態と同一であるので、当該判定処理に係る部分のみについて説明する。
【００７８】
ステップＳ１８の判定処理は、具体的に以下のように行われる。ＣＰＵ１００は、タイマ１００ｂが測定した経過時間を、確率分布１データおよび確率分布２データの各々と比較する。そして、タイマ１００ｂによる測定値に対応する出現確率を各々求め、確率分布１データを参照して求められた出現確率が、確率分布２データを参照求められた出現確率と等しいか又は大きい場合、確認応答Ｒ１は再送データセグメントに対して送信されたものとみなす。逆に、前者が後者よりも小さい場合、確認応答Ｒ１はオリジナルデータセグメントに対して送信されたものとみなす。
【００７９】
別の方法として、確率分布１データおよび確率分布２データの各々を示す２曲線の交点（図８のｔ’２）を閾値と定め、タイマ１００ｂの計測値が当該閾値より小さい場合には、確認応答Ｒ１はオリジナルデータセグメントに対応するものとみなし、閾値と等しいかより大きな場合には、再送データセグメントに対応するとみなすようにしてもよい。
図８の例では、時刻ｔ’１に確認応答Ｒ１が受信されているので、当該確認応答はオリジナルデータセグメントに対応するものである確率が高いと判断され（ステップＳ１９；ＮＯ）、次のステップに進む。
【００８０】
また、ステップＳ１８の判定処理を行った後、本実施形態では、同一の確認応答番号を有する確認応答を２個受信した場合に、確率分布２データを更新する処理を行う。これは、上述したように、この同一の確認応答を２個受信することによってはじめて、ステップＳ１８による判定処理が確定するためである。
【００８１】
［変形例］
以上、本発明の実施形態について説明したが、本発明はその主要な特徴から逸脱することなく他の様々な形態で実施することが可能である。なお、変形例としては、例えば、以下のようなものが考えられる。
【００８２】
上述の実施形態においては、ＴＣＰに従ってパケット通信を行うようにしたが、本発明は、データセグメントまたはデータブロックの再送制御を行うプロトコルであれば、ＴＣＰ以外の通信プロトコルにも適用可能である。また、他のプロトコルを用いる場合、ＴＣＰが採用しているスライディングウィンドウ方式と類似のウィンドウを用いて、データセグメントを送信しても良い。
【００８３】
上述の実施形態においては、サーバ装置１０は、ＩＰアドレス毎に、上述の確率分布１および２を学習した。しかし、サブネットワーク毎に、ラウンドトリップタイムの確率分布を学習するようにしても良い。また、移動パケット通信網３０が複数存在する場合、各移動パケット通信網について確率分布１および２を学習するようにしても良い。これは、通信網によって通信環境が異なるため、通信網毎に確率分布を学習し、それに基づいて判定を行った方がより信頼性の高い判定結果が得られるからである。
【００８４】
また、サーバ装置１０で行った上述の確率分布１および２の学習及び確認応答に対するデータセグメントの推定は、他のサーバ装置で行っても良い。このような構成において、サーバ装置１０は、再送データセグメント送信後に確認応答を受信すると、この他のサーバ装置に当該確認応答がオリジナルデータセグメントに対するものか又は再送データセグメントに対するものかを問い合わせる。他のサーバ装置は、上述のサーバ装置１０が行った判定処理を行い、この判定結果をサーバ装置１０へ送信する。サーバ装置１０は、送信された判定結果に基づいて、確認応答に対するデータセグメントを推定することができる。
【００８５】
なお、上述の実施形態においては、クライアント装置５０は通信端末４０を介してサーバ装置１０とパケット通信を行った。しかし、クライアント装置５０が無線通信機能を備え、通信端末４０を介することなく、移動パケット通信網３０、インターネット２０を介してサーバ装置１０とパケット通信を行う構成であっても良い。
【図面の簡単な説明】
【００８６】
【図１】本発明の第１および第２実施形態に係る通信システム１の構成を示すブロック図である。
【図２】第１および第２実施形態に係るサーバ装置１０の構成を示すブロック図である。
【図３】第１実施形態に係る確率分布（第２実施形態における確率分布１）の大略を示す図である。
【図４】第１実施形態に係る確率分布を用いて出現確率の違いを説明するための図である。
【図５】第１および第２実施形態に係るサーバ装置１０とクライアント装置５０との間でパケット通信を行う場合の一例を示すシーケンスチャートである。
【図６】第１および第２実施形態に係るサーバ装置１０のパケット送信及び受信動作を示すフローチャートである。
【図７】第２実施形態に係る確率分布２の大略を示す図である。
【図８】第２実施形態に係る確率分布１及び確率分布２を用いて出現確率の違いを説明するための図である。
【図９】従来のサーバ装置１０'とクライアント装置５０との間でパケット通信を行う場合の一例を示すシーケンスチャートである。
【符号の説明】
【００８７】
１・・・通信システム、１０・・・サーバ装置、１００・・・ＣＰＵ、１００ａ・・・タイマ、１００ｂ・・・タイマ、１０１・・・通信部、１０２・・・ＲＡＭ、１０３・・・ＲＯＭ、１０４・・・ＨＤ、１０５・・・記憶部、１１１・・・バス、２０・・・インターネット、３０・・・移動パケット通信網、４０・・・通信端末、５０・・・クライアント装置。
【図１】
0003727941.tif 000002
【図２】
0003727941.tif 000003
【図３】
0003727941.tif 000004
【図４】
0003727941.tif 000005
【図５】
0003727941.tif 000006
【図６】
0003727941.tif 000007
【図７】
0003727941.tif 000008
【図８】
0003727941.tif 000009
【図９】
0003727941.tif 000010