(57)【要約】  第１の通信装置１０において、第１のロス判定部１３で、送信データユニットに対する第２の通信装置３０からの確認応答が予め定められた時間内に受信されない場合に、当該データユニットが損失したと判定し、この判定時にデータユニットを再送する。判定部１６で、スプリアスタイムアウトと判定された場合に、ウィンドウ制御部１７で、輻輳ウィンドウのサイズを減少させる目標値を設定し、この後、確認応答が受信されたことを契機に、その輻輳ウィンドウのサイズを目標値まで段階的に減少させる。したがって、スロースタート閾値及び輻輳ウィンドウを変化させる応答アルゴリズム実行において、スプリアスタイムアウトに続けてセグメントロスが発生した場合に、効率的なロス回復を実現することができ、これによってスループットを向上させることができる。
2008044653.tif 000002
【特許請求の範囲】
【請求項１】
一方の送受信装置から１パケットデータ又は複数パケットデータの塊であるデータユニットを、ネットワークを介して他方の送受信装置へ送達する通信システムであって、
前記送受信装置は、
前記受信側の送受信装置へ前記データユニットを送信する送信手段と、
前記受信側の送受信装置から送信されたデータユニットの確認応答を受信する受信手段と、
前記データユニットの送信後、このデータユニットに対する確認応答が前記受信手段にて予め定められた時間内に受信されない場合に当該データユニットが損失したと判定する第１のロス判定手段と、
前記第１のロス判定手段でデータユニット損失と判定された際にデータユニットを再送する再送手段と、
前記第１のロス判定手段の判定結果が前記データユニット又は前記確認応答の遅延に起因するか否かを判定し、遅延に起因すると判定された際にスプリアスタイムアウトと判定するスプリアスタイムアウト判定手段と、
前記スプリアスタイムアウトと判定された場合、前記データユニットの送信数を制御する輻輳ウィンドウのサイズを減少させる目標値を設定し、前記受信手段によって前記確認応答が受信されたことを契機に、該輻輳ウィンドウのサイズを該目標値まで段階的に減少させる制御を行う制御手段と
を備えたことを特徴とする通信システム。
【請求項２】
前記制御手段は、前記スプリアスタイムアウトと判定された際に、該スプリアスタイムアウトの判定時において送信済の全データユニットの確認応答が受信された時点で、前記輻輳ウィンドウのサイズが前記目標値より大きければ、該輻輳ウィンドウのサイズを該目標値及びフライトサイズの何れか一方に設定することを特徴とする請求の範囲第１項に記載の通信システム。
【請求項３】
一方の送受信装置から１パケットデータ又は複数パケットデータの塊であるデータユニットを、ネットワークを介して他方の送受信装置へ送達する通信システムであって、
前記送受信装置は、
前記受信側の送受信装置へ前記データユニットを送信する送信手段と、
前記受信側の送受信装置から送信されたデータユニットの確認応答を受信する受信手段と、
前記データユニットの送信後、このデータユニットに対する確認応答が前記受信手段にて予め定められた時間内に受信されない場合に当該データユニットが損失したと判定する第１のロス判定手段と、
前記第１のロス判定手段でデータユニット損失と判定された際にデータユニットを再送する再送手段と、
前記第１のロス判定手段の判定結果が前記データユニット又は前記確認応答の遅延に起因するか否かを判定し、遅延に起因すると判定された際にスプリアスタイムアウトと判定するスプリアスタイムアウト判定手段と、
前記受信手段で受信された確認応答に基づいて、前記データユニットの損失を検出する第２のロス判定手段と、
前記スプリアスタイムアウトと判定された場合、該スプリアスタイムアウトの判定時において送信済の全データユニットの確認応答が受信されるまでは、前記第２のロス判定手段にてデータユニットの損失が検出されても、スロースタート閾値を減少させない制御を行う制御手段と、
を備えたことを特徴とする通信システム。
【請求項４】
１パケットデータ又は複数パケットデータの塊であるデータユニットを、ネットワークを介して受信側通信装置に送達する通信装置であって、
前記受信側通信装置に前記データユニットを送信する送信手段と、
前記受信側通信装置から送信されたデータユニットの確認応答を受信する受信手段と、
前記データユニットの送信後、このデータユニットに対する確認応答が前記受信手段にて予め定められた時間内に受信されない場合に当該データユニットが損失したと判定する第１のロス判定手段と、
前記第１のロス判定手段でデータユニット損失と判定された際にデータユニットを再送する再送手段と、
前記第１のロス判定手段の判定結果が前記データユニット及び前記確認応答の何れか一方の遅延に起因するか否かを判定し、前記データユニットの遅延に起因すると判定された際にスプリアスタイムアウトと判定するスプリアスタイムアウト判定手段と、
前記スプリアスタイムアウトと判定された場合、前記データユニットの送信数を制御する輻輳ウィンドウのサイズを減少させる目標値を設定し、前記受信手段によって前記確認応答が受信されたことを契機に、該輻輳ウィンドウのサイズを該目標値まで段階的に減少させる制御を行う制御手段と
を備えたことを特徴とする通信装置。
【請求項５】
前記制御手段は、前記スプリアスタイムアウトと判定された際に、前記再送手段でのデータユニットの再送前に送信された全データユニットの確認応答が受信された時点で、前記輻輳ウィンドウのサイズが前記目標値より大きければ、該輻輳ウィンドウのサイズを該目標値及びフライトサイズの何れか一方に設定することを特徴とする請求の範囲第４項に記載の通信装置。
【請求項６】
前記目標値は、前記スプリアスタイムアウトと判定された時点のフライトサイズの１／ｎであることを特徴とする請求の範囲第４項または第５項に記載の通信装置。
【請求項７】
前記目標値は、前記データユニットの１つ分であることを特徴とする請求の範囲第４項または第５項に記載の通信装置。
【請求項８】
１パケットデータ又は複数パケットデータの塊であるデータユニットを、ネットワークを介して受信側通信装置に送達する通信装置であって、
前記受信側通信装置に前記データユニットを送信する送信手段と、
前記受信側通信装置から送信されたデータユニットの確認応答を受信する受信手段と、
前記データユニットの送信後、このデータユニットに対する確認応答が前記受信手段にて予め定められた時間内に受信されない場合に当該データユニットが損失したと判定する第１のロス判定手段と、
前記第１のロス判定手段でデータユニット損失と判定された際にデータユニットを再送する再送手段と、
前記第１のロス判定手段の判定結果が前記データユニット及び前記確認応答の何れか一方の遅延に起因するか否かを判定し、前記データユニットの遅延に起因すると判定された際にスプリアスタイムアウトと判定するスプリアスタイムアウト判定手段と、
前記受信手段で受信された確認応答に基づいて、前記データユニットの損失を検出する第２のロス判定手段と、
前記スプリアスタイムアウトと判定された場合、該スプリアスタイムアウトの判定時において送信済の全データユニットの確認応答が受信されるまでは、前記第２のロス判定手段にてデータユニットの損失が検出されても、スロースタート閾値を減少させない制御を行う制御手段と、
を備えたことを特徴とする通信装置。
【請求項９】
送信側の通信装置から１パケットデータ又は複数パケットデータの塊であるデータユニットを、ネットワークを介して受信側の通信装置へ送達する通信方法であって、
前記送信側の通信装置は、
前記データユニットの送信後、このデータユニットに対する前記受信側の通信装置からの確認応答が予め定められた時間内に受信されない場合に当該データユニットが損失したと判定する第１のステップと、
前記第１のステップでデータユニット損失と判定された際にデータユニットを再送する第２のステップと、
前記第１のステップでの判定結果が前記データユニット及び前記確認応答の何れか一方の遅延に起因するか否かを判定し、前記データユニットの遅延に起因すると判定された際にスプリアスタイムアウトと判定する第３のステップと、
前記第３のステップでスプリアスタイムアウトと判定された場合、前記データユニットの送信数を制御する輻輳ウィンドウのサイズを減少させる目標値を設定し、前記確認応答が受信されたことを契機に、該輻輳ウィンドウのサイズを該目標値まで段階的に減少させる第４のステップと
を更に含むことを特徴とする通信方法。
【請求項１０】
送信側の通信装置から１パケットデータ又は複数パケットデータの塊であるデータユニットを、ネットワークを介して受信側の通信装置へ送達する通信方法であって、
前記送信側の通信装置は、
前記データユニットの送信後、このデータユニットに対する前記受信側の通信装置からの確認応答が予め定められた時間内に受信されない場合に当該データユニットが損失したと判定する第１のステップと、
前記第１のステップでデータユニット損失と判定された際にデータユニットを再送する第２のステップと、
前記第１のステップでの判定結果が前記データユニット及び前記確認応答の何れか一方の遅延に起因するか否かを判定し、前記データユニットの遅延に起因すると判定された際にスプリアスタイムアウトと判定する第３のステップと、
前記送信側の通信装置で受信された前記確認応答に基づいて、前記データユニットの損失を検出する第４のステップと、
前記スプリアスタイムアウトと判定された場合、該スプリアスタイムアウトの判定時において送信済の全データユニットの確認応答が受信されるまでは、前記第４のステップにてデータユニットの損失が検出されても、スロースタート閾値を減少させないようにする第５のステップとを含むことを特徴とする通信方法。
【請求項１１】
ネットワークを介してデータユニットを送受信する通信装置を含む通信システムであって、
前記通信装置は、
受信側の通信装置に対して前記データユニットを送信するデータユニット送信手段と、
前記受信側の通信装置によって送信された確認応答を受信する受信手段と、
前記受信手段によって受信された確認応答が重複応答であるか否かを判定する重複応答判定手段と、
タイマを用いて前記データユニットの損失を判定する第１のロス判定手段と、
前記第１のロス判定手段における判定結果が前記データユニット又は前記確認応答の遅延に起因するか否かを判定するスプリアスタイムアウト判定手段と、
ウィンドウを用いてデータユニット送信数を制御するウィンドウ制御手段とを有し、
前記ウィンドウ制御手段は、
前記スプリアスタイムアウト判定手段によって、前記第１のロス判定手段における判定結果が前記データユニット又は前記確認応答の遅延に起因すると判定された場合、前記受信手段によって受信された確認応答が、前記第１のロス判定手段の判定結果に基づいて再送が行われた時点より前に送信された一部のデータユニットの受信を確認するものであって、前記重複応答判定手段によって該確認応答が重複応答であると判定されたとき、前記ウィンドウサイズを前記データユニット３個以上越える所定個数まで、未送信のデータユニットの送信を許可することを特徴とする通信システム。
【請求項１２】
ネットワークを介してデータユニットを送信する通信装置であって、
受信側の通信装置に対して前記データユニットを送信するデータユニット送信手段と、
前記受信側の通信装置によって送信された確認応答を受信する受信手段と、
前記受信手段によって受信された確認応答が重複応答であるか否かを判定する重複応答判定手段と、
タイマを用いて前記データユニットの損失を判定する第１のロス判定手段と、
前記第１のロス判定手段における判定結果が前記データユニット又は前記確認応答の遅延に起因するか否かを判定するスプリアスタイムアウト判定手段と、
ウィンドウを用いてデータユニット送信数を制御するウィンドウ制御手段とを有し、
前記ウィンドウ制御手段は、
前記スプリアスタイムアウト判定手段によって、前記第１のロス判定手段における判定結果が前記データユニット又は前記確認応答の遅延に起因すると判定された場合、前記受信手段によって受信された確認応答が、前記第１のロス判定手段の判定結果に基づいて再送が行われた時点より前に送信された一部のデータユニットの受信を確認するものであって、前記重複応答判定手段によって該確認応答が重複応答であると判定されたとき、前記ウィンドウサイズを前記データユニット３個以上越える所定個数まで、未送信のデータユニットの送信を許可することを特徴とする通信装置。
【請求項１３】
ネットワークを介してデータユニットを送受信する通信装置を含む通信システムにおける通信方法であって、
前記通信装置が、
受信側の通信装置に対して前記データユニットを送信するデータユニット送信ステップと、
前記受信側の通信装置によって送信された確認応答を受信する受信ステップと、
前記受信ステップにおいて受信された確認応答が重複応答であるか否かを判定する重複応答判定ステップと、
タイマを用いて前記データユニットの損失を判定する第１のロス判定ステップと、
前記第１のロス判定ステップにおける判定結果が前記データユニット又は前記確認応答の遅延に起因するか否かを判定するスプリアスタイムアウト判定ステップと、
ウィンドウを用いてデータユニット送信数を制御するウィンドウ制御ステップとを含み、
前記ウィンドウ制御ステップでは、
前記スプリアスタイムアウト判定ステップにおいて、前記第１のロス判定ステップにおける判定結果が前記データユニット又は前記確認応答の遅延に起因すると判定された場合、前記応答受信ステップにおいて受信された確認応答が、前記第１のロス判定ステップの判定結果に基づいて再送が行われた時点より前に送信された一部のデータユニットの受信を確認するものであって、前記重複応答判定ステップにおいて該確認応答が重複応答であると判定されたとき、前記ウィンドウサイズを前記データユニット３個以上越える所定個数まで、未送信のデータユニットの送信が許可されることを特徴とする通信方法。
【請求項１４】
ネットワークを介してデータユニットを送受信する通信装置を含む通信システムであって、
前記通信装置は、
受信側の通信装置に対して前記データユニットを送信するデータユニット送信手段と、
前記受信側の通信装置によって送信された確認応答を受信する受信手段と、
タイマを用いて前記データユニットの損失を判定する第１のロス判定手段と、
前記第１のロス判定手段における判定結果が前記データユニット又は前記確認応答の遅延に起因するか否かを判定するスプリアスタイムアウト判定手段と、
ウィンドウを用いてデータユニット送信数を制御するウィンドウ制御手段とを有し、
前記ウィンドウ制御手段は、
前記スプリアスタイムアウト判定手段によって、前記第１のロス判定手段における判定結果が前記データユニット又は前記確認応答の遅延に起因すると判定された場合、前記第１のロス判定手段の判定結果に基づいて再送が行われた時点より前に送信されたすべてのデータユニットが受信確認されるまでの間、前記受信手段によって確認応答が受信された後も、前記ウィンドウサイズを保持することを特徴とする通信システム。
【請求項１５】
ネットワークを介してデータユニットを送信する通信装置であって、
受信側の通信装置に対して前記データユニットを送信するデータユニット送信手段と、
前記受信側の通信装置によって送信された確認応答を受信する受信手段と、
タイマを用いて前記データユニットの損失を判定する第１のロス判定手段と、
前記第１のロス判定手段における判定結果が前記データユニット又は前記確認応答の遅延に起因するか否かを判定するスプリアスタイムアウト判定手段と、
ウィンドウを用いてデータユニット送信数を制御するウィンドウ制御手段とを有し、
前記ウィンドウ制御手段は、
前記スプリアスタイムアウト判定手段によって、前記第１のロス判定手段における判定結果が前記データユニット又は前記確認応答の遅延に起因すると判定された場合、前記第１のロス判定手段の判定結果に基づいて再送が行われた時点より前に送信されたすべてのデータユニットが受信確認されるまでの間、前記受信手段によって確認応答が受信された後も、前記ウィンドウサイズを保持することを特徴とする通信装置。
【請求項１６】
ネットワークを介してデータユニットを送受信する通信装置を含む通信システムにおける通信方法であって、
前記通信装置が、
受信側の通信装置に対して前記データユニットを送信するデータユニット送信ステップと、
前記受信側の通信装置によって送信された確認応答を受信する受信ステップと、
タイマを用いて前記データユニットの損失を判定する第１のロス判定ステップと、
前記第１のロス判定ステップにおける判定結果が前記データユニット又は前記確認応答の遅延に起因するか否かを判定するスプリアスタイムアウト判定ステップと、
ウィンドウを用いてデータユニット送信数を制御するウィンドウ制御ステップとを含み、
前記ウィンドウ制御ステップでは、
前記スプリアスタイムアウト判定ステップにおいて、前記第１のロス判定ステップにおける判定結果が前記データユニット又は前記確認応答の遅延に起因すると判定された場合、前記第１のロス判定ステップの判定結果に基づいて再送が行われた時点より前に送信されたすべてのデータユニットが受信確認されるまでの間、前記受信ステップにおいて確認応答が受信された後も、前記ウィンドウサイズが保持されることを特徴とする通信方法。
【請求項１７】
ネットワークを介してデータユニットを送受信する通信装置を含む通信システムであって、
前記通信装置は、
受信側の通信装置に対して前記データユニットを送信するデータユニット送信手段と、
前記受信側の通信装置によって送信された確認応答を受信する受信手段と、
タイマを用いて前記データユニットの損失を判定する第１のロス判定手段と、
前記第１のロス判定手段における判定結果が前記データユニット又は前記確認応答の遅延に起因するか否かを判定するスプリアスタイムアウト判定手段と、
前記受信側の通信装置からの確認応答に基づいてデータユニットの損失を判定する第２のロス判定手段と、
前記第２のロス判定手段によってデータユニットが損失したと判定された場合、該データユニットの損失を回復するロス回復手段と、
ウィンドウを用いてデータユニット送信数を制御するウィンドウ制御手段とを有し、
前記ウィンドウ制御手段は、
前記スプリアスタイムアウト判定手段によって、前記第１のロス判定手段における判定結果が前記データユニット又は前記確認応答の遅延に起因すると判定された場合、前記第２のロス判定手段によって損失したものと判定されたデータユニットが、前記第１のロス判定手段の判定結果に基づいて再送が行われた時点より前に送信されたデータユニットであれば、前記第２のロス判定手段が損失の判定に用いた確認応答の数に応じて、前記ウィンドウサイズを増加させることを特徴とする通信システム。
【請求項１８】
前記ウィンドウ制御手段は、
前記スプリアスタイムアウト判定手段によって、前記第１のロス判定手段における判定結果が前記データユニット又は前記確認応答の遅延に起因すると判定された場合、前記第２のロス判定手段によって損失したものと判定されたデータユニットが、前記第１のロス判定手段の判定結果に基づいて再送が行われた時点より前に送信されたデータユニットであれば、前記第２のロス判定手段が損失の判定に用いた重複応答の数から１を引いた個数のデータユニットに対応するサイズだけ、前記ウィンドウサイズを増加させることを特徴とする請求の範囲第１７項に記載の通信システム。
【請求項１９】
ネットワークを介してデータユニットを送信する通信装置であって、
受信側の通信装置に対して前記データユニットを送信するデータユニット送信手段と、
前記受信側の通信装置によって送信された確認応答を受信する受信手段と、
タイマを用いて前記データユニットの損失を判定する第１のロス判定手段と、
前記第１のロス判定手段における判定結果が前記データユニット又は前記確認応答の遅延に起因するか否かを判定するスプリアスタイムアウト判定手段と、
前記受信側の通信装置からの確認応答に基づいてデータユニットの損失を判定する第２のロス判定手段と、
前記第２のロス判定手段によってデータユニットが損失したと判定された場合、該データユニットの損失を回復するロス回復手段と、
ウィンドウを用いてデータユニット送信数を制御するウィンドウ制御手段とを有し、
前記ウィンドウ制御手段は、
前記スプリアスタイムアウト判定手段によって、前記第１のロス判定手段における判定結果が前記データユニット又は前記確認応答の遅延に起因すると判定された場合、前記第２のロス判定手段によって損失したものと判定されたデータユニットが、前記第１のロス判定手段の判定結果に基づいて再送が行われた時点より前に送信されたデータユニットであれば、前記第２のロス判定手段が損失の判定に用いた確認応答の数に応じて、前記ウィンドウサイズを増加させることを特徴とする通信装置。
【請求項２０】
ネットワークを介してデータユニットを送受信する通信装置を含む通信システムにおける通信方法であって、
前記通信装置が、
受信側の通信装置に対して前記データユニットを送信するデータユニット送信ステップと、
前記受信側の通信装置によって送信された確認応答を受信する受信ステップと、
タイマを用いて前記データユニットの損失を判定する第１のロス判定ステップと、
前記第１のロス判定ステップにおける判定結果が前記データユニット又は前記確認応答の遅延に起因するか否かを判定するスプリアスタイムアウト判定ステップと、
前記受信側の通信装置からの確認応答に基づいてデータユニットの損失を判定する第２のロス判定ステップと、
前記第２のロス判定ステップにおいてデータユニットが損失したと判定された場合、該データユニットの損失を回復するロス回復ステップと、
ウィンドウを用いてデータユニット送信数を制御するウィンドウ制御ステップとを含み、
前記ウィンドウ制御ステップでは、
前記スプリアスタイムアウト判定ステップにおいて、前記第１のロス判定ステップにおける判定結果が前記データユニット又は前記確認応答の遅延に起因すると判定された場合、前記第２のロス判定ステップにおいて損失したものと判定されたデータユニットが、前記第１のロス判定ステップの判定結果に基づいて再送が行われた時点より前に送信されたデータユニットであれば、前記第２のロス判定ステップが損失の判定に用いた確認応答の数に応じて、前記ウィンドウサイズが増加されることを特徴とする通信方法。
【請求項２１】
ネットワークを介してデータユニットを送受信する通信装置を含む通信システムであって、
前記通信装置は、
受信側の通信装置に対して前記データユニットを送信するデータユニット送信手段と、
前記受信側の通信装置によって送信された確認応答を受信する受信手段と、
タイマを用いて前記データユニットの損失を判定する第１のロス判定手段と、
前記第１のロス判定手段における判定結果が前記データユニット又は前記確認応答の遅延に起因するか否かを判定するスプリアスタイムアウト判定手段と、
前記受信側の通信装置からの確認応答に基づいてデータユニットの損失を判定する第２のロス判定手段と、
前記第２のロス判定手段によってデータユニットが損失したと判定された場合、該データユニットの損失を回復するロス回復手段と、
ウィンドウを用いてデータユニット送信数を制御するウィンドウ制御手段とを有し、
前記ロス回復手段は、
前記受信手段によって受信された確認応答の値に応じてロス回復の完了を判定する閾値を保持すると共に、前記スプリアスタイムアウト判定手段によって、前記第１のロス判定手段における判定結果が前記データユニット又は前記確認応答の遅延に起因すると判定された場合、前記第２のロス判定手段によって、前記第１のロス判定手段の判定結果に基づいて再送が行われた時点より前に送信されたデータユニットが損失したものと判定されたとき、前記第１のロス判定手段の判定結果に基づいて再送が行われた時点で送信済みのデータユニットの最大シーケンス番号に応じた値をロス回復の完了を判定する前記閾値に設定することを特徴とする通信システム。
【請求項２２】
ネットワークを介してデータユニットを送信する通信装置であって、
受信側の通信装置に対して前記データユニットを送信するデータユニット送信手段と、
前記受信側の通信装置によって送信された確認応答を受信する受信手段と、
タイマを用いて前記データユニットの損失を判定する第１のロス判定手段と、
前記第１のロス判定手段における判定結果が前記データユニット又は前記確認応答の遅延に起因するか否かを判定するスプリアスタイムアウト判定手段と、
前記受信側の通信装置からの確認応答に基づいてデータユニットの損失を判定する第２のロス判定手段と、
前記第２のロス判定手段によってデータユニットが損失したと判定された場合、該データユニットの損失を回復するロス回復手段と、
ウィンドウを用いてデータユニット送信数を制御するウィンドウ制御手段とを有し、
前記ロス回復手段は、
前記受信手段によって受信された確認応答の値に応じてロス回復の完了を判定する閾値を保持すると共に、前記スプリアスタイムアウト判定手段によって、前記第１のロス判定手段における判定結果が前記データユニット又は前記確認応答の遅延に起因すると判定された場合、前記第２のロス判定手段によって、前記第１のロス判定手段の判定結果に基づいて再送が行われた時点より前に送信されたデータユニットが損失したものと判定されたとき、前記第１のロス判定手段の判定結果に基づいて再送が行われた時点で送信済みのデータユニットの最大シーケンス番号に応じた値をロス回復の完了を判定する前記閾値に設定することを特徴とする通信装置。
【請求項２３】
ネットワークを介してデータユニットを送受信する通信装置を含む通信システムにおける通信方法であって、
前記通信装置が、
受信側の通信装置に対して前記データユニットを送信するデータユニット送信ステップと、
前記受信側の通信装置によって送信された確認応答を受信する受信ステップと、
タイマを用いて前記データユニットの損失を判定する第１のロス判定ステップと、
前記第１のロス判定ステップにおける判定結果が前記データユニット又は前記確認応答の遅延に起因するか否かを判定するスプリアスタイムアウト判定ステップと、
前記受信側の通信装置からの確認応答に基づいてデータユニットの損失を判定する第２のロス判定ステップと、
前記第２のロス判定ステップにおいてデータユニットが損失したと判定された場合、該データユニットの損失を回復するロス回復ステップと、
ウィンドウを用いてデータユニット送信数を制御するウィンドウ制御ステップとを含み、
前記ロス回復ステップでは、
前記受信ステップにおいて受信された確認応答の値に応じてロス回復の完了を判定する閾値が保持されると共に、前記スプリアスタイムアウト判定ステップにおいて、前記第１のロス判定ステップにおける判定結果が前記データユニット又は前記確認応答の遅延に起因すると判定された場合、前記第２のロス判定ステップにおいて、前記第１のロス判定ステップの判定結果に基づいて再送が行われた時点より前に送信されたデータユニットが損失したものと判定されたとき、前記第１のロス判定ステップの判定結果に基づいて再送が行われた時点で送信済みのデータユニットの最大シーケンス番号に応じた値がロス回復の完了を判定する前記閾値に設定されることを特徴とする通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＴＣＰ(Transmission Control Protocol)の輻輳制御を用いた通信であって、ワイヤレスＴＣＰプロトコルを用いた通信等に適用される通信システム、通信装置、通信方法に関する。
【背景技術】
【０００２】
従来の通信システムにおいて、ＴＣＰは、任意のＴＣＰ／ＩＰ(Internet Protocol)データ又は確認応答のＡＣＫ(ACKnowledgement)パケット（又はその両方）を示すセグメントの確実な送達を保障するため、セグメント送信時に再送タイマを設定し、この設定時間内にＡＣＫが返信されなければ、セグメントが損失したものと見なして再送する機構を具備している。【０００３】
しかし、移動通信のように遅延変動の大きな通信環境においては、突発的な遅延の増加によってＡＣＫの到着が遅延し、セグメントが損失していないにもかかわらず、再送タイムアウトが発生する可能性がある。これは、スプリアスタイムアウトとして知られている。
スプリアスタイムアウトは、次の２つの問題点がある。一つ目は、不要な再送が発生することである。二つ目は、再送タイムアウトに伴い、送信側の通信装置で検出された輻輳情報に基づきウィンドウサイズを調節する輻輳制御によって、輻輳ウィンドウが減少され、スループットが低下することである。但し、輻輳ウィンドウは、ＴＣＰの送信可能サイズを制限するＴＣＰステート変数である。【０００４】
これまでに、送信側の通信装置において、スプリアスタイムアウトを検出する検出方式、及びスプリアスタイムアウト検出後に、ＴＣＰの輻輳制御の状態を回復する応答方式の提案がなされている。以下に述べる検出方式と応答方式は、任意の組み合わせで、使用することができる。
非特許文献１では、スプリアスタイムアウト検出方式として、Eifel Detectionアルゴリズムの提案がなされている。Eifel Detectionアルゴリズムは、ＴＣＰのタイムスタンプ・オプションを用いて、スプリアスタイムアウトの検出を行う。送信側の通信装置は、セグメントの送信時刻を記憶し、ＡＣＫによって返信されるタイムスタンプが、オリジナルセグメントの送信時刻と一致する場合、再送タイムアウトをスプリアスタイムアウトと判断する。【０００５】
非特許文献２では、スプリアスタイムアウト検出方式として、Ｆ−ＲＴＯ(Forward RTO・Recovery)アルゴリズムの提案がなされている。Ｆ−ＲＴＯは、再送タイムアウトが発生した直後のＡＣＫの到着パターンに基づいて、スプリアスタイムアウトを検出する。
非特許文献３では、スプリアスタイムアウト応答方式として、Eifel Responseアルコリズムの提案がなされている。Eifel Responseアルコリズムは、スプリアスタイムアウト検出後、ＴＣＰの輻輳制御の状態（スロースタート閾値及び輻輳ウィンドウサイズ）を再送タイムアウト前の状態に回復する。本方式を適用するとこで、スプリアスタイムアウトが発生した場合も、送信速度を落とすことなく通信を継続することができる。【０００６】
非特許文献４では、スプリアスタイムアウト応答方式として、次の２つのアルゴリズムの提案がなされている。一つ目のアルゴリズムは、スプリアスタイムアウト検出時に、スロースタート閾値をフライトサイズの半分に、輻輳ウィンドウを１セグメントに減少させる。ここで、フライトサイズとは、送達確認されていない送信データサイズを意味する。輻輳ウィンドウは、その後、スロースタートによって増加される。本方式は、スプリアスタイムアウトの前後で無線ベアラ速度が変化する場合に優れたスループット特性を示す。【０００７】
二つ目のアルゴリズムは、スプリアスタイムアウト検出時に、スロースタート閾値と輻輳ウィンドウをともに、フライトサイズの半分に減少させる。輻輳ウィンドウは、その後、輻輳回避アルゴリズムに従って増加される。この方式は、無線ベアラが低速な場合に有効である。
次に、ＴＣＰの再送制御について述べる。ＴＣＰは、受信装置から３個の重複ＡＣＫを受け取ると、即座に再送を行うFast Retransmitアルゴリズムを具備している。Fast Retransmitアルゴリズムは、再送タイムアウトを待たずに再送を行うため、再送タイマを用いた再送方法に比べ、高速にロスを回復できる。重複ＡＣＫが３個受信されなかった場合は、再送タイマによるロス回復が実行される。【０００８】
非特許文献５では、Fast Retransmitアルゴリズムの動作を補助するLimited Transmitというアルゴリズムの提案がなされている。Limited Transmitアルゴリズムは、１番目及び２番目の重複ＡＣＫを受信したとき、最大２セグメントまで輻輳ウィンドウを越えて、未送信セグメントを送信する。受信装置は、それらのセグメントを受信すると、重複ＡＣＫを返信する。そのため、Fast Retransmitアルゴリズムによるロス回復が実行される可能性が高まる。
なお、この種の従来技術として特許文献１〜４がある。【０００９】
【特許文献１】特開２００６−２１７２３５号公報
【特許文献２】特開２００６−１７３９６１号公報
【特許文献３】特開２００６−１５７９１８号公報
【特許文献４】特開２００５−５３３４４９号公報
【非特許文献１】Ｒ．Ｌｕｄｗｉｇ  ａｎｄ  Ｍ．Ｍｅｙｅｒ，“Ｔｈｅ  Ｅｉｆｅｌ  Ｄｅｔｅｃｔｉｏｎ  Ａｌｇｏｒｉｔｈｍ  ｆｏｒ  TCP，”ＲＦＣ３５２２，Ａｐｒｉ１２００３．
【非特許文献２】Ｐ．Ｓａｒｏｌａｈｔｉ  ａｎｄ  Ｍ．Ｋｏｊｏ，“Ｆｏｒｗａｒｄ  ＲＴＯ−Ｒｅｃｏｖｅｒｙ（Ｆ−ＲＴＯ）：Ａｎ  Ａｌｇｏｒｉｔｈｍ  ｆｏｒ  Ｄｅｔｅｃｔｉｎｇ  Ｓｐｕｒｉｏｕｓ  Ｒｅｔｒａｎｓｍｉｓｓｉｏｎ  Ｔｉｍｅｏｕｔｓ  ｗｉｔｈ  ＴＣＰ  ａｎｄ  ｔｈｅ  Ｓｔｒｅａｍ  Ｃｏｎｔｒｏｌ  Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｐｒｏｔｏｃｏｌ（ＳＣＴＰ），”ＲＦＣ４１３８，Ａｕｇｕｓｔ２００５．
【非特許文献３】Ｒ．Ｌｕｄｗｉｇ  ａｎｄ  Ａ．Ｇｕｒｔｏｖ，  “Ｔｈｅ  Ｅｉｆｅｌ  Ｒｅｓｐｏｎｓｅ  Ａｌｇｏｒｉｔｈｍ  ｆｏｒ  ＴＣＰ，”ＲＦＣ４０１５，Ｆｅｂｒｕａｒｙ２００５．
【非特許文献４】Ｐ．Ｓａｒｏｌａｈｔｉ，“Ｃｏｎｇｅｓｔｉｏｎ  Ｃｏｎｔｒｏｌ  ｏｎ  Ｓｐｕｒｉｏｕｓ  ＴＣＰ  Ｒｅｔｒａｎｓｍｉｓｓｉｏｎ  Ｔｉｍｅｏｕｔｓ，”ＩＥＥＥ  Ｇｌｏｂｅｃｏｍ‘０３，ｖｏｌ．２，ｐｐ．６８２−６８６，Ｄｅｃｅｍｂｅｒ  ２００３．
【非特許文献５】Ｍ．Ａｌｌｍａｎ，Ｈ．Ｂａｌａｋｒｉｓｈｎａｎ，ａｎｄ  Ｓ．Ｆｌｏｙｄ，“Ｅｎｈａｎｃｉｎｇ  ＴＣＰ’ｓ  Ｌｏｓｓ  Ｒｅｃｏｖｅｒｙ  Ｕｓｉｎｇ  Ｌｉｍｉｔｅｄ  Ｔｒａｎｓｍｉｔ，”ＲＦＣ３０４２，Ｊａｎｕａｒｙ  ２００１．  しかし、上述した従来の通信システムにおいては、スプリアスタイムアウト検出時にスロースタート閾値及び輻輳ウィンドウを減少させる応答アルゴリズムにおいては、スプリアスタイムアウトに続けてセグメントロスが発生したとき、次に述べる２つの問題がある。
【００１０】
第１の問題は、上述のLimited Transmitアルゴリズムに関係する。スプリアスタイムアウト検出時に即座に輻輳ウィンドウを大きく減少させた場合、スプリアスタイムアウトに続けてセグメントロスが発生したとき、Limited Transmitアルゴリズムの動作を阻害する可能性がある。輻輳ウィンドウが大きく減少すると、輻輳ウィンドウサイズに２セグメントを加えた範囲に、未送信セグメントが含まれない状況が生じる。そのような状況では、Limited Transmitアルゴリズムは、一番目と二番目の重複ＡＣＫが受信されたとき、未送信セグメントを送信することができなくなる。このため、効率的なロス回復を実現することができず、スループットが低下する。【００１１】
第２の問題は、スプリアスタイムアウトに続けてセグメントロスが発生したとき、スロースタート閾値が必要以上に減少されることである。ＴＣＰでは、ラウンドトリップ・タイムにスロースタート閾値を減少させる回数を１度に限定している。しかし、スプリアスタイムアウト検出時にスロースタート閾値を減少させる方法においては、スプリアスタイムアウトに続けてセグメントロスが発生すると、スプリアスタイムアウト検出時とセグメントロス検出時に、スロースタート閾値が２回減少される。スロースタート閾値が減少すると、輻輳ウィンドウの増加速度が抑制され、スループットが低下する。【００１２】
本発明は、このような課題に鑑みてなされたものであり、スロースタート閾値及び輻輳ウィンドウを変化させる応答アルゴリズム実行において、スプリアスタイムアウトに続けてセグメントロスが発生した場合に、効率的なロス回復を実現することができ、これによってスループットを向上させることができる通信システム、通信装置、通信方法を提供することを目的としている。
【発明の開示】
【００１３】
上記目的を達成するために、本発明の請求の範囲第１項による通信システムは、一方の送受信装置から１パケットデータ又は複数パケットデータの塊であるデータユニットを、ネットワークを介して他方の送受信装置へ送達する通信システムにおいて、前記送受信装置は、前記受信側の送受信装置へ前記データユニットを送信する送信手段と、前記受信側の送受信装置から送信されたデータユニットの確認応答を受信する受信手段と、前記データユニットの送信後、このデータユニットに対する確認応答が前記受信手段にて予め定められた時間内に受信されない場合に当該データユニットが損失したと判定する第１のロス判定手段と、前記第１のロス判定手段でデータユニット損失と判定された際にデータユニットを再送する再送手段と、前記第１のロス判定手段の判定結果が前記データユニット又は前記確認応答の遅延に起因するか否かを判定し、遅延に起因すると判定された際にスプリアスタイムアウトと判定するスプリアスタイムアウト判定手段と、前記スプリアスタイムアウトと判定された場合、前記データユニットの送信数を制御する輻輳ウィンドウのサイズを減少させる目標値を設定し、前記受信手段によって前記確認応答が受信されたことを契機に、該輻輳ウィンドウのサイズを該目標値まで段階的に減少させる制御を行う制御手段とを備えたことを特徴とする。
【００１４】
この構成によれば、送信側の送受信装置において、スプリアスタイムアウトと判定された場合に、輻輳ウィンドウのサイズを減少させる目標値を設定し、この後、確認応答が受信されたことを契機に、その輻輳ウィンドウのサイズを目標値まで段階的に減少させるようにしたので、未送信データユニット（セグメント）を確実に送信することができ、これによって、効率的なロス回復を実現することができ、スループットを向上させることができる。従来技術では、スプリアスタイムアウト検出時に即座に輻輳ウィンドウを大きく減少させていたので、輻輳ウィンドウに未送信データユニットが含まれない状況が生じ、一番目と二番目の重複確認応答ＡＣＫが受信されたとき、未送信データユニットを送信できなくなっていた。
【００１５】
また、本発明の請求の範囲第２項による通信システムは、請求の範囲第１項において、前記制御手段は、前記スプリアスタイムアウトと判定された際に、該スプリアスタイムアウトの判定時において送信済の全データユニットの確認応答が受信された時点で、前記輻輳ウィンドウのサイズが前記目標値より大きければ、該輻輳ウィンドウのサイズを該目標値及びフライトサイズの何れか一方に設定することを特徴とする。
この構成によれば、送信側の送受信装置において、スプリアスタイムアウトの判定時において送信済の全データユニットが適正に送達されたことを確認した時点で、輻輳ウィンドウを一挙に目標値又はフライトサイズに設定するので、データユニットの送信数を目標値に確実に制御でき、バースト的なデータユニットの送信を回避することができる。
【００１６】
また、本発明の請求の範囲第３項による通信システムは、一方の送受信装置から１パケットデータ又は複数パケットデータの塊であるデータユニットを、ネットワークを介して他方の送受信装置へ送達する通信システムであって、前記送受信装置は、前記受信側の送受信装置へ前記データユニットを送信する送信手段と、前記受信側の送受信装置から送信されたデータユニットの確認応答を受信する受信手段と、前記データユニットの送信後、このデータユニットに対する確認応答が前記受信手段にて予め定められた時間内に受信されない場合に当該データユニットが損失したと判定する第１のロス判定手段と、前記第１のロス判定手段でデータユニット損失と判定された際にデータユニットを再送する再送手段と、前記第１のロス判定手段の判定結果が前記データユニット又は前記確認応答の遅延に起因するか否かを判定し、遅延に起因すると判定された際にスプリアスタイムアウトと判定するスプリアスタイムアウト判定手段と、前記受信手段で受信された確認応答に基づいて、前記データユニットの損失を検出する第２のロス判定手段と、前記スプリアスタイムアウトと判定された場合、該スプリアスタイムアウトの判定時において送信済の全データユニットの確認応答が受信されるまでは、前記第２のロス判定手段にてデータユニットの損失が検出されても、スロースタート閾値を減少させない制御を行う制御手段とを備えたことを特徴とする。
【００１７】
この構成によれば、送信側の送受信装置において、スプリアスタイムアウトの判定時において送信済の全データユニットが適正に送達されたことが確認されるまでは、データユニットの損失が検出されても、スロースタート閾値を減少させないようにしたので、従来のように、データユニット損失時にスロースタート閾値が必要以上に減少されることによって、輻輳ウィンドウの増加速度が抑制され、スループットが低下するといった不具合を無くすことができる。
【００１８】
また、本発明の請求の範囲第４項による通信装置は、１パケットデータ又は複数パケットデータの塊であるデータユニットを、ネットワークを介して受信側通信装置に送達する通信装置において、前記受信側通信装置に前記データユニットを送信する送信手段と、前記受信側通信装置から送信されたデータユニットの確認応答を受信する受信手段と、前記データユニットの送信後、このデータユニットに対する確認応答が前記受信手段にて予め定められた時間内に受信されない場合に当該データユニットが損失したと判定する第１のロス判定手段と、前記第１のロス判定手段でデータユニット損失と判定された際にデータユニットを再送する再送手段と、前記第１のロス判定手段の判定結果が前記データユニット及び前記確認応答の何れか一方の遅延に起因するか否かを判定し、前記データユニットの遅延に起因すると判定された際にスプリアスタイムアウトと判定するスプリアスタイムアウト判定手段と、前記スプリアスタイムアウトと判定された場合、前記データユニットの送信数を制御する輻輳ウィンドウのサイズを減少させる目標値を設定し、前記受信手段によって前記確認応答が受信されたことを契機に、該輻輳ウィンドウのサイズを該目標値まで段階的に減少させる制御を行う制御手段とを備えたことを特徴とする。
【００１９】
この構成によれば、スプリアスタイムアウトと判定された場合に、輻輳ウィンドウのサイズを減少させる目標値を設定し、この後、確認応答が受信されたことを契機に、その輻輳ウィンドウのサイズを目標値まで段階的に減少させるようにしたので、未送信データユニット（セグメント）を確実に送信することができ、これによって、効率的なロス回復を実現することができ、スループットを向上させることができる。
【００２０】
また、本発明の請求の範囲第５項による通信装置は、請求の範囲第４項において、前記制御手段は、前記スプリアスタイムアウトと判定された際に、前記再送手段でのデータユニットの再送前に送信された全データユニットの確認応答が受信された時点で、前記輻輳ウィンドウのサイズが前記目標値より大きければ、該輻輳ウィンドウのサイズを該目標値及びフライトサイズの何れか一方に設定することを特徴とする。
【００２１】
この構成によれば、スプリアスタイムアウトの判定時において送信済の全データユニットが適正に送達されたことを確認した時点で、輻輳ウィンドウを一挙に目標値又はフライトサイズに設定するので、未送信データユニットを効率よく送達することができる。
また、本発明の請求の範囲第６項による通信装置は、請求の範囲第４項または第５項において、前記目標値は、前記スプリアスタイムアウトと判定された時点のフライトサイズの１／ｎであることを特徴とする。
【００２２】
また、本発明の請求の範囲第７項による通信装置は、請求の範囲第４項または第５項において、前記目標値は、前記データユニットの１つ分であることを特徴とする。
これら請求の範囲第６項及び第７項の構成によれば、輻輳ウィンドウのサイズを減少させる際に、従来のように輻輳ウィンドウに未送信データユニットが含まれない状況が生じないように、適正に輻輳ウィンドウを減少させることができる。
【００２３】
また、本発明の請求の範囲第８項による通信装置は、１パケットデータ又は複数パケットデータの塊であるデータユニットを、ネットワークを介して受信側通信装置に送達する通信装置であって、前記受信側通信装置に前記データユニットを送信する送信手段と、前記受信側通信装置から送信されたデータユニットの確認応答を受信する受信手段と、前記データユニットの送信後、このデータユニットに対する確認応答が前記受信手段にて予め定められた時間内に受信されない場合に当該データユニットが損失したと判定する第１のロス判定手段と、前記第１のロス判定手段でデータユニット損失と判定された際にデータユニットを再送する再送手段と、前記第１のロス判定手段の判定結果が前記データユニット及び前記確認応答の何れか一方の遅延に起因するか否かを判定し、前記データユニットの遅延に起因すると判定された際にスプリアスタイムアウトと判定するスプリアスタイムアウト判定手段と、前記受信手段で受信された確認応答に基づいて、前記データユニットの損失を検出する第２のロス判定手段と、前記スプリアスタイムアウトと判定された場合、該スプリアスタイムアウトの判定時において送信済の全データユニットの確認応答が受信されるまでは、前記第２のロス判定手段にてデータユニットの損失が検出されても、スロースタート閾値を減少させない制御を行う制御手段とを備えたことを特徴とする。
【００２４】
この構成によれば、スプリアスタイムアウトの判定時において送信済の全データユニットが適正に送達されたことが確認されるまでは、データユニットの損失が検出されても、スロースタート閾値を減少させないようにしたので、従来のように、データユニット損失時にスロースタート閾値が必要以上に減少されることによって、輻輳ウィンドウの増加速度が抑制され、スループットが低下するといった不具合を無くすことができる。
【００２５】
また、本発明の請求の範囲第９項による通信方法は、送信側の通信装置から１パケットデータ又は複数パケットデータの塊であるデータユニットを、ネットワークを介して受信側の通信装置へ送達する通信方法において、前記送信側の通信装置は、前記データユニットの送信後、このデータユニットに対する前記受信側の通信装置からの確認応答が予め定められた時間内に受信されない場合に当該データユニットが損失したと判定する第１のステップと、前記第１のステップでデータユニット損失と判定された際にデータユニットを再送する第２のステップと、前記第１のステップでの判定結果が前記データユニット及び前記確認応答の何れか一方の遅延に起因するか否かを判定し、前記データユニットの遅延に起因すると判定された際にスプリアスタイムアウトと判定する第３のステップと、前記第３のステップでスプリアスタイムアウトと判定された場合、前記データユニットの送信数を制御する輻輳ウィンドウのサイズを減少させる目標値を設定し、前記確認応答が受信されたことを契機に、該輻輳ウィンドウのサイズを該目標値まで段階的に減少させる第４のステップとを更に含むことを特徴とする。
【００２６】
この方法によれば、送信側の通信装置において、スプリアスタイムアウトと判定された場合に、輻輳ウィンドウのサイズを減少させる目標値を設定し、この後、確認応答が受信されたことを契機に、その輻輳ウィンドウのサイズを目標値まで段階的に減少させるようにしたので、未送信データユニット（セグメント）を確実に送信することができ、これによって、効率的なロス回復を実現することができ、スループットを向上させることができる。
【００２７】
また、本発明の請求の範囲第１０項による通信方法は、送信側の通信装置から１パケットデータ又は複数パケットデータの塊であるデータユニットを、ネットワークを介して受信側の通信装置へ送達する通信方法であって、前記送信側の通信装置は、前記データユニットの送信後、このデータユニットに対する前記受信側の通信装置からの確認応答が予め定められた時間内に受信されない場合に当該データユニットが損失したと判定する第１のステップと、前記第１のステップでデータユニット損失と判定された際にデータユニットを再送する第２のステップと、前記第１のステップでの判定結果が前記データユニット及び前記確認応答の何れか一方の遅延に起因するか否かを判定し、前記データユニットの遅延に起因すると判定された際にスプリアスタイムアウトと判定する第３のステップと、前記送信側の通信装置で受信された前記確認応答に基づいて、前記データユニットの損失を検出する第４のステップと、前記スプリアスタイムアウトと判定された場合、該スプリアスタイムアウトの判定時において送信済の全データユニットの確認応答が受信されるまでは、前記第４のステップにてデータユニットの損失が検出されても、スロースタート閾値を減少させないようにする第５のステップとを含むことを特徴とする。
【００２８】
この方法によれば、送信側の通信装置において、スプリアスタイムアウトの判定時において送信済の全データユニットが適正に送達されたことが確認されるまでは、データユニットの損失が検出されても、スロースタート閾値を減少させないようにしたので、従来のように、データユニット損失時にスロースタート閾値が必要以上に減少されることによって、輻輳ウィンドウの増加速度が抑制され、スループットが低下するといった不具合を無くすことができる。
【００２９】
また、本発明の請求の範囲第１１項による通信システムは、ネットワークを介してデータユニットを送受信する通信装置を含む通信システムであって、前記通信装置は、受信側の通信装置に対して前記データユニットを送信するデータユニット送信手段と、前記受信側の通信装置によって送信された確認応答を受信する受信手段と、前記受信手段によって受信された確認応答が重複応答であるか否かを判定する重複応答判定手段と、タイマを用いて前記データユニットの損失を判定する第１のロス判定手段と、前記第１のロス判定手段における判定結果が前記データユニット又は前記確認応答の遅延に起因するか否かを判定するスプリアスタイムアウト判定手段と、ウィンドウを用いてデータユニット送信数を制御するウィンドウ制御手段とを有し、前記ウィンドウ制御手段は、前記スプリアスタイムアウト判定手段によって、前記第１のロス判定手段における判定結果が前記データユニット又は前記確認応答の遅延に起因すると判定された場合、前記受信手段によって受信された確認応答が、前記第１のロス判定手段の判定結果に基づいて再送が行われた時点より前に送信された一部のデータユニットの受信を確認するものであって、前記重複応答判定手段によって該確認応答が重複応答であると判定されたとき、前記ウィンドウサイズを前記データユニット３個以上越える所定個数まで、未送信のデータユニットの送信を許可することを特徴とする。
【００３０】
また、本発明の請求の範囲第１２項による通信装置は、ネットワークを介してデータユニットを送信する通信装置であって、受信側の通信装置に対して前記データユニットを送信するデータユニット送信手段と、前記受信側の通信装置によって送信された確認応答を受信する受信手段と、前記受信手段によって受信された確認応答が重複応答であるか否かを判定する重複応答判定手段と、タイマを用いて前記データユニットの損失を判定する第１のロス判定手段と、前記第１のロス判定手段における判定結果が前記データユニット又は前記確認応答の遅延に起因するか否かを判定するスプリアスタイムアウト判定手段と、ウィンドウを用いてデータユニット送信数を制御するウィンドウ制御手段とを有し、前記ウィンドウ制御手段は、前記スプリアスタイムアウト判定手段によって、前記第１のロス判定手段における判定結果が前記データユニット又は前記確認応答の遅延に起因すると判定された場合、前記受信手段によって受信された確認応答が、前記第１のロス判定手段の判定結果に基づいて再送が行われた時点より前に送信された一部のデータユニットの受信を確認するものであって、前記重複応答判定手段によって該確認応答が重複応答であると判定されたとき、前記ウィンドウサイズを前記データユニット３個以上越える所定個数まで、未送信のデータユニットの送信を許可することを特徴とする。
【００３１】
また、本発明の請求の範囲第１３項による通信方法は、ネットワークを介してデータユニットを送受信する通信装置を含む通信システムにおける通信方法であって、前記通信装置が、受信側の通信装置に対して前記データユニットを送信するデータユニット送信ステップと、前記受信側の通信装置によって送信された確認応答を受信する受信ステップと、前記受信ステップにおいて受信された確認応答が重複応答であるか否かを判定する重複応答判定ステップと、タイマを用いて前記データユニットの損失を判定する第１のロス判定ステップと、前記第１のロス判定ステップにおける判定結果が前記データユニット又は前記確認応答の遅延に起因するか否かを判定するスプリアスタイムアウト判定ステップと、ウィンドウを用いてデータユニット送信数を制御するウィンドウ制御ステップとを含み、前記ウィンドウ制御ステップでは、前記スプリアスタイムアウト判定ステップにおいて、前記第１のロス判定ステップにおける判定結果が前記データユニット又は前記確認応答の遅延に起因すると判定された場合、前記応答受信ステップにおいて受信された確認応答が、前記第１のロス判定ステップの判定結果に基づいて再送が行われた時点より前に送信された一部のデータユニットの受信を確認するものであって、前記重複応答判定ステップにおいて該確認応答が重複応答であると判定されたとき、前記ウィンドウサイズを前記データユニット３個以上越える所定個数まで、未送信のデータユニットの送信が許可されることを特徴とする。
【００３２】
請求の範囲第１１項〜第１３項記載の発明によれば、スプリアスタイムアウト検出後、タイムアウト再送前に送信されたデータユニットに対する１番目および２番目の重複ＡＣＫを受信したとき、ウィンドウサイズを前記データユニット３個以上越える所定個数まで、データユニットの送信を可能とするため、ウィンドウサイズが受信確認を終えていないデータユニットの送信数より２個以上小さい場合でも，Limited Transmitを利用できるようになる。これにより、Limited Transmitによるスループット改善効果を得ることができる。
【００３３】
また、本発明の請求の範囲第１４項による通信システムは、ネットワークを介してデータユニットを送受信する通信装置を含む通信システムであって、前記通信装置は、受信側の通信装置に対して前記データユニットを送信するデータユニット送信手段と、前記受信側の通信装置によって送信された確認応答を受信する受信手段と、タイマを用いて前記データユニットの損失を判定する第１のロス判定手段と、前記第１のロス判定手段における判定結果が前記データユニット又は前記確認応答の遅延に起因するか否かを判定するスプリアスタイムアウト判定手段と、ウィンドウを用いてデータユニット送信数を制御するウィンドウ制御手段とを有し、前記ウィンドウ制御手段は、前記スプリアスタイムアウト判定手段によって、前記第１のロス判定手段における判定結果が前記データユニット又は前記確認応答の遅延に起因すると判定された場合、前記第１のロス判定手段の判定結果に基づいて再送が行われた時点より前に送信されたすべてのデータユニットが受信確認されるまでの間、前記受信手段によって確認応答が受信された後も、前記ウィンドウサイズを保持することを特徴とする。
【００３４】
また、本発明の請求の範囲第１５項による通信装置は、ネットワークを介してデータユニットを送信する通信装置であって、受信側の通信装置に対して前記データユニットを送信するデータユニット送信手段と、前記受信側の通信装置によって送信された確認応答を受信する受信手段と、タイマを用いて前記データユニットの損失を判定する第１のロス判定手段と、前記第１のロス判定手段における判定結果が前記データユニット又は前記確認応答の遅延に起因するか否かを判定するスプリアスタイムアウト判定手段と、ウィンドウを用いてデータユニット送信数を制御するウィンドウ制御手段とを有し、前記ウィンドウ制御手段は、前記スプリアスタイムアウト判定手段によって、前記第１のロス判定手段における判定結果が前記データユニット又は前記確認応答の遅延に起因すると判定された場合、前記第１のロス判定手段の判定結果に基づいて再送が行われた時点より前に送信されたすべてのデータユニットが受信確認されるまでの間、前記受信手段によって確認応答が受信された後も、前記ウィンドウサイズを保持することを特徴とする。
【００３５】
また、本発明の請求の範囲第１６項による通信方法は、ネットワークを介してデータユニットを送受信する通信装置を含む通信システムにおける通信方法であって、前記通信装置が、受信側の通信装置に対して前記データユニットを送信するデータユニット送信ステップと、前記受信側の通信装置によって送信された確認応答を受信する受信ステップと、タイマを用いて前記データユニットの損失を判定する第１のロス判定ステップと、前記第１のロス判定ステップにおける判定結果が前記データユニット又は前記確認応答の遅延に起因するか否かを判定するスプリアスタイムアウト判定ステップと、ウィンドウを用いてデータユニット送信数を制御するウィンドウ制御ステップとを含み、前記ウィンドウ制御ステップでは、前記スプリアスタイムアウト判定ステップにおいて、前記第１のロス判定ステップにおける判定結果が前記データユニット又は前記確認応答の遅延に起因すると判定された場合、前記第１のロス判定ステップの判定結果に基づいて再送が行われた時点より前に送信されたすべてのデータユニットが受信確認されるまでの間、前記受信ステップにおいて確認応答が受信された後も、前記ウィンドウサイズが保持されることを特徴とする。
【００３６】
請求の範囲第１４項〜第１６項記載の発明によれば、スプリアスタイムアウトが検出された場合、タイムアウト再送より前に送信されたすべてのデータユニットが受信確認されるまでの間、確認応答を受信してもウィンドウサイズを増加させないため、ネットワークに流入するデータユニットの個数を、スプリアスタイムアウト検出時に設定した目標値に正確に保持することができる。ネットワークに流入するデータユニットの個数が意図した設定値に確実に制御されるため、ネットワーク負荷の不要な増加を防ぎ，ネットワークの性能を改善することができる。
【００３７】
また、本発明の請求の範囲第１７項による通信システムは、ネットワークを介してデータユニットを送受信する通信装置を含む通信システムであって、前記通信装置は、受信側の通信装置に対して前記データユニットを送信するデータユニット送信手段と、前記受信側の通信装置によって送信された確認応答を受信する受信手段と、タイマを用いて前記データユニットの損失を判定する第１のロス判定手段と、前記第１のロス判定手段における判定結果が前記データユニット又は前記確認応答の遅延に起因するか否かを判定するスプリアスタイムアウト判定手段と、前記受信側の通信装置からの確認応答に基づいてデータユニットの損失を判定する第２のロス判定手段と、前記第２のロス判定手段によってデータユニットが損失したと判定された場合、該データユニットの損失を回復するロス回復手段と、ウィンドウを用いてデータユニット送信数を制御するウィンドウ制御手段とを有し、前記ウィンドウ制御手段は、前記スプリアスタイムアウト判定手段によって、前記第１のロス判定手段における判定結果が前記データユニット又は前記確認応答の遅延に起因すると判定された場合、前記第２のロス判定手段によって損失したものと判定されたデータユニットが、前記第１のロス判定手段の判定結果に基づいて再送が行われた時点より前に送信されたデータユニットであれば、前記第２のロス判定手段が損失の判定に用いた確認応答の数に応じて、前記ウィンドウサイズを増加させることを特徴とする。
【００３８】
また、本発明の請求の範囲第１８項による通信システムは、請求の範囲第１７項において、前記ウィンドウ制御手段は、前記スプリアスタイムアウト判定手段によって、前記第１のロス判定手段における判定結果が前記データユニット又は前記確認応答の遅延に起因すると判定された場合、前記第２のロス判定手段によって損失したものと判定されたデータユニットが、前記第１のロス判定手段の判定結果に基づいて再送が行われた時点より前に送信されたデータユニットであれば、前記第２のロス判定手段が損失の判定に用いた重複応答の数から１を引いた個数のデータユニットに対応するサイズだけ、前記ウィンドウサイズを増加させることを特徴とする。
【００３９】
また、本発明の請求の範囲第１９項による通信装置は、ネットワークを介してデータユニットを送信する通信装置であって、受信側の通信装置に対して前記データユニットを送信するデータユニット送信手段と、前記受信側の通信装置によって送信された確認応答を受信する受信手段と、タイマを用いて前記データユニットの損失を判定する第１のロス判定手段と、前記第１のロス判定手段における判定結果が前記データユニット又は前記確認応答の遅延に起因するか否かを判定するスプリアスタイムアウト判定手段と、前記受信側の通信装置からの確認応答に基づいてデータユニットの損失を判定する第２のロス判定手段と、前記第２のロス判定手段によってデータユニットが損失したと判定された場合、該データユニットの損失を回復するロス回復手段と、ウィンドウを用いてデータユニット送信数を制御するウィンドウ制御手段とを有し、前記ウィンドウ制御手段は、前記スプリアスタイムアウト判定手段によって、前記第１のロス判定手段における判定結果が前記データユニット又は前記確認応答の遅延に起因すると判定された場合、前記第２のロス判定手段によって損失したものと判定されたデータユニットが、前記第１のロス判定手段の判定結果に基づいて再送が行われた時点より前に送信されたデータユニットであれば、前記第２のロス判定手段が損失の判定に用いた確認応答の数に応じて、前記ウィンドウサイズを増加させることを特徴とする。
【００４０】
また、本発明の請求の範囲第２０項による通信方法は、ネットワークを介してデータユニットを送受信する通信装置を含む通信システムにおける通信方法であって、前記通信装置が、受信側の通信装置に対して前記データユニットを送信するデータユニット送信ステップと、前記受信側の通信装置によって送信された確認応答を受信する受信ステップと、タイマを用いて前記データユニットの損失を判定する第１のロス判定ステップと、前記第１のロス判定ステップにおける判定結果が前記データユニット又は前記確認応答の遅延に起因するか否かを判定するスプリアスタイムアウト判定ステップと、前記受信側の通信装置からの確認応答に基づいてデータユニットの損失を判定する第２のロス判定ステップと、前記第２のロス判定ステップにおいてデータユニットが損失したと判定された場合、該データユニットの損失を回復するロス回復ステップと、ウィンドウを用いてデータユニット送信数を制御するウィンドウ制御ステップとを含み、前記ウィンドウ制御ステップでは、前記スプリアスタイムアウト判定ステップにおいて、前記第１のロス判定ステップにおける判定結果が前記データユニット又は前記確認応答の遅延に起因すると判定された場合、前記第２のロス判定ステップにおいて損失したものと判定されたデータユニットが、前記第１のロス判定ステップの判定結果に基づいて再送が行われた時点より前に送信されたデータユニットであれば、前記第２のロス判定ステップが損失の判定に用いた確認応答の数に応じて、前記ウィンドウサイズが増加されることを特徴とする。
【００４１】
請求の範囲第１７項〜第２０項記載の発明によれば、スプリアスタイムアウト検出後、タイムアウト再送前に送信されたデータユニットの損失が検出された場合、ウィンドウサイズをデータユニットの検出に要した確認応答の数に応じて増加させる。
例えば、ＴＣＰの場合，重複ＡＣＫを連続して３個受信すると、受信確認を終えていない最もシーケンス番号の若いデータユニットが損失したものと判定する。このとき、ウィンドウサイズを受信した重複ＡＣＫの数から１を引いたデータユニット２個のサイズだけ増加させることによって、ネットワークからデータユニットが抜けたことを意味する重複ＡＣＫの個数を加味して、ネットワークに流入するデータユニットの個数を制御できる。
【００４２】
ここで、受信した重複ＡＣＫの数から１を引くのは、スプリアスタイムアウトによってネットワークに余分に送信されたデータユニットによって返信される重複ＡＣＫによってウィンドウが必要以上に増加されるのを回避するためである。
これにより、スプリアスタイムアウト検出後、タイムアウト再送前に送信されたデータユニットの損失が検出された場合でも、重複ＡＣＫの個数を加味して受信確認を終えていないデータユニットの個数をウィンドウサイズに確実に制御することができる。ネットワークに流入するデータユニットの個数が確実に制御されるため、ネットワーク負荷の不要な増加を防ぎ、ネットワークの性能が改善でされる。
【００４３】
また、本発明の請求の範囲第２１項による通信システムは、ネットワークを介してデータユニットを送受信する通信装置を含む通信システムであって、前記通信装置は、受信側の通信装置に対して前記データユニットを送信するデータユニット送信手段と、前記受信側の通信装置によって送信された確認応答を受信する受信手段と、タイマを用いて前記データユニットの損失を判定する第１のロス判定手段と、前記第１のロス判定手段における判定結果が前記データユニット又は前記確認応答の遅延に起因するか否かを判定するスプリアスタイムアウト判定手段と、前記受信側の通信装置からの確認応答に基づいてデータユニットの損失を判定する第２のロス判定手段と、前記第２のロス判定手段によってデータユニットが損失したと判定された場合、該データユニットの損失を回復するロス回復手段と、ウィンドウを用いてデータユニット送信数を制御するウィンドウ制御手段とを有し、前記ロス回復手段は、前記受信手段によって受信された確認応答の値に応じてロス回復の完了を判定する閾値を保持すると共に、前記スプリアスタイムアウト判定手段によって、前記第１のロス判定手段における判定結果が前記データユニット又は前記確認応答の遅延に起因すると判定された場合、前記第２のロス判定手段によって、前記第１のロス判定手段の判定結果に基づいて再送が行われた時点より前に送信されたデータユニットが損失したものと判定されたとき、前記第１のロス判定手段の判定結果に基づいて再送が行われた時点で送信済みのデータユニットの最大シーケンス番号に応じた値をロス回復の完了を判定する前記閾値に設定することを特徴とする。
【００４４】
また、本発明の請求の範囲第２２項による通信装置は、ネットワークを介してデータユニットを送信する通信装置であって、受信側の通信装置に対して前記データユニットを送信するデータユニット送信手段と、前記受信側の通信装置によって送信された確認応答を受信する受信手段と、タイマを用いて前記データユニットの損失を判定する第１のロス判定手段と、前記第１のロス判定手段における判定結果が前記データユニット又は前記確認応答の遅延に起因するか否かを判定するスプリアスタイムアウト判定手段と、前記受信側の通信装置からの確認応答に基づいてデータユニットの損失を判定する第２のロス判定手段と、前記第２のロス判定手段によってデータユニットが損失したと判定された場合、該データユニットの損失を回復するロス回復手段と、ウィンドウを用いてデータユニット送信数を制御するウィンドウ制御手段とを有し、前記ロス回復手段は、前記受信手段によって受信された確認応答の値に応じてロス回復の完了を判定する閾値を保持すると共に、前記スプリアスタイムアウト判定手段によって、前記第１のロス判定手段における判定結果が前記データユニット又は前記確認応答の遅延に起因すると判定された場合、前記第２のロス判定手段によって、前記第１のロス判定手段の判定結果に基づいて再送が行われた時点より前に送信されたデータユニットが損失したものと判定されたとき、前記第１のロス判定手段の判定結果に基づいて再送が行われた時点で送信済みのデータユニットの最大シーケンス番号に応じた値をロス回復の完了を判定する前記閾値に設定することを特徴とする。
【００４５】
また、本発明の請求の範囲第２３項による通信方法は、ネットワークを介してデータユニットを送受信する通信装置を含む通信システムにおける通信方法であって、前記通信装置が、受信側の通信装置に対して前記データユニットを送信するデータユニット送信ステップと、前記受信側の通信装置によって送信された確認応答を受信する受信ステップと、タイマを用いて前記データユニットの損失を判定する第１のロス判定ステップと、前記第１のロス判定ステップにおける判定結果が前記データユニット又は前記確認応答の遅延に起因するか否かを判定するスプリアスタイムアウト判定ステップと、前記受信側の通信装置からの確認応答に基づいてデータユニットの損失を判定する第２のロス判定ステップと、前記第２のロス判定ステップにおいてデータユニットが損失したと判定された場合、該データユニットの損失を回復するロス回復ステップと、ウィンドウを用いてデータユニット送信数を制御するウィンドウ制御ステップとを含み、前記ロス回復ステップでは、前記受信ステップにおいて受信された確認応答の値に応じてロス回復の完了を判定する閾値が保持されると共に、前記スプリアスタイムアウト判定ステップにおいて、前記第１のロス判定ステップにおける判定結果が前記データユニット又は前記確認応答の遅延に起因すると判定された場合、前記第２のロス判定ステップにおいて、前記第１のロス判定ステップの判定結果に基づいて再送が行われた時点より前に送信されたデータユニットが損失したものと判定されたとき、前記第１のロス判定ステップの判定結果に基づいて再送が行われた時点で送信済みのデータユニットの最大シーケンス番号に応じた値がロス回復の完了を判定する前記閾値に設定されることを特徴とする。
【００４６】
請求の範囲第２１項〜第２３項記載の発明によれば、ロス回復の完了を判定する閾値に上述のような値を設定することによって、タイムアウト再送前に送信されたデータユニットに対しては、ウィンドウサイズを減少させないロス回復を行い、閾値よりもシーケンス番号の大きいデータユニットに対する確認応答を受信してロス回復を一旦終了すると、以降に検出されたデータユニットの損失に対しては、ウィンドウサイズを減少させるロス回復を行うことができる。これにより、タイムアウト再送後に送信されたデータユニットの損失が検出された場合、ウィンドウを減少し、ネットワーク負荷を緩和するため、ネットワークの性能が改善される。
また、上述の動作を１つの閾値を用いて実現できるため、実装が容易となる。
【図面の簡単な説明】
【００４７】
【図１】本発明の第１の実施の形態に係る通信システムの構成を示すブロック図である。
【図２】本実施の形態の通信システムにおける第１の通信装置の通信処理の流れを示すフロー図である。
【図３】本実施の形態の通信システムにおける通信の一例を示すシーケンス図である。
【図４】従来の通信システムにおける通信の一例を示すシーケンス図である。
【図５】第２の実施の形態に係る通信システムの構成を示すブロック図である。
【図６】第２の実施の形態における第1の通信装置４０の構成を示すブロック図である。
【図７】第１の通信装置４０の通信処理の流れを示すフロー図である。
【図８】通信システム２００における通信の一例を示すシーケンス図である。
【図９】第３の実施の形態に係る通信システムの構成を示すブロック図である。
【図１０】第３の実施の形態における第１の通信装置５０の構成を示すブロック図である。
【図１１】第１の通信装置５０の通信処理の流れを示すフロー図である。
【図１２】通信システム３００における通信の一例を示すシーケンス図である。
【図１３】第４の実施の形態に係る通信システムの構成を示すブロック図である。
【図１４】第４の実施の形態における第１の通信装置６０の構成を示すブロック図である。
【図１５】第１の通信装置６０の通信処理の流れを示すフロー図である。
【図１６】通信システム４００における通信の一例を示すシーケンス図である。
【発明を実施するための最良の形態】
【００４８】
（第１実施形態）
以下、本発明の第１の実施の形態を、図面を参照して説明する。但し、本明細書中の全図において相互に対応する部分には同一符号を付し、重複部分においては後述での説明を適時省略する。
図１は、本発明の第１の実施の形態に係る通信システムの構成を示すブロック図である。
図１に示す通信システム１００は、無線及び有線の何れか或いは双方のネットワーク１を介して第１の通信装置（送信側の通信装置又は送受信装置）１０と第２の通信装置（受信側の通信装置又は送受信装置）３０とが接続されて構成されている。但し、本実施の形態では、１つのネットワーク１を介して、第１の通信装置１０と第２の通信装置３０が接続されているが、複数のネットワークが介在してもよい。また、本発明は、突発的な信号遅延の増加が発生するネットワークにおいて有効である。例えば、ネットワーク１が移動通信ネットワークの場合が該当し、この場合、第１及び第２の通信装置１０，３０の何れか一方、又は両方は、携帯電話機に該当する。【００４９】
本実施の形態の特徴要素である第１の通信装置１０は、データユニット送信部（送信手段）１１と、確認応答受信部（受信手段）１２と、第１のロス判定部（第１のロス判定手段）１３と、第２のロス判定部（第２のロス判定手段）１４と、データユニット再送部（再送手段）１５と、スプリアスタイムアウト判定部（スプリアスタイムアウト判定手段）１６と、ウィンドウ制御部（制御手段）１７とを備えて構成されている。なお、第２の通信装置３０がそれら各部１１〜１７を備えてもよい。【００５０】
データユニット送信部１１は、ネットワーク１を介して１パケット又は複数パケットの塊であるデータユニットを第２の通信装置３０へ送信する。確認応答受信部１２は、第２の通信装置３０よって送信された確認応答を、ネットワーク１を介して受信する。
第１のロス判定部１３は、タイマを用いてデータユニットのロス判定を行う。そのタイマはデータユニット送信時に設定され、当該データユニットに対する確認応答が受信されると停止される。本タイマが切れると、当該データユニットは損失したものと判定される。【００５１】
第２のロス判定部１４は、第２の通信装置３０によって送信された確認応答に基づいて、データユニットの損失を判定する。具体的には、第２のロス判定部１４は、連続受信された重複ＡＣＫが３つとなった場合に、受信確認を終えていない最も小さいシーケンス番号のデータユニットが損失したものと判定する。また、第１のロス判定部１３又は第２のロス判定部１４によってロス判定されたデータユニットは、データユニット再送部１５によって再送される。【００５２】
スプリアスタイムアウト判定部１６は、第１のロス判定部１３によってデータユニットの損失が判定された場合、本判定がデータユニット又は確認応答の遅延に起因するか否かを判定する。具体的には、スプリアスタイムアウト判定部１６は、第１のロス判定部１３によってデータユニットの損失が判定された場合に、その後に受信した確認応答が重複ＡＣＫであるか否かを判定し、重複ＡＣＫでないときには、スプリアスタイムアウトであると判定する。ウィンドウ制御部１７は、スプリアスタイムアウト判定部１６の判定結果が肯定的であった場合に、後述の動作説明にて詳述するようにウィンドウサイズの調節を行う。【００５３】
次に、上述した構成の通信システム１００の動作を、図２及び図３を参照して説明する。図２は、第１の通信装置１０の通信処理の流れを示すフロー図である。図３は、通信システム１００における通信の一例を示すシーケンス図である。
但し、本実施の形態では、送信側の第１の通信装置１０と、受信側の第２の通信装置３０とがトランスポート層のプロトコルにＴＣＰプロトコルを用いて通信する場合について説明する。図３には、第１の通信装置１０と第２の通信装置３０との間でＴＣＰコネクションは既に確立され、第１の通信装置１０の保持する輻輳ウィンドウサイズが８Ｋバイトの状態からのシーケンスを示している。各データユニットＤ１〜Ｄ１２のサイズは、１０００バイトとした。【００５４】
第１の通信装置１０のデータユニット送信部１１が、シーケンス番号１０００（Ｄ１に対応）からシーケンス番号８０００（Ｄ８）までの輻輳ウィンドウによって許容される合計８キロバイトのデータユニットＤ１〜Ｄ８を順次、ネットワーク１を介して第２の通信装置３０へ送信したとする。
更に、その送信されたデータユニットＤ１〜Ｄ８のうち、シーケンス番号６０００（Ｄ６）、７０００（Ｄ７）、８０００（Ｄ８）のデータユニットＤ６〜Ｄ８は、輻輳などの要因によってネットワーク１中で損失したものとする。【００５５】
第２の通信装置３０は、データユニットＤ１及びＤ２を受信すると、それらのデータユニットＤ１及びＤ２に対して確認応答Ａ１を第１の通信装置１０に送信する。同様に、データユニットＤ３及びＤ４を受信すると、確認応答Ａ２を送信する。続けて、データユニットＤ５を受信するが、後続のデータユニットが損失しているため、今回は、データユニットＤ５に対してのみ確認応答Ａ３を送信する。【００５６】
ここで、第２の通信装置３０によって送信された確認応答Ａ１〜Ａ５が、遅延して第１の通信装置１０に到着したとする。
確認応答Ａ１の到着が遅延した場合、ステップＳ１において、第１の通信装置１０の第１のロス判定部１３において、データユニットＤ１に対して設定されたタイマがタイムアウトし、該データユニットＤ１のロス判定が行われる。この場合、ロスと判定されるので、ステップＳ２において、データユニット再送部１５がデータユニットＤ１の再送を実施する。【００５７】
次に、第１の通信装置１０が、データユニットＤ１及びＤ２に対する確認応答Ａ１を確認応答受信部１２で受信すると、ステップＳ３において、スプリアスタイムアウト判定部１６によってスプリアスタイムアウト判定処理に入る。
更に、その確認応答Ａ１の受信時、即座にデータユニット送信部１１によって次のデータユニットＤ９及びＤ１０を送信する。続けて、確認応答Ａ２を受信すると、スプリアスタイムアウト判定部１６で、その確認応答Ａ２が重複ＡＣＫか否かを判定し、この結果、重複ＡＣＫでない場合、言い換えればデータユニットの遅延に起因すると判定された場合、スプリアスタイムアウトと判定する。この場合、ステップＳ４の処理へ進む。なお、データユニットＤ９はネットワークにおいて損失したとする。【００５８】
ステップＳ４において、第１の通信装置１０は、ウィンドウ制御部１７にて、既に送信されたデータユニットのシーケンス番号の最大値（max_seq＝１０９９９）を記録する。
次に、ウィンドウ制御部１７は、ステップＳ５において、スロースタート閾値の値をフライトサイズ（現在通信路に存在するデータユニットのサイズ）の８Ｋバイトの半分（４Ｋバイト）に減少（ssthreshold=FlightSize/2）させる。但し、スロースタート閾値の値をフライトサイズの半分に減少させたが、フライトサイズより小さければ、当該フライトサイズの１／ｎ（ssthreshold=FlightSize/ｎ）でもよい（ただし、ｎは正数）。【００５９】
この後、ウィンドウ制御部１７は、ステップＳ６において、輻輳ウィンドウの目標値（cwnd_target）を、先に更新されたスロースタート閾値の値（４Ｋバイト）に設定する。
次に、ステップＳ７において、第１の通信装置１０は、確認応答受信部１２で確認応答Ａ４を受信すると、ステップＳ８において、ウィンドウ制御部１７で、その受信した確認応答Ａ４の番号ａｃｋが、上記ステップＳ４にて記録された最大シーケンス番号max_seqよりも小さいか否かを判定する。この結果、確認応答Ａ４の番号ａｃｋが小さい場合、ステップＳ９において、第２のロス判定部１４で該確認応答Ａ４が重複ＡＣＫか否かを判定する。この際、データユニットＤ６が損失しているため、確認応答Ａ４は重複ＡＣＫと判定される。【００６０】
これによって、ステップＳ１０において、第２のロス判定部１４でデータユニットのロス判定がなされるが、連続受信した重複ＡＣＫの個数は１であるため、データユニットの損失は無いと判定される。この結果、ステップＳ１１において、第１の通信装置１０は、Limited Transmitアルゴリズムに従って次の順番のデータユニットＤ１１を送信する。なお、Limited Transmitアルゴリズムは従来技術であり、１番目及び２番目の重複ＡＣＫを受信したとき、最大２セグメントまで輻輳ウィンドウを越えて、未送信セグメントを送信する処理を行うものであり、受信装置は、それらのセグメントを受信すると、重複ＡＣＫを返信するようになっている。【００６１】
この後、上記ステップＳ７〜Ｓ１１において同様に、第１の通信装置１０は、次の確認応答Ａ５を受信すると、重複ＡＣＫの判定を行い、この結果が重複ＡＣＫの場合は、データユニットのロス判定を行い、判定がＮｏであれば、次の順番のデータユニットＤ１２を送信する。
更に同様にステップＳ７〜Ｓ１１にて、第１の通信装置１０が、次の確認応答Ａ６を受信し、重複ＡＣＫの判定を行い、この結果が重複ＡＣＫの場合、データユニットのロス判定を行う。この際、連続受信した重複ＡＣＫの個数が、Ａ４〜Ａ６の３個となるため、ステップＳ１０にて、データユニットが損失と判定される。【００６２】
この場合、ステップＳ１２において、ウィンドウ制御部１７は、Fast Retransmit/Fast Recoveryアルゴリズムによるロス回復処理に移る。なお、Fast Retransmit/Fast Recoveryアルゴリズムは、前述したFast Retransmitアルゴリズムの処理を行い、再送タイムアウトを待たずに再送を行うことによって、再送タイマを用いた再送方法に比べ高速にロスを回復する処理を行うものである。【００６３】
また、このステップＳ１２においては、スロースタート閾値の値は減少されず、４Ｋバイトの値のまま保持（ssthresh）される。そして、ステップＳ１３において、通常のＴＣＰの再送制御が行われ、本フロー全体の処理が終了する。
一方、ステップＳ９において、確認応答Ａ４が重複ＡＣＫでないと判定された場合、ステップＳ１４において、ウィンドウ制御部１７は、現在の輻輳ウィンドウサイズcwndが、輻輳ウィンドウの目標値cwnd_targetよりも大きいか否かを判定し、大きいと判定された場合、ステップＳ１５において、輻輳ウィンドウサイズcwndから送達確認されたデータ量を減算する。この場合、ステップＳ７の処理に戻る。また、ステップＳ１４にて、現在の輻輳ウィンドウサイズcwndが、輻輳ウィンドウの目標値cwnd_targetよりも小さいと判定された場合も、ステップＳ７の処理に戻る。【００６４】
この後、ステップＳ７〜Ｓ１５の処理が繰り返された場合、ウィンドウ制御部１７の制御によって、輻輳ウィンドウサイズcwndが輻輳ウィンドウの目標値cwnd_targetまで段階的に減少されることになる。
また、ステップＳ８において、ウィンドウ制御部１７は、確認応答受信部１２で受信した確認応答Ａ４の番号ａｃｋが、現在記録されている最大シーケンス番号max_seqよりも大きいと判定した場合、ステップＳ１６において、現在の輻輳ウィンドウサイズcwndが、輻輳ウィンドウの目標値cwnd_targetよりも大きいか否かを判定する。【００６５】
この結果、大きいと判定された場合、ウィンドウ制御部１７は、ステップＳ１７において、輻輳ウィンドウサイズcwndを、現在のフライトサイズFlightSize及び輻輳ウィンドウの目標値cwnd_targetの何れか一方に設定する。この設定後、本フロー全体の処理が終了する。
上記ステップＳ１６にて、現在の輻輳ウィンドウサイズcwndが、輻輳ウィンドウの目標値cwnd_targetよりも小さいと判定された場合も、本フロー全体の処理が終了する。また、上記ステップＳ３でスプリアスタイムアウトでないと判定された場合は、ステップＳ１８において、通常のＴＣＰ輻輳制御に戻る。即ち、スロースタート閾値を輻輳ウィンドウサイズの半分とし、輻輳ウィンドウサイズを１セグメントに更新する制御処理が行われる。【００６６】
このように、本実施の形態の通信システム１００によれば、第１の通信装置１０において、データユニット送信部１１からのデータユニットの送信後、第１のロス判定部１３にて、その送信データユニットに対する確認応答が確認応答受信部１２にて予め定められた時間内に受信されない場合に当該データユニットが損失したと判定し、この判定時にデータユニット再送部１５でデータユニットを再送する。次にスプリアスタイムアウト判定部１６で、第１のロス判定部１３の判定結果がデータユニット及び確認応答の何れか一方の遅延に起因するか否かを判定し、データユニットの遅延に起因すると判定された際にスプリアスタイムアウトと判定する。そして、スプリアスタイムアウトと判定された場合、ウィンドウ制御部１７で、データユニットの送信数を制御する輻輳ウィンドウのサイズを減少させる目標値を設定し、確認応答受信部１２によって確認応答が受信されたことを契機に、該輻輳ウィンドウのサイズを該目標値まで段階的に減少させる制御を行うようにした。【００６７】
これによって、送信側の通信装置１０において、スプリアスタイムアウトと判定された場合に、輻輳ウィンドウのサイズを減少させる目標値を設定し、この後、確認応答が受信されたことを契機に、その輻輳ウィンドウのサイズを目標値まで段階的に減少させるようにしたので、未送信データユニット（セグメント）を確実に送信することができ、これによって、効率的なロス回復を実現することができ、スループットを向上させることができる。従来技術では、スプリアスタイムアウト検出時に即座に輻輳ウィンドウを大きく減少させていたので、輻輳ウィンドウに未送信データユニットが含まれない状況が生じ、一番目と二番目の重複確認応答ＡＣＫが受信されたとき、未送信データユニットを送信できなくなっていた。【００６８】
また、ウィンドウ制御部１７は、スプリアスタイムアウトと判定された際に、データユニット再送部１５でのデータユニットの再送前に送信された全データユニットの確認応答が受信された時点で、輻輳ウィンドウのサイズが目標値より大きければ、該輻輳ウィンドウのサイズを該目標値及びフライトサイズの何れか一方に設定するようにした。
これによって、送信側の通信装置１０において、スプリアスタイムアウトの判定時において送信済の全データユニットが適正に送達されたことを確認した時点で、輻輳ウィンドウを一挙に目標値又はフライトサイズに設定するので、未送信データユニットを効率よく送達することができる。【００６９】
また、第１の通信装置１０に、確認応答受信部１２で受信された確認応答に基づいて、データユニットの損失を検出する第２のロス判定部１４を更に備え、ウィンドウ制御部１７が、目標値を設定する際に適用されるスロースタート閾値を保持し、スプリアスタイムアウトと判定された際に、データユニット再送部１５でのデータユニットの再送前に送信された全データユニットの確認応答が受信されるまでは、第２のロス判定部１４にてデータユニットの損失が検出されても、スロースタート閾値を減少させないようにした。【００７０】
これによって、送信側の通信装置１０において、スプリアスタイムアウトの判定時において送信済の全データユニットが適正に送達されたことが確認されるまでは、データユニットの損失が検出されても、スロースタート閾値を減少させないようにしたので、従来のように、データユニット損失時にスロースタート閾値が必要以上に減少されることによって、輻輳ウィンドウの増加速度が抑制され、スループットが低下するといった不具合を無くすことができる。【００７１】
また、目標値を、フライトサイズの１／２とするか、データユニットの１つ分とするようにした。
これらによって、輻輳ウィンドウのサイズを減少させる際に、従来のように輻輳ウィンドウに未送信データユニットが含まれない状況が生じないように、適正に輻輳ウィンドウを減少させることができる。
更に、この実施の形態の通信システム１００の効果を説明するために、図４のシーケンス図に示す従来の通信システムによる通信動作と比較する。
従来の送信側である第１の通信装置が、受信側の第２の通信装置から送信された確認応答Ａ３を受信するまでの動作は、上記実施の形態の動作と同じである。【００７２】
第１の通信装置は、確認応答Ａ２を受信すると、スプリアスタイムアウト判定が肯定的となり、即座にスロースタート閾値及び輻輳ウィンドウを減少させる。ここで、輻輳ウィンドウを減少させたため、第１の通信装置は確認応答Ａ４を受信したとき、新たにデータユニットを送信することができない。この結果、連続受信できる重複ＡＣＫの個数が最高でも２個となり、本実施の形態のようにFast Retransmit/Fast Recoveryアルゴリズムによるロス回復処理を実施することができない。また、第１の通信装置では、データユニットのロス判定用のタイマがタイムアウトし、タイムアウト再送が実施される。このとき、スロースタート閾値及び輻輳ウィンドウが再び減少されるので、スループットが低下する。【００７３】
（第２実施形態）
次に、本発明の第２の実施の形態について説明する。
図５は、本発明の第２の実施の形態に係る通信システムの構成を示すブロック図である。
図５に示す通信システム２００は、無線及び有線の何れか或いは双方のネットワーク１を介して第１の通信装置（ここでは送信装置であるものとする）４０と第２の通信装置（ここでは受信装置であるものとする）３０とが接続されて構成されている。但し、本実施の形態では、１つのネットワーク１を介して、第１の通信装置４０と第２の通信装置３０が接続されているが、複数のネットワークが介在してもよい。また、本発明は、突発的な信号遅延の増加が発生するネットワークにおいて有効である。例えば、ネットワーク１が移動通信ネットワークの場合が該当し、この場合、第１及び第２の通信装置４０，３０の何れか一方、又は両方は、携帯電話機に該当する。【００７４】
図６は、本実施形態における第1の通信装置４０の構成を示すブロック図である。
図６において、第1の通信装置４０は、データユニット送信部（送信手段）４１と、確認応答受信部（受信手段）４２と、第１のロス判定部（第１のロス判定手段）４３と、重複ＡＣＫ判定部（重複ＡＣＫ判定手段）４４と、スプリアスタイムアウト判定部（スプリアスタイムアウト判定手段）４５と、ウィンドウ制御部（制御手段）４６とを備えて構成されている。【００７５】
データユニット送信部４１は、ネットワーク１を介して１パケット又は複数パケットの塊であるデータユニットを第２の通信装置３０へ送信する。確認応答受信部４２は、第２の通信装置３０よって送信された確認応答を、ネットワーク１を介して受信する。
第１のロス判定部４３は、タイマを用いてデータユニットのロス判定を行う。そのタイマはデータユニット送信時に設定され、当該データユニットに対する確認応答が受信されると停止される。本タイマが切れると、当該データユニットは損失したものと判定される。【００７６】
重複ＡＣＫ判定部４４は、確認応答受信部４２によって受信された確認応答が重複ＡＣＫであるか否かを判定する。また、重複ＡＣＫ判定部４４は、連続受信された重複ＡＣＫが３つとなった場合に、データユニットが損失したものと判定する。
スプリアスタイムアウト判定部４５は、第１のロス判定部４３によってデータユニットの損失が判定された場合、本判定がデータユニット又は確認応答の遅延に起因するか否かを判定する。具体的には、スプリアスタイムアウト判定部４５は、第１のロス判定部４３によってデータユニットの損失が判定された場合に、重複ＡＣＫ判定部４４によって、その後に受信した確認応答が重複ＡＣＫでないと判定されたときには、スプリアスタイムアウトであると判定する。ウィンドウ制御部４６は、スプリアスタイムアウト判定部４５の判定結果が肯定的であった場合に、後述の動作説明にて詳述するようにウィンドウサイズの調節を行う。【００７７】
次に、上述した構成の通信システム２００の動作を、図７及び図８を参照して説明する。図７は、第１の通信装置４０の通信処理の流れを示すフロー図である。図８は、通信システム２００における通信の一例を示すシーケンス図である。
但し、本実施の形態では、送信側の第１の通信装置４０と、受信側の第２の通信装置３０とがトランスポート層のプロトコルにＴＣＰプロトコルを用いて通信する場合について説明する。図７には、第１の通信装置４０と第２の通信装置３０との間でＴＣＰコネクションは既に確立され、第１の通信装置４０の保持する輻輳ウィンドウサイズが８Ｋバイトの状態からのシーケンスを示している。各データユニットＤ１〜Ｄ１２のサイズは、１０００バイトとした。【００７８】
第１の通信装置４０のデータユニット送信部４１が、シーケンス番号１０００（Ｄ１に対応）からシーケンス番号８０００（Ｄ８）までの輻輳ウィンドウによって許容される合計８キロバイトのデータユニットＤ１〜Ｄ８を順次、ネットワーク１を介して第２の通信装置３０へ送信したとする。
更に、その送信されたデータユニットＤ１〜Ｄ８のうち、シーケンス番号６０００（Ｄ６）、７０００（Ｄ７）、８０００（Ｄ８）のデータユニットＤ６〜Ｄ８は、輻輳などの要因によってネットワーク１中で損失したものとする。【００７９】
第２の通信装置３０は、データユニットＤ１及びＤ２を受信すると、それらのデータユニットＤ１及びＤ２に対して確認応答Ａ１を第１の通信装置４０に送信する。同様に、データユニットＤ３及びＤ４を受信すると、確認応答Ａ２を送信する。続けて、データユニットＤ５を受信するが、後続のデータユニットが損失しているため、今回は、データユニットＤ５に対してのみ確認応答Ａ３を送信する。【００８０】
ここで、第２の通信装置３０によって送信された確認応答Ａ１〜Ａ５が、遅延して第１の通信装置４０に到着したとする。
確認応答Ａ１の到着が遅延した場合、ステップＳ１０１において、第１の通信装置４０の第１のロス判定部４３において、データユニットＤ１に対して設定されたタイマがタイムアウトし、該データユニットＤ１のロス判定が行われる。この場合、ロスと判定されるので、ステップＳ１０２において、データユニット送信部４１がデータユニットＤ１の再送を実施する。【００８１】
ステップＳ１０３において、第1の通信装置４０は、ウィンドウ制御部４６にて、既に送信されたデータユニットのシーケンス番号の最大値（max_seq＝８９９９）を記録する。
続いて、第１の通信装置４０が、データユニットＤ１及びＤ２に対する確認応答Ａ１を確認応答受信部４２で受信すると、ステップＳ１０４において、スプリアスタイムアウト判定部４５によってスプリアスタイムアウト判定処理に入る。【００８２】
更に、その確認応答Ａ１の受信時、即座にデータユニット送信部４１によって次のデータユニットＤ９及びＤ１０を送信する。続けて、確認応答Ａ２を受信すると、スプリアスタイムアウト判定部４５で、その確認応答Ａ２が重複ＡＣＫか否かを判定し、この結果、重複ＡＣＫでない場合、言い換えればデータユニットの遅延に起因すると判定された場合、スプリアスタイムアウトと判定する。この場合、ステップＳ１０５の処理へ進む。なお、データユニットＤ９はネットワークにおいて損失したとする。【００８３】
次に、ウィンドウ制御部４６は、ステップＳ１０５において、スロースタート閾値の値をフライトサイズ（現在通信路に存在するデータユニットのサイズ）の８Ｋバイトの半分（４Ｋバイト）に減少（ssthreshold=FlightSize/2）させる。但し、スロースタート閾値の値をフライトサイズの半分に減少させたが、フライトサイズより小さければ、当該フライトサイズの１／ｎ（ssthreshold=FlightSize/ｎ）でもよい（ただし、ｎは正数）。
この後、ウィンドウ制御部４６は、ステップＳ１０６において、輻輳ウィンドウサイズ（cwnd）を、１データユニット分のサイズ（ＭＳＳ：Maximum Segment Size）に設定する。【００８４】
次に、ステップＳ１０７において、第１の通信装置４０は、確認応答受信部４２で確認応答Ａ４を受信すると、ステップＳ１０８において、ウィンドウ制御部４６で、その受信した確認応答Ａ４の番号ａｃｋが、上記ステップＳ１０３にて記録された最大シーケンス番号max_seq以下であるか否かを判定する。なお、このときの確認応答Ａ４の番号ａｃｋ＝６０００であり、最大シーケンス番号max_seq＝８９９９である。【００８５】
ステップＳ１０８の判定の結果、確認応答Ａ４の番号ａｃｋが最大シーケンス番号max_seq以下である場合、ステップＳ１０９において、重複ＡＣＫ判定部４４で該確認応答Ａ４が重複ＡＣＫか否かを判定する。この際、データユニットＤ７が損失しているため、確認応答Ａ４は重複ＡＣＫと判定される。
続いて、ステップＳ１１０において、重複ＡＣＫ判定部４４でデータユニットの損失を判定する。このとき、連続受信した重複ＡＣＫが１つであることから、データユニットは損失していないものと判定される。【００８６】
次に、ステップＳ１１１において、ウィンドウ制御部４６で未送信データの送信が可能であるか否かを判定する。ここでは、第1の通信装置４０が未送信データを送信可能な状態であるものとする。
また、ステップＳ１１２において、ウィンドウ制御部４６で広告ウィンドウの制限があるか否かを判定する。ここでは、第２の通信装置３０から広告される広告ウィンドウのサイズが、第１の通信装置４０から送信しようとするデータユニットのサイズに対して制限とならない大きさであるものとする。そのため、ステップＳ１１２において、広告ウィンドウの制限はないものと判定される。【００８７】
すると、ステップＳ１１３において、第１の通信装置４０は、データユニット送信部４１にて未送信データユニットＤ１１を第２の通信装置３０に送信する。
この後、上記ステップＳ１０７〜Ｓ１１３において同様に、第１の通信装置４０は、次の確認応答Ａ５を受信すると、重複ＡＣＫの判定を行い、この結果が重複ＡＣＫの場合は、データユニットのロス判定を行う。そして、ロス判定の結果がＮｏである場合、未送信データの送信が可能で（ステップＳ１１１：Ｙｅｓ）、広告ウィンドウの制限がなければ（ステップＳ１１２：Ｙｅｓ）、次の順番のデータユニットＤ１２を送信する。【００８８】
なお、第１の通信装置４０がデータユニットＤ１１を送信することに対応して、第２の通信装置３０から３番目の重複ＡＣＫ（Ａ６）が返信され、この時点で連続受信した重複ＡＣＫの個数が、Ａ４〜Ａ６の３個となるため、ステップＳ１１０にて、データユニットが損失と判定される。
この場合、ステップＳ１１５において、ウィンドウ制御部４６は、Fast Retransmit/Fast Recoveryアルゴリズムによるロス回復処理に移る。なお、Fast Retransmit/Fast Recoveryアルゴリズムは、前述したFast Retransmitアルゴリズムの処理を行い、再送タイムアウトを待たずに再送を行うことによって、再送タイマを用いた再送方法に比べ高速にロスを回復する処理を行うものである。【００８９】
また、ステップＳ１０４において、スプリアスタイムアウト判定部４５で、その確認応答Ａ２が重複ＡＣＫか否かを判定し、この結果、重複ＡＣＫであると判定された場合（スプリアスタイムアウトでない場合）、第１の通信装置４０は、ステップＳ１１４において、通常のＴＣＰ輻輳制御に戻る。
なお、ステップＳ１０８において、受信した確認応答Ａ４の番号ａｃｋが、上記ステップＳ１０３にて記録された最大シーケンス番号max_seq以下でないと判定された場合、第１の通信装置４０は、本フロー全体の処理を終了する。【００９０】
また、ステップＳ１０９において、受信した確認応答Ａ４が重複ＡＣＫでないと判定された場合、および、ステップＳ１１１において、未送信データの送信が可能でないと判定した場合、ステップＳ１０７の処理に戻る。
同様に、ステップＳ１１２において、広告ウィンドウの制限があるものと判定された場合、および、ステップＳ１１３の後、ステップＳ１０７の処理に戻る。
このような処理を行うことにより、第１の通信装置４０で確認応答Ａ４及びＡ５を受信した際、受信確認を終えていないデータユニットのサイズ（６０００バイト）が輻輳ウィンドウサイズ（４０００バイト）に比べてデータユニット２個分以上大きくても、未送信データユニットが送信でき、高速再送によるロス回復が可能となる。【００９１】
（第３実施形態）
次に、本発明の第３の実施の形態について説明する。
図９は、本発明の第３の実施の形態に係る通信システムの構成を示すブロック図である。
図９に示す通信システム３００は、無線及び有線の何れか或いは双方のネットワーク１を介して第１の通信装置（ここでは送信装置であるものとする）５０と第２の通信装置（ここでは受信装置であるものとする）３０とが接続されて構成されている。但し、本実施の形態では、１つのネットワーク１を介して、第１の通信装置５０と第２の通信装置３０が接続されているが、複数のネットワークが介在してもよい。また、本発明は、突発的な信号遅延の増加が発生するネットワークにおいて有効である。例えば、ネットワーク１が移動通信ネットワークの場合が該当し、この場合、第１及び第２の通信装置５０，３０の何れか一方、又は両方は、携帯電話機に該当する。【００９２】
図１０は、本実施形態における第１の通信装置５０の構成を示すブロック図である。
図１０において、第１の通信装置５０は、データユニット送信部（送信手段）５１と、確認応答受信部（受信手段）５２と、第１のロス判定部（第１のロス判定手段）５３と、第２のロス判定部（第２のロス判定手段）５４と、スプリアスタイムアウト判定部（スプリアスタイムアウト判定手段）５５と、ロス回復部５６（ロス回復手段）と、ウィンドウ制御部（制御手段）５７とを備えて構成されている。【００９３】
データユニット送信部５１は、ネットワーク１を介して１パケット又は複数パケットの塊であるデータユニットを第２の通信装置３０へ送信する。確認応答受信部５２は、第２の通信装置３０よって送信された確認応答を、ネットワーク１を介して受信する。
第１のロス判定部５３は、タイマを用いてデータユニットのロス判定を行う。そのタイマはデータユニット送信時に設定され、当該データユニットに対する確認応答が受信されると停止される。本タイマが切れると、当該データユニットは損失したものと判定される。【００９４】
第２のロス判定部５４は、第２の通信装置３０によって送信された確認応答に基づいて、データユニットの損失を判定する。具体的には、第２のロス判定部５４は、連続受信された重複ＡＣＫが３つとなった場合に、受信確認を終えていない最も小さいシーケンス番号のデータユニットが損失したものと判定する。
スプリアスタイムアウト判定部５５は、第１のロス判定部５３によってデータユニットの損失が判定された場合、本判定がデータユニット又は確認応答の遅延に起因するか否かを判定する。具体的には、スプリアスタイムアウト判定部５５は、第１のロス判定部５３によってデータユニットの損失が判定された場合に、その後に受信した確認応答が重複ＡＣＫであるか否かを判定し、重複ＡＣＫでないときには、スプリアスタイムアウトであると判定する。【００９５】
ロス回復部５６は、第２のロス判定部５４によってデータユニットが損失したと判定された場合、ロス回復処理を実行する。
ウィンドウ制御部５７は、スプリアスタイムアウト判定部５５の判定結果が肯定的であった場合に、後述の動作説明にて詳述するようにウィンドウサイズの調節を行う。
次に、上述した構成の通信システム３００の動作を、図１１及び図１２を参照して説明する。図１１は、第１の通信装置５０の通信処理の流れを示すフロー図である。図１２は、通信システム３００における通信の一例を示すシーケンス図である。【００９６】
但し、本実施の形態では、送信側の第１の通信装置５０と、受信側の第２の通信装置３０とがトランスポート層のプロトコルにＴＣＰプロトコルを用いて通信する場合について説明する。図１２には、第１の通信装置５０と第２の通信装置３０との間でＴＣＰコネクションは既に確立され、第１の通信装置５０の保持する輻輳ウィンドウサイズが８Ｋバイトの状態からのシーケンスを示している。各データユニットＤ１〜Ｄ１９のサイズは、１０００バイトとした。【００９７】
第１の通信装置５０のデータユニット送信部５１が、シーケンス番号１０００（Ｄ１に対応）からシーケンス番号８０００（Ｄ８）までの輻輳ウィンドウによって許容される合計８キロバイトのデータユニットＤ１〜Ｄ８を順次、ネットワーク１を介して第２の通信装置３０へ送信したとする。
更に、その送信されたデータユニットＤ１〜Ｄ８のうち、シーケンス番号７０００（Ｄ７）のデータユニットＤ７は、輻輳などの要因によってネットワーク１中で損失したものとする。【００９８】
第２の通信装置３０は、データユニットＤ１及びＤ２を受信すると、それらのデータユニットＤ１及びＤ２に対して確認応答Ａ１を第１の通信装置５０に送信する。同様に、データユニットＤ３及びＤ４を受信すると、確認応答Ａ２を送信し、データユニットＤ５及びＤ６を受信すると、確認応答Ａ３を送信する。
ここで、第２の通信装置３０によって送信された確認応答Ａ１〜Ａ３が、遅延して第１の通信装置５０に到着したとする。【００９９】
確認応答Ａ１の到着が遅延した場合、ステップＳ２０１において、第１の通信装置５０の第１のロス判定部５３において、データユニットＤ１に対して設定されたタイマがタイムアウトし、該データユニットＤ１のロス判定が行われる。この場合、ロスと判定されるので、ステップＳ２０２において、データユニット送信部５１がデータユニットＤ１の再送を実施する。【０１００】
ステップＳ２０３において、第1の通信装置５０は、ウィンドウ制御部５７にて、既に送信されたデータユニットのシーケンス番号の最大値（max_seq＝８９９９）を記録する。
続いて、第１の通信装置５０が、データユニットＤ１及びＤ２に対する確認応答Ａ１を確認応答受信部５２で受信すると、ステップＳ２０４において、スプリアスタイムアウト判定部５５によってスプリアスタイムアウト判定処理に入る。【０１０１】
更に、その確認応答Ａ１の受信時、即座にデータユニット送信部５１によって次のデータユニットＤ９及びＤ１０を送信する。続けて、確認応答Ａ２を受信すると、スプリアスタイムアウト判定部５５で、その確認応答Ａ２が重複ＡＣＫか否かを判定し、この結果、重複ＡＣＫでない場合、言い換えればデータユニットの遅延に起因すると判定された場合、スプリアスタイムアウトと判定する。この場合、ステップＳ２０５の処理へ進む。【０１０２】
次に、ウィンドウ制御部５７は、ステップＳ２０５において、スロースタート閾値の値をフライトサイズ（現在通信路に存在するデータユニットのサイズ）の８Ｋバイトの半分（４Ｋバイト）に減少（ssthreshold=FlightSize/2）させる。但し、スロースタート閾値の値をフライトサイズの半分に減少させたが、フライトサイズより小さければ、当該フライトサイズの１／ｎ（ssthreshold=FlightSize/ｎ）でもよい（ただし、ｎは正数）。【０１０３】
この後、ウィンドウ制御部５７は、ステップＳ２０６において、輻輳ウィンドウサイズ（cwnd）を、先に更新されたスロースタート閾値の値（４Ｋバイト）に設定する。
次に、ステップＳ２０７において、第１の通信装置５０は、確認応答受信部５２で確認応答Ａ４を受信すると、ステップＳ２０８において、ウィンドウ制御部５７で、その受信した確認応答Ａ４の番号ａｃｋが、上記ステップＳ２０３にて記録された最大シーケンス番号max_seq以下であるか否かを判定する。なお、このときの確認応答Ａ４の番号ａｃｋ＝７０００であり、最大シーケンス番号max_seq＝８９９９である。【０１０４】
ステップＳ２０８の判定の結果、確認応答Ａ４の番号ａｃｋが最大シーケンス番号max_seq以下である場合、ステップＳ２０９において、第２のロス判定部５４で該確認応答Ａ４が重複ＡＣＫか否かを判定する。この際、データユニットＤ７が損失しているため、確認応答Ａ４は重複ＡＣＫと判定される。
続いて、ステップＳ２１０において、データユニットの損失を判定する。このとき、連続受信した重複ＡＣＫが１つであることから、データユニットは損失していないものと判定される。【０１０５】
次に、ステップＳ２１１において、ウィンドウ制御部５７で未送信データの送信が可能であるか否かを判定する。ここでは、第１の通信装置５０は新たに送信すべきデータを保持しているため、ステップＳ２１１においては送信可能と判定される。
また、ステップＳ２１２において、ウィンドウ制御部５７で広告ウィンドウの制限があるか否かを判定する。ここでは、第２の通信装置３０から広告される広告ウィンドウのサイズが、第１の通信装置５０から送信しようとするデータユニットのサイズに対して制限とならない大きさであるものとする。そのため、ステップＳ２１２において、広告ウィンドウの制限はないものと判定される。【０１０６】
すると、ステップＳ２１３において、第１の通信装置５０は、ウィンドウ制御部５７にてフライトサイズ（FlightSize）が輻輳ウィンドウのサイズにデータユニット２個を加えたサイズ（cwnd+2）以下であるかを判定する。
即ち、第1の通信装置５０は、Limited Transmitによって未送信データユニットの送信が可能か否かを判定し、未送信データの送信が可能で、かつ広告ウィンドウによる制限を受けず、さらに、受信確認を終えていないデータユニットのサイズ（４０００バイト）が現在の輻輳ウィンドウサイズ（４０００バイト）にデータユニット２個のサイズ（２０００バイト）を加えた値（６０００バイト）以下であるため、未送信のデータユニットＤ１１を第２の通信装置３０に送信する。【０１０７】
この後、上記ステップＳ２０７〜Ｓ２１３において同様に、第１の通信装置５０は、次の確認応答Ａ５を受信すると、番号ａｃｋと最大シーケンス番号max_seqとの比較および重複ＡＣＫの判定を行い、この結果が番号ａｃｋ≦最大シーケンス番号max_seqかつ重複ＡＣＫの場合は、データユニットのロス判定を行う。そして、ロス判定の結果がＮｏである場合、未送信データの送信が可能で（ステップＳ２１１：Ｙｅｓ）、広告ウィンドウの制限がなく（ステップＳ２１２：Ｙｅｓ）、かつフライトサイズ（FlightSize）が輻輳ウィンドウのサイズにデータユニット２個を加えたサイズ（cwnd+2）以下であるときには、ステップＳ２１４において、次の順番のデータユニットＤ１２を送信する。【０１０８】
また、第１の通信装置５０は、ステップＳ２０７において次の確認応答Ａ６を受信すると、番号ａｃｋ（７０００）と最大シーケンス番号max_seq（８９９９）との比較を行い、番号ａｃｋが最大シーケンス番号max_seqより小さいことから、重複ＡＣＫの判定を行う。ここでは、データユニットＤ７が損失しているため、重複ＡＣＫと判定され、続いてデータユニットのロス判定が行われる。そして、このとき、連続受信される重複ＡＣＫがＡ４〜Ａ６の３つとなるため、ロス判定の結果が肯定的となる。【０１０９】
すると、ステップＳ２１６において、第１の通信装置５０は、ウィンドウ制御部５７にて、スロースタート閾値（ssthresh）を保持し、ステップＳ２１７において、ロス判定に用いた重複ＡＣＫの個数（３個）から１引いた個数（２個）と等しいデータユニットのサイズ（２０００バイト）だけ輻輳ウィンドウサイズを増加させる。以後、ロス回復部５６にて、通常のRetransmit/Fast Recoveryによる再送制御を行う。【０１１０】
また、ステップＳ２０４において、スプリアスタイムアウト判定部５５で、その確認応答Ａ２が重複ＡＣＫか否かを判定し、この結果、重複ＡＣＫであると判定された場合（スプリアスタイムアウトでない場合）、第１の通信装置５０は、ステップＳ２１５において、通常のＴＣＰ輻輳制御に戻る。
なお、ステップＳ２０８において、受信した確認応答Ａ４の番号ａｃｋが、上記ステップＳ２０３にて記録された最大シーケンス番号max_seq以下でないと判定された場合、第１の通信装置５０は、本フロー全体の処理を終了する。【０１１１】
また、ステップＳ２０９において、受信した確認応答Ａ４が重複ＡＣＫでないと判定された場合、および、ステップＳ２１１において、未送信データの送信が可能でないと判定した場合、ステップＳ２０７の処理に戻る。
同様に、ステップＳ２１２において、広告ウィンドウの制限があるものと判定された場合、ステップＳ２１３において、フライトサイズ（FlightSize）が輻輳ウィンドウサイズにデータユニット２個を加えたサイズ（cwnd+2）より大きいと判定された場合、および、ステップＳ２１４の後、ステップＳ２０７の処理に戻る。【０１１２】
このように、第１の通信装置５０において３個以上の重複ＡＣＫが連続受信された場合、輻輳ウィンドウサイズをロス判定に用いた重複ＡＣＫの個数に基づいて設定することにより、後続のロス回復処理で、ネットワークに流入するデータユニットの個数を確実に輻輳ウィンドウサイズに制御することができる。
図１２においては、確認応答Ａ６が受信され、ステップＳ２１７において輻輳ウィンドウが増加されてから、再送されたデータユニットＤ７に対する確認応答Ａ１０が受信されるまでの間、ネットワークに流入するデータユニットの個数（４０００バイトに相当）が輻輳ウィンドウサイズ（４０００バイト）に制御されている。【０１１３】
（第４実施形態）
次に、本発明の第４の実施の形態について説明する。
図１３は、本発明の第４の実施の形態に係る通信システムの構成を示すブロック図である。
図１３に示す通信システム４００は、無線及び有線の何れか或いは双方のネットワーク１を介して第１の通信装置（ここでは送信装置であるものとする）６０と第２の通信装置（ここでは受信装置であるものとする）３０とが接続されて構成されている。但し、本実施の形態では、１つのネットワーク１を介して、第１の通信装置６０と第２の通信装置３０が接続されているが、複数のネットワークが介在してもよい。また、本発明は、突発的な信号遅延の増加が発生するネットワークにおいて有効である。例えば、ネットワーク１が移動通信ネットワークの場合が該当し、この場合、第１及び第２の通信装置６０，３０の何れか一方、又は両方は、携帯電話機に該当する。【０１１４】
図１４は、本実施形態における第１の通信装置６０の構成を示すブロック図である。
図１４において、第１の通信装置６０は、データユニット送信部（送信手段）６１と、確認応答受信部（受信手段）６２と、第１のロス判定部（第１のロス判定手段）６３と、第２のロス判定部（第２のロス判定手段）６４と、スプリアスタイムアウト判定部（スプリアスタイムアウト判定手段）６５と、ロス回復部６６（ロス回復手段）と、ウィンドウ制御部（制御手段）６７とを備えて構成されている。【０１１５】
データユニット送信部６１は、ネットワーク１を介して１パケット又は複数パケットの塊であるデータユニットを第２の通信装置３０へ送信する。確認応答受信部６２は、第２の通信装置３０よって送信された確認応答を、ネットワーク１を介して受信する。
第１のロス判定部６３は、タイマを用いてデータユニットのロス判定を行う。そのタイマはデータユニット送信時に設定され、当該データユニットに対する確認応答が受信されると停止される。本タイマが切れると、当該データユニットは損失したものと判定される。【０１１６】
第２のロス判定部６４は、第２の通信装置３０によって送信された確認応答に基づいて、データユニットの損失を判定する。具体的には、第２のロス判定部６４は、連続受信された重複ＡＣＫが３つとなった場合に、受信確認を終えていない最も小さいシーケンス番号のデータユニットが損失したものと判定する。
スプリアスタイムアウト判定部６５は、第１のロス判定部６３によってデータユニットの損失が判定された場合、本判定がデータユニット又は確認応答の遅延に起因するか否かを判定する。具体的には、スプリアスタイムアウト判定部６５は、第１のロス判定部６３によってデータユニットの損失が判定された場合に、その後に受信した確認応答が重複ＡＣＫであるか否かを判定し、重複ＡＣＫでないときには、スプリアスタイムアウトであると判定する。【０１１７】
ロス回復部６６は、第２のロス判定部６４によってデータユニットが損失したと判定された場合、ロス回復処理を実行する。
ウィンドウ制御部６７は、スプリアスタイムアウト判定部６５の判定結果が肯定的であった場合に、後述の動作説明にて詳述するようにウィンドウサイズの調節を行う。
次に、上述した構成の通信システム４００の動作を、図１５及び図１６を参照して説明する。図１５は、第１の通信装置６０の通信処理の流れを示すフロー図である。図１６は、通信システム４００における通信の一例を示すシーケンス図である。【０１１８】
但し、本実施の形態では、送信側の第１の通信装置６０と、受信側の第２の通信装置３０とがトランスポート層のプロトコルにＴＣＰプロトコルを用いて通信する場合について説明する。図１６には、第１の通信装置６０と第２の通信装置３０との間でＴＣＰコネクションは既に確立され、第１の通信装置６０の保持する輻輳ウィンドウサイズが８Ｋバイトの状態からのシーケンスを示している。各データユニットＤ１〜Ｄ１８のサイズは、１０００バイトとした。【０１１９】
第１の通信装置６０のデータユニット送信部６１が、シーケンス番号１０００（Ｄ１に対応）からシーケンス番号８０００（Ｄ８）までの輻輳ウィンドウによって許容される合計８キロバイトのデータユニットＤ１〜Ｄ８を順次、ネットワーク１を介して第２の通信装置３０へ送信したとする。
更に、その送信されたデータユニットＤ１〜Ｄ８のうち、シーケンス番号７０００（Ｄ７）のデータユニットＤ７は、輻輳などの要因によってネットワーク１中で損失したものとする。【０１２０】
第２の通信装置３０は、データユニットＤ１及びＤ２を受信すると、それらのデータユニットＤ１及びＤ２に対して確認応答Ａ１を第１の通信装置６０に送信する。同様に、データユニットＤ３及びＤ４を受信すると、確認応答Ａ２を送信し、データユニットＤ５及びＤ６を受信すると、確認応答Ａ３を送信する。
ここで、第２の通信装置３０によって送信された確認応答Ａ１〜Ａ３が、遅延して第１の通信装置６０に到着したとする。【０１２１】
確認応答Ａ１の到着が遅延した場合、ステップＳ３０１において、第１の通信装置６０の第１のロス判定部６３において、データユニットＤ１に対して設定されたタイマがタイムアウトし、該データユニットＤ１のロス判定が行われる。この場合、ロスと判定されるので、ステップＳ３０２において、データユニット送信部６１がデータユニットＤ１の再送を実施する。【０１２２】
ステップＳ３０３において、第1の通信装置６０は、ウィンドウ制御部６７にて、既に送信されたデータユニットのシーケンス番号の最大値（max_seq＝８９９９）を記録する。
続いて、第１の通信装置６０が、データユニットＤ１及びＤ２に対する確認応答Ａ１を確認応答受信部６２で受信すると、ステップＳ３０４において、スプリアスタイムアウト判定部６５によってスプリアスタイムアウト判定処理に入る。【０１２３】
更に、その確認応答Ａ１の受信時、即座にデータユニット送信部６１によって次のデータユニットＤ９及びＤ１０を送信する。続けて、確認応答Ａ２を受信すると、スプリアスタイムアウト判定部６５で、その確認応答Ａ２が重複ＡＣＫか否かを判定し、この結果、重複ＡＣＫでない場合、言い換えればデータユニットの遅延に起因すると判定された場合、スプリアスタイムアウトと判定する。この場合、ステップＳ３０５の処理へ進む。【０１２４】
次に、ウィンドウ制御部６７は、ステップＳ３０５において、スロースタート閾値の値をタイムアウト直前のフライトサイズの８Ｋバイトの半分（４Ｋバイト）に減少（ssthreshold=FlightSize/2）させる。但し、スロースタート閾値の値をフライトサイズの半分に減少させたが、フライトサイズより小さければ、当該フライトサイズの１／ｎ（ssthreshold=FlightSize/ｎ）でもよい（ただし、ｎは正数）。【０１２５】
この後、ウィンドウ制御部６７は、ステップＳ３０６において、輻輳ウィンドウサイズ（cwnd）を、先に更新されたスロースタート閾値の値（４Ｋバイト）に設定する。
次に、ステップＳ３０７において、第１の通信装置６０は、確認応答受信部６２で確認応答Ａ４を受信すると、ステップＳ３０８において、ウィンドウ制御部６７で、その受信した確認応答Ａ４の番号ａｃｋが、上記ステップＳ３０３にて記録された最大シーケンス番号max_seq以下であるか否かを判定する。なお、このときの確認応答Ａ４の番号ａｃｋ＝７０００であり、最大シーケンス番号max_seq＝８９９９である。【０１２６】
ステップＳ３０８の判定の結果、確認応答Ａ４の番号ａｃｋが最大シーケンス番号max_seq以下である場合、ステップＳ３０９において、第２のロス判定部６４で該確認応答Ａ４が重複ＡＣＫか否かを判定する。この際、データユニットＤ７が損失しているため、確認応答Ａ４は重複ＡＣＫと判定される。
続いて、ステップＳ３１０において、データユニットの損失を判定する。このとき、連続受信した重複ＡＣＫが１つであることから、データユニットは損失していないものと判定される。【０１２７】
次に、ステップＳ３１１において、ウィンドウ制御部６７で未送信データの送信が可能であるか否かを判定する。ここでは、第１の通信装置６０は新たに送信すべきデータを保持しているため、ステップＳ３１１においては送信可能と判定される。
また、ステップＳ３１２において、ウィンドウ制御部６７で広告ウィンドウの制限があるか否かを判定する。ここでは、第２の通信装置３０から広告される広告ウィンドウのサイズが、第１の通信装置６０から送信しようとするデータユニットのサイズに対して制限とならない大きさであるものとする。そのため、ステップＳ３１２において、広告ウィンドウの制限はないものと判定される。【０１２８】
すると、ステップＳ３１３において、第１の通信装置６０は、ウィンドウ制御部６７にてフライトサイズ（FlightSize）が輻輳ウィンドウのサイズにデータユニット２個を加えたサイズ（cwnd+2）以下であるかを判定する。
即ち、第1の通信装置６０は、Limited Transmitによって未送信データユニットの送信が可能か否かを判定し、未送信データの送信が可能で、かつ広告ウィンドウによる制限を受けず、さらに、受信確認を終えていないデータユニットのサイズ（４０００バイト）が現在の輻輳ウィンドウサイズ（４０００バイト）にデータユニット２個のサイズ（２０００バイト）を加えた値（６０００バイト）以下であるため、未送信のデータユニットＤ１１を第２の通信装置３０に送信する。【０１２９】
この後、上記ステップＳ３０７〜Ｓ３１３において同様に、第１の通信装置６０は、次の確認応答Ａ５を受信すると、番号ａｃｋと最大シーケンス番号max_seqとの比較および重複ＡＣＫの判定を行い、この結果が番号ａｃｋ≦最大シーケンス番号max_seqかつ重複ＡＣＫの場合は、データユニットのロス判定を行う。そして、ロス判定の結果がＮｏである場合、未送信データの送信が可能で（ステップＳ３１１：Ｙｅｓ）、広告ウィンドウの制限がなく（ステップＳ３１２：Ｙｅｓ）、かつフライトサイズ（FlightSize）が輻輳ウィンドウのサイズにデータユニット２個を加えたサイズ（cwnd+2）以下であるときには、ステップＳ３１４において、次の順番のデータユニットＤ１２を送信する。ここで、データユニットＤ１２は、輻輳などの要因によってネットワーク１中で損失したものとする。【０１３０】
第１の通信装置６０は、ステップＳ３０７において次の確認応答Ａ６を受信すると、番号ａｃｋ（７０００）と最大シーケンス番号max_seq（８９９９）との比較を行い、番号ａｃｋが最大シーケンス番号max_seqより小さいことから、重複ＡＣＫの判定を行う。ここでは、データユニットＤ７が損失しているため、重複ＡＣＫと判定され、続いてデータユニットのロス判定が行われる。そして、このとき、連続受信される重複ＡＣＫがＡ４〜Ａ６の３つとなるため、ロス判定の結果が肯定的となる（ステップＳ３１０：Ｙｅｓ）。【０１３１】
すると、ステップＳ３１６において、第１の通信装置６０は、ウィンドウ制御部６７にて、スロースタート閾値（ssthresh）を保持し、ステップＳ３１７において、ロス判定閾値をタイムアウト以前に送信されたデータユニットのシーケンス番号の最大値（８９９９）に１加えた値（９０００）に設定する。以後、ロス回復部６６にて、通常のRetransmit/Fast Recoveryによる再送制御を行う。【０１３２】
第１の通信装置６０は、再送されたデータユニットＤ７に対する確認応答Ａ１０を受信すると、そのＡＣＫ番号（１２０００）がタイムアウト以前に送信されたデータユニットのシーケンス番号の最大値に１加えた値（９０００）以上であるため、ロス回復が完了したと判定し、Fast Recoveryを終了する。
その後、第１の通信装置６０において受信される確認応答Ａ１１〜Ａ１３は、データユニットＤ１２が損失しているため、重複ＡＣＫとなる。第１の通信装置６０は、これらのうち３番目の重複ＡＣＫである確認応答Ａ１３を受信すると、ステップＳ３１８において、スロースタート閾値と輻輳ウィンドウサイズを減少させ、通常の再送制御を行う。【０１３３】
このように、タイムアウト以前に送信したデータユニットの損失が検出された場合、ロス回復を判定する閾値（ロス判定閾値）として、タイムアウト以前に送信したデータユニットのシーケンス番号の最大値に１加えた値を設定することとした。
そのため、タイムアウト以前に送信したデータユニットの損失に対しては、スロースタート閾値および輻輳ウィンドウサイズを保持し、タイムアウト以後に送信したデータユニットの損失に対しては、スロースタート閾値および輻輳ウィンドウサイズを減少させることができる。
図１６においては、タイムアウト以前に再送されたデータユニットＤ７の損失に対して、スロースタート閾値および輻輳ウィンドウが保持され、タイムアウト以後に送信されたデータユニットＤ１２に対しては、スロースタート閾値および輻輳ウィンドウサイズが減少されている。
【産業上の利用の可能性】
【０１３４】
本発明によれば、スロースタート閾値及び輻輳ウィンドウを変化させる応答アルゴリズム実行において、スプリアスタイムアウトに続けてセグメントロスが発生した場合に、効率的なロス回復を実現することができ、これによってスループットを向上させることができるという効果がある。
【図１】
2008044653.tif 000003
【図２】
2008044653.tif 000004
【図３】
2008044653.tif 000005
【図４】
2008044653.tif 000006
【図５】
2008044653.tif 000007
【図６】
2008044653.tif 000008
【図７】
2008044653.tif 000009
【図８】
2008044653.tif 000010
【図９】
2008044653.tif 000011
【図１０】
2008044653.tif 000012
【図１１】
2008044653.tif 000013
【図１２】
2008044653.tif 000014
【図１３】
2008044653.tif 000015
【図１４】
2008044653.tif 000016
【図１５】
2008044653.tif 000017
【図１６】
2008044653.tif 000018
【国際調査報告】
2008044653.tif 000019
2008044653.tif 000020
2008044653.tif 000021
2008044653.tif 000022
2008044653.tif 000023
2008044653.tif 000024