(57)【要約】 【課題】  ネットワーク特性が変動する通信路が通信径路中に含まれている場合でも、スループットを従来よりも増加させることができるデータ通信装置、データ通信方法、データ通信プログラムおよび記録媒体を提供する。【解決手段】  送受信部１０は、データ通信装置２によって送信されたＳＹＮパケットを受信し、伝送制御部１１へ出力する。伝送制御部１１は、受信したＳＹＮパケット内にネットワーク特性情報が格納されていた場合に、ネットワーク特性情報に基づいて、ネットワーク特性が時変性であるかどうか判定する。ネットワーク特性が時変性であった場合、伝送制御部１１は、輻輳制御変数の値を、過去の通信結果に基づく値以外の所定値に設定する。【選択図】    図１
2006005833.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して外部装置とデータ通信を行う送受信手段と、
輻輳制御に用いられる輻輳制御変数の値を記憶する記憶手段と、
過去の通信結果に基づいて前記輻輳制御変数の値を設定し、該輻輳制御変数の値に基づいて、前記データ通信における輻輳制御を行うと共に、前記データ通信の終了時に前記輻輳制御変数の値を前記記憶手段に格納する通信制御手段と、
前記ネットワークの時間的な変動の特性に関するネットワーク特性情報が前記外部装置から受信された場合に、該ネットワーク特性情報に基づいて、前記ネットワークが時変性であるかどうか判定する判定手段とを具備し、
前記通信制御手段は、前記判定手段によって、前記ネットワークが時変性であると判定された場合に、前記輻輳制御変数の値を、過去の通信結果に基づかない値に設定する
ことを特徴とするデータ通信装置。
【請求項２】
前記判定手段は、コネクションの開始要求を示すコネクション開始要求情報と共に受信する前記ネットワーク特性情報に基づいて、前記ネットワークが時変性であるかどうか判定することを特徴とする請求項１に記載のデータ通信装置。
【請求項３】
前記判定手段は、前記外部装置とのコネクションが終了する場合に、前記ネットワークが時変性であるかどうか判定し、
前記通信制御手段は、前記判定手段によって、前記ネットワークが時変性であると判定された場合に、前記設定した値を前記輻輳制御変数の値として、前記記憶手段に格納する
ことを特徴とする請求項１に記載のデータ通信装置。
【請求項４】
前記判定手段は、前記ネットワーク特性情報を前記外部装置から受信するごとに、前記ネットワーク特性情報に基づいて、前記ネットワークが時変性であるかどうか判定することを特徴とする請求項１に記載のデータ通信装置。
【請求項５】
前記通信制御手段は、前記判定手段によって、前記ネットワークが時変性であると判定された場合に、一定時間ごとに、前記輻輳制御変数の値を、過去の通信結果に基づかない値に設定することを特徴とする請求項１に記載のデータ通信装置。
【請求項６】
前記過去の通信結果に基づかない値は、前記記憶手段によって記憶されている前記輻輳制御変数の値よりも大きいことを特徴とする請求項１〜請求項５のいずれかの項に記載のデータ通信装置。
【請求項７】
ネットワークを介した外部装置とのデータ通信時に、輻輳制御変数の値に基づいて輻輳制御を行い、データ通信終了時に、前記輻輳制御変数の値を記憶するデータ通信方法において、
前記ネットワークの時間的な変動の特性に関するネットワーク特性情報を前記外部装置から受信する第１のステップと、
受信した前記ネットワーク特性情報に基づいて、前記ネットワークが時変性であるかどうか判定する第２のステップと、
前記ネットワークが時変性であると判定した場合に、前記輻輳制御変数の値を、過去の通信結果に基づかない値に設定する第３のステップと、
を具備することを特徴とするデータ通信方法。
【請求項８】
前記第２のステップは、コネクションの開始要求を示すコネクション開始要求情報と共に前記外部装置から受信する前記ネットワーク特性情報に基づいて判定することを特徴とする請求項７に記載のデータ通信方法。
【請求項９】
前記第２のステップは、前記外部装置とのコネクションが終了する場合に、前記ネットワークが時変性であるかどうか判定し、
前記第３のステップは、前記ネットワークが時変性であると判定した場合に、前記設定した値を前記輻輳制御変数の値として、記憶手段に格納する
ことを特徴とする請求項７に記載のデータ通信方法。
【請求項１０】
前記第２のステップは、前記ネットワーク特性情報を前記外部装置から受信するごとに、前記ネットワーク特性情報に基づいて、前記ネットワークが時変性であるかどうか判定することを特徴とする請求項７に記載のデータ通信方法。
【請求項１１】
前記第３のステップは、前記ネットワークが時変性であると判定した場合に、一定時間ごとに、前記輻輳制御変数の値を、過去の通信結果に基づかない値に設定することを特徴とする請求項７に記載のデータ通信方法。
【請求項１２】
前記過去の通信結果に基づかない値は、前記記憶手段によって記憶されている前記輻輳制御変数の値よりも大きいことを特徴とする請求項７〜請求項１１のいずれかの項に記載のデータ通信方法。
【請求項１３】
ネットワークを介した外部装置とのデータ通信時に、輻輳制御変数の値に基づいて輻輳制御を行い、データ通信終了時に、前記輻輳制御変数の値を記憶するデータ通信処理をコンピュータに実行させるためのデータ通信プログラムにおいて、
前記ネットワークの時間的な変動の特性に関するネットワーク特性情報を前記外部装置から受信する第１のステップと、
受信した前記ネットワーク特性情報に基づいて、前記ネットワークが時変性であるかどうか判定する第２のステップと、
前記ネットワークが時変性であると判定した場合に、前記輻輳制御変数の値を、過去の通信結果に基づかない値に設定する第３のステップと、
をコンピュータに実行させることを特徴とするデータ通信プログラム。
【請求項１４】
前記第２のステップは、コネクションの開始要求を示すコネクション開始要求情報と共に前記外部装置から受信する前記ネットワーク特性情報に基づいて判定することを特徴とする請求項１３に記載のデータ通信プログラム。
【請求項１５】
前記第２のステップは、前記外部装置とのコネクションが終了する場合に、前記ネットワークが時変性であるかどうか判定し、
前記第３のステップは、前記ネットワークが時変性であると判定した場合に、前記設定した値を前記輻輳制御変数の値として、記憶手段に格納する
ことを特徴とする請求項１３に記載のデータ通信プログラム。
【請求項１６】
前記第２のステップは、前記ネットワーク特性情報を前記外部装置から受信するごとに、前記ネットワーク特性情報に基づいて、前記ネットワークが時変性であるかどうか判定することを特徴とする請求項１３に記載のデータ通信プログラム。
【請求項１７】
前記第３のステップは、前記ネットワークが時変性であると判定した場合に、一定時間ごとに、前記輻輳制御変数の値を、過去の通信結果に基づかない値に設定することを特徴とする請求項１３に記載のデータ通信プログラム。
【請求項１８】
前記過去の通信結果に基づかない値は、前記記憶手段によって記憶されている前記輻輳制御変数の値よりも大きいことを特徴とする請求項１３〜請求項１７のいずれかの項に記載のデータ通信プログラム。
【請求項１９】
請求項１３〜請求項１８のいずれかの項に記載のデータ通信プログラムが記録されたコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット交換網を経由して輻輳制御を行うデータ通信装置に関し、特に、通信径路中に帯域幅や、遅延、誤り率が変動する通信路を含む場合のスループットの改善を図ったデータ通信装置に関する。また、本発明は、データ通信方法、データ通信プログラム、およびこのデータ通信プログラムが記録された記録媒体にも関する。
【背景技術】
【０００２】
インターネットにおいては、ネットワークのトラヒックが増加することにより、有効な通信を行うことができなくなる輻輳状態が発生することがある。輻輳状態にならないように通信を制御する技術として輻輳制御が知られている。従来、インターネット通信において輻輳制御を行うプロトコルとしてＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）が知られている。ＴＣＰはＲＦＣ７９３、ＲＦＣ１１２２、ＲＦＣ２５８１、ＲＦＣ２５８２等の文書に記載されており、その改良のための研究が続けられている。ＴＣＰはＯＳＩ参照モデルにおいてトランスポート層に位置し、ストリーム型通信の実現、ポート番号で指定されるポート間の通信、コネクションの制御、誤り制御やフロー制御（送信側と受信側との間で行う通信データ量の制御）等の品質の制御、および輻輳制御を行っている。以下、上記のＴＣＰの機能について説明する。
【０００３】
ネットワーク層に位置するＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）は、ＩＰアドレスで指定されるホスト間の通信を行うが、ＴＣＰのコネクションは、ＩＰアドレスに加えて、ポート番号で指定される二つのＴＣＰポート間で確立される。
【０００４】
ＴＣＰの誤り制御は、ＡＲＱ（自動再送要求）方式によって実現されている。ＡＲＱ方式においては、送信側から受信側へデータのセグメントが送信され、これを受信した受信側から送信側へＡＣＫ（Ａｃｋｎｏｗｌｅｄｇｅ：確認応答、肯定応答）が返送される。ＡＣＫが返送されないセグメントがあった場合には、送信側からセグメントが再送される。送信側は、スループットを大きくするために、あるウィンドウサイズ分のセグメントを送信しようとする。この方式はスライディングウィンドウフロー制御と呼ばれており、ウィンドウサイズ分の送信が許可され、それを受信した受信側からＡＣＫが返送されると、ウィンドウのシーケンス番号がスライドしていく。送信側におけるウィンドウはＣｏｎｇｅｓｔｉｏｎ  ｗｉｎｄｏｗ（ｃｗｎｄ：輻輳ウィンドウ）と呼ばれ、輻輳制御にも利用される。
【０００５】
ＴＣＰのフロー制御においては、受信側から送信側へ返送されるＡＣＫの中に、Ｒｅｃｅｉｖｅｒ  ｗｉｎｄｏｗ（ｒｗｎｄ）を通知する情報を含めている。このｒｗｎｄは、受信側が受け取ることのできるデータ量を表しており、ｒｗｎｄとして０を送信側に通知すれば送信を停止させることができる。ｒｗｎｄは、受信側に用意されているバッファ量に応じて決まる。送信側はｒｗｎｄとｃｗｎｄとのうち、小さい方を超えないように送信を抑制する。
【０００６】
スライディングウィンドウフロー制御は、ＴＣＰに限らず、ＨＤＬＣ手順から派生したデータリンク層プロトコルにおいて、よく用いられている。スライディングウィンドウフロー制御の目的は、ＡＲＱによる再送制御を行うことにより、受信側のバッファが不足する事態を避けると共に、スループットを向上させることにある。インターネットでは複数のデータリンクを経由して通信が行われるため、特定のデータリンク層に依存せずに、トランスポート層においてフロー制御を行う必要がある。フロー制御と輻輳制御において、トランスポート層かデータリンク層かという違いは機能上の違いには現れず、それらの制御が実行される通信路の範囲が異なるに過ぎない。
【０００７】
以下、ＴＣＰの輻輳制御について説明する。輻輳制御においては、ネットワークの輻輳崩壊を避けるために、スロースタートと輻輳回避動作とが行われる。スロースタートにおいては、送信の開始時にｃｗｎｄの値を小さな値に設定しておき、受信側からＡＣＫが返送されるごとにｃｗｎｄを指数関数状に増加させる。例えば、ＡＣＫが１個返送されるたびにｃｗｎｄは１増加する。つまり、１個のＡＣＫに対して２個のセグメントが送信可能となる。
【０００８】
輻輳回避は、ｃｗｎｄを少しずつ増加させる動作である。輻輳回避においては、ＡＣＫが１個返送されるたびにｃｗｎｄは１／ｃｗｎｄ増加する。つまり、ｃｗｎｄ個のＡＣＫが返送されると、現在のｃｗｎｄに対してｃｗｎｄ＋１が次のｃｗｎｄの値となる。ｃｗｎｄがｓｓｔｈｒｅｓｈ（スロースタートしきい値）未満であればスロースタートが行われ、ｃｗｎｄがｓｓｔｈｒｅｓｈ以上であれば輻輳回避が行われる。フロー制御が受信側に対する配慮であるのに対し、輻輳制御はネットワークに対する配慮である。
【０００９】
ＴＣＰの最大スループットは、パケットの誤りや紛失を無視すれば、ウィンドウサイズ／ＲＴＴで表される。ここで、ＲＴＴ（Ｒｏｕｎｄ  Ｔｒｉｐ  Ｔｉｍｅ：遅延）は、データを送信してから受信側のＡＣＫが返ってくるまでの時間であり、ウィンドウサイズは、通信が許容する最大の値であるが、それらがどのような値であるのかを事前に仮定しておくことはできない。受信側は、通常の通信が許容するウィンドウサイズ以上のｒｗｎｄを用意しておき、送信側はｃｗｎｄをそのウィンドウサイズまで増加させ、その状態を持続させることが重要となる。
【００１０】
ＴＣＰのスループットを増加させるためには、帯域幅（Ｂａｎｄｗｉｄｔｈ）と遅延（ＲＴＴ）との積である帯域幅遅延積（Ｂａｎｄｗｉｄｔｈ  Ｄｅｌａｙ  Ｐｒｏｄｕｃｔ：ＢＤＰ）以上のウィンドウサイズを実現するべきである。つまり、受信側がｒｗｎｄをＢＤＰ以上に設定し、送信側がｃｗｎｄをＢＤＰ以上にまで増加させ、その状態が持続すれば、スループットが大きくなる。通信において許容される最大のウィンドウサイズは不明であるが、帯域幅やＲＴＴは想定がしやすく、また、それらの測定をし、経験値を得た後であれば、その経験値を用いることもできる。
【００１１】
輻輳制御を実現するためには、輻輳の検出と送信制御とを組み合わせればよい。つまり、小さな送信速度で送信を開始してから徐々に速度を上げていき、輻輳が発生したこと、もしくは発生しそうであることを検出した場合に送信速度を抑制すればよい。ＴＣＰにおいては、ある程度の時間が経過してもＡＣＫが返送されないことを検出したり、あるいは、輻輳状態を通知するためのＥＣＮ（Ｅｘｐｌｉｃｉｔ  Ｃｏｎｇｅｓｔｉｏｎ  Ｎｏｔｉｆｉｃａｔｉｏｎ）ビットをＴＣＰヘッダから検出することによって輻輳を検出することができる。
【００１２】
ＴＣＰにおいては、スライディングウィンドウフロー制御におけるウィンドウサイズを変化させることにより、スループットの制御を実現している。すなわち、ｃｗｎｄを小さくすることによってスループットを小さくし、ｃｗｎｄを大きくすることによってスループットを大きくする。通信径路の帯域幅遅延積程度のウィンドウサイズが設定されると最大スループットが達成されるが、それよりもウィンドウサイズが大きくなるとスループットは飽和し、やがて輻輳を起こすようになる。
【００１３】
ＴＣＰの輻輳回避動作においては、少しずつｃｗｎｄを増加させていき、ＡＣＫが返ってこない等の理由により輻輳が発生したと推定された場合にｃｗｎｄを小さくするという動作が繰り返される。しかし、ｃｗｎｄをＢＤＰ以上に保つことがスループットの改善につながるため、輻輳を起こさずにできるだけ大きなウィンドウサイズを保つことが重要となる。しかし、ＴＣＰにおいては、ＢＤＰの値がいくつであるのかを事前に知ることができないため、ｃｗｎｄの増加と減少との試行が行われる。
【００１４】
ＢＳＤ系のＴＣＰ実装においては、ｋｅｒｎｅｌ  ｒｏｕｔｉｎｇ  ｔａｂｌｅにｓｓｔｈｒｅｓｈやＢＤＰが参考値として記憶され、再度のＴＣＰコネクションの確立時にそれらの参考値を利用することができる。これらの情報は、ｓｔｒｕｃｔ＿ｍｅｔｒｉｃｓの中のｒｍｘ＿ｓｓｔｈｒｅｓｈ、ｒｍｘ＿ｒｅｃｖｐｉｐｅ、ｒｍｘ＿ｓｅｎｄｐｉｐｅといったフィールドに格納される。
【００１５】
ｒｍｘ＿ｓｓｔｈｒｅｓｈは、スロースタート状態から輻輳回避状態へ遷移するためのしきい値であり、再度同じルートでコネクションが開かれた場合にｓｓｔｈｒｅｓｈとして利用することができる。ｒｍｘ＿ｒｅｃｖｐｉｐｅは、受信における帯域幅遅延積を表しており、受信に使用するバッファサイズを決める際に利用することができる。ｒｍｘ＿ｓｅｎｄｐｉｐｅは、送信における帯域幅遅延積を表しており、送信に使用するバッファサイズを決める際に利用することができる。
【００１６】
なお、コネクションが閉じる際に、ｒｍｘ＿ｓｓｔｈｒｅｓｈが０ではなく、かつ現状のｓｓｔｈｒｅｓｈが、バッファサイズから定まる値よりも小さい場合にのみ、ｒｍｘ＿ｓｓｔｈｒｅｓｈが更新される。しかも、ｒｍｘ＿ｓｓｔｈｒｅｓｈの新しい値と古い値との平均を求めてからその値が記憶されるため、ｒｍｘ＿ｓｓｔｈｒｅｓｈは穏やかに変化することになる。
【００１７】
ＢＳＤ系のＴＣＰ実装においては、通信を行った結果、輻輳を経験してｓｓｔｈｒｅｓｈが減少している場合に、次回以降の通信においてｓｓｔｈｒｅｓｈを適切な大きさに縮小した状態で通信を開始することができるように、記録されたｒｍｘ＿ｓｓｔｈｒｅｓｈが利用されている。ただし、デフォルト状態ではｒｍｘ＿ｓｓｔｈｒｅｓｈは０に設定されており、明示的にｒｍｘ＿ｓｓｔｈｒｅｓｈが設定された場合にのみ、ｒｍｘ＿ｓｓｔｈｒｅｓｈの利用と更新とが行われるようになっている。
【００１８】
つまり、この機構は、帯域幅が細く、輻輳が問題となるゲートウェイを経由するクライアントホストに対する対策と考えられる。ただし、ＬｉｎｕｘのＴＣＰ実装（例えばｋｅｒｎｅｌ  ２．４．１８）においては、このような輻輳制御変数の参考値の記憶とその参考値による初期化の機構は、任意のホストに対して随時実行されている。なお、ＴＣＰに関しては下記の文献が開示している。
【特許文献１】特開平７−６７０８８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１９】
従来の輻輳制御においては、以下のような問題点が発生していた。輻輳を経験すると、ｓｓｔｈｒｅｓｈはその時点でのｃｗｎｄの半分に縮小される。スロースタート中にｃｗｎｄが小さな値のときに、通信路の品質が一時的に悪化し、ｓｓｔｈｒｅｓｈがｃｗｎｄの値の半分の値に縮小されると、この値がｋｅｒｎｅｌ  ｒｏｕｔｉｎｇ  ｔａｂｌｅに参考値として記憶され、以後のコネクションにおいては、この参考値に基づいて、ｓｓｔｈｒｅｓｈが小さな値に初期化される。このため、以後のコネクションにおいて通信路の品質が改善していたとしても、ＴＣＰにおいては早期に輻輳回避動作に遷移して、ｃｗｎｄが小さい値の状態が長く続き、通信路のＢＤＰまでｃｗｎｄを増加させるのに非常に長い時間がかかるか、またはＢＤＰまでｃｗｎｄを増加させる前に通信が終了してしまうという問題点があった。
【００２０】
インターネットはベストエフォート型のパケット交換網と考えられるが、ネットワーク特性が変動する無線通信路を経由する通信が行われる場合には、ベストエフォート型としての特徴がより顕著となる。この場合には、時々刻々と無線通信路の品質が変化し、パケットが遅延したり、パケットが紛失する確率は有線通信路の場合よりも高い。このため、ＴＣＰによって輻輳と判断され、ｃｗｎｄとｓｓｔｈｒｅｓｈが縮小されることが多くなるが、その場合でも、それ以降の通信においてずっと品質が悪いままであるのではなく、品質が良好な状態に変化していることもしばしばある。
【００２１】
無線通信路の品質が改善された場合に、輻輳制御変数であるｓｓｔｈｒｅｓｈが増大することもあるが、一旦急激に減少したｓｓｔｈｒｅｓｈを増大させるためには、品質の良い通信を長時間にわたって行う必要があり、実際にはスループットの低い状態が長時間続いてしまう。このように、記憶された参考値に基づいて、輻輳制御変数（例えばｓｓｔｈｒｅｓｈ）を初期化し、輻輳を経験した通信路のスループットを抑制することは、無線通信路の性質に適合せず、無線通信路の品質が改善された場合に、その性能を十分に生かすことができないという問題点があった。
【００２２】
本発明は、上述した問題点に鑑みてなされたものであって、ネットワーク特性が変動する通信路が通信径路中に含まれている場合でも、スループットを従来よりも増加させることができるデータ通信装置、データ通信方法、データ通信プログラムおよび記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００２３】
本発明は上記の課題を解決するためになされたもので、請求項１に記載の発明は、ネットワークを介して外部装置とデータ通信を行う送受信手段と、輻輳制御に用いられる輻輳制御変数の値を記憶する記憶手段と、過去の通信結果に基づいて前記輻輳制御変数の値を設定し、該輻輳制御変数の値に基づいて、前記データ通信における輻輳制御を行うと共に、前記データ通信の終了時に前記輻輳制御変数の値を前記記憶手段に格納する通信制御手段と、前記ネットワークの時間的な変動の特性に関するネットワーク特性情報が前記外部装置から受信された場合に、該ネットワーク特性情報に基づいて、前記ネットワークが時変性であるかどうか判定する判定手段とを具備し、前記通信制御手段は、前記判定手段によって、前記ネットワークが時変性であると判定された場合に、前記輻輳制御変数の値を、過去の通信結果に基づかない値に設定することを特徴とするデータ通信装置である。
【００２４】
過去の通信結果に基づかない値とは、過去の通信結果に依存しない値であって、所定の初期値である。また、過去の通信結果とは、このデータ通信装置と外部装置とが過去に行った通信の結果である。上記の、過去の通信結果に基づかない値は、その変数として取り得る最大値（計算機の内部表現で使用できる最大値）であればよい。もしくは、想定される帯域幅遅延積ＢＤＰの最大値を予め所定値として定めておいてもよい。例えば、ウィンドウサイズの最大値ｍａｘ＿ｃｗｎｄをＢＤＰの最大値に設定し、スロースタートしきい値ｓｓｔｈｒｅｓｈをＢＤＰの最大値の半分に設定すればよい。ＢＤＰは帯域幅と遅延（ＲＴＴ）との積であり、経由するネットワークが予め分かっている場合には、帯域幅と遅延とを推定することができる。また、帯域幅と遅延とを実際の測定により求め、それらの測定値に基づいてＢＤＰを求めてもよい。
【００２５】
請求項２に記載の発明は、請求項１に記載のデータ通信装置において、前記判定手段は、コネクションの開始要求を示すコネクション開始要求情報と共に受信する前記ネットワーク特性情報に基づいて、前記ネットワークが時変性であるかどうか判定することを特徴とする。
【００２６】
請求項３に記載の発明は、請求項１に記載のデータ通信装置において、前記判定手段は、前記外部装置とのコネクションが終了する場合に、前記ネットワークが時変性であるかどうか判定し、前記通信制御手段は、前記判定手段によって、前記ネットワークが時変性であると判定された場合に、前記設定した値を前記輻輳制御変数の値として、前記記憶手段に格納することを特徴とする。
【００２７】
請求項４に記載の発明は、請求項１に記載のデータ通信装置において、前記判定手段は、前記ネットワーク特性情報を前記外部装置から受信するごとに、前記ネットワーク特性情報に基づいて、前記ネットワークが時変性であるかどうか判定することを特徴とする。
【００２８】
請求項５に記載の発明は、請求項１に記載のデータ通信装置において、前記通信制御手段は、前記判定手段によって、前記ネットワークが時変性であると判定された場合に、一定時間ごとに、前記輻輳制御変数の値を、過去の通信結果に基づかない値に設定することを特徴とする。
【００２９】
請求項６に記載の発明は、請求項１〜請求項５のいずれかの項に記載のデータ通信装置において、前記過去の通信結果に基づかない値は、前記記憶手段によって記憶されている前記輻輳制御変数の値よりも大きいことを特徴とする。
【００３０】
請求項７に記載の発明は、ネットワークを介した外部装置とのデータ通信時に、輻輳制御変数の値に基づいて輻輳制御を行い、データ通信終了時に、前記輻輳制御変数の値を記憶するデータ通信方法において、前記ネットワークの時間的な変動の特性に関するネットワーク特性情報を前記外部装置から受信する第１のステップと、受信した前記ネットワーク特性情報に基づいて、前記ネットワークが時変性であるかどうか判定する第２のステップと、前記ネットワークが時変性であると判定した場合に、前記輻輳制御変数の値を、過去の通信結果に基づかない値に設定する第３のステップとを具備することを特徴とするデータ通信方法である。
【００３１】
請求項８に記載の発明は、請求項７に記載のデータ通信方法において、前記第２のステップは、コネクションの開始要求を示すコネクション開始要求情報と共に前記外部装置から受信する前記ネットワーク特性情報に基づいて判定することを特徴とする。
【００３２】
請求項９に記載の発明は、請求項７に記載のデータ通信方法において、前記第２のステップは、前記外部装置とのコネクションが終了する場合に、前記ネットワークが時変性であるかどうか判定し、前記第３のステップは、前記ネットワークが時変性であると判定した場合に、前記設定した値を前記輻輳制御変数の値として、記憶手段に格納することを特徴とする。
【００３３】
請求項１０に記載の発明は、請求項７に記載のデータ通信方法において、前記第２のステップは、前記ネットワーク特性情報を前記外部装置から受信するごとに、前記ネットワーク特性情報に基づいて、前記ネットワークが時変性であるかどうか判定することを特徴とする。
【００３４】
請求項１１に記載の発明は、請求項７に記載のデータ通信方法において、前記第３のステップは、前記ネットワークが時変性であると判定した場合に、一定時間ごとに、前記輻輳制御変数の値を、過去の通信結果に基づかない値に設定することを特徴とする。
【００３５】
請求項１２に記載の発明は、請求項７〜請求項１１のいずれかの項に記載のデータ通信方法において、前記過去の通信結果に基づかない値は、前記記憶手段によって記憶されている前記輻輳制御変数の値よりも大きいことを特徴とする。
【００３６】
請求項１３に記載の発明は、ネットワークを介した外部装置とのデータ通信時に、輻輳制御変数の値に基づいて輻輳制御を行い、データ通信終了時に、前記輻輳制御変数の値を記憶するデータ通信処理をコンピュータに実行させるためのデータ通信プログラムにおいて、前記ネットワークの時間的な変動の特性に関するネットワーク特性情報を前記外部装置から受信する第１のステップと、受信した前記ネットワーク特性情報に基づいて、前記ネットワークが時変性であるかどうか判定する第２のステップと、前記ネットワークが時変性であると判定した場合に、前記輻輳制御変数の値を、過去の通信結果に基づかない値に設定する第３のステップとをコンピュータに実行させることを特徴とするデータ通信プログラムである。
【００３７】
請求項１４に記載の発明は、請求項１３に記載のデータ通信プログラムにおいて、前記第２のステップは、コネクションの開始要求を示すコネクション開始要求情報と共に前記外部装置から受信する前記ネットワーク特性情報に基づいて判定することを特徴とする。
【００３８】
請求項１５に記載の発明は、請求項１３に記載のデータ通信プログラムにおいて、前記第２のステップは、前記外部装置とのコネクションが終了する場合に、前記ネットワークが時変性であるかどうか判定し、前記第３のステップは、前記ネットワークが時変性であると判定した場合に、前記設定した値を前記輻輳制御変数の値として、記憶手段に格納することを特徴とする。
【００３９】
請求項１６に記載の発明は、請求項１３に記載のデータ通信プログラムにおいて、前記第２のステップは、前記ネットワーク特性情報を前記外部装置から受信するごとに、前記ネットワーク特性情報に基づいて、前記ネットワークが時変性であるかどうか判定することを特徴とする。
【００４０】
請求項１７に記載の発明は、請求項１３に記載のデータ通信プログラムにおいて、前記第３のステップは、前記ネットワークが時変性であると判定した場合に、一定時間ごとに、前記輻輳制御変数の値を、過去の通信結果に基づかない値に設定することを特徴とする。
【００４１】
請求項１８に記載の発明は、請求項１３〜請求項１７のいずれかの項に記載のデータ通信プログラムにおいて、前記過去の通信結果に基づかない値は、前記記憶手段によって記憶されている前記輻輳制御変数の値よりも大きいことを特徴とする。
【００４２】
請求項１９に記載の発明は、請求項１３〜請求項１８のいずれかの項に記載のデータ通信プログラムが記録されたコンピュータ読み取り可能な記録媒体である。
【発明の効果】
【００４３】
本発明によれば、ネットワーク特性が変動する通信路が通信径路中に含まれている場合でも、スループットを従来よりも増加させることができるという効果が得られる。
【発明を実施するための最良の形態】
【００４４】
以下、図面を参照し、本発明を実施するための最良の形態について説明する。図１は、本発明の一実施形態によるデータ通信装置を備えた通信システムの構成を示すブロック図である。以下、図中の各構成について説明する。この通信システムは、データ通信装置１、データ通信装置２、インターネット３（パケット交換ネットワーク）、無線基地局４、および無線端末５を備えている。
【００４５】
データ通信装置１は、インターネット３に接続されており、コンテンツを配信するサーバとしての機能を有する。データ通信装置２は、データ通信装置１からコンテンツを受信するクライアント端末としての機能を有する。インターネット３においては、ＴＣＰ／ＩＰに基づいて、複数のネットワークを介した通信が行われる。インターネット３には、無線基地局４が接続されている。無線端末５は、例えば携帯電話であるが、無線通信を行う機能を有していれば他の装置でもよい。無線端末５にはデータ通信装置２が接続され、無線端末５はゲートウェイとして機能している。無線基地局４と無線端末５との間には無線通信路が形成されている。
【００４６】
データ通信装置１において、送受信部１０は、ＩＥＥＥ８０２．３で規定される規格によりインターネット３と接続し、データの送受信を行う。送受信部１０は物理層／データリンク層を用い、ネットワーク層にＩＰを用いて、パケット交換ネットワークを経由する通信を実現するハードウェアおよびソフトウェアである。送受信部１０は、物理層／データリンク層を用いた通信を行う手段としてモデムであってもよいし、携帯電話を利用するデータ通信モデムであってもよい。伝送制御部１１は、ＴＣＰに基づいて、データの送受信を制御する。記憶部１２は、輻輳制御用の輻輳制御変数の参考値等の情報や、過去に通信を行った相手のＩＰアドレスに関する情報、コンテンツデータ等を記憶する。記憶部１２は、例えばメモリによって構成される。
【００４７】
データ通信装置２において、送受信部２０は、ＩＥＥＥ８０２．３で規定される規格により無線端末５と接続し、データの送受信を行う。伝送制御部２１は、ＴＣＰに基づいて、データの送受信を制御する。記憶部２２は、ネットワークの時間的な変動の特性（時変性または時不変性）を示すネットワーク特性情報等を記憶する。記憶部２２は、例えばメモリによって構成される。
【００４８】
送受信部１０および送受信部２０は、ネットワークインターフェースカード（ＮＩＣ）とそのデバイスドライバおよびインターネットプロトコル（ＩＰ）を実行するソフトウェアとを含む。送受信部１０および送受信部２０は、ネットワーク層を含まずに特定のパケット交換ネットワークの中で閉じた通信を行うハードウェアおよびソフトウェアであってもよい。ただし、通信を行うために送受信部１０および送受信部２０は固有のアドレスを有しており、相手のアドレスに宛ててパケットの送信を行う。
【００４９】
送受信部１０と送受信部２０がネットワーク層としてＩＰを含む場合には、ＩＰアドレスが固有のアドレスに相当し、ネットワーク層を含まずに、物理層／データリンク層としてＩＥＥＥ８０２．３による通信を行う場合には、ＭＡＣアドレスが固有のアドレスに相当する。送受信部１０および送受信部２０はＴＣＰに限らず輻輳制御を実行するものであればよく、また、トランスポート層に限らず、データリンク層において輻輳制御を実行するハードウェアおよびソフトウェアであってもよい。
【００５０】
輻輳制御変数とは、輻輳制御の実行の際に、伝送制御部２１によって使用される変数である。例えば、ＴＣＰにおけるスロースタートしきい値ｓｓｔｈｒｅｓｈが輻輳制御変数である。また、送信時のウィンドウサイズｃｗｎｄの最大値ｍａｘ＿ｃｗｎｄを輻輳制御変数に含めてもよい。通常、ｓｓｔｈｒｅｓｈはウィンドウサイズの最大値ｍａｘ＿ｃｗｎｄの半分の値に設定される。また、最大値ｍａｘ＿ｃｗｎｄは帯域幅遅延積ＢＤＰ（帯域幅とＲＴＴとの積）に等しくすべきであり、帯域幅およびＲＴＴを輻輳制御変数としてもよい。
【００５１】
輻輳制御変数であるｃｗｎｄとｓｓｔｈｒｅｓｈは、通信が実行されると、過去の通信結果に基づいて値が更新されていく。特に、輻輳が発生すると、ｓｓｔｈｒｅｓｈはその時点のｃｗｎｄの半分の値に縮小される。一方、輻輳が発生せずに、ｃｗｎｄがｍａｘ＿ｃｗｎｄに達するまで増加することもある。過去の通信結果に基づくこれらの値は、次回の通信における輻輳制御変数の値として利用するための参考値として、記憶部１２によって記憶される。輻輳制御変数の参考値は、上記の輻輳制御変数を初期化する際に使用される初期値である。
【００５２】
ネットワーク特性情報は、少なくとも時変性の有無を含むものであり、データ通信装置２がデータ通信装置１に対して、使用するネットワークの特性を通知するための情報である。時変性の有無だけを通知するのであれば、１ビットのデータで足りる。その他の情報を通知する必要があるならば、その識別値とそのデータの長さとそのデータ値とを組にして通知する。例えば、ネットワークの誤り率等の品質に関する情報や、帯域幅に関する情報（帯域幅の平均値や変動値等）を通知してもよい。これらの情報を通知すれば、ネットワークが時変性かどうかを通知することができる。さらに、ネットワーク品質の時変動の周期のような時間に関する情報を通知してもよい。伝送制御部２１は通信中に測定を行うことにより、これらのネットワーク特性に関する情報を取得することができる。
【００５３】
ネットワーク特性情報は、記憶部２２によって予め記憶されている。この情報は、無線基地局４と無線端末５による無線通信路を経由することが既知であれば、その特性に従って設定されることが好ましいが、少なくとも送受信部２０がどのようなネットワークに接続されているかに応じて、ネットワーク特性情報を設定すればよい。
【００５４】
なお、上記のデータ通信装置１およびデータ通信装置２の構成に関しては、輻輳制御に関係する構成のみを図示および説明し、ユーザによって操作される操作キーや、各装置において動作するアプリケーションを制御する制御手段等は図示および説明を省略している。
【００５５】
次に、本実施形態の動作について説明する。データ通信装置２がデータ通信装置１からコンテンツデータ等を受信するために、コネクションの確立を行う。この場合、伝送制御部２１は伝送制御部１１に対してコネクションの確立を要求する。その際に、伝送制御部２１は、記憶部２２から通知するべきネットワーク特性情報を読み出す。伝送制御部２１によって送信されるコネクション開始要求（ＳＹＮ）パケットのＴＣＰヘッダ内には、オプションを格納する領域がある。伝送制御部２１は、この領域にネットワーク特性情報を格納することにより、ネットワーク特性情報を送信する。
【００５６】
あるいは、ＳＹＮパケットのデータ部分を用いてネットワーク特性情報を送信してもよい。ただし、これらの拡張を理解しないＴＣＰに対して、これらの拡張が問題を起こさないような配慮が必要である。ＴＣＰヘッダ内にオプションを格納する場合には、その種別を１バイトのデータで指定できるので、既存のＴＣＰは新しい拡張を無視することができる。コネクション開始要求であることを示すため、ＴＣＰヘッダ内のＳＹＮフラグが１となる。
【００５７】
伝送制御部２１は、ネットワーク特性情報を添付したＳＹＮパケットを送受信部２０へ出力する。送受信部２０はＳＹＮパケットを無線端末５へ送信する。このＳＹＮパケットは無線端末５から無線通信によって無線基地局４へ送信され、無線基地局４からインターネット３を介してデータ通信装置１へ送信される。データ通信装置１の送受信部１０はＳＹＮパケットを受信し、伝送制御部１１へ出力する。伝送制御部１１は、そのパケットがＴＣＰのＳＹＮパケットであることを認識し、ＴＣＰヘッダ内のＡＣＫ（肯定応答、確認応答）フラグおよびＳＹＮフラグを１としたパケット（ＳＹＮ＋ＡＣＫ）を作成してデータ通信装置２へ送信する。ＳＹＮパケットとは逆向きに、ＳＹＮ＋ＡＣＫパケットがデータ通信装置２へ配送される。
【００５８】
ＴＣＰによるコネクション確立は３ｗａｙハンドシェークと呼ばれ、データ通信装置２がＳＹＮパケットを送信し、続いてそれを受信したデータ通信装置１がＳＹＮ＋ＡＣＫパケットを送信し、続いてそれを受信したデータ通信装置２がＡＣＫを送信することによって、コネクションが確立する。このとき、伝送制御部１１は、データ通信装置２へＳＹＮ＋ＡＣＫパケットを送信してから、データ通信装置１からのＡＣＫパケットを受信するまでの時間をＲＴＴとして測定する。ＲＴＴの測定値は、ＲＴＯ（Ｒｅｔｒａｎｓｍｉｔ  Ｔｉｍｅｏｕｔ）タイマー値を決める際に利用される。
【００５９】
伝送制御部１１は、データ通信装置２からのＳＹＮパケットを取得した場合に、ＳＹＮパケットの中にネットワーク特性情報が格納されているかどうか判定し、格納されていた場合には、ネットワークの時変性に関する情報が格納されているかどうか判定する。もし、ネットワークの時変性に関する情報が格納されており、その情報に基づいて、ネットワークが時変性であると判定した場合には、伝送制御部１１は、記憶部１２に輻輳制御変数の参考値が記憶されていたとしても、それを利用せず、輻輳制御変数であるｃｗｎｄの最大値ｍａｘ＿ｃｗｎｄを所定値に設定し、スロースタートしきい値ｓｓｔｈｒｅｓｈも所定値に設定する。以上の動作によって、伝送制御部１１は、ネットワークが時変性である場合には、輻輳制御変数の値を、過去の通信結果に基づく参考値以外の所定値（過去の通信結果に基づかない値）に設定する。過去の通信結果に基づく参考値以外の所定値は、過去の通信結果に依存しない値であって、所定の初期値である。また、過去の通信結果とは、データ通信装置１とデータ通信装置２自体がデータ通信装置１−データ通信装置２間で実際に過去に行った通信の結果である。
【００６０】
以上の動作において設定される所定値に関しては、その変数として取り得る最大値（計算機の内部表現で使用できる最大値）を所定値として設定すればよい。もしくは、想定される帯域幅遅延積ＢＤＰの最大値を予め所定値として定めておいてもよい。なぜなら、ｃｗｎｄの値がＢＤＰの値を超えても、スループットの改善を期待することはできないからである。例えば、ｍａｘ＿ｃｗｎｄをＢＤＰの最大値に設定し、ｓｓｔｈｒｅｓｈをＢＤＰの最大値の半分に設定すればよい。また、所定値として、記憶部１２に記憶されている参考値よりも大きな値を設定するようにしてもよい。
【００６１】
ＢＤＰは帯域幅と遅延（ＲＴＴ）との積であり、経由するネットワークが予め分かっている場合には、帯域幅と遅延とを推定することができる。また、帯域幅と遅延とを実際の測定により求め、それらの測定値に基づいてＢＤＰを求めてもよい。
【００６２】
ＳＹＮパケットの中にネットワークの時変性に関する情報が格納されており、その情報に基づいて、ネットワークが時不変性であると判定した場合には、伝送制御部１１は記憶部１２を参照して、送受信部２０のＩＰアドレスに関する情報を検索する。記憶部１２には、最近通信を行った相手のＩＰアドレスと、そのときの輻輳制御変数ｍａｘ＿ｃｗｎｄとｓｓｔｈｒｅｓｈの参考値とが関連付けられて格納されている。送受信部２０のＩＰアドレスが記憶部１２に記憶されていた場合には、伝送制御部１１は、そのＩＰアドレスに関連付けられた輻輳制御変数の参考値を読み出して、通信に使用する。一方、送受信部２０のＩＰアドレスが記憶部１２に記憶されていなかった場合には、伝送制御部１１は輻輳制御変数を所定値に設定する。この場合の所定値は、従来においては単なる所定の初期値であったが、本実施形態においては、上述した、過去の通信結果に基づく参考値以外の所定値であるとする。
【００６３】
また、ＳＹＮパケットの中にネットワークの時変性に関する情報が格納されていなかった場合には、ネットワークが時不変性であった場合の動作と同様に扱う。
【００６４】
ネットワーク特性情報として、時変性に関する情報に加えて、帯域幅に関する情報も通知された場合には、伝送制御部１１は、３ｗａｙハンドシェークを行った時にＲＴＴを測定し、帯域幅とＲＴＴとを掛け合わせることにより、ＢＤＰの値を取得する。これにより、ｍａｘ＿ｃｗｎｄとｓｓｔｈｅｒｓｈとを、予め想定されるＢＤＰの値に基づいた所定値ではなく、実際のＢＤＰの値に基づいた値に設定することができる。例えば、ＢＤＰの値をＭＳＳ（Ｍａｘｉｍｕｍ  Ｓｅｇｍｅｎｔ  Ｓｉｚｅ）の倍数に丸めた値をｍａｘ＿ｃｗｎｄに設定し、ＢＤＰ／２の値をＭＳＳの倍数に丸めた値をｓｓｔｈｒｅｓｈに設定することができる。このように、ネットワーク特性情報に基づいて、伝送制御部１１が輻輳制御変数の値を操作してもよい。
【００６５】
データ通信装置１とデータ通信装置２との間のコネクションが確立され、通信が開始しした場合に、無線端末５と無線基地局４との間の無線通信路において通信品質が悪化し、誤り率が増大すると、伝送制御部１１は通信レートを減少させて誤り率の増大を抑制しようとする。また、悪化した通信品質が回復すると、伝送制御部１１は通信レートを増大させて、より大きなスループットを得ようとする。無線通信路の品質が悪化すると、伝送制御部１１は輻輳を経験する確率が高くなる。
【００６６】
輻輳が発生した場合、伝送制御部１１は、輻輳制御アルゴリズムにより、スロースタートしきい値ｓｓｔｈｒｅｓｈの値を輻輳ウィンドウｃｗｎｄの半分の値に設定し、輻輳ウィンドウの最大値ｍａｘ＿ｃｗｎｄをｃｗｎｄの値に設定し、ｃｗｎｄを最低値に設定し、スロースタートを実行する。このように、過去の通信結果によって、ｃｗｎｄの増大が抑制されるように輻輳制御変数の学習が行われる。無線通信路においては、短時間のうちに通信品質が回復するため、過去の通信結果に基づいた値以外の値に輻輳制御変数を設定し直すことにより、無線通信路の性能をよりよく利用することができるようになる。
【００６７】
図２は、上述したデータ通信装置１の輻輳制御変数の設定に関する動作（第１の動作例）を示すフローチャートである。以下、図２を参照してこの動作を詳細に説明する。この動作は、データ通信装置２からデータ通信装置１に対してコネクション開始要求が送信された場合の動作を示している。送受信部１０は、データ通信装置２によって送信されたＳＹＮパケットを受信し、伝送制御部１１へ出力する（ステップＳ２０１）。続いて、伝送制御部１１は、受信したＳＹＮパケット内にネットワーク特性のうち時変性に関する情報、すなわちネットワーク特性情報が格納されているかどうか判定する（ステップＳ２０２）。ネットワーク特性情報がＳＹＮパケット内に格納されていた場合にはステップＳ２０３へ進み、格納されていなかった場合にはステップＳ２０４へ進む。
【００６８】
ステップＳ２０３において、伝送制御部１１は、受信されたネットワーク特性情報に基づいて、ネットワーク特性が時変性であるかどうか判定する。ネットワーク特性が時変性であった場合にはステップＳ２０６へ進み、時変性でなかった場合（時不変性であった場合）にはステップＳ２０４へ進む。ステップＳ２０４において、伝送制御部１１は、ＳＹＮパケットを送信したデータ通信装置２の送受信部２０のＩＰアドレスが記憶部１２に格納されているかどうか判定する。送受信部２０のＩＰアドレスが記憶部１２に格納されていた場合にはステップＳ２０５へ進み、格納されていなかった場合にはステップＳ２０６へ進む。
【００６９】
ステップＳ２０５において、伝送制御部１１は、送受信部２０のＩＰアドレスに関連付けられた輻輳制御変数の参考値を読み出して参照し、これから開始しようとするコネクションの輻輳制御変数の値として設定する。ステップＳ２０６において、伝送制御部１１は、輻輳制御変数の値を、過去の通信結果に基づく値以外の所定値に設定する。ステップＳ２０５およびステップＳ２０６以降は、輻輳制御変数の設定に関する処理を終了し、ＳＹＮ＋ＡＣＫパケットの送信等の通常の動作を行う。
【００７０】
上述したように、本動作例において送受信部１０は、ネットワーク特性情報を含むＳＹＮパケットを、ネットワーク３を介してデータ通信装置２から受信し、そのＳＹＮパケットを伝送制御部１１へ出力する。伝送制御部１１は、ネットワーク特性情報に基づいて、ネットワーク特性が時変性であるかどうか判定する。ネットワーク特性が時変性であった場合には、伝送制御部１１は、輻輳制御変数の値を、過去の通信結果に基づく値以外の所定値に設定する。所定値として、その変数の取り得る最大値を設定することにより、ネットワーク特性が変動する通信路が通信径路中に含まれている場合でも、スループットを従来よりも増加させることができる。
【００７１】
次に、データ通信装置１の輻輳制御変数の設定に関する第２の動作例について説明する。図３は、コネクションの終了時に、輻輳制御変数の値を、過去の通信結果に基づいた値以外の値に設定する動作を示すフローチャートである。伝送制御部１１は、データ通信装置１から受信されたＳＹＮパケットに格納されていたネットワーク特性情報のうち、時変性に関する情報を記憶部１２に格納する。伝送制御部２１とコネクションを開いて、輻輳制御変数を初期化する場合には、以下の動作を行う。
【００７２】
すなわち、伝送制御部１１は、記憶部１２に送受信部２０のＩＰアドレスが格納されているかどうか確認し、ＩＰアドレスが格納されていた場合には、そのＩＰアドレスに関連付けて記憶されている輻輳制御変数の参考値を読み出して、通信に使用する輻輳制御変数の値の初期化に利用する。一方、ＩＰアドレスが格納されていなかった場合には、伝送制御部１１は輻輳制御変数を所定値に初期化する。続いて、通信が実行される。コネクションを終了する場合に、図３によって示される処理が実行される。
【００７３】
以下、図３を用いて、データ通信装置１の動作について詳細に説明する。伝送制御部１１は、時変性に関する情報を記憶部１２から読み出し、その情報に基づいて、ネットワーク特性が時変性であるかどうか判定する（ステップＳ３０１）。ネットワーク特性が時変性であった場合には、伝送制御部１１は、図２のステップ２０６における動作と同様に、輻輳制御変数の値を、過去の通信結果に基づく値以外の所定値に設定する（ステップＳ３０２）。この所定値は、その変数として有効な最大値である。続いて処理はステップＳ３０４へ進む。
【００７４】
ステップＳ３０１において、ネットワーク特性が時変性でなかった（時不変性であった）と判定した場合、伝送制御部１１は、現在の輻輳制御変数の値が信頼できるかどうか判定する（ステップＳ３０３）。この信頼性判定は、例えば、輻輳回避モードに遷移していたかどうか、あるいは輻輳制御変数の値が所定値以外の値に更新されているかどうかといった判定である。帯域幅遅延積ＢＤＰの推定値が計算されていない場合には、送信バッファサイズやｒｗｎｄをＢＤＰの推定値として、ｃｗｎｄがこのＢＤＰの推定値に比して十分に増大しているかどうかを信頼性判定に加えることもできる。
【００７５】
輻輳回避モードに遷移しなかった、または輻輳制御変数の値が所定値以外の値に更新されなかった、あるいはｃｗｎｄがＢＤＰの推定値に比して十分に増大していた場合には、輻輳制御変数の値が信頼できると判定され、ステップＳ３０４へ進む。それ以外の場合には、輻輳制御変数の値が信頼できないと判定され、処理が終了する。ステップＳ３０４において、伝送制御部１１は現在の輻輳制御変数の値を輻輳制御変数の参考値として、通信相手の送受信部２０のＩＰアドレスと共に記憶部１２に格納し、処理が終了する。
【００７６】
上述した動作において、ステップＳ３０２経由で記憶部１２が記憶した参考値は過去の通信結果に基づく値ではなく、所定値である。次の通信時にこの参考値を用いて輻輳制御変数の初期化が行われた場合にも、輻輳制御変数の値が、過去の通信結果に依存しない所定値に設定される。したがって、伝送制御部１１は、コネクションの開始の際に記憶部１２によって記憶された参考値を利用する場合に、直前の通信におけるネットワーク特性が時変性であれば、過去の通信結果に依存しない所定値で輻輳制御変数を初期化することになる。一方、直前の通信におけるネットワーク特性が時不変性であれば、ステップＳ３０３経由で記憶部１２に記録するので、過去の通信結果に基づく値で輻輳制御変数を初期化することになる。なお、データ通信装置１が、上述した動作と共に、図２で示される動作を行うようにしてもよい。
【００７７】
次に、データ通信装置１の輻輳制御変数の設定に関する第３の動作例について説明する。図４は、コネクションが確立し、データ通信を実行している間に、輻輳制御変数の値を、過去の通信結果に基づいた値以外の値に設定する動作を示すフローチャートである。伝送制御部１１と伝送制御部２１との間でコネクションが確立し、データ通信が実行されている場合に、伝送制御部２１が、ネットワーク特性が変化したことを検出したとする。この検出は、無線端末５が無線通信路のデータリンク層の情報を取得し、その情報をデータ通信装置２へ通知することにより実現することができる。
【００７８】
ネットワーク特性が変化し、そのネットワークに対して適切な帯域幅かＲＴＴのどちらかが増大した場合には、帯域幅遅延積が増大したことになる。伝送制御部２１は、伝送制御部１１に上記の情報を通知するためのネットワーク特性情報を生成し、送受信部２０を介して送信する。このネットワーク特性情報は、ネットワーク特性が時変性であるかどうかを示す情報を含んでいればよく、さらにそのネットワークの新しい帯域幅や新しい帯域幅遅延積の情報を含んでいてもよい。この場合に伝送制御部１１は、図４によって示される動作を実行する。
【００７９】
伝送制御部１１は、送受信部１０を介して、データ通信装置２によって送信されたネットワーク特性情報を受信する（ステップＳ４０１）。続いて、伝送制御部１１は、ネットワーク特性情報に基づいて、ネットワーク特性が時変性であるかどうか判定する（ステップＳ４０２）。ネットワーク特性が時変性であった場合にはステップＳ４０３へ進み、時変性でなかった場合にはステップＳ４０４へ進む。ステップＳ４０３において、伝送制御部１１は、図２のステップ２０６における動作と同様に、輻輳制御変数の値を、過去の通信結果に基づく値以外の所定値に設定し、処理が終了する。また、ステップＳ４０４において、伝送制御部１１は、現在の輻輳制御変数の値を輻輳制御変数の参考値として、通信相手の送受信部２０のＩＰアドレスと共に記憶部１２に格納し、処理が終了する。
【００８０】
上記のステップＳ４０３の処理においては、輻輳制御変数であるスロースタートしきい値ｓｓｔｈｒｅｓｈと輻輳ウィンドウの最大値ｍａｘ＿ｃｗｎｄが、過去の通信結果に基づく値以外の所定値に設定される。これにより、ネットワーク特性が変化した場合、特に、帯域幅遅延積が増大した場合に、輻輳ウィンドウｃｗｎｄの増大を抑制していた輻輳制御変数の値を再設定し、ｃｗｎｄをさらに増大させることができる。
【００８１】
次に、データ通信装置１の輻輳制御変数の設定に関する第４の動作例について説明する。図５は、データ通信装置１の輻輳制御変数の設定に関する動作を示すフローチャートである。ステップＳ５０１〜５０３の動作は、図２におけるステップＳ２０１〜Ｓ２０３の動作と同様であるので、説明を省略する。ステップＳ５０３において、伝送制御部１１によって、ネットワーク特性が時変性であると判定された場合、処理はステップＳ５０４に進む。また、ネットワーク特性が時変性でない（時不変性である）と判定された場合には、処理はステップＳ５０６へ進む。
【００８２】
ステップＳ５０４において、伝送制御部１１は、図示せぬ内部のタイマーを起動する。このタイマーは、起動してから一定時間が経過した時点においてタイムアウトする。タイマーの起動からタイムアウトまでのインターバル時間は、例えば５秒といった固定値でもよいし、あるいはネットワーク特性情報に周期情報が格納されている場合には、その周期情報に基づいた値であってもよい。続いて、伝送制御部１１は輻輳制御変数の値を、過去の通信結果に基づく値以外の所定値に設定し（ステップＳ５０５）、処理が終了する。ステップＳ５０６〜ステップＳ５０７の処理は図２のステップＳ２０４〜ステップＳ２０５の処理と同様であるので、説明を省略する。
【００８３】
伝送制御部１１のタイマーがタイムアウトした場合、割り込みが発生し、図６に示される動作が実行される。この場合、伝送制御部１１は輻輳制御変数の値を、過去の通信結果に基づく値以外の所定値に設定する（ステップＳ６０１）。伝送制御部１１のタイマーはインターバルタイマーであり、起動後、一定時間ごとにタイムアウトし、伝送制御部１１はステップＳ６０１の処理を実行する。
【００８４】
上述したように、本動作例において伝送制御部１１は、送受信部１０を介してネットワーク特性情報を受信した場合に、タイマーを起動し、輻輳制御変数の値を、過去の通信結果に基づく値以外の所定値に一定時間おきに設定する。これにより、ネットワーク特性が変化し、特に、帯域幅遅延積が増大した場合に、輻輳ウィンドウｃｗｎｄの増大を抑制していた変数を再設定し、ｃｗｎｄをさらに増大させることができる。
【００８５】
なお、上述した実施形態において、輻輳制御変数を初期化する場合に、参考値を用いて計算によって導かれる値を用いて輻輳制御変数を初期化してもよい。例えば、過去の通信結果に基づいて更新されたスロースタートしきい値ｓｓｔｈｒｅｓｈを参考値として記憶したり、または過去の通信結果に基づいて更新された輻輳ウィンドウｃｗｎｄをその最大値ｍａｘ＿ｃｗｎｄの参考値として記憶すれば、次回の通信で輻輳を避けられるようになることが期待できる。
【００８６】
なお、上述したデータ通信装置１の機能をデータ通信装置２が有していてもよい。また、上述した実施形態による無線端末５およびデータ通信装置２を一体の装置として構成し、その装置をＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）等の規格によりＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）やＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｃｅ）等に接続してもよいし、その装置がＰＣやＰＤＡ等に内蔵されていてもよい。
【００８７】
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成はこれらの実施の形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。例えば、上述した実施形態におけるデータ通信装置１は、その動作および機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませ、実行させることにより実現してもよい。
【００８８】
ここで、「コンピュータ」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【００８９】
また、上述したプログラムは、このプログラムを記憶装置等に格納したコンピュータから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。また、上述したプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能をコンピュータにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【図面の簡単な説明】
【００９０】
【図１】本発明の一実施形態によるデータ通信装置を備えた通信システムの構成を示すブロック図である。
【図２】同実施形態によるデータ通信装置の第１の動作例を示すフローチャートである。
【図３】同実施形態によるデータ通信装置の第２の動作例を示すフローチャートである。
【図４】同実施形態によるデータ通信装置の第３の動作例を示すフローチャートである。
【図５】同実施形態によるデータ通信装置の第４の動作例を示すフローチャートである。
【図６】同実施形態によるデータ通信装置のタイマーがタイムアウトした場合の動作を示すフローチャートである。
【符号の説明】
【００９１】
１，２・・・データ通信装置、３・・・ネットワーク、４・・・無線基地局、５・・・無線端末、１０，２０・・・送受信部、１１，２１・・・伝送制御部、１２，２２・・・記憶部。
【図１】
2006005833.tif 000003
【図２】
2006005833.tif 000004
【図３】
2006005833.tif 000005
【図４】
2006005833.tif 000006
【図５】
2006005833.tif 000007
【図６】
2006005833.tif 000008