説明

通信装置、通信システム、プログラム及び通信方法

【課題】広帯域及び高遅延環境において、スループットを向上させることができる通信装置等の技術を提供すること。
【解決手段】送信側通信装置1は、受信ウィンドウサイズ(Rwnd=3)が通知されると、通知された受信ウィンドウサイズに応じて、1〜3番目までのパケットを受信側通信装置2に送信する。送信側通信装置1は、ack=4の確認応答を受信すると、4〜6番目のパケットを送信する。送信側通信装置1は、広帯域及び高遅延環境である場合、パケットの送信が停止される期間を予測し、ack=7が受信される前に、7〜9番目のパケットを追加的に送信する。この場合、送信側通信装置1は、送信ウィンドウサイズを受信ウィンドウサイズよりも大きくして、拡大送信を実行する。受信側通信装置2の受信バッファは、空いている状態であるので、追加的に送信された7〜9番目のパケットは、受信側通信装置2に届く。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、TCP(Transmission Control Protocol)等の通信方式によって他の通信装置と通信する通信装置等の技術に関する。
【背景技術】
【0002】
TCPは、現在、インターネットやイントラネット等で広く利用されている。TCPでは、データを受信側の通信装置が、データを送信する側の通信装置からパケットを受信した場合、受信側の通信装置は、送信側の通信装置に対して、確認応答(ack:acknowledgement)を返すように構成されている。これにより、TCPでは、信頼性の高い通信を実現することができる。
【0003】
TCPでは、スライドウィンドウ方式が採用されており、送信側の通信装置は、確認応答(ack)が届く度にウィンドウをスライドさせるようにしてパケットを順番に受信側の送信装置へ送信する。
【0004】
また、TCPでは、一般的にフロー制御と、輻輳制御が実行される。フロー制御では、受信側の通信装置が、送信側の通信装置に対して、最新の受信ウィンドウサイズを通知する。送信側の通信装置は、通知された受信ウィンドウサイズに応じた送信量のパケットを送信する。これにより、受信側の通信装置の受信バッファからパケットが溢れ出してしまうことを防止することができる。
【0005】
一方、輻輳制御では、送信側の通信装置が、スロースタートアルゴリズム及び輻輳回避アルゴリズムに従って、輻輳ウィンドウサイズを制御することで、ネットワークの輻輳(混雑)を回避している。スロースタートアルゴリズムでは、最初に輻輳ウィンドウサイズが1MSS(Maximum Segment Size)に設定され、徐々に輻輳ウィンドウサイズが大きくされる。輻輳回避アルゴリズムでは、パケットの紛失等や、RTT(Round Trip Time)の変化から輻輳を検知し、輻輳ウィンドウサイズが調整される等の処理が実行される。なお、送信側の通信装置からパケットが送信される場合、輻輳ウィンドウサイズ及び受信ウィンドウのうち、小さいほうのウィンドウサイズに対応する送信量のパケットが送信される。
【0006】
なお、TCPに関連する技術は、下記特許文献1、2等に記載されている。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2006−005833号公報
【特許文献2】特開2006−279730号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
ここで、送信側の通信装置と、受信側の通信装置との間の経路の帯域が広帯域であり、かつ、上記経路が長く、RTTが大きい(以下、高遅延と呼ぶ)場合を想定する。この場合、上記経路が広帯域環境であるので、輻輳ウィンドウサイズが受信ウィンドウサイズに達し、送信側の通信装置から送信されるパケットの送信量は、受信ウィンドウサイズによって決定される。すなわち、フロー制御が支配的な状態となる。上記経路が長く、RTTが大きい(高遅延)場合、実際には、受信側の送信装置の受信バッファが空いている期間が長いにも拘らず、送信側の通信装置は、フロー制御により、受信ウィンドウサイズに対応する送信量のデータしか送信することができない。すなわち、広帯域及び高遅延環境において、フロー制御による制限によって、スループットが上がらないといった問題がある。
【0009】
以上のような事情に鑑み、本発明の目的は、広帯域及び高遅延環境において、スループットを向上させることができる通信装置等の技術を提供することにある。
【課題を解決するための手段】
【0010】
上記目的を達成するため、本発明の一形態に係る通信装置は、通信部と、制御部とを具備する。
前記通信部は、受信側通信装置から受信ウィンドウサイズを受信し、かつ、送信ウィンドウサイズに応じた送信量のパケットを前記受信側通信装置に送信する。
前記制御部は、前記受信側通信装置との間の経路が広帯域及び高遅延環境であるか否かを判定し、広帯域及び高遅延環境であると判定された場合に、前記送信ウィンドウサイズが前記受信ウィンドウサイズを超えない第1のウィンドウサイズとされる第1の状態を、前記送信ウィンドウサイズが前記受信ウィンドウサイズを超える第2のウィンドウサイズとされる第2の状態へ切り替え、前記第2の状態で前記受信ウィンドウサイズを超えた送信量の前記パケットを送信する。
【0011】
この通信装置では、広帯域及び高遅延環境である場合に、送信ウィンドウサイズが、受信ウィンドウサイズを超えるサイズ(第2のウィンドウサイズ)とされ、受信ウィンドウサイズを超えた送信量のパケットが送信される。これにより、広帯域及び高遅延環境下において、スループットを向上させることができる。
【0012】
上記通信装置において、前記通信部は、前記通信部は、確認応答を前記受信側通信装置から受信してもよい。この場合、前記制御部は、前記確認応答が受信されるタイミングで前記パケットを前記送信部から送信させ、かつ、前記第2の状態で、前記確認応答の受信タイミングから前記パケットの送信が停止される期間を予測し、前記期間に前記パケットを追加的に前記送信部から送信させてもよい。
【0013】
この通信装置では、受信側の通信装置に対して、適切なタイミングで、パケットを追加的に送信することができる。
【0014】
上記通信装置において、前記制御部は、前記期間内に前記パケットを分散して前記送信部から送信させてもよい。
【0015】
このように、パケットを分散して送信することで、バースト送信を回避することができる。これにより、経路の途中でパケットが紛失してしまうことを防止することができる。
【0016】
上記通信装置において、前記制御部は、前記第2の状態で、前記確認応答が所定時間内に集中して受信されたかを判定し、前記確認応答が集中して受信された場合に、前記確認応答の受信タイミングに応じた前記パケットの送信を部分的に規制してもよい。
【0017】
このように、前記確認応答が集中して受信された場合に、前記確認応答の受信タイミングに応じた前記パケットの送信を部分的に規制することで、バースト送信を回避することができる。これにより、経路の途中でパケットが紛失してしまうことを防止することができる。
【0018】
上記通信装置において、前記制御部は、送信された前記パケットの前記経路上での紛失を検知し、前記第2の状態で前記パケットの紛失が検知された場合に、前記送信ウィンドウサイズが第2のウィンドウサイズとされる前記第2の状態を、前記ウィンドウサイズが前記第2のウィンドウサイズよりも小さい第3のウィンドウサイズとされる第3の状態へ切り替えてもよい。
【0019】
これにより、紛失したパケットを適切に再送することができる。
【0020】
上記通信装置において、前記制御部は、前記第2の状態が前記第3の状態に切り替えられた場合に、第3のウィンドウサイズを超えて既に送信済みのパケットは、送信しなかったとして扱ってもよい。
【0021】
このように、第3のウィンドウサイズを超えて既に送信済みのパケットを、送信しなかったとして扱うことで、パケット紛失によるエラーから速やかに回復することができる。
【0022】
上記送信装置において、前記第3のウィンドウサイズは、前記受信ウィンドウサイズよりも大きくてもよい。
【0023】
このように、第3のウィンサイズを受信ウィンドウサイズよりも大きくすることで、パケット紛失によるエラーからの回復がさらに速くなる。
【0024】
上記通信部において、前記通信部は、選択確認応答を前記受信側通信装置から受信し、前記制御部は、前記選択確認応答に基づいて、前記第3のウィンドウサイズの大きさを補正してもよい。
【0025】
これにより、パケット紛失によるエラーからの回復がさらに速くなる。
【0026】
上記通信装置において、前記制御部は、前記第2の状態が前記第3の状態へ切り替えられる頻度を判定し、前記頻度が所定の閾値よりも大きい場合には、前記第2の状態での前記受信ウィンドウサイズを超えた送信量の前記パケットの送信を規制してもよい。
【0027】
これにより、パケット紛失による再送が頻発する場合には、受信ウィンドウサイズを超えたパケットの送信が規制される。
【0028】
上記通信装置において、前記制御部は、前記第2の状態が前記第3の状態へ切り替えられる頻度に応じて、前記第2のウィンドウサイズを可変に制御してもよい。
【0029】
これにより、例えば、パケットの再送が頻繁に起きる場合には、第2のウィンドウサイズを大きくし、パケットの再送が頻繁に起こらないようであれば、第2のウィンドウサイズを小さくする等、第2のウィンドウサイズを適切に変化させることができる。
【0030】
本発明の一形態に係る通信システムは、受信側通信装置と、送信側通信装置とを具備する。
前記送信側通信装置は、通信部と、制御部とを有する。
前記通信部は、前記受信側通信装置から受信ウィンドウサイズを受信し、かつ、送信ウィンドウサイズに応じた送信量のパケットを前記受信側通信装置に送信する。
前記制御部は、前記受信側通信装置との間の経路が広帯域及び高遅延環境であるか否かを判定し、広帯域及び高遅延環境であると判定された場合に、前記送信ウィンドウサイズが前記受信ウィンドウサイズ超えない第1のウィンドウサイズとされる第1の状態を、前記送信ウィンドウサイズが前記受信ウィンドウサイズを超える第2のウィンドウサイズとされる第2の状態へ切り替え、前記第2の状態で前記受信ウィンドウサイズを超えた送信量の前記パケットを送信する。
【0031】
本発明の一形態に係るプログラムは、通信装置に、受信側通信装置から受信ウィンドウサイズを受信するステップを実行させる。
送信ウィンドウサイズに応じた送信量のパケットを受信側通信装置に送信するステップを実行させる。
前記受信側通信装置との間の経路が広帯域及び高遅延環境であるか否かを判定するステップを実行させる。
広帯域及び高遅延環境であると判定された場合に、前記送信ウィンドウサイズが前記受信ウィンドウサイズを超えない第1のウィンドウサイズとされる第1の状態を、前記送信ウィンドウサイズが前記受信ウィンドウサイズを超える第2のウィンドウサイズとされる第2の状態へ切り替えるステップを実行させる。
前記第2の状態で前記受信ウィンドウサイズを超えた送信量の前記パケットを送信するステップを実行させる。
【0032】
本発明の一形態に係る通信方法は、受信側通信装置から受信ウィンドウサイズを受信することを含む。
送信ウィンドウサイズに応じた送信量のパケットを受信側通信装置が送信される。
前記受信側通信装置との間の経路が広帯域及び高遅延環境であるか否かが判定される。
広帯域及び高遅延環境であると判定された場合に、前記送信ウィンドウサイズが前記受信ウィンドウサイズを超えない第1のウィンドウサイズとされる第1の状態が、前記送信ウィンドウサイズが前記受信ウィンドウサイズを超える第2のウィンドウサイズとされる第2の状態へ切り替えられる。
前記第2の状態で前記受信ウィンドウサイズを超えた送信量の前記パケットが送信される。
【発明の効果】
【0033】
以上説明したように、本発明の一形態によれば、広帯域及び高遅延環境において、スループットを向上させることができる通信装置等の技術を提供することができる。
【図面の簡単な説明】
【0034】
【図1】本発明の一実施形態に係る通信システムを示す図である。
【図2】OTCPの基本的な考え方を説明するための図である。
【図3】OTCPの基本的な考え方を説明するための図である。
【図4】TCPに基づく通常送信と、OTPCに基づく拡大送信の切りかえるときの動作を示すフローチャートである。
【図5】通常送信中、拡大送信中などの各状態における、送信ウィンドウサイズ(輻輳ウィンドウサイズ)を示す図である。
【図6】パケットの送信パターンの測定から拡大送信までの処理を示すフローチャートである。
【図7】パケット送信停止期間の予測について説明するための図であり、パケットの送信タイミングを示す図である。
【図8】追加送信時刻と、追加送信量とが決定される際の処理を説明するための図である。
【図9】追加送信時刻と、追加送信量とが決定される際の処理を説明するための図である。
【図10】バーストackに対するバースト送信を防止する際の処理を示すフローチャートである。
【図11】図10に示す処理を説明するための補足図であり、記憶スロットに記憶される時刻の変化の様子を示す図である。
【図12】OTPCに基づく拡大送信中においてエラーが発生した場合のリカバリの問題を説明するためのシーケンス図である。
【図13】送信側通信装置が、素早くエラーから復帰する処理を示すシーケンス図である。
【図14】エラーから復帰(リカバリ)する際の処理を示すフローチャートである。
【図15】エラーから復帰(リカバリ)する際の処理を示すフローチャートである。
【発明を実施するための形態】
【0035】
<通信システム及び通信装置の構成>
以下、図面を参照しながら、本発明の実施形態を説明する。図1は、本実施形態に係る通信システム100を示す図である。
【0036】
図1に示すように、通信システム100は、相互にネットワークを介して接続された送信側通信装置1及び受信側通信装置2を有する。送信側通信装置1は、データを送信する側の通信装置であり、受信側通信装置2は、データを受信する側の通信装置である。通信装置1、2としては、例えば、サーバ、PC(Personal Computer)、携帯電話機などが挙げられるがこれらに限られない。
【0037】
送信側通信装置1は、通信部11と、制御部12と、記憶部13とを有する。同様に、受信側通信部11も、通信部21と、制御部22と、記憶部23とを有する。制御部12、22は、例えば、CPUであり、通信装置1、2の各部を統括的に制御する。記憶部13、23は、通信装置1、2の制御に必要な各種のプログラムや、各種のデータを記憶するHDD(Hard Disc Drive)、SSD(Solid State Drive)等を含む。また、記憶部13、23は、制御部12の作業領域として用いられる不揮発性のメモリ(例えば、RAM(Random Access Memory))を含む。
【0038】
送信側通信装置1の通信部11は、送信すべきデータ等を含むパケットを受信側通信装置2に送信したり、受信側通信装置2からパケットを受信したりする。受信側通信装置2の通信部11は、送信側通信装置1から送信されたパケットを受信したり、確認応答(ack:acknowledgement)等の情報を含むパケットを送信側通信装置1に送信したりする。
【0039】
<動作説明>
次に、本実施形態に係る通信システム100の動作について説明する。
本実施形態に係る通信システム100では、通常のTCPに従って、パケットの通常送信が実行される第1の状態と、本実施形態の特徴に係るOTCP(Optimistic TCP:楽観的TCP)に従って、パケットの拡大送信が実行される第2の状態とを有している。
【0040】
[通常のTCPに従う場合の動作]
まず、通信システム100が、通常のTCPに従って通信する場合について説明する。まず、通信システム100は、3ウェイハンドシェイクにより、TCPコネクションを確立する。3ウェイハンドシェイクでは、MSS(Maximum Segment Size)が決定される。送信側通信装置1から送信されるデータがMSSを超える場合、送信側においてデータが複数のパケットに分割される。
【0041】
通信システム100では、スライドウィンドウ方式が採用されており、送信側通信装置1は、確認応答(ack)が届く度に送信ウィンドウをスライドさせるようにしてパケットを順番に受信側の送信装置へ送信する。
【0042】
また、通信システム100では、フロー制御と、輻輳制御とが実行される。フロー制御では、受信側通信装置2は、確認応答(ack)を送信する際に、受信ウィンドウサイズ(Rwnd)を送信側通信装置1に通知する。この場合、受信側通信装置2は、TCPヘッダの中に存在する受信ウィンドウサイズのフィールドに現在の受信ウィンドウサイズを入れて、送信側通信装置1に送信する。送信ウィンドウサイズは、受信ウィンドウサイズを超えない大きさとされ、これにより、送信側から送信されたパケットが受信装置の受信バッファから溢れ出してしまうことが防止される。
【0043】
輻輳制御では、送信側通信装置1には、輻輳ウィンドウが設定され、送信側通信装置1は、例えば、スロースタートアルゴリズムや、輻輳回避アルゴリズム等に従って、輻輳ウィンドウサイズ(Cwnd)を制御する。スロースタートアルゴリズムでは、最初に輻輳ウィンドウサイズが1MSS(Maximum Segment Size)に設定され、徐々に輻輳ウィンドウサイズが大きくされる。輻輳回避アルゴリズムでは、パケットの紛失等や、RTT(Round Trip Time)の変化から輻輳を検知し、輻輳ウィンドウサイズが調整される等の処理が実行される。
【0044】
なお、送信装置から送信されるパケットの送信量は、輻輳ウィンドウサイズ及び受信ウィンドウのうち、小さいほうのウィンドウサイズに対応する送信量とされる。
【0045】
[OTPCの動作]
次に、OTCP(楽観的TCP)について説明する。
まず、OTCPの基本的な考え方について説明する。図2、図3は、OTCPの基本的な考え方を説明するための図である。なお、図2、3では、理解を容易にするために、受信ウィンドウサイズ(Rwnd)や、受信バッファサイズ等は、実際のサイズよりも小さく設定されている。
【0046】
図2に示すように、送信側通信装置1は、受信側通信装置2から受信ウィンドウサイズ(この例では、Rwnd=3)が通知されると、通知された受信ウィンドウサイズに応じて、1〜3番目までのパケットを受信側通信装置2に送信する。受信側通信装置2は、1〜3番目のパケットを受信バッファに記憶し、アプリケーションプログラムは、受信バッファに記憶された1〜3番目のパケットを受信バッファから引き抜く。
【0047】
受信側通信装置2は、1番目のパケットが受信されると、ack=2の確認応答を送信側通信装置1に送信し、2〜3番目のパケットが受信されると、ack=4の確認応答を送信側通信装置1に送信する。送信側通信装置1は、ack=2の確認応答が受信されると、送信ウィンドウをスライドさせて、4番目のパケットを送信し、ack=4が受信されると、5〜6番目のパケットを送信する。
【0048】
受信側通信装置2は、4〜5番目のパケットを受信バッファに記憶し、アプリケーションプログラムは、受信バッファに記憶された4〜5番目のパケットを受信バッファから引き抜く。
【0049】
図2の右側において破線で示す期間がRRTと略等しい期間となる。ここで、例えば、送信側通信装置1と、受信側通信装置2との距離が離れている(例えば、日本−US)等の理由により、RTTが大きく、高遅延環境である場合を想定する。このように、RTTが大きく、高遅延環境である場合、受信側通信装置2の受信バッファが空いている期間が大きい。
【0050】
図3を参照して、受信バッファが空いているならば、送信装置側から追加的にパケットを送信しても届くので、OTPCでは、受信バッファが空いている期間に、追加的にパケットを送信することとしている(7〜9番目のパケット参照)。
【0051】
図3に示す動作について、送信側通信装置1を基準にして簡単に説明する。送信側通信装置1は、受信ウィンドウサイズ(Rwnd=3)が通知されると、通知された受信ウィンドウサイズに応じて、1〜3番目までのパケットを受信側通信装置2に送信する。送信側通信装置1は、ack=4の確認応答を受信すると、4〜6番目のパケットを送信する。送信側通信装置1は、ack=7が受信される前に、7〜9番目のパケットを追加的に送信する。このとき、受信バッファは、空いている状態であるので、追加的に送信された7〜9番目のパケットは、受信側通信装置2に届く。
【0052】
「TCPに基づく通常送信と、OTPCに基づく拡大送信との切り替え」
次に、送信側通信装置1の処理について、具体的に説明する。まず、TCPに基づく通常送信と、OTPCに基づく拡大送信の切り替えについて説明する。
【0053】
図4は、そのときの送信側通信装置1の処理を示すフローチャートである。図5は、通常送信中、拡大送信中などの各状態における、送信ウィンドウサイズ(輻輳ウィンドウサイズ)を示す図である。
【0054】
ステップ101では、送信側通信装置1の制御部12は、通常のTCPに基づいて、通常送信を実行している。この通常のTCPに基づく通常送信については、上記した通りである。なお、図5(A)に示すように、通常送信中では、送信ウィドウサイズ(第1の送信ウィンドウサイズ)(snd_una〜snd_una)は、受信ウィンドウサイズよりも小さく設定されている。
【0055】
ステップ102では、制御部12は、受信側通信装置2から送信された確認応答(ack)が受信されたか否かを判定する。確認応答(ack)が受信された場合(ステップ102のYES)、制御部12は、輻輳ウィンドウサイズ(Cwnd)が、受信ウィンドウサイズ(Rwnd)以上であるかを判定する(ステップ103)。受信ウィンドウサイズは、確認応答と共にパケットにて受信側通信装置2から通知される。
【0056】
輻輳ウィンドウサイズが受信ウィンドウサイズ未満の場合(ステップ103のNO)、ステップ104へ進む。ステップ104では、制御部12は、前回ack受信時の受信ウィンドウサイズ(PreRwnd)を、今回受信した受信ウィンドウサイズ(Rwnd)とし、カウンタによるカウント値(Cnt)をゼロとする。そして、ステップ101へ戻る。
【0057】
輻輳ウィンドウサイズが受信ウィドウサイズ以上である場合(ステップ103のYES)、制御部12は、今回受信された受信ウィンドウサイズ(Rwnd)が、前回ack受信時の受信ウィンドウサイズ(PreRwnd)と等しいかを判定する(ステップ105)。今回の受信ウィンドウサイズが、前回の受信ウィンドウサイズと等しくない場合(ステップ105のNO)、制御部12は、ステップ104へ進む。そして、前回の受信ウィンドウサイズ(PreRwnd)を、今回の受信ウィンドウサイズ(Rwnd)をとし、カウンタによるカウント値(Cnt)をゼロとする。そして、ステップ101へ戻る。
【0058】
今回の受信ウィンドウサイズが、前回の受信ウィンドウサイズと等しい場合(ステップ105のYES)、制御部12は、カウンタによるカウント値を1プラスする(ステップ106)。次に、制御部12は、カウント値が3以上であるかを判定する(ステップ107)。カウント値が3未満である場合(ステップ107のNO)、制御部12は、ステップ101へ戻る。
【0059】
一方、カウント値が3以上である場合(ステップ107のYES)、制御部12は、パケットの送信パターンを測定する(ステップ108)。
【0060】
ステップ101〜107に示す処理では、制御部12は、送信側通信装置1と、受信側通信装置2との間の経路が広帯域及び高遅延(RTTが大きい)環境であるかを判定している。すなわち、上記経路が低帯域環境であったり、低遅延(RTTが小さい)環境であったりする場合、輻輳ウィンドウサイズは、受信ウィンドウサイズに達しない。一方、上記経路が広帯域及び高遅延環境である場合、輻輳ウィンドウサイズが受信ウィンドウサイズに達する。ステップ101〜107では、この関係を利用して、上記経路が広帯域及び高遅延環境であるかを判定している。そして、広帯域及び高遅延環境であると判定された場合、OTPCに基づくパケットの拡大送信が実行される(図3、図6参照)。
【0061】
「パケットの送信パターンの測定〜拡大送信」
図6は、パケットの送信パターンの測定から拡大送信までの処理を示すフローチャートである。
【0062】
図6に示すように、制御部12は、拡大送信に先立って、パケットの送信パターンを測定する(ステップ201)。そして、制御部12は、測定された測定パターンに応じて、追加送信時刻及び追加送信量を決定する(ステップ202)。次に、制御部12は、ステップ202で決定された追加送信時刻となったかを判定する(ステップ203)。追加送信時刻となった場合(ステップ203のYES)、制御部12は、ステップ202で決定された追加送信量分のパケットを送信する(ステップ204)。なお、ステップ204では、受信側通信装置2からの確認応答が受信されるタイミング以外のタイミングで、追加送信が実行される。以降では、OTPCに基づく拡大送信が実行される(ステップ205)。
【0063】
"パケットの送信停止期間の予測"
図6に示すステップ201では、送信パターンを測定することで、パケットの送信が停止される期間を予測している。図7は、パケット送信停止期間の予測について説明するための図であり、パケットの送信タイミングを示す図である。図7中、実線で表された三角形は、観測期間中に行われたパケットの送信タイミングを示しており、波線で表された三角形は、観測によって類推された、これから送信されるであろうパケットの送信タイミングを示している。また、図7中、逆三角形は、パケットの送信が停止されるであろうと予測される期間の中央を示している。
【0064】
ここで、上記したように、通常送信中では、ackが受信されるタイミングで、送信ウィンドウをスライドさせて、パケットを送信している。ackは、送信側通信装置1によって以前に送信されたパケットが、受信装置に届いたことを示す確認信号である。したがって、基本的には、送信側受信装置からのパケットは、RTTごとに、似たパターンで送信されることになる。なお、セルフクロッキング等、様々な理由によって、多少ずれることがあるが、多少ずれたとしても、その後の送信パターンは、RTTごとに、定期的に似たようなパターンとなる。
【0065】
したがって、制御部12は、パケットの送信パターンを測定することで、パケットの送信が停止される期間を予測することができる。送信パターンの測定においては、典型的には、図7に示すように、1RTT分のパケットの送信パターンを測定すれば、パケットの送信が停止される位置を予測することができる。この場合、送信パターンの測定の開始点及び終了点は、どのような位置であってもよい。
【0066】
パケットの送信が停止される期間の予測により、送信側通信装置1は、受信側通信装置2に対して、適切なタイミングで、パケットを追加的に送信することができる。
【0067】
"追加送信時刻及び追加送信量の決定"
図8及び図9は、追加送信時刻と、追加送信量とが決定される際の処理を説明するための図である。図8及び図9では、実線の三角形が既に送信されたパケットの送信タイミングを示しており、破線の三角形がこれから送信されるであろうパケットの送信タイミングを示している。
【0068】
図8を参照して、送信タイミングの最大空き時間をTとする。次回の予測最大空き時間Tの開始時刻Tstart及び終了時刻Tendは、前回の最大空き時間の開始時刻及び終了時刻をRTT分進めたポイントである。制御部12は、パケットの送信パターンからこの予測最大空き時間Tを算出(予測)し、この時間Tに追加送信を実行する。ここで、制御部12が、予測最大空き時間Tに何ら制限なくパケットを送信してしまうと、バーストが発生してしまう可能性がある。そこで、本実施形態では、送信側通信装置1は、予測最大空き時間Tに、パケットを分散して受信側通信装置2に送信することとしている。
【0069】
図9を参照して、バースト対策として、制御部12が1ms当たりに最大送信可能なパケット数をAとする。パケット数を抑制して、パケットを送信した場合であっても、バーストが発生する可能性がある。そこで、制御部12は、Smsの間パケットを送信した場合、Pms以上パケットの送信を休止する処理を実行する。Pmsは、パケットの送信が最低限、休止される時間である。
【0070】
制御部12は、T>nS+(n+1)Pの条件を満たす最大のnを求める。なお、図9に示す例では、n=3とされている。次に、制御部12は、P’=(T−nS)/(n+1)によって、P’を求める。P’は、予測最大空き時間Tにおいて、パケットの送信が実際に休止される時間である。制御部12は、P’を求めると、Tstart+P’により、最初に追加送信を実行すべき時刻を求める。制御部12は、同様にして、送信の休止時刻及び再開時刻を求めることができる。制御部12は、このようにして求められた追加送信時刻に、追加送信を実行する(図6、ステップ203、204参照)。
【0071】
予測最大空き時間Tの間の追加送信量は、nSAにより決定される。制御部12は、追加送信時間の間は、1msにA回、送信ウィンドウサイズ(輻輳ウィンドウサイズ)を1大きくし、その大きくした分だけ追加送信を実行する(図5(B)参照)。すなわち、制御部12は、拡大送信中は、受信側通信装置2から通知された受信ウィンドウサイズよりも送信ウィンドウサイズを大きくして、パケットの追加送信を実行する。なお、以降の説明では、受信側通信装置2から通知された受信ウィンドウよりも拡大された送信ウィンドウサイズ(第2の送信ウィンドウサイズ)を仮想ウィンドウサイズ(VRwnd)と呼ぶ場合がある。
【0072】
図9に示したように、パケットを分散して送信することで、バースト送信を回避することができる。これにより、経路の途中でパケットが紛失してしまうことを防止することができる。
【0073】
"確認応答(ack)に対する、パケットのバースト送信の防止"
次に、確認応答(ack)に対する、パケットのバースト送信の防止について説明する。
制御部12は、確認応答に対するパケットの送信を実行している。確認応答がバーストして受信された場合(バーストack)、確認応答に対するパケットの送信がバーストする場合がある。本発明者らが実際に試験を行った結果、受信側通信装置2が送信した確認応答(ack)がバーストしていないにも関わらず、この確認応答がバーストして送信側通信装置1に受信される場合があった。そこで、送信側通信装置1の制御部12は、バーストackに対して、バースト送信をしてしまわないようにパケットの送信を制御することとしている。
【0074】
図10は、バーストackに対するバースト送信を防止する際の処理を示すフローチャートである。図11は、図10に示す処理を説明するための補足図であり、記憶スロットに記憶される時刻の変化の様子を示す図である。
【0075】
制御部12は、OTPCに基づく拡大送信中において(ステップ301)、確認応答(ack)が受信されたかを判定する(ステップ302)。確認応答が受信された場合(ステップ302のYES)、制御部12は、記憶スロットの位置Pを1プラスする(ステップ303)。なお、制御部12は、記憶スロットの位置Pを1プラスする前に、記憶スロットの位置Pが記憶スロットの位置Pが、記憶スロットの数N以上であるかを判定し、判定が肯定的である場合には、記憶スロットの位置Pを0としておく。図11に示す例では、記憶スロットの数Nは、4とされている。
【0076】
制御部12は、記憶スロットの位置Pを1プラスすると、現在の時刻(T(P))を記憶スロットに記憶する(ステップ304)。例えば、図11に示すように、ack#36が受信された場合、制御部12は、ack#36の時刻を、ack#32の時刻に上書きして記憶スロットに記憶する。
【0077】
次に、制御部12は、現在の時刻(T(P))と、N個前に記憶された時刻(T(P+1))とを比較し、現在の時刻(T(P))と、N個前に記憶された時刻(T(P+1))との差が、Lms(例えば、10ms)未満であるかを判定する(ステップ305)。なお、図11に示すように、現在の時刻(T(P))と、N個前に記憶された時刻(T(P+1))との差は、P=3の場合には、ack#36の時刻と、ack#33の時刻とを比較することで算出することができる。
【0078】
現在の時刻(T(P))と、N個前に記憶された時刻(T(P+1))との差が、Lms以上である場合(ステップ305のNO)、そのまま、次のステップ307へ進む。
【0079】
一方、現在の時刻(T(P))と、N(N=4)個前に記憶された時刻(T(P+1))との差が、Lmsよりも小さい場合(ステップ305のYES)、輻輳ウィンドウサイズ(Cwnd)(送信ウィンドウサイズ)を1マイナスする。そして、次のステップ307へ進む。
【0080】
ステップ307では、輻輳ウィンドウに空きがあるかを判定する。輻輳ウィンドウに空きがない場合(ステップ307のNO)、ステップ301へ戻り、ステップ301以降の処理を実行する。一方、輻輳ウィンドウに空きがある場合(ステップ307のNO)、確認応答に対してパケットを送信する(ステップ308)。
【0081】
以上のような処理により、Lmsの時間内に、N個以上のパケットの送信が規制される。これにより、バーストackに対するバースト送信を防止することができる。
【0082】
「拡大送信中におけるエラーからの復帰(1)」
次に、拡大送信中におけるエラーからの復帰について説明する。
通常のTCP技術では、受信側通信装置2は、順番通りにパケットが受信されず、後に受信されるはずのパケットが先に受信された場合、まだ前のパケットが受信されていていないことを送信側通信装置1に通知する方法が用いられている。この場合、受信側通信装置2は、前と同じ確認応答(ack)を送信側通信装置1に返すことで、まだ前のパケットが受信されていないことを通知する。
【0083】
ここで、OTPCに基づく拡大送信中においてエラーが発生した場合のリカバリの問題について説明する。
【0084】
図12は、OTPCに基づく拡大送信中においてエラーが発生した場合のリカバリの問題を説明するためのシーケンス図である。
【0085】
送信側通信装置1(制御部12)は、受信側通信装置2から受信ウィンドウサイズ(この例では、Rwnd=3)が通知されると、通知された受信ウィンドウサイズに応じて、1〜3番目までのパケットを受信側通信装置2に送信する。受信側通信装置2は、1〜2番目のパケット、3番目のパケットが受信されると、ack=3、ack=4を送信側通信装置1に返す。
【0086】
送信側通信装置1は、送信ウィンドウサイズを、受信側から受信された受信ウィンドウサイズを超える大きさとして、4〜6番目のパケットを送信する。なお、図12に示す例では、送信ウィンドウサイズは、受信ウィンドウサイズの2倍とされている。
【0087】
受信側通信装置2は、4〜5番目のパケット、6番目のパケットが受信されると、ack=6、ack=7を送信側通信装置1に返す。
【0088】
送信側通信装置1は、受信側通信装置2からack=3、ack=4を受信すると、送信ウィンドウをスライドさせて、7〜8番目、9番目のパケットを受信側通信装置2に送信する。このとき、7番目のパケットがロストしたとする。受信側通信装置2は、7番目のパケットが受信される前に、8番目のパケットが受信されたので、前回と同じ確認応答(ack=7)を送信側通信装置1に返す。同様に、受信側通信装置2は、7番目のパケットが受信される前に、9番目のパケットが受信されたので、さらに、確認応答(ack=7)を送信側通信装置1に返す。
【0089】
送信側通信装置1は、ack=6、(最初の)ack=7が受信されると、10〜11番目のパケット、12番目のパケットを送信する。10〜12番目のパケットは、受信バッファに入りきらないので、受信バッファから溢れる。すなわち、本来の受信ウィンドウサイズを超えて送信したパケットは、受信バッファから溢れて、ロストする。
【0090】
送信側通信装置1は、複数回、ack=7が受信された場合、7番目のパケットがロストしたと判断して、7番目のパケットを受信側通信装置2に再送する。受信側通信装置2は、7番目のパケットが受信されると、7〜9番目のパケットが正常に受信されたとして、ack=10を送信側通信装置1に返す。
【0091】
送信側通信装置1は、ack=10が受信されると、10番目のパケットを再送する。受信側通信装置2は、10番目のパケットが受信されると、ack=11を送信側通信装置1に返し、送信側通信装置1は、このack=11により11番目のパケットを再送する。同様の処理が12番目のパケットが再送されるまで繰り返される。
【0092】
すなわち、拡大送信において本来の受信ウィンドウサイズを超えて送信された10番目〜12番目のパケットは、送信側通信装置1においてロストパケットとして扱われてしまうので、1つずつの再送となる。これにより、エラーから復帰するまでに時間がかかってしまうという問題がある。そこで、送信側通信装置1は、素早くエラーから復帰する処理を実行する。
【0093】
図13は、送信側通信装置1が、素早くエラーから復帰する処理を示すシーケンス図である。図13の説明では、送信側通信装置1が複数回、ack=7を受信したとことから説明する。なお、送信側通信装置1が複数回ack=7を受信するまでのシーケンスは、図12と同様である。
【0094】
送信側通信装置1は、複数回、ack=7が受信された場合、7番目のパケットがロストしたと判断して、7番目のパケットを受信側通信装置2に再送する。このとき、送信側通信装置1は、拡大されている送信ウィンドウサイズ(仮想ウィンドウサイズ)を、本来の受信ウィンドウサイズ(Rwnd=3)へ戻す(第3のウィンドウサイズ)。そして、送信キューを修正して、本来の受信ウィンドウサイズを超えて既に送信済みのパケット(図13の例では、10〜12番目のパケット)は、送信しなかったこととして扱う。
【0095】
受信側通信装置2は、7番目のパケットが受信されると、7〜9番目のパケットが正常に受信されたとして、ack=10を送信側通信装置1に返す。送信側通信装置1は、ack=10を受信すると、10〜12番目のパケットを受信側通信装置2に対して送信する。
【0096】
すなわち、送信側通信装置1は、本来の受信ウィンドウサイズを超えて送信したパケット(10〜12番目のパケット)は、送信しなかったとして扱うので、ロストパケットとして扱われない。したがって、本来の受信ウィンドウを超えて既に送信済みのパケット(10〜12番目のパケット)が1つずつ再送されるようなことがなくなるので、素早くエラーから復帰することができる。
【0097】
エラーからの復帰が完了した場合、送信側通信装置1は、再び拡大送信を実行する。
【0098】
「拡大送信中におけるエラーからの復帰(2)」
ここで、上記したように、送信側通信装置1の制御部12は、エラーからの復帰時に送信ウィンドウサイズを、本来の受信ウィンドウサイズに戻し、本来の受信ウィンドウサイズを超えて送信したパケットは、送信しなかったとして扱う。
【0099】
本来の受信ウィンドウサイズを超えて送信したパケットは、packets-to-rollback=(sent-packets)−(original-window-size)として求めることができる。
【0100】
しかしながら、タイミングにより、本来の受信ウィンドウサイズを超えて送信されたパケットが、受信側送信装置の受信バッファに、数パケット収まる場合がある。
【0101】
ところで、TCPのTCPヘッダ内には、オプションフィールドが用意されており、このオプションフィールドを利用することで、受信側通信装置2は、選択確認応答(sack)を送信側通信装置1に返すことができる。選択確認応答(sack)は、既に届いたパケットの番号の情報等を含む。送信側通信装置1は、確認応答(ack)と、選択確認応答(sack)とにより、どのパケットが紛失して、どのパケットが受信側通信装置2に届いているのかを認識することができる。
【0102】
本来の受信ウィンドウサイズを超えて送信されたパケットが、受信バッファに数パケット収まった場合、送信側では、送信しなかったとして扱っている領域を指定した選択確認応答(sack)が、dup_suckとして受信側通信装置2に受信されてしまう。この場合、送信側通信装置1は、送信しなかったとして扱っている領域を指定した選択確認応答(sack)を不正であるとして無視してしまう(本当に不正である場合と区別できない)。また、本来の受信ウィンドウサイズを超えて送信されたパケットが、受信バッファに数パケット収まった場合、エラーからの復帰完了時に受信側通信装置2から送信される確認応答ackを不正であるとして無視してしまう(本当に不正である場合と区別できない)。これにより、エラーの復帰に時間がかかってしまうという問題がある。
【0103】
そこで、送信側通信装置1は、本来の受信ウィンドウサイズを超えて送信されたパケットが、受信バッファに数パケット収まったような場合でも、素早くエラーから復帰することができるような処理を実行する。以降では、これについて説明する。
【0104】
図14及び図15は、エラーから復帰(リカバリ)する際の処理を示すフローチャートである。
【0105】
図14に示すように、OTPCに基づく拡大送信中において(ステップ401)、制御部12は、確認応答(ack)が受信されたかを判定する(ステップ402)。確認応答(ack)が受信された場合(ステップ402のYES)、今回受信された確認応答(ack)が、前回受信された確認応答と同じであるかを判定する(ステップ403)。
確認応答(ack)が前回と異なる場合(ステップ403のNO)、制御部12は、カウンタによるカウント値(dupcnt)をゼロとし(ステップ404)、ステップ401へ戻る。一方、確認応答(ack)が前回と同じである場合(ステップ403のYES)、制御部12は、カウンタによるカウント値(dupcnt)を1プラスする(ステップ405)。
【0106】
次に、制御部12は、カウンタによるカウント値が3以上であるかを判定する(ステップ406)。カウント値が3未満の場合(ステップ406のNO)、制御部12は、ステップ401へ戻る。一方、カウント値が3以上である場合(ステップ406のYES)、制御部12は、拡大されている送信ウィンドウサイズ(仮想ウィンドウサイズ)を小さくする(ステップ407)(図5(B)→(C))。これにより、制御部12は、第1のリカバリ状態に移行し(ステップ408)、ロストパケットの再送を実行する。
【0107】
送信ウィンドウサイズが変更されるとき、制御部12は、送信ウィンドウサイズ(仮想ウィンドウサイズ)を本来の受信ウィンドウサイズへ戻さず、送信ウィンドウサイズを受信ウィンドウサイズよりもすこし大きいサイズへと変更する(第3の送信ウィンドウサイズ)。この場合、制御部12は、packets-to-rollback=(sent-packets)−(original-window-size)−(rollback-margin)により、送信ウィンドウサイズを縮小するサイズを決定する。このとき、制御部12は、受信ウィンドウサイズ+marginを超えて既に送信済みのパケットは、送信しなかったものとして扱う(図5(C)斜線領域参照)。
【0108】
図15を参照して、制御部12は、第1のリカバリ中において(ステップ501)、確認応答(ack)が受信されたかを判定する(ステップ502)。受信側通信装置2からの確認応答(ack)が受信された場合(ステップ502のYES)、制御部12は、今回受信された選択確認応答(sack)が前回受信された選択確認応答と同じであるかを判定する(ステップ503)。
【0109】
今回受信された選択確認応答(sack)が前回受信された選択確認応答と異なる場合(ステップ503のNO)、制御部12は、カウンタのカウント値をゼロとし(ステップ504)、ステップ501へ戻る。一方、今回受信された選択確認応答(sack)が前回受信された選択確認応答と同じ場合(ステップ503のYES)、制御部12は、カウンタのカウント値を1プラスする(ステップ505)。
【0110】
次に、制御部12は、カウント値が3以上であるかを判定する(ステップ506)。カウント値が3未満の場合(ステップ506のNO)、制御部12は、ステップ501へ戻る。一方、カウント値が3以上の場合(ステップ504のYES)、先ほど、縮小された送信ウィンドウサイズ(仮想ウィンドウサイズ)をさらに縮小して補正する(ステップ507)(図5(C)→図5(D))。このとき、制御部12は、受信側通信装置2から繰り返し通知された選択確認応答(sack)の位置まで送信ウィドウサイズを戻す。受信側通信装置2の受信バッファからパケットが溢れた場合、選択確認応答が同じ値を示し続けるようになるので、この性質が利用されている。なお、選択確認応答(sack)の位置よりも右側に位置する既に送信済みのパケットは、送信されなかったものとして扱われる(図5(D)斜線領域参照)。
【0111】
送信ウィンドウサイズが補正されると、制御部12は、第2のリカバリ状態に移行し(ステップ508)、ロストパケットの再送を実行する。そして、リカバリが完了すると、通常送信状態に移行する(ステップ509)。そして、制御部12は、再び、拡大送信を実行する(図4、図6参照)。なお、制御部12は、リカバリ完了時に、パケットのロストが発生した時点での仮想ウィンドウサイズまで高速に仮想ウィンドウサイズを拡大する処理を実行してもよい。この場合、制御部12は、仮想ウィンドウサイズが縮小されたときに、もとの仮想ウィンドウサイズを記憶しておき、このもとの仮想ウィンドウサイズまで高速に仮想ウィンドウサイズを戻す処理を実行する。これにより、リカバリ完了後のスループットを向上させることができる。
【0112】
図14、図15に示す処理により、送信側通信装置1は、本来の受信ウィンドウサイズを超えて送信されたパケットが、受信バッファに数パケット収まったような場合でも、素早くエラーから復帰することができる。
【0113】
ここで、リカバリが頻繁に発生する場合があり得る。このような場合には、送信ウィンドウサイズを拡大して、拡大送信を実行してもパケットの再送の分だけ無駄になってしまう。そこで、通常送信を拡大送信に切り替える条件として、輻輳ウィンドウが受信ウィンドウに達したこと、受信ウィンドウが安定した状態となったことの他に(図4参照)、リカバリが頻発していないことを条件としてもよい。この場合、送信側通信装置1は、リカバリが発生する頻度を判定し、このリカバリが頻繁に起こっている場合には、通常送信から拡大送信への切り替えを規制する。
【0114】
また、制御部12は、仮想ウィンドウサイズを、リカバリが発生する頻度に応じて、可変に制御してもよい。この場合、リカバリ頻度が大きい場合には、仮想ウィンドウサイズは、小さくなり、リカバリ頻度が小さい場合には、仮想ウィンドウサイズは、大きくなる。
【0115】
〈作用等〉
以上説明したように、本実実施形態では、広帯域及び高遅延環境である場合に、送信ウィンドウサイズが、受信ウィンドウサイズを超えるサイズ(第2のウィンドウサイズ)とされ、受信ウィンドウサイズを超えた送信量のパケットが送信される。これにより、広帯域及び高遅延環境下において、スループットを向上させることができる。
【0116】
また、本実施形態では、送信側通信装置1の改良だけでよく、受信側通信装置2の改良は必要ない。受信側通信装置2は、一般のTCPスタックを用いた通常実装を備えていれば足りる。また、本実施形態では、通信経路に追加機器を設置する必要もない。したがって、コスト抑えた展開が可能である。
【符号の説明】
【0117】
1・・・送信側通信装置
2・・・送信側通信装置
12・・・制御部
100・・・通信システム

【特許請求の範囲】
【請求項1】
受信側通信装置から受信ウィンドウサイズを受信し、かつ、送信ウィンドウサイズに応じた送信量のパケットを前記受信側通信装置に送信する通信部と、
前記受信側通信装置との間の経路が広帯域及び高遅延環境であるか否かを判定し、広帯域及び高遅延環境であると判定された場合に、前記送信ウィンドウサイズが前記受信ウィンドウサイズを超えない第1のウィンドウサイズとされる第1の状態を、前記送信ウィンドウサイズが前記受信ウィンドウサイズを超える第2のウィンドウサイズとされる第2の状態へ切り替え、前記第2の状態で前記受信ウィンドウサイズを超えた送信量の前記パケットを送信する制御部と
を具備する通信装置。
【請求項2】
請求項1に記載の通信装置であって、
前記通信部は、確認応答を前記受信側通信装置から受信し、
前記制御部は、前記確認応答が受信されるタイミングで前記パケットを前記送信部から送信させ、かつ、前記第2の状態で、前記確認応答の受信タイミングから前記パケットの送信が停止される期間を予測し、前記期間に前記パケットを追加的に前記送信部から送信させる
通信装置。
【請求項3】
請求項2に記載の通信装置であって、
前記制御部は、前記期間内に前記パケットを分散して前記送信部から送信させる
通信装置。
【請求項4】
請求項2に記載の通信装置であって、
前記制御部は、前記第2の状態で、前記確認応答が所定時間内に集中して受信されたかを判定し、前記確認応答が集中して受信された場合に、前記確認応答の受信タイミングに応じた前記パケットの送信を部分的に規制する
通信装置。
【請求項5】
請求項1に記載の通信装置であって、
前記制御部は、送信された前記パケットの前記経路上での紛失を検知し、前記第2の状態で前記パケットの紛失が検知された場合に、前記送信ウィンドウサイズが第2のウィンドウサイズとされる前記第2の状態を、前記ウィンドウサイズが前記第2のウィンドウサイズよりも小さい第3のウィンドウサイズとされる第3の状態へ切り替える
通信装置。
【請求項6】
請求項5に記載の通信装置であって、
前記制御部は、前記第2の状態が前記第3の状態に切り替えられた場合に、第3のウィンドウサイズを超えて既に送信済みのパケットは、送信しなかったとして扱う
通信装置。
【請求項7】
請求項6に記載の通信装置であって、
前記第3のウィンドウサイズは、前記受信ウィンドウサイズよりも大きい
通信装置。
【請求項8】
請求項7に記載の通信装置であって、
前記通信部は、選択確認応答を前記受信側通信装置から受信し、
前記制御部は、前記選択確認応答に基づいて、前記第3のウィンドウサイズの大きさを補正する
通信装置。
【請求項9】
請求項5に記載の通信装置であって、
前記制御部は、前記第2の状態が前記第3の状態へ切り替えられる頻度を判定し、前記頻度が所定の閾値よりも大きい場合には、前記第2の状態での前記受信ウィンドウサイズを超えた送信量の前記パケットの送信を規制する
通信装置。
【請求項10】
請求項9に記載の通信装置であって、
前記制御部は、前記第2の状態が前記第3の状態へ切り替えられる頻度に応じて、前記第2のウィンドウサイズを可変に制御する
通信装置。
【請求項11】
受信側通信装置と、
前記受信側通信装置から受信ウィンドウサイズを受信し、かつ、送信ウィンドウサイズに応じた送信量のパケットを前記受信側通信装置に送信する通信部と、前記受信側通信装置との間の経路が広帯域及び高遅延環境であるか否かを判定し、広帯域及び高遅延環境であると判定された場合に、前記送信ウィンドウサイズが前記受信ウィンドウサイズ超えない第1のウィンドウサイズとされる第1の状態を、前記送信ウィンドウサイズが前記受信ウィンドウサイズを超える第2のウィンドウサイズとされる第2の状態へ切り替え、前記第2の状態で前記受信ウィンドウサイズを超えた送信量の前記パケットを送信する制御部とを有する送信側通信装置と
を具備する通信システム。
【請求項12】
通信装置に、
受信側通信装置から受信ウィンドウサイズを受信するステップと、
送信ウィンドウサイズに応じた送信量のパケットを受信側通信装置に送信するステップと、
前記受信側通信装置との間の経路が広帯域及び高遅延環境であるか否かを判定するステップと、
広帯域及び高遅延環境であると判定された場合に、前記送信ウィンドウサイズが前記受信ウィンドウサイズを超えない第1のウィンドウサイズとされる第1の状態を、前記送信ウィンドウサイズが前記受信ウィンドウサイズを超える第2のウィンドウサイズとされる第2の状態へ切り替えるステップと、
前記第2の状態で前記受信ウィンドウサイズを超えた送信量の前記パケットを送信するステップと
を実行させるプログラム。
【請求項13】
受信側通信装置から受信ウィンドウサイズを受信し、
送信ウィンドウサイズに応じた送信量のパケットを受信側通信装置に送信し、
前記受信側通信装置との間の経路が広帯域及び高遅延環境であるか否かを判定し、
広帯域及び高遅延環境であると判定された場合に、前記送信ウィンドウサイズが前記受信ウィンドウサイズを超えない第1のウィンドウサイズとされる第1の状態を、前記送信ウィンドウサイズが前記受信ウィンドウサイズを超える第2のウィンドウサイズとされる第2の状態へ切り替え、
前記第2の状態で前記受信ウィンドウサイズを超えた送信量の前記パケットを送信する
通信方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate


【公開番号】特開2012−95190(P2012−95190A)
【公開日】平成24年5月17日(2012.5.17)
【国際特許分類】
【出願番号】特願2010−242137(P2010−242137)
【出願日】平成22年10月28日(2010.10.28)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】