JP2016096436A - 通信装置、通信方法、通信プログラム、及びプロセッサ - Google Patents

通信装置、通信方法、通信プログラム、及びプロセッサ Download PDF

Info

Publication number
JP2016096436A
JP2016096436A JP2014231060A JP2014231060A JP2016096436A JP 2016096436 A JP2016096436 A JP 2016096436A JP 2014231060 A JP2014231060 A JP 2014231060A JP 2014231060 A JP2014231060 A JP 2014231060A JP 2016096436 A JP2016096436 A JP 2016096436A
Authority
JP
Japan
Prior art keywords
communication
header information
unit
information
session
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2014231060A
Other languages
English (en)
Other versions
JP6488526B2 (ja
Inventor
潤 小西
Jun Konishi
潤 小西
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sharp Corp
Original Assignee
Sharp Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sharp Corp filed Critical Sharp Corp
Priority to JP2014231060A priority Critical patent/JP6488526B2/ja
Publication of JP2016096436A publication Critical patent/JP2016096436A/ja
Application granted granted Critical
Publication of JP6488526B2 publication Critical patent/JP6488526B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Mobile Radio Communication Systems (AREA)
  • Telephone Function (AREA)
  • Telephonic Communication Services (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】適切に無線リンクの切り換えを制御する通信装置、方法、プログラム及びプロセッサを提供する。【解決手段】通信装置1は、入力部11、出力部12、制御部13、記憶部14及び通信部15を含んで構成される。通信部15は、N個のインターフェース151−1〜151−Nを含んで構成される。インターフェース中の一つは第1通信を行い、別のインターフェースは第2通信を行う。記憶部は第1通信を用いて取得した通信データのヘッダ情報である第1ヘッダ情報を記憶する。プロキシ部P1のヘッダ情報取得部は、第2通信を用いて取得した通信データのヘッダ情報である第2ヘッダ情報を取得する。プロキシ部のIF選択部は、第1ヘッダ情報と第2ヘッダ情報とを比較し、比較結果に基づいて通信の一部又は全部について第1通信と第2通信との切り換えを制御する。【選択図】図2

Description

本発明は、通信装置、通信方法、通信プログラム、及びプロセッサに関する。
無線通信において、ある無線リンクの品質が低下した際、品質低下を検知して、異なる無線リンクへ切り換える技術が知られてきている(例えば、特許文献1、2、非特許文献1、2)。
特開2005−223811号公報 特開2007−336335号公報
"ワイヤレスジャパン 2012:実効速度が2倍以上に−KDDIの「リンクアグリゲーション無線技術」"、[online]、平成24年5月30日、ITmedia+Dモバイル、[平成26年11月13日検索]、インターネット(URL:http://plusd.itmedia.co.jp/mobile/articles/1205/30/news066.html) 蕨野貴之 Takayuki WARABINO他,端末間のシームレスな切り換えを実現するデバイスハンドオフ方式の提案 Proposal of a device handoff methods for seamless communications, 情報処理学会研究報告 Vol.2003 No. 114 IPSJ SIG Technical Reports, 日本, 社団法人情報処理学会 Information Processing Society of Japan, 2003年11月14日,第2003巻,第105-112頁
例えば、特許文献1に記載の技術では、通信端末は、リンク1からリンク2に切り換えた際、HTTPのレンジフィールドを用いて、リンク2側で続きのデータを取得する。そして、通信端末は、レンジフィールドに対応していないサーバであった場合、通常のリクエストをリンク2側で行い、リンク1で取得済みのデータをスキップし、あたかも続きからデータが取得出来たように振る舞う。また、通信端末は、リンク2側がレンジフィールドに対応している場合には、そのままリンク2で取得したデータを結合する。
しかしながら、特許文献1に記載の技術では、アクセスの度に異なるコンテンツが返答されるような場合には、通信端末は、リンク1とリンク2でデータに整合性がとれない。この場合、通信端末は、無線リンクの切り換えに失敗することがある、という問題があった。
本発明は上記の点に鑑みてなされたものであり、適切に無線リンクの切り換えを制御できる通信装置、通信方法、通信プログラム、及びプロセッサを提供する。
本発明は上記の課題を解決するためになされたものであり、本発明の一態様は、第1通信を行う第1通信部と、第2通信を行う第2通信部と、前記第1通信を用いて取得した通信データのヘッダ情報である第1ヘッダ情報を記憶する記憶部と、前記第2通信を用いて取得した通信データのヘッダ情報である第2ヘッダ情報を取得する情報取得部と、前記第1ヘッダ情報と前記第2ヘッダ情報とを比較し、比較結果に基づいて、通信の一部又は全部について、前記第1通信と前記第2通信との切り換えを制御する選択部と、を備える通信装置である。
また、本発明の一態様は、上記の通信装置において、前記選択部は、前記第1ヘッダ情報と前記第2ヘッダ情報の少なくとも一部が一致しない場合には、通信の一部又は全部について、前記第1通信と前記第2通信との切り換えを止めると判定する。
また、本発明の一態様は、上記の通信装置において、前記選択部は、前記第2ヘッダ情報がリダイレクションを示す場合には、当該リダイレクション先から前記第2ヘッダ情報を取得し、取得した第2ヘッダ情報と前記第1ヘッダ情報との比較結果に基づいて、通信の一部又は全部について、前記第1通信と前記第2通信との切り換えを制御する。
また、本発明の一態様は、上記の通信装置において、前記記憶部は、前記通信装置に提供される提供データのうち、前記第1通信を用いて取得した第1データを記憶し、前記選択部は、前記第1ヘッダ情報と前記第2ヘッダ情報の少なくとも一部が一致する場合には、通信の一部又は全部について、前記第1通信と前記第2通信を切り換えると判定し、前記第2通信を用いて、前記提供データのうち、前記第1データ以外の第2データを取得し、前記第1データと前記第2データを合成する合成部を備える。
また、本発明の一態様は、上記の通信装置において、前記選択部は、予め定めた一連の通信毎に、前記第1通信と前記第2通信の切り換えを制御し、前記第1通信から前記第2通信へ切り換えている前記一連の通信の数を計数する計数部を備え、前記選択部は、前記第1通信を優先し、前記計数部が計数した一連の通信の数が閾値を超えた場合には、前記第2通信を優先する。
また、本発明の一態様は、上記の通信装置において、前記第1通信と前記第2通信は、論理的又は物理的な通信インターフェースが異なり、前記選択部は、前記第1通信の通信インターフェースと前記第2通信のインターフェースとの切り換えを制御する。
また、本発明の一態様は、通信装置における通信方法おいて、記憶部が、第1通信を用いて取得した通信データのヘッダ情報である第1ヘッダ情報を記憶する記憶過程と、ヘッダ情報取得部が、第2通信を用いて取得した通信データのヘッダ情報である第2ヘッダ情報を取得する情報取得過程と、選択部が、前記第1ヘッダ情報と前記第2ヘッダ情報とを比較し、比較結果に基づいて、通信の一部又は全部について、前記第1通信と前記第2通信との切り換えを制御する選択過程と、を有する通信方法である。
また、本発明の一態様は、通信装置のコンピュータに、第1通信を用いて取得した通信データのヘッダ情報である第1ヘッダ情報を記憶する記憶手順、第2通信を用いて取得した通信データのヘッダ情報である第2ヘッダ情報を取得する情報取得手順、前記第1ヘッダ情報と前記第2ヘッダ情報とを比較し、比較結果に基づいて、通信の一部又は全部について、前記第1通信と前記第2通信との切り換えを制御する選択手順、を実行させるための通信プログラムである。
また、本発明の一態様は、第1通信を用いて取得した通信データのヘッダ情報と第2通信を用いて取得した通信データのヘッダ情報とを比較し、比較結果に基づいて、通信の一部又は全部について、前記第1通信と前記第2通信との切り換えを制御する選択部を備えるプロセッサである。
本発明によれば、適切に無線リンクの切り換えを制御できる。
本発明の第1実施形態に係る通信システムの構成を示す概略図である。 本実施形態に係る通信装置の構成を示す概略ブロック図である。 本実施形態に係るプロキシ部の構成を示す概略ブロック図である。 本実施形態に係るフォールバックを説明するための説明図である。 本実施形態に係るフェールバックを説明するための説明図である。 本実施形態に係る通信装置の状態遷移を表す図である。 本実施形態に係る通信装置の状態遷移についての説明図である。 本実施形態に係る通信装置の処理フローを示す図である。 本実施形態に係るプロキシ部の処理フローを示す図である。 本実施形態に係るプロキシ部の処理フローを示す図である。 本実施形態に係るプロキシ部の処理フローを示す別の図である。 本実施形態に係るプロキシ部の処理フローを示す別の図である。 本実施形態に係るプロキシ部の処理フローを示す別の図である。 本実施形態に係るプロキシ部の処理フローを示す別の図である。
(第1実施形態)
以下、図面を参照しながら本発明の第1実施形態について詳しく説明する。
図1は、本発明の第1実施形態に係る通信システムの構成を示す概略図である。この図において、通信システムは、通信装置1、アクセスポイントAP1、基地局装置BS1、及び、サーバ装置Sv101〜104を具備する。
通信装置1は、Wi−Fi(登録商標。以下同じ)、3G(3rd Generation:第3世代移動通信システム)、LTE(Long Term Evolution)等のように、複数の異なる通信を行うことができる装置である。通信装置1は、複数の物理リンクを束ねて、1つの論理リンクとして扱うこと(リンクアグリゲーション)ができる。通信装置1は、例えば、スマートフォン、タブレット端末、フィーチャーフォン、パーソナルコンピュータ、モバイルルーター等である。
アクセスポイントAP1は、通信装置1からの接続要求を受け付けて、ネットワークへの通信を仲介する機器である。例えば、アクセスポイントAP1は、無線LANのアクセスポイントであり、通信装置1とWi−Fiによる通信(無線リンクL1と称する。また、Wi−Fi通信とも称する)を行うことができる。
基地局装置BS1は、携帯電話と直接電波を送受信する装置である。基地局装置BS1は、通信装置1と3G又はLTEによる通信(無線リンクL2と称する)を行うことができる。基地局装置BS1は、携帯電話網N1に接続され、携帯電話網N1を介して、ネットワークN2に接続された機器と通信を行うことができる。例えば、ネットワークN2はインターネットであり、携帯電話網N1と通信プロトコルが異なる。
サーバ装置Sv101は、例えば、ゲートウェイサーバであり、携帯電話網N1とネットワークN2の通信プロトコルの変換等を行う。サーバ装置Sv102は、ネットワークN1に接続され、基地局装置BS1を介して、通信装置1と通信を行うことができる。 サーバ装置Sv103、Sv104は、ネットワークN2に接続され、アクセスポイントAP1、又は、携帯電話網N1と基地局装置BS1を介して、通信装置1と通信を行うことができる。例えば、サーバ装置Sv102、Sv103は、ドメインネームシステム(DNS)のサーバ装置(DNSサーバとも称する)であり、ネットワーク上のホスト名やドメイン名と、IPアドレスとを対応付けたドメインネーム情報を管理する。例えば、サーバ装置Sv104は、コンテンツサーバであり、HTTP(Hypertext Transfer Protocol:ハイパーテキスト・トランスファー・プロトコル)等のプロトコルの通信(HTTP通信と称する)を行う。サーバ装置Sv104は、例えば、HTML形式のコンテンツを、通信装置1へ提供する。
通信装置1は、無線リンクL1を用いて、HTTP通信を行った場合、HTTPのヘッダ情報H1を取得して記憶する。その後、例えば無線リンクL1の品質が低下したことを検出した場合、通信装置1は、無線リンクL2を用いて、HTTPのレンジリクエストを行う。レンジリクエストとは、データの範囲を指定して、データの一部分だけを要求する指令である。具体的には、通信装置1は、HTTPのヘッダフィールドで「Range:bytes=501−」と指定することで、501バイトより後のデータを要求して、取得(ダウンロード)できる。
通信装置1は、無線リンクL1を用いて取得したヘッダ情報H1と、無線リンクL2を用いて取得したヘッダ情報H2と、を比較するヘッダ比較処理を行う。ヘッダ比較処理においては、通信装置1は、例えばヘッダ情報のうち、HTTPのデータ部分(ボディ情報とも称する)に差分があると判断できる情報(Content−Lengthなどの情報)を比較する。ヘッダ比較処理の結果、ヘッダ情報H1とヘッダ情報H2が同じであると判定した場合、通信装置1は、無線リンクL1から無線リンクL2の切り換え(フォールバックと称する)を行う。なお、通信装置1は、フォールバックを行う場合、通信のインターフェースを変える。その結果、通信装置1は、例えば、通信に用いるIPアドレスやポート番号を変更する。なお、フォールバックは、Wi−FiとLTE等、通信種別を変える場合に限られず、Wi−Fi通信同士で行われてもよい。つまり、例えば、Wi−Fi通信のインターフェースが2個以上ある場合、フォールバックには、Wi−Fi通信のままインターフェースを変更することも含まれる。なお、インターフェースは、物理的なインターフェースに限らず、論理的なインターフェースであってもよい。論理的なインターフェースとは、例えば、VPN(Virtual Private Network)におけるインターフェースである。
一方、ヘッダ比較処理の結果、ヘッダ情報H1とヘッダ情報H2の全部又は一部が同じでないと判定した場合、つまり、HTTPのデータ部分に差分がある場合、通信装置1は、フォールバックを中止する。これにより、通信装置1は、例えばアクセスの度に異なるコンテンツが返答されるような場合でも、無線リンクL1を用いてフォールバック前と同じコンテンツの続きを取得できる。つまり、通信装置1は、フォールバックによって、無線リンクL1を用いて取得したデータと無線リンクL2を用いて取得したデータを結合してしまい、データの不整合が生じることを防止できる。
なお、ヘッダ比較処理の結果、ヘッダ情報H1とヘッダ情報H2が同じでないと判定した場合、通信装置1は、無線リンクL2を用いて取得したヘッダ情報に応じて、再度、フォールバックを試みてもよい。例えば、通信装置1は、無線リンクL2を用いて取得したヘッダ情報H2のうち、ステータスコードがリダイレクションを示す場合、再度、リダイレクション先に対して、HTTPのレンジリクエストを行う。ここで、ステータスコードがリダイレクションすることを示す場合とは、例えば、ステータスコードに移動先のURLが付されている場合である。具体的には、そのときのステータスコードは、「302」(Moved Permanently:恒久的に移動)、「303」(Found:発見)、「307」(Temporary Redirect)等である。
通信装置1は、レンジリクエストの結果、リダイレクト先からヘッダ情報H2’を取得する(RD先情報取得処理とも称する)。通信装置1は、取得したヘッダ情報H2’を用いてヘッダ比較処理を行い、ヘッダ情報H1とヘッダ情報H2’が同じであると判定した場合、フォールバックを行う。一方、通信装置1は、ヘッダ情報H1とヘッダ情報H2’が同じでないと判定した場合、フォールバックを中止する。
また、通信装置1は、例えば、アプリケーションからの要求毎に、セッション単位でフォールバックを行うか否かを判定する。1つのセッションのフォールバック(FB)を、単一フォールバックとも称する。通信装置1は、単一フォールバックの数(後述するFBセッション数)を計数し、予め定めた許容数を超えた場合、無線リンクL1を「通信不能」と判定する(この場合の無線リンクL1を不要リンクとも称する)。この場合、通信装置1は、アプリケーションからの通信要求があったときには、無線リンクL2を用いて通信を行う、「強制フォールバックモード」の状態へ遷移する。
以上により、通信装置1は、フォールバック時にヘッダ情報の内容を比較することで、同一のコンテンツであるかどうかを確認し、想定外のデータ(未更新データなど)をアプリケーションに送信してしまうことを未然に防ぐことができる。
また、通信装置1は、フォールバック時にリダイレクトされた場合でも、ヘッダ情報が同じものを取得できた場合、つまり、最終的にコンテンツが同じである場合、フォールバックを行うことができる。
通信装置1は、「強制フォールバックモード」に遷移させることで、不要リンクへの通信確立を試みるコストが不要となり、すぐに良好な通信を行うことができる。なお、通信装置1は、不要リンクと判断された無線リンクL1への接続を復帰させたい場合、ヘッダ比較処理を行ってもよく、それにより、効率的に再利用を開始することができる。
<通信装置1について>
図2は、本実施形態に係る通信装置1の構成を示す概略ブロック図である。通信装置1は、入力部11、出力部12、制御部13、記憶部14、及び通信部15を含んで構成される。制御部13は、アプリケーション部131とプロキシ部P1を含んで構成される。通信部15は、N個のインターフェース151−1〜151−N、及び信号強度検出部152を含んで構成される。
入力部11は、通信装置1のユーザからの入力を受け付け、受け付けた入力を示す情報を制御部13へ出力する。例えば、入力部11は、ユーザからフォールバックを許可することを示す情報、又は、フォールバックを許可しないことを示す情報を受け付け、フォールバックへ出力する。入力部11は、例えば、タッチパネルやボタン、キーボード、カメラである。
出力部12は、制御部13の制御に基づいて、出力を行う。出力部12は、例えば、ディスプレイやスピーカー、振動子、発光素子である。
制御部13は、入力部11や通信部15から入力された情報、又は記憶部14が記憶する情報に基づいて、通信装置1の各部を制御する。制御部13のうち、アプリケーション部131は、記憶部14からプログラムを読み込み、読み込んだプログラムを実行することで、様々なアプリケーション機能を発揮する。
プロキシ部P1は、制御部13が生成した情報を、一又は複数のインターフェース151−n(n=1、2、・・・、N)を介して、送信させる。例えば、プロキシ部P1は、入力部11や通信部15から入力された情報、又は記憶部14が記憶する情報に基づいて、通信部15のインターフェース151−1〜151−Nの中から、一又は複数のインターフェース151−nを選択する。プロキシ部P1は、選択した一又は複数のインターフェース151−nを介して、アプリケーション部131が生成した情報を送信する。
また、プロキシ部P1は、複数のインターフェース151−nが情報を受信した場合、受信した情報を合成する。例えば、プロキシ部P1は、複数のインターフェース151−nを時間的に切り換えた場合、切り換え前後のデータを合成してもよい。プロキシ部P1の詳細については、後述する。
通信部15は、複数の通信方式の通信を行うことができる。例えば、インターフェース151−1は、Wi−Fi通信を行うことができる。インターフェース151−2は、LTEによる通信(LTE通信とも称する)を行うことができる。また、インターフェース151−3は、3Gによる通信(3G通信とも称する)を行うことができる。なお、インターフェース151−nは、無線通信に限らず、有線通信を行うものであってもよい。また、インターフェース151−nは、物理的なインターフェースに限らず、論理的なインターフェースであってもよい。
信号強度検出部152は、インターフェース151−n毎に、通信信号の受信する信号の強度(受信信号強度)を示す信号強度情報を検出する。例えば、信号強度検出部152は、インターフェース151−1による通信(Wi−Fi通信)では、RSSI(Received Signal Strength Indicator(又はIndication))を検出する。また、インターフェース151−2、15−3による通信(LTE通信、3G通信)では、CQI(Channel Quality Indicator)を検出してもよい。信号強度検出部152は、検出した信号強度情報を、制御部13(例えば、プロキシ部P1)へ出力する。
<プロキシ部P1について>
図3は、本実施形態に係るプロキシ部P1の構成を示す概略ブロック図である。プロキシ部P1は、セッション管理部P111、DNS管理部P112、スループット取得部P113、容量情報取得部P114、信号強度取得部P121、計時部P122、AP(アクセスポイント)情報取得部P123、通信方式情報取得部P124、位置情報取得部P125、ヘッダ情報取得部P131、リダイレクト情報取得部P132、IF選択部P14、及び、データ合成部P15を含んで構成される。
セッション管理部P111は、セッションを管理する。セッションとは、一連の通信のことであり、例えば、接続を確立してから切断するまでの単位である。例えば、セッションは、アプリケーションからのリクエスト毎に生成され、各リクエストに対する応答後に、それぞれのセッションが終了する。具体的には、セッション管理部P111は、セッションの識別情報(セッション識別情報とも称する)、セッションの開始時刻、セッションの終了時刻、リクエストの識別情報、リクエストをしたアプリケーションの識別情報、セッション確立の成否、セッション異常の理由を示すセッション異常理由情報、セッションに用いた無線リンクを示す情報等を、記憶部14に記憶させ、参照や更新をすることで、セッションを管理する。セッション異常には、セッションの確立に失敗やセッションのタイムアウト等があり、その理由には、接続エラー、通信エラー、ソケットエラー、又はタイムアウト等がある。
セッション管理部P111は、セッションが確立できなかった場合(例えば、接続失敗)やセッションがタイムアウトした場合等、セッション異常が発生したときには、セッション異常を示すセッション異常情報とセッション異常理由情報を、セッション識別情報と対応付けて、IF選択部P14へ出力する。
また、セッション管理部P111は、フォールバックをしているセッション数(FBセッション数とも称する)を計数し、計数したFBセッション数を示すFBセッション数情報を、IF選択部P14へ出力する。なお、フォールバックは、セッション毎に発生し、セッション単位で発生するフォールバックのことを、「単一フォールバック」とも称する。
DNS管理部P112は、通信装置1において、ドメインネーム情報を管理する。DNS管理部P112は、例えば、コンテンツサーバのドメイン名をDNSサーバへ送信し、IPアドレスを取得する。このDNS管理部P112の処理を、名前解決処理とも称する。
DNS管理部P112は、名前解決処理に異常が発生したときには、名前解決の異常を示す名前解決異常情報と名前解決の異常の理由を示す名前解決異常理由情報を、セッション識別情報と対応付けて、IF選択部P14へ出力する。名前解決の異常には、名前解決処理の失敗(例えば、接続失敗)や名前解決処理のタイムアウト等があり、その理由には、ホスト名又はドメイン名の不登録、未登録や通信エラー、タイムアウト等がある。
スループット取得部P113は、通信部15の送受信する情報量に基づいて、通信のスループットを算出する。スループットとは、一定時間内に通信したデータ量のことである。本実施形態のスループットは、下りの通信、つまり、アクセスポイントAP1又は基地局装置BS1から通信装置1への通信のスループットとするが、本発明は、これに限られない。スループット取得部P113は、算出したスループットを示すスループット情報を、セッション識別情報と対応付けて、IF選択部P14へ出力する。
容量情報取得部P114は、通信に関する各情報の容量を管理し、その容量を示す容量情報を生成する。例えば、容量情報取得部P114は、コンテンツサーバから通信によって取得するコンテンツの容量(コンテンツサイズとも称する)を取得し、また、当該コンテンツについての現在取得済みの容量(DL済サイズとも称する)を算出する。また、容量情報取得部P114は、フォールバックを許容する容量(FB許容サイズとも称する)を、予め記憶する記憶部14から読み出す。容量情報取得部P114は、コンテンツサイズ、DL済サイズ、又はFB許容サイズを示す容量情報を、IF選択部P14へ出力する。なお、容量情報は、セッション毎の各容量を示す場合、セッション識別情報と対応付けて、IF選択部P14へ出力される。
信号強度取得部P121は、信号強度検出部152からインターフェース151−n毎の信号強度情報を取得し、取得した信号強度情報をIF選択部P14へ出力する。
計時部P122は、計時を行う。例えば、計時部P122は、フォールバック状態C13(後述)に遷移してからの経過時間を計時する。計時部P122は、この経過時間が設定値(例えば、1分)を超えた場合、時間超過を示す時間超過情報をセッション識別情報と対応付けて、IF選択部P14へ出力する。
AP情報取得部P123は、現在通信をしているアクセスポイント或いは基地局の識別情報又はネットワークの識別情報(BSSID又はESSID等)を取得する。AP情報取得部P123は、取得した識別情報(AP識別情報とも称する)を、IF選択部P14へ出力する。
通信方式情報取得部P124は、現在通信に用いている通信方式を示す通信方式情報を生成する。例えば、通信方式情報取得部P124は、LTE通信を行っているときにはLTEを示す通信方式情報、3G通信を行っているときには3Gを示す通信方式情報を生成する。通信方式情報取得部P124は、生成した通信方式情報を、IF選択部P14へ出力する。
位置情報取得部P125は、例えば、GPS(Global Positioning System,全地球測位網)機能により、通信装置1の現在位置を測位する。位置情報取得部P125は、測位した通信装置1の現在位置を示す位置情報を、IF選択部P14へ出力する。なお、位置情報取得部P125は、基地局装置BS1の基地局情報であって通信装置1のおおよその位置を推定可能な基地局情報(例えば、通信装置1が接続中の基地局装置を示す情報や基地局装置の位置を示す情報)を取得し、取得した基地局情報を位置情報として、IF選択部P14へ出力してもよい。
ヘッダ情報取得部P131は、通信部15の送受信する情報から、セッション毎にHTTPのヘッダ情報を取得する。ヘッダ情報取得部P131は、取得したヘッダ情報を、セッション識別情報と対応付けて、IF選択部P14へ出力する。なお、ヘッダ情報取得部P131は、インターフェース151−n毎に、HTTPのヘッダ情報を取得してもよい。
リダイレクト情報取得部P132は、通信部15の送受信する情報から、セッション毎にHTTPのステータスコードを取得する。リダイレクト情報取得部P132は、取得しステータスコードを、セッション識別情報と対応付けて、IF選択部P14へ出力する。ここで、ステータスコードがリダイレクションを示す場合、リダイレクト情報取得部P132は、リダイレクション先を示す情報も取得し、IF選択部P14へ出力する。
IF選択部P14は、通信装置1の各部から入力された情報に基づいて、セッション毎に、通信を行うインターフェース151−1〜151−Nを選択する。IF選択部P14は、セッション毎に選択したインターフェース151−nにより、そのセッションでの通信を行わせる。これにより、IF選択部P14は、各セッションの無線リンクを切り換える。つまり、IF選択部P14は、フォールバックとフェールバックを制御する。
データ合成部P15は、通信部15の受信した情報を合成し、合成後の情報を、例えばアプリケーション部131や記憶部14へ出力する。例えば、データ合成部P15は、あるセッションにおいて、少なくとも2つのインターフェース151−nを時間的に切り換えた場合、切り換え前後のデータを合成する。
<フォールバックについて>
図4は、本実施形態に係るフォールバックを説明するための説明図である。
この図において、符号C11を付した図は通常状態C11を表し、符号C12を付した図は単一フォールバックの状態C12を表し、符号C13を付した図はフォールバックの状態(フォールバック状態とも称する)C13を表す。通常状態C11から状態C12へは、通信が失敗した場合に遷移する。また、状態C12から状態C13へは、FBセッション数が許容数(単に許容数とも称する)を超えた場合に遷移する。なお、通信部15からホストへ向かう矢印各々は、各セッションの通信を表す。
通常状態C11では、通信部15とホスト(例えば、アクセスポイントAP1及び基地局装置BS1)は、全てのセッションにおいて、Wi−Fi通信を行う状態である。状態C12は、一部のセッションについて、Wi−Fi通信C121を止め、LTE通信又は3G通信(セルラー通信とも称する)C122へ切り換わった状態である。つまり、状態C12は、あるセッションに対して、通信C121から通信C122へ、単一フォールバックが行われた状態である。
状態C13は、全てのセッションにおいて、セルラー通信を行う状態である。状態C13は、セルラー通信が優先される状態であり、例えば、許容数を超えた場合、他のWi−Fi通信からセルラー通信へ遷移される状態である。なお、許容数を超えた場合、Wi−Fi通信を行っている最中のセッションがあった場合、そのセッションは、その通信の完了後に、セルラー通信へ遷移される。また、状態C13は、新規のセッションに対して、セルラー通信が割り当てられる状態である。
以下、フォールバックについて、図2、3を参照しながら詳細を説明する。なお、以下では、フォールバックを行う元の無線リンクを「FB元リンク」とも称し、フォールバックを行う先の無線リンクを「FB先リンク」とも称する。例えば、FB元リンクはWi−Fi通信であり、FB先リンクはLTE通信である。また、「FB元リンク」の場合に通信を行うインターフェース151−i(i=1,2,・・・,Nのいずれか)をFB元インターフェース151−iとも称し、「FB先リンク」の場合に通信を行うインターフェース151−k(k=1,2,・・・,Nのいずれか、k≠i)をFB先インターフェース151−kとも称する。
単一フォールバックを行う条件(単一フォールバック条件とも称する)は、次の(A1)〜(A6)のいずれかである。
(A1)セッションがタイムアウトしたとき
(A2)名前解決処理がタイムアウトしたとき
(A3)スループットが低下したとき
(A4)セッションが確立できなかったとき
(A5)名前解決処理に失敗したとき
(A6)通信中にソケットエラーが発生したとき
以下、これらの(A1)〜(A6)について説明する。
(A1)セッションがタイムアウトしたとき
通信装置1は、ホストとのソケット接続をした時にタイムアウトした場合、単一フォールバックを行う。ここで、ソケット接続とは、接続要求用のインターフェース(例えば、socket()、bind()等)による接続である。具体的には、IF選択部P14は、入力されたセッション異常情報がタイムアウトを示す場合、セッション識別情報が示すセッションの通信について、FB先インターフェース151−kを選択する。これにより、通信装置1は、FB元インターフェース151−iでの通信からFB先インターフェース151−kでの通信へ切り換えることができ、FB元リンクからFB先リンクへ通信を切り換える。
セッション管理部P111は、セルラー接続(LTE通信又は3G通信の接続)の場合、タイムアウト時間を、予め記憶する記憶部14から読み出す。セルラー接続の場合、タイムアウト時間は、例えば、固定値(例えば、3000ミリ秒)である。
セッション管理部P111は、各通信種別(Wi−Fi又はセルラーの種別)のソケット接続に対する応答が、その通信種別のタイムアウト時間を超えた場合、セッション異常とする。例えば、セッション管理部P111は、Java(登録商標。以下同じ)のプログラム(クラス、インスタンス、メソッド、又は属性等も、プログラムと称する)の場合、Connect()にタイムアウト時間を設定し、SocketTimeoutExceptionが発生した場合、セッション異常とする。その場合、セッション管理部P111は、タイムアウトを示すセッション異常情報を、IF選択部P14へ出力する。
(A2)名前解決処理がタイムアウトしたとき
通信装置1は、名前解決でDNSサーバへ接続をした時にタイムアウトした場合に単一フォールバックを行う。なお、Wi−Fi通信の場合、DNS管理部P112は、DNSサーバからホスト名等を取得する。具体的には、IF選択部P14は、入力された名前解決異常情報がタイムアウトを示す場合、セッション識別情報が示すセッションの通信について、FB先インターフェース151−kを選択する。
なお、DNS管理部P112は、DNSサーバへの接続のタイムアウト時間を、予め記憶する記憶部14から読み出す。セルラー接続のタイムアウト時間は、例えば、固定値(例えば、1000ミリ秒)である。また、DNS管理部P112は、DNSサーバへの接続がタイムアウトした場合、例えば1秒後に、再接続(リトライ)を行う。再接続に失敗した場合、DNS管理部P112は、名前解決異常とする。また、DNS管理部P112は、Javaのプログラムの場合、InterruptedIOExceptionが発生した場合、名前解決異常とする。InterruptedIOExceptionは、入出力処理で割り込みが発生したことを通知するシグナルを発生させる。DNS管理部P112は、名前解決異常とした場合、名前解決異常情報を、IF選択部P14へ出力する。
(A3)スループットが低下したとき
通信装置1は、スループットが低下した場合、単一フォールバックを行う。具体的には、IF選択部P14は、入力されたスループット情報が示すスループットが、記憶部14が記憶する閾値(スループット閾値とも称する)以下になった場合、セッション識別情報が示すセッションの通信について、FB先インターフェース151−kを選択する。
なお、スループット閾値は、通信方式に応じて異なる値であってもよい。例えば、スループット閾値は、LTE通信の場合には512Kbpsである。一方、UMTS/HS(D)PA(Universal Mobile Telecommunications System/High Speed (Downlink) Packet Access)の場合には、スループット閾値は、256Kbpsである。
また、スループット取得部P113は、下りの通信のスループットを測定する場合、各セッションについて、受信を開始(例えば、応答を1byteでも読み込んだ時点)から計測を開始する。ここで、スループット取得部P113は、応答データの読込み開始前にスレッドを生成して、非同期で監視する。スループット取得部P113は、1秒間に取得するレスポンスデータの情報量を、バイトサイズにて計測する。例えば、通信部15が1秒間に64KB(キロバイト)を取得した場合は、スループットは、512Kbps(キロビット/秒)となる。スループット取得部P113は、フォールバック後は、ソケット接続から開始するので、FB元リンクで取得した応答(既に元アプリに流している応答)の情報量(バイト数)までは読み飛ばし、それ以降に受信した情報量を計測してもよい。
(A4)セッションが確立できなかったとき
通信装置1は、ホストとのソケット接続に失敗した場合、単一フォールバックを行う。具体的には、IF(インターフェース)選択部P14は、入力されたセッション異常情報が接続失敗を示す場合、セッション識別情報が示すセッションの通信について、FB先インターフェース151−kを選択する。なお、セッション管理部P111は、Javaのプログラムのとき、ソケット接続に時にIOExceptionを捕えた(キャッチした)場合、セッション異常とする。IOExceptionは、IO(入出力)エラーが発生したときに投げられる例外である。セッション管理部P111は、セッション異常とした場合、セッション異常情報をIF選択部P14へ出力する。
(A5)名前解決処理に失敗したとき
通信装置1は、DNSサーバとのソケット接続に失敗した場合、単一フォールバックを行う。具体的には、IF選択部P14は、入力された名前解決異常情報が接続失敗を示す場合、セッション識別情報が示すセッションの通信について、FB先インターフェース151−kを選択する。
なお、DNS管理部P112は、DNSサーバへの接続のタイムアウト時間を、予め記憶する記憶部14から読み出す。DNSサーバへの接続に失敗に、例えば1秒後に、再接続を行う。再接続に失敗した場合、DNS管理部P112は、名前解決異常とする。例えば、DNS管理部P112は、Javaのプログラムのとき、ソケット接続に時にIOExceptionを捕えた場合、名前解決異常とする。また、DNS管理部P112は、名前解決後のIPアドレスをチェックし、例えばIPアドレスがnullの場合、名前解決異常とする。DNS管理部P112は、名前解決異常とした場合、名前解決異常情報を、IF選択部P14へ出力する。
(A6)通信中にソケットエラーが発生したとき
通信装置1は、FB元での通信中にソケットエラーが発生した場合、単一フォールバックを行う。具体的には、IF選択部P14は、入力されたセッション異常情報がソケットエラーを示す場合、セッション識別情報が示すセッションの通信について、FB先インターフェース151−kを選択する。なお、セッション管理部P111は、Javaのプログラムのとき、通信中にSocketExceptionが発生した場合、セッション異常とする。SocketExceptionとは、ソケットエラーが発生したときに投げられる例外である。セッション管理部P111は、セッション異常とした場合、ソケットエラーを示すセッション異常情報を、IF選択部P14へ出力する。
フォールバック状態(図4の状態C13)へ遷移する条件は、以下のとおりである。
(B1)FBセッション数が許容数を超えたとき
具体的には、IF選択部P14は、入力されたFBセッション数情報が示すFBセッション数が、記憶部14が予め記憶する許容数(例えば「5」個)を超えたと判定した場合、全てのセッションについて、LTE通信のインターフェース151−2を選択する。これにより、通信部15は、図4の状態C13が表わす通信を行うこととなる。なお、セッション管理部P111は、(A1)セッションがタイムアウトしたとき、(A2)名前解決処理がタイムアウトしたとき、(A3)スループットが低下したときに、単一フォールバックをしたセッション数を、FBセッション数とする。ただし、本発明はこれに限らず、(A1)〜(A6)のすべての場合で、フォールバックをしたセッション数を、FBセッション数としてもよい。
また、IF選択部P14は、あるセッションにおいて、(A4)セッションが確立できなかったとき、又は、(A5)名前解決処理に失敗したとき、(A6)通信中にソケットエラーが発生したときには、全てのセッションについて、LTE通信のインターフェース151−2を選択してもよい。
<フェールバックについて>
図5は、本実施形態に係るフェールバックを説明するための説明図である。なお、フェールバックとは、フォールバックとは逆の切り換えを行うことで、フォールバック前の状態に戻すことをいう。
この図において、通常状態C11とフォールバック状態C13は、図4のものと同じである。符号C22を付した図は、フェールバックの状態(フェールバック状態とも称する)C22を表す。フォールバック状態C13からフェールバックの状態へは、後述するフェールバック条件を充足した場合に遷移する。また、状態C22から状態C11へは、順次、遷移する。なお、通信部15からホストへ向かう矢印各々は、各セッションの通信を表す。
状態C22は、一部のセッションについて、セルラー通信C221を止め、Wi−Fi通信C222へ切り換わった状態である。つまり、状態C22は、あるセッションに対して、通信C221から通信C222へ、フェールバックが行われた状態である。なお、フェールバックを行うときに、セルラー通信を行っている最中のセッションがあった場合、そのセッションは、その通信の完了後に、Wi−Fi通信へ移行される。例えば、そのセッションは、通信の完了までは、同じベアラで通信が継続することとなる。また、状態C22、C11は、新規のセッションに対して、Wi−Fi通信が割り当てられる状態である。
以下、フェールバックについて、図2、3を参照しながら詳細を説明する。なお、フェールバックを行う元の無線リンクは上述のFB先リンクであり、フェールバックを行う先の無線リンクは上述のFB元リンクである。
フェールバック条件は、次の(C1)〜(C5)のいずれかである。
(C1)FB元リンクの信号強度が上昇したとき
(C2)フォールバックから1分が経過したとき
(C3)アクセスポイントが変わったとき
(C4)LTE通信が3G通信に変わったとき
(C5)通信中にソケットエラーが発生したとき
(C1)FB元リンクの信号強度が上昇したとき
通信装置1は、FB元リンクの信号強度が、フォールバックしたときより予め定めた強度以上に上昇した場合、フェールバックを行う。具体的には、IF選択部P14は、随時入力されるFB元インターフェース151−iの信号強度情報について、フォールバックしたときの信号強度情報(FB信号強度情報とも称する)を記憶部14に記憶し、現在の信号強度情報からFB信号強度情報を差し引く。IF選択部P14は、差し引いた値(強度差とも称する)が予め定めた閾値以上であれば、フェールバックを行う。例えば、FB元リンクの通信方式がWi−Fi通信の場合、IF選択部P14は、RSSIの強度差が2ランク(アンテナ2本分)以上になった場合、FB元インターフェース151−iを選択する。これにより、通信装置1は、FB先インターフェース151−kでの通信からFB元ンターフェース151−iでの通信へ切り換えることができ、FB先リンクからFB元リンクへ通信を切り換える。なお、IF選択部P14は、現在の信号強度情報とFB信号強度情報との比を算出して閾値と比較してもよい。
なお、IF選択部P14は、FB信号強度情報が3ランク(アンテナ3本分)のとき、現在の信号強度情報が4ランク(アンテナ4本分:最大ランク)になった場合、強度さが1ランクであっても、フェールバックを行う。また、IF選択部P14は、現在の信号強度情報が予め定めた値以上になった場合、フェールバックを行ってもよく、例えば、最高ランク(アンテナ4本分)になった場合、フェールバックを行ってもよい。
ここで、信号強度検出部152は、例えばWifiManagerを用いて実現される。WifiManagerは、Wi−Fiの情報を取得するプログラムであり、BSSID、IPアドレス、ネットワークID等を取得できる。信号強度検出部152は、FB元インターフェース151−iでのWiFi通信のRSSIを、例えば5秒間隔で検出する。信号強度検出部152は、検出したRSSIを示す信号強度情報を、5秒間隔で信号強度取得部P121を介して、IF選択部P14へ出力する。
(C2)フォールバックから1分が経過したとき
通信装置1は、フォールバック状態C13に遷移してから1分以上経過した場合、フェールバックを行う。具体的には、IF選択部P14は、時間超過情報が入力された場合、つまり、フォールバックした時点から設定値(例えば、1分)の時間が経過した場合、FB元インターフェース151−iを選択する。
(C3)アクセスポイントが変わったとき
通信装置1は、FB元リンクの基地局の識別情報又はネットワークの識別情報が変更した場合、フェールバックを行う。具体的には、IF選択部P14は、入力されたAP識別情報が、フォールバックの前後で異なるか否かを判定する。フォールバックの前後で異なると判定した場合、IF選択部P14は、FB元インターフェース151−iを選択する。なお、IF選択部P14は、強制フォールバックの場合のみ、(C3)をフェールバック条件としてもよい。
ここで、AP情報取得部P123は、例えば、CONNECTIVITY_ACTIONを受信したときに、BSSIDを取得する。CONNECTIVITY_ACTIONは、ネットワークの接続状態が変化したときの通知を取得するプログラムである。
(C4)LTE通信が3G通信に変わったとき
通信装置1は、FB先リンクの通信方式がLTEであるときに、その後、その通信方式が3Gに変化した場合、フェールバックを行う。具体的には、IF選択部P14は、フォールバックを行った後、入力された通信方式情報がLTEから3Gに変わったときに、FB元インターフェース151−iを選択する。なお、IF選択部P14は、強制フォールバックの場合のみ、(C4)をフェールバック条件としてもよい。ここで、通信方式情報取得部P124は、例えば、CONNECTIVITY_ACTIONを受信したときに、セルラータイプを取得することで、通信方式を取得する。なお、通信装置1は、通信をLTEから3Gに変化させるとき、ヘッダ比較処理を行って、データを最初から取得するか或いは途中から取得するかを制御してもよい。ここで、通信装置1は、FB元リンク(Wi−Fi通信)を用いて取得したヘッダ情報とFB先リンクでの変化後のリンク(3G通信)を用いて取得したヘッダを比較することで、ヘッダ比較処理を行ってもよい。
(C5)通信中にソケットエラーが発生したとき
通信装置1は、FB先での通信中にソケットエラーが発生した場合、フェールバックを行う。具体的には、IF選択部P14は、入力されたセッション異常情報がソケットエラーを示す場合、FB元インターフェース151−iを選択する。
なお、フェールバックを行った場合、IF選択部P14は、「強制フォールバックモード」の状態を解除してもよい。解除後は、IF選択部P14は、Wi−Fi通信を優先して選択する。
また、フェールバックを行った後、FB元リンクの通信に失敗した場合、通信装置1は、フォールバックを行ってもよい。さらに、このフォールバックを行った後、FB先リンクでも通信に失敗した場合、通信装置1は、通信を止めてもよい。これにより、通信装置1は、フォールバックとフェールバックが繰り返され続けることを防止できる。
<ヘッダ比較処理について>
上記のフォールバックを行う場合、通信装置1は、ヘッダ比較処理を行う。具体的には、ヘッダ情報取得部P131は、フォールバックを行う前に、FB元リンクにおいて例えば予め定めたプロトコル(例えばHTTP)のヘッダ情報(FB元ヘッダ情報とも称する)を取得したときに、取得したFB元ヘッダ情報をIF選択部P14へ出力する。IF選択部P14は、入力されたFB元ヘッダ情報を、として記憶部14に記憶させる。ヘッダ情報取得部P131は、フォールバックを行うときに、FB先リンクにおいてプロトコルのヘッダ情報(FB先ヘッダ情報)を取得し、取得したFB先ヘッダ情報をIF選択部P14へ出力する。IF選択部P14は、FB元ヘッダ情報とFB先ヘッダ情報を比較する。
ここで、IF選択部P14は、ヘッダ情報のうち、HTTPのデータ部分に差分があると判断できる情報を比較する。例えば、IF選択部P14は、ヘッダ情報のうち、コンテンツのサイズを表す情報(Content−Length)やコンテンツのバージョンや更新日時を示す情報を比較する。
比較の結果、FB元ヘッダ情報とFB先ヘッダ情報が同じであると判定した場合、IF選択部P14は、セッション識別情報が示すセッションの通信について、FB先インターフェース151−kを選択する(フォールバックを行う)。
一方、比較の結果、ヘッダ情報H1とヘッダ情報H2が同じでないと判定した場合、IF選択部P14は、セッション識別情報が示すセッションの通信について、FB元インターフェース151−iのままとする(フォールバックを中止する)。
IF選択部P14は、ヘッダ情報H1とヘッダ情報H2が同じでないと判定した場合、リダイレクト情報取得部P132が取得したステータスコードに応じて、再度、フォールバックを試みてもよい。具体的には、ヘッダ情報H1とヘッダ情報H2が同じでないと判定した場合、ヘッダ情報取得部P131は、リダイレクト情報取得部P132が取得したリダイレクション先に対して、HTTPのレンジリクエストを行う。ヘッダ情報取得部P131は、レンジリクエストの結果、新たなヘッダ情報を取得し、取得したヘッダ情報を、FB先ヘッダ情報としてIF選択部P14へ出力する。IF選択部P14は、新たに取得したFB先ヘッダ情報とFB元ヘッダ情報を比較する。
比較の結果、FB元ヘッダ情報とFB先ヘッダ情報が同じであると判定した場合、IF選択部P14は、セッション識別情報が示すセッションの通信について、FB先インターフェース151−kを選択する(フォールバックを行う)。一方、比較の結果、ヘッダ情報H1とヘッダ情報H2が同じでないと判定した場合、IF選択部P14は、セッション識別情報が示すセッションの通信について、FB元インターフェース151−iのままとする(フォールバックを中止する)。
図6は、本実施形態に係る通信装置1の状態遷移を表す図である。この図において、S11を付した状態S11は、Wi−Fi通信を行う状態(WiFi通信状態S11とも称する)を示す。S12を付した状態S12は、セルラー通信を行う状態(セルラー通信状態S12とも称する)を示す。
通信装置1は、WiFi通信状態S11であるとき、Wi−Fi通信が良好な場合、例えば、上記の単一フォールバックを行う条件(A1)〜(A6)に該当しない場合、WiFi通信状態S11のままである。一方、通信装置1は、WiFi通信状態S11であるとき、上記の単一フォールバックを行う条件(A1)〜(A6)に該当した場合、フォールバックを行うことで、セルラー通信状態S12へ遷移する。
通信装置1は、セルラー通信状態S12であるとき、例えば、上記のフェールバック条件(C1)〜(C5)に該当しない場合、セルラー通信状態S12のままである。また、通信装置1は、セルラー通信状態S12であるとき、セルラー通信に失敗した場合にも、セルラー通信状態S12のままである。一方、通信装置1は、セルラー通信状態S12であるとき、例えば、上記のフェールバック条件(C1)〜(C5)に該当した場合、フェールバックを行うことで、WiFi通信状態S11へ遷移する。
図7は、本実施形態に係る通信装置1の状態遷移についての説明図である。この図において、各列は、条件、Wi−Fi通信状態S11、セルラー通信状態S12を表す。符号T11を付した情報は、条件が、セッションのタイムアウト(セッション接続タイムアウト)又は名前解決処理のタイムアウト(DNS接続タイムアウト)である場合を表す。以下では、セッション又は名前解決処理のタイムアウトを、タイムアウトとも称する。
例えば、行の情報(行情報とも称する)T111は、Wi−Fi通信でタイムアウトせず(接続成功)、セルラー通信でもタイムアウトしない(接続成功)ときに、通信装置1がWi−Fi通信状態S11であればWi−Fi通信状態S11を継続し、セルラー通信状態S12であればセルラー通信状態S12を継続することを表す。行情報T112は、Wi−Fi通信でタイムアウトせず(接続成功)、セルラー通信でタイムアウトした(接続失敗)ときに、通信装置1がWi−Fi通信状態S11であればWi−Fi通信状態S11を継続し、セルラー通信状態S12であれば通信接続を止めることを表す。行情報T113は、Wi−Fi通信でタイムアウトし(接続失敗)、セルラー通信でタイムアウトしない(接続成功)ときに、通信装置1がWi−Fi通信状態S11であればセルラー通信状態S12へ遷移し(単一フォールバック条件(A1)、(A2))、セルラー通信状態S12であればセルラー通信状態S12を継続することを表す。なお、図7において、「フォールバック(※)」のように※を付したフォールバックは、単一フォールバックをした場合、セッション管理部P111がFBセッション数として計数するものである。
符号T12を付した情報は、条件が、セッションの確立の成否(セッション接続)と名前解決処理の成否(名前解決)である場合を表す。以下では、セッションの確立又は名前解決処理を、接続処理とも称する。例えば、行情報T123は、Wi−Fi通信で接続処理に失敗し(接続失敗)、セルラー通信で接続処理に成功した(接続成功)ときに、通信装置1がWi−Fi通信状態S11であればセルラー通信状態S12へ遷移し(単一フォールバック条件(A4)、(A5))、セルラー通信状態S12であればセルラー通信状態S12を継続することを表す。
符号T13を付した情報は、条件が状態監視の結果によるものであることを表す。行情報T131は、スループットが低下したときに、通信装置1がWi−Fi通信状態S11であればセルラー通信状態S12へ遷移する(単一フォールバック条件(A3))ことを表す。行情報T132は、Wi−Fi通信の信号強度が上昇したときに、通信装置1がセルラー通信状態S12であればWi−Fi通信状態S11へ遷移する(フェールバック条件(C1))ことを表す。行情報T133は、アクセスポイントが変わったときに、通信装置1がセルラー通信状態S12であればWi−Fi通信状態S11へ遷移する(フェールバック条件(C3))ことを表す。行情報T134は、LTE通信が3G通信に変わったときに、通信装置1がセルラー通信状態S12であればWi−Fi通信状態S11へ遷移する(フェールバック条件(C4))ことを表す。
符号T14を付した情報は、その他の条件を表す。行情報T141は、フォールバックから1分が経過したときに、通信装置1がセルラー通信状態S12であればWi−Fi通信状態S11へ遷移する(フェールバック条件(C2))ことを表す。行情報T142は、通信中にソケットエラー(SocketException)が発生したときに、通信装置1がWi−Fi通信状態S11であればセルラー通信状態S12へ遷移し(単一フォールバック条件(A6))、セルラー通信状態S12であればWi−Fi通信状態S11へ遷移する(フェールバック条件(C5))ことを表す。例えば、IF選択部P14は、セッション管理部P111がソケットエラーを検出した場合、FB元インターフェース151−iを選択する。これにより、通信装置1は、FB先インターフェース151−kでの通信からFB元ンターフェース151−iでの通信へ切り換えることができ、FB先リンクからFB元リンクへ通信を切り換える。
<処理フロー>
図8は、本実施形態に係る通信装置1の処理フローを示す図である。なお、この図において、ステップS103、S104、S105、S111、S121、S122、S128、S129は、Wi−Fi通信(FB元)の情報処理である。ステップS106、S107、S108、S123、S124、S125は、セルラー通信(FB先)の情報処理である。
(ステップS101)IF選択部P14は、全てのセッションでフォールバック中であるか否か、つまり、図4のフォールバック状態S13であるか否かを判定する。全てのセッションでフォールバック中であると判定された場合(Yes)、ステップS102へ進む。一方、少なくとも一部のセッションでフォールバック中ではないと判定した場合(No)、ステップS103へ進む。
(ステップS102)IF選択部P14は、通信がDLM(DownloadManager)による情報の取得であるか否かを判定する。DownloadManagerとは、サイズの大きいファイルを取得するときに用いるプログラムである。換言すれば、IF選択部P14は、サイズの大きいファイルを取得するか否かを判定する。DLMによる情報の取得であると判定された場合(Yes)、ステップS103へ進む。一方、DLMによる情報の取得ではないと判定された場合(No)、ステップS106へ進む。
(ステップS103)DNS管理部P112は、Wi−Fi通信を用いたDNSリクエストにより、ドメインネーム情報(例えば、IPアドレス)の取得を要求する。この要求の結果、ドメインネーム情報が取得された場合、ステップS104へ進む。一方、ドメインネーム情報が取得されなかった場合、IF選択部P14がFB先インターフェース151−kを選択することで、ステップS106へ進む。
(ステップS104)セッション管理部P111は、Wi−Fi通信を用いた接続要求(Connect)により、コンテンツサーバへの接続を要求する。この要求の結果、セッション管理部P111が接続に失敗した場合、ステップS106へ進む。一方、セッション管理部P111が接続に成功した場合、ステップS105へ進む。
(ステップS105)ヘッダ情報取得部P131は、Wi−Fi通信を用いて、FB元ヘッダ情報の取得を要求する(ヘッダDL(Wi−Fi))。FB元ヘッダ情報が取得された場合、容量情報取得部P114は、FB元ヘッダ情報を記憶させるとともに、FB元ヘッダ情報から取得対象のコンテンツサイズを抽出する。また、制御部13は、コンテンツの取得を開始する。
制御部13がコンテンツの取得を行っているとき、容量情報取得部P114は、随時、DL済サイズを算出する。また、容量情報取得部P114は、コンテンツサイズからDL済サイズを差し引くことで、残サイズを算出する。残サイズとは、取得するコンテンツのうち、取得が済んでいないコンテンツの容量である。また、制御部13がコンテンツの取得を行っているとき、随時、スループット取得部P113は、予め定めた時間間隔で、スループットを算出する。
(ステップS106)DNS管理部P112は、セルラー通信を用いたDNSリクエストにより、ドメインネーム情報の取得を要求する。この要求の結果、ドメインネーム情報が取得された場合、ステップS107へ進む。一方、ドメインネーム情報が取得されなかった場合、ステップS110へ進む。
(ステップS107)セッション管理部P111は、セルラー通信を用いた接続要求により、コンテンツサーバへの接続を要求する。この要求の結果、セッション管理部P111が接続に失敗した場合、ステップS110へ進む。一方、セッション管理部P111が接続に成功した場合、ステップS108へ進む。
(ステップS108)ヘッダ情報取得部P131は、セルラー通信を用いて、FB先ヘッダ情報の取得を要求する(ヘッダDL(Cellular))。FB先ヘッダ情報が取得された場合、容量情報取得部P114は、FB先ヘッダ情報から、取得対象のコンテンツサイズを抽出する。その後、ステップS109へ進む。
(ステップS109)IF選択部P14は、ステップS108で抽出したコンテンツサイズが予め定められたFB許容サイズより大きいか否かを判定する。FB許容サイズとは、フォールバックを許容するコンテンツの容量を示す情報である。コンテンツサイズがFB許容サイズより大きいと判定された場合(Yes)、ステップS110へ進む。一方、コンテンツサイズがFB許容サイズ以下であると判定された場合(No)、制御部13は、セルラー通信を用いて、コンテンツの取得を開始する。
(ステップS110)IOException又はInterruptedIOExceptionが投げられる。この場合、制御部13は、良好な接続がない又は無条件でのフォールバックが不可能と判定して、通信装置1の通信接続を止める。
(ステップS111)IF選択部P14は、スループット取得部P113が算出したスループットがスループット閾値以下になったか否かを判定する。スループットがスループット閾値より高い場合、制御部13は、Wi−Fi通信を用いて、コンテンツの取得を継続する。一方、スループットがスループット閾値以下になったと判定された場合、ステップS112へ進む。
(ステップS112)IF選択部P14は、ステップS105で算出された残サイズ、つまり、ステップS112(又はS111)の時点で取得が済んでいないコンテンツの容量が、予め定められたFB許容サイズより大きいか否かを判定する。残サイズがFB許容サイズより大きいと判定された場合(Yes)、ステップS113へ進む。一方、残サイズがFB許容サイズ以下であると判定された場合(No)、ステップS121へ進む。
(ステップS113)IF選択部P14は、全てのセッションでフォールバック中であるか否かを判定する。全てのセッションでフォールバック中であると判定された場合(Yes)、ステップS112へ戻る。この場合、制御部13は、定期的なポーリング(定期的な問合せ)を行う。なお、全てのセッションでフォールバック中であると判定される(Yes)のは、ステップS102で、DLMによる情報の取得であると判定された場合のみである。一方、少なくとも一部のセッションでフォールバック中ではないと判定された場合(No)、ステップS114へ進む。
(ステップS114)制御部13は、出力部12に対して、ユーザにフォールバックするか否かを確認する情報を出力させる。例えば、出力部12は、「サイズの大きい通信です。フォールバックをしますか」と表示させる。例えば、コンテンツをセルラー通信で取得する場合とWi−Fi通信で取得する場合では、料金が異なる場合がある。つまり、通信装置1は、サイズの大きいコンテンツをセルラー通信で取得する場合、Wi−Fi通信と比較して高額の料金がかかる場合があるため、コンテンツをセルラー通信で取得してもよいか否かをユーザに確認している。
出力部12の出力に対して入力部11からの入力がない場合(未選択)、ステップS112へ戻る。この場合、制御部13は、定期的なポーリングを行う。入力があったとき、入力部11からの入力がフォールバックをすることを示す場合(Yes)、IF選択部P14はフォールバックが許容されたと判定し、ステップS121へ進む。一方、入力部11からの入力がフォールバックをしないことを示す場合(No)、ステップS128へ進む。つまり、ユーザ操作によって、通信装置1は、フォールバックを行わないこととなる。
(ステップS121)制御部13は、受信バッファの読み込みを停止する(ReadStop)。その後、ステップS122へ進む。
(ステップS122)制御部13は、アプリバッファへの書き込みを停止する(WriteStop)。つまり、制御部13は、アプリケーションへのデータの出力を中断する。その後、ステップS123へ進む。
(ステップS123)DNS管理部P112は、セルラー通信を用いたDNSリクエストにより、ドメインネーム情報の取得を要求する。この要求の結果、ドメインネーム情報が取得された場合、ステップS124へ進む。一方、ドメインネーム情報が取得されなかった場合、ステップS128へ進む。
(ステップS124)セッション管理部P111は、セルラー通信を用いた接続要求により、コンテンツサーバへの接続を要求する。この要求の結果、セッション管理部P111が接続に失敗した場合、ステップS128へ進む。一方、セッション管理部P111が接続に成功した場合、ステップS125へ進む。
(ステップS125)ヘッダ情報取得部P131は、セルラー通信を用いて、FB先ヘッダ情報を取得する。その後、ステップS126へ進む。
(ステップS126)IF選択部P14は、ステップS105で記憶させたFB元ヘッダ情報と、ステップS125で取得したFB先ヘッダ情報と、を比較する(ヘッダ比較処理)。比較の結果、FB元ヘッダ情報とFB先ヘッダ情報が同じでないと判定された場合(Yes)、ステップS127へ進む。一方、FB元ヘッダ情報とFB先ヘッダ情報が同じであると判定された場合(No)、制御部13は、セルラー通信を用いて、コンテンツの取得を再開する。ここで、データ合成部P15は、Wi−Fi通信で取得済みのコンテンツのデータを読み出し、セルラー通信を用いて、そのデータの続きからデータの取得を再開する。つまり、通信装置1は、フォールバックに成功する。
なお、IF選択部P14は、ステップS126でNoと判定するまでは、フォールバック元の通信(Wi−Fi通信)でのセッションを継続させ続ける。
(ステップS127)IF選択部P14は、リダイレクト情報取得部P132が取得したステータスコードがリダイレクションを示すか否かを判定する。ステータスコードがリダイレクションを示さないと判定された場合、ステップS128へ進む。
一方、ステータスコードがリダイレクションを示すと判定された場合、ステップS123へ戻る。この場合、ステップS123〜S125にて、リダイレクション先へ接続する。例えば、ステップS125にて、ヘッダ情報取得部P131は、リダイレクション先から取得したヘッダ情報を、FB先ヘッダ情報とする。その後、ステップS126で、新たなFB先ヘッダ情報とFB元ヘッダ情報が比較されることとなる。なお、ステップS127の処理は、1回だけ行われてもよい。つまり、制御部13は、一度だけ、転送を許容してもよい。この場合、IF選択部P14は、同じセッションにおいて、2回目以降のステップS127の処理を行わずに、ステップS128へ進む。
(ステップS128)制御部13は、受信バッファの読み込みを再開する(ReadStart)。つまり、制御部13は、再度、Wi−Fi通信を用いて、コンテンツの取得を再開する。ここで、データ合成部P15は、Wi−Fi通信で取得済みのコンテンツのデータを読み出し、Wi−Fi通信を用いて、そのデータの続きからデータの取得を再開する。つまり、通信装置1は、フォールバックを止めて、元のFB元通信で、データの取得を再開する。
(ステップS129)制御部13は、アプリバッファへの書き込みを再開する(WriteStart)。つまり、制御部13は、アプリケーションへのデータの出力を再開する。
なお、IF選択部P14は、ステップS101、S113において、通信装置1が強制フォールバックモードか否かを判定してもよい。
<プロキシ部P1の処理フロー>
図9及び図10は、本実施形態に係るプロキシ部P1の処理フローを示す図である。なお、図10は、図9の続きである。
(ステップS201)プロキシ部P1は、プロキシサービス(LaProxyService)CL21を生成する(onCreate())。その後、ステップS202へ進む。
(ステップS202)プロキシサービスCL21は、フォールバックを管理するFB管理(FallbackManager)CL22を生成する。その後、ステップS203へ進む。
(ステップS203)プロキシサービスCL21は、サーバーソケット(ServerSocket)を生成する。サーバーソケットは、ソケット接続を受け付けるプログラムである。その後、ステップS204へ進む。
(ステップS204)プロキシサービスCL21は、例えば通信装置1(アプリケーション部131)のアプリケーション(元アプリとも称する)から、ソケット接続のリクエストを受け付ける。その後、ステップS205へ進む。
(ステップS205)プロキシサービスCL21は、セッションを管理するFBセッション(FallbackSession)CL23を生成する。その後、ステップS206へ進む。
(ステップS206)プロキシサービスCL21は、FBセッションCL23を開始させる。その後、ステップS207へ進む。
(ステップS207)FBセッションCL23は、入力されたデータを読み込むプログラム(read())を生成する。その後、ステップS208へ進む。
(ステップS208)FBセッションCL23は、ステップS204で受け付けたリクエストを読み込む。その後、ステップS209へ進む。
(ステップS209)FBセッションCL23は、接続を確立するためのプログラム(doconnect())を生成する。その後、ステップS210へ進む。
(ステップS210)FBセッションCL23は、ステップS208で読み込んだリクエストのURLを解析する。その後、ステップS211へ進む。
(ステップS211)FBセッションCL23は、ステップS208で読み込んだリクエストについて、不要なリクエストの修正や削除を行う。その後、ステップS212へ進む。
(ステップS212)FBセッションCL23は、LA(LinkAggregation:リンクアグリゲーション(同時通信))が有効であるか無効であるかを確認する。その後、ステップS213へ進む。
(ステップS213)FBセッションCL23は、FB管理CL22に、通信方式(RAT:Radio Access Technology)を選択させる要求を行う。その後、ステップS214へ進む。
(ステップS214)FB管理CL22は、通信方式を選択する(RAT選択)。例えば、FB管理CL22は、デフォルトではWi−Fi通信を選択する。一方、例えば強制フォールバックモードの場合、セルラー通信を選択する。その後、ステップS215へ進む。
(ステップS215)FBセッションCL23は、ホストと接続するためのプログラム(clientConnect())を生成する。その後、ステップS216へ進む。
(ステップS216)FBセッションCL23は、ステップS208のリクエストに含まれるドメインネーム情報について、名前解決処理を行うことで、ホストのIPアドレスを取得する。ここで、FBセッションCL23は、ステップS213でWi−Fi通信が選択された場合、予め定めた規則に従ってDNSサーバ(図1のサーバ装置Sv103)を選択し、選択したDNSサーバへ接続する。FBセッションCL23は、接続したDNSサーバを使用して、名前解決処理を行う。一方、FBセッションCL23は、ステップS213でセルラー通信が選択された場合、所定のDNSサーバ(図1のサーバ装置Sv102)を使用して、名前解決処理を行う。その後、ステップS217へ進む。
なお、ステップS216で、DNSサーバへの接続がタイムアウトした場合やDNSサーバへの接続が失敗した場合、通信装置1は、フォールバック条件(A2)、(A5)に該当すると判定する。
(ステップS217)FBセッションCL23は、ソケット接続を行う。ここで、FBセッションCL23は、ホストへ接続済みで、かつ、ステップS216で取得したホストのIPアドレスと同じ場合には、接続済みのソケット接続を使い廻す。一方、それ以外の場合(例えば未接続の場合)、FBセッションCL23は、ステップS216で取得したホストのIPアドレスを用いて、そのホストへ接続するためのソケットを生成する。FBセッションCL23は、生成したソケットを用いて、ホストへ接続する。例えば、FBセッションCL23は、通常(デフォルト)では、Wi−Fi通信により、ホストへ接続する。なお、ステップS217で、ホストへの接続がタイムアウトした場合やホストへの接続が失敗した場合、通信装置1は、フォールバック条件(A1)、(A4)に該当すると判定する。
ステップS215〜S217(clientConnect())の処理でエラーが発生した場合、ステップS218へ進む。一方、ステップS214〜S217の処理でエラーが発生しなかった場合、図10のステップS219へ進む。
(ステップS218)FBセッションCL23は、リトライを行う。つまり、FBセッションCL23は、ステップS213で選択された通信方式とは異なる通信方式で、再度、ステップS214〜S217の処理を行う。換言すれば、FBセッションCL23は、ステップS213で選択されたインターフェース151−iとは異なるインターフェース151−kを用いて、再度、ステップS214〜S217の処理を行う。すなわち、通信装置1は、フォールバックを行う。ここで、FBセッションCL23は、リトライを行う前に、ヘッダ比較処理及びRD先情報取得処理を行うことで、リトライを行うか否かを判定する。再度のステップS215〜S217の処理でエラーが発生しなかった場合、図10のステップS219へ進む。
(ステップS219)FBセッションCL23は、サーバへHTTPリクエストを送信するためのプログラム(sendRequest())を生成する。その後、ステップS220へ進む。
(ステップS220)FBセッションCL23は、データを要求するリクエストを、バッファへ書き込む。その後、ステップS221へ進む。
(ステップS221及びS222)FBセッションCL23は、ステップS220で書き込んだリクエストを、ステップS217で接続したホストへ送信する。ステップS221のリクエストに失敗した場合、ステップS223へ進む。一方、ステップS221のリクエストに成功した場合、ステップS224へ進む。
(ステップS223)FBセッションCL23は、リトライを行う。すなわち、通信装置1は、フォールバックを行う。このフォールバックの詳細は、図11を用いて後述する。
(ステップS224)FBセッションCL23は、レスポンスを受信するためのプログラム(recvResponse())を生成する。その後、ステップS224へ進む。
(ステップS225)FBセッションCL23は、スレッド(Thread)CL24を生成する。スレッドは、データを受信するためのプログラムである。その後、ステップS226へ進む。
(ステップS226)FBセッションCL23は、スレッドCL24を開始させる。その後、ステップS227及びステップS237へ進む。
(ステップS227)スレッドCL24は、レスポンスのヘッダ情報を受信するためのプログラム(recvResponseHeader())を生成する。その後、ステップS228へ進む。
(ステップS228及びS229)スレッドCL24は、ステップS221で送信したリクエストに対するレスポンスのヘッダ情報を受信し、受信したヘッダ情報を読み込む。その後、ステップS230へ進む。
(ステップS230及びS231)スレッドCL24は、ステップS228で読み込んだヘッダ情報を、元アプリのソケットへ書き込む。つまり、スレッドCL24は、ヘッダ情報を、元アプリへ送信する。その後、スレッドCL24は、全てのヘッダ情報の受信が完了するまで、ステップS228〜S231の処理を繰り返す。全てのレスポンスの受信が完了したとき、ステップS232へ進む。
(ステップS232)スレッドCL24は、レスポンスのボディ情報(データ部分)を受信するためのプログラム(recvResponseBody())を生成する。その後、ステップS233へ進む。
(ステップS233及びS234)スレッドCL24は、ステップS223で送信したリクエストに対するレスポンスのボディ情報を受信し、受信したボディを読み込む。その後、ステップS235へ進む。
(ステップS235及びS236)スレッドCL24は、ステップS233及びS234で読み込んだボディ情報を、元アプリのソケットへ書き込む。つまり、スレッドCL24は、ボディ情報を、元アプリへ送信する。その後、スレッドCL24は、全てのボディ情報の受信が完了するまで、ステップS233〜S236の処理を繰り返す。
(ステップS237)FBセッションCL23は、スループットを監視する。FBセッションCL23は、スレッドCL24が全てのヘッダ情報及びボディ情報の受信が完了するまで、ステップS231又はS236の処理を繰り返す。その後、ステップS239へ進む。ただし、ステップS229又はS234で、スループットがスループット閾値以下であると判定された場合、フォールバック条件(A3)に該当すると判断し、後述の図12のステップS238へ進む。また、ステップS228〜S236の処理、つまり、レスポンス取得中に、エラーが発生した場合には、ステップS239へ進む。
(ステップS238)FBセッションCL23は、例えばスループットが低下した場合に、リトライを行う。すなわち、通信装置1は、フォールバックを行う。なお、スループットが低下した場合とは、例えば、FB元リンクがWi−Fi通信の場合には512Kbps(キロビット毎秒)であり、FB元リンクがLTE通信の場合には512Kbpsであり、FB元リンクが3G通信の場合には256である。このフォールバックの詳細は、図12、図13を用いて後述する。
(ステップS239)FBセッションCL23は、リトライを行う。すなわち、通信装置1は、フォールバックを行う。このフォールバックの詳細は、図14を用いて後述する。
図11は、本実施形態に係るプロキシ部P1の処理フローを示す別の図である。この図は、図10のステップS218の続きであり、図11のステップS301以降が図10のステップS223に対応する。また、図10のステップ223は、図11のS304以降に対応する。図11において、図9又は図10と同じ符号を付した処理は、図9又は図10のものと同じであるので、説明を省略する。
(ステップS301)FBセッションCL23は、ステップS221で送信したリクエストに失敗する。なお、このリクエストは、例えば、Wi−Fi通信により送信されたものである。その後、ステップS302へ進む。
(ステップS302)FBセッションCL23は、ステップS217で生成されたソケットを閉じる。その後、ステップS303へ進む。
(ステップS303)FBセッションCL23は、フォールバックを行うためのプログラム(doRetry)を生成する。その後、ステップS304へ進む。
(ステップS304)FBセッションCL23は、フォールバックを行うためのソケットを生成する。その後、ステップS305へ進む。
(ステップS305)FBセッションCL23は、ステップS208のリクエストに含まれるドメインネーム情報について、名前解決処理を行うことで、ホストのIPアドレスを取得する。ここで、FBセッションCL23は、セルラー通信で用いるDNSサーバ(図1のサーバ装置Sv102)を使用して、名前解決処理を行う。その後、ステップS306へ進む。なお、ステップS305で、DNSサーバへの接続がタイムアウトした場合やDNSサーバへの接続が失敗した場合、通信装置1は、フォールバックも不可能と判断し、通信エラーとする。
(ステップS306)FBセッションCL23は、ソケット接続を行う。ここで、FBセッションCL23は、ステップS305で取得したホストのIPアドレスを用いて、そのホストへ接続するためのソケットを生成する。FBセッションCL23は、生成されたソケットを用いて、セルラー通信により、ホストへ接続する。その後、ステップS307へ進む。なお、ステップS306で、ホストへの接続がタイムアウトした場合やホストへの接続が失敗した場合、通信装置1は、フォールバックも不可能と判断し、通信エラーとする。
(ステップS307)FBセッションCL23は、データを要求するリクエストを送信するためのプログラム(sendRequest())を生成する。その後、ステップS308へ進む。
(ステップS308及びS309)FBセッションCL23は、データを要求するリクエストを、ステップS306で接続したホストへ、セルラー通信により送信する。その後、ステップS310へ進む。
(ステップS310)FBセッションCL23は、レスポンスのヘッダ情報を受信するためのプログラム(recvResponseHeader())を生成する。その後、ステップS311へ進む。
(ステップS311及びS312)FBセッションCL23は、レスポンスのヘッダ情報を受信し、受信したヘッダ情報を読み込む。その後、ステップS313へ進む。
(ステップS313及びS314)FBセッションCL23は、ステップS311で読み込んだヘッダ情報を、元アプリのソケットへ書き込む。つまり、FBセッションCL23は、ヘッダ情報を、元アプリへ送信する。その後、FBセッションCL23は、全てのヘッダ情報の受信が完了するまで、ステップS311〜S314の処理を繰り返す。全てのレスポンスの受信が完了したとき、ステップS315へ進む。ここで、FBセッションCL23は、ステップS314の後、ステップS315の前に、ヘッダ比較処理(例えば、コンテンツのサイズの比較処理)を行わない。なぜなら、ステップS301でリクエストに失敗しているため、通信装置1は、FB元ヘッダ情報を取得していないからである。
(ステップS315)FBセッションCL23は、レスポンスのボディ情報(データ部分)を受信するためのプログラム(recvResponseBody())を生成する。その後、ステップS316へ進む。
(ステップS316及びS317)FBセッションCL23は、ステップS309で送信したリクエストに対するレスポンスのボディ情報を受信し、受信したボディを読み込む。その後、ステップS318へ進む。
(ステップS318及びS319)FBセッションCL23は、ステップS316及びS317で読み込んだボディ情報を、元アプリのソケットへ書き込む。つまり、FBセッションCL23は、ボディ情報を、元アプリへ送信する。その後、FBセッションCL23は、全てのボディ情報の受信が完了するまで、ステップS316〜S319の処理を繰り返す。全てのボディ情報の受信が完了した後、ステップS320へ進む。
(ステップS320)FBセッションCL23は、内部情報である、サーバ装置と接続しているソケットの情報に、FB後のソケット情報を設定(更新)する。
図12は、本実施形態に係るプロキシ部P1の処理フローを示す別の図である。この図は、図10のステップS223の続きである。図11において、図9、図10又は図11と同じ符号を付した処理は、図9、図10又は図11のものと同じであるので、説明を省略する。
(ステップS401)FBセッションCL23は、フォールバックを行うためのプログラム(doRetry)を生成する。その後、ステップS304へ進む。
なお、図12では、ステップS312の後、ステップS402へ進む。また、S304、S306、S309の処理で失敗した場合については、図13で説明する。
(ステップS402)FBセッションCL23は、ステップS228〜S231で読み込んだヘッダ情報(FB元ヘッダ情報)とステップS311〜S312で読み込んだヘッダ情報(FB先ヘッダ情報)とを比較するヘッダ比較処理(例えば、コンテンツのサイズの比較処理)を行う。FB元ヘッダ情報とFB先ヘッダ情報が同じ(例えば、コンテンツのサイズが同じ)であると判定された場合、ステップS403へ進む。なお、FB元ヘッダ情報とFB先ヘッダ情報が同じでないと判定された場合については、図13で説明する。
(ステップS403)FBセッションCL23は、フォールバックを開始する。その後、ステップS404へ進む。
(ステップS404)FBセッションCL23は、FB管理CL22に対して、FBセッション数に1を加えさせる。また、FBセッションCL23は、スループットが低下したことを示すスループット低下フラグを設定する。このフラグが設定された場合、スレッドCL24は、ステップS233〜S236のループを抜ける。その後、ステップS315及びS405へ進む。
(ステップS405)スレッドCL24は、図9のステップS217で生成されたソケットを閉じる。なお、FBセッションCL23は、図12の最初のステップS316において、最後のステップS236で書き込まれたボディ情報の続きから、ボディ情報を読み込む。
図13は、本実施形態に係るプロキシ部P1の処理フローを示す別の図である。この図は、図10のステップS223の続きである。図11において、図9〜図12と同じ符号を付した処理は、図9〜図12のものと同じであるので、説明を省略する。なお、図13のステップS304、S306、S309の処理で失敗した場合には、ステップS502へ進む。
(ステップS501)FBセッションCL23は、ステップS228〜S231で読み込んだヘッダ情報(FB元ヘッダ情報)とステップS311〜S312で読み込んだヘッダ情報(FB先ヘッダ情報)とを比較するヘッダ比較処理(例えば、コンテンツのサイズの比較処理)を行う。FB元ヘッダ情報とFB先ヘッダ情報が同じ(例えば、コンテンツのサイズが同じ)でないと判定された場合、ステップS502へ進む。なお、FBセッションCL23は、ステップS501の後に、図8のステップS127の処理を行ってもよい。このとき、ステータスコードがリダイレクションを示すと判定された場合、ステップS123へ戻る。この場合、ステップS307に戻って、リダイレクション先へデータを要求するリクエストを送信するためのプログラム(sendRequest())を生成してもよい。
(ステップS502)FBセッションCL23は、ステップS304で生成されたソケットを閉じる。
図14は、本実施形態に係るプロキシ部P1の処理フローを示す別の図である。この図は、図10のステップS223の続きである。図11において、図9〜図12と同じ符号を付した処理は、図9〜図12のものと同じであるので、説明を省略する。
(ステップS601、S602、及びS603)スレッドCL24は、図10のステップS221で送信したリクエストに対して、レスポンスのヘッダ情報を受信できない、又は、全てのヘッダ情報を受信できない状態となる。スレッドCL24は、3秒間、レスポンスを取得できなかった場合には、ステップS604へ進む。
(ステップS604)スレッドCL24は、ステップS217で生成されたソケットを閉じる。その後、ステップSS239へ進む。
(ステップS605)FBセッションCL23は、フォールバックを行うためのプログラム(doRetry)を生成する。その後、ステップS304へ進む。
このように、本実施形態によれば、FB元インターフェース151−iは、第1通信(例えば、Wi−Fi)を行う。FB先インターフェース151−kは、第2通信(例えば、LTE)を行う。記憶部14は、第1通信を用いて取得した通信データのヘッダ情報であるFB元ヘッダ情報を記憶する。プロキシ部P1は、第2通信を用いて取得した通信データのヘッダ情報であるFB先ヘッダ情報を取得する。プロキシ部P1は、FB元ヘッダ情報とFB先ヘッダ情報とを比較し、比較結果に基づいて、通信の一部又は全部について、第1通信と第2通信との切り換えを制御する。これにより、通信装置1は、適切に無線リンクの切り換えを制御できる。例えば、通信装置1は、フォールバックによって、第1通信を用いて取得したデータと第2通信を用いて取得したデータを結合してしまい、データの不整合が生じることを防止できる。
また、本実施形態によれば、プロキシ部P1は、FB元ヘッダ情報とFB先ヘッダ情報の少なくとも一部が一致しない場合には、通信の一部又は全部について、第1通信と第2通信との切り換えを止めると判定する。つまり、通信装置1は、フォールバックを止める。
プロキシ部P1は、FB先ヘッダ情報がリダイレクションを示す場合には、当該リダイレクション先からFB先ヘッダ情報を取得し、取得したFB先ヘッダ情報とFB元ヘッダ情報との比較結果に基づいて、通信の一部又は全部について、第1通信と第2通信との切り換えを制御する。これにより、通信装置1は、フォールバック時にリダイレクトされた場合でも、ヘッダ情報が同じものを取得できた場合、つまり、最終的にコンテンツが同じである場合、フォールバックを行うことができる。
また、本実施形態によれば、記憶部14は、通信装置1に提供されるコンテンツのうち、第1通信を用いて取得したコンテンツ(取得済コンテンツとも称する)を記憶する。プロキシ部P1は、FB元ヘッダ情報とFB先ヘッダ情報の少なくとも一部が一致する場合には、通信の一部又は全部について、第1通信と第2通信を切り換えると判定する。プロキシ部P1は、第2通信を用いてコンテンツのうち、取得済コンテンツ以外のコンテンツ(未取得コンテンツとも称する)を取得し、取得済コンテンツと未取得コンテンツを合成する。
また、本実施形態によれば、プロキシ部P1は、予め定めたセッション(一連の通信)毎に、第1通信と第2通信の切り換えを制御し、第1通信から第2通信へ切り換えているセッションの数(FBセッション数)を計数する。プロキシ部P1は、予め定めたルールに従って第1通信を優先し、計数したFBセッション数が許容値を超えた場合に、第2通信を優先する(強制フォールバックモードへ遷移する)。このように、通信装置1は、強制フォールバックモードに遷移させることで、不要リンクへの通信確立を試みるコストが不要となり、すぐに良好な通信を行うことができる。なお、予め定めたルールとは、例えば、予め定めた状態(デフォルト状態、又は、通常状態)において、第1通信を優先するものである。 また、本実施形態によれば、第1通信と第2通信は、通信のインターフェースが異なる。プロキシ部P1は、第1通信のFB元インターフェース151−iと第2通信のFB先インターフェース151−kとの切り換えを制御する。
(第2の実施形態)
通信装置1(プロキシ部P1)は、セッションの途中、つまり、FB先での通信完了前にフェールバックを行ってもよい。その場合、通信装置1は、ヘッダ比較処理を行って、フェールバックをするか否かを判定してもよい。
(第3の実施形態)
上記各実施形態において、通信装置1(プロキシ部P1)は、提供されるデータ部分のヘッダ情報の一部又は全部を比較してもよい。例えば、HTTPのパケットには、IPヘッダやTCPヘッダの後に、データ部分であるHTTPデータが含まれている。例えば、HTTPデータは、HTMLの情報である。
この場合、例えば、通信装置1は、無線リンクL2において、HTTPのヘッダフィールドで「Range:bytes=−200」と指定することで、200バイト以前のデータを取得できる。例えば、データがHTMLの場合、200バイト以前のデータには、HTMLのヘッダ情報の一部又は全部が含まれる。通信装置1は、取得したHTMLのヘッダ情報の一部又は全部と、無線リンクL1を用いて取得したHTMLのヘッダ情報の一部又は全部と、を比較することにより、ヘッダ比較処理を行ってもよい。
(第4の実施形態)
通信装置1(プロキシ部P1)は、フォールバックを行うか否かの判定(ヘッダ比較処理を含む)において、アプリケーションのタイムアウト時間を考慮してもよい。例えば、通信装置1は、ヘッダ比較処理又はRD先情報取得処理の時間が、アプリケーションのタイムアウト時間に近づいたときには、フォールバックを行わないと判定してもよい。
なお、上述した実施形態における通信装置1の一部をコンピュータで実現するようにしてもよい。その場合、この制御機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、通信装置1に内蔵されたコンピュータシステムであって、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよい。
また、上述した実施形態における通信装置1の一部、または全部を、LSI(Large Scale Integration)等の集積回路として実現してもよい。通信装置1の各機能ブロックは個別にプロセッサ化してもよいし、一部、または全部を集積してプロセッサ化してもよい。また、集積回路化の手法はLSIに限らず専用回路、または汎用プロセッサで実現してもよい。また、半導体技術の進歩によりLSIに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いてもよい。
以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。
1・・・通信装置、AP1・・・アクセスポイント、BS1・・・基地局装置、Sv101、Sv102、Sv103、Sv104・・・サーバ装置、11・・・入力部、12・・・出力部、13・・・制御部、14・・・記憶部、15・・・通信部、131・・・アプリケーション部、P1・・・プロキシ部、151−1〜151−N・・・インターフェース、152・・・信号強度検出部、P111・・・セッション管理部、P112・・・DNS管理部、P113・・・スループット取得部、P114・・・容量情報取得部、P121・・・信号強度取得部、P122・・・計時部、P123・・・AP情報取得部、P124・・・通信方式情報取得部、P125・・・位置情報取得部、P131・・・ヘッダ情報取得部、P132・・・リダイレクト情報取得部、P14・・・IF選択部、P15・・・データ合成部

Claims (9)

  1. 第1通信を行う第1通信部と、
    第2通信を行う第2通信部と、
    前記第1通信を用いて取得した通信データのヘッダ情報である第1ヘッダ情報を記憶する記憶部と、
    前記第2通信を用いて取得した通信データのヘッダ情報である第2ヘッダ情報を取得する情報取得部と、
    前記第1ヘッダ情報と前記第2ヘッダ情報とを比較し、比較結果に基づいて、通信の一部又は全部について、前記第1通信と前記第2通信との切り換えを制御する選択部と、
    を備える通信装置。
  2. 前記選択部は、前記第1ヘッダ情報と前記第2ヘッダ情報の少なくとも一部が一致しない場合には、通信の一部又は全部について、前記第1通信と前記第2通信との切り換えを止めると判定する請求項1に記載の通信装置。
  3. 前記選択部は、前記第2ヘッダ情報がリダイレクションを示す場合には、当該リダイレクション先から前記第2ヘッダ情報を取得し、取得した第2ヘッダ情報と前記第1ヘッダ情報との比較結果に基づいて、通信の一部又は全部について、前記第1通信と前記第2通信との切り換えを制御する請求項2に記載の通信装置。
  4. 前記記憶部は、前記通信装置に提供される提供データのうち、前記第1通信を用いて取得した第1データを記憶し、
    前記選択部は、前記第1ヘッダ情報と前記第2ヘッダ情報の少なくとも一部が一致する場合には、通信の一部又は全部について、前記第1通信と前記第2通信を切り換えると判定し、
    前記第2通信を用いて、前記提供データのうち、前記第1データ以外の第2データを取得し、前記第1データと前記第2データを合成する合成部を備える請求項1から3のいずれか一項に記載の通信装置。
  5. 前記選択部は、予め定めた一連の通信毎に、前記第1通信と前記第2通信の切り換えを制御し、
    前記第1通信から前記第2通信へ切り換えている前記一連の通信の数を計数する計数部を備え、
    前記選択部は、前記第1通信を優先し、前記計数部が計数した一連の通信の数が閾値を超えた場合には、前記第2通信を優先する請求項1から4のいずれか一項に記載の通信装置。
  6. 前記第1通信と前記第2通信は、論理的又は物理的な通信インターフェースが異なり、
    前記選択部は、前記第1通信の通信インターフェースと前記第2通信のインターフェースとの切り換えを制御する請求項1から5のいずれか一項に記載の通信装置。
  7. 通信装置における通信方法おいて、
    記憶部が、第1通信を用いて取得した通信データのヘッダ情報である第1ヘッダ情報を記憶する記憶過程と、
    ヘッダ情報取得部が、第2通信を用いて取得した通信データのヘッダ情報である第2ヘッダ情報を取得する情報取得過程と、
    選択部が、前記第1ヘッダ情報と前記第2ヘッダ情報とを比較し、比較結果に基づいて、通信の一部又は全部について、前記第1通信と前記第2通信との切り換えを制御する選択過程と、
    を有する通信方法。
  8. 通信装置のコンピュータに、
    第1通信を用いて取得した通信データのヘッダ情報である第1ヘッダ情報を記憶する記憶手順、
    第2通信を用いて取得した通信データのヘッダ情報である第2ヘッダ情報を取得する情報取得手順、
    前記第1ヘッダ情報と前記第2ヘッダ情報とを比較し、比較結果に基づいて、通信の一部又は全部について、前記第1通信と前記第2通信との切り換えを制御する選択手順、
    を実行させるための通信プログラム。
  9. 第1通信を用いて取得した通信データのヘッダ情報と第2通信を用いて取得した通信データのヘッダ情報とを比較し、比較結果に基づいて、通信の一部又は全部について、前記第1通信と前記第2通信との切り換えを制御する選択部を備えるプロセッサ。
JP2014231060A 2014-11-13 2014-11-13 通信装置、通信方法、通信プログラム、及びプロセッサ Expired - Fee Related JP6488526B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014231060A JP6488526B2 (ja) 2014-11-13 2014-11-13 通信装置、通信方法、通信プログラム、及びプロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014231060A JP6488526B2 (ja) 2014-11-13 2014-11-13 通信装置、通信方法、通信プログラム、及びプロセッサ

Publications (2)

Publication Number Publication Date
JP2016096436A true JP2016096436A (ja) 2016-05-26
JP6488526B2 JP6488526B2 (ja) 2019-03-27

Family

ID=56071990

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014231060A Expired - Fee Related JP6488526B2 (ja) 2014-11-13 2014-11-13 通信装置、通信方法、通信プログラム、及びプロセッサ

Country Status (1)

Country Link
JP (1) JP6488526B2 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004159304A (ja) * 2002-10-18 2004-06-03 Ntt Docomo Inc 移動局、移動通信システム、及びセル選択方法
JP2007318291A (ja) * 2006-05-24 2007-12-06 Matsushita Electric Ind Co Ltd マルチ方式対応通信端末
JP2009506651A (ja) * 2005-08-22 2009-02-12 テルコーディア テクノロジーズ、 インコーポレイテッド 共同ワイヤレス設置環境におけるマルティプル・インターフェース・デバイスのためのシームレスな移動
JP2013062693A (ja) * 2011-09-13 2013-04-04 Toshiba Corp 通信システム、ネットワークデバイス、サーバ装置および通信制御方法
JP2014149754A (ja) * 2013-02-04 2014-08-21 Alaxala Networks Corp 認証スイッチまたはネットワークシステム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004159304A (ja) * 2002-10-18 2004-06-03 Ntt Docomo Inc 移動局、移動通信システム、及びセル選択方法
JP2009506651A (ja) * 2005-08-22 2009-02-12 テルコーディア テクノロジーズ、 インコーポレイテッド 共同ワイヤレス設置環境におけるマルティプル・インターフェース・デバイスのためのシームレスな移動
JP2007318291A (ja) * 2006-05-24 2007-12-06 Matsushita Electric Ind Co Ltd マルチ方式対応通信端末
JP2013062693A (ja) * 2011-09-13 2013-04-04 Toshiba Corp 通信システム、ネットワークデバイス、サーバ装置および通信制御方法
JP2014149754A (ja) * 2013-02-04 2014-08-21 Alaxala Networks Corp 認証スイッチまたはネットワークシステム

Also Published As

Publication number Publication date
JP6488526B2 (ja) 2019-03-27

Similar Documents

Publication Publication Date Title
JP6096836B2 (ja) ネットワークアクセスを電子デバイスに提供するシステム及び方法
KR101203753B1 (ko) 이동 통신 디바이스의 복수의 애플리케이션에 대한 패킷 데이터 세션의 할당을 우선순위화하는 방법 및 장치
US10212580B2 (en) Cloud-based connectivity information discovery
TW201110796A (en) Connection manager for a wireless communication device
JP2012010352A (ja) 3gpplteネットワークと代替無線ネットワークとの間のハンドオーバ手順の実行のための方法および装置
EP1767022A2 (en) Method and system for enhanced capacity and quality over wlan
EP3376797B1 (en) Method for searching for network and terminal
US10757185B2 (en) Method for peer-to-peer multimedia data sharing, electronic device and non-volatile computer readable medium
CN1714559A (zh) 后续以非侵入方式配置移动终端的方法、系统和计算机程序产品
KR20160138518A (ko) 로밍 네트워크 액세스 방법 및 장치
JP4283818B2 (ja) ローミング制御装置、移動通信端末、移動通信システム及びローミング制御方法
JP2014179719A (ja) 無線通信装置、使用アクセスポイントの優先順位を決定する方法、プログラムおよび記録媒体
KR20130141682A (ko) 정보의 대리 다운로드 또는 업로드를 위한 방법 및 시스템
WO2016180210A1 (zh) 一种接入wifi网络的方法及装置
JP2018032134A (ja) 建設機械管理システム
CN108605283A (zh) 基于位置或服务的无线电选择规则的确定
JP2018502473A (ja) 移動体デバイスにインストールされたアプリケーションのトラフィックをルーティングするための方法およびデバイス
CN112969208A (zh) 业务服务器的切换控制方法及装置、电子设备、存储介质
EP4024824A1 (en) Systems and methods for call session control function registration
EP2931000B1 (en) Wireless communication apparatus, wireless communication method, and wireless communication program
CN110138887B (zh) 一种数据处理方法、装置及存储介质
JP6488526B2 (ja) 通信装置、通信方法、通信プログラム、及びプロセッサ
JP6488528B2 (ja) 通信装置、通信方法、通信プログラム、及びプロセッサ
JP2007060590A (ja) 電子機器及び通信設定の自動選択方法
JP2012014445A (ja) 配信サーバ及びシステム並びに方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170925

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180613

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180626

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180827

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190129

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190208

R150 Certificate of patent or registration of utility model

Ref document number: 6488526

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees