JP2006005833A - データ通信装置、データ通信方法、データ通信プログラムおよび記録媒体 - Google Patents
データ通信装置、データ通信方法、データ通信プログラムおよび記録媒体 Download PDFInfo
- Publication number
- JP2006005833A JP2006005833A JP2004182272A JP2004182272A JP2006005833A JP 2006005833 A JP2006005833 A JP 2006005833A JP 2004182272 A JP2004182272 A JP 2004182272A JP 2004182272 A JP2004182272 A JP 2004182272A JP 2006005833 A JP2006005833 A JP 2006005833A
- Authority
- JP
- Japan
- Prior art keywords
- value
- network
- data communication
- congestion control
- time
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Abstract
【課題】 ネットワーク特性が変動する通信路が通信径路中に含まれている場合でも、スループットを従来よりも増加させることができるデータ通信装置、データ通信方法、データ通信プログラムおよび記録媒体を提供する。
【解決手段】 送受信部10は、データ通信装置2によって送信されたSYNパケットを受信し、伝送制御部11へ出力する。伝送制御部11は、受信したSYNパケット内にネットワーク特性情報が格納されていた場合に、ネットワーク特性情報に基づいて、ネットワーク特性が時変性であるかどうか判定する。ネットワーク特性が時変性であった場合、伝送制御部11は、輻輳制御変数の値を、過去の通信結果に基づく値以外の所定値に設定する。
【選択図】 図1
Description
本発明は、パケット交換網を経由して輻輳制御を行うデータ通信装置に関し、特に、通信径路中に帯域幅や、遅延、誤り率が変動する通信路を含む場合のスループットの改善を図ったデータ通信装置に関する。また、本発明は、データ通信方法、データ通信プログラム、およびこのデータ通信プログラムが記録された記録媒体にも関する。
インターネットにおいては、ネットワークのトラヒックが増加することにより、有効な通信を行うことができなくなる輻輳状態が発生することがある。輻輳状態にならないように通信を制御する技術として輻輳制御が知られている。従来、インターネット通信において輻輳制御を行うプロトコルとしてTCP(Transmission Control Protocol)が知られている。TCPはRFC793、RFC1122、RFC2581、RFC2582等の文書に記載されており、その改良のための研究が続けられている。TCPはOSI参照モデルにおいてトランスポート層に位置し、ストリーム型通信の実現、ポート番号で指定されるポート間の通信、コネクションの制御、誤り制御やフロー制御(送信側と受信側との間で行う通信データ量の制御)等の品質の制御、および輻輳制御を行っている。以下、上記のTCPの機能について説明する。
ネットワーク層に位置するIP(Internet Protocol)は、IPアドレスで指定されるホスト間の通信を行うが、TCPのコネクションは、IPアドレスに加えて、ポート番号で指定される二つのTCPポート間で確立される。
TCPの誤り制御は、ARQ(自動再送要求)方式によって実現されている。ARQ方式においては、送信側から受信側へデータのセグメントが送信され、これを受信した受信側から送信側へACK(Acknowledge:確認応答、肯定応答)が返送される。ACKが返送されないセグメントがあった場合には、送信側からセグメントが再送される。送信側は、スループットを大きくするために、あるウィンドウサイズ分のセグメントを送信しようとする。この方式はスライディングウィンドウフロー制御と呼ばれており、ウィンドウサイズ分の送信が許可され、それを受信した受信側からACKが返送されると、ウィンドウのシーケンス番号がスライドしていく。送信側におけるウィンドウはCongestion window(cwnd:輻輳ウィンドウ)と呼ばれ、輻輳制御にも利用される。
TCPのフロー制御においては、受信側から送信側へ返送されるACKの中に、Receiver window(rwnd)を通知する情報を含めている。このrwndは、受信側が受け取ることのできるデータ量を表しており、rwndとして0を送信側に通知すれば送信を停止させることができる。rwndは、受信側に用意されているバッファ量に応じて決まる。送信側はrwndとcwndとのうち、小さい方を超えないように送信を抑制する。
スライディングウィンドウフロー制御は、TCPに限らず、HDLC手順から派生したデータリンク層プロトコルにおいて、よく用いられている。スライディングウィンドウフロー制御の目的は、ARQによる再送制御を行うことにより、受信側のバッファが不足する事態を避けると共に、スループットを向上させることにある。インターネットでは複数のデータリンクを経由して通信が行われるため、特定のデータリンク層に依存せずに、トランスポート層においてフロー制御を行う必要がある。フロー制御と輻輳制御において、トランスポート層かデータリンク層かという違いは機能上の違いには現れず、それらの制御が実行される通信路の範囲が異なるに過ぎない。
以下、TCPの輻輳制御について説明する。輻輳制御においては、ネットワークの輻輳崩壊を避けるために、スロースタートと輻輳回避動作とが行われる。スロースタートにおいては、送信の開始時にcwndの値を小さな値に設定しておき、受信側からACKが返送されるごとにcwndを指数関数状に増加させる。例えば、ACKが1個返送されるたびにcwndは1増加する。つまり、1個のACKに対して2個のセグメントが送信可能となる。
輻輳回避は、cwndを少しずつ増加させる動作である。輻輳回避においては、ACKが1個返送されるたびにcwndは1/cwnd増加する。つまり、cwnd個のACKが返送されると、現在のcwndに対してcwnd+1が次のcwndの値となる。cwndがssthresh(スロースタートしきい値)未満であればスロースタートが行われ、cwndがssthresh以上であれば輻輳回避が行われる。フロー制御が受信側に対する配慮であるのに対し、輻輳制御はネットワークに対する配慮である。
TCPの最大スループットは、パケットの誤りや紛失を無視すれば、ウィンドウサイズ/RTTで表される。ここで、RTT(Round Trip Time:遅延)は、データを送信してから受信側のACKが返ってくるまでの時間であり、ウィンドウサイズは、通信が許容する最大の値であるが、それらがどのような値であるのかを事前に仮定しておくことはできない。受信側は、通常の通信が許容するウィンドウサイズ以上のrwndを用意しておき、送信側はcwndをそのウィンドウサイズまで増加させ、その状態を持続させることが重要となる。
TCPのスループットを増加させるためには、帯域幅(Bandwidth)と遅延(RTT)との積である帯域幅遅延積(Bandwidth Delay Product:BDP)以上のウィンドウサイズを実現するべきである。つまり、受信側がrwndをBDP以上に設定し、送信側がcwndをBDP以上にまで増加させ、その状態が持続すれば、スループットが大きくなる。通信において許容される最大のウィンドウサイズは不明であるが、帯域幅やRTTは想定がしやすく、また、それらの測定をし、経験値を得た後であれば、その経験値を用いることもできる。
輻輳制御を実現するためには、輻輳の検出と送信制御とを組み合わせればよい。つまり、小さな送信速度で送信を開始してから徐々に速度を上げていき、輻輳が発生したこと、もしくは発生しそうであることを検出した場合に送信速度を抑制すればよい。TCPにおいては、ある程度の時間が経過してもACKが返送されないことを検出したり、あるいは、輻輳状態を通知するためのECN(Explicit Congestion Notification)ビットをTCPヘッダから検出することによって輻輳を検出することができる。
TCPにおいては、スライディングウィンドウフロー制御におけるウィンドウサイズを変化させることにより、スループットの制御を実現している。すなわち、cwndを小さくすることによってスループットを小さくし、cwndを大きくすることによってスループットを大きくする。通信径路の帯域幅遅延積程度のウィンドウサイズが設定されると最大スループットが達成されるが、それよりもウィンドウサイズが大きくなるとスループットは飽和し、やがて輻輳を起こすようになる。
TCPの輻輳回避動作においては、少しずつcwndを増加させていき、ACKが返ってこない等の理由により輻輳が発生したと推定された場合にcwndを小さくするという動作が繰り返される。しかし、cwndをBDP以上に保つことがスループットの改善につながるため、輻輳を起こさずにできるだけ大きなウィンドウサイズを保つことが重要となる。しかし、TCPにおいては、BDPの値がいくつであるのかを事前に知ることができないため、cwndの増加と減少との試行が行われる。
BSD系のTCP実装においては、kernel routing tableにssthreshやBDPが参考値として記憶され、再度のTCPコネクションの確立時にそれらの参考値を利用することができる。これらの情報は、struct_metricsの中のrmx_ssthresh、rmx_recvpipe、rmx_sendpipeといったフィールドに格納される。
rmx_ssthreshは、スロースタート状態から輻輳回避状態へ遷移するためのしきい値であり、再度同じルートでコネクションが開かれた場合にssthreshとして利用することができる。rmx_recvpipeは、受信における帯域幅遅延積を表しており、受信に使用するバッファサイズを決める際に利用することができる。rmx_sendpipeは、送信における帯域幅遅延積を表しており、送信に使用するバッファサイズを決める際に利用することができる。
なお、コネクションが閉じる際に、rmx_ssthreshが0ではなく、かつ現状のssthreshが、バッファサイズから定まる値よりも小さい場合にのみ、rmx_ssthreshが更新される。しかも、rmx_ssthreshの新しい値と古い値との平均を求めてからその値が記憶されるため、rmx_ssthreshは穏やかに変化することになる。
BSD系のTCP実装においては、通信を行った結果、輻輳を経験してssthreshが減少している場合に、次回以降の通信においてssthreshを適切な大きさに縮小した状態で通信を開始することができるように、記録されたrmx_ssthreshが利用されている。ただし、デフォルト状態ではrmx_ssthreshは0に設定されており、明示的にrmx_ssthreshが設定された場合にのみ、rmx_ssthreshの利用と更新とが行われるようになっている。
つまり、この機構は、帯域幅が細く、輻輳が問題となるゲートウェイを経由するクライアントホストに対する対策と考えられる。ただし、LinuxのTCP実装(例えばkernel 2.4.18)においては、このような輻輳制御変数の参考値の記憶とその参考値による初期化の機構は、任意のホストに対して随時実行されている。なお、TCPに関しては下記の文献が開示している。
特開平7−67088号公報
従来の輻輳制御においては、以下のような問題点が発生していた。輻輳を経験すると、ssthreshはその時点でのcwndの半分に縮小される。スロースタート中にcwndが小さな値のときに、通信路の品質が一時的に悪化し、ssthreshがcwndの値の半分の値に縮小されると、この値がkernel routing tableに参考値として記憶され、以後のコネクションにおいては、この参考値に基づいて、ssthreshが小さな値に初期化される。このため、以後のコネクションにおいて通信路の品質が改善していたとしても、TCPにおいては早期に輻輳回避動作に遷移して、cwndが小さい値の状態が長く続き、通信路のBDPまでcwndを増加させるのに非常に長い時間がかかるか、またはBDPまでcwndを増加させる前に通信が終了してしまうという問題点があった。
インターネットはベストエフォート型のパケット交換網と考えられるが、ネットワーク特性が変動する無線通信路を経由する通信が行われる場合には、ベストエフォート型としての特徴がより顕著となる。この場合には、時々刻々と無線通信路の品質が変化し、パケットが遅延したり、パケットが紛失する確率は有線通信路の場合よりも高い。このため、TCPによって輻輳と判断され、cwndとssthreshが縮小されることが多くなるが、その場合でも、それ以降の通信においてずっと品質が悪いままであるのではなく、品質が良好な状態に変化していることもしばしばある。
無線通信路の品質が改善された場合に、輻輳制御変数であるssthreshが増大することもあるが、一旦急激に減少したssthreshを増大させるためには、品質の良い通信を長時間にわたって行う必要があり、実際にはスループットの低い状態が長時間続いてしまう。このように、記憶された参考値に基づいて、輻輳制御変数(例えばssthresh)を初期化し、輻輳を経験した通信路のスループットを抑制することは、無線通信路の性質に適合せず、無線通信路の品質が改善された場合に、その性能を十分に生かすことができないという問題点があった。
本発明は、上述した問題点に鑑みてなされたものであって、ネットワーク特性が変動する通信路が通信径路中に含まれている場合でも、スループットを従来よりも増加させることができるデータ通信装置、データ通信方法、データ通信プログラムおよび記録媒体を提供することを目的とする。
本発明は上記の課題を解決するためになされたもので、請求項1に記載の発明は、ネットワークを介して外部装置とデータ通信を行う送受信手段と、輻輳制御に用いられる輻輳制御変数の値を記憶する記憶手段と、過去の通信結果に基づいて前記輻輳制御変数の値を設定し、該輻輳制御変数の値に基づいて、前記データ通信における輻輳制御を行うと共に、前記データ通信の終了時に前記輻輳制御変数の値を前記記憶手段に格納する通信制御手段と、前記ネットワークの時間的な変動の特性に関するネットワーク特性情報が前記外部装置から受信された場合に、該ネットワーク特性情報に基づいて、前記ネットワークが時変性であるかどうか判定する判定手段とを具備し、前記通信制御手段は、前記判定手段によって、前記ネットワークが時変性であると判定された場合に、前記輻輳制御変数の値を、過去の通信結果に基づかない値に設定することを特徴とするデータ通信装置である。
過去の通信結果に基づかない値とは、過去の通信結果に依存しない値であって、所定の初期値である。また、過去の通信結果とは、このデータ通信装置と外部装置とが過去に行った通信の結果である。上記の、過去の通信結果に基づかない値は、その変数として取り得る最大値(計算機の内部表現で使用できる最大値)であればよい。もしくは、想定される帯域幅遅延積BDPの最大値を予め所定値として定めておいてもよい。例えば、ウィンドウサイズの最大値max_cwndをBDPの最大値に設定し、スロースタートしきい値ssthreshをBDPの最大値の半分に設定すればよい。BDPは帯域幅と遅延(RTT)との積であり、経由するネットワークが予め分かっている場合には、帯域幅と遅延とを推定することができる。また、帯域幅と遅延とを実際の測定により求め、それらの測定値に基づいてBDPを求めてもよい。
請求項2に記載の発明は、請求項1に記載のデータ通信装置において、前記判定手段は、コネクションの開始要求を示すコネクション開始要求情報と共に受信する前記ネットワーク特性情報に基づいて、前記ネットワークが時変性であるかどうか判定することを特徴とする。
請求項3に記載の発明は、請求項1に記載のデータ通信装置において、前記判定手段は、前記外部装置とのコネクションが終了する場合に、前記ネットワークが時変性であるかどうか判定し、前記通信制御手段は、前記判定手段によって、前記ネットワークが時変性であると判定された場合に、前記設定した値を前記輻輳制御変数の値として、前記記憶手段に格納することを特徴とする。
請求項4に記載の発明は、請求項1に記載のデータ通信装置において、前記判定手段は、前記ネットワーク特性情報を前記外部装置から受信するごとに、前記ネットワーク特性情報に基づいて、前記ネットワークが時変性であるかどうか判定することを特徴とする。
請求項5に記載の発明は、請求項1に記載のデータ通信装置において、前記通信制御手段は、前記判定手段によって、前記ネットワークが時変性であると判定された場合に、一定時間ごとに、前記輻輳制御変数の値を、過去の通信結果に基づかない値に設定することを特徴とする。
請求項6に記載の発明は、請求項1〜請求項5のいずれかの項に記載のデータ通信装置において、前記過去の通信結果に基づかない値は、前記記憶手段によって記憶されている前記輻輳制御変数の値よりも大きいことを特徴とする。
請求項7に記載の発明は、ネットワークを介した外部装置とのデータ通信時に、輻輳制御変数の値に基づいて輻輳制御を行い、データ通信終了時に、前記輻輳制御変数の値を記憶するデータ通信方法において、前記ネットワークの時間的な変動の特性に関するネットワーク特性情報を前記外部装置から受信する第1のステップと、受信した前記ネットワーク特性情報に基づいて、前記ネットワークが時変性であるかどうか判定する第2のステップと、前記ネットワークが時変性であると判定した場合に、前記輻輳制御変数の値を、過去の通信結果に基づかない値に設定する第3のステップとを具備することを特徴とするデータ通信方法である。
請求項8に記載の発明は、請求項7に記載のデータ通信方法において、前記第2のステップは、コネクションの開始要求を示すコネクション開始要求情報と共に前記外部装置から受信する前記ネットワーク特性情報に基づいて判定することを特徴とする。
請求項9に記載の発明は、請求項7に記載のデータ通信方法において、前記第2のステップは、前記外部装置とのコネクションが終了する場合に、前記ネットワークが時変性であるかどうか判定し、前記第3のステップは、前記ネットワークが時変性であると判定した場合に、前記設定した値を前記輻輳制御変数の値として、記憶手段に格納することを特徴とする。
請求項10に記載の発明は、請求項7に記載のデータ通信方法において、前記第2のステップは、前記ネットワーク特性情報を前記外部装置から受信するごとに、前記ネットワーク特性情報に基づいて、前記ネットワークが時変性であるかどうか判定することを特徴とする。
請求項11に記載の発明は、請求項7に記載のデータ通信方法において、前記第3のステップは、前記ネットワークが時変性であると判定した場合に、一定時間ごとに、前記輻輳制御変数の値を、過去の通信結果に基づかない値に設定することを特徴とする。
請求項12に記載の発明は、請求項7〜請求項11のいずれかの項に記載のデータ通信方法において、前記過去の通信結果に基づかない値は、前記記憶手段によって記憶されている前記輻輳制御変数の値よりも大きいことを特徴とする。
請求項13に記載の発明は、ネットワークを介した外部装置とのデータ通信時に、輻輳制御変数の値に基づいて輻輳制御を行い、データ通信終了時に、前記輻輳制御変数の値を記憶するデータ通信処理をコンピュータに実行させるためのデータ通信プログラムにおいて、前記ネットワークの時間的な変動の特性に関するネットワーク特性情報を前記外部装置から受信する第1のステップと、受信した前記ネットワーク特性情報に基づいて、前記ネットワークが時変性であるかどうか判定する第2のステップと、前記ネットワークが時変性であると判定した場合に、前記輻輳制御変数の値を、過去の通信結果に基づかない値に設定する第3のステップとをコンピュータに実行させることを特徴とするデータ通信プログラムである。
請求項14に記載の発明は、請求項13に記載のデータ通信プログラムにおいて、前記第2のステップは、コネクションの開始要求を示すコネクション開始要求情報と共に前記外部装置から受信する前記ネットワーク特性情報に基づいて判定することを特徴とする。
請求項15に記載の発明は、請求項13に記載のデータ通信プログラムにおいて、前記第2のステップは、前記外部装置とのコネクションが終了する場合に、前記ネットワークが時変性であるかどうか判定し、前記第3のステップは、前記ネットワークが時変性であると判定した場合に、前記設定した値を前記輻輳制御変数の値として、記憶手段に格納することを特徴とする。
請求項16に記載の発明は、請求項13に記載のデータ通信プログラムにおいて、前記第2のステップは、前記ネットワーク特性情報を前記外部装置から受信するごとに、前記ネットワーク特性情報に基づいて、前記ネットワークが時変性であるかどうか判定することを特徴とする。
請求項17に記載の発明は、請求項13に記載のデータ通信プログラムにおいて、前記第3のステップは、前記ネットワークが時変性であると判定した場合に、一定時間ごとに、前記輻輳制御変数の値を、過去の通信結果に基づかない値に設定することを特徴とする。
請求項18に記載の発明は、請求項13〜請求項17のいずれかの項に記載のデータ通信プログラムにおいて、前記過去の通信結果に基づかない値は、前記記憶手段によって記憶されている前記輻輳制御変数の値よりも大きいことを特徴とする。
請求項19に記載の発明は、請求項13〜請求項18のいずれかの項に記載のデータ通信プログラムが記録されたコンピュータ読み取り可能な記録媒体である。
本発明によれば、ネットワーク特性が変動する通信路が通信径路中に含まれている場合でも、スループットを従来よりも増加させることができるという効果が得られる。
以下、図面を参照し、本発明を実施するための最良の形態について説明する。図1は、本発明の一実施形態によるデータ通信装置を備えた通信システムの構成を示すブロック図である。以下、図中の各構成について説明する。この通信システムは、データ通信装置1、データ通信装置2、インターネット3(パケット交換ネットワーク)、無線基地局4、および無線端末5を備えている。
データ通信装置1は、インターネット3に接続されており、コンテンツを配信するサーバとしての機能を有する。データ通信装置2は、データ通信装置1からコンテンツを受信するクライアント端末としての機能を有する。インターネット3においては、TCP/IPに基づいて、複数のネットワークを介した通信が行われる。インターネット3には、無線基地局4が接続されている。無線端末5は、例えば携帯電話であるが、無線通信を行う機能を有していれば他の装置でもよい。無線端末5にはデータ通信装置2が接続され、無線端末5はゲートウェイとして機能している。無線基地局4と無線端末5との間には無線通信路が形成されている。
データ通信装置1において、送受信部10は、IEEE802.3で規定される規格によりインターネット3と接続し、データの送受信を行う。送受信部10は物理層/データリンク層を用い、ネットワーク層にIPを用いて、パケット交換ネットワークを経由する通信を実現するハードウェアおよびソフトウェアである。送受信部10は、物理層/データリンク層を用いた通信を行う手段としてモデムであってもよいし、携帯電話を利用するデータ通信モデムであってもよい。伝送制御部11は、TCPに基づいて、データの送受信を制御する。記憶部12は、輻輳制御用の輻輳制御変数の参考値等の情報や、過去に通信を行った相手のIPアドレスに関する情報、コンテンツデータ等を記憶する。記憶部12は、例えばメモリによって構成される。
データ通信装置2において、送受信部20は、IEEE802.3で規定される規格により無線端末5と接続し、データの送受信を行う。伝送制御部21は、TCPに基づいて、データの送受信を制御する。記憶部22は、ネットワークの時間的な変動の特性(時変性または時不変性)を示すネットワーク特性情報等を記憶する。記憶部22は、例えばメモリによって構成される。
送受信部10および送受信部20は、ネットワークインターフェースカード(NIC)とそのデバイスドライバおよびインターネットプロトコル(IP)を実行するソフトウェアとを含む。送受信部10および送受信部20は、ネットワーク層を含まずに特定のパケット交換ネットワークの中で閉じた通信を行うハードウェアおよびソフトウェアであってもよい。ただし、通信を行うために送受信部10および送受信部20は固有のアドレスを有しており、相手のアドレスに宛ててパケットの送信を行う。
送受信部10と送受信部20がネットワーク層としてIPを含む場合には、IPアドレスが固有のアドレスに相当し、ネットワーク層を含まずに、物理層/データリンク層としてIEEE802.3による通信を行う場合には、MACアドレスが固有のアドレスに相当する。送受信部10および送受信部20はTCPに限らず輻輳制御を実行するものであればよく、また、トランスポート層に限らず、データリンク層において輻輳制御を実行するハードウェアおよびソフトウェアであってもよい。
輻輳制御変数とは、輻輳制御の実行の際に、伝送制御部21によって使用される変数である。例えば、TCPにおけるスロースタートしきい値ssthreshが輻輳制御変数である。また、送信時のウィンドウサイズcwndの最大値max_cwndを輻輳制御変数に含めてもよい。通常、ssthreshはウィンドウサイズの最大値max_cwndの半分の値に設定される。また、最大値max_cwndは帯域幅遅延積BDP(帯域幅とRTTとの積)に等しくすべきであり、帯域幅およびRTTを輻輳制御変数としてもよい。
輻輳制御変数であるcwndとssthreshは、通信が実行されると、過去の通信結果に基づいて値が更新されていく。特に、輻輳が発生すると、ssthreshはその時点のcwndの半分の値に縮小される。一方、輻輳が発生せずに、cwndがmax_cwndに達するまで増加することもある。過去の通信結果に基づくこれらの値は、次回の通信における輻輳制御変数の値として利用するための参考値として、記憶部12によって記憶される。輻輳制御変数の参考値は、上記の輻輳制御変数を初期化する際に使用される初期値である。
ネットワーク特性情報は、少なくとも時変性の有無を含むものであり、データ通信装置2がデータ通信装置1に対して、使用するネットワークの特性を通知するための情報である。時変性の有無だけを通知するのであれば、1ビットのデータで足りる。その他の情報を通知する必要があるならば、その識別値とそのデータの長さとそのデータ値とを組にして通知する。例えば、ネットワークの誤り率等の品質に関する情報や、帯域幅に関する情報(帯域幅の平均値や変動値等)を通知してもよい。これらの情報を通知すれば、ネットワークが時変性かどうかを通知することができる。さらに、ネットワーク品質の時変動の周期のような時間に関する情報を通知してもよい。伝送制御部21は通信中に測定を行うことにより、これらのネットワーク特性に関する情報を取得することができる。
ネットワーク特性情報は、記憶部22によって予め記憶されている。この情報は、無線基地局4と無線端末5による無線通信路を経由することが既知であれば、その特性に従って設定されることが好ましいが、少なくとも送受信部20がどのようなネットワークに接続されているかに応じて、ネットワーク特性情報を設定すればよい。
なお、上記のデータ通信装置1およびデータ通信装置2の構成に関しては、輻輳制御に関係する構成のみを図示および説明し、ユーザによって操作される操作キーや、各装置において動作するアプリケーションを制御する制御手段等は図示および説明を省略している。
次に、本実施形態の動作について説明する。データ通信装置2がデータ通信装置1からコンテンツデータ等を受信するために、コネクションの確立を行う。この場合、伝送制御部21は伝送制御部11に対してコネクションの確立を要求する。その際に、伝送制御部21は、記憶部22から通知するべきネットワーク特性情報を読み出す。伝送制御部21によって送信されるコネクション開始要求(SYN)パケットのTCPヘッダ内には、オプションを格納する領域がある。伝送制御部21は、この領域にネットワーク特性情報を格納することにより、ネットワーク特性情報を送信する。
あるいは、SYNパケットのデータ部分を用いてネットワーク特性情報を送信してもよい。ただし、これらの拡張を理解しないTCPに対して、これらの拡張が問題を起こさないような配慮が必要である。TCPヘッダ内にオプションを格納する場合には、その種別を1バイトのデータで指定できるので、既存のTCPは新しい拡張を無視することができる。コネクション開始要求であることを示すため、TCPヘッダ内のSYNフラグが1となる。
伝送制御部21は、ネットワーク特性情報を添付したSYNパケットを送受信部20へ出力する。送受信部20はSYNパケットを無線端末5へ送信する。このSYNパケットは無線端末5から無線通信によって無線基地局4へ送信され、無線基地局4からインターネット3を介してデータ通信装置1へ送信される。データ通信装置1の送受信部10はSYNパケットを受信し、伝送制御部11へ出力する。伝送制御部11は、そのパケットがTCPのSYNパケットであることを認識し、TCPヘッダ内のACK(肯定応答、確認応答)フラグおよびSYNフラグを1としたパケット(SYN+ACK)を作成してデータ通信装置2へ送信する。SYNパケットとは逆向きに、SYN+ACKパケットがデータ通信装置2へ配送される。
TCPによるコネクション確立は3wayハンドシェークと呼ばれ、データ通信装置2がSYNパケットを送信し、続いてそれを受信したデータ通信装置1がSYN+ACKパケットを送信し、続いてそれを受信したデータ通信装置2がACKを送信することによって、コネクションが確立する。このとき、伝送制御部11は、データ通信装置2へSYN+ACKパケットを送信してから、データ通信装置1からのACKパケットを受信するまでの時間をRTTとして測定する。RTTの測定値は、RTO(Retransmit Timeout)タイマー値を決める際に利用される。
伝送制御部11は、データ通信装置2からのSYNパケットを取得した場合に、SYNパケットの中にネットワーク特性情報が格納されているかどうか判定し、格納されていた場合には、ネットワークの時変性に関する情報が格納されているかどうか判定する。もし、ネットワークの時変性に関する情報が格納されており、その情報に基づいて、ネットワークが時変性であると判定した場合には、伝送制御部11は、記憶部12に輻輳制御変数の参考値が記憶されていたとしても、それを利用せず、輻輳制御変数であるcwndの最大値max_cwndを所定値に設定し、スロースタートしきい値ssthreshも所定値に設定する。以上の動作によって、伝送制御部11は、ネットワークが時変性である場合には、輻輳制御変数の値を、過去の通信結果に基づく参考値以外の所定値(過去の通信結果に基づかない値)に設定する。過去の通信結果に基づく参考値以外の所定値は、過去の通信結果に依存しない値であって、所定の初期値である。また、過去の通信結果とは、データ通信装置1とデータ通信装置2自体がデータ通信装置1−データ通信装置2間で実際に過去に行った通信の結果である。
以上の動作において設定される所定値に関しては、その変数として取り得る最大値(計算機の内部表現で使用できる最大値)を所定値として設定すればよい。もしくは、想定される帯域幅遅延積BDPの最大値を予め所定値として定めておいてもよい。なぜなら、cwndの値がBDPの値を超えても、スループットの改善を期待することはできないからである。例えば、max_cwndをBDPの最大値に設定し、ssthreshをBDPの最大値の半分に設定すればよい。また、所定値として、記憶部12に記憶されている参考値よりも大きな値を設定するようにしてもよい。
BDPは帯域幅と遅延(RTT)との積であり、経由するネットワークが予め分かっている場合には、帯域幅と遅延とを推定することができる。また、帯域幅と遅延とを実際の測定により求め、それらの測定値に基づいてBDPを求めてもよい。
SYNパケットの中にネットワークの時変性に関する情報が格納されており、その情報に基づいて、ネットワークが時不変性であると判定した場合には、伝送制御部11は記憶部12を参照して、送受信部20のIPアドレスに関する情報を検索する。記憶部12には、最近通信を行った相手のIPアドレスと、そのときの輻輳制御変数max_cwndとssthreshの参考値とが関連付けられて格納されている。送受信部20のIPアドレスが記憶部12に記憶されていた場合には、伝送制御部11は、そのIPアドレスに関連付けられた輻輳制御変数の参考値を読み出して、通信に使用する。一方、送受信部20のIPアドレスが記憶部12に記憶されていなかった場合には、伝送制御部11は輻輳制御変数を所定値に設定する。この場合の所定値は、従来においては単なる所定の初期値であったが、本実施形態においては、上述した、過去の通信結果に基づく参考値以外の所定値であるとする。
また、SYNパケットの中にネットワークの時変性に関する情報が格納されていなかった場合には、ネットワークが時不変性であった場合の動作と同様に扱う。
ネットワーク特性情報として、時変性に関する情報に加えて、帯域幅に関する情報も通知された場合には、伝送制御部11は、3wayハンドシェークを行った時にRTTを測定し、帯域幅とRTTとを掛け合わせることにより、BDPの値を取得する。これにより、max_cwndとssthershとを、予め想定されるBDPの値に基づいた所定値ではなく、実際のBDPの値に基づいた値に設定することができる。例えば、BDPの値をMSS(Maximum Segment Size)の倍数に丸めた値をmax_cwndに設定し、BDP/2の値をMSSの倍数に丸めた値をssthreshに設定することができる。このように、ネットワーク特性情報に基づいて、伝送制御部11が輻輳制御変数の値を操作してもよい。
データ通信装置1とデータ通信装置2との間のコネクションが確立され、通信が開始しした場合に、無線端末5と無線基地局4との間の無線通信路において通信品質が悪化し、誤り率が増大すると、伝送制御部11は通信レートを減少させて誤り率の増大を抑制しようとする。また、悪化した通信品質が回復すると、伝送制御部11は通信レートを増大させて、より大きなスループットを得ようとする。無線通信路の品質が悪化すると、伝送制御部11は輻輳を経験する確率が高くなる。
輻輳が発生した場合、伝送制御部11は、輻輳制御アルゴリズムにより、スロースタートしきい値ssthreshの値を輻輳ウィンドウcwndの半分の値に設定し、輻輳ウィンドウの最大値max_cwndをcwndの値に設定し、cwndを最低値に設定し、スロースタートを実行する。このように、過去の通信結果によって、cwndの増大が抑制されるように輻輳制御変数の学習が行われる。無線通信路においては、短時間のうちに通信品質が回復するため、過去の通信結果に基づいた値以外の値に輻輳制御変数を設定し直すことにより、無線通信路の性能をよりよく利用することができるようになる。
図2は、上述したデータ通信装置1の輻輳制御変数の設定に関する動作(第1の動作例)を示すフローチャートである。以下、図2を参照してこの動作を詳細に説明する。この動作は、データ通信装置2からデータ通信装置1に対してコネクション開始要求が送信された場合の動作を示している。送受信部10は、データ通信装置2によって送信されたSYNパケットを受信し、伝送制御部11へ出力する(ステップS201)。続いて、伝送制御部11は、受信したSYNパケット内にネットワーク特性のうち時変性に関する情報、すなわちネットワーク特性情報が格納されているかどうか判定する(ステップS202)。ネットワーク特性情報がSYNパケット内に格納されていた場合にはステップS203へ進み、格納されていなかった場合にはステップS204へ進む。
ステップS203において、伝送制御部11は、受信されたネットワーク特性情報に基づいて、ネットワーク特性が時変性であるかどうか判定する。ネットワーク特性が時変性であった場合にはステップS206へ進み、時変性でなかった場合(時不変性であった場合)にはステップS204へ進む。ステップS204において、伝送制御部11は、SYNパケットを送信したデータ通信装置2の送受信部20のIPアドレスが記憶部12に格納されているかどうか判定する。送受信部20のIPアドレスが記憶部12に格納されていた場合にはステップS205へ進み、格納されていなかった場合にはステップS206へ進む。
ステップS205において、伝送制御部11は、送受信部20のIPアドレスに関連付けられた輻輳制御変数の参考値を読み出して参照し、これから開始しようとするコネクションの輻輳制御変数の値として設定する。ステップS206において、伝送制御部11は、輻輳制御変数の値を、過去の通信結果に基づく値以外の所定値に設定する。ステップS205およびステップS206以降は、輻輳制御変数の設定に関する処理を終了し、SYN+ACKパケットの送信等の通常の動作を行う。
上述したように、本動作例において送受信部10は、ネットワーク特性情報を含むSYNパケットを、ネットワーク3を介してデータ通信装置2から受信し、そのSYNパケットを伝送制御部11へ出力する。伝送制御部11は、ネットワーク特性情報に基づいて、ネットワーク特性が時変性であるかどうか判定する。ネットワーク特性が時変性であった場合には、伝送制御部11は、輻輳制御変数の値を、過去の通信結果に基づく値以外の所定値に設定する。所定値として、その変数の取り得る最大値を設定することにより、ネットワーク特性が変動する通信路が通信径路中に含まれている場合でも、スループットを従来よりも増加させることができる。
次に、データ通信装置1の輻輳制御変数の設定に関する第2の動作例について説明する。図3は、コネクションの終了時に、輻輳制御変数の値を、過去の通信結果に基づいた値以外の値に設定する動作を示すフローチャートである。伝送制御部11は、データ通信装置1から受信されたSYNパケットに格納されていたネットワーク特性情報のうち、時変性に関する情報を記憶部12に格納する。伝送制御部21とコネクションを開いて、輻輳制御変数を初期化する場合には、以下の動作を行う。
すなわち、伝送制御部11は、記憶部12に送受信部20のIPアドレスが格納されているかどうか確認し、IPアドレスが格納されていた場合には、そのIPアドレスに関連付けて記憶されている輻輳制御変数の参考値を読み出して、通信に使用する輻輳制御変数の値の初期化に利用する。一方、IPアドレスが格納されていなかった場合には、伝送制御部11は輻輳制御変数を所定値に初期化する。続いて、通信が実行される。コネクションを終了する場合に、図3によって示される処理が実行される。
以下、図3を用いて、データ通信装置1の動作について詳細に説明する。伝送制御部11は、時変性に関する情報を記憶部12から読み出し、その情報に基づいて、ネットワーク特性が時変性であるかどうか判定する(ステップS301)。ネットワーク特性が時変性であった場合には、伝送制御部11は、図2のステップ206における動作と同様に、輻輳制御変数の値を、過去の通信結果に基づく値以外の所定値に設定する(ステップS302)。この所定値は、その変数として有効な最大値である。続いて処理はステップS304へ進む。
ステップS301において、ネットワーク特性が時変性でなかった(時不変性であった)と判定した場合、伝送制御部11は、現在の輻輳制御変数の値が信頼できるかどうか判定する(ステップS303)。この信頼性判定は、例えば、輻輳回避モードに遷移していたかどうか、あるいは輻輳制御変数の値が所定値以外の値に更新されているかどうかといった判定である。帯域幅遅延積BDPの推定値が計算されていない場合には、送信バッファサイズやrwndをBDPの推定値として、cwndがこのBDPの推定値に比して十分に増大しているかどうかを信頼性判定に加えることもできる。
輻輳回避モードに遷移しなかった、または輻輳制御変数の値が所定値以外の値に更新されなかった、あるいはcwndがBDPの推定値に比して十分に増大していた場合には、輻輳制御変数の値が信頼できると判定され、ステップS304へ進む。それ以外の場合には、輻輳制御変数の値が信頼できないと判定され、処理が終了する。ステップS304において、伝送制御部11は現在の輻輳制御変数の値を輻輳制御変数の参考値として、通信相手の送受信部20のIPアドレスと共に記憶部12に格納し、処理が終了する。
上述した動作において、ステップS302経由で記憶部12が記憶した参考値は過去の通信結果に基づく値ではなく、所定値である。次の通信時にこの参考値を用いて輻輳制御変数の初期化が行われた場合にも、輻輳制御変数の値が、過去の通信結果に依存しない所定値に設定される。したがって、伝送制御部11は、コネクションの開始の際に記憶部12によって記憶された参考値を利用する場合に、直前の通信におけるネットワーク特性が時変性であれば、過去の通信結果に依存しない所定値で輻輳制御変数を初期化することになる。一方、直前の通信におけるネットワーク特性が時不変性であれば、ステップS303経由で記憶部12に記録するので、過去の通信結果に基づく値で輻輳制御変数を初期化することになる。なお、データ通信装置1が、上述した動作と共に、図2で示される動作を行うようにしてもよい。
次に、データ通信装置1の輻輳制御変数の設定に関する第3の動作例について説明する。図4は、コネクションが確立し、データ通信を実行している間に、輻輳制御変数の値を、過去の通信結果に基づいた値以外の値に設定する動作を示すフローチャートである。伝送制御部11と伝送制御部21との間でコネクションが確立し、データ通信が実行されている場合に、伝送制御部21が、ネットワーク特性が変化したことを検出したとする。この検出は、無線端末5が無線通信路のデータリンク層の情報を取得し、その情報をデータ通信装置2へ通知することにより実現することができる。
ネットワーク特性が変化し、そのネットワークに対して適切な帯域幅かRTTのどちらかが増大した場合には、帯域幅遅延積が増大したことになる。伝送制御部21は、伝送制御部11に上記の情報を通知するためのネットワーク特性情報を生成し、送受信部20を介して送信する。このネットワーク特性情報は、ネットワーク特性が時変性であるかどうかを示す情報を含んでいればよく、さらにそのネットワークの新しい帯域幅や新しい帯域幅遅延積の情報を含んでいてもよい。この場合に伝送制御部11は、図4によって示される動作を実行する。
伝送制御部11は、送受信部10を介して、データ通信装置2によって送信されたネットワーク特性情報を受信する(ステップS401)。続いて、伝送制御部11は、ネットワーク特性情報に基づいて、ネットワーク特性が時変性であるかどうか判定する(ステップS402)。ネットワーク特性が時変性であった場合にはステップS403へ進み、時変性でなかった場合にはステップS404へ進む。ステップS403において、伝送制御部11は、図2のステップ206における動作と同様に、輻輳制御変数の値を、過去の通信結果に基づく値以外の所定値に設定し、処理が終了する。また、ステップS404において、伝送制御部11は、現在の輻輳制御変数の値を輻輳制御変数の参考値として、通信相手の送受信部20のIPアドレスと共に記憶部12に格納し、処理が終了する。
上記のステップS403の処理においては、輻輳制御変数であるスロースタートしきい値ssthreshと輻輳ウィンドウの最大値max_cwndが、過去の通信結果に基づく値以外の所定値に設定される。これにより、ネットワーク特性が変化した場合、特に、帯域幅遅延積が増大した場合に、輻輳ウィンドウcwndの増大を抑制していた輻輳制御変数の値を再設定し、cwndをさらに増大させることができる。
次に、データ通信装置1の輻輳制御変数の設定に関する第4の動作例について説明する。図5は、データ通信装置1の輻輳制御変数の設定に関する動作を示すフローチャートである。ステップS501〜503の動作は、図2におけるステップS201〜S203の動作と同様であるので、説明を省略する。ステップS503において、伝送制御部11によって、ネットワーク特性が時変性であると判定された場合、処理はステップS504に進む。また、ネットワーク特性が時変性でない(時不変性である)と判定された場合には、処理はステップS506へ進む。
ステップS504において、伝送制御部11は、図示せぬ内部のタイマーを起動する。このタイマーは、起動してから一定時間が経過した時点においてタイムアウトする。タイマーの起動からタイムアウトまでのインターバル時間は、例えば5秒といった固定値でもよいし、あるいはネットワーク特性情報に周期情報が格納されている場合には、その周期情報に基づいた値であってもよい。続いて、伝送制御部11は輻輳制御変数の値を、過去の通信結果に基づく値以外の所定値に設定し(ステップS505)、処理が終了する。ステップS506〜ステップS507の処理は図2のステップS204〜ステップS205の処理と同様であるので、説明を省略する。
伝送制御部11のタイマーがタイムアウトした場合、割り込みが発生し、図6に示される動作が実行される。この場合、伝送制御部11は輻輳制御変数の値を、過去の通信結果に基づく値以外の所定値に設定する(ステップS601)。伝送制御部11のタイマーはインターバルタイマーであり、起動後、一定時間ごとにタイムアウトし、伝送制御部11はステップS601の処理を実行する。
上述したように、本動作例において伝送制御部11は、送受信部10を介してネットワーク特性情報を受信した場合に、タイマーを起動し、輻輳制御変数の値を、過去の通信結果に基づく値以外の所定値に一定時間おきに設定する。これにより、ネットワーク特性が変化し、特に、帯域幅遅延積が増大した場合に、輻輳ウィンドウcwndの増大を抑制していた変数を再設定し、cwndをさらに増大させることができる。
なお、上述した実施形態において、輻輳制御変数を初期化する場合に、参考値を用いて計算によって導かれる値を用いて輻輳制御変数を初期化してもよい。例えば、過去の通信結果に基づいて更新されたスロースタートしきい値ssthreshを参考値として記憶したり、または過去の通信結果に基づいて更新された輻輳ウィンドウcwndをその最大値max_cwndの参考値として記憶すれば、次回の通信で輻輳を避けられるようになることが期待できる。
なお、上述したデータ通信装置1の機能をデータ通信装置2が有していてもよい。また、上述した実施形態による無線端末5およびデータ通信装置2を一体の装置として構成し、その装置をUSB(Universal Serial Bus)等の規格によりPC(Personal Computer)やPDA(Personal Digital Assistance)等に接続してもよいし、その装置がPCやPDA等に内蔵されていてもよい。
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成はこれらの実施の形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。例えば、上述した実施形態におけるデータ通信装置1は、その動作および機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませ、実行させることにより実現してもよい。
ここで、「コンピュータ」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。
また、上述したプログラムは、このプログラムを記憶装置等に格納したコンピュータから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。また、上述したプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能をコンピュータにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
1,2・・・データ通信装置、3・・・ネットワーク、4・・・無線基地局、5・・・無線端末、10,20・・・送受信部、11,21・・・伝送制御部、12,22・・・記憶部。
Claims (19)
- ネットワークを介して外部装置とデータ通信を行う送受信手段と、
輻輳制御に用いられる輻輳制御変数の値を記憶する記憶手段と、
過去の通信結果に基づいて前記輻輳制御変数の値を設定し、該輻輳制御変数の値に基づいて、前記データ通信における輻輳制御を行うと共に、前記データ通信の終了時に前記輻輳制御変数の値を前記記憶手段に格納する通信制御手段と、
前記ネットワークの時間的な変動の特性に関するネットワーク特性情報が前記外部装置から受信された場合に、該ネットワーク特性情報に基づいて、前記ネットワークが時変性であるかどうか判定する判定手段とを具備し、
前記通信制御手段は、前記判定手段によって、前記ネットワークが時変性であると判定された場合に、前記輻輳制御変数の値を、過去の通信結果に基づかない値に設定する
ことを特徴とするデータ通信装置。 - 前記判定手段は、コネクションの開始要求を示すコネクション開始要求情報と共に受信する前記ネットワーク特性情報に基づいて、前記ネットワークが時変性であるかどうか判定することを特徴とする請求項1に記載のデータ通信装置。
- 前記判定手段は、前記外部装置とのコネクションが終了する場合に、前記ネットワークが時変性であるかどうか判定し、
前記通信制御手段は、前記判定手段によって、前記ネットワークが時変性であると判定された場合に、前記設定した値を前記輻輳制御変数の値として、前記記憶手段に格納する
ことを特徴とする請求項1に記載のデータ通信装置。 - 前記判定手段は、前記ネットワーク特性情報を前記外部装置から受信するごとに、前記ネットワーク特性情報に基づいて、前記ネットワークが時変性であるかどうか判定することを特徴とする請求項1に記載のデータ通信装置。
- 前記通信制御手段は、前記判定手段によって、前記ネットワークが時変性であると判定された場合に、一定時間ごとに、前記輻輳制御変数の値を、過去の通信結果に基づかない値に設定することを特徴とする請求項1に記載のデータ通信装置。
- 前記過去の通信結果に基づかない値は、前記記憶手段によって記憶されている前記輻輳制御変数の値よりも大きいことを特徴とする請求項1〜請求項5のいずれかの項に記載のデータ通信装置。
- ネットワークを介した外部装置とのデータ通信時に、輻輳制御変数の値に基づいて輻輳制御を行い、データ通信終了時に、前記輻輳制御変数の値を記憶するデータ通信方法において、
前記ネットワークの時間的な変動の特性に関するネットワーク特性情報を前記外部装置から受信する第1のステップと、
受信した前記ネットワーク特性情報に基づいて、前記ネットワークが時変性であるかどうか判定する第2のステップと、
前記ネットワークが時変性であると判定した場合に、前記輻輳制御変数の値を、過去の通信結果に基づかない値に設定する第3のステップと、
を具備することを特徴とするデータ通信方法。 - 前記第2のステップは、コネクションの開始要求を示すコネクション開始要求情報と共に前記外部装置から受信する前記ネットワーク特性情報に基づいて判定することを特徴とする請求項7に記載のデータ通信方法。
- 前記第2のステップは、前記外部装置とのコネクションが終了する場合に、前記ネットワークが時変性であるかどうか判定し、
前記第3のステップは、前記ネットワークが時変性であると判定した場合に、前記設定した値を前記輻輳制御変数の値として、記憶手段に格納する
ことを特徴とする請求項7に記載のデータ通信方法。 - 前記第2のステップは、前記ネットワーク特性情報を前記外部装置から受信するごとに、前記ネットワーク特性情報に基づいて、前記ネットワークが時変性であるかどうか判定することを特徴とする請求項7に記載のデータ通信方法。
- 前記第3のステップは、前記ネットワークが時変性であると判定した場合に、一定時間ごとに、前記輻輳制御変数の値を、過去の通信結果に基づかない値に設定することを特徴とする請求項7に記載のデータ通信方法。
- 前記過去の通信結果に基づかない値は、前記記憶手段によって記憶されている前記輻輳制御変数の値よりも大きいことを特徴とする請求項7〜請求項11のいずれかの項に記載のデータ通信方法。
- ネットワークを介した外部装置とのデータ通信時に、輻輳制御変数の値に基づいて輻輳制御を行い、データ通信終了時に、前記輻輳制御変数の値を記憶するデータ通信処理をコンピュータに実行させるためのデータ通信プログラムにおいて、
前記ネットワークの時間的な変動の特性に関するネットワーク特性情報を前記外部装置から受信する第1のステップと、
受信した前記ネットワーク特性情報に基づいて、前記ネットワークが時変性であるかどうか判定する第2のステップと、
前記ネットワークが時変性であると判定した場合に、前記輻輳制御変数の値を、過去の通信結果に基づかない値に設定する第3のステップと、
をコンピュータに実行させることを特徴とするデータ通信プログラム。 - 前記第2のステップは、コネクションの開始要求を示すコネクション開始要求情報と共に前記外部装置から受信する前記ネットワーク特性情報に基づいて判定することを特徴とする請求項13に記載のデータ通信プログラム。
- 前記第2のステップは、前記外部装置とのコネクションが終了する場合に、前記ネットワークが時変性であるかどうか判定し、
前記第3のステップは、前記ネットワークが時変性であると判定した場合に、前記設定した値を前記輻輳制御変数の値として、記憶手段に格納する
ことを特徴とする請求項13に記載のデータ通信プログラム。 - 前記第2のステップは、前記ネットワーク特性情報を前記外部装置から受信するごとに、前記ネットワーク特性情報に基づいて、前記ネットワークが時変性であるかどうか判定することを特徴とする請求項13に記載のデータ通信プログラム。
- 前記第3のステップは、前記ネットワークが時変性であると判定した場合に、一定時間ごとに、前記輻輳制御変数の値を、過去の通信結果に基づかない値に設定することを特徴とする請求項13に記載のデータ通信プログラム。
- 前記過去の通信結果に基づかない値は、前記記憶手段によって記憶されている前記輻輳制御変数の値よりも大きいことを特徴とする請求項13〜請求項17のいずれかの項に記載のデータ通信プログラム。
- 請求項13〜請求項18のいずれかの項に記載のデータ通信プログラムが記録されたコンピュータ読み取り可能な記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004182272A JP2006005833A (ja) | 2004-06-21 | 2004-06-21 | データ通信装置、データ通信方法、データ通信プログラムおよび記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004182272A JP2006005833A (ja) | 2004-06-21 | 2004-06-21 | データ通信装置、データ通信方法、データ通信プログラムおよび記録媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006005833A true JP2006005833A (ja) | 2006-01-05 |
Family
ID=35773810
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004182272A Withdrawn JP2006005833A (ja) | 2004-06-21 | 2004-06-21 | データ通信装置、データ通信方法、データ通信プログラムおよび記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006005833A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008182410A (ja) * | 2007-01-24 | 2008-08-07 | Ntt Docomo Inc | 通信端末、輻輳制御方法および輻輳制御プログラム |
US8165613B2 (en) | 2006-08-21 | 2012-04-24 | Samsung Electronics Co., Ltd. | Method and apparatus for transmitting data using information on communication environment |
US8830852B2 (en) | 2010-10-28 | 2014-09-09 | Sony Corporation | Communication device, communication system, program, and communication method |
US10015288B2 (en) | 2014-07-08 | 2018-07-03 | Canon Kabushiki Kaisha | Communication apparatus and control method of communication apparatus |
-
2004
- 2004-06-21 JP JP2004182272A patent/JP2006005833A/ja not_active Withdrawn
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8165613B2 (en) | 2006-08-21 | 2012-04-24 | Samsung Electronics Co., Ltd. | Method and apparatus for transmitting data using information on communication environment |
JP2008182410A (ja) * | 2007-01-24 | 2008-08-07 | Ntt Docomo Inc | 通信端末、輻輳制御方法および輻輳制御プログラム |
US8830852B2 (en) | 2010-10-28 | 2014-09-09 | Sony Corporation | Communication device, communication system, program, and communication method |
US10015288B2 (en) | 2014-07-08 | 2018-07-03 | Canon Kabushiki Kaisha | Communication apparatus and control method of communication apparatus |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11876714B2 (en) | Method and apparatus for network congestion control based on transmission rate gradients | |
EP3742690B1 (en) | Data transmission method, computing device, network device and data transmission system | |
KR102203509B1 (ko) | 패킷 전송 방법, 단말, 네트워크 디바이스 및 통신 시스템 | |
US9641650B2 (en) | TCP proxy server | |
US7706269B2 (en) | Method, system and device for controlling a transmission window size | |
Tsaoussidis et al. | Open issues on TCP for mobile computing | |
EP1771742B1 (en) | High performance tcp for systems with infrequent ack | |
US8583053B1 (en) | Optimizing TCP traffic for mobile devices using TCP backoff thresholds | |
CN108429700B (zh) | 一种发送报文的方法及装置 | |
JP2006005833A (ja) | データ通信装置、データ通信方法、データ通信プログラムおよび記録媒体 | |
US20160014239A1 (en) | Communication apparatus and control method of communication apparatus | |
WO2020154872A1 (zh) | 一种传输控制协议加速方法和装置 | |
KR101231793B1 (ko) | Tcp 세션 최적화 방법 및 네트워크 노드 | |
KR100913897B1 (ko) | 재전송 타임아웃 수를 줄이기 위한 전송 제어 프로토콜혼잡제어방법 | |
Latha et al. | Implementation of TCP Congestion Control mechanism for Wireless Networks using TCP Reserved Field and Signal to Noise Ratio (SNR) | |
WO2008112456A1 (en) | Method and apparatus for handling interconnection transmissions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20070904 |