初めに、図1を用いて一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載はなんらの限定を意図するものではない。
上述の通り、通信効率の低下を抑制することに貢献する通信端末が望まれる。
そこで、一例として図1に示す通信端末(送信端末に相当)1000を提供する。通信端末1000は、ネットワークを介して、通信相手端末(受信端末に相当)2000にデータを送信する。通信端末1000は、調整部1001と、データ送信部1002と、を備える。
調整部1001は、通信相手端末から、当該通信相手端末の受信可能なデータ量を示す、推奨広告ウィンドウサイズを受信した場合、当該通信相手端末との通信状況に基づいて補正係数を決定する。そして、調整部1001は、補正係数に基づいて、当該推奨広告ウィンドウサイズ以上の補正広告ウィンドウサイズを決定する。そして、データ送信部1002は、補正広告ウィンドウサイズに基づいて、送信可能データ量を決定する。
つまり、通信相手端末2000がデータの受信結果、伝送効率に応じて、広告ウィンドウサイズを制御する機能を備えていない場合であっても、通信端末1000は、通信相手端末との通信効率に応じて、送信するデータ量を調整できる。従って、通信端末1000は、通信効率の低下を抑制することに貢献する。
[第1の実施形態]
第1の実施形態について、図面を用いてより詳細に説明する。
図2は、本実施形態に係る通信システム1の全体構成の一例を示す図である。図2を参照すると、データを送信する通信端末(以下、「送信端末」と呼ぶ)200と、データ受信する通信端末(以下、「受信端末」と呼ぶ)300と、ネットワーク101と、TCP(Transmission Control Protocol)コネクション102と、が示されている。
送信端末200、受信端末300は、TCPコネクション102を利用して通信を行う情報処理装置である。図2を参照すると、送信端末200と受信端末300は、ネットワーク101を介して、TCPコネクション102を利用してデータを転送する。以下の説明では、送信端末200を送信側の通信端末、受信端末300を受信側の通信端末として説明するが、送信端末200、受信端末300が、データを送受信できる構成であっても良い。なお、図2においては、送信端末200、受信端末300を夫々、1つ示すが、説明の便宜上、1つの送信端末200、受信端末300を示しているに過ぎない。通信システム1は、2以上の送信端末200、2以上の受信端末300を含んで構成されても良いことは勿論である。
まず、送信端末200の内部構成について詳細に説明する。
図3は、送信端末200の内部構成の一例を示すブロック図である。送信端末200は、送信端末200に搭載されたCPU(Central Processing Unit)にて実行されるアプリケーションプログラム(以下、「アプリケーション」と呼ぶ)210と、データ記憶部220と、TCP送信部230と、IP(Internet Protocol)処理部240と、入出力処理部250と、を含んで構成される。図3は、簡単のため、本実施形態に係る送信端末200に関係するモジュールを主に記載する。
データ記憶部220は、送信するデータを格納する。アプリケーション210は、データをデータ記憶部220から取り出し、TCP送信部230に渡す。
TCP送信部230は、アプリケーション210からデータを受け取り、受け取ったデータをセグメント化し、受信端末300に送信するデータ量、送信速度を制御する。そして、TCP送信部230は、セグメント化したデータをIP処理部240に渡す。
TCP送信部230は、セグメント記憶部231と、輻輳ウィンドウ決定部232と、調整部233と、データ送信部234と、遅延計測部235と、を含んで構成される。
セグメント記憶部231は、セグメント化したデータを記憶する。
輻輳ウィンドウ決定部232は、輻輳ウィンドウサイズCWND(送信端末200が送信可能なデータ量)を決定する。
調整部233は、通信相手端末(受信端末300)から、当該通信相手端末の受信可能なデータ量を示す、推奨広告ウィンドウサイズを受信した場合、通信相手端末との通信状況に基づいて補正係数を決定する。そして、調整部233は、補正係数に基づいて、受信した推奨広告ウィンドウサイズ以上の補正広告ウィンドウサイズを決定する。
具体的には、調整部233は、受信端末300からの確認応答ACK(Acknowledgement)に記載された、広告ウィンドウサイズ(上記の「推奨広告ウィンドウサイズ」に相当)RWINを観察し、受信端末300において実際に受信可能なデータ量を推定する。より具体的には、調整部233は、推奨広告ウィンドウサイズRWIN、及び通信遅延に基づいて、受信端末300が実際に受信可能なデータ量を、補正広告ウィンドウサイズRWIN_newとして推定する。補正広告ウィンドウサイズRWIN_newの詳細は後述する。
遅延計測部235は、送信したデータに対して、受信端末300からの確認応答ACKを受信するまでの時間を計測する。
データ送信部234は、補正広告ウィンドウサイズRWIN_newに基づいて、送信可能データ量を決定する。そして、データ送信部234は、IP処理部240にセグメントを渡す。
具体的には、データ送信部234は、輻輳ウィンドウサイズCWNDと、補正広告ウィンドウサイズRWIN_newとのうち、小さい方を、送信可能なデータ量(以下、「送信可能データ量」と呼ぶ)SWINとして決定する。つまり、データ送信部234は、以下の式1に基づいて、送信可能データ量SWINを算出する。
データ送信部234は、決定した送信可能データ量SWINに相当するセグメントを、セグメント記憶部231から取り出し、IP処理部240に渡す。
なお、本書では、簡単のため、輻輳ウィンドウサイズCWNDが十分に大きいとする。そのため、以下の説明では、データ送信部234は、補正広告ウィンドウサイズRWIN_newを、送信可能データ量SWINとして決定するとする。
IP処理部240は、TCP送信部230から受け取ったデータをパケット化し、入出力処理部250に渡す。
入出力処理部250は、IP処理部240から受け取ったパケットをフレーム化し、ネットワーク(図2に示すネットワーク101)に出力する。
ここで、補正広告ウィンドウサイズRWIN_newの推定に関して詳細に説明する。
調整部233は、受信端末300からの確認応答ACKに記載された、推奨広告ウィンドウサイズRWINに対して、補正係数α(α≧1)を掛けた値を、補正広告ウィンドウサイズRWIN_newとして推定する(式2)。例えば、調整部233は、予め設定された1以上の値を、補正係数αとしても良い。
調整部233は、基準遅延時間に対する通信遅延時間の比を算出し、算出した比を、補正係数αとして決定しても良い。具体的には、調整部233は、送信端末200と受信端末300との間における、通信遅延時間RTT(Round Trip Time)に応じて、補正係数αを決定しても良い。例えば、以下の式3に基づいて、補正係数αを算出しても良い。
式3において、sRTTとは、送信端末200のTCPが、タイムスタンプ等を利用して計測するRTT(例えば、1ms)を意味する。以下の説明では、sRTTを円滑化RTTとも呼ぶ。また、式3において、bRTTとは、基準となる、近距離通信のRTT(以下、「基準RTT」、又は「基準遅延時間」と呼ぶ)を意味する。なお、通信遅延時間が基準RTTである環境においては、基準RTT毎に、送信端末200が推奨広告ウィンドウサイズのデータを受信端末300に送信しても、受信端末300は、広告ウィンドウサイズを削減することなく、送信されたデータを受信できるものとする。
なお、送信端末200は、補正係数αの更新頻度を制限しても良い。例えば、送信端末200は、補正係数αの更新頻度を、通信遅延時間sRTT毎に1回としても良い。
次に、受信端末300の内部構成について詳細に説明する。
図4は、受信端末300の内部構成の一例を示すブロック図である。受信端末300は、受信端末300に搭載されたCPUにて実行されるアプリケーション310と、データ記憶部320と、TCP受信部330と、IP処理部340と、入出力処理部350とを含んで構成される。図4は、簡単のため、本実施形態に係る送信端末200に関係するモジュールを主に記載する。
入出力処理部350は、ネットワーク(図2に示すネットワーク101)からフレームを受け取り、受け取ったフレームをIP処理部340に渡す。
IP処理部340は、入出力処理部350から受け取ったフレームをパケット化し、TCP受信部330に渡す。
TCP受信部330は、セグメント記憶部331と、ACK送信部332と、データ受信部333と、を含んで構成される。
TCP受信部330は、IP処理部340から受け取ったパケットをデータ化し、アプリケーション310に渡す。
データ受信部333は、セグメントを受信する。セグメント記憶部331は、データ受信部333が受信したセグメントを記憶する。
ACK送信部332は、受信したデータに対する確認応答ACKを作成し、送信端末200に送信する。ここで、ACK送信部332は、受信可能なデータ量を、広告ウィンドウサイズ(上述の推奨広告ウィンドウサイズRWINに相当)として記載した確認応答ACKを作成する。なお、セグメント記憶部331の空き容量が所定の設定値を越える場合、ACK送信部332は、当該設定値を、広告ウィンドウサイズとして採用する。また、セグメント記憶部331の空き容量が所定の設定値以下である場合、ACK送信部332は、セグメント記憶部331の空き容量を、広告ウィンドウサイズとして採用する。
アプリケーション310は、TCP受信部330から受け取ったデータを、データ記憶部320に格納する。データ記憶部320は、受信したデータを記憶する。
なお、図3、図4に示した各通信端末の各モジュール(各機能ブロック)は、これらの通信端末を構成するコンピュータに、そのハードウェアを用いて、上述した各処理を実行させるコンピュータプログラムにより実現することもできる。
次に、本実施形態に係る送信端末200の動作について説明する。
図5は、本実施形態に係る送信端末200の動作の一例を示すフローチャートである。
まず、ステップS101において、送信端末200は、受信端末300へのデータ送信処理を開始する。具体的には、送信端末200は、送信端末200と受信端末300との間で、TCPコネクションが開設された後、アプリケーション210からTCP送信部230にデータが渡されることで、受信端末300へのデータ送信処理が開始される。
ステップS102において、送信するデータがあるか否かを、TCP送信部230は判断する。送信するデータがある場合(ステップS102のYes分岐)には、ステップS104に遷移する。一方、送信するデータが無く、アプリケーション210からTCPコネクションの終了指示があった場合(ステップS102のNo分岐)には、ステップS103に遷移し、受信端末300へのデータ送信処理を終了する(ステップS103)。
ステップS104において、TCP送信部230は送信パケットを作成する。具体的には、TCP送信部230は、アプリケーション210から受け取ったデータをセグメント化し、送信パケットを作成する。
ステップS105において、送信データが、送信可能なデータ量の範囲内であるか否かを、データ送信部234は判断する。送信データが、送信可能なデータ量の範囲内である場合(ステップS105のYes分岐)には、ステップS106に遷移する。一方、送信データが、送信可能なデータ量の範囲内ではない場合(ステップS105のNo分岐)には、ステップS104に戻り、処理を継続する。例えば、TCP送信部230は、送信パケットを再作成しても良い。または、送信データが、送信可能なデータ量の範囲内ではない場合、受信端末300へのデータ送信処理を終了しても良い。
初回のデータ送信時には、輻輳ウィンドウ決定部232が決定した輻輳ウィンドウサイズCWNDに基づいて、送信データが、送信可能なデータ量の範囲内であるか否かを、データ送信部234は判断する。より具体的には、送信データのデータ量が、輻輳ウィンドウサイズCWND以下である場合(ステップS105のYes分岐)には、データ送信部234は、送信データが送信可能なデータ量の範囲内であると判断する。一方、送信データのデータ量が、輻輳ウィンドウサイズCWNDを越える場合(ステップS105のNo分岐)には、データ送信部234は、送信データが送信可能なデータ量の範囲内ではないと判断する。
また、受信端末300から確認応答ACKを、1回以上受信済である場合、輻輳ウィンドウサイズCWND、及び補正広告ウィンドウサイズRWIN_newに基づいて、送信データが、送信可能なデータ量の範囲内であるか否かを、データ送信部234は判断する。上述の通り、データ送信部234は、輻輳ウィンドウサイズCWNDと、補正広告ウィンドウサイズRWIN_newとのうち、小さい方を、送信可能データ量SWINとして決定する。
上述の通り、本書では、輻輳ウィンドウサイズCWNDが十分に大きいとする。その場合、補正広告ウィンドウサイズRWIN_newに基づいて、送信データが、送信可能なデータ量の範囲内であるか否かを、データ送信部234は判断する。具体的には、送信データのデータ量が、補正広告ウィンドウサイズRWIN_new以下である場合(ステップS105のYes分岐)には、送信データが送信可能なデータ量の範囲内である、とデータ送信部234は判断する。一方、送信データのデータ量が、補正広告ウィンドウサイズRWIN_newを越える場合(ステップS105のNo分岐)には、送信データが送信可能なデータ量の範囲内ではない、とデータ送信部234は判断する。
ステップS106において、送信端末200は、送信パケットを送信する。そして、遅延計測部235は、所定の時間経過後に起動するように、再送タイマを設定する(ステップS107)。例えば、遅延計測部235は、円滑化RTT(sRTT)後に起動するように、再送タイマを設定する。
ステップS108において、再送タイマを設定後、所定の時間が経過したか否かを、遅延計測部235は判断する。再送タイマを設定後、所定の時間が経過した場合(ステップS108のYes分岐)には、ステップS106に戻り、データ送信部234は送信パケットを再送する。一方、再送タイマを設定後、所定の時間が経過していない場合(ステップS108のNo分岐)には、ステップS109に遷移する。
ステップS109において、受信端末300から、確認応答ACKを受信したか否かを、TCP送信部230は判断する。確認応答ACKを受信した場合(ステップS109のYes分岐)には、ステップS110に遷移する。一方、確認応答ACKを受信していない場合(ステップS109のNo分岐)には、ステップS108に戻り、処理を継続する。
ステップS110において、調整部233は、上述の式2の通り、補正広告ウィンドウサイズRWIN_newを推定する。
ステップS111において、上述の式1の通り、第1の送信可能データ量を算出する。そして、ステップS102に戻り、処理を継続する。
次に、本実施形態に係る通信システム1のデータの送受信の一例について説明する。なお、以下の説明では、輻輳ウィンドウサイズは、十分に大きいとする。
まず、図6を参照しながら、本実施形態に係る通信システム1の比較形態における、データの送受信の一例について説明する。具体的には、図6は、受信端末301から送信されたACKに記載された推奨広告ウィンドウサイズに基づいて、送信端末201が送信可能データ量を算出し、データを送信する形態の一例を示す。
まず、図6の場合、送信端末201がData1を受信端末301に送信する。受信端末301は、Data1を受信すると、推奨広告ウィンドウサイズRWIN=3が記載された確認応答ACK=2を送信端末201に返信する。
送信端末201は、受信した推奨広告ウィンドウサイズRWIN=3に基づいて、Data3までを受信端末301に送信する。具体的には、送信端末201は、Data2、及びData3を受信端末301に送信する。
受信端末301は、Data2を受信すると、推奨広告ウィンドウサイズRWIN=4が記載された確認応答ACK=3を送信端末201に返信する。送信端末201は、受信した推奨広告ウィンドウサイズRWIN=4に基づいて、Data4までを受信端末301に送信する。ここで、送信端末201は、Data1〜Data3を送信済みであるため、Data4を送信する。
さらに、受信端末301はData3を受信すると、推奨広告ウィンドウサイズRWIN=5が記載された確認応答ACK=4を送信端末201に返信する。送信端末201は、受信した推奨広告ウィンドウサイズRWIN=5に基づいて、Data5までを受信端末301に送信する。ここで、送信端末201は、Data1〜Data4を送信済みであるため、Data5を送信する。
そして、受信端末301は、Data4、Data5を受信すると、確認応答ACK=5、ACK=6を送信端末201に返信する。
ここで、図6を参照すると、受信端末301において、Data3とData4との受信間隔は、Data2とData3との受信間隔に比べて長い。つまり、受信端末301は、Data3を受信してからData4を受信するまでの間は、データを受信することが可能にも関わらず、データを受信せず、待機状態となっている。そして、図6に示すように、受信端末301から送信された確認応答ACKに記載された、推奨広告ウィンドウサイズに基づいて、送信端末201が送信可能データ量を算出し、データを送信する場合、通信遅延が大きいほど、待機状態(受信端末301がデータを受信しない状態)が長くなる。つまり、図6に示すように、受信端末301から送信された確認応答ACKに記載された、推奨広告ウィンドウサイズに基づいて、送信端末201が送信可能データ量を算出する場合、通信遅延が大きいほど、通信効率の低下に繋がる。
次に、図7を参照しながら、本実施形態に係る通信システム1における、データの送受信の一例について説明する。
まず、図6と同様に、送信端末200がData1を受信端末300に送信する。受信端末300は、Data1を受信すると、推奨広告ウィンドウサイズRWIN=3が記載された確認応答ACK=2を送信端末200に返信する。
送信端末200は、確認応答ACK=2を受信すると、推奨広告ウィンドウサイズRWIN=3に基づいて、補正広告ウィンドウサイズRWIN_newを算出する。具体的には、送信端末200は、確認応答ACK=2を受信すると、円滑化RTTを計測する。ここでは、送信端末200は、円滑化RTT(sRTT)を、1.5msと計測したとする。そして、基準RTT(bRTT)が1.0msであるとする。
その場合、送信端末200は、上述の式3に基づいて、補正係数α=1.5/1.0=1.5と算出する。そして、送信端末200は、上述の式2に基づいて、RWIN_new=2+(3−2)×1.5=3.5と推定する。
そして、送信端末200は、上述の式1に基づいて、送信データ量SWINを算出する。ここで、上述の通り、輻輳ウィンドウサイズCWNDが十分に大きい値であるとすると、式1に基づいて、送信データ量SWIN=補正広告ウィンドウサイズRWIN_newとなる。
そこで、送信端末200は、送信データ量SWINがRWIN_new=3.5を満たすように、Data4までを送信する。具体的には、送信端末200は、Data2、Data3、Data4を受信端末300に送信する。
受信端末300は、Data2を受信すると、推奨広告ウィンドウサイズRWIN=4が記載された確認応答ACK=3を送信端末200に返信する。また、受信端末300は、Data3を受信すると、推奨広告ウィンドウサイズRWIN=5が記載された確認応答ACK=4を送信端末200に返信する。同様に、受信端末300は、Data4を受信すると、推奨広告ウィンドウサイズRWIN=6が記載された確認応答ACK=5を送信端末200に返信する。
送信端末200は、推奨広告ウィンドウサイズRWIN=4が記載された確認応答ACK=3を受信すると、補正広告ウィンドウサイズRWIN_newを推定する。具体的には、送信端末200は、上述の式2に基づいて、RWIN_new=3+(4−3)×1.5=4.5と推定する。
そこで、送信端末200は、送信データ量SWINがRWIN_new=4.5を満たすように、Data5までを送信する。具体的には、送信端末200は、Data4までを送信済みであるため、Data5を受信端末300に送信する。
ここで、上述の通り、図6に示す比較形態においては、送信端末201は、Data1に対する確認応答ACK=2に基づいて、Data2、Data3を送信する。そして、図6に示す比較形態においては、送信端末201は、Data2に対する確認応答ACK=3に基づいて、Data4を送信する。その結果、図6に示す比較形態においては、受信端末301は、Data2を受信してから、Data2の確認応答に対応するData4を受信するまでに、1つのデータ(Data3)を受信する。
一方、図7に示す本実施形態に係る通信システム1においては、送信端末200は、Data1に対する確認応答ACK=2に基づいて、Data2、Data3、Data4を送信する。そして、図7に示す本実施形態に係る通信システム1においては、送信端末200は、Data2に対する確認応答ACK=3に基づいて、Data5を送信する。その結果、図7に示す本実施形態に係る通信システム1においては、受信端末300は、Data2を受信してから、Data2の確認応答に対応するData5を受信するまでに、2つのデータ(Data3、Data4)を受信する。
ここで、図6に示す比較形態と、図7に示す本実施形態とにおいて、通信遅延時間が同一であるとする。その場合、図7に示す本実施形態の受信端末300におけるデータの受信間隔は、図6に示す比較形態の受信端末301におけるデータの受信間隔より、短くなる。その結果、図7に示す本実施形態に係る通信システム1の受信端末300は、図6に示す比較形態の受信端末301より、効率的にデータを受信できる。
以上の通り、本実施形態に係る送信端末200は、受信端末300から広告される推奨広告ウィンドウサイズより大きなデータ量のデータを、受信端末300に送信する。そして、本実施形態に係る送信端末200は、推奨広告ウィンドウサイズと、通信遅延時間とに基づいて、送信データ量を決定する。そのため、本実施形態に係る通信システム1においては、通信遅延が大きい遠距離通信であっても、受信端末300から広告される広告ウィンドウサイズにより、通信速度が抑制されることを防ぐことができる。つまり、本実施形態に係る通信システム1は、通信遅延による通信効率の低下を抑制することに貢献する。
また、本実施形態に係る送信端末200は、通信遅延を考慮し、受信端末300において基準RTT毎に受信されるデータ量が、通信遅延によらず等しくなるように計算する。そのため、本実施形態に係る通信システム1は、受信端末300の処理性能を考慮して、送信端末200がデータを送信することで、通信成功確率を向上させることに貢献する。
[第2の実施形態]
次に、第2の実施形態について説明する。
本実施形態は、受信端末から送信される推奨広告ウィンドウサイズに応じて、補正係数αを調整する形態である。なお、本実施形態における説明では、上記の実施形態と重複する部分の説明は省略する。さらに、本実施形態における説明では、上記の実施形態と同一の構成要素には、同一の符号を付し、その説明を省略する。また、本実施形態における説明では、上記の実施形態と同一の作用効果についても、その説明を省略する。
本実施形態に係る送信端末200、受信端末300の内部構成は、図3、図4に示す通りである。以下の説明では、第1の実施形態に係る送信端末200との相違点について、詳細に説明する。
本実施形態に係る調整部233は、第1の推奨広告ウィンドウサイズRWINと、第1の推奨広告ウィンドウサイズを受信後における第2の推奨広告ウィンドウサイズRWINとに基づいて、補正係数αを増減する。
なお、以下の説明では、上記の第1の推奨広告ウィンドウサイズRWINを、RWIN(t−1)と記す。また、上記の第2の推奨広告ウィンドウサイズRWINを、RWIN(t)と記す。また、以下の説明では、第1の推奨広告ウィンドウサイズRWIN(t−1)が記載された確認応答ACKを、ACK(t−1)と記す、また、以下の説明では、第2の推奨広告ウィンドウサイズRWIN(t)が記載された確認応答ACKを、ACK(t)と記す。また、以下の説明では、推奨広告ウィンドウサイズRWIN(t)を用いて推定された、補正広告ウィンドウサイズRWIN_newを、RWIN_new(t)と記す。また、以下の説明では、推奨広告ウィンドウサイズRWIN(t−1)を用いて推定された、補正広告ウィンドウサイズRWIN_newを、RWIN_new(t−1)と記す。
図8は、本実施形態に係る送信端末200の動作の一例を示すフローチャートである。
図8に示すステップS201〜ステップS209は、図5に示すステップS101〜ステップS109と同一であるため、詳細な説明を省略する。
ここで、受信端末が300から確認応答ACKを受信した(ステップS209のYes分岐)とする。ステップS210において、推奨広告ウィンドウサイズRWINが減少したか否かを、調整部233は判断する。具体的には、調整部233は、推奨広告ウィンドウサイズRWIN(t)と、前回受信した推奨広告ウィンドウサイズRWIN(t−1)と、を比較する。
推奨広告ウィンドウサイズが減少した場合(ステップS210のYes分岐)には、補正係数αを減少させる(ステップS211)。そして、ステップS213に遷移する。
具体的には、RWIN(t)−RWIN(t−1)<0の場合(ステップS210のYes分岐)には、受信端末300から広告される推奨広告ウィンドウサイズRWINが減少した、と調整部233は判断する。これは、受信端末300が、前回のデータを受信した時より、受信できるデータ量が減少したことを意味する。そのため、この場合、調整部233は、前回のデータ送信時の補正広告ウィンドウサイズRWIN_new(t−1)より、補正広告ウィンドウサイズRWIN_new(t)が減少するように、補正係数αを減少させる。
例えば、推奨広告ウィンドウサイズが減少した場合(ステップS210のYes分岐)には、調整部233は、以下の式4に基づいて、補正係数αを算出する。
上記の式4において、Δは所定の定数(例えば、Δ=0.1)であっても良い。または、調整部233は、所定の関数を用いて、Δを算出しても良い。例えば、調整部233は、通信開始からの時間が経過するほど、Δが減少するように、Δを算出しても良い。
一方、推奨広告ウィンドウサイズが増加した場合(ステップS210のNo分岐)には、補正係数αを増加させる(ステップS212)。そして、ステップS213に遷移する。
具体的には、RWIN(t)−RWIN(t−1)>0の場合(ステップS210のNo分岐)には、受信端末300から広告される推奨広告ウィンドウサイズRWINが増加した、と調整部233は判断する。これは、受信端末300が、前回のデータを受信した時より、多くのデータ量を受信できることを意味する。そのため、この場合、調整部233は、前回のデータ送信時の補正広告ウィンドウサイズRWIN_new(t−1)より、補正広告ウィンドウサイズRWIN_new(t)が増大するように、補正係数αを増加させる。
例えば、推奨広告ウィンドウサイズが増加した場合(ステップS210のNo分岐)には、調整部233は、以下の式5に基づいて、補正係数αを算出する。上述の式4と同様に、Δは所定の定数(例えば、Δ=0.1)であっても良い。また、上述の式4と同様に、調整部233は、所定の関数を用いて、Δを算出しても良い。
なお、図8には図示しないが、推奨広告ウィンドウサイズが変化しない場合(即ち、RWIN(t−1)=RWIN(t))には、調整部233は、上述の式3に基づいて算出された補正係数αを採用する。
ステップS213において、上述の式2に基づいて、補正広告ウィンドウサイズRWIN_new(t)を推定する。
ステップS214において、上述の式1に、補正広告ウィンドウサイズRWIN_new(t)を適用して、送信可能データ量SWINを算出する。
[変形例1]
本実施形態に係る送信端末200の変形例1として、データ送信部234は、推奨広告ウィンドウサイズRWINの変化に基づいて、当該推奨広告ウィンドウサイズRWINの送信元の通信相手端末(受信端末300)が達成可能な受信速度を推定し、推定結果に基づいて、データの送信速度を決定しても良い。上述の通り、推奨広告ウィンドウサイズRWINが減少した場合、調整部233は、補正係数αを減少させ、補正広告ウィンドウサイズRWIN_newを減少させて推定する。そこで、受信端末300において受信速度の低下を抑制するために、データ送信部234は、推奨広告ウィンドウサイズRWINが減少した場合、送信速度を向上させても良い。
また、上述の通り、推奨広告ウィンドウサイズRWINが増加した場合、調整部233は、補正係数αを増加させ、補正広告ウィンドウサイズRWIN_newを増加させて推定する。そこで、受信端末300において達成可能な受信速度を越えないように、データ送信部234は、推奨広告ウィンドウサイズRWINが増加した場合、送信速度を低下させても良い。
また、調整部233は、広告ウィンドウサイズRWINの増減の代わりに、パケットロスの有無に基づいて補正係数αを調整しても良い。送信端末200(調整部233)は、受信端末からのACKパケットを観察し、パケットロスを示す信号(重複ACK)を検出した場合は、補正係数αを減少させる。一方、送信端末200(調整部233)は、パケットロスがなくパケットが転送できた場合は補正係数αを増加させる。
以上の通り、本実施形態に係る送信端末200は、受信端末300から送信される推奨広告ウィンドウサイズに応じて、送信データ量の過大量を調整する。そのため、本実施形態に係る通信システム1は、第1の実施形態に係る通信システム1と同様の効果を奏するとともに、受信端末300が広告ウィンドウサイズを制御する機能を備えていない場合であっても、送信端末200から受信端末300への通信効率を向上させることに貢献する。
[第3の実施形態]
次に、第3の実施形態について説明する。
本実施形態は、受信端末から広告される推奨広告ウィンドウサイズが0になるまでに、受信端末が受信したデータ量を、送信可能データ量として記憶する形態である。なお、本実施形態における説明では、上記の実施形態と重複する部分の説明は省略する。さらに、本実施形態における説明では、上記の実施形態と同一の構成要素には、同一の符号を付し、その説明を省略する。また、本実施形態における説明では、上記の実施形態と同一の作用効果についても、その説明を省略する。
本実施形態に係る送信端末200、受信端末300の内部構成は、図3、図4に示す通りである。以下の説明では、第2の実施形態に係る送信端末200との相違点について、詳細に説明する。
本実施形態に係る調整部233は、通信相手端末(受信端末300)から推奨広告ウィンドウサイズRWINがゼロと広告された場合、推奨広告ウィンドウサイズRWINがゼロになるまでに、当該通信相手端末(受信端末300)が受信したデータ量を、送信可能なデータ量として決定する。
具体的には、本実施形態に係る調整部233は、受信端末300から広告された推奨広告ウィンドウサイズRWINがゼロであるか否かを判断する。そして、受信端末300から広告された推奨広告ウィンドウサイズRWINがゼロである場合には、調整部233は、推奨広告ウィンドウサイズRWINがゼロになるまでに、受信端末300において受信されたデータ量を、送信端末200が送信可能データ量として、セグメント記憶部231に記憶させる。
以上のように、本実施形態に係る送信端末200は、受信端末から広告される推奨広告ウィンドウサイズが0になるまでに、受信端末が受信したデータ量を、送信可能データ量として記憶する。そのため、本実施形態に係る通信システム1は、第1の実施形態に係る通信システム1と同様の効果を奏するとともに、送信端末200が受信端末300の許容データ量の範囲内でデータを送信することに貢献する。
[第4の実施形態]
次に、第4の実施形態について説明する。
本実施形態は、送信可能データ量が、受信端末300において実際に受信可能なデータ量の範囲内となるように、補正広告ウィンドウサイズRWIN_newを推定する形態である。なお、本実施形態における説明では、上記の実施形態と重複する部分の説明は省略する。さらに、本実施形態における説明では、上記の実施形態と同一の構成要素には、同一の符号を付し、その説明を省略する。また、本実施形態における説明では、上記の実施形態と同一の作用効果についても、その説明を省略する。
本実施形態に係る送信端末200、受信端末300の内部構成は、図3、図4に示す通りである。以下の説明では、第2の実施形態に係る送信端末200との相違点について、詳細に説明する。
本実施形態に係る調整部233は、送信データの確認応答ACKとして、通信相手端末(受信端末300)から、通信コネクションのリセットを示すパケットを含む確認応答ACKを受信した場合、当該確認応答に対応する前記送信データのデータサイズを、一度に送信不可能なデータサイズとして決定する。
補正係数αの上限値α_maxを用いて算出される、補正広告ウィンドウサイズRWIN_newは、一度に送信可能なデータ量の上限値(以下、「送信可能上限データ量」と呼ぶ)に相当する。即ち、一度に送信不可能なデータ量とは、送信可能上限データ量を越えるデータ量である。
具体的には、調整部233は、受信端末300から、リセットフラグのあるパケットを受信した場合、当該リセットフラグのあるパケットに対応する、データ送信時の補正係数αに基づいて、上限値α_maxを推定する。調整部233は、推定した上限値α_maxを、セグメント記憶部231に記憶させる。そのため、調整部233は、記憶された上限値α_maxに基づいて、一度に送信不可能なデータ量を算出できる。
データ送信時には、調整部233は、補正係数αを、上限値α_max以下に決定する。そして、調整部233は、決定した補正係数αを用いて、第2の実施形態と同様に、補正広告ウィンドウサイズRWIN_newを推定する。
なお、上限値α_maxの初期値は、十分に大きい値であるものとする。また、調整部233は、同一の受信端末300との通信履歴がある場合、記憶されている上限値α_maxの値を、上限値α_maxの初期値として利用しても良い。
図9、図10は、本実施形態に係る送信端末200の動作の一例を示すフローチャートである。
図9に示すステップS301〜ステップS309は、図5に示すステップS101〜ステップS109と同一であるため、詳細な説明を省略する。
ここで、受信端末が300から確認応答ACKを受信した(ステップS309のYes分岐)とする。その場合、図10に示す「A」(ステップS310)に遷移し、図10に示すステップS311に遷移する。
ステップS311において、受信した確認応答ACK(t)が、リセットフラグのあるパケットであるか否かを、調整部233は判断する。なお、リセットフラグのあるパケットを受信することは、通信コネクションが切断されたことを意味する。つまり、ステップS311において、通信コネクションが切断されたか否かを、調整部233は判断する。
リセットフラグのあるパケットである場合(ステップS311のYes分岐)には、調整部233は、補正係数αの上限α_maxを、以下の式6に基づいて算出する(ステップS312)。そして、ステップS313に遷移する。
なお、以下の式6において、Δは、上記の式4、式5と同一の値であっても良い。あるいは、調整部233は、補正係数αと、上限値α_maxの差分に基づいて、Δを算出しても良い。具体的には、調整部233は、以下の式7に基づいて、Δを算出しても良い。なお、式7において、βは、所定の定数であるとする。
また、上述の通り、調整部233は、通信開始からの時間が経過するほど、Δが減少するように、Δを算出しても良い。
一方、リセットフラグのあるパケットではない場合(ステップS311のNo分岐)には、ステップS313に遷移する。
ステップS313において、推奨広告ウィンドウサイズRWINが減少したか否かを、調整部233は判断する。推奨広告ウィンドウサイズRWINが減少した場合(ステップS313のYes分岐)には、調整部233は、補正係数αを減少させる(ステップS314)。具体的には、第2の実施形態と同様に、上述の式4の通りに、補正係数αを減少させる。そして、ステップS316に遷移する。
ステップS316において、調整部233は、以下の式8に基づいて、α_maxを更新する。そして、ステップS317に遷移する。
一方、推奨広告ウィンドウサイズRWINが増加した場合(ステップS313のNo分岐)には、調整部233は、補正係数αを増加させる(ステップS315)。具体的には、第2の実施形態と同様に、上述の式5の通りに、補正係数αを増加させる。そして、ステップS317に遷移する。なお、第2の実施形態と同様に、図10には図示しないが、推奨広告ウィンドウサイズが変化しない場合(即ち、RWIN(t−1)=RWIN(t))には、調整部233は、上述の式3に基づいて算出された補正係数αを採用する。
ステップS317において、以下の式9に基づいて、補正広告ウィンドウサイズRWIN_new(t)を推定する。
ステップS318において、上述の式1に、補正広告ウィンドウサイズRWIN_new(t)を適用して、送信可能データ量SWINを算出する。そして、図10に示す「B」(ステップS319)に遷移し、図9に示すステップS302に戻り、処理を継続する。
[変形例1]
本実施形態に係る送信端末200の変形例1として、送信端末200は、リセットフラグのあるパケットの有無に基づいて、送信速度を決定しても良い。具体的には、データ送信部234は通信相手端末(受信端末300)から送信される確認応答ACKにおける、通信コネクションのリセットを示すパケットの有無に基づいて、当該確認応答の送信元の通信相手端末(受信端末300)の受信速度を推定しても良い。そして、データ送信部234は、推定結果に基づいて、データの送信速度を決定しても良い。
上述の通り、リセットフラグのあるパケットを受信することは、通信コネクションが切断されたことを意味する。そこで、リセットフラグのあるパケットを受信した場合、受信端末300において達成可能な受信速度を越えないように、データ送信部234は、送信速度を低下させても良い。
以上の通り、本実施形態に係る送信端末200は、受信端末300において実際に受信可能なデータ量の範囲内となるように、1回の送信可能データ量を決定する。そのため、本実施形態に係る通信システム1は、第1の実施形態に係る通信システム1と同様の効果を奏するとともに、送信端末200がデータを送りすぎることで、受信端末300がデータを消失させることを防止できる。
[第5の実施形態]
次に、第5の実施形態について説明する。
本実施形態は、送信端末200が、受信端末300において受信可能なデータ量の上限を推定し、当該上限を越えないように、データを送信する形態である。なお、本実施形態における説明では、上記の実施形態と重複する部分の説明は省略する。さらに、本実施形態における説明では、上記の実施形態と同一の構成要素には、同一の符号を付し、その説明を省略する。また、本実施形態における説明では、上記の実施形態と同一の作用効果についても、その説明を省略する。
本実施形態に係る送信端末200、受信端末300の内部構成は、図3、図4に示す通りである。以下の説明では、第2の実施形態に係る送信端末200との相違点について、詳細に説明する。
本実施形態に係るデータ送信部234は、単位時間当たりに送信可能なデータ量が、所定の閾値より少ない場合、補正広告ウィンドウサイズRWIN_newに基づいて決定した送信可能データ量のデータを通信相手端末(受信端末300)に送信する。
図11、図12は、本実施形態に係る送信端末200の動作の一例を示すフローチャートである。
図11に示すステップS401〜ステップS404は、図5に示すステップS101〜ステップS104と同一であるため、詳細な説明を省略する。
TCP送信部230が送信パケットを作成した後(ステップS404)、送信データが、送信可能なデータ量の範囲内であるか否かを、データ送信部234は判断する(ステップS405)。送信データが、送信可能なデータ量の範囲内である場合(ステップS405のYes分岐)には、ステップS406に遷移する。一方、送信データが、送信可能なデータ量の範囲内ではない場合(ステップS405のNo分岐)には、ステップS404に戻り、処理を継続する。
ステップS406において、単位時間当たりに送信可能なデータ量が、閾値MAX_BURST以下であるか否かを、データ送信部234は判断する。単位時間当たりに送信可能なデータ量が、閾値MAX_BURST以下である場合(ステップS406のYes分岐)には、データ送信部234は送信パケットを送信する(ステップS407)。つまり、送信データが、送信可能なデータ量の範囲内であるとともに、単位時間当たりに送信可能なデータ量が、閾値MAX_BURST以下である場合、データ送信部234は送信パケットを送信する。
TCP送信部230は、単位時間当たりに送信可能なデータ量の統計値を、閾値MAX_BURSTとして算出する。例えば、受信端末300から送信される推奨広告ウィンドウサイズが減少した場合、当該減少後の値を、単位時間当たりに送信可能なデータ量を用いて、閾値MAX_BURSTとして算出しても良い。なお、閾値MAX_BURSTの初期値は、十分に大きな値であるとする。
一方、単位時間当たりに送信可能なデータ量が、閾値MAX_BURSTを越える場合(ステップS406のNo分岐)には、ステップS404に戻り、処理を継続する。
なお、図11においては、ステップS405の処理と、ステップS404の処理とを、異なる処理として図示するが、ステップS405の処理、及びステップS406の処理を、一つの処理として、データ送信部234はデータ送信の可否を判断しても良いことは勿論である。
データ送信部234が送信パケットを送信(ステップS407)した後、ステップS408に遷移する。なお、ステップS408〜ステップS410の処理は、図5に示すステップS107〜ステップS109の処理と同一であるため、詳細な説明を省略する。
受信端末300から確認応答ACKを受信した場合(ステップS410のYes分岐)には、図12に示す「C」(ステップS411)に遷移し、図12に示すステップS412に遷移する。
ステップS412において、推奨広告ウィンドウサイズRWINが減少したか否かを、調整部233は判断する。推奨広告ウィンドウサイズRWINが減少したか否かに関する判断の詳細は上述の通りであるため、詳細な説明を省略する。
推奨広告ウィンドウサイズが減少した場合(ステップS412のYes分岐)には、調整部233は、補正係数αを減少させる(ステップS413)。具体的には、第2の実施形態と同様に、上述の式4の通りに、補正係数αを減少させる。そして、ステップS414に遷移する。
ステップS414において、調整部233は、第4の実施形態と同様に、上述の式8に基づいて、α_maxを更新する。
ステップS415において、TCP送信部230は、閾値MAX_BURSTを更新する。そして、ステップS417に遷移する。
ここで、推奨広告ウィンドウサイズRWINが減少したことは、受信端末300において、前回の送信データ量が、受信可能な上限のデータ量以上であったことを意味する。これは、受信端末300において、受信可能な上限のデータ量は、補正広告ウィンドウサイズRWIN_new(t−1)に対応する送信可能データ量SWINより少ないことを意味する。そこで、TCP送信部230は、補正広告ウィンドウサイズRWIN_new(t−1)に対応する送信可能データ量SWINを、閾値MAX_BURSTとして決定する。
送信端末200が、前回算出された送信可能データ量SWINを、閾値MAX_BURSTとして決定すると、送信端末200は、以降のデータ送信時には、前回算出された、送信可能データ量SWINを越えるデータ量を送信できない(図11に示すステップS406参照)。その結果、送信端末200が、受信端末において受信可能である、上限値以下のデータ量を送信することで、受信端末300において、送信パケットの廃棄が発生しないとともに、送信端末200と、受信端末300との間において、通信効率を向上できる。
一方、推奨広告ウィンドウサイズが増加した場合(ステップ412のNo分岐)には、調整部233は、補正係数αを増加させる(ステップS416)。具体的には、第2の実施形態と同様に、上述の式5の通りに、補正係数αを増加させる。そして、ステップS417に遷移する。なお、第2の実施形態と同様に、図12には図示しないが、推奨広告ウィンドウサイズが変化しない場合(即ち、RWIN(t−1)=RWIN(t))には、調整部233は、上述の式3に基づいて算出された補正係数αを採用する。
ステップS417において、上述の式9に基づいて、補正広告ウィンドウサイズRWIN_new(t)を推定する。
ステップS418において、上述の式1に、補正広告ウィンドウサイズRWIN_new(t)を適用して、送信可能データ量SWINを算出する。そして、図12に示す「D」(ステップS419)に遷移し、図11に示すステップS402に戻り、処理を継続する。
以上の通り、本実施形態に係る送信端末200は、受信端末300において受信可能なデータ量の上限を推定し、当該上限を越えないように、データを送信する、そのため、本実施形態に係る通信システム1は、第1の実施形態に係る通信システム1と同様の効果を奏するとともに、受信端末300が広告ウィンドウサイズを制御する機能を備えていない場合であっても、送信端末200から受信端末300への通信効率を向上させることに貢献する。
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
(付記1)上記の第1の視点に係る通信端末の通りである。
(付記2)前記調整部は、基準遅延時間に対する通信遅延時間の比を算出し、前記比を前記補正件数として決定する、付記1に記載の通信端末。
(付記3)前記調整部は、第1の前記推奨広告ウィンドウサイズと、第1の前記推奨広告ウィンドウサイズを受信後における第2の前記推奨広告ウィンドウサイズとの差分に基づいて、前記補正係数を増減する、付記1又は2に記載の通信端末。
(付記4)前記調整部は、パケットロスの有無に基づいて、前記補正係数を増減する、付記1又は2に記載の通信端末。
(付記5)前記調整部は、前記通信相手端末から前記推奨広告ウィンドウサイズがゼロと広告された場合、前記推奨広告ウィンドウサイズがゼロになるまでに、当該通信相手端末が受信したデータ量を、送信可能なデータ量として決定する、付記1乃至4のいずれか一に記載の通信端末。
(付記6)前記調整部は、送信データの確認応答として、前記通信相手端末から、通信コネクションのリセットを示すパケットを含む確認応答を受信した場合、当該確認応答に対応する前記送信データのデータサイズを、一度に送信不可能なデータサイズとして決定する、付記1乃至5のいずれか一に記載の通信端末。
(付記7)前記データ送信部は、単位時間当たりに送信可能なデータ量が、所定の閾値より少ない場合、前記補正広告ウィンドウサイズに基づいて決定した前記送信可能データ量のデータを前記通信相手端末に送信する、付記1乃至6のいずれか一に記載の通信端末。
(付記8)前記データ送信部は、前記推奨広告ウィンドウサイズの変化に基づいて、当該推奨広告ウィンドウサイズの送信元の前記通信相手端末が達成可能な受信速度を推定し、推定結果に基づいて、データの送信速度を決定する、付記1乃至7のいずれか一に記載の通信端末。
(付記9)前記データ送信部は、前記通信相手端末から送信される確認応答における、通信コネクションのリセットを示すパケットの有無に基づいて、当該確認応答の送信元の前記通信相手端末の受信速度を推定し、推定結果に基づいて、データの送信速度を決定する、付記1乃至8のいずれか一に記載の通信端末。
(付記10)通信端末と、前記通信端末の通信相手端末とが、ネットワークを介して接続する通信システムであって、前記通信相手端末は、前記通信端末からデータを受信した場合、当該通信相手端末の受信可能なデータ量を示す、推奨広告ウィンドウサイズを含む確認応答を、前記通信端末に返信し、前記通信端末は、前記通信相手端末から、前記推奨広告ウィンドウサイズを受信した場合、前記通信相手端末との通信状況に基づいて補正係数を決定し、前記補正係数に基づいて、当該推奨広告ウィンドウサイズ以上の補正広告ウィンドウサイズを決定する調整部と、前記補正広告ウィンドウサイズに基づいて、送信可能データ量を決定するデータ送信部と、
を備える通信システム。
(付記11)上記第2の視点に係る通信方法の通りである。
(付記12)上記第3の視点に係るプログラムの通りである。
なお、上記の付記10乃至12に示す形態は、付記1に示す形態と同様に、付記2乃至9に示す形態に展開することが可能である。
なお、上述の特許文献の開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素(各請求項の各要素、各実施形態の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。