(57)【要約】  データ通信装置は、送信装置からデータを受信する受信部と、前記データを受信装置へ送信する送信部と、前記受信部が前記データの受信を開始する時に、前記受信部によって受信される前記データの量を、前記送信部から前記受信装置への前記データの送信速度から独立した量に設定する設定部と、前記設定された量の前記データを前記受信部が受信した後、前記設定された量を、前記送信速度に応じた量に更新する更新部と、前記更新された量の前記データを前記受信部が受信した後に前記更新された量の前記データを前記送信部が送信するまで、前記送信装置が前記データを送信することを中断させる抑制部と、を備える。
2017051860.tif 000002
【特許請求の範囲】
【請求項１】
送信装置からデータを受信する受信部と、
前記データを受信装置へ送信する送信部と、
前記受信部が前記データの受信を開始する時に、前記受信部によって受信される前記データの量を、前記送信部から前記受信装置への前記データの送信速度から独立した量に設定する設定部と、
前記設定された量の前記データを前記受信部が受信した後、前記設定された量を、前記送信速度に応じた量に更新する更新部と、
前記更新された量の前記データを前記受信部が受信した後に前記更新された量の前記データを前記送信部が送信するまで、前記送信装置が前記データを送信することを中断させる抑制部と、
を備えるデータ通信装置。
【請求項２】
前記受信部が受信したデータを格納する受信バッファと、
前記送信部による送信待ちのデータを格納する送信バッファと、
をさらに備える請求項１に記載のデータ通信装置。
【請求項３】
前記更新部は、前記更新された量の前記データを前記受信部が受信しかつ前記送信部が送信する毎に、前記受信部によって受信されるデータの量を、前記送信速度に応じた量に更新し、
前記抑制部は、前記更新部が前記受信部によって受信されるデータの量を更新する毎に、前記更新された量の前記データを前記受信部が受信した後に前記更新された量の前記データを前記送信部が送信するまで、前記送信装置が前記データを送信することを中断させる、
請求項１または２に記載のデータ通信装置。
【請求項４】
受信部によって、送信装置からデータを受信し、
送信部によって、前記データを受信装置へ送信し、
前記受信部が前記データの受信を開始する時に、前記受信部によって受信される前記データの量を、前記送信部から前記受信装置への前記データの送信速度から独立した量に設定し、
前記設定された量の前記データを前記受信部が受信した後、前記設定された量を、前記送信速度に応じた量に更新し、
前記更新された量の前記データを前記受信部が受信した後に前記更新された量の前記データを前記送信部が送信するまで、前記送信装置が前記データを送信することを中断させる、
ことを含むデータ通信制御方法。
【請求項５】
送信装置からのデータを受信する受信部と、前記データを受信装置へ送信する送信部とを備えるデータ通信装置を制御するコンピュータに、
前記受信部が前記データの受信を開始する時に、前記受信部によって受信される前記データの量を、前記送信部から前記受信装置への前記データの送信速度から独立した量に設定し、
前記設定された量の前記データを前記受信部が受信した後、前記設定された量を、前記送信速度に応じた量に更新し、
前記更新された量の前記データを前記受信部が受信した後に前記更新された量の前記データを前記送信部が送信するまで、前記送信装置が前記データを送信することを中断させる、
ことを実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ通信装置、データ通信制御方法及びプログラムに関する。
【背景技術】
【０００２】
ＴＣＰ／ＩＰなど、ウィンドウサイズ（確認応答（ＡＣＫ：Ａｃｋｎｏｗｌｅｄｇｅｍｅｎｔ）の受信なしに送信可能なデータ量）が設定される通信方式にて、スループットの向上を目的としてプロキシサーバ装置を設ける技術が知られている。
具体例としては、コンテンツサーバ装置とクライアント装置との間にプロキシサーバ装置を設ける。ダウンリンクの通信（サーバ装置からクライアント装置への通信）にて、プロキシサーバ装置のウィンドウサイズをクライアント装置のウィンドウサイズよりも大きく設定する。これにより、コンテンツサーバ装置からのデータをプロキシサーバ装置にバッファしておくことができる。また、プロキシサーバ装置が、クライアント装置から見てコンテンツサーバ装置よりもクライアント装置側に設けられている。これにより、クライアント装置とプロキシサーバ装置との通信のスループットは、クライアント装置とコンテンツサーバ装置との通信のスループットよりも短くなる。これにより、クライアント装置とコンテンツサーバ装置との通信を高速化する（スループットを改善する）ことができる。【０００３】
プロキシサーバ装置がコンテンツサーバ装置からのデータをバッファした状態で、プロキシサーバ装置とクライアント装置との通信が切断されると、プロキシサーバ装置がバッファしているデータが無駄になる。従って、コンテンツサーバ装置とプロキシサーバ装置との通信帯域を無駄使いしたことになる。
このような通信帯域の無駄遣いを低減させるために、プロキシサーバがバッファするデータ量を制御する必要があり、そのための技術がいくつか提案されている。例えば、特許文献１に記載のデータ通信装置では、ＴＣＰモジュールは、送信バッファの最大量を輻輳ウィンドウ（ｃｗｎｄ）に基づいて決定する。そして、ＴＣＰモジュールは、送信バッファが保持すべきデータ量に応じて、送信端末に通知するウィンドウサイズを決定する。
特許文献１では、これにより、受信端末で大きな遅延が発生しているにも関わらず、データ通信装置がデータを大量に蓄積することがなくなり、エンドエンドの端末間における予期しない転送遅延の発生を避けることができ、また、バッファ容量の逼迫を緩和することもできる、とされている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】日本国特開２００５−３４８１０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
データ通信装置（例えばプロキシサーバ装置）を設けることにより、送信装置（例えばコンテンツサーバ装置）と受信装置（例えばクライアント装置）との通信を高速される。この場合に、送信装置とデータ通信装置との通信帯域を有効に活用することに加えて、データ通信装置から受信装置へのデータ送信の遅延を低減させることが好ましい。特に、動画像のストリーミング配信などリアルタイム性を要求される通信では、データ通信装置から受信装置へのデータ送信が遅延すると、受信装置による動画像の再生に遅れが生じる等の不具合が生じる可能性がある。従って、リアルタイム性を要求される通信では、特に、データ通信装置から受信装置へのデータ送信の遅延を低減させることが望まれる。【０００６】
本発明の目的の一例は、上述の課題を解決することのできるデータ通信装置、データ通信制御方法及びプログラムを提供することである。
【課題を解決するための手段】
【０００７】
本発明の第１の態様によれば、データ通信装置は、送信装置からデータを受信する受信部と、前記データを受信装置へ送信する送信部と、前記受信部が前記データの受信を開始する時に、前記受信部によって受信される前記データの量を、前記送信部から前記受信装置への前記データの送信速度から独立した量に設定する設定部と、前記設定された量の前記データを前記受信部が受信した後、前記設定された量を、前記送信速度に応じた量に更新する更新部と、前記更新された量の前記データを前記受信部が受信した後に前記更新された量の前記データを前記送信部が送信するまで、前記送信装置が前記データを送信することを中断させる抑制部と、を備える。【０００８】
本発明の第２の態様によれば、データ通信制御方法は、受信部によって、送信装置からデータを受信し、送信部によって、前記データを受信装置へ送信し、前記受信部が前記データの受信を開始する時に、前記受信部によって受信される前記データの量を、前記送信部から前記受信装置への前記データの送信速度から独立した量に設定し、前記設定された量の前記データを前記受信部が受信した後、前記設定された量を、前記送信速度に応じた量に更新し、前記更新された量の前記データを前記受信部が受信した後に前記更新された量の前記データを前記送信部が送信するまで、前記送信装置が前記データを送信することを中断させる、ことを含む。【０００９】
本発明の第３の態様によれば、プログラムは、送信装置からのデータを受信する受信部と、前記データを受信装置へ送信する送信部とを備えるデータ通信装置を制御するコンピュータに、前記受信部が前記データの受信を開始する時に、前記受信部によって受信される前記データの量を、前記送信部から前記受信装置への前記データの送信速度から独立した量に設定し、前記設定された量の前記データを前記受信部が受信した後、前記設定された量を、前記送信速度に応じた量に更新し、前記更新された量の前記データを前記受信部が受信した後に前記更新された量の前記データを前記送信部が送信するまで、前記送信装置が前記データを送信することを中断させる、ことを実行させる。
【発明の効果】
【００１０】
この発明によれば、送信装置とデータ通信装置との通信帯域を有効に活用することができ、かつ、データ通信装置から受信装置へのデータ送信の遅延を低減させることができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施形態に係る通信システムの機能構成を示す概略ブロック図である。
【図２】図１に示す通信システムのプロキシサーバ装置の階層構造を示す説明図である。
【図３】図２に示すプロキシサーバ装置の機能構成を示す概略ブロック図である。
【図４】図３に示すプロキシサーバ装置の送信バッファの容量の説明図である。
【図５】図３に示すプロキシサーバ装置が行う処理の手順を示すフローチャートである。
【図６】図５のステップＳ１０２でのデータの読み出し前の状態での、受信バッファ及び送信バッファのデータ量の例を示す説明図である。
【図７】図５のステップＳ１０２でのデータの読み出し及び格納後の状態での、受信バッファ及び送信バッファのデータ量の例を示す説明図である。
【図８】図４に示す送信バッファの蓄積量が再受信閾値よりも小さい例を示す説明図である。
【図９】図５のステップＳ１１２でのデータの読み出し前の状態での、受信バッファのデータ量の例を示す説明図である。
【図１０】図５のステップＳ１１２でのデータの読み出し及び格納後の状態での、受信バッファ及び送信バッファのデータ量の例を示す説明図である。
【図１１】本発明の実施形態に係るデータ通信装置の構成を示す概略ブロック図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態を説明するが、以下の実施形態は請求の範囲にかかる発明を限定しない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図１は、本発明の一実施形態に係る通信システムの機能構成を示す概略ブロック図である。図１に示すように、通信システム１は、コンテンツサーバ装置１００と、プロキシサーバ装置２００と、クライアント装置３００とを備える。
【００１３】
コンテンツサーバ装置１００とプロキシサーバ装置２００とは、グローバルネットワーク９０１を介して互いに通信を行う。プロキシサーバ装置２００とクライアント装置３００とは、モバイルネットワーク９０２を介して互いに無線通信を行う。
通信システム１に含まれるクライアント装置３００の数は、図１に示す１つに限らず複数であってもよい。通信システム１に含まれるプロキシサーバ装置２００の数も、図１に示す１つに限らず複数であってもよい。通信システム１に含まれるコンテンツサーバ装置１００の数も、図１に示す１つに限らず複数であってもよい。
【００１４】
図１に示す例では、１つのクライアント装置３００と１つのコンテンツサーバ装置１００との間に通信経路が確立された状態を示している。矢印Ｂ１１及び矢印Ｂ１２は、いずれもダウンストリーム（Downstream）の向きを示している。矢印Ｂ１１及び矢印Ｂ１２で示すように、通信システム１は、コンテンツサーバ装置１００からのコンテンツデータを、グローバルネットワーク９０１、プロキシサーバ装置２００及びモバイルネットワーク９０２を介してクライアント装置３００へ送信する。
【００１５】
ここでいうコンテンツとは、動画像、静止画像、音声またはテキスト（文章）、あるいはこれらの組み合わせである。ここでいうコンテンツデータとは、コンテンツを示すデータである。
通信システム１が送信するデータはコンテンツデータに限らずいろいろなデータとすることができる。
【００１６】
通信システム１は、コンテンツサーバ装置１００からクライアント装置３００へコンテンツデータを送信する通信システムである。
コンテンツサーバ装置１００は、コンテンツデータを記憶しており、クライアント装置３００からの要求に応じてコンテンツデータを送信する。コンテンツサーバ装置１００は、コンピュータを用いたサーバ装置として構成される。コンテンツサーバ装置１００は、送信装置の例に該当する。
【００１７】
プロキシサーバ装置２００は、コンテンツサーバ装置１００とクライアント装置３００との間の通信を高速化するために設けられた装置である。具体的には、通信システム１は、ＴＣＰ／ＩＰ（Transmission Control Protocol / Internet Protocol）にて通信を行っており、プロキシサーバ装置２００は、ＴＣＰプロキシサーバ装置（ＰＥＰ：Performance Enhanced Proxy）として設置されている。特に、プロキシサーバ装置２００のウィンドウサイズ（確認応答（ＡＣＫ：Acknowledgement）の受信なしに送信可能なデータ量）は、クライアント装置３００のウィンドウサイズよりも大きくなっている。これにより、コンテンツサーバ装置１００がクライアント装置３００と直接通信を行う場合よりも、コンテンツサーバ装置１００がＡＣＫの受信を待たずに送信可能なデータ量が多くなる。この点で、コンテンツサーバ装置１００とクライアント装置３００との間の通信を高速化することができる。
但し、通信システム１の通信方式はＴＣＰ／ＩＰに限らず、確認応答の受信なしに送信可能なデータ量が設定される任意の通信方式であってもよい。
プロキシサーバ装置２００は、コンピュータを用いたサーバ装置として構成される。プロキシサーバ装置２００は、データ通信装置の例に該当する。
【００１８】
クライアント装置３００は、コンテンツサーバ装置１００に対してコンテンツデータの送信を要求し、コンテンツサーバ装置１００が送信するコンテンツデータを受信する。以下では、クライアント装置３００が行う通信のレイテンシが変化し得る例としてクライアント装置３００が無線通信を行う場合を例に説明する。しかしながら、クライアント装置３００が有線にて通信を行うようにしてもよい。
クライアント装置３００は、例えばスマートフォンまたはパーソナルコンピュータなどの情報処理装置（コンピュータ）を用いた端末装置として構成される。クライアント装置３００は、受信装置の例に該当する。
【００１９】
グローバルネットワーク９０１は、コンテンツサーバ装置１００とプロキシサーバ装置２００との通信を仲介する。グローバルネットワーク９０１は、例えばインターネット（Internet）など汎用的なネットワークであってもよいし、通信システム１専用のネットワークであってもよい。
モバイルネットワーク９０２は、プロキシサーバ装置２００とクライアント装置３００との通信を仲介する。特に、クライアント装置３００は無線通信にてモバイルネットワーク９０２に接続する。但し、上述したように、クライアント装置３００が有線の通信にてモバイルネットワーク９０２に接続するようにしてもよい。
【００２０】
図２は、プロキシサーバ装置２００の階層構造を示す説明図である。同図に示すように、プロキシサーバ装置２００は、受信側ＮＩＣ部２１０と、ＴＣＰモジュール部２２０と、プロキシプロセス部２３０と、送信側ＮＩＣ部２４０とを備える。ＴＣＰモジュール部２２０は、受信バッファ２２１と、送信バッファ２２２とを備える。
図２は、プロキシサーバ装置２００がダウンリンク側（コンテンツサーバ装置１００からクライアント装置３００へ）の通信を行う機能構成を示している。しかしながら、本実施形態は図２に示す例に限定されない。プロキシサーバ装置２００がアップリンク側（クライアント装置３００からコンテンツサーバ装置１００へ）の通信も行うようにしてもよい。
【００２１】
受信側ＮＩＣ部２１０は、プロキシサーバ装置２００がグローバルネットワーク９０１と通信を行う物理的なインタフェースである。特に、受信側ＮＩＣ部２１０は、グローバルネットワーク９０１から受信した信号をＴＣＰモジュール部２２０へ出力する。
ＴＣＰモジュール部２２０は、ＴＣＰを実行する。
受信バッファ２２１は、コンテンツサーバ装置１００からの受信データをＦＩＦＯ（First In First Out）にて一時的に格納（バッファ）する。
送信バッファ２２２は、クライアント装置３００への送信データをＦＩＦＯにて一時的に格納する。
【００２２】
プロキシプロセス部２３０は、プロキシサーバ装置２００が実行するアプリケーションプログラムを制御する。特に、プロキシプロセス部２３０は、受信バッファ２２１からデータを読み出して送信バッファ２２２に格納する。
送信側ＮＩＣ部２４０は、プロキシサーバ装置２００がモバイルネットワーク９０２と通信を行う物理的なインタフェースである。特に、送信側ＮＩＣ部２４０は、ＴＣＰモジュール部２２０から出力された信号をモバイルネットワーク９０２へ送信する。
【００２３】
プロキシサーバ装置２００の機能構成を３つの層（Ｌａｙｅｒ）に分類すると、受信側ＮＩＣ部２１０及び送信側ＮＩＣ部２４０がＮＩＣ層に含まれ、ＴＣＰモジュール部２２０がカーネル層に含まれ、プロキシプロセス部２３０がユーザ層に含まれる。ＮＩＣ層は、物理層（ハードウェアレベルで通信を行う層）である。カーネル層は、ＯＳ（Operating System）のカーネル（kernel）が処理を行う層である。ユーザ層は、アプリケーションプログラムを実行する層である。
図２は、プロキシサーバ装置２００が受信バッファ２２１と送信バッファ２２２とを個別に備える場合の例を示している。しかしながら、本実施形態は図２に示す例に限定されない。プロキシサーバ装置２００が、単一のバッファを受信バッファ２２１及び送信バッファ２２２の両方に用いるようにしてもよい。
【００２４】
図３は、プロキシサーバ装置２００の機能構成を示す概略ブロック図である。図３に示すように、プロキシサーバ装置２００は、受信バッファ２２１と、送信バッファ２２２と、通信部４１０と、記憶部４８０と、制御部４９０とを備える。通信部４１０は、受信部４１１と、送信部４１２とを備える。制御部４９０は、データ量初期設定部４９１と、データ量更新部４９２と、データ送信抑制部４９３とを備える。データ量初期設定部４９１は単に設定部４９１と称する場合がある。データ量更新部４９２は単に更新部４９２と称する場合がある。データ送信抑制部４９３は単に抑制部４９３と称する場合がある。
図３の各部のうち図２の各部に対応して同様の機能を有する部分には同一の符号（２００、２２１、２２２）を付して説明を省略する。
【００２５】
通信部４１０は、コンテンツサーバ装置１００及びクライアント装置３００と通信を行う。
受信部４１１は、図２の受信側ＮＩＣ部２１０に対応し、コンテンツサーバ装置１００が送信するコンテンツデータを受信する。
送信部４１２は、図２の送信側ＮＩＣ部２４０に対応し、クライアント装置３００へコンテンツデータを送信する。
【００２６】
記憶部４８０は、プロキシサーバ装置２００が備える記憶デバイスを用いて構成され、各種データを記憶する。受信バッファ２２１及び送信バッファ２２２が、記憶部４８０の一部として構成されていてもよい。
制御部４９０は、プロキシサーバ装置２００の各部を制御して各種機能を実行する。制御部４９０は、例えば、プロキシサーバ装置２００が備えるＣＰＵ（Central Processing Unit、中央処理装置）が、記憶部４８０からプログラムを読み出して実行することで構成される。制御部４９０は、図２のＴＣＰモジュール部２２０及びプロキシプロセス部２３０に対応する。
【００２７】
設定部４９１は、受信部４１１によるデータ受信の開始時に、受信部４１１の受信データ量を、送信部４１２からクライアント装置３００へのデータの送信速度から独立のデータ量に設定する。ここでいう、データの送信速度から独立のデータ量とは信部４１２からクライアント装置３００へのデータの送信速度の違いにかかわらず一定のデータ量である。
【００２８】
設定部４９１が、上記のデータ量の設定を行うことで、送信部４１２からクライアント装置３００へのデータの送信速度にかかわらず送信バッファ２２２にある程度の量のデータを確保する。これにより、プロキシサーバ装置２００とクライアント装置３００との通信状況が改善されて通信速度が向上した際に、プロキシサーバ装置２００からクライアント装置３００への送信データが欠乏する可能性を低減させることができる。この点で、プロキシサーバ装置２００からクライアント装置３００へのデータ送信の遅延を低減させることができる。
【００２９】
更新部４９２は、設定部４９１が設定したデータ量のデータを受信部４１１が受信した後、受信部４１１の受信データ量の設定値を、送信部４１２からクライアント装置３００へのデータの送信速度に応じたデータ量に更新する。特に、更新部４９２は、更新部４９２が更新したデータ量のデータを受信部４１１が受信し、そのデータ量のデータを送信部４１２が送信する毎に、受信部４１１の受信データ量を、送信部４１２からクライアント装置３００へのデータの送信速度に応じたデータ量に更新する。
【００３０】
更新部４９２が上記のデータ量の設定値の更新を行うことで、受信部４１１による受信データ量を、送信部４１２による送信データ量に応じたデータ量にする。これにより、受信バッファ２２１または送信バッファ２２２がオーバーフローしてプロキシサーバ装置２００がデータを破棄する可能性を低減させることができる。この点で、コンテンツサーバ装置１００とプロキシサーバ装置２００との通信帯域を有効利用することができる。
【００３１】
抑制部４９３は、更新部４９２が更新したデータ量のデータを受信部４１１が受信した後、そのデータ量のデータを送信部４１２が送信するまで、コンテンツサーバ装置１００によるデータの送信を抑制する（すなわち、コンテンツサーバ装置１００によるデータの送信を停止させる）。特に、抑制部４９３は、更新部４９２が受信部４１１の受信データ量の設定値を更新する毎に、更新後のデータ量のデータを受信部４１１が受信した後、そのデータ量のデータを送信部４１２が送信するまで、コンテンツサーバ装置１００によるデータの送信を抑制する。
【００３２】
抑制部４９３が上記のようにデータ送信を抑制することで、プロキシサーバ装置２００が処理可能なデータ量よりも多いデータ量のデータをコンテンツサーバ装置１００が送信することを抑制（停止）することができる。例えば、上記のように、受信バッファ２２１または送信バッファ２２２がオーバーフローしてプロキシサーバ装置２００がデータを破棄することを回避することができる。この点で、コンテンツサーバ装置１００とプロキシサーバ装置２００との通信帯域を有効利用することができる。
【００３３】
また、抑制部４９３が上記のようにデータ送信を抑制される。このため、プロキシサーバ装置２００とクライアント装置３００との通信が途中で切断された場合に、コンテンツサーバ装置１００がプロキシサーバ装置２００に送信したが、プロキシサーバ装置２００はクライアント装置３００へ送信せずに破棄するコンテンツデータの量を低減させることができる。この点で、コンテンツサーバ装置１００とプロキシサーバ装置２００との通信帯域を有効に活用することができる。
【００３４】
図４は、送信バッファ２２２の容量の説明図である。図４に示すように、プロキシサーバ装置２００がコンテンツサーバ装置１００から受信したデータは受信バッファ２２１に格納される。そして、制御部４９０（プロキシプロセス部２３０）が、受信バッファ２２１からデータを読み出してそのデータを送信バッファ２２２へ格納する。図４に示す例において、送信バッファ２２２の容量（格納可能なデータ量）を「２ｃ」で示し、送信バッファ２２２が格納しているデータ量を「Ｄｓｕｍ」で示している。送信バッファ２２２が格納しているデータは、クライアント装置３００へ送信される。
【００３５】
次に、図５を参照してプロキシサーバ装置２００の動作について説明する。
図５は、プロキシサーバ装置２００が行う処理の手順を示すフローチャートである。プロキシサーバ装置２００は、例えばコンテンツサーバ装置１００との通信を確立してコンテンツデータの受信を開始する場合に図５の処理を開始する。
【００３６】
図５の処理にて、設定部４９１は、コンテンツサーバ装置１００からの読出しサイズ（コンテンツサーバ装置１００から受信するデータ量）を送信バッファサイズ（送信バッファ２２２のサイズ（容量））に基づいて決定する（ステップＳ１０１）。
具体的には、設定部４９１（プロキシプロセス部２３０）は、コンテンツサーバ装置１００からの読出しサイズＢｕｆ１を式（１）に基づいて算出する。
【００３７】
【数１】
2017051860.tif 000003
【００３８】
「２ｃ」は、送信バッファ２２２のサイズ（送信バッファ２２２が格納可能なデータ量）を示す。「Ｂ」は、正の定数を示す。例えば「Ｂ」の値（デフォルト値）として２を用いる。
Ｂｕｆ１は、コンテンツサーバ装置１００からの初回の読出しサイズを示す。具体的には、プロキシサーバ装置２００は、コンテンツサーバ装置１００との通信を確立してコンテンツデータの受信を開始すると、読出しサイズＢｕｆ１分のコンテンツデータを受信して受信バッファ２２１に格納するまで、ステップＳ１０１で待ち受ける。
読出しサイズＢｕｆ１は、送信部４１２からクライアント装置３００へのデータの送信速度から独立のデータ量の例に該当する。
【００３９】
受信部４１１がコンテンツサーバ装置１００から読出しサイズＢｕｆ１分のコンテンツデータを受信すると、抑制部４９３は、コンテンツサーバ装置１００にコンテンツデータの送信を中断させる。抑制部４９３は、コンテンツサーバ装置１００にコンテンツデータの送信を中断するよう通知する方法として、例えばゼロウィンドウの通知など既存の方法を用いることができる。別法として、読出しサイズのデータの読み出しを完了したことを示すための専用の信号を予め定めておき、抑制部４９３がその信号を、通信部４１０を介してコンテンツサーバ装置１００に送信するようにしてもよい。
次に、制御部４９０（プロキシプロセス部２３０）は、ステップＳ１０１で決定した読出しサイズＢｕｆ１のデータを受信バッファ２２１から読み出して送信バッファ２２２に格納する（ステップＳ１０２）。
【００４０】
図６は、ステップＳ１０２でのデータの読み出し前の状態での、受信バッファ２２１及び送信バッファ２２２のデータ量の例を示す説明図である。図２に示すように、制御部４９０（プロキシプロセス部２３０）は、受信バッファ２２１に格納されているＢｕｆ１分のデータをＦＩＦＯにて（すなわち、受信バッファに格納されたタイミングが早い順に）読み出す。図６の例では、送信バッファ２２２に格納されているデータ量は０になっている。
【００４１】
図７は、ステップＳ１０２でのデータの読み出し及び格納後の状態での、受信バッファ２２１及び送信バッファ２２２のデータ量の例を示す説明図である。
図７に示す例では、制御部４９０（プロキシプロセス部２３０）が受信バッファ２２１から読み出したデータ量（読出しサイズＢｕｆ１）のデータが送信バッファ２２２に格納されている。また、送信バッファ２２２のデータ量に対して再受信閾値Ｔｈが設定されている。
図７に示す例では、受信バッファ２２１が格納していたデータ量（読出しサイズＢｕｆ１）のデータが全て読み出されたことで、受信バッファ２２１に格納されているデータ量は０になっている。
【００４２】
送信バッファ２２２にデータが格納されている場合、制御部４９０（ＴＣＰモジュール部２２０）は、送信部４１２を介して、そのデータをクライアント装置３００へ送信する。その際、制御部４９０は、コンテンツサーバ装置１００からのデータ受信、及び、受信バッファ２２１から送信バッファ２２２へのデータ移転と同期を取る必要は無い。すなわち、送信バッファ２２２にデータが格納されている場合、制御部４９０は、コンテンツサーバ装置１００からデータを受信しているか否かにかかわらず、送信バッファ２２２に格納されているデータを、送信部４１２を介してクライアント装置３００へ送信する。また、送信バッファ２２２にデータが格納されている場合、制御部４９０は、受信バッファ２２１から送信バッファ２２２へデータを転送しているか否かにかかわらず、送信バッファ２２２に格納されているデータをクライアント装置３００へ送信する。
【００４３】
制御部４９０（プロキシプロセス部２３０）は、再受信閾値を設定する（ステップＳ１０３）。例えば、定数Ｂの値が２である場合に制御部４９０が再受信閾値Ｔｈを式（２）に基づいて算出することにより、制御部４９０は、再受信閾値Ｔｈを読出しサイズＢｕｆ１以下のサイズに設定する。
【００４４】
【数２】
2017051860.tif 000004
【００４５】
制御部４９０が、再受信閾値Ｔｈを読出しサイズＢｕｆ１以下のサイズに設定することで、再受信閾値Ｔｈが送信バッファ２２２に格納されているデータ量以下の値となる。
【００４６】
ステップＳ１０３の後、制御部４９０（ＴＣＰモジュール部２２０）は、送信バッファ２２２の蓄積量（送信バッファ２２２に格納されているデータの量）が再受信閾値Ｔｈよりも小さいか否かを判定する（ステップＳ１０４）。
制御部４９０が送信バッファ２２２の蓄積量が再受信閾値Ｔｈ以上であると判定した場合（ステップＳ１０４：ＮＯ）、処理がステップＳ１０４へ戻る。
制御部４９０が送信バッファ２２２の蓄積量が再受信閾値Ｔｈよりも小さいと判定した場合（ステップＳ１０４：ＹＥＳ）、更新部４９２（プロキシプロセス部２３０）は、コンテンツサーバ装置１００からの読出しサイズＢｕｆ２を式（３）に基づいて算出する（ステップＳ１１１）。
【００４７】
【数３】
2017051860.tif 000005
【００４８】
「Ｃ」は、正の定数を示す。例えば「Ｃ」の値（デフォルト値）として２を用いる。「ＭＴＵ」は、ＩＰパケットの最大サイズを示す定数である。「ｃｗｎｄ」は輻輳ウィンドウを示す。「ｃｗｎｄ」は輻輳ウィンドウの大きさをパケット数で示す。式（３）の「ＭＴＵ×ｃｗｎｄ」は、輻輳ウィンドウの大きさをデータサイズ（例えばバイト単位）で示している。
【００４９】
制御部４９０（ＴＣＰモジュール部２２０）は、プロキシサーバ装置２００とクライアント装置３００との間の遅延変動に応じて、輻輳ウィンドウを増減させる。例えば、制御部４９０は、プロキシサーバ装置２００とクライアント装置３００との間の遅延の測定に基づいて、遅延が増加した場合は輻輳ウィンドウを減少させ、遅延が減少した場合は輻輳ウィンドウを増加させる。また、制御部４９０は、クライアント装置３００へ送信したパケットが消失した場合、輻輳ウィンドウを減少させる。
【００５０】
このように、輻輳ウィンドウの大きさｃｗｎｄは、送信部４１２からクライアント装置３００へのデータの送信速度に応じて設定され、送信速度が大きいほど大きな値に設定される。読み出しＢｕｆ２は、送信部４１２からクライアント装置３００へのデータの送信速度に応じたデータ量の例に該当する。
【００５１】
図８は、送信バッファ２２２の蓄積量が再受信閾値Ｔｈよりも小さい例を示す説明図である。図８の例では、送信バッファ２２２の蓄積量（送信バッファ２２２が格納しているデータ量）Ｄｓｕｍが、再受信閾値Ｔｈよりも小さくなっている。
ステップＳ１１１の後、制御部４９０（プロキシプロセス部）２３０は、ステップＳ１１１で決定した読出しサイズＢｕｆ２のデータを受信バッファ２２１から読み出して送信バッファ２２２に格納する（ステップＳ１１２）。
【００５２】
具体的には、プロキシサーバ装置２００（抑制部４９３）は、コンテンツサーバ装置１００にコンテンツデータの送信を要求する。そして、受信部４１１は、読出しサイズＢｕｆ２分のコンテンツデータを受信し、制御部４９０は、受信部４１１が受信したコンテンツデータを受信バッファ２２１に格納する。読出しサイズＢｕｆ２分のコンテンツデータを受信すると、プロキシサーバ装置２００（抑制部４９３）は、コンテンツサーバ装置１００にコンテンツデータの送信を中断させる。そして、制御部４９０（プロキシプロセス部２３０）は、受信バッファ２２１から読出しサイズＢｕｆ２分のコンテンツデータを読み出して送信バッファ２２２に格納する。
【００５３】
次に、制御部４９０（プロキシプロセス部２３０）は、再受信閾値Ｔｈを再設定する（ステップＳ１１３）。例えば、制御部４９０は、再受信閾値Ｔｈを式（４）に基づいて算出する。
【００５４】
【数４】
2017051860.tif 000006
【００５５】
但し、Ｄｓｕｍは、送信バッファ２２２が現在保持しているデータ量（すなわち、送信バッファ２２２に格納されているデータ量）を示す。
【００５６】
図９は、ステップＳ１１２でのデータの読み出し前の状態での、受信バッファ２２１のデータ量の例を示す説明図である。図９に示すように、制御部４９０（プロキシプロセス部２３０）は、受信バッファ２２１に格納されているデータのうちＢｕｆ２分のデータをＦＩＦＯにて読み出す。
【００５７】
図１０は、ステップＳ１１２でのデータの読み出し及び格納後の状態での、受信バッファ２２１及び送信バッファ２２２のデータ量の例を示す説明図である。
図１０の例では、制御部４９０（プロキシプロセス部２３０）が受信バッファ２２１から読み出したデータ量（読出しサイズＢｕｆ２）のデータが送信バッファ２２２に格納されている。
また、送信バッファ２２２のデータ量に対して再受信閾値Ｔｈが設定されている。ここでの再受信閾値Ｔｈは、送信バッファ２２２が格納しているデータ量Ｄｓｕｍから読出しサイズＢｕｆ２を減算することにより得られたデータ量に設定されている。
ステップＳ１１３の後、処理がステップＳ１０４へ戻る。
【００５８】
このように、制御部４９０（プロキシプロセス部２３０）は、ステップＳ１１２で設定する再受信閾値Ｔｈに基づき、読出しサイズＢｕｆ２分のコンテンツデータが送信バッファ２２２から減少する毎に、ステップＳ１１１〜Ｓ１１３の処理を繰り返す。すなわち、制御部４９０（プロキシプロセス部２３０）は、読出しサイズＢｕｆ２の設定、及び、その読出しサイズＢｕｆ２分のデータの送信バッファへの格納を、格納したデータと同じデータ量のデータが送信バッファ２２２から減少する毎に繰り返す。これにより、ステップＳ１１２での送信バッファ２２２へのデータ（コンテンツデータ）の格納前の状態における送信バッファ２２２のデータ量が、おおよそ一定のデータ量に保たれる。
【００５９】
制御部４９０（プロキシプロセス部２３０）が、ステップＳ１０４でＹＥＳと判定してからステップＳ１１３を実行するまでの間の送信バッファ２２２のデータ量の減少を無視できない場合、式（４）のデータ量Ｄｓｕｍに代えて定数を用いるようにしてもよい。例えば、制御部４９０は、ステップＳ１０３で式（２）に基づいて算出した再受信閾値Ｔｈの値を定数Ｔｈ１として記憶しておく。そして、制御部４９０は、ステップＳ１１３で、データ量Ｄｓｕｍに代えて定数Ｔｈ１を用いて再受信閾値Ｔｈを算出する。すなわち、制御部４９０は、「Ｔｈ＝Ｔｈ１−Ｂｕｆ２」の式を用いて再受信閾値Ｔｈを算出する。
【００６０】
これにより、上記のデータ量の減少を無視できない場合も、ステップＳ１１２での送信バッファ２２２へのデータの格納前の状態における送信バッファ２２２のデータ量が、おおよそ一定のデータ量に保たれる。
一方、式（４）のように制御部４９０が、データ量Ｄｓｕｍを検出して再受信閾値Ｔｈを算出する場合、定数Ｔｈ１を記憶しておく必要がない。この点で、記憶部４８０のメモリ容量を低減させることができる。
【００６１】
制御部４９０（プロキシプロセス部２３０）が、受信部４１１による読出しサイズのデータの受信が完了することを待たずに受信バッファ２２１から送信バッファ２２２へデータを転送するようにしてもよい。
具体的には、ステップＳ１０２で、受信部４１１がコンテンツデータを受信して受信バッファ２２１へ格納すると、制御部４９０が、読出しサイズＢｕｆ１のデータの受信が完了することを待たずに受信バッファ２２１から送信バッファ２２２へデータを転送するようにしてもよい。この場合、制御部４９０は、受信部４１１による受信データ量を検出し、その受信データ量が読出しサイズＢｕｆ１に達すると、コンテンツサーバ装置１００によるコンテンツデータの送信を中断させる。
受信部４１１による受信データ量は、受信バッファ２２１に格納されているデータ量と、制御部４９０が受信バッファ２２１から送信バッファ２２２へ転送したデータの量との合計として算出することができる。
【００６２】
同様に、ステップＳ１１２で、受信部４１１がコンテンツデータを受信して受信バッファ２２１へ格納すると、制御部４９０が、読出しサイズＢｕｆ２のデータの受信が完了することを待たずに受信バッファ２２１から送信バッファ２２２へデータを転送するようにしてもよい。この場合、制御部４９０は、受信部４１１による受信データ量を検出し、その受信データ量が読出しサイズＢｕｆ２に達すると、コンテンツサーバ装置１００によるコンテンツデータの送信を中断させる。
【００６３】
以上のように、設定部４９１は、受信部４１１によるデータ受信の開始時に、受信部４１１の受信データ量を、送信部４１２からクライアント装置３００へのデータの送信速度から独立のデータ量に設定する（すなわち、設定部４９１は、受信部４１１によるデータ受信の開始時に、受信部４１１の受信データ量を、送信部４１２からクライアント装置３００へのデータの送信速度に依存せずに設定する）。また、更新部４９２は、設定部４９１が設定したデータ量のデータを受信部４１１が受信した後、受信部４１１の受信データ量の設定値を、送信部４１２からクライアント装置３００へのデータの送信速度に応じたデータ量に更新する。また、抑制部４９３は、更新部４９２が更新したデータ量のデータを受信部４１１が受信した後、そのデータ量のデータを送信部４１２が送信するまで、送信装置によるデータの送信を抑制する。
【００６４】
設定部４９１が、上記のデータ量の設定を行うことで、送信部４１２からクライアント装置３００へのデータの送信速度にかかわらず送信バッファ２２２にある程度の量のデータを確保することができる。これにより、プロキシサーバ装置２００とクライアント装置３００との通信状況が改善されて通信速度が向上した際に、プロキシサーバ装置２００からクライアント装置３００への送信データが欠乏する可能性を低減させることができる。この点で、プロキシサーバ装置２００によれば、プロキシサーバ装置２００からクライアント装置３００へのデータ送信の遅延を低減させることができる。
【００６５】
また、抑制部４９３が上記のようにデータ送信を抑制する。このため、プロキシサーバ装置２００とクライアント装置３００との通信が途中で切断された場合に、コンテンツサーバ装置１００がプロキシサーバ装置２００に送信したが、プロキシサーバ装置２００はクライアント装置３００へ送信せずに破棄するコンテンツデータの量を低減させることができる。この点で、コンテンツサーバ装置１００とプロキシサーバ装置２００との通信帯域を有効に活用することができる。
このように、プロキシサーバ装置２００によれば、コンテンツサーバ装置１００とプロキシサーバ装置２００との通信帯域を有効に活用することができ、かつ、プロキシサーバ装置２００からクライアント装置３００へのデータ送信の遅延を低減させることができる。
【００６６】
次に、図１１を参照して本発明の実施形態の構成について説明する。
図１１は、本発明の実施形態に係るデータ通信装置の構成を示す概略ブロック図である。図１１に示すデータ通信装置１０は、受信部１１と、受信バッファ１２と、送信バッファ１３と、送信部１４と、データ量初期設定部１５と、データ量更新部１６と、データ送信抑制部１７とを備える。
【００６７】
かかる構成にて、受信部１１は、送信装置からのデータを受信する。そして、送信部１４は、受信部１１が受信したデータを受信装置へ送信する。受信バッファ１２は、受信部１１が受信したデータを格納する。送信バッファ１３は、送信部１４による送信待ちのデータを格納する。
データ量初期設定部１５は、受信部１１によるデータ受信の開始時に、受信部１１の受信データ量を、送信部１４から受信装置へのデータの送信速度から独立のデータ量に設定する。データ量更新部１６は、データ量初期設定部１５が設定したデータ量のデータを受信部１１が受信した後、受信部１１の受信データ量の設定値を、送信部１４から受信装置へのデータの送信速度に応じたデータ量に更新する。データ送信抑制部は、データ量更新部１６が更新したデータ量のデータを受信部１１が受信した後、そのデータ量のデータを送信部１４が送信するまで、送信装置によるデータの送信を抑制する。
【００６８】
データ量初期設定部１５が、上記のデータ量の設定を行うことで、送信部１４から受信装置へのデータの送信速度にかかわらず送信バッファ１３にある程度の量のデータを確保することができる。これにより、データ通信装置１０と受信装置との通信状況が改善されて通信速度が向上した際に、データ通信装置１０から受信装置への送信データが欠乏する可能性を低減させることができる。この点で、データ通信装置１０によれば、データ通信装置１０から受信装置へのデータ送信の遅延を低減させることができる。
【００６９】
また、データ送信抑制部１７が上記のようにデータ送信を抑制する。このため、データ通信装置１０と受信装置との通信が途中で切断された場合に、送信装置がデータ通信装置１０に送信したが、データ通信装置１０は受信装置へ送信せずに破棄するデータの量を低減させることができる。この点で、送信装置とデータ通信装置１０との通信帯域を有効に活用することができる。
このように、データ通信装置１０によれば、送信装置とデータ通信装置１０との通信帯域を有効に活用することができ、かつ、データ通信装置１０から受信装置へのデータ送信の遅延を低減させることができる。
【００７０】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【００７１】
１  通信システム
１０、１００  コンテンツサーバ装置
１１、４１１  受信部
１２、２２１  受信バッファ
１３、２２２  送信バッファ
１４、４１２  送信部
１５、４９１  データ量初期設定部
１６、４９２  データ量更新部
１７、４９３  データ送信抑制部
２００  プロキシサーバ装置
２１０  受信側ＮＩＣ部
２２０  ＴＣＰモジュール部
２３０  プロキシプロセス部
２４０  送信側ＮＩＣ部
３００  クライアント装置
９０１  グローバルネットワーク
９０２  モバイルネットワーク【００７２】
この出願は、２０１５年９月２５日に出願された日本国特願２０１５−１８８４９１を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【００７３】
本発明は、データ通信装置、データ通信制御方法及びプログラムに適用してもよい。
【図１】
2017051860.tif 000007
【図２】
2017051860.tif 000008
【図３】
2017051860.tif 000009
【図４】
2017051860.tif 000010
【図５】
2017051860.tif 000011
【図６】
2017051860.tif 000012
【図７】
2017051860.tif 000013
【図８】
2017051860.tif 000014
【図９】
2017051860.tif 000015
【図１０】
2017051860.tif 000016
【図１１】
2017051860.tif 000017
【国際調査報告】
2017051860.tif 000018
2017051860.tif 000019
2017051860.tif 000020
2017051860.tif 000021