(57)【要約】【課題】移動通信端末及び移動通信端末を含む通信システムに関して、移動通信端末が単位時間当たりの生成する量が、ある通信キャリアの通信速度を超過した場合においても低遅延通信を実現することを目的とする。【解決手段】本発明の一実施形態に係る通信端末は、複数の異なる通信システムとの接続を可能とする複数の通信インターフェースを備え、前記複数の通信インターフェースの一部もしくは全てから、シーケンス番号を付与した同一送信データを複製して送信する。送信データの複製にあたっては、送信データの生成速度と、各通信インターフェースの通信速度に基づいて、複製数を決定する。【選択図】  図３
2018067864.tif 000002
【特許請求の範囲】
【請求項１】
複数の通信インターフェースと、
データを生成するアプリケーションプログラムを実行し、前記データの複製データを複数作成し、それぞれの前記複製データを異なる前記通信インターフェースを介して送信するプロセッサと、を有する通信端末であって、
前記通信インターフェースはそれぞれ、異なるネットワークに接続されるよう構成されており、
前記プロセッサは、
前記アプリケーションプログラムの実行時に生成されるデータの生成速度を観測し、
複数の前記通信インターフェースのうち通信速度が前記生成速度未満である第２の種類の通信インターフェースの通信速度の合計と、前記生成速度とから、前記第２の種類の通信インターフェースを用いて送信する前記複製データの量（Ｎ２）を決定し、
複数の前記通信インターフェースのうち通信速度が前記生成速度以上である第１の種類の通信インターフェースの数（Ｎ１）と前記複製データの量（Ｎ２）とから、前記データの複製量（Ｎ）を決定し、
前記複製量（Ｎ）に応じた数の前記複製データを生成し、
前記第１の種類の通信インターフェースの全てを用いて、Ｎ１個の前記複製データを並列送信するとともに、残りの前記複製データ数と同数の前記第２の種類の通信インターフェースを選択し、選択された前記第２の種類の通信インターフェースを用いて、残りの前記複製データを並列送信する、
ことを特徴とする通信端末。
【請求項２】
前記プロセッサは、
前記通信インターフェースを用いて前記複製データを送信する場合の送信完了時刻を、前記通信インターフェースごとに算出し、
前記プロセッサは、前記複製データの送信に用いる前記第２の種類の通信インターフェースを選択する時、前記送信完了時刻の最も早い前記第２の種類の通信インターフェースから順に選択する
ことを特徴とする、請求項１に記載の通信端末。
【請求項３】
前記プロセッサは、
前回の複製データ送信時に算出した送信完了時刻である前データ送信完了時刻を、前記通信インターフェースごとに記憶しており、
前記プロセッサは、前記送信完了時刻の算出時に、
ａ）  前記前データ送信完了時刻が現在時刻より前の場合、現在時刻に前記複製データのサイズを前記通信インターフェースの通信速度で除算した値を加算することで、前記送信完了時刻を算出し、
ｂ）  前記前データ送信完了時刻が現在時刻以降の場合、前記前データ送信完了時刻に前記複製データのサイズを前記通信インターフェースの通信速度で除算した値を加算することで、前記送信完了時刻を算出する、
ことを特徴とする、請求項２に記載の通信端末。
【請求項４】
前記プロセッサは、前記第２の種類の通信インターフェースの通信速度の合計を前記生成速度で除算した結果の小数部を切り捨てた値を前記Ｎ２とし、
前記Ｎ１と前記Ｎ２の和を算出する事で前記Ｎを決定し、Ｎ個の前記複製データを生成し、
生成された前記複製データのうちＮ１個の前記複製データを、前記第１の種類の通信インターフェースを用いて並列送信するとともに、
前記第２の種類の通信インターフェースをＮ２個選択し、選択されたＮ２個の前記第２の種類の通信インターフェースを用いて、Ｎ２個の前記複製データを並列送信する、
ことを特徴とする、請求項２に記載の通信端末。
【請求項５】
前記プロセッサは、前記第２の種類の通信インターフェースの通信速度の合計を前記生成速度で除算した結果を前記Ｎ２とし、
生成される前記複製データの数の期待値が（Ｎ１＋Ｎ２）と等しくなるように、前記複製データを生成する、
ことを特徴とする、請求項２に記載の通信端末。
【請求項６】
前記通信端末は、ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）モジュールと、前記通信インターフェースの通信速度の情報を、前記通信端末の位置と時刻毎に対応付けて記録したテーブルを有しており、
前記プロセッサは、前記複製データの量を決定する際、前記ＧＰＳモジュールから取得した時刻と前記通信端末の位置をもとに、前記テーブルから前記通信インターフェースの通信速度の情報を取得する、
ことを特徴とする、請求項２に記載の通信端末。
【請求項７】
請求項１に記載の通信端末と、前記通信端末と前記ネットワークを介して通信可能に構成されているサーバとを有する通信システムであって、
前記通信端末は、前記複製データに同一のシーケンス番号を付与して、前記通信インターフェースを用いて前記サーバに前記複製データを送信し、
前記サーバは、シーケンス番号が同一の前記複製データを複数受領した場合、
最初に受領した前記複製データ以外は廃棄する、
ことを特徴とする、通信システム。
【請求項８】
前記サーバは前記通信端末からの受信データに基づいて、前記通信インターフェースの通信品質についての情報を前記通信端末に送信し、
前記通信端末は前記サーバから受信した前記通信品質についての情報に基づいて、前記通信インターフェースの通信速度を推定する、
ことを特徴とする請求項７に記載の通信システム。
【請求項９】
前記通信品質についての情報は、通信遅延時間を含む、
ことを特徴とする、請求項８に記載の通信システム。
【請求項１０】
前記通信端末は、一定時間以上の間、前記サーバから受信した前記通信品質についての情報に含まれる前記通信遅延時間が所定の閾値以下の場合には、前記通信インターフェースの通信速度推定値を一定値上昇させる、
ことを特徴とする、請求項９に記載の通信システム。
【請求項１１】
前記通信品質についての情報にはさらに、スループットが含まれており、
前記通信端末は、前記通信品質についての情報に含まれる前記通信遅延情報が所定の閾値以上である場合、前記通信品質についての情報に含まれる前記スループットを前記通信インターフェースの通信速度推定値とする、
ことを特徴とする、請求項９に記載の通信システム。
【請求項１２】
それぞれが異なるネットワークに接続される、複数の通信インターフェースと、
データを生成するアプリケーションプログラムを実行し、前記データの複製データを複数作成し、それぞれの前記複製データを異なる前記通信インターフェースを介して送信するプロセッサと、を有する通信端末と、
前記通信端末が生成したデータを受信するサーバと、
を有する通信システムのデータ送信方法であって、
前記プロセッサが、
ａ）  前記アプリケーションプログラムの実行時に生成されるデータの生成速度を観測する工程と、
ｂ）  複数の前記通信インターフェースのうち通信速度が前記生成速度未満である第２の種類の通信インターフェースの通信速度の合計と、前記生成速度とから、前記第２の種類の通信インターフェースを用いて送信する前記複製データの量（Ｎ２）を決定する工程と、
ｃ）  複数の前記通信インターフェースのうち通信速度が前記生成速度以上である第１の種類の通信インターフェースの数（Ｎ１）と前記複製データの量（Ｎ２）とから、前記データの複製量（Ｎ）を決定する工程と、
ｄ）  前記複製量（Ｎ）に応じた数の前記複製データを生成する工程と、
ｅ）  生成された前記複製データに同一のシーケンス番号を付与する工程と、
ｆ）  前記第１の種類の通信インターフェースの全てを用いて、Ｎ１個の前記複製データを並列送信するとともに、残りの前記複製データ数と同数の前記第２の種類の通信インターフェースを選択し、選択された第２の種類の通信インターフェースを用いて、残りの前記複製データを並列送信する工程と、
を実行し、
前記サーバが、
ｇ）  前記通信端末からシーケンス番号が同一の前記複製データを複数受領した場合、最初に受領した前記複製データ以外を廃棄する工程、
を実行する、
ことを特徴とする、通信システムのデータ送信方法。
【請求項１３】
前記工程ｆ）で前記プロセッサは、
前記通信インターフェースを用いて前記複製データを送信する場合の送信完了時刻を、前記通信インターフェースごとに算出し、
前記第２の種類の通信インターフェースを選択する際、前記送信完了時刻の最も早い前記第２の種類の通信インターフェースから順に選択する
ことを特徴とする、請求項１２に記載の通信システムのデータ送信方法。
【請求項１４】
前記工程ｂ）で前記プロセッサは、
前記第２の種類の通信インターフェースの通信速度の合計を前記生成速度で除算した結果の小数部を切り捨てた値を前記Ｎ２とする、
ことを特徴とする、請求項１３に記載の通信システムのデータ送信方法。
【請求項１５】
前記プロセッサは、
前記工程ｂ）で、前記第２の種類の通信インターフェースの通信速度の合計を前記生成速度で除算した結果を前記Ｎ２とし、
前記工程ｄ）で、生成される前記複製データの数の期待値が（Ｎ１＋Ｎ２）と等しくなるように、前記複製データを生成する、
ことを特徴とする、請求項１３に記載の通信システムのデータ送信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の異なるネットワークを経由した通信が可能な通信端末に関する。
【背景技術】
【０００２】
近年、コンピュータなどの情報・通信機器だけでなく、様々なモノに通信機能を持たせ、インターネットに接続したり相互に通信したりすることにより、自動認識や自動制御、遠隔計測などを行うＩｏＴ（Ｉｎｔｅｒｎｅｔ  ｏｆ  Ｔｈｉｎｇｓ）サービスに対する期待が高まっている。このＩｏＴサービスの形態の一つとして、自動車に代表される移動体が通信機器を搭載することで移動通信端末として機能し、サーバとデータを送受信するような場合がある。通信キャリアは、このような形態のＩｏＴサービス向けに、カバレッジが広い既存のセルラネットワークを利用した、従量課金制の無線通信サービスを提供している。
【０００３】
前述した形態のＩｏＴサービスにおいて、移動通信端末よりリアルタイムにセンシングデータ等を通信網を介してサーバに送信し、それらのデータの分析結果に基づいて、サーバから制御されるようなユースケースが考えられる。例えば、自動車が搭載しているカメラが取得した連続画像をサーバへ送信し、サーバ側のオペレータが連続画像により判断を行って自動車の制御を行う遠隔制御サービスにおいては、時々刻々と自動車の周辺環境が変化していくため、数十ミリ秒のオーダーの片道遅延で、画像がサーバまで送信される必要がある。
【０００４】
このような要求を満たす技術として、非特許文献１記載のマルチルート通信技術がある。マルチルート通信技術では、送信元装置は送信データを複製し、各複製データを複数の異なる通信キャリアが運用する通信システムを利用して、受信側装置に送信する。受信側装置では、受信した複製データのうち、最も早く到着したデータを利用する。以上により、マルチルート通信では、ある通信キャリアにおいて通信速度低下、通信遅延増大などの通信品質低下が発生した場合においても、低遅延通信を保証することが可能となる。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】柚木  祥慈、外３名、"セルラ網を介したマルチルート車車間通信", 電子情報通信学会ソサイエティ大会講演論文集, 一般社団法人電子情報通信学会, 2015年8月25日, 2015年_通信(1), p. 388.
【発明の概要】
【発明が解決しようとする課題】
【０００６】
非特許文献１記載のマルチルート通信技術を用いた場合においても、移動通信端末が単位時間当たりに生成するデータ量が、ある通信キャリアの通信速度を超過した場合には、当該通信キャリアにおいてはセンシングデータが常時遅延して送信されることになる。そのため、低遅延通信を保証することができなくなる。
【課題を解決するための手段】
【０００７】
本発明の一実施形態に係る通信端末は、プロセッサと複数の通信インターフェースとを有する。プロセッサは、データを生成するアプリケーションプログラムを実行し、データの複製データを複数作成し、それぞれの複製データを異なる通信インターフェースを介して送信する。また複数の通信インターフェースには、通信速度がプロセッサのデータ生成速度以上である第１の種類の通信インターフェースと、通信速度がデータ生成速度未満である第２の種類の通信インターフェースとが含まれており、通信インターフェースはそれぞれ異なるネットワークに接続される。
【０００８】
前記プロセッサは、アプリケーションプログラムの実行時に生成されるデータの生成速度を観測し、第２の種類の通信インターフェースの通信速度の合計と生成速度とから、第２の種類の通信インターフェースを用いて送信する複製データの量（Ｎ２）を決定し、第１の種類の通信インターフェースの数（Ｎ１）と複製データの量（Ｎ２）とから、データの複製量（Ｎ）を決定し、複製量（Ｎ）に応じた数の複製データを生成する。そして第１の種類の通信インターフェースの全てを用いて、Ｎ１個の複製データを並列送信するとともに、残りの複製データ数と同数の第２の種類の通信インターフェースを選択し、選択された第２の種類の通信インターフェースを用いて、残りの複製データを並列送信する。
【発明の効果】
【０００９】
移動通信端末及び移動通信端末を含む通信システムに関して、移動通信端末が単位時間当たりに生成するデータ量を下回る通信速度の通信キャリアがあった場合においても低遅延通信を実現することができる。
【図面の簡単な説明】
【００１０】
【図１】通信システムの構成図である。
【図２】移動通信端末の物理構成図である。
【図３】移動通信端末の機能ブロック図である。
【図４】通信品質テーブルの例である。
【図５】通信速度取得部の処理フロー図である。
【図６】複製データ数計算部の処理フロー図である。
【図７】前提条件の例を示す図である。
【図８】複製データ生成部の処理フロー図である。
【図９】送信完了時刻計算部の処理フロー図である。
【図１０】通信ＩＦ選択部の処理フロー図である。
【図１１】通信データフォーマットの例である。
【図１２】データ送信完了時刻の計算例である。
【図１３】通信ＩＦ選択の例を示す図である。
【図１４】通信ＩＦ選択の例を示す図である。
【図１５】サーバの物理構成図である。
【図１６】サーバの機能ブロック図である。
【図１７】実施例２に係る移動通信端末の複製データ数計算部の処理フロー図である。
【図１８】実施例２に係る移動通信端末の複製データ生成部の処理フロー図である。
【図１９】実施例２におけるデータ送信完了時刻の計算例である。
【図２０】実施例２における通信ＩＦ選択の例である。
【図２１】実施例２における通信ＩＦ選択の例である。
【図２２】実施例３に係る移動通信端末の機能ブロック図である。
【図２３】実施例３に係るサーバの機能ブロック図である。
【図２４】実施例３における通信データフォーマットの例である。
【図２５】実施例３に係るサーバの通信品質測定部の処理フロー図である。
【図２６】実施例３に係る移動通信端末の通信速度推定部の処理フロー図である。
【発明を実施するための形態】
【００１１】
以下、いくつかの実施例について、図面を用いて説明する。
【００１２】
まず、以下に説明する各実施例における通信システムの構成について、図１を用いて説明する。以下に説明する各実施例における通信システムでは、移動通信端末１００が、複数の異なる通信キャリア（１〜３）が運用する、基地局１１０及びキャリアネットワーク１２０を有する無線通信システム１３０を経由してインターネット１０１に接続し、サーバ１０２間でデータ通信を行うことを想定する。図１では、３つの通信キャリアが存在する例が示されているが、通信キャリアは４つ以上存在してもよい。また以下では、ｉ番目の通信キャリアを「通信キャリアｉ」と表記する（ｉは１以上の整数である）。そして通信キャリアｉの運営する基地局１１０、キャリアネットワーク１２０、無線通信システム１３０はそれぞれ、「基地局ｉ」、「キャリアネットワークｉ」、「無線通信システムｉ」と表記され、それぞれの参照番号としては“１１０−ｉ”、“１２０−ｉ”、“１３０−ｉ”が用いられる。
【００１３】
移動通信端末１００は、搭載されたアプリケーションプログラムの指示に従いサーバ１０２とデータを送受信しユーザにＩｏＴサービスを提供する。移動通信端末１００は、複数の異なる通信キャリアが運用する無線通信システム１３０に接続が可能である。移動通信端末１００は、無線通信システム１３０毎に、搭載されたアプリケーションプログラムが生成したデータの一部、または、全てを複製して送信する。
【００１４】
無線通信システム１３０は、移動通信端末１００と電波で直接交信する複数の基地局１１０と、複数の基地局１１０を集約してインターネット１０１に接続するバックボーンネットワークとなるキャリアネットワーク１２０を有する。無線通信システム１３０は、例えばセルラネットワークなどにより実現される。図１では、各無線通信システム１３０内に基地局１１０が１つだけ示されているが、実際には各無線通信システム１３０内に基地局１１０が複数存在する。
【００１５】
サーバ１０２は、移動通信端末１００とデータを送受信する。またサーバ１０２は、移動通信端末１００からの送信データを受信する際に、受信したデータに付与されているシーケンス番号を参照することで、重複データを廃棄する機能を有する。
【実施例１】
【００１６】
本発明の実施例１に係る移動通信端末１００及びサーバ１０２について、図２〜図１６を用いて説明する。
【００１７】
図２は、移動通信端末１００の物理構成図である。移動通信端末１００は、ＣＰＵ（プロセッサ）２０１と、メモリ２０２と、ＧＰＳ（Ｇｌｏｂａｌ Ｐｏｓｉｔｉｏｎｉｎｇ Ｓｙｓｔｅｍ）モジュール２０３（図２では“ＧＰＳ２０３”と略記）と、複数の通信インターフェースモジュール（図２では“通信ＩＦモジュール”と略記）２０５と、それらを接続するバス２０４とを有する。ＧＰＳモジュール２０３は、衛星が送信する現在時刻を受信し、現在時刻をＣＰＵ２０１に提供する。またＧＰＳモジュール２０３は、複数の衛星から受信した信号に基づいて移動通信端末１００の現在位置を計算し、計算された現在位置の情報をＣＰＵ２０１に提供する。
【００１８】
それぞれの通信ＩＦモジュール２０５は、異なる無線通信システム１３０と接続可能なモジュールで、ＣＰＵ２０１の指示に従ってデータの送信を行う。複数の通信ＩＦモジュール２０５は、同時に（並行して）データの送信をすることができる。
【００１９】
メモリ２０２には、移動通信端末１００のデータ送受信処理を行うためのプログラム（以下、「制御プログラム」と呼ぶ）や、ユーザにＩｏＴサービスを提供するためのアプリケーションプログラムが格納されており、ＣＰＵ２０１は、メモリ２０２に格納されたこれらのプログラムを実行する。
【００２０】
なお、以下の説明において、複数の通信ＩＦモジュール２０５のうち、ｉ番目（ｉは１以上の整数である）の通信ＩＦモジュール２０５のことを「通信ＩＦｉ」と表記し、通信ＩＦｉの参照番号は“２０５−ｉ”と表記することがある。また、通信ＩＦｉは、移動通信端末１００が通信キャリアｉを介してサーバ１０２と通信するためのモジュールとする。また複数の通信ＩＦモジュール２０５を総称して、単に「通信ＩＦ」と表記することがある。
【００２１】
図３は、移動通信端末１００の機能ブロック図である。移動通信端末１００は、アプリケーション部３０１、データサイズ取得部３０２、データ生成速度計算部３０３、複製データ数計算部３０４、複製データ生成部３０５、送信完了時刻計算部３０６、通信品質テーブル３０７、通信速度取得部３０９、送信完了時刻記憶部３１０、通信ＩＦ選択部３１１を有する。
【００２２】
なお、本実施例では、これらの機能部はソフトウェア（プログラム）により実装されているものとする。具体的にはアプリケーション部３０１は、メモリ２０２に格納されているアプリケーションプログラムをＣＰＵ２０１が実行することで実現される機能部である。また、ＣＰＵ２０１は、メモリ２０２に格納されている制御プログラムを実行することで、移動通信端末１００を、データサイズ取得部３０２、データ生成速度計算部３０３、複製データ数計算部３０４、複製データ生成部３０５、送信完了時刻計算部３０６、通信品質テーブル３０７、通信速度取得部３０９、送信完了時刻記憶部３１０、通信ＩＦ選択部３１１を備えた装置として稼働させる。
【００２３】
ただし、これらの機能部は必ずしもソフトウェアで実現されている必要はない。上で述べた機能部の一部または全部は、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）やＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）等のハードウェアを用いて構成されていてもよい。
【００２４】
アプリケーション部３０１は、サーバ１０２に送信すべきデータを生成する機能部で、生成したデータを複製データ生成部３０５へ入力する。
【００２５】
データサイズ取得部３０２は、アプリケーション部３０１が複製データ生成部３０５へ入力するデータのサイズを取得する。
【００２６】
データ生成速度計算部３０３は、アプリケーション部３０１が複製データ生成部３０５へ入力するデータを生成する時の速度であるデータ生成速度を観測し、観測されたデータ生成速度を複製データ数計算部３０４や送信完了時刻計算部３０６へ入力する。
【００２７】
複製データ数計算部３０４は、データ生成速度計算部３０３から入力されたデータ生成速度と、通信速度取得部３０９から入力される各通信ＩＦ２０５の通信速度に基づいて複製データ数を決定し、決定された複製データ数を複製データ生成部３０５へ入力する。
【００２８】
複製データ生成部３０５は、アプリケーション部３０１からデータを受信し、複製データ数計算部３０４から複製データ数を受信する。複製データ生成部３０５は、アプリケーション部３０１から受信したデータの複製を、複製データ数計算部３０４から受信した複数データ数と同じ数だけ生成し、生成したデータ（複製データ）を通信ＩＦ選択部３１１へ入力する。
【００２９】
送信完了時刻計算部３０６は、送信完了時刻記憶部３１０から取得した前データ送信完了時刻と、通信速度取得部３０９から入力された各通信ＩＦ２０５の通信速度と、データサイズ取得部３０２から入力されたデータサイズに基づき、次送信パケットの送信完了時刻（次データ送信完了時刻）を計算する。
【００３０】
通信品質テーブル３０７は、各通信ＩＦ２０５の通信速度を記憶したテーブルである。各通信ＩＦ２０５の通信速度は、移動通信端末１００の位置や時刻によって異なり得るため、通信品質テーブル３０７には各通信ＩＦ２０５の通信速度が、位置と時刻毎に記憶されている。
【００３１】
通信速度取得部３０９は、ＧＰＳ２０３から入力される現在時刻と現在位置に基づいて、通信品質テーブル３０７を参照し、ＧＰＳ２０３から入力される現在時刻と現在位置に対応する、各通信ＩＦ２０５の通信速度を取得する。
【００３２】
送信完了時刻記憶部３１０は、通信ＩＦ選択部３１１から入力される、前データ送信完了時刻を格納しておく記憶領域である。
【００３３】
通信ＩＦ選択部３１１は、複製データ生成部３０５から入力される１または複数のデータを受信し、受信データ数をカウントする。通信ＩＦ選択部３１１は、送信完了時刻計算部３０６から入力される、各通信ＩＦ２０５の次データ送信完了時刻に基づいて、複製データ生成部３０５から入力された１または複数のデータを送信する通信ＩＦ２０５を選択し、前記１または複数のデータに同一のシーケンス番号を付与した上で、前記通信ＩＦ２０５を介してデータを送信する。
【００３４】
＜通信速度取得部３０９の処理フロー＞
図４に、通信速度取得部３０９が参照する通信品質テーブル３０７の例を示す。
【００３５】
本実施例においては、通信品質テーブル３０７は、通信キャリア毎（または通信ＩＦモジュール２０５毎）に設けられるものとし、通信キャリアｉに対応する通信品質テーブル３０７の参照番号には“３０７−ｉ”が用いられる。通信速度取得部３０９が、ある時刻ｔにおける通信ＩＦｉの通信速度を取得する場合、通信品質テーブル３０７−ｉに含まれる各行の時刻４１０−ｉを参照し、時刻４１０−ｉの範囲内に時刻ｔを含む行を特定する。そして通信速度取得部３０９は、ＧＰＳ２０３によって得られた現在地が、現在地４２０−ｉカラム内の何れのエリア（エリアＡ，Ｂ，Ｃ）に含まれるかを照合する。
【００３６】
たとえば現在時刻が０２時００分で、現在地が“エリアＢ”に含まれる場合、通信速度取得部３０９が通信ＩＦ１の通信速度を取得する時、通信品質テーブル３０７−１の時刻４１０−１が“00時00分00.000秒~05時59分59.999秒”の行の、現在地４２０−１が“エリアＢ”に格納されている値を参照することにより、通信ＩＦ１の通信速度は、2000000(bps)であると知ることができる。
【００３７】
図５に、通信速度取得部３０９の処理フロー図を示す。通信速度取得部３０９は、各通信ＩＦの通信速度の情報を記憶しておく記憶領域（変数）を有する。以下では通信ＩＦｉの通信速度を記憶しておく記憶領域をｂｉと表記する。また以下では特に断りのない限り、移動通信端末１００の有する通信ＩＦモジュール２０５の数をｍ（ｍは１より大きい整数値）とする。図２や図３では、ｍ＝３の例が示されている。
【００３８】
また、図５等の処理フロー図に用いられている参照番号の前に付されている“Ｓ”は、「ステップ」を意味する。また、図５等の処理フロー図に記載の式において、左辺と右辺が「＝」で結合されている式は、右辺の値を左辺に代入する処理であることを意味する。また左辺と右辺が「＝＝」で結合されている式は、左辺の値と右辺の値が等しい状態にあることを意味し、判定処理（たとえば以下で説明するＳ５０５）でこの式が用いられている場合、その判定処理は、左辺の値と右辺の値が等しいか否かを判定する処理であることを意味する。
【００３９】
通信速度取得部３０９は、はじめに、各通信ＩＦの通信速度ｂｊ（ｊ＝１，２，．．．ｍ）を初期値（０）に設定する（Ｓ５０１）。次に、通信速度取得部３０９は、現在位置、または、現在時刻をＧＰＳ２０３から受信したかを確認し（Ｓ５０２）、受信していない場合にはＳ５０２に進み、受信している場合にはＳ５０３に進む。
【００４０】
Ｓ５０３では、通信速度取得部３０９は変数ｉを用意し、ｉを０に初期化する。次に通信速度取得部３０９は、通信ＩＦ ｉの通信品質テーブル３０７を参照し、現在位置、現在時刻に対応する通信速度（これを“ｃｉ”と呼ぶ）を取得する（Ｓ５０４）。
【００４１】
次に通信速度取得部３０９は、取得した通信速度ｃｉがｂｉと等しいかを確認し（Ｓ５０５）、等しい場合はＳ５０８へ進み、等しくない場合にはＳ５０６へ進む。Ｓ５０６では、通信速度取得部３０９は取得した通信速度ｃｉをｂｉに代入する。次に通信速度取得部３０９は、複製データ数計算部３０４と送信完了時刻計算部３０６へｂｉを入力する（Ｓ５０７）。
【００４２】
Ｓ５０８では、通信速度取得部３０９はｉが通信ＩＦ数と等しいかを確認し、等しい場合にはＳ５０２へ進み、等しくない場合にはＳ５０９へ進む。Ｓ５０９では通信速度取得部３０９はｉに１を加算し、Ｓ５０４へ進む。
【００４３】
例えば、移動通信端末１００がＧＰＳ２０３から取得した現在時刻が03時00分00.000秒でエリアＢにおり、また移動通信端末１００が、図４に示された通信品質テーブル３０７−１，３０７−２，３０７−３を有している状況を想定する。この時の各通信ＩＦの通信速度は、b1=2000000, b2=500000, b3=600000である。ここで移動通信端末１００が、03時00分00.010秒（ＧＰＳ２０３から取得した現在時刻とする）にエリアＡに移動した場合に、通信速度取得部３０９が行う処理を説明する。移動後にＳ５０４が実行されることにより、通信速度取得部３０９は通信品質テーブル３０７からc1=1500000, c2=900000, c3=800000を取得する。この場合、b1≠c1, b2≠c2, b3≠c3であるため、b1, b2, b3はそれぞれ、c1, c2, c3に更新され（Ｓ５０５、Ｓ５０６）、通信速度取得部３０９は更新されたb1, b2, b3を複製データ数計算部３０４と送信完了時刻計算部３０６へ入力する（Ｓ５０７）。
【００４４】
＜複製データ数計算部の処理＞
複製データ数計算部３０４が実施する複製データ数計算方法を、図６を用いて説明する。複製データ数計算部３０４は、データ生成速度計算部３０３がアプリケーション部３０１のデータ生成速度を観測して、複製データ数計算部３０４にデータ生成速度を入力したことを契機として、処理を開始する。
【００４５】
まずＳ６０１で複製データ数計算部３０４は、複製データ数を格納するための変数Nint、バンドル回線合計通信速度を格納するための変数Ｖを用意し、NintとＶを初期化する（０を代入する）。なお、本明細書において「バンドル回線」は、通信速度がアプリケーション部３０１のデータ生成速度より小さい通信ＩＦ（あるいはその通信ＩＦによって移動通信端末１００とサーバ１０２間に形成される通信路）を意味する語として用いられる。そしてバンドル回線合計通信速度とは、全てのバンドル回線の通信速度の総和である。
【００４６】
Ｓ６０２では、複製データ数計算部３０４はアプリケーション部３０１のデータ生成速度（これをｇ[bps]と表記する）を取得し、Ｓ６０３へ進む。Ｓ６０３では複製データ数計算部３０４は変数ｉを用意し、ｉに初期値（１）を代入し、Ｓ６０４へ進む。
【００４７】
Ｓ６０４では、複製データ数計算部３０４は通信速度取得部３０９から通信IF iの通信速度bi[bps]を取得し、Ｓ６０５へ進む。Ｓ６０５では複製データ数計算部３０４はbiとｇを比較することで、bi≧ｇの関係にあるか判定し、bi≧ｇの場合にはＳ６０６へ進み、bi≧ｇでない場合には、Ｓ６０７へ進む。
【００４８】
Ｓ６０６では、複製データ数計算部３０４は複製データ数Nintに１を加算し、Ｓ６０８へ進む。Ｓ６０７では、複製データ数計算部３０４はバンドル回線合計通信速度Ｖにbiを加算し、Ｓ６０８へ進む。
【００４９】
Ｓ６０８では、複製データ数計算部３０４はiが通信ＩＦ数に等しいかを確認し、等しくない場合にはＳ６０９に進み、等しい場合にはＳ６１０に進む。Ｓ６０９では、複製データ数計算部３０４はｉの値に１を加算し、Ｓ６０５へ進む。
【００５０】
Ｓ６１０では、複製データ数計算部３０４は複製データ数Nintに、バンドル回線合計通信速度をデータ生成速度で除算した商（Ｖ÷ｇ）を加えて、Ｓ６１１へ進む。なお、Ｓ６１０で複製データ数計算部３０４がNintに加算する値（Ｖ÷ｇ）は整数とする。つまりＶ÷ｇが小数部を含む場合、小数部は切り捨てられてＶ÷ｇの整数部のみが加算される。Ｓ６１１では複製データ数計算部３０４は、計算した複製データ数Nintを複製データ生成部３０５へ入力し、処理を終了する。
【００５１】
＜複製データ数計算部の処理の具体例＞
複製データ数計算部３０４の複製データ数計算方法の具体例を、図７に示す例を用いて説明する。なお、本実施例においては、図７に示す通り、アプリケーション部３０１は一定間隔（パケット生成間隔で示された間隔）で所定サイズ（データサイズに示されたサイズ）のデータを生成する前提とする。
【００５２】
図７に示すとおり、アプリケーション部３０１のデータ生成速度g=1000000[bps]で、通信ＩＦの数が３つで、かつ通信速度取得部３０９で決定された各通信ＩＦの通信速度がb1=1500000[bps]、b2=900000[bps]、b3=800000[bps]である場合に、複製データ数計算部３０４が複製データ数Nintを算出する処理の流れを説明する。
【００５３】
まず変数ｉが１の時の、Ｓ６０４〜Ｓ６０７で行われる処理について説明する。Ｓ６０５で複製データ数計算部３０４はb1とｇを比較すると、b1 ≧ gであるため、複製データ数計算部３０４は複製データ数Nintに1を加算する（Ｓ６０６）。そのためNintは1となる。
【００５４】
次に変数ｉが２の時、Ｓ６０５で複製データ数計算部３０４がb2とｇを比較すると、b2≧gではないため、複製データ数計算部３０４はバンドル回線合計通信速度Ｖにb2を加算する（Ｓ６０７）。そのためＶは900000となる。
【００５５】
次に変数ｉが３の時、Ｓ６０５で複製データ数計算部３０４がb3とｇを比較すると、b3 ≧ gとならないため、複製データ数計算部３０４はバンドル回線合計通信速度Ｖにb3を加算することにより、Ｖは1700000になる。
【００５６】
全ての通信ＩＦについてＳ６０７迄の処理が完了すると（Ｓ６０８で、ｉが通信ＩＦ数と等しくなった場合）、複製データ数計算部３０４は次にＳ６１０を実行する。Ｓ６１０では、複製データ数NintにＶ÷ｇ(具体的には、1700000÷1000000の計算結果から小数部を切り捨てたもの。つまり１)が加算され、Nintは2となる。つまりＶ÷ｇは、バンドル回線（ここの例では通信ＩＦ２及び通信ＩＦ３）を用いて送信される複製データの数を表す。
【００５７】
本実施例に係る移動通信端末１００は、上で述べた処理を行うことで複製データ数を決定するので、非バンドル回線（通信速度がデータ生成速度以上である通信ＩＦ）を介して送信される複製データの数は、非バンドル回線の数と等しく、バンドル回線を介して送信される複製データの数は、バンドル回線の数よりも少なくなる。たとえば上で説明した例では、通信ＩＦ２と通信ＩＦ３の２つがバンドル回線であるため、通信ＩＦ２または通信ＩＦ３を介して送信される複製データの数は、２以上にならないように制限される。
【００５８】
全バンドル回線に複製データを送信させると、データが常時遅延して送信される（バンドル回線を介して送信される単位時間あたりのデータ量が、全バンドル回線の帯域の合計を超過するからである）。かつその遅延は、データを送信し続けるにつれて大きくなる。本実施例に係る移動通信端末１００は、上で述べた処理により複製データ数を決定することで、バンドル回線を介して送信される(単位時間あたりの)複製データの量が、全バンドル回線の帯域を超えないように制限され、結果としてデータ送信に係る遅延を抑制できる。
【００５９】
＜複製データ生成部の処理＞
複製データ生成部３０５の複製データ生成処理について図８を用いて説明する。以下の説明において、複製データ数計算部３０４が算出した複製データ数をNintと表記する。先に述べたとおり、複製データ数計算部３０４は複製データ数Nintを算出すると、複製データ生成部３０５にNintを入力する。
【００６０】
Ｓ８０１では、複製データ生成部３０５は変数nintを用意する。変数nintは、複製データ生成部３０５が生成すべき複製データの数を表す。複製データ生成部３０５はまたＳ８０１で、複製データ数nintを1で初期化し、Ｓ８０２へ進む。
【００６１】
Ｓ８０２では複製データ生成部３０５は、複製データ数計算部３０４から複製データ数Nintを受信したか確認し、受信している場合はＳ８０３に進み、受信していない場合はＳ８０４に進む。Ｓ８０３では、複製データ生成部３０５はnintの値を複製データ数計算部３０４から受信したNintに更新し、Ｓ８０４に進む。
【００６２】
Ｓ８０４では複製データ生成部３０５は、アプリケーション部３０１からデータを受信したか確認し、受信している場合にはＳ８０５に進み、受信していない場合にはＳ８０２に進む。Ｓ８０５では複製データ生成部３０５は、nintと同数の複製データ（アプリケーション部３０１から受信したデータの複製）を生成する。その後複製データ生成部３０５は、当該複製データを通信ＩＦ選択部３１１へ入力し、再びＳ８０２に戻る。
【００６３】
＜送信完了時刻計算部の処理＞
送信完了時刻計算部３０６の処理について図９を用いて説明する。送信完了時刻計算部３０６は、アプリケーション部３０１でデータが生成・出力され、そしてデータサイズ取得部３０２からデータサイズが、データ生成速度計算部３０３からアプリケーション部３０１のデータ生成速度が入力されることを契機に実行される。そして送信完了時刻計算部３０６は、アプリケーション部３０１からデータが出力されるたびに、そのデータ（の複製）を通信ＩＦ２０５が送信する場合のデータ送信完了時刻を、通信ＩＦ２０５毎に算出する（見積もる）。
【００６４】
以下の説明では、送信完了時刻計算部３０６が図９の処理を実行することで算出される時刻のことを「次データ送信完了時刻」と呼ぶ。また送信完了時刻計算部３０６は次データ送信完了時刻を保持するための変数を有する。以下の説明では、送信完了時刻計算部３０６が通信ＩＦｉ（ｉは１以上の整数である）について算出した次データ送信完了時刻を保持する変数をti_nextと表記する。
【００６５】
本実施例で用いられる時刻の表現形式、たとえば変数ti_nextに格納される時刻情報の表現形式には、ある基準時刻（たとえば２０１６年１月１日０時０分０秒など）からの経過時間（秒数）が用いられる。ただし変数ti_nextに０が格納される場合には、別の意味を持つ。詳細は後述する。
【００６６】
なお、送信完了時刻計算部３０６が次データ送信完了時刻を算出する時、前回算出した時刻（次データ送信完了時刻）を用いることがある。以下では、送信完了時刻計算部３０６が前回図９の処理を実行した時に算出した時刻（次データ送信完了時刻）のことを「前データ送信完了時刻」と呼び、通信ＩＦｉについて算出された前データ送信完了時刻はti_beforeと表記する。なお、前データ送信完了時刻ti_beforeは、通信ＩＦ選択部３１１（後述）によって、送信完了時刻記憶部３１０に格納されている。
【００６７】
Ｓ９０１では、送信完了時刻計算部３０６は送信完了時刻記憶部３１０から、各通信ＩＦの前データ送信完了時刻tj_before (j=1,2,…ｍ)を取得し、Ｓ９０２へ進む。Ｓ９０２では送信完了時刻計算部３０６は、データ生成速度計算部３０３からアプリケーション部３０１のデータ生成速度g [bps]を取得し、Ｓ９０３へ進む。Ｓ９０３では送信完了時刻計算部３０６は、データサイズ取得部３０２から入力されたデータサイズd[bit]を取得し、Ｓ９０４へ進む。Ｓ９０４では、送信完了時刻計算部３０６は変数ｉを用意し、iを1で初期化し、Ｓ９０５へ進む。
【００６８】
Ｓ９０５では、送信完了時刻計算部３０６はbi とgを比較し、bi ＜ gである場合にはＳ９０６に進み、逆にbi ≧ gである場合にはＳ９０７に進む。Ｓ９０６では送信完了時刻計算部３０６は、ti_beforeが現在時刻より前か、つまり“ti_before<現在時刻”を満たすかを確認する。ti_beforeが現在時刻より前の場合には次にＳ９０８が行われ、ti_beforeが現在時刻より前でない場合には、次にＳ９０９が行われる。
【００６９】
Ｓ９０７では、送信完了時刻計算部３０６はti_next に０を格納し、Ｓ９１０へ進む。Ｓ９０７が実行される場合、データ生成速度よりも通信ＩＦｉの通信速度が速い（bi≧gである）ため、アプリケーション部３０１から次に送信すべきデータが通信ＩＦｉに渡される前に、データ送信が完了する。その場合には送信完了時刻計算部３０６はti_nextを０にする。
【００７０】
Ｓ９０８では、送信完了時刻計算部３０６はti_nextに（現在時刻＋d/bi）を代入し、Ｓ９１０に進む。Ｓ９０８が実行される場合、前回行われたデータ送信処理は既に完了している。なぜならば“ti_before<現在時刻”が成立する場合（Ｓ９０６の判定が肯定的な場合）にＳ９０８が実行されるからである。そのためこの場合、送信完了時刻計算部３０６は、サイズd [bit]のデータの送信に要する時間(つまりd/bi）を現在時刻に加算することで、次データ送信完了時刻を算出する。
【００７１】
Ｓ９０９では、送信完了時刻計算部３０６はti_nextに(ti_before+d/bi)を代入し、Ｓ９１０へ進む。Ｓ９０９が実行される時は、まだ前回のデータ送信処理が完了しておらず（ti_before≧現在時刻の場合に、Ｓ９０９が実行されるからである）、これから行われるデータ送信は、前回のデータ送信処理が完了してから開始される。そのため次データ送信完了時刻は(ti_before+d/bi)になると推定されるため、送信完了時刻計算部３０６はti_nextに(ti_before+d/bi)を代入する。
【００７２】
Ｓ９１０では、送信完了時刻計算部３０６は“i==通信IF数”であるか確認し、ｉが通信ＩＦ数と等しい場合にはＳ９１２に進み、そうでない場合にはＳ９１１に進む。Ｓ９１１ではiに１を加算し、Ｓ９０５へ進む。Ｓ９１２では、各通信ＩＦの次データ送信完了時刻tj_next (j=1,2,…ｍ)を通信ＩＦ選択部３１１へ入力し、処理を終了する。
【００７３】
＜通信ＩＦ選択部の処理＞
通信ＩＦ選択部３１１の処理を、図１０を用いて説明する。
【００７４】
Ｓ１０００では、通信ＩＦ選択部３１１は変数ｋを用意し、ｋを１で初期化する。そのあとＳ１００１が行われる。
【００７５】
Ｓ１００１では通信ＩＦ選択部３１１は、複製データ生成部３０５から複製データを受信したかを確認し、受信している場合にはＳ１００２へ進み、受信していない場合にはＳ１００１へ進む。Ｓ１００２では、通信ＩＦ選択部３１１は複製データ数をカウントし、Ｓ１００３へ進む。以下では、ここでカウントされた複製データ数をｃと表記する。
【００７６】
Ｓ１００３では通信ＩＦ選択部３１１は、送信完了時刻計算部３０６から各通信ＩＦの次データ送信完了時刻ti_next(ｉ=1,2,…ｍ)を取得し、ti_nextを小さい順にソートし、Ｓ１００４へ進む。Ｓ１００４では、通信ＩＦ選択部３１１は変数ｊを用意し、jを1で初期化し、Ｓ１００５へ進む。Ｓ１００５では、通信ＩＦ選択部３１１は各通信ＩＦの次データ送信完了時刻を比較し、次データ送信完了時刻がj番目に小さい通信ＩＦを特定し、Ｓ１００６へ進む。以下では、Ｓ１００５において特定された通信ＩＦが、通信ＩＦ ｉ(ｉは、1以上かつｍ以下の整数とする)が特定された場合の例を説明する。
【００７７】
Ｓ１００６では、通信ＩＦ選択部３１１は複製データにシーケンス番号 k を付与して、Ｓ１００５で特定された通信 IF iに複製データの送信を指示する。その後通信ＩＦ選択部３１１は、通信ＩＦｉのデータ送信完了を待たずに、Ｓ１００７へ進む。Ｓ１００７では通信ＩＦ選択部３１１は、送信完了時刻記憶部３１０に記憶されている前データ送信完了時刻ti_beforeの値をti_nextに更新し、Ｓ１００８へ進む。
【００７８】
Ｓ１００８では、通信ＩＦ選択部３１１はj==cであるか確認し、j==cである場合にはＳ１０１０へ進み、そうでない場合にはＳ１００９へ進む。Ｓ１００９では、通信ＩＦ選択部３１１はjに1を加算し、Ｓ１００５へ進む。Ｓ１０１０では、通信ＩＦ選択部３１１はｋに１を加算し、Ｓ１００１へ進む。
【００７９】
なお、通信ＩＦ選択部３１１は必ずしも上で述べた順序で各ステップを実行しなくてもよい。たとえば通信ＩＦ選択部３１１は、データ送信に用いる通信ＩＦの選択（Ｓ１００５）と前データ送信完了時刻ti_beforeの更新処理（Ｓ１００７）を、ｃ回（複製データ数と同回数）繰り返し、それが終わった後に、選択された各通信ＩＦにデータ送信（Ｓ１００６）を並列実行させるようにしてもよい。
【００８０】
さらに別の実施形態として、複製データにシーケンス番号を付与する処理を、Ｓ１００６（通信ＩＦ選択部３１１）で行わせる代わりに、他の機能部、例えば複製データ生成部３０５に行わせてもよい。
【００８１】
＜通信データのフォーマット＞
ここで、通信ＩＦ選択部３１１が通信ＩＦ２０５を介して送信する通信データのフォーマットを図１１に示す。通信データはヘッダ部１１０１と、データ部１１０２から構成される。ヘッダ部１１０１には、シーケンス番号１１０３が格納される。シーケンス番号１１０３は、図１０のＳ１００６で付与される。データ部１１０２には、アプリケーションデータ１１０４が格納される。アプリケーションデータ１１０４は、アプリケーション部３０１が生成したデータである。
【００８２】
＜送信完了時刻計算部の処理と、通信ＩＦ選択部の処理の具体例＞
データ送信完了時刻の計算例と通信ＩＦ選択の例を、図７、１２、１３、１４を用いて説明する。図７は例を説明するための前提条件である。前提条件として、図７に示す通り、アプリケーション部３０１が生成するデータのデータ生成速度g=1000000[bps]、データサイズd=12000[bit]、データ生成間隔0.012[s]とする。また、通信ＩＦ２０５の数は３つとし、通信速度取得部３０９で決定された、各通信ＩＦ２０５の通信速度b1、b2、b3はそれぞれ、b1=1500000[bps]、b2=900000[bps]、b3=800000[bps]とする。
【００８３】
以下の例では、複製データ生成部３０５に0時0分1.000秒から、データ生成間隔0.012[s]毎にデータサイズd=12000[bit]のデータが入力される例を説明する。また、時刻0時0分1.000秒において、送信が完了していないデータはないものとする。なお、以下の例における時刻の表現方法には、0時0分0.000秒からの経過時間が用いられる。つまり、ti_next及びti_beforeに格納される値は、0時0分0.000秒からの経過時間である。ただし、ti_nextに０が格納されている場合、それはti_next（次データ送信完了時刻）が0時0分0.000秒であることを意味するわけではない。この場合は先に述べたとおり、前回のデータ送信処理が完了していることを意味する。
【００８４】
本前提条件における、複製データ数の計算結果は、＜複製データ数の計算処理フローの具体例＞で説明した通り、２となる。
【００８５】
図１２は、データ送信完了時刻の計算例を示す。１２１０、１２２０、１２３０、１２４０はそれぞれ、0時0分1.000秒、0時0分1.012秒、0時0分1.024秒、0時0分1.036秒に送信完了時刻計算部３０６が算出した次データ送信完了時刻の計算結果である。たとえばカラム１２１４は、0時0分1.000秒に、送信完了時刻計算部３０６が算出した次データ送信完了時刻を表しており、またカラム１２１３は、その時点で送信完了時刻記憶部３１０に記憶されている時刻（前データ送信完了時刻）である。なお、カラム１２１４（または１２２４，１２３４，１２４４）に記録されている値のうち、下線の引かれている値は、バンドル回線の中で、通信ＩＦ選択部３１１が複製データ送信のために選択した通信ＩＦの次データ送信完了時刻を表している。
【００８６】
図１３、図１４は次データ送信完了時刻に基づいて、通信ＩＦ選択部３１１が複製データを送信する通信ＩＦ２０５を選択して送信した結果を示す図である。１３１０、１３２０、１４１０、１４２０はそれぞれ、0時0分1.000秒、0時0分1.012秒、0時0分1.024秒、0時0分1.036秒に流入した複製データを送信した結果を示す。
【００８７】
○現在時刻：0時0分1.000秒における、
送信完了時刻計算部３０６の処理を説明する（１２１０）。送信完了時刻計算部３０６は通信ＩＦ１，通信ＩＦ２，通信ＩＦ３について、Ｓ９０５〜Ｓ９０９を実行する。
・b1について、b1 < gを満たさないので（Ｓ９０５）、送信完了時刻計算部３０６は次データ送信完了時刻t1_next=0とする（Ｓ９０７）。
・b2について、b2 < gを満たし（Ｓ９０５）、かつt2_beforeは現在時刻（0時0分1.000秒）より小さいので、送信完了時刻計算部３０６はＳ９０８を実行する。これにより次データ送信完了時刻t2_next=1.000＋12000/900000=1.0133となる。
・b3について、b3 < gを満たし（Ｓ９０５）、かつt3_beforeは現在時刻より小さいので、送信完了時刻計算部３０６はＳ９０８を実行する。これにより次データ送信完了時刻t3_next=1.000＋12000/600000=1.020となる。
【００８８】
続いて送信完了時刻計算部３０６の処理の後に実行される、通信ＩＦ選択部３１１の処理を説明する。
・複製データ生成部３０５から２個の複製データが送信されてくるため、複製データ数cは２と決定される（Ｓ１００２）。複製データ数cが２なので、通信ＩＦ選択部３１１では、通信ＩＦを選択して、選択した通信ＩＦを用いてデータ送信する処理（Ｓ１００５〜Ｓ１００７）が２回行われる。
・まずＳ１００３で通信ＩＦ選択部３１１は、送信完了時刻計算部３０６から各通信IFの次データ送信完了時刻 ti_next (i=1,2,3)を取得し、ti_nextを小さい順にソートする。結果として、t1_next、t2_next、t3_nextの順に並べ替えられる。
・１回目にＳ１００５が実行される時、通信ＩＦ選択部３１１は送信完了時刻 ti_next (i=1,2,3)が１番目に小さい通信IF（通信ＩＦ1）を選択する。続いて通信ＩＦ選択部３１１は送信完了時刻記憶部３１０のt1_beforeをt1_next  (=0)に更新（Ｓ１００７）する。
・２回目にＳ１００５が実行される時、送信完了時刻 ti_next (i=1,2,3)が２番目に小さい通信ＩＦ２が選択される。Ｓ１００７では、送信完了時刻記憶部３１０のt2_beforeがt2_next  (=1.0133)に更新される。
【００８９】
図１３の１３１０の上段に示されるチャートは、上記手順で計算された各通信ＩＦの次データ送信完了時刻を示し、下段に示されるチャートは、通信ＩＦ選択部３１１が次データ送信完了時刻に基づいて選択した通信ＩＦ（通信ＩＦ１，通信ＩＦ２）へデータ送信した結果を表している。
【００９０】
○現在時刻：0時0分1.012秒における、
送信完了時刻計算部の処理を説明する（１２２０）。
・b1について、b1 < gを満たさないので（Ｓ９０５）、送信完了時刻計算部３０６は次データ送信完了時刻t1_next=0とする（Ｓ９０７）。
・b2について、b2 < gを満たし（Ｓ９０５）、かつt2_beforeは現在時刻（0時0分1.012秒）より大きいので、送信完了時刻計算部３０６は次データ送信完了時刻t2_next=1.0133＋12000/900000=1.0266とする（Ｓ９０９）。
・b3について、b3 < gを満たし（Ｓ９０５）、かつt3_beforeは現在時刻より小さいので、送信完了時刻計算部３０６は次データ送信完了時刻t3_next=1.012＋12000/800000=1.027とする（Ｓ９０８）。
【００９１】
続いて送信完了時刻計算部３０６の処理の後に実行される、通信ＩＦ選択部３１１の処理を説明する。
・先の例と同じく、複製データ数cは２である（Ｓ１００２）。
・通信ＩＦ選択部３１１は、送信完了時刻計算部３０６から各通信IFの次データ送信完了時刻 ti_next (i=1,2,3)を取得し、 ti_nextを小さい順にソートする。結果として、t1_next、t2_next、t3_nextの順にソートされる（Ｓ１００３）。
・１回目にＳ１００５が実行される時、通信ＩＦ選択部３１１は送信完了時刻 ti_next (i=1,2,3)が１番目に小さい通信ＩＦ1を選択する。Ｓ１００７で通信ＩＦ選択部３１１は、送信完了時刻記憶部３１０のt1_before をt1_next  (=0)に更新する。
・２回目にＳ１００５が実行される時、通信ＩＦ選択部３１１は送信完了時刻 ti_next (i=1,2,3)が２番目に小さい通信ＩＦ２を選択し（Ｓ１００５）、送信完了時刻記憶部３１０のti_beforeをt2_next  (=1.0266)に更新（Ｓ１００７）する。
【００９２】
図１３の１３２０の上段に示されたチャートは、上記手順で計算された各通信ＩＦの次データ送信完了時刻を表しており、下段に示されたチャートは、通信ＩＦ選択部３１１が次データ送信完了時刻に基づいて選択した通信ＩＦ（通信ＩＦ１，通信ＩＦ２）へデータ送信した結果を表している。
【００９３】
○現在時刻：0時0分1.024秒における、
送信完了時刻計算部３０６の処理を説明する（１２２０）。
・b1について、b1 < gを満たさないので（Ｓ９０５）、次データ送信完了時刻t1_next=0にされる（Ｓ９０７）。
・b2について、b2 < gを満たし（Ｓ９０５）、かつt2_beforeは現在時刻（0時0分1.024秒）より大きいので、送信完了時刻計算部３０６は次データ送信完了時刻t2_next=1.0266＋12000/900000=1.0399にする（Ｓ９０９）。
・b3について、b3 < gを満たし（Ｓ９０５）、かつt3_beforeは現在時刻より小さいので、送信完了時刻計算部３０６は次データ送信完了時刻t3_next=1.024＋12000/800000=1.039となる（Ｓ９０８）。
【００９４】
通信ＩＦ選択部３１１の処理を説明する。
・先の例と同じく、複製データ数cは２である（Ｓ１００２）。
・通信ＩＦ選択部３１１は、送信完了時刻計算部から各通信IFの次データ送信完了時刻 ti_next (i=1,2,3)を取得し、ti_nextを小さい順にソートすることで、t1_next、t3_next、t2_nextの順に並べ替えられる（Ｓ１００３）。
・Ｓ１００５で通信ＩＦ選択部３１１は、送信完了時刻 ti_next (i=1,2,3)が１番目に小さい通信ＩＦ1を選択する。Ｓ１００７では通信ＩＦ選択部３１１は、送信完了時刻記憶部３１０のti_beforeをt1_next(=0)に更新（Ｓ１００７）する。
・次にＳ１００５が実行される時、送信完了時刻 ti_next (i=1,2,3)が２番目に小さい通信ＩＦ３が選択され、Ｓ１００７で通信ＩＦ選択部３１１は、t送信完了時刻記憶部３１０のti_beforeをt2_next(=1.039)に更新（Ｓ１００７）する。
【００９５】
図１４の１４１０の上段に示されたチャートは、上記手順で計算された各通信ＩＦの次データ送信完了時刻を表し、下段に示されたチャートは、通信ＩＦ選択部３１１が次データ送信完了時刻に基づいて選択した通信ＩＦ（通信ＩＦ１，通信ＩＦ３）へデータ送信した結果を表している。
【００９６】
○現在時刻：0時0分1.036秒における、
送信完了時刻計算部の処理を説明する（１２２０）。
・b1について、b1 < gを満たさないので（Ｓ９０５）、送信完了時刻計算部３０６は次データ送信完了時刻t1_next=0とする（Ｓ９０７）。
・b2について、b2 < gを満たし（Ｓ９０５）、かつt2_beforeは現在時刻（0時0分1.036秒）より小さいので、送信完了時刻計算部３０６は次データ送信完了時刻t2_next=1.036＋12000/900000=1.0499とする（Ｓ９０９）。
・b3について、b3 < gを満たし（Ｓ９０５）、かつt3_beforeは現在時刻（0時0分1.036秒）より大きいので、送信完了時刻計算部３０６は次データ送信完了時刻t3_next=1.039＋12000/800000=1.054となる（Ｓ９０９）。
【００９７】
通信ＩＦ選択部３１１の処理を説明する。
・先の例と同じく、複製データ数cは２である（Ｓ１００２）。
・通信ＩＦ選択部３１１は、送信完了時刻計算部から各通信IFの次データ送信完了時刻 ti_next (i=1,2,3)を取得し、 ti_nextを小さい順にソートする。結果としてt1_next、t2_next、t3_nextの順にソートされる（Ｓ１００３）。
・Ｓ１００５で通信ＩＦ選択部３１１は、送信完了時刻 ti_next (i=1,2,3)が１番目に小さい通信ＩＦ1を選択する。Ｓ１００７では通信ＩＦ選択部３１１は、送信完了時刻記憶部３１０のti_beforeをt1_next  (=0)に更新（Ｓ１００７）する。
・２回目にＳ１００５が実行される時、通信ＩＦ選択部３１１は送信完了時刻 ti_next (i=1,2,3)が２番目に小さい通信ＩＦ２を選択し（Ｓ１００５）、送信完了時刻記憶部３１０のti_beforeをt2_next  (=1.0499)に更新（Ｓ１００７）する。
【００９８】
図１４の１４２０の上段に示されたチャートは、上記手順で計算された各通信ＩＦの次データ送信完了時刻を表し、下段に示されたチャートは、通信ＩＦ選択部３１１が次データ送信完了時刻に基づいて選択した通信ＩＦへデータ送信した結果を表している。
【００９９】
本実施例に係る移動通信端末１００は、図９，１０を用いて説明したとおり、各通信ＩＦからデータ送信を行った場合のデータ送信完了時刻（上で述べた「次データ送信完了時刻」）を算出し（見積もり）、算出した各通信ＩＦのデータ送信完了時刻に基づいて、データ送信に使用する通信ＩＦを選択する。具体的には、データ送信完了時刻が最も早い通信ＩＦから優先的に選択される。これにより、データ通信遅延を最小限に抑制することを可能にしている。
【０１００】
最後に、本実施例に係る通信システムにおける、サーバ１０２の構成について説明する。図１５は、サーバ１０２の物理構成図である。サーバ１０２は、ＣＰＵ１５０１と、メモリ１５０２と、通信ＩＦモジュール１５０３（以下では「通信ＩＦ１５０３」と略記）と、それらを接続するバス１５０４から構成される。
【０１０１】
図１６は、サーバ１０２の機能ブロック図である。
【０１０２】
サーバ１０２は、アプリケーション部１６０１、先着データ選択部１６０２、通信ＩＦ１６０３から構成される。アプリケーション部１６０１、先着データ選択部１６０２は、メモリ１５０２に格納されたプログラムをＣＰＵ１５０１が実行することにより実現される機能部である。
【０１０３】
アプリケーション部１６０１は、移動通信端末１００から送信されてきたデータを利用して、分析等の各種処理を実行する。
【０１０４】
先着データ選択部１６０２は、通信ＩＦ１５０３を介して受信したデータを、アプリケーション部１６０１に渡す機能部である。先に述べたとおり、移動通信端末１００からサーバ１０２には、同一シーケンス番号が付与された複製データが複数送信されてくる。先着データ選択部１６０２は、受信した通信データのシーケンス番号を確認し、前記シーケンス番号のデータを初めて受信した場合には、前記データをアプリケーション部１６０１へ入力する。先着データ選択部１６０２は、前記シーケンス番号のデータを２回目以降に受信した場合には、当該データを廃棄する。先着データ選択部１６０２がこのような処理を行うので、アプリケーション部１６０１は同一シーケンス番号が付与された複数の複製データのうち、最初に到着したデータだけを受領する。
【０１０５】
本実施例に係る通信システムによれば、ある通信キャリアの通信速度を超過した場合においても、低遅延で高品質の通信を実現することができる。
【実施例２】
【０１０６】
続いて実施例２に係る通信システムの説明を行う。実施例１では、複製データ数計算部３０４の出力する複製データ数は整数値（小数部が切り捨てられた値）であった。実施例２では、複製データ数が整数値以外となることも許容することで、複製データ数を増加させ、遅延を最小化する方法について説明する。
【０１０７】
実施例２の移動通信端末１００は、複製データ数計算部３０４の複製データ数計算方法と、複製データ生成部３０５の複製データ生成方法が実施例１と異なる。
【０１０８】
＜複製データ数計算部の処理＞
複製データ数計算部３０４の複製データ数計算方法を、図１７を用いて説明する。実施例１の図６と異なる部分のみ説明する。実施例２における複製データ数計算部３０４の処理は、実施例１で説明したＳ６１０がＳ１６１０に置きかわる以外は、実施例１で説明した処理と同じである。
【０１０９】
Ｓ１６１０において、複製データ数を、（複製データ数 + バンドル回線合計通信速度 / データ生成速度）で更新する。なお、“バンドル回線合計通信速度 / データ生成速度”は、バンドル回線合計通信速度をデータ生成速度で除算した値を意味し、この値には小数部も含まれる。
【０１１０】
＜複製データ数計算部の処理の具体例＞
実施例２における複製データ数計算部３０４の複製データ数計算方法の具体例を、図１７を参照しながら説明する。アプリケーション部３０１のデータ生成速度gや、通信速度取得部３０９で決定された各通信ＩＦ２０５の通信速度bi(1≦i≦3)は、図７に示された条件とする。つまり、アプリケーション部３０１のデータ生成速度g=1000000[bps]、通信速度b1=1500000[bps]、b2=900000[bps]、b3=800000[bps]である。また以下の説明において、実施例２における複製データ数計算部３０４が算出した複製データ数を、Ndecと表記する。
【０１１１】
複製データ数計算部３０４が１回目にＳ６０４〜Ｓ６０７を実行する時、まずb1については、b1 ≧ gの関係にあるため、複製データ数Ndecに1を加算し、複製データ数Nintは1になる（Ｓ６０４、６０５、６０６）。複製データ数計算部３０４が２回目にＳ６０４〜Ｓ６０７を実行すると、b2は、b2 ≧ gの関係にないため、バンドル回線合計通信速度Ｖにb2を加算し、バンドル回線合計通信速度Ｖは0.9となる（Ｓ６０４、６０５、６０７）。
【０１１２】
複製データ数計算部３０４が２回目にＳ６０４〜Ｓ６０７を実行すると、b3も、b3 ≧ gの関係にないため、バンドル回線合計通信速度Ｖにb3を加算する。結果、バンドル回線合計通信速度Ｖは1.5となる（Ｓ６０４、６０５、６０７）。
この後複製データ数計算部３０４はＳ１６１０を実行する。Ｓ１６１０の結果、複製データ数Ndecは１＋(1.7/1.0)=2.7となる。
【０１１３】
＜複製データ生成部の処理＞
実施例２における複製データ生成部３０５の複製データ生成処理について、図１８を用いて説明する。
【０１１４】
Ｓ１８０１において、複製データ生成部３０５は変数ndecを用意する。変数ndecは複製データ生成部３０５が生成すべき複製データの数を表す。複製データ生成部３０５はまたＳ１８０１で、複製データ数ndecを1で初期化し、Ｓ１８０２に進む。
【０１１５】
Ｓ１８０２において、複製データ生成部３０５は複製データ数計算部３０４から複製データ数Ndecを受信したか確認し、受信している場合にはＳ１８０３に進み、受信していない場合にはＳ１８０４に進む。Ｓ１８０３では、複製データ生成部３０５はndecをNdecに更新し、Ｓ１８０４に進む。
【０１１６】
Ｓ１８０４では、複製データ生成部３０５はアプリケーション部３０１からデータを受信したかを確認し、受信している場合にはＳ１８０５に進み、受信していない場合にはＳ１８０２に進む。Ｓ１８０５では、複製データ生成部３０５はndec の整数部を変数ｘに代入し、小数部を変数ｙに代入し、Ｓ１８０６へ進む。Ｓ１８０６では、複製データ生成部３０５は0から1の間の一様乱数を生成し、Ｓ１８０７へ進む。する。以下の説明において、Ｓ１８０６で生成された値をzと表記する。ここで生成される値は、０から１の間の一様乱数なので、Ｓ１８０６が実行される度に、０から１の間の実数が同じ確率で生成される。
【０１１７】
Ｓ１８０７では、複製データ生成部３０５はｚ≦ｙを満たすかを確認し、満たす場合にはＳ１８０９へ進み、満たさない場合にはＳ１８０８へ進む。Ｓ１８０８では、複製データ生成部３０５はｘ個の複製データ（アプリケーション部３０１から受信したデータの複製）を生成し、通信ＩＦ選択部３１１へ入力し、Ｓ１８０２へ進む。一方、Ｓ１８０９が実行される場合、複製データ生成部３０５はＳ１８０９で、（ｘ＋１）個の複製データを生成し、通信ＩＦ選択部３１１へ入力し、Ｓ１８０２へ進む。
【０１１８】
以上の処理により、複製データ数が小数の場合においても、実際に生成される複製データ数の期待値（平均）をndecに一致させることができる。
【０１１９】
＜複製データ生成部の処理の具体例＞
図７の例の場合、＜複製データ数計算部の処理の具体例＞で説明した通り、複製データ数計算部３０４が算出する複製データ数ndecは２．７になる。また複製データ生成部３０５が実行されると、ndecの整数部ｘは２、小数部ｙは０．７と定まる（Ｓ１８０５）。Ｓ１８０６において０から１の間の一様乱数により生成された値が０．３である場合、複製データ生成部３０５は（２＋１）個の複製データを生成し、通信ＩＦ選択部３１１へ入力する（Ｓ１８０９）。
【０１２０】
実施例１の＜送信完了時刻計算部の処理と、通信IF選択部の処理の具体例＞と同様に、図７の例を用いて、実施例２における送信処理の具体例を説明する。
【０１２１】
図７に示すとおり、アプリケーション部３０１が生成するデータのデータ生成速度g=1000000[bps]、データサイズd=12000[bit]、データ生成間隔0.012[s]とし、また通信速度b1=1500000[bps]、通信速度b2=900000[bps]、通信速度b3=600000[bps]とする。
【０１２２】
ここで、Ｓ１８０６で行われる０から１の間の一様乱数の生成処理において、時刻０時０分1.000秒では０．３、時刻０時０分１．０１２秒では０．８、時刻０時０分１．０２４秒では０．６、時刻０時０分１．０３６秒では０．９が生成されるとする。この場合、時刻０時０分１．０００秒、０時０分１．０２４秒では３個（Ｓ１８０９）、時刻０時０分１．０１２秒、０時０分１．０３６秒では２個の複数データが生成される（Ｓ１８０８）。
【０１２３】
各時刻０時０分１．０００秒、０時０分１．０１２秒、０時０分１．０２４秒、０時０分１．０３６秒における次データ送信完了時刻の計算結果をそれぞれ図１９の１９１０、１９２０、１９３０、１９４０に示す。また、各時刻０時０分１．０００秒、０時０分１．０１２秒、０時０分１．０２４秒、０時０分１．０３６秒において実際に各通信ＩＦにデータを送信した結果をそれぞれ図２０の２０１０、２０１０、図２１の２１１０、２１２０に示す。
【０１２４】
実施例２に係る通信システムでは、ある通信キャリアの通信速度を超過した場合においても、実施例１に係る通信システムよりも多くの複製データを送信でき、かつ低遅延通信を実現することができる。
【実施例３】
【０１２５】
実施例３では、移動通信端末１００が自身で通信速度を正確に把握できない場合においても、遅延を最小化する方法について説明する。
【０１２６】
図２２に実施例３に係る移動通信端末１００の機能ブロック図を示す。ここでは、図３と異なる機能についてのみ説明する。
【０１２７】
実施例３に係る移動通信端末１００は、実施例１における通信速度取得部３０９に代えて、通信速度推定部２２０１を有する。また実施例３に係る移動通信端末１００は、通信品質テーブル３０７を持っていなくてもよい。通信速度推定部２２０１は、通信ＩＦ２０５を介してサーバ１０２から受信した通信品質情報を基に、通信速度を推定する。通信品質情報については後述する。通信速度推定部２２０１は前記推定した通信速度を複製データ数計算部３０４と、送信完了時刻計算部３０６に入力する。
【０１２８】
通信ＩＦ選択部２２０２は図３の通信ＩＦ選択部３１１と同様の処理を行うだけでなく、追加で以下の処理を実施する。通信ＩＦ選択部２２０２は、複製データ生成部３０５から入力された１または複数のデータを送信する通信ＩＦ２０５を選択し、前記１または複数のデータに同一のシーケンス番号を付与する。さらに通信ＩＦ選択部２２０２は各複製データに、その複製データが送信される通信ＩＦ２０５の識別子（通信ＩＦ番号。あるいは通信経路識別子と呼ばれる）と、現在時刻を付与して、通信ＩＦ２０５を介してデータを送信する。同一の複製データ（同一のシーケンス番号が付与された複製データ）でも、送信に用いられる通信ＩＦはそれぞれ異なるので、それぞれの複製データには異なる通信経路識別子が付与される。
【０１２９】
図２３に実施例３におけるサーバ１０２の機能ブロック図を示す。ここでは図１６と異なる機能部（通信ＩＦ２３０１、通信品質測定部２３０２）についてのみ説明する。通信ＩＦ２３０１、通信品質測定部２３０２は、ＣＰＵ１５０１がメモリ１５０２に格納されたプログラムを読み出して、メモリ１５０２や通信ＩＦモジュール１５０３を使用しながら実行することにより実現される機能部である。
【０１３０】
通信ＩＦ２３０１は移動通信端末１００から受信したデータを、先着データ選択部１６０２と通信品質測定部２３０２に入力する。通信品質測定部２３０２は、入力されたデータのヘッダ部の情報を参照することで通信品質情報を生成し、生成した通信品質情報を通信ＩＦ２３０１を介して移動通信端末１００へ送信する。
【０１３１】
図２４の２４１０に、移動通信端末１００がサーバ１０２へ送信するデータのフォーマットを示す。実施例１等と同様、移動通信端末１００がサーバ１０２へ送信するデータ２４１０はヘッダ部２４１１、データ部２４１２を有する。ただし実施例３に係る移動通信端末１００が生成するデータのヘッダ部２４１１にはシーケンス番号２４１３に加えて、通信経路識別子２４１４と送信時刻２４１５が含まれる。データ部２４１２はアプリケーションデータ２４１６を有する。アプリケーションデータ２４１６は、アプリケーション部３０１が生成したデータである。通信経路識別子２４１４は、本データが送信される通信ＩＦ２０５を識別するための識別子である。なお、本実施例では、通信ＩＦ  ｉ（ｉは１以上の整数）によって移動通信端末１００とサーバ１０２間に形成される通信路のことを、「通信経路ｉ」と呼ぶ。たとえば通信経路１とは、通信ＩＦ１から基地局１（１１０−１）、キャリアネットワーク１（１２０−１）を経由して、サーバ１０２に到達する経路である。移動通信端末１００とサーバ１０２間に設けられる通信経路の数（通信経路数）は、移動通信端末１００の有する通信ＩＦ２０５の数に等しい。
【０１３２】
図２４の２４２０に、サーバ１０２が移動通信端末１００へ送信するデータのフォーマットを示す。サーバ１０２が移動通信端末１００へ送信するデータ２４２０は、ヘッダ部２４２１のみを有する。ヘッダ部２４２１には、通信経路識別子２４２２、通信経路の平均データ転送速度である受信スループット値２４２３、移動通信端末１００からサーバ１０２へデータを送信する際の平均遅延時間２４２４が含まれる。本実施例では、この２４２０を「通信品質情報」と呼ぶ。
【０１３３】
＜サーバ１０２の通信品質測定部２３０２の処理＞
図２５を用いて、サーバ１０２の通信品質測定部２３０２の処理を説明する。通信品質測定部２３０２は、最後に通信品質情報を移動通信端末１００に送信した時刻（最終通信品質送信時刻と呼ぶ）を変数に保持しており、以下ではその変数をＴと表記する。また、通信品質測定部２３０２は通信経路ごとに、通信経路ｉ（ｉは１≦ｉ≦通信経路数）から受信したデータ量（ビット数。これを「通信経路ｉの受信ビット数」と呼ぶ）、通信経路ｉを用いたデータ送信における遅延時間の合計（これを「通信経路ｉの合計遅延時間」と呼ぶ）、通信経路ｉからデータを受信した回数（これを「通信経路ｉのデータ受信カウント数」と呼ぶ）を保持する変数を有しており、それぞれをRi, Li, piと表記する。
【０１３４】
Ｓ２５０１で通信品質測定部２３０２は、最終通信品質送信時刻Ｔを現在時刻に更新し、次にＳ２５０２に進む。Ｓ２５０２では、通信品質測定部２３０２は各通信経路i (1≦i≦通信経路数）の受信ビット数Ri, 合計遅延時間Li, 通信データ受信カウント数piを0で初期化し、Ｓ２５０３へ進む。
【０１３５】
Ｓ２５０３では通信品質測定部２３０２は、最終通信品質送信時刻ＴからＸ秒以上経過したかを確認し、経過している場合にはＳ２５０７へ進み、経過していない場合にはＳ２５０４へ進む。Ｓ２５０４では通信品質測定部２３０２は、通信データを受信したかを確認し、受信している場合にはＳ２５０５へ進み、受信していない場合にはＳ２５０３へ進む。
【０１３６】
Ｓ２５０５では、通信品質測定部２３０２は受信した通信データの内容を確認し、通信経路f、遅延時間 l、データサイズr（これはアプリケーションデータ２４１６のサイズである）を取得し、Ｓ２５０６へ進む。なお通信品質測定部２３０２は遅延時間ｌを取得する際、現在時刻と、受信したデータに格納された送信時刻２４１５の差を計算することで遅延時間ｌを求める。Ｓ２５０６で通信品質測定部２３０２は、Rfを Rf +rに更新し、LfをLf + lに更新し、pfをpf + 1に更新する。その後通信品質測定部２３０２はＳ２５０３を行う。
【０１３７】
Ｓ２５０７では、通信品質測定部２３０２は変数ｉを用意し、Iを0で初期化し、Ｓ２５０８へ進む。Ｓ２５０８では、通信品質測定部２３０２は通信経路iのスループットと、通信経路iの平均通信遅延時間を計算する。通信経路iのスループットは、RiをＸで除算することで求められる値で、 通信経路iの平均通信遅延時間はLiをpiで除算することで求められる値である。通信品質測定部２３０２はこれらの値を計算した後、これらの値を含む通信品質情報を作成して移動通信端末１００に送信し、Ｓ２５０９へ進む。
【０１３８】
Ｓ２５０９では通信品質測定部２３０２は、Ri =0、Li=0、pi=0とし、Ｓ２５１０へ進む。Ｓ２５１０では、通信品質測定部２３０２はi == 通信経路数を満たすかを確認し、満たす場合にはＳ２５０１へ進み、満たさない場合にはＳ２５１１へ進む。Ｓ２５１１では、通信品質測定部２３０２はi に１を加算する。
【０１３９】
以上の処理により、サーバ１０２において各無線通信システムの通信品質を測定して、移動通信端末１００へ通知することができる。
【０１４０】
＜移動通信端末１００の通信速度推定部２２０１の処理＞
図２６を用いて移動通信端末１００の通信速度推定部２２０１の処理を説明する。通信速度推定部２２０１は、算出（推定）された通信速度を格納するための変数を通信ＩＦ毎に有している。以下の説明では通信ＩＦ  ｉ（１≦ｉ≦通信ＩＦ数）の通信速度を格納するための変数をbiと表記する。また通信速度推定部２２０１は、biを最も最近更新した時刻（最終通信品質変更時刻と呼ぶ）を保持する変数を通信ＩＦ毎に有しており、以下ではその変数をtj_lastと表記する。
【０１４１】
Ｓ２６０１では、通信速度推定部２２０１はサーバ１０２から通信品質情報を受信したかを確認し、受信している場合にはＳ２６０２へ進み、受信していない場合にはＳ２６０５へ進む。
Ｓ２６０２で通信速度推定部２２０１は、通信品質情報に格納された通信経路識別子２４２２を確認する。以下では、通信経路識別子２４２２がｊであった場合について説明する（ｊは１以上通信ＩＦ数以下の整数である）。Ｓ２６０２で通信速度推定部２２０１はまた、通信品質情報に格納された平均遅延時間２４２４(通信経路 ｊ の平均遅延時間)が、通信遅延時間閾値  α（αはあらかじめ定められた定数である）より大きくなるかを確認し、大きくなる場合にはＳ２６０３へ進み、大きくならない場合にはＳ２６０１へ進む。
【０１４２】
Ｓ２６０３では、通信速度推定部２２０１は通信ＩＦ  ｊの通信速度 bjを通信品質情報に格納された受信スループット値２４２３に更新し、Ｓ２６０４へ進む。Ｓ２６０４では通信速度推定部２２０１は、複製データ数計算部３０４と、送信完了時刻計算部３０６へbjを入力し、Ｓ２６０５へ進む。Ｓ２６０５では、通信速度推定部２２０１は通信ＩＦ  ｊの最終通信品質変更時刻tj_lastを現在時刻に更新し、Ｓ２６０１へ進む。
【０１４３】
Ｓ２６０６で通信速度推定部２２０１は、iを１で初期化し、Ｓ２６０７へ進む。
【０１４４】
Ｓ２６０７では、通信速度推定部２２０１は（ti_last - 現在時刻）が通信速度上昇判定周期Ｔｈ（Ｔｈはあらかじめ定められた定数である）より大きいかを確認し、大きい場合にはＳ２６０８へ進み、大きくない場合にはＳ２６１１へ進む。
【０１４５】
Ｓ２６０８では、通信速度推定部２２０１は通信IF iの通信速度 biをbi + βに更新し、Ｓ２６０９へ進む。ここで、βはあらかじめ定められた定数であり、通信速度増加分と呼ぶ。Ｓ２６０９では通信速度推定部２２０１は、複製データ数計算部３０４と、送信完了時刻計算部３０６へbiを入力し、Ｓ２６１０へ進む。Ｓ２６１０では、通信速度推定部２２０１はti_lastを現在時刻で更新し、Ｓ２６１１へ進む。
【０１４６】
Ｓ２６１１では、通信速度推定部２２０１はiが通信経路（通信ＩＦ）数と等しいかを確認し、等しい場合にはＳ２６０１へ進み、等しくない場合にはＳ２６１２へ進む。Ｓ２６１２では、通信速度推定部２２０１はiに１を加算し、Ｓ２６０７へ進む。
【０１４７】
以上の処理により、移動通信端末１００は、サーバ１０２から受信した通信品質情報に基づいて、通信遅延時間が一定値以上になった場合に通信速度低下を検知し、低下後の通信速度をサーバ１０２から通知された通信速度に等しいと推定することができる。また、移動通信端末１００は、サーバ１０２から受信した通信品質情報に基づいて、一定の間、サーバ１０２から通知された通信遅延時間が閾値以下になった場合に、通信速度が上昇したと推定することができる。
【０１４８】
実施例３に係る通信システムでは、移動通信端末が自身で通信速度を正確に把握することができない場合においても、低遅延なデータ通信を行うことができる。
【符号の説明】
【０１４９】
１００          移動通信端末
１０１          インターネット
１０２          サーバ
１１０          基地局
１２０          キャリアネットワーク
１３０          無線通信システム
２０１          ＣＰＵ
２０２          メモリ
２０３          ＧＰＳモジュール
２０４          バス
２０５          通信ＩＦモジュール
３０１          アプリケーション部
３０２          データサイズ取得部
３０３          データ生成速度計算部
３０４          複製データ数計算部
３０５          複製データ生成部
３０６          送信完了時刻計算部
３０７          通信品質テーブル
３０９          通信速度取得部
３１０          送信完了時刻記憶部
３１１          通信ＩＦ選択部
１１０１        ヘッダ部
１１０２        データ部
１１０３        シーケンス番号
１１０４        アプリケーションデータ
１５０１        ＣＰＵ
１５０２        メモリ
１５０３        通信ＩＦモジュール
１６０１        アプリケーション部
１６０２        先着データ選択部
２２０１        通信速度推定部
２２０２        通信ＩＦ選択部
２３０１        通信ＩＦ
２３０２        通信品質測定部
２４１１        ヘッダ部
２４１２        データ部
２４１３        シーケンス番号
２４１４        通信経路識別子
２４１５        送信時刻
２４１６        アプリケーションデータ
２４２１        ヘッダ部
２４２２        通信経路識別子
２４２３        受信スループット値
２４２４        平均遅延時間
【図１】
2018067864.tif 000003
【図２】
2018067864.tif 000004
【図３】
2018067864.tif 000005
【図４】
2018067864.tif 000006
【図５】
2018067864.tif 000007
【図６】
2018067864.tif 000008
【図７】
2018067864.tif 000009
【図８】
2018067864.tif 000010
【図９】
2018067864.tif 000011
【図１０】
2018067864.tif 000012
【図１１】
2018067864.tif 000013
【図１２】
2018067864.tif 000014
【図１３】
2018067864.tif 000015
【図１４】
2018067864.tif 000016
【図１５】
2018067864.tif 000017
【図１６】
2018067864.tif 000018
【図１７】
2018067864.tif 000019
【図１８】
2018067864.tif 000020
【図１９】
2018067864.tif 000021
【図２０】
2018067864.tif 000022
【図２１】
2018067864.tif 000023
【図２２】
2018067864.tif 000024
【図２３】
2018067864.tif 000025
【図２４】
2018067864.tif 000026
【図２５】
2018067864.tif 000027
【図２６】
2018067864.tif 000028