JP4942040B2 - 通信装置および通信方法 - Google Patents

通信装置および通信方法 Download PDF

Info

Publication number
JP4942040B2
JP4942040B2 JP2007186566A JP2007186566A JP4942040B2 JP 4942040 B2 JP4942040 B2 JP 4942040B2 JP 2007186566 A JP2007186566 A JP 2007186566A JP 2007186566 A JP2007186566 A JP 2007186566A JP 4942040 B2 JP4942040 B2 JP 4942040B2
Authority
JP
Japan
Prior art keywords
tcp
flow
simulation
congestion
salt
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.)
Expired - Fee Related
Application number
JP2007186566A
Other languages
English (en)
Other versions
JP2009027303A (ja
Inventor
晃明 塩津
公輝 阿部
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
THE UNIVERSITY OF ELECTRO-COMUNICATINS
Original Assignee
THE UNIVERSITY OF ELECTRO-COMUNICATINS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by THE UNIVERSITY OF ELECTRO-COMUNICATINS filed Critical THE UNIVERSITY OF ELECTRO-COMUNICATINS
Priority to JP2007186566A priority Critical patent/JP4942040B2/ja
Publication of JP2009027303A publication Critical patent/JP2009027303A/ja
Application granted granted Critical
Publication of JP4942040B2 publication Critical patent/JP4942040B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、通信装置および通信方法に関し、特に、他のコネクションとの利用帯域の公平性を保持しつつ、利用可能帯域を十分に利用することができるようにした通信装置および通信方法に関する。
近年、インターネットが普及してきている。また、それに伴いネットワークは複雑化し、輻輳の発生も増大している。輻輳は転送性能の低下を招くため、輻輳を回避する技術は重要である。
例えば、現在、TCP(Transmission Control Protocol)が、事実上、標準のインターネットプロトコルとなっている。しかしながら、TCPでは、中間ノードを透明化して通信を行うため、中間ノードは、流れてくるデータの全体量を知ることができない。これにより、
受信データをバッファから溢れさせてしまう現象、即ち輻輳が発生する。
輻輳によって喪失したデータの再送が行われると、そのデータによってまた輻輳が発生する輻輳崩壊という悪循環に陥るため、輻輳は悪化していく傾向がある。従って、輻輳を回避するために、輻輳を制御することが必要となる。
そこで、現在、TCPでは、パケットの喪失を検出すると、ウィンドウサイズを小さくすることで輻輳回避を行っている。具体的には、現在普及している、RenoというバージョンのTCPでは、図1に示すように、スロースタート状態11と輻輳回避状態12の2つの状態で、ウィンドウサイズを制御している。
図1のスロースタート状態11では、データの確認応答であるACKが受信されるたびに、輻輳ウィンドウcwndが1セグメント分増加する。即ち、スロースタート状態11では、輻輳ウィンドウcwndが指数的に増加する。一方、輻輳回避状態12では、ACKが受信されるたびに、輻輳ウィンドウcwndが、1/cwndセグメント分増加する。即ち、輻輳回避状態12では、輻輳ウィンドウcwndが線形的に増加する。
また、輻輳ウィンドウcwndが閾値ssthreshより大きい場合、状態が、スロースタート状態11から、輻輳回避状態12に遷移する。なお、閾値ssthreshの初期値は、ウィンドウサイズの最大値であり、輻輳が検出された場合、そのときのウィンドウサイズの半分に設定される。
さらに、タイムアウトにより輻輳が検出された場合、そのときの状態が輻輳回避状態であればスロースタート状態に遷移し、そのときの状態がスロースタート状態であれば、その状態を維持する。また、重複ACKにより輻輳が検出され、かつ、再送が成功した場合、そのときの状態がスロースタート状態であれば、輻輳回避状態に遷移し、そのときの状態が輻輳回避状態であれば、その状態を維持する。
以下に、具体的な動作について説明する。
まず最初に、状態はスロースタート状態11に設定され、輻輳ウィンドウcwndは最小値に設定される。そして、ACKが受信されるたびに、輻輳ウィンドウcwndが1セグメント分増加する。従って、送信したデータ全てに対するACKが受信されると、次に同時に送り出されるデータ量は、前回の2倍になる。その結果、短時間のうちに、利用可能帯域以上のデータ量のデータが送信されるようになり、輻輳が発生する。
そして、タイムアウトにより輻輳が検出されると、閾値ssthreshが、そのときのウィンドウサイズの半分に設定され、輻輳ウィンドウcwndが最小値に戻される。輻輳ウィンドウcwndは再び増加し、閾値ssthreshを越えたとき、状態が、スロースタート状態11から輻輳回避状態12に遷移する。
なお、このとき、輻輳が重複ACKにより検出された場合、パケットの再送に成功していれば、検出された輻輳が軽微なものであると判断され、輻輳ウィンドウcwndは最小値ではなく、そのときのウィンドウサイズの半分に設定される。従って、この場合、輻輳ウィンドウcwndが、直ぐに閾値ssthreshを超え、状態がスロースタート状態11から輻輳回避状態12に遷移する。その結果、輻輳ウィンドウcwndが最小値に戻されることによる、無駄な転送性能の低下を防止することができる。
輻輳回避状態12では、輻輳ウィンドウcwndが、ACKが受信されるたびに、1/cwnd分増加する。従って、スロースタート状態11の場合に比べて、輻輳ウィンドウcwndの増加速度が小さくなり、輻輳が発生するまでの時間が長くなる。しかしながら、輻輳ウィンドウcwndが減少することはないため、いずれ輻輳が発生する。そして、タイムアウトにより輻輳が検出されると、閾値ssthreshが、そのときのウィンドウサイズの半分に設定され、輻輳ウィンドウcwndが最小値に戻される。状態は輻輳回避状態12からスロースタート状態11に遷移する。
しかしながら、TCP Renoにおける輻輳回避は、輻輳発生後に行われるので、再送により余計なパケットを送信する必要があり、さらに、変化の激しいインターネットへの対応が困難である。また、輻輳が検出されるたびに、輻輳ウィンドウcwndが、そのときのウィンドウサイズの半分以下に低下するので、利用可能帯域を十分に活用することは難しい。
そこで、ネットワークの状態を予測し、輻輳を事前に回避する技術が研究されている。この研究の手法は、大きく2つに分類され、1つ目の手法は、TCPではなく全く新しい高速で高信頼性のプロトコルを開発するものである。この手法では、新しいプロトコルが、広帯域高遅延を前提として設計されているため、この環境においては、従来のTCPより転送性能が高い。しかしながら、TCPとの互換性がないため、新しいプロトコルとTCPを仲介するための特殊なノードが必要となる。従って、新しいプロトコルを普及させるためには相当のコストがかかる。
また、2つ目の手法は、従来のTCPとの互換性を保持しつつ、輻輳回避アルゴリズムを改善するものである。この手法では、1つ目の手法のような劇的な転送性能の改善は難しいが、従来のTCPと互換性があるため、普及させるために特別な仲介ノードなどは必要ない。従って、輻輳回避アルゴリズムが改善されたTCPは、低コストで実装することができ、実用的である。
そこで、2つ目の手法により、Brakmoらは、VegasというバージョンのTCPを提案している。TCP Vegasでは、TCP RenoでRTO(Retransmission Time-Out)を算出するために使用されていたRTT(Round Trip Time)が正確に測定され、期待されるスループットと実際のスループットが計算される。そして、この2つのスループットを比較することで、ネットワークの輻輳が推測され、ウィンドウサイズが調整される。
具体的には、TCP Vegasにおけるスロースタート状態と輻輳回避状態での輻輳ウィンドウcwndの制御方法は、以下の式(1)で表される。
Figure 0004942040
なお、式(1)において、αとβは定数であり、定数αは定数βより小さい。また、BaseRTTは、これまでに測定された最小のRTTである。式(1)によれば、スロースタート状態において、輻輳ウィンドウcwndは指数的に増加する。
また、式(1)においてDiffは、期待されるスループットと実際のスループットの差であり、以下の式(2)で表される。
Figure 0004942040
以上のように、TCP Vegasでは、輻輳回避状態において、期待されるスループットと実際のスループットの差により、ネットワークの状態が予測され、輻輳ウィンドウcwndが制御されるので、輻輳が軽微なネットワークにおいて、TCP Renoより転送性能を向上させることができる。
しかしながら、TCP Vegasでは、ネットワーク帯域が積極的に利用されるため、他のコネクションとの帯域利用の公平性が損なわれてしまう。また、変化の激しいネットワークでは、BaseRTTの測定が困難である。さらに、重度の輻輳では、輻輳回避アルゴリズムが機能しない可能性がある。また、TCP Renoでは、上述したように、輻輳ウィンドウcwndは増加するだけで減少しないので、TCP Vegasによる通信がTCP Renoによる通信と帯域を共有した場合、RTTが低下し、その結果、転送性能が著しく低下してしまう。
また、輻輳制御アルゴリズムが改善されたTCPとして、TCP Vegas とTCP Renoとで帯域を共有した際に転送性能が低下する問題を解決したもの、インライン計測により利用可能帯域の情報を取得し、その情報を利用したウィンドウサイズ制御アルゴリズムを有するものなどが提案されている。しかしながら、これらのTCPは、他のコネクションとの帯域利用の公平性の問題から、実用化には至っていない。
さらに、輻輳制御アルゴリズムが改善されたTCPとして、機械学習を取り入れることにより、ネットワークの状態から輻輳を予測し、ウィンドウサイズを制御する輻輳制御アルゴリズムを有するTCPも提案されている。このTCPでは、ネットワークの変化に素早く反応するなどの改善が確認されたが、帯域を積極的に利用するため、他のコネクションと帯域を共有した場合の利用帯域の公平性が犠牲になってしまう。
ところで、従来の輻輳制御方法としては、ATM(Asynchronous Transfer Mode)などの通信網において、実データとは別にRTT計測用のパケットを定期的に送信し、そのパケットのRTT時系列から、ニューラルネットを用いて次のRTTを予測し、予測したRTTにより転送レートを増減する自立分散型トラヒックフロー制御方法がある(例えば、特許文献1参照)。
しかしながら、この自立分散型トラヒックフロー制御方法では、RTT計測用のパケットを送信する必要があるので、パケットの転送量が増加してしまう。また、この自立分散型トラヒックフロー制御方法は、ATMなどの通信網における通信の制御を目的として考案されているため、他フローとの公平性は考慮されていない。
また、従来の輻輳制御方法としては、帯域の利用効率の改善、および、既存TCPとの帯域利用の公平性を目的として、ボトルネックルータのバッファ量を推定し、バッファを最大限に使うようにウィンドウサイズを制御する輻輳制御方法がある(例えば、特許文献2参照)。
しかしながら、この輻輳制御方法では、輻輳発生直前のDiff値(Diff_max)のみを用いる学習により、バッファ量を推定しているため、学習の精度は低い。そのため、輻輳を防止するためには、バッファ量を低めに推定せざるを得ず、利用可能帯域は十分に利用することが困難である。
さらに、従来の輻輳制御方法としては、マルチメディアデータのTCP通信のエンドツーエンドトラフィック管理を目的として、過去のパケット送信履歴と応答履歴で定まる回線の状態(キュー占有率)をキューでモデル化し、1時刻先からm時刻先までの応答時刻である予測応答時系列をマルチタイムスケール線形予測により予測することにより、その予測応答時系列とパケット送信履歴で定まる回線の状態を予測し、その予測された回線の状態に応じて、個々のパケットの送信時刻を決定する方法がある(例えば、特許文献3参照)。
しかしながら、この方法では、予測応答時系列をマルチタイムスケール線形予測により予測するので、予測の精度は低い。そのため、輻輳を防止するためには、回線の状態のレベルを低めに予測せざるを得ず、利用可能帯域は十分に利用することが困難である。
特開平10−23064号公報
特開2006−67109号公報
特開2002−368800号公報
以上のように、他のコネクションとの利用帯域の公平性を保持しつつ、輻輳を事前に回避することにより、利用可能帯域を十分に利用する輻輳制御アルゴリズムは考えられていなかった。
本発明は、このような状況に鑑みてなされたものであり、他のコネクションとの利用帯域の公平性を保持しつつ、利用可能帯域を十分に利用することができるようにするものである。
本発明の一側面の通信装置は、ネットワークを介した通信を行う通信装置において、直前の輻輳ウィンドウとRTTの逆数の履歴を用いて、新たな輻輳ウィンドウを予測する予測手段と、予測された前記輻輳ウィンドウを用いて、前記ネットワークの帯域を割り当て、その帯域でデータを送信する送信手段とを備える。
本発明の一側面の通信装置において、前記予測手段は、前記直前の輻輳ウィンドウと、前記RTTの逆数の履歴を用いて、新たな輻輳ウィンドウを線形予測することができる。
本発明の一側面の通信方法は、ネットワークを介した通信を行う通信装置の通信方法において、直前の輻輳ウィンドウとRTTの逆数の履歴を用いて、新たな輻輳ウィンドウを予測し、予測された前記輻輳ウィンドウを用いて、前記ネットワークの帯域を割り当て、その帯域でデータを送信するステップを含む。
本発明の一側面においては、直前の輻輳ウィンドウとRTTの逆数の履歴を用いて、新たな輻輳ウィンドウが予測され、予測された輻輳ウィンドウを用いて、ネットワークの帯域が割り当てられ、その帯域でデータが送信される。
以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書又は図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書又は図面に記載されていることを確認するためのものである。従って、明細書又は図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
本発明の一側面の通信装置は、
ネットワークを介した通信を行う通信装置(例えば、図2の通信装置20)において、
直前の輻輳ウィンドウとRTTの逆数の履歴を用いて、新たな輻輳ウィンドウを予測する予測手段(例えば、図4の輻輳ウィンドウ決定部63)と、
予測された前記輻輳ウィンドウを用いて、前記ネットワークの帯域を割り当て、その帯域でデータを送信する送信手段(例えば、図4の送信部64)と
を備える。
本発明の一側面の通信方法は、
ネットワークを介した通信を行う通信装置(例えば、図2の通信装置20)の通信方法において、
直前の輻輳ウィンドウとRTTの逆数の履歴を用いて、新たな輻輳ウィンドウを予測し(例えば、図5のステップS22)、
予測された前記輻輳ウィンドウを用いて、前記ネットワークの帯域を割り当て、その帯域でデータを送信する(例えば、図5のステップS12)
ステップを含む。
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
図2は、本発明を適用した通信装置の一実施の形態のハードウェアの構成例を示している。
図2の通信装置20において、CPU(Central Processing Unit)21,ROM(Read Only Memory)22,RAM(Random Access Memory)23は、バス24により相互に接続されている。
バス24には、さらに、入出力インターフェース25が接続されている。入出力インターフェース25には、キーボード、マウス、マイクロホン、リモートコントローラから送信されてくる指令を受信する受信部などよりなる入力部26、ディスプレイ、スピーカなどよりなる出力部27、ハードディスクや不揮発性のメモリなどよりなる記憶部28、ネットワークインタフェースなどよりなる通信部29、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア31を駆動するドライブ30が接続されている。
以上のように構成される通信装置20では、CPU21が、例えば、記憶部28に記憶されているプログラムを、入出力インターフェース25およびバス24を介して、RAM23にロードして実行することにより、記憶部28などに記憶されているデータを、他の装置に送信する。
具体的には、CPU21は、例えば、記憶部28から送信対象とするデータを読み出し、通信部29に供給する。通信部29は、現行のTCPと互換性を有する、SaltというバージョンのTCPであるTCP Salt(後述する)にしたがって、CPU21から供給されるデータを、インターネットを介して送信する。
通信装置20のCPU21が実行するプログラムは、例えば、リムーバブルメディア31に記録して、あるいは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供される。
そして、プログラムは、リムーバブルメディア31をドライブ30に装着することにより、入出力インターフェース25を介して、記憶部28にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部29で受信し、記憶部28にインストールすることができる。その他、プログラムは、ROM22や記憶部28に、予めインストールしておくことができる。
次に、図3は、TCP Saltの状態遷移図である。
図3に示すように、TCP Saltでは、ブースト状態41と輻輳回避状態42の2つの状態がある。輻輳が検出されると、状態はブースト状態41から輻輳回避状態42に遷移する。また、利用可能帯域が増加して、利用可能帯域に余裕があると判断されると、状態は輻輳回避状態42からブースト状態41に遷移する。
ブースト状態41では、正常なACKが受信されるたびに、輻輳ウィンドウcwndが1セグメント分増加する。一方、輻輳回避状態42では、前回の輻輳ウィンドウcwndと、送信側で入手可能なRTTを用いて、以下の式(3)により、今回の輻輳ウィンドウとして最適な輻輳ウィンドウcwnd´が線形予測される。
Figure 0004942040
なお、式(3)において、IRTTiはi(1≦i≦n)回前のRTTの逆数であり、w0とwiは重み係数である。式(3)によれば、輻輳ウィンドウcwnd´は、IRTTiと前回の輻輳ウィンドウcwndが表す入力ベクトルと、重み係数w0とwiが表す係数ベクトルの内積、つまり、線形結合で表される。
即ち、IRTTは、輻輳の程度、即ち回線の混雑度に比例するものであるため、式(3)では、IRTTが回線の状況を表すものとして用いられる。そして、式(3)では、輻輳ウィンドウcwnd´は、過去の回線の状況を表すIRTTの履歴であるIRTTiと、その回線をどのように使用したかを表す直前の輻輳ウィンドウcwndとを用いた線形結合により予測される。
従って、式(3)では、過去の回線の状況を表すIRTTiと、その回線をどのように使用したかを表す直前の輻輳ウィンドウcwndを用いて、現在のIRTT0、つまり現在の回線の状況を予測し、それに応じた輻輳ウィンドウcwnd´を求めているといえる。
このように、TCP Saltでは、過去の回線の状況を表すIRTTiと、その回線をどのように使用したかを表す直前の輻輳ウィンドウcwndを用いて、現在の回線の状況を予測するので、直前の回線の状況により現在の回線の状況を予測する場合に比べて、精度の高い予測を行うことができる。その結果、利用可能帯域を十分に利用することができる。
また、式(3)で逆数が用いられるRTTは、現行のTCPによる通信においても使用されるものであるため、式(3)により輻輳ウィンドウcwnd´を予測するTCP Saltは、従来のTCPとの互換性を有している。
以上のようにして式(3)により輻輳ウィンドウcwnd´が予測されると、その輻輳ウィンドウcwnd´を用いてインターネットの帯域が割り当てられ、その帯域でデータの送信が行われる。
なお、上述した重み係数w0とwiは、以下の式(4)にしたがって更新(機械学習)され、上述した輻輳ウィンドウcwnd´の予測に用いられる。
Figure 0004942040
なお、式(4)において、輻輳ウィンドウcwndは、式(3)において用いられる前回の輻輳ウィンドウcwndである。また、Cは所定の学習係数である。さらに、式(4)におけるERRORは、以下の式(5)により求められる。
Figure 0004942040
なお、式(5)において、RTTjはj(0≦j≦n−1)回前のRTTであり、MAX_RTTは、RTTの最大値である。
上述した式(4)と式(5)によれば、輻輳の程度が減少する(RTTj+1>RTTj)と、重み係数w0とwiが増加し、輻輳の程度が増加する(RTTj+1<RTTj)と、重み係数w0とwiが減少する。また、輻輳の程度が不変(RTTj+1=RTTj)であれば、重み係数w0とwiも変化しない。その結果、重み係数w0とwiは、輻輳の程度が減少した場合、輻輳ウィンドウcwnd´を増加させ、輻輳の程度が増加した場合、輻輳ウィンドウcwnd´を減少させることができる。
従って、式(4)と式(5)によれば、回線を混雑させず、かつ、無駄にしない最適な輻輳ウィンドウcwnd´の予測に必要な重み係数w0とwiを、学習することができる。
以上のように、輻輳回避状態42では、輻輳ウィンドウcwnd´の予測に用いられる重み係数w0とwiが更新され、その重み係数w0とwi、前回の輻輳ウィンドウcwnd、並びに過去n回分のIRTTiの履歴により、輻輳ウィンドウcwnd´が予測される。
なお、式(3)および式(4)では、IRTTiそのものを用いるのではなく、以下の式(6)にしたがって正規化したIRTTiを用いる。
Figure 0004942040
なお、式(6)において、MIN_RTTは、RTTの最小値である。
図4は、図2の通信部29の機能的構成例を示している。
図4の通信部29は、RTT演算部61、状態判定部62、輻輳ウィンドウ決定部63、送信部64、および受信部65により構成される。なお、通信部29を構成する各ブロックは、必要に応じて相互に信号を授受することが可能とされている。
RTT演算部61は、送信部64から供給される、送信対象のデータ(以下、送信データという)に付加されたタイムスタンプを記憶する。また、RTT演算部61は、記憶している送信データのタイムスタンプと、受信部65から供給される、その送信データに対する確認応答であるACKに付加されたタイムスタンプとの差を、RTTとして演算する。RTT演算部61は、そのRTTを状態判定部62と輻輳ウィンドウ決定部63に供給する。
状態判定部62は、受信部65から供給される輻輳の検出を表す情報に応じて、状態をブースト状態41から輻輳回避状態42に遷移させる。また、状態判定部62は、RTT演算部61から供給されるRTTの変動が0になったとき、状態を輻輳回避状態42からブースト状態41に遷移させる。即ち、利用可能帯域に余裕があることと、RTTの変動が少ないことに関連性があるため、状態判定部62は、RTTの変動が0になったとき、利用可能帯域に余裕があると判断して、状態をブースト状態41に遷移させる。また、状態判定部62は、現在の状態を表す情報を輻輳ウィンドウ決定部63に供給する。
輻輳ウィンドウ決定部63は、RTT演算部61から供給されるRTTを記憶する。また、輻輳ウィンドウ決定部63は、状態判定部62から供給される現在の状態を表す情報に応じて、輻輳ウィンドウcwndを決定する。具体的には、現在の状態がブースト状態41である場合、輻輳ウィンドウ決定部63は、RTT演算部61からRTTが供給されるたびに、輻輳ウィンドウcwndを、前回の輻輳ウィンドウcwndから1セグメント分増加させて、今回の輻輳ウィンドウcwndとする。
また、現在の状態が輻輳回避状態42である場合、輻輳ウィンドウ決定部63は、過去n回分と現在のRTTj、予め設定されている学習係数C、前回の重み係数w0とwi、および前回の輻輳ウィンドウcwndを用いて、式(4)と式(5)にしたがって重み係数w0とwiを更新し、記憶する。
そして、輻輳ウィンドウ決定部63は、記憶されている過去のn回分のRTTi、更新された重み係数w0およびwi、並びに、前回の輻輳ウィンドウcwndを用いて、上述した式(3)にしたがって輻輳ウィンドウcwnd´を予測し、今回の輻輳ウィンドウcwndとする。輻輳ウィンドウ決定部63は、今回の輻輳ウィンドウcwndを記憶するとともに、送信部64に供給する。
送信部64は、CPU21(図2)から供給される送信データにセグメント単位でタイムスタンプを付加する。そして、送信部64は、輻輳ウィンドウ決定部63から供給される今回の輻輳ウィンドウcwndを用いて、インターネットの帯域を割り当て、その帯域でタイムスタンプが付加された送信データを送信する。また、送信部64は、各セグメントに付加したタイムスタンプをRTT演算部61に供給する。
受信部65は、送信部64により送信された送信データを受信する、通信装置20とインターネットを介して接続された他の通信装置(図示せず)から、送信データに対するACKを受信する。そして、受信部65は、受信したACKに付加されたタイムスタンプをRTT演算部61に供給する。
また、受信部65は、送信データが送信されてから予め設定された所定の時間内に、その送信データに対する、前に受信したACKと重複しない正常なACKが受信されたかを判定する。そして、所定の時間内に正常なACKが受信されていないと判定された場合、受信部65は、輻輳を検出し、輻輳の検出を表す情報を状態判定部62に供給する。一方、所定の時間内に正常なACKが受信されたと判定された場合、受信部65は輻輳を検出しない。
次に、図5のフローチャートを参照して、図4の通信部29による、輻輳ウィンドウcwndを決定する決定処理について説明する。この決定処理は、例えば、図2のCPU21から送信部64に送信データが供給されたとき、開始される。
ステップS11において、送信部64は、CPU21から供給された送信データに、セグメント単位でタイムスタンプを付加し、そのタイムスタンプをRTT演算部61に供給する。ステップS12において、送信部64は、輻輳ウィンドウ決定部63により決定された今回の輻輳ウィンドウcwndを用いて、インターネットの帯域を割り当て、その帯域でタイムスタンプを付加した送信データを他の通信装置に送信する。
ステップS13において、受信部65は、ステップS12で送信された送信データに対するACKが受信されたかどうかを判定する。ステップS13でACKが受信されていないと判定された場合、ステップS14において、受信部65は、予め設定された所定の時間が経過したかどうかを判定する。ステップS14で所定の時間が経過していないと判定された場合、処理はステップS13に戻り、ACKが受信されるか、または、所定の時間が経過するまで、ステップS13およびS14の処理が繰り返される。
一方、ステップS14で所定の時間が経過したと判定された場合、即ち、タイムアウトが発生した場合、受信部65は、輻輳を検出して、輻輳の検出を表す情報を状態判定部62に供給する。そして、処理はステップS20に進む。
また、ステップS13でACKが受信されたと判定された場合、ステップS15において、受信部65は、受信したACKが正常なACKであるかどうか、即ち、前回受信したACKと重複しないACKであるかどうかを判定する。ステップS15で、受信したACKが正常なACKではないと判定された場合、受信部65は、輻輳を検出して、輻輳の検出を表す情報を状態判定部62に供給する。そして、処理はステップS20に進む。
一方、ステップS15で、受信したACKが正常なACKであると判定された場合、受信部65は、輻輳を検出せず、受信したACKに付加されているタイムスタンプをRTT演算部61に供給する。そして、処理はステップS16に進む。ステップS16において、RTT演算部61は、ステップS11で送信部64から供給されたタイムスタンプと、ステップS15で受信部65から供給されたタイムスタンプとの差をRTTとして演算する。そして、RTT演算部61は、そのRTTを状態判定部62と輻輳ウィンドウ決定部63に供給する。
ステップS17において、状態判定部62は、RTTの変動がないかどうか、即ち、RTT演算部61から供給された最新のRTTと、1つ前にRTT演算部61から供給されたRTTとの差がないかどうかを判定する。ステップS17でRTTの変動がないと判定された場合、ステップS18において、状態判定部62は、状態をブースト状態41にする。そして、状態判定部62は、現在の状態がブースト状態41であることを表す情報を、輻輳ウィンドウ決定部63に供給する。
ステップS19において、輻輳ウィンドウ決定部63は、状態判定部62から供給される、現在の状態がブースト状態であることを表す情報に応じて、輻輳ウィンドウcwndを1セグメント分増加させる。そして、輻輳ウィンドウ決定部63は、その輻輳ウィンドウcwndを、今回の輻輳ウィンドウcwndとして記憶するとともに、送信部64に供給する。この今回の輻輳ウィンドウcwndは、次回のステップS12の処理で用いられる。
一方、ステップS17でRTTの変動があると判定された場合、処理はステップS20に進む。ステップS20において、状態判定部62は、状態を輻輳回避状態42にする。そして、状態判定部62は、現在の状態が輻輳回避状態42であることを表す情報を、輻輳ウィンドウ決定部63に供給する。
ステップS21において、輻輳ウィンドウ決定部63は、現在の状態が輻輳回避状態42であることを表す情報に応じて、過去n回分と現在のRTTj、予め設定されている学習係数C、前回の重み係数w0とwi、および前回の輻輳ウィンドウcwndを用いて、上述した式(4)と式(5)にしたがって重み係数w0とw1を更新し、記憶する。
ステップS22において、輻輳ウィンドウ決定部63は、現在の状態が輻輳回避状態42であることを表す情報に応じて、記憶されている過去のn回分のRTTi、ステップS21で更新された重み係数w0およびwi、並びに、前回の輻輳ウィンドウcwndを用いて、上述した式(3)にしたがって輻輳ウィンドウcwnd´を予測する。そして、輻輳ウィンドウ決定部63は、その輻輳ウィンドウcwnd´を、今回の輻輳ウィンドウcwndとして記憶するとともに、送信部64に供給する。この今回の輻輳ウィンドウcwndは、次回のステップS12の処理で用いられる。
ステップS19またはS22の処理後、ステップS23において、送信部64は、CPU21から供給された全ての送信データを送信したかどうかを判定する。ステップS23で、まだ全ての送信データを送信していないと判定された場合、処理はステップS11に戻り、上述した処理が繰り返される。一方、ステップS23で、全ての送信データを送信したと判定された場合、処理は終了する。
以下に、上述したTCP Saltによる通信の動作について、シミュレーション結果を用いて説明する。このシミュレーションは、TCP Saltにおける学習係数Cを0.6とし、RTTの履歴の数であるnを5として、ネットワークシミュレータNS-2を用いて行われる。
まず最初に、第1のシミュレーションについて説明する。
図6は、第1のシミュレーションのネットワークトポロジを示している。
図6のネットワークトポロジでは、2つの中間ノード81と82を挟んで、2つの別々のノードであるノード80およびノード84と、2つの別々のノードであるノード83およびノード85が接続されている。そして、UDP(User Datagram Protocol)に準拠してデータが、ノード80から中間ノード81と82を通ってノード83へ流され、TCP SaltまたはTCP Renoに準拠してデータが、ノード84から中間ノード81と82を通ってノード85へ流される。
なお、TCP SaltとTCP Renoのデータフローに対する受信端末はTCP Sinkであり、TCP SaltおよびTCP Renoの最大のウィンドウサイズは33セグメントである。このことは、後述するシミュレーションでも同様である。
また、図6のネットワークトポロジでは、全帯域が100Mbpsとなっており、ノード80から中間ノード81への流れ、ノード84から中間ノード81への流れ、中間ノード82からノード83への流れ、および中間ノード82からノード85への流れによって、データに5msの遅延が発生する。さらに、中間ノード81から中間ノード82への流れによって、データに40msの遅延が発生する。
第1のシミュレーションでは、100Mbpsの全帯域のうち、UDPに準拠したデータフロー(以下、UDPフローという)によって98.5Mbpsの帯域を圧迫した状態で、TCP SaltまたはTCP Renoに準拠してデータが流される。詳細には、第1のシミュレーションが開始されてから4秒後にUDPフローが開始され、5秒後にTCP SaltまたはTCP Renoに準拠したデータフロー(以下、TCP SaltフローまたはTCP Renoフローという)が開始される。そして、50秒後にTCP SaltフローまたはTCP Renoフローが、51秒後にUDPフローが、55秒後に第1のシミュレーション自体が、停止される。
次に、図7乃至図9を参照して、第1のシミュレーションの結果について説明する。
図7は、第1のシミュレーションのTCP SaltフローとTCP Renoフローにおける、輻輳ウィンドウcwndの時間変化を示すグラフである。なお、図7において、横軸は第1のシミュレーションを開始してからの時間(sec)を表し、縦軸は輻輳ウィンドウcwnd(セグメント)を表している。
図7に示すように、TCP Saltフローでは、ブースト状態41から輻輳回避状態42に最初に遷移したときに輻輳ウィンドウcwndが減少し、それ以降、比較的大きい値に徐々に収束していく。即ち、輻輳回避状態42に最初に遷移したときには、まだ重み係数w0およびwiが学習されていないため、TCP Saltフローでは、輻輳ウィンドウcwndを正確に予測することができないが、その後、徐々に重み係数w0およびwiが学習されていくので、その重み係数w0およびwiを用いて、輻輳ウィンドウcwndを正確に予測することが可能となる。その結果、輻輳ウィンドウcwndは徐々に収束していく。
これに対して、TCP Renoフローでは、図7に示すように、スロースタート状態11から輻輳回避状態12に最初に遷移した後も、一定周期で輻輳ウィンドウcwndが減少する。即ち、TCP Renoフローでは、輻輳ウィンドウcwndを減少させることができないため、UDPフローによる圧迫で輻輳が発生し、その輻輳が検出されるたびに、輻輳ウィンドウcwndが減少する。
図8は、第1のシミュレーションのTCP SaltフローとTCP Renoフローにおける、スループットの時間変化を示すグラフである。なお、図8において、横軸は第1のシミュレーションを開始してからの時間(sec)を表し、縦軸はスループット(Mbps)を表している。
図8に示すように、TCP Saltフローでは、ブースト状態41から輻輳回避状態42に最初に遷移したときにのみスループットが低下するだけで、それ以降は、スループットが、利用可能帯域の最大限の値である、1.5Mbps付近で安定する。これにより、TCP Saltフローでは、最適な輻輳ウィンドウcwndを予測することができていることがわかる。
これに対して、図8に示すように、TCP Renoフローでは、スロースタート状態11から輻輳回避状態12に最初に遷移した後も、何回もスループットが低下している。即ち、図7で示したように、TCP Renoフローでは、UDPフローの圧迫によって輻輳が発生するたびに、輻輳ウィンドウcwndが低下するので、スループットも低下する。
図9は、第1のシミュレーションのTCP SaltフローとTCP Renoフローにおける、平均スループット、最大スループット、および転送データ量を表している。
図9に示すように、TCP Renoフローの平均スループットは、1.084Mbpsであり、TCP Saltフローの平均スループットは、1.428である。従って、TCP Renoフローに対するTCP Saltフローの平均スループットの改善率は31.7%である。
また、図9に示すように、TCP Renoフローの最大スループットは、2.030Mbpsであり、TCP Saltフローの最大スループットは、TCP Renoフローの場合と同一の2.030Mbpsである。従って、TCP Renoフローに対するTCP Saltフローの最大スループットの改善率は0.0%である。
さらに、図9に示すように、TCP Renoフローの転送データ量は、6.096Mbであり、TCP Saltフローの転送データ量は、8.030Mbである。従って、TCP Renoフローに対するTCP Saltフローの転送データ量の改善率は31.7%である。
以上により、第1のシミュレーションでは、TCP Saltフローにおける平均スループットと転送データ量が、TCP Renoフローに比べて改善されることがわかる。
次に、第2のシミュレーションについて説明する。
第2のシミュレーションのネットワークトポロジは、図6に示した第1のシミュレーションのネットワークトポロジと同一であるので、説明は省略する。なお、第2のシミュレーションでは、第1のシミュレーションと異なり、UDPフローにより圧迫される帯域が常に98.5Mbpsであるのではなく、第2のシミュレーションが開始されてから20秒後から35秒後までの15秒間、UDPフローにより圧迫される帯域が50Mbpsに低下する。
図10は、第2のシミュレーションのTCP SaltフローとTCP Renoフローにおける、スループットの時間変化について説明する。なお、図10において、横軸は第2のシミュレーションを開始してからの時間(sec)を表し、縦軸はスループット(Mbps)を表している。
図10に示すように、TCP Saltフローでは、TCP Renoフローに比べて、圧迫された帯域が低下する、第2のシミュレーションを開始してから20秒後に、即座にスループットが向上する。これは、UDPフローにより圧迫される帯域が低下し、TCP Saltフローの利用可能帯域が増加することによって、RTTの変動がなくなるため、TCP Saltフローでは、即座に状態が輻輳回避状態42からブースト状態41に遷移し、輻輳ウィンドウcwndの増加速度が大きくなるためである。
これに対して、TCP Renoフローでは、状態が輻輳回避状態12のままであるため、輻輳ウィンドウcwndの増加速度が、TCP Saltフローに比べて小さい。
以上のように、TCP Saltフローでは、RTTの変動により、現在の帯域の状態が把握されるので、TCP Renoフローと比較して、圧迫される帯域の変化に迅速に反応することができる。
また、TCP SaltフローとTCP Renoフローでは、圧迫された帯域が低下している第2のシミュレーションを開始してから20秒後から35秒までの15秒間、スループットは2.75Mbps付近で安定する。このとき、TCP SaltフローとTCP Renoフローのスループットは、利用可能な50Mbpsの帯域よりも小さいので、輻輳は発生しない。
なお、第2のシミュレーションが開始されてから20秒後から35秒後までの15秒間ではなく、20秒後付近でTCP Renoフローのスループットが一番低下している18秒後から、33秒後までの15秒間、UDPフローにより圧迫される帯域が50Mbpsに低下すると、図11に示すように、圧迫される帯域の変化への反応の速さの差は、さらに顕著になる。
次に、第3のシミュレーションについて説明する。
図12は、第3のシミュレーションのネットワークトポロジを示している。
図12のネットワークトポロジでは、2つの中間ノード101と102を挟んで、2つの別々のノードであるノード100およびノード104と、2つの別々のノードであるノード103およびノード105が接続されている。そして、第1のTCPのいずれかのバージョンに準拠したフロー(以下、TCPフローという)として、TCP SaltまたはTCP Renoに準拠して、ノード100から中間ノード101と102を通ってノード103へデータが流され、第2のTCPフローとして、TCP SaltフローまたはTCP Renoフローが、ノード104から中間ノード101と102を通ってノード105へ流される。
なお、図12のネットワークトポロジでは、中間ノード101と102間の帯域が2.5Mbpsとなっており、それ以外の帯域が100Mbpsとなっている。また、ノード100から中間ノード101への流れ、ノード104から中間ノード101への流れ、中間ノード102からノード103への流れ、および中間ノード102からノード105への流れによって、データに5msの遅延が発生する。さらに、中間ノード101から中間ノード102への流れによって、データに40msの遅延が発生する。
第3のシミュレーションでは、第1のTCPフローおよび第2のTCPフローが、TCP Saltフローである。詳細には、第1のシミュレーションが開始されてから1秒後に第1のTCPフローとしての第1のTCP Saltフローが開始され、5秒後に第2のTCPフローとしての第2のTCP Saltフローが開始される。そして、45秒後に第1のTCP Saltフローが、50秒後に第2のTCP Saltフローが、55秒後に第3のシミュレーション自体が、停止される。
図13は、第3のシミュレーションの第1および第2のTCP Saltフローにおける、スループットの時間変化を示すグラフである。なお、図13において、横軸は第3のシミュレーションを開始してからの時間(sec)を表し、縦軸はスループット(Mbps)を表している。
図13に示すように、第1のTCP Saltフローが開始される1秒後から、第2のTCP Saltフローが開始される5秒後までの間、第1のTCPフローでは、スループットが2.5Mbpsとなっており、利用可能帯域が最大限利用されている。
また、同様に、第1のTCP Saltフローが停止される45秒後から、第2のTCP Saltフローが停止される50秒後までの間、第2のTCP Saltフローでは、スループットが2.5Mbpsとなっており、利用可能帯域が最大限利用されている。
さらに、第1と第2のTCP Saltフローが両方行われている、5秒後から45秒後までの間、図13に示すように、多少の変動はあるものの、利用可能帯域は公平に利用されている。即ち、TCP Saltフローどうしが帯域を共有した場合、利用可能帯域が公平に利用される。
次に、第4のシミュレーションについて説明する。
第4のシミュレーションのネットワークトポロジは、図12に示した第3のシミュレーションのネットワークトポロジと同一であるので、説明は省略する。なお、第4のシミュレーションでは、第3のシミュレーションと異なり、第2のTCPフローとして、TCP Renoに準拠してデータが流される。即ち、第4のシミュレーションでは、第1のTCPフローが、TCP Saltフローであり、第2のTCPフローが、TCP Renoフローである。
図14は、第4のシミュレーションのTCP SaltフローおよびTCP Renoフローにおける、スループットの時間変化を示すグラフである。なお、図14において、横軸は第4のシミュレーションを開始してからの時間(sec)を表し、縦軸はスループット(Mbps)を表している。
図14に示すように、TCP Saltフローが開始される1秒後から、TCP Renoフローが開始される5秒後までの間、TCP Saltフローでは、スループットが2.5Mbpsとなっており、利用可能帯域が最大限利用されている。
また、同様に、TCP Saltフローが停止される45秒後から、TCP Renoフローが停止される50秒後までの間、TCP Renoフローでは、スループットが2.5Mbpsとなっており、利用可能帯域が最大限利用されている。
さらに、TCP SaltフローとTCP Renoフローが両方行われている、5秒後から45秒後までの間、図14に示すように、多少の変動はあるものの、利用可能帯域は公平に利用されている。即ち、TCP SaltフローとTCP Renoフローが帯域を共有した場合にも、利用可能帯域が公平に利用される。
以上の第1乃至第4のシミュレーションにより、TCP Saltフローでは、他のコネクションとの利用帯域の公平性を保持しつつ、利用可能帯域を十分に利用することができることがわかる。また、TCP Saltフローでは、利用可能帯域の変化に迅速に対応することができることがわかる。
次に、TCP Saltにおいて輻輳ウィンドウcwnd´の予測時に用いられる重み係数w0とwiの推移について、シミュレーション結果を用いて説明する。
まず最初に、図15を参照して、第1のシミュレーション中の重み係数w0乃至w5の推移について説明する。なお、図15において、横軸は、第1のシミュレーションを開始してからの時間(sec)を表し、縦軸は重み係数w0乃至w5の値を表している。このことは、後述する図16においても同様である。
図15に示すように、第1のシミュレーションにおいて、重み係数w0乃至w5は、一定時間で収束していく。また、第1のシミュレーションでは、直近の過去のIRTT1に対する重み係数w1が一番大きく、前回の輻輳ウィンドウcwndに対する重み係数w0はあまり大きくない。
次に、図16は、第2のシミュレーション中の重み係数w0乃至w5の推移を示している。なお、図16において、第2のシミュレーションは、第2のシミュレーションが開始されてから20秒後から35秒後までの15秒間、UDPフローにより圧迫される帯域が50Mbpsに低下するものである。
上述したように、第2のシミュレーションにおいて、UDPフローにより圧迫される帯域が50Mbpsに低下する20秒後から35秒後までの15秒間、輻輳は発生せず、TCP Saltフローでは、ブースト状態41が維持されるので、図16に示すように、重み係数w0乃至w5は変化しない。また、第2のシミュレーションでは、第1のシミュレーションと同様に、直近の過去のIRTT1に対する重み係数w1が一番大きく、前回の輻輳ウィンドウcwndに対する重み係数w0はあまり大きくない。
以上のように、輻輳ウィンドウcwndに対する重み係数w0は、あまり大きくない。従って、以下に、輻輳ウィンドウcwnd´の予測時に用いられる前回の輻輳ウィンドウcwndの必要性について、シミュレーション結果を用いて説明する。
まず最初に、第5のシミュレーションについて説明する。
第5のシミュレーションは、第1のシミュレーションにおいて、TCP SaltフローまたはTCP Renoフローではなく、TCP Saltの第1または第2の変形に準拠したフロー(以下、第1変形TCP Saltフローまたは第2変形TCP Saltフローという)もしくはTCP Saltフローを用いたものである。
ここで、TCP Saltの第1の変形とは、TCP Saltにおいて重み係数w0を0とし、RTTの履歴の数であるnを5としたものであり、第2の変形とは、TCP Saltにおいて重み係数w0を0とし、nを6としたものである。
図17は、第5のシミュレーションの第1変形TCP Saltフロー、第2変形TCP Saltフロー、およびTCP Saltフローにおける、スループットの時間変化を示すグラフである。なお、図17において、横軸は第5のシミュレーションを開始してからの時間(sec)を表し、縦軸はスループット(Mbps)を表している。
図17に示すように、第5のシミュレーションでは、第1変形TCP Saltフロー、第2変形TCP Saltフロー、およびTCP Saltフローにおけるスループットの差はない。
次に、第6のシミュレーションについて説明する。
第6のシミュレーションは、第2のシミュレーションにおいて、TCP SaltフローまたはTCP Renoフローではなく、第1変形TCP Saltフロー、第2変形TCP Saltフロー、またはTCP Saltフローを用いたものである。
図18は、第6のシミュレーションの第1変形TCP Saltフロー、第2変形TCP Saltフロー、およびTCP Saltフローにおける、スループットの時間変化を示すグラフである。なお、図18において、横軸は第6のシミュレーションを開始してからの時間(sec)を表し、縦軸はスループット(Mbps)を表している。
図18に示すように、第6のシミュレーションにおいても、第1変形TCP Saltフロー、第2変形TCP Saltフロー、およびTCP Saltフローにおけるスループットの差はない。
次に、第7のシミュレーションについて説明する。
図19は、第7のシミュレーションのネットワークトポロジを示している。
図19のネットワークトポロジでは、2つの中間ノード121と122を挟んで、3つの別々のノードであるノード120、ノード124、およびノード126と、3つの別々のノードであるノード123、ノード125、およびノード127が接続されている。
また、UDPフローとして、UDPに準拠して、ノード120から中間ノード121と122を通ってノード123へデータが流され、第1のTCPフローとして、TCP Reno、TCP Vegas、TCP Saltの第1変形、TCP Saltの第2変形、またはTCP Saltに準拠して、ノード124から中間ノード121と122を通ってノード125へデータが流される。さらに、第2のTCPフローとして、TCP Reno、TCP Vegas、TCP Saltの第1変形、TCP Saltの第2変形、またはTCP Saltに準拠して、ノード126から中間ノード121と122を通ってノード127へデータが流される。
なお、図19のネットワークトポロジでは、全帯域が100Mbpsとなっている。また、ノード120から中間ノード121への流れ、ノード124から中間ノード121への流れ、ノード126から中間ノード121への流れ、中間ノード122からノード123への流れ、中間ノード122からノード125への流れ、および中間ノード122からノード127への流れによって、データに5msの遅延が発生する。さらに、中間ノード121から中間ノード122への流れによって、データに40msの遅延が発生する。
第7のシミュレーションでは、第1のTCPフローおよび第2のTCPフローが、TCP Renoフローである。
図20は、第7のシミュレーションの第1および第2のTCP Renoフローにおける、スループットの時間変化を示すグラフである。なお、図20において、横軸は第7のシミュレーションを開始してからの時間(sec)を表し、縦軸はスループット(Mbps)を表している。
図20に示すように、第7のシミュレーションでは、第1のTCP Renoフローにおけるスループットを表す実線と、第2のTCP Renoフローにおけるスループットを表す点線があまり重なっていない。即ち、TCP Renoフローどうしが帯域を共有した場合、利用可能帯域は公平に利用されない。
次に、第8乃至第15のシミュレーションについて説明する。
第8乃至第15のシミュレーションのネットワークトポロジは、図19に示した第7のシミュレーションのネットワークトポロジと同一であるので、説明は省略する。なお、第8のシミュレーションでは、第7のシミュレーションと異なり、第1および第2のTCPフローが、TCP Vegasに準拠したデータフロー(以下、TCP Vegasフローという)である。
図21は、第8のシミュレーションの第1および第2のTCP Vegasフローにおける、スループットの時間変化を示すグラフである。
図21に示すように、第8のシミュレーションでは、第1のTCP Vegasフローと第2のTCP Vegasフローのうち、最初に開始した方が帯域の利用において優位になる。即ち、TCP Vegasフローどうしが帯域を共有した場合、利用可能帯域は公平に利用されない。
次に、第9乃至第11のシミュレーションについて説明する。
第9のシミュレーションでは、第1および第2のTCPフローが、第1変形TCP Saltフローであり、第10のシミュレーションでは、第2変形TCP Saltフロー、第11のシミュレーションでは、TCP Saltフローである。
図22乃至図24は、第9乃至第11のシミュレーションの第1および第2の第1変形TCP Saltフロー、第1および第2の第2変形TCP Saltフロー、並びに第1および第2のTCP Saltフローのそれぞれにおける、スループットの時間変化を示すグラフである。
図22乃至図24に示すように、第11のシミュレーション、第9のシミュレーション、第10のシミュレーションの順に、帯域利用の公平性が高い。即ち、TCP Saltフローどうしが帯域を共有した場合が最も公平性が高く、第1変形TCP Saltフローどうしが帯域を共有した場合が、その次に公平性が高く、第2変形TCP Saltフローどうしが帯域を共有した場合が、最も公平性が低い。
次に、第12乃至第14のシミュレーションについて説明する。
第12のシミュレーションでは、第1のTCPフローが、第1変形TCP Saltフローであり、第13のシミュレーションでは、第2変形TCP Saltフローであり、第14のシミュレーションでは、TCP Saltフローである。また、第12乃至第14のシミュレーションでは、第2のTCPフローが、TCP Renoフローである。
図25乃至図27は、第12乃至第14のシミュレーションの、第1変形TCP Saltフロー、第2変形TCP Saltフロー、およびTCP Saltフローのそれぞれと、TCP Renoフローにおける、スループットの時間変化を示すグラフである。
図25に示すように、第12のシミュレーションでは、第1変形TCP Saltフローの方が、TCP Renoフローに比べて、帯域利用において優位になっている。また、図26に示すように、第13のシミュレーションでは、第1変形TCP Saltフローと同様に、第2変形TCP Saltフローの方が、TCP Renoフローに比べて、帯域利用において優位になっている。さらに、図27に示すように、第14のシミュレーションでは、TCP SaltフローとTCP Renoフローの利用帯域がほぼ公平になっている。
次に、第15のシミュレーションについて説明する。
第15のシミュレーションでは、第1のTCPフローが、TCP Vegasフローであり、第2のTCPフローが、TCP Renoフローである。
図28は、第15のシミュレーションのTCP VegasフローとTCP Renoフローにおける、スループットの時間変化を示すグラフである。
図28に示すように、第15のシミュレーションでは、TCP VegasフローとTCP Renoフローの利用帯域の公平性は比較的良いが、TCP VegasフローとTCP Renoフローにおけるスループットが小さい。
図29は、第7、第8、および第15のシミュレーションにおける転送量(byte)を示す表であり、図30は、第9乃至第11のシミュレーションにおける転送量(byte)を示す表である。また、図31は、第12乃至第14のシミュレーションにおける転送量(byte)を示す表である。さらに、図32は、第7乃至第15のシミュレーションにおける転送量(byte)を表すグラフである。
図29に示すように、第7のシミュレーションでは、第1のTCPフローとしてのTCP Renoフローにおける転送量が3410バイトであり、第2のTCPフローとしてのTCP Renoフローにおける転送量が4104バイトである。従って、図29や図32に示すように、第7のシミュレーションでは、第1のTCPフローと第2のTCPフローにおける転送量の和が7514バイトであり、差の絶対値が694である。
第8のシミュレーションでは、図29に示すように、第1のTCPフローとしてのTCP Vegasフローにおける転送量が7851バイトであり、第2のTCPフローとしてのTCP Vegasフローにおける転送量が2176バイトである。従って、図29や図32に示すように、第8のシミュレーションでは、第1のTCPフローと第2のTCPフローにおける転送量の和が10027バイトであり、差の絶対値が5675である。
第15のシミュレーションでは、図29に示すように、第1のTCPフローとしてのTCP Vegasフローにおける転送量が3320バイトであり、第2のTCPフローとしてのTCP Renoフローにおける転送量が3700バイトである。従って、図29や図32に示すように、第15のシミュレーションでは、第1のTCPフローと第2のTCPフローにおける転送量の和が7020バイトであり、差の絶対値が380である。
また、図30に示すように、第9のシミュレーションでは、第1のTCPフローとしての第1の第1変形TCP Saltフローにおける転送量が3849バイトであり、第2のTCPフローとしての第2の第1変形TCP Saltフローにおける転送量が4397バイトである。従って、図30や図32に示すように、第9のシミュレーションでは、第1のTCPフローと第2のTCPフローにおける転送量の和が8246バイトであり、差の絶対値が548である。
第10のシミュレーションでは、図30に示すように、第1のTCPフローとしての第1の第2変形TCP Saltフローにおける転送量が3818バイトであり、第2のTCPフローとしての第2の第2変形TCP Saltフローにおける転送量が4462バイトである。従って、図30や図32に示すように、第10のシミュレーションでは、第1のTCPフローと第2のTCPフローにおける転送量の和が8280バイトであり、差の絶対値が644である。
第11のシミュレーションでは、図30に示すように、第1のTCPフローとしての第1のTCP Saltフローにおける転送量が3960バイトであり、第2のTCPフローとしての第2のTCP Saltフローにおける転送量が4273バイトである。従って、図30や図32に示すように、第11のシミュレーションでは、第1のTCPフローと第2のTCPフローにおける転送量の和が8233バイトであり、差の絶対値が313である。
さらに、図31に示すように、第12のシミュレーションでは、第1のTCPフローとしての第1変形TCP Saltフローにおける転送量が4743バイトであり、第2のTCPフローとしてのTCP Renoフローにおける転送量が3352バイトである。従って、図31や図32に示すように、第12のシミュレーションでは、第1のTCPフローと第2のTCPフローにおける転送量の和が8095バイトであり、差の絶対値が1391である。
第13のシミュレーションでは、図31に示すように、第1のTCPフローとしての第2変形TCP Saltフローにおける転送量が4783バイトであり、第2のTCPフローとしてのTCP Renoフローにおける転送量が3456バイトである。従って、図31や図32に示すように、第13のシミュレーションでは、第1のTCPフローと第2のTCPフローにおける転送量の和が8239バイトであり、差の絶対値が1327である。
第14のシミュレーションでは、図31に示すように、第1のTCPフローとしてのTCP Saltフローにおける転送量が4316バイトであり、第2のTCPフローとしてのTCP Renoフローにおける転送量が3824バイトである。従って、図31や図32に示すように、第14のシミュレーションでは、第1のTCPフローと第2のTCPフローにおける転送量の和が8140バイトであり、差の絶対値が492である。
図29乃至図32に示すように、第8のシミュレーションでは、第1のTCPフローとしてのTCP Vegasフローにおける転送量と、第2のTCPフローとしてのTCP Vegasフローにおける転送量の和が、最大となっているが、それらの転送量の差も最大となっている。即ち、TCP Vegasフローどうしが帯域を共有した場合、全体的な転送量は多いが、公平性が悪い。
また、第7や第15のシミュレーションでは、第1のTCPフローとしてのTCP RenoフローまたはTCP Vegasフローにおける転送量と、第2のTCPフローとしてのTCP Renoフローにおける転送量の差は小さいが、それらの転送量の和も小さくなっている。即ち、TCP Renoフローどうしや、TCP RenoフローとTCP Vegasフローが帯域を共有した場合、公平性は比較的良いが、全体的な転送量は少なくなる。
これに対して、第9乃至第14のシミュレーションでは、第1のTCPフローとしての第1変形TCP Saltフロー、第2変形TCP Saltフロー、またはTCP Saltフローにおける転送量と、第2のTCPフローとしての第1変形TCP Saltフロー、第2変形TCP Saltフロー、TCP Saltフロー、またはTCP Renoフローにおける転送量の差は小さいが、それらの転送量の和は比較的大きい。
即ち、第1変形TCP Saltフロー、第2変形TCP Saltフロー、およびTCP Saltフローどうしや、第1変形TCP Saltフロー、第2変形TCP Saltフロー、およびTCP SaltフローのそれぞれとTCP Renoフローが帯域を共有した場合、利用帯域の公平性が良く、かつ、全体的な転送量が多い。
また、第1変形TCP Saltフロー、第2変形TCP Saltフロー、およびTCP Saltフローどうしが帯域を共有した場合と、第1変形TCP Saltフロー、第2変形TCP Saltフロー、およびTCP SaltフローのそれぞれとTCP Renoフローが帯域を共有した場合とで、全体的な転送量には、ほぼ差がないので、現行のTCP Renoを一度にTCP Saltに移行せず、徐々に移行する場合であっても、問題がないことがわかる。
さらに、第9乃至第14のシミュレーションにおいて、第1のTCPフローと第2のTCPのフローにおける転送量の和はほぼ同一であるが、差については差がある。具体的には、第9と第10のシミュレーションに比べて、第11のシミュレーションにおける差が小さく、第12と第13のシミュレーションに比べて、第14のシミュレーションにおける差が小さい。即ち、第1変形TCP Saltフロー、第2変形TCP Saltフロー、およびTCP Saltフローの中で、TCP Saltフローが最も公平性が良い。従って、重み係数w0は、利用帯域の公平性を保持するために必要であることがわかる。
なお、マルチメディアデータを配信する場合、通信装置20は、TCP Saltにしたがって決定された輻輳ウィンドウcwndに基づいて、インターネットの帯域を割り当てるとともに、特許文献3に記載されている制御方法で、インターネットの状態に応じて個々の送信データの送信間隔を決定し、その送信間隔で送信データを、割り当てられた帯域を用いて送信するようにしてもよい。
また、本明細書において、プログラム記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
さらに、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
TCP Renoの状態遷移図である。 本発明を適用した通信装置の一実施の形態のハードウェアの構成例を示す図である。 TCP Saltの状態遷移図である。 図2の通信部29の機能的構成例を示す図である。 通信部による決定処理について説明するフローチャートである。 第1のシミュレーションのネットワークトポロジを示す図である。 第1のシミュレーションの輻輳ウィンドウの時間変化を示すグラフである。 第1のシミュレーションのスループットの時間変化を示すグラフである。 第1のシミュレーションの平均スループット、最大スループット、および転送データ量を表す図である。 第2のシミュレーションのスループットの時間変化を示すグラフである。 他の第2のシミュレーションのスループットの時間変化を示すグラフである。 第3のシミュレーションのネットワークトポロジを示す図である。 第3のシミュレーションのスループットの時間変化を示すグラフである。 第4のシミュレーションのスループットの時間変化を示すグラフである。 第1のシミュレーション中の重み係数の推移を示すグラフである。 第2のシミュレーション中の重み係数の推移を示すグラフである。 第5のシミュレーションのスループットの時間変化を示すグラフである。 第6のシミュレーションのスループットの時間変化を示すグラフである。 第7のシミュレーションのネットワークトポロジを示す図である。 第7のシミュレーションのスループットの時間変化を示すグラフである。 第8のシミュレーションのスループットの時間変化を示すグラフである。 第9のシミュレーションのスループットの時間変化を示すグラフである。 第10のシミュレーションのスループットの時間変化を示すグラフである。 第11のシミュレーションのスループットの時間変化を示すグラフである。 第12のシミュレーションのスループットの時間変化を示すグラフである。 第13のシミュレーションのスループットの時間変化を示すグラフである。 第14のシミュレーションのスループットの時間変化を示すグラフである。 第15のシミュレーションのスループットの時間変化を示すグラフである。 第7、第8、および第15のシミュレーションにおける転送量を示す図である。 第9乃至第11のシミュレーションにおける転送量を示す図である。 第12乃至第14のシミュレーションにおける転送量を示す図である。 第7乃至第15のシミュレーションにおける転送量を示すグラフである。
符号の説明
20 通信装置, 63 輻輳ウィンドウ決定部, 64 送信部

Claims (3)

  1. ネットワークを介した通信を行う通信装置において、
    直前の輻輳ウィンドウとRTTの逆数の履歴を用いて、新たな輻輳ウィンドウを予測する予測手段と、
    予測された前記輻輳ウィンドウを用いて、前記ネットワークの帯域を割り当て、その帯域でデータを送信する送信手段と
    を備える通信装置。
  2. 前記予測手段は、前記直前の輻輳ウィンドウと、前記RTTの逆数の履歴を用いて、新たな輻輳ウィンドウを線形予測する
    請求項に記載の通信装置。
  3. ネットワークを介した通信を行う通信装置の通信方法において、
    直前の輻輳ウィンドウとRTTの逆数の履歴を用いて、新たな輻輳ウィンドウを予測し、
    予測された前記輻輳ウィンドウを用いて、前記ネットワークの帯域を割り当て、その帯域でデータを送信する
    ステップを含む通信方法。
JP2007186566A 2007-07-18 2007-07-18 通信装置および通信方法 Expired - Fee Related JP4942040B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007186566A JP4942040B2 (ja) 2007-07-18 2007-07-18 通信装置および通信方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007186566A JP4942040B2 (ja) 2007-07-18 2007-07-18 通信装置および通信方法

Publications (2)

Publication Number Publication Date
JP2009027303A JP2009027303A (ja) 2009-02-05
JP4942040B2 true JP4942040B2 (ja) 2012-05-30

Family

ID=40398722

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007186566A Expired - Fee Related JP4942040B2 (ja) 2007-07-18 2007-07-18 通信装置および通信方法

Country Status (1)

Country Link
JP (1) JP4942040B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11258531B2 (en) 2005-04-07 2022-02-22 Opanga Networks, Inc. System and method for peak flow detection in a communication network
JP5651805B2 (ja) * 2012-02-24 2015-01-14 株式会社日立製作所 通信装置
WO2016141239A1 (en) 2015-03-03 2016-09-09 Opanga Networks, Inc. Systems and methods for pacing data flows
WO2021064768A1 (ja) * 2019-09-30 2021-04-08 日本電気株式会社 制御装置、制御方法及びシステム
JP7259978B2 (ja) * 2019-09-30 2023-04-18 日本電気株式会社 制御装置、方法及びシステム
WO2021064767A1 (ja) * 2019-09-30 2021-04-08 日本電気株式会社 制御装置、方法及びシステム
CN112383485B (zh) * 2020-10-30 2022-08-19 新华三技术有限公司 一种网络拥塞控制方法及装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1023064A (ja) * 1996-07-01 1998-01-23 Nippon Telegr & Teleph Corp <Ntt> 自律分散型トラヒックフロー制御法
JP3044658B1 (ja) * 1999-01-18 2000-05-22 株式会社超高速ネットワーク・コンピュータ技術研究所 フロ―制御方法
JP2005244517A (ja) * 2004-02-25 2005-09-08 National Institute Of Information & Communication Technology データ転送制御装置、データ転送制御方法及びデータ転送制御プログラム
JP4382610B2 (ja) * 2004-08-25 2009-12-16 株式会社エヌ・ティ・ティ・ドコモ 通信端末および通信システム並びに輻輳制御方法
JP4599554B2 (ja) * 2004-12-15 2010-12-15 広島市 広帯域、高遅延無線ネットワークにおけるtcp輻輳制御方式
JP2006217235A (ja) * 2005-02-03 2006-08-17 Nippon Telegr & Teleph Corp <Ntt> 輻輳制御方法及び送信端末

Also Published As

Publication number Publication date
JP2009027303A (ja) 2009-02-05

Similar Documents

Publication Publication Date Title
JP4942040B2 (ja) 通信装置および通信方法
Goyal et al. {ABC}: A simple explicit congestion controller for wireless networks
CN101895466B (zh) 一种降低sctp多路径传输数据包乱序影响的方法
US7136353B2 (en) Quality of service management for multiple connections within a network communication system
CN106160953B (zh) 一种基于学习型能效模型的传输方法
US8873385B2 (en) Incast congestion control in a network
US11171862B2 (en) Multi-subflow network transmission method and apparatus
JP2004538719A (ja) 非線形高スケーラブル増加−減少輻輳制御機構を提供する方法
US20080101290A1 (en) Apparatus for Arq Controlling in Wireless Portable Internet System and Method Thereof
US8570864B2 (en) Kernel awareness of physical environment
RU2510981C1 (ru) Система высокоскоростной связи и способ высокоскоростной связи
CN105024940A (zh) 基于链路自适应的异构网络tcp拥塞控制方法
US9510354B2 (en) Method and a device for low intrusive fast estimation of the bandwidth available between two IP nodes
KR20100096082A (ko) 무선 송신 비율 제어 방법
CN106878192B (zh) 一种自适应mptcp的数据调度方法
CN110808884A (zh) 一种网络拥塞控制方法
US20240098155A1 (en) Systems and methods for push-based data communications
US9584420B2 (en) Switching between loss-based and delay-based mode for real-time media congestion controllers
US20070019550A1 (en) Shaper control method, data communication system, network interface apparatus, and network delay apparatus
EP3582455B1 (en) Method and apparatus for multiple subflows network transmission
KR101837637B1 (ko) 클라이언트 측 ack 조정 기반 적응 스트리밍 방법 및 장치
JP5146013B2 (ja) 通信装置および通信方法
Kadhum et al. Congestion-aware TCP-friendly system for multimedia transmission based on UDP
KR20080079410A (ko) 지속적인 혼잡감지를 이용한 tcp 혼잡제어방법
WO2019124290A1 (ja) 送信データ量制御装置、方法および記録媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100702

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111014

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111201

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120130

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120216

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120223

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150309

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees