(57)【要約】【課題】通信装置の消費電力を低減する。【解決手段】複数のプロトコルを用いることで他の通信装置と通信可能な通信装置は、該複数のプロトコルそれぞれについて、該他の通信装置とのコネクションを維持するための信号の送信間隔を取得し、該取得された送信間隔に基づいて、該コネクションが維持される範囲で該信号が送信されない期間が長くなるように、該複数のプロトコルそれぞれについて、該信号の新たな送信間隔を決定し、該決定された新たな送信間隔を該複数のプロトコルそれぞれに対して設定する。【選択図】図７
2017076866.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロトコルを用いることで他の通信装置と通信可能な通信装置であって、
前記複数のプロトコルそれぞれについて、前記他の通信装置とのコネクションを維持するための信号の送信間隔を取得する取得手段と、
前記取得された送信間隔に基づいて、前記コネクションが維持される範囲で前記信号が送信されない期間が長くなるように、前記複数のプロトコルそれぞれについて、前記信号の新たな送信間隔を決定する決定手段と、
前記決定された新たな送信間隔を前記複数のプロトコルそれぞれに対して設定する設定手段と、
を有することを特徴とする通信装置。
【請求項２】
前記決定手段は、前記複数のプロトコルのそれぞれについての前記信号の送信開始タイミングをさらに決定することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記決定手段は、前記複数のプロトコルのうち、前記信号のデータサイズが大きいプロトコルについての前記信号の送信開始タイミングが、他のプロトコルについての前記信号の送信開始タイミングよりも早くなるように前記信号の送信開始タイミングを決定することを特徴とする請求項２に記載の通信装置。
【請求項４】
前記決定手段は、前記複数のプロトコルそれぞれにおける前記信号の送信間隔のうちの最小の送信間隔の倍数となるように、前記新たな送信間隔を決定することを特徴とする請求項２または３に記載の通信装置。
【請求項５】
前記決定手段は、さらに、前記取得された送信間隔以下となるように、前記新たな送信間隔を決定することを特徴とする請求項４に記載の通信装置。
【請求項６】
前記決定手段は、さらに、前記取得された送信間隔以上となるように、前記新たな送信間隔を決定することを特徴とする請求項４に記載の通信装置。
【請求項７】
前記決定手段は、さらに、前記取得された送信間隔に近い値となるように、前記新たな送信間隔を決定することを特徴とする請求項４に記載の通信装置。
【請求項８】
前記取得手段により、前記複数のプロトコルそれぞれについて前記信号の送信間隔が取得されている状態で前記複数のプロトコルのうちのいずれかのプロトコルを用いた通信が切断された場合に、前記他の通信装置と再接続するかを判断する判断手段をさらに有し、
前記他の通信装置と再接続すると判断された場合、前記取得手段は、少なくとも前記切断されたプロトコルについて、前記信号の送信間隔を取得し、
前記決定手段は、前記取得された送信間隔に基づいて、前記信号の送信タイミングが同期するように、前記複数のプロトコルそれぞれについて、前記信号の新たな送信タイミングを決定し、
前記設定手段は、前記決定された新たな送信タイミングを前記複数のプロトコルそれぞれに対して設定することを特徴とする請求項１から７のいずれか１項に記載の通信装置
【請求項９】
前記判断手段は、ユーザの操作に基づいて、前記他の通信装置と再接続するかを判断することを特徴とする請求項８に記載の通信装置。
【請求項１０】
前記複数のプロトコルは、アプリケーション層の通信プロトコルおよびトランスポート層の通信プロトコルを含むことを特徴とする請求項１から９のいずれか１項に記載の通信装置。
【請求項１１】
前記信号は、KeepAliveであることを特徴とする請求項１から１０のいずれか１項に記載の通信装置。
【請求項１２】
複数のプロトコルを用いることで他の通信装置と通信可能な通信装置の制御方法であって、
前記複数のプロトコルそれぞれについて、前記他の通信装置とのコネクションを維持するための信号の送信間隔を取得する取得工程と、
前記取得された送信間隔に基づいて、前記コネクションが維持される範囲で前記信号が送信されない期間が長くなるように、前記複数のプロトコルそれぞれについて、前記信号の新たな送信間隔を決定する決定工程と、
前記決定された新たな送信間隔を前記複数のプロトコルそれぞれに対して設定する設定工程と、
を有することを特徴とする制御方法。
【請求項１３】
コンピュータを、請求項１から１１のいずれか１項に記載の通信装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置、その制御方法、及びプログラムに関する。
【背景技術】
【０００２】
近年、ウェブの発展により、ＨＴＴＰ／１．１の高速化が求められている。ＩＥＴＦ（Ｉｎｔｅｒｎｅｔ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｔａｓｋ  Ｆｏｒｃｅ）では、ＨＴＴＰ／１．１の次期の規格であるＨＴＴＰ／２が策定された。また、ＨＴＴＰは、パーソナルコンピュータやブラウザ以外の組込み機器においても広く利用されている。そのような組込み機器のうち、内蔵型電池を持つ組込み機器では、一般的に通信利用時には稼働時間が短くなる傾向にあった。
【０００３】
通信機器は、対向機器とコネクションを確立したのち、そのコネクションを維持するため、及び、対向機器との通信経路を維持するため、定期的にKeepAliveメッセージを送受信している。通信機器と対向機器との間の通信経路を制御しているルータは、アプリケーション層とトランスポート層それぞれにおいて、データの送受信があるかを判断し、一定期間データの送受信が無かった場合に、コネクションを切断することが一般的に知られている。なお、通信機器は、KeepAlive処理は、トランスポート層だけでなく、アプリケーション層でも行われる。また、各層のKeepAlive送信間隔や送信タイミングは、層毎で決定される。
【０００４】
一方、デバイスの処理負荷軽減の為に、複数のＣＰＵ（Central Processing Unit）で処理することが可能なデバイスの開発が行われている。このようなデバイスでは、例えば、通信機能処理を行うＣＰＵとアプリケーション処理を行うＣＰＵといったように、保持するＣＰＵごとに処理が割り当てられている。また、このようなデバイスでは、アプリケーション処理を行うＣＰＵが通信機能処理を行うＣＰＵに依存しているため、アプリケーション処理が動いている場合に、通信処理を行うＣＰＵも動いていなければならない。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開2014-175711号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
アプリケーション層とトランスポート層におけるKeepAliveの送信間隔は、各層毎で決定されるため、それぞれ異なる場合がある。この場合、複数のＣＰＵで処理するデバイスは、アプリケーション処理を行うＣＰＵが通信機能処理を行うＣＰＵに依存しているため、トランスポート層のKeepAliveを送信していないタイミングでも、アプリケーション層のKeepAliveを送信するために、トランスポート層における処理を行わなければならない。そのため、消費電力が大きくなってしまうという課題があった。また、１つのＣＰＵでアプリケーション処理と通信機能処理を行う場合においても、各処理におけるKeepAliveの送信タイミングのズレによって通信装置の消費電力が大きくなってしまう恐れがあった。
【０００７】
特許文献１では、通信機器内の複数のアプリケーションにおけるKeepAliveの送信タイミングを制御する技術が開示されている。しかしながら、特許文献１には、アプリケーション層とトランスポート層といった、異なる通信階層におけるKeepAliveの送信タイミングを制御することは行われていない。その結果、通信装置が通信不要な期間が短くなり、消費電力の低減が図れなかった。
【０００８】
本発明は。上記課題に鑑みてなされたものであり、通信装置の消費電力を低減することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するための一手段として、本発明の通信装置は以下の構成を有する。すなわち、複数のプロトコルを用いることで他の通信装置と通信可能な通信装置であって、前記複数のプロトコルそれぞれについて、前記他の通信装置とのコネクションを維持するための信号の送信間隔を取得する取得手段と、前記取得された送信間隔に基づいて、前記コネクションが維持される範囲で前記信号が送信されない期間が長くなるように、前記複数のプロトコルそれぞれについて、前記信号の新たな送信間隔を決定する決定手段と、前記決定された新たな送信間隔を前記複数のプロトコルそれぞれに対して設定する設定手段と、を有することを特徴とする。
【発明の効果】
【００１０】
通信装置の消費電力を低減できる。
【図面の簡単な説明】
【００１１】
【図１】実施形態１における通信装置１０１のシステム構成を示す図。
【図２】実施形態１における通信装置１０１のハードウェア構成を示す図。
【図３】アプリケーション制御部２０５に含まれるモジュールの構成を示す図。
【図４】プロトコル制御部２０６に含まれるモジュールの構成を示す図。
【図５】無線制御部２０７に含まれるモジュールの構成を示す図。
【図６】実施形態１における通信装置１０１の処理のフローチャートの一例を示す図。
【図７】実施形態１におけるシーケンスの一例を示す図。
【図８】実施形態１における通信装置１０１に保持される情報の一例を示す図。
【図９】実施形態２における通信装置１０１の処理のフローチャートの一例を示す図。
【図１０】実施形態２におけるシーケンスの一例を示す図。
【図１１】実施形態２における表示画面例を示す図。
【発明を実施するための形態】
【００１２】
以下、添付の図面を参照して、本発明をその実施形態に基づいて詳細に説明する。なお、以下の実施形態において示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。
【００１３】
［実施形態１］
本発明の例示的な実施形態である実施形態１を、図面を参照して説明する。図１は、実施形態１におけるシステム構成を示す図である。通信装置１０１は、ネットワーク１００に接続し、サーバ１０２と通信可能である。サーバ１０２は、ネットワーク１００に接続し、通信装置１０１と通信可能である。ネットワーク１００は、通信装置１０１とサーバ１０２が接続するネットワークである。本実施形態におけるネットワーク１００は、インターネット、WAN（Wide Area Network）、LAN（Local Area Network）、等の複合であっても実現できる。なお、通信装置１０１とサーバ１０２は、ネットワーク１００を介さずに、直接に接続することも可能である。例えば、通信装置１０１とサーバ１０２は、無線アドホックネットワークを用いることにより、直接接続が実現可能である。通信装置１０１は、サーバ１０２との間でコネクションが確立された後、該コネクションを維持するための信号であるKeepAliveを、一定間隔で送信する。
【００１４】
図２は、通信装置１０１のハードウェア構成を示す図である。バス２００は、電源供給部２０１から、アプリケーション制御部２０５、プロトコル制御部２０６、及び無線制御部２０７へ電源を供給するバスである。電源供給部２０１は、各モジュールに電源を供給する。電源供給部２０１は、特定のモジュールのみに電源を供給することが可能である。例えば、電源供給部２０１は、無線制御部２０７のみに電源を供給し、アプリケーション制御部２０５、プロトコル制御部２０６には電源を供給しないことが可能である。バス２０２は、アプリケーション制御部２０５とプロトコル制御部２０６を接続する。バス２０３は、プロトコル制御部２０６と無線制御部２０７を接続する。バス２０４は、アプリケーション制御部２０５とプロトコル制御部２０６から電源供給部２０１への電源供給を制御する。アプリケーション制御部２０５は、アプリケーションに対応した処理を行う。プロトコル制御部２０６は、通信プロトコルに対応した処理を行う。無線制御部２０７は、無線通信の処理を行う。アンテナ２０８は、無線通信を行うアンテナでありサーバ１０２と無線通信を行う。なお、本実施形態では、通信装置１０１は無線通信を行うものとして説明するが、有線通信を行うことも可能である。
【００１５】
本実施形態では、アプリケーション制御部２０５、プロトコル制御部２０６、無線制御部２０７それぞれがＣＰＵを持つような３ＣＰＵ構成となっている。３ＣＰＵ構成にすることで、アプリケーション制御部２０５、プロトコル制御部２０６、無線制御部２０７における処理が分離され、処理速度の向上や、アプリケーション制御部２０５、プロトコル制御部２０６の処理負荷が軽減可能となる。なお、本実施形態では３ＣＰＵ構成としているが、例えばアプリケーション制御部２０５とプロトコル制御部２０６の処理を１つのＣＰＵが行っても良いし、ＰＣの複数コアの構成にアプリケーション制御部２０５とプロトコル制御部２０６を割り当てる構成であってもよい。また、無線制御部２０７は、無線チップのような半導体チップであってもよい。前者の２ＣＰＵ構成によれば、処理負荷の大きい無線制御部２０７を分離できることにより、アプリケーション制御部２０５、プロトコル制御部２０６の処理負荷を軽減できる。また、後者の半導体チップによれば、無線制御部２０７における処理速度を向上することができる。
【００１６】
図３は、アプリケーション制御部２０５に含まれるモジュールの構成を示す図である。バス３００は、アプリケーション制御部２０５に接続するバスである。アプリケーションプロトコル制御部３０１は、アプリケーションプロトコルに関する制御を行う。表示部３０２は、各種表示を行い、例えば、エラーの表示を行う。操作部３０３は、ユーザの操作等に基づいて、アプリケーションの操作を行う。撮像部３０４は、静止画や動画の撮影を行う。取得部３０５は、第１のデータ保持部３０６、第２のデータ保持部４０３（図４）、第３のデータ保持部５０２（図５）からKeepAlive送信間隔を取得する。第１データ保持部３０６は、アプリケーションのKeepAlive送信間隔や送信開始タイミングを保持する。図８（ｂ）に、第１のデータ保持部３０６で保持される情報の一例を示す。図８（ｂ）に示される情報には、後述する処理により変更される前と後のKeepAlive送信間隔（sec）と、KeepAlive送信開始タイミングが含まれている。
【００１７】
決定部３０７は、取得部３０５で取得したKeepAlive送信間隔をもとに、プロトコル制御部２０６と無線制御部２０７が処理を行わない時間が長くなるように、KeepAlive送信間隔や送信開始タイミングを決定する。設定部３０８は、決定部３０７で決定したKeepAlive送信間隔や送信開始タイミングを、第１のデータ保持部３０６、第２のデータ保持部４０３、第３のデータ保持部５０２に設定する。再接続判断部３０９は、サーバ１０２との通信が切断された場合に、再接続を行うか判断を行う。第１の接続維持部３１０は、アプリケーションのKeepAlive送信を行う。接続維持情報保持部３１１は、取得部３０５で取得したKeepAlive送信間隔や、決定部３０７で決定したKeepAlive送信間隔や送信開始タイミングと保持する。図８（ａ）に、接続維持情報保持部３１１で保持される情報の一例を示す。図８（ａ）に含まれる情報には、各プロトコルについて、後述する処理により変更される前と後のKeepAlive送信間隔（sec）と、KeepAlive送信開始タイミングが含まれている。
【００１８】
図４は、プロトコル制御部２０６に含まれるモジュールの構成を示す図である。バス４００は、プロトコル制御部２０６に接続するモジュールのバスである。ＨＴＴＰ／２制御部４０１は、ＨＴＴＰ／２の処理を行う。本実施形態では、ＨＴＴＰ／２を利用するが、ＨＴＴＰ／１．１やＷｅｂｓｏｃｋｅｔといったＴＣＰベースのプロトコルでもＣｏＡＰなどのＵＤＰベースのプロトコルを利用してもよい。ＴＣＰ／ＩＰ制御部４０２は、ＴＣＰ／ＩＰの処理を行う。なお、本実施形態ではＴＣＰとするが、ＵＤＰであってもよい。第２のデータ保持部４０３は、ＨＴＴＰ／２のKeepAlive送信間隔や送信開始タイミングを保持する。第２のデータ保持部４０３で保持される情報の一例は、第１のデータ保持部３０６で保持される情報の一例と同様に図８（ｂ）に示される。第２の接続維持部４０４は、ＨＴＴＰ／２のKeepAlive送信を行う。第１の検知部４０５は、ＨＴＴＰ／２の切断の検知を行う。第１の通知部４０６は、ＨＴＴＰ／２の切断／再接続の通知を行う。
【００１９】
図５は、無線制御部２０７に含まれるモジュール構成を示す図である。バス５００は、無線制御部２０７に接続するモジュールのバスである。無線プロトコル制御部５０１は、無線プロトコルの処理を行う。第３のデータ保持部５０２は、ＴＣＰ／ＩＰのKeepAlive送信間隔や送信開始タイミングを保持する。第３のデータ保持部５０２で保持する情報の一例は、第１のデータ保持部３０６で保持される情報の一例と同様に図８（ｂ）に示される。第３の接続維持部５０３は、ＴＣＰ／ＩＰのKeepAlive送信を行う。第２の検知部５０４は、ＴＣＰ／ＩＰの切断の検知を行う。第２の通知部５０５は、ＴＣＰ／ＩＰの切断／再接続の通知を行う。
【００２０】
本実施形態における通信装置１０１は、上述したように、複数のＣＰＵを有する。各ＣＰＵ間で処理のやり取りをする際に、アプリケーション制御部２０５／プロトコル制御部２０６間と、プロトコル制御部２０６／無線制御部２０７間でＣＰＵ間の通信を行う。例えば、アプリケーション制御部２０５に含まれる取得部３０５がプロトコル制御部２０６に含まれる第２のデータ保持部４０３からKeepAlive送信間隔を取得する場合について記述する。取得部３０５がアプリケーション制御部２０５を経由し、アプリケーション制御部２０５とプロトコル制御部２０６間でＣＰＵ間通信を行い、第２のデータ保持部４０３からKeepAlive送信間隔を取得する。また、アプリケーション制御部２０５から無線制御部２０７のモジュールに制御を行う場合は、プロトコル制御部２０６を経由してＣＰＵ間の通信を行う。本実施形態では、アプリケーション制御部２０５から無線制御部２０７のモジュールに制御を行うためにプロトコル制御部２０６を経由しているが、アプリケーション制御部２０５から無線制御部２０７に直接ＣＰＵ間の通信を行う構成であっても良い。以降の記載では、ＣＰＵを跨いだ処理を「ＣＰＵ間通信を行い」と省略する。
【００２１】
図６は、ＨＴＴＰ／２を使用した通信において、通信装置１０１がサーバ１０２に対するKeepAliveの送信タイミング（KeepAlive送信間隔と送信開始タイミング）を決定する処理のフローチャートである。本フローは、通信装置１０１がサーバ１０２との接続／再接続を行う時に開始される。なお、本フローの開始時は、接続／再接続時だけでなく、所定の時間で行っても良いし、操作部３０３が所定の操作を行った時でも良いし、アクセスポイントや通信経路が切り替わった時でも良い。
【００２２】
取得部３０５は、第１のデータ保持部３０６からKeepAlive送信間隔を取得する。また、取得部３０５は、ＣＰＵ間通信を行い、第２のデータ保持部４０３と第３のデータ保持部５０２からKeepAlive送信間隔を取得する。取得部３０５は、取得したKeepAlive送信間隔を接続維持情報保持部３１１に保持する（Ｓ６０１）。本実施形態では、アプリケーション制御部２０５、プロトコル制御部２０６、無線制御部２０７が保持しているKeepAlive送信間隔を用いたが、１つのＣＰＵにて保持されている各通信プロトコルのKeepAlive送信間隔を用いてもよい。また、取得部３０５は、KeepAlive送信間隔を測定して取得しても良い。
【００２３】
決定部３０７は、取得部３０５で取得したKeepAlive送信間隔から、KeepAlive送信間隔と送信開始タイミングを決定する（Ｓ６０２）。本実施形態では、決定部３０７は、サーバ１０２とのコネクションが維持される時間の範囲で、プロトコル制御部２０６と無線制御部２０７が処理を行わない時間が長くなるように、KeepAlive送信間隔と送信開始タイミングを決定する。本実施形態では、決定部３０７は、取得部３０５で取得したKeepAlive送信間隔の最小のKeepAlive送信間隔の倍数かつ、変更前のKeepAlive送信間隔以下となるように、KeepAlive送信間隔を決定する。例えば、アプリケーションのKeepAlive送信間隔が３５（sec）、ＨＴＴＰ／２のKeepAlive送信間隔が２４（sec）、ＴＣＰ／ＩＰのKeepAlive送信間隔が１０（sec）である場合を考える。この場合、最小のKeepAlive送信間隔は、ＴＣＰ／ＩＰのKeepAlive送信間隔の１０（sec）であることから、決定部３０７は、アプリケーションのKeepAlive送信間隔を３０（sec）、ＨＴＴＰ／２のKeepAlive送信間隔を２０（sec）、ＴＣＰ／ＩＰのKeepAlive送信間隔を１０（sec）と変更することを決定する。これにより、各層におけるKeepAliveの送信タイミングの一部が一致するようになる。すなわち、決定部３０７は、各プロトコルでKeepAliveの送信タイミングの少なくとも一部が同期するように、複数のプロトコルそれぞれについて、KeepAliveの新たな送信間隔を決定する。
【００２４】
なお、決定部３０７は、上記の方法以外の方法を利用してKeepAlive送信間隔を決定してもよい。例えば、決定部３０７は、ＨＴＴＰ／２のKeepAlive送信間隔とＴＣＰ／ＩＰのKeepAlive送信間隔を最小のKeepAlive送信間隔に合わせてもよい。さらに、本実施形態では、変更後のKeepAlive送信間隔を、変更前のKeepAlive送信間隔以下となるように決定しているが、変更前のKeepAlive送信間隔以上となるように決定してもよい。例えば、変更前のアプリケーションのKeepAlive送信間隔が３５（sec）だった場合に、決定部３０７は、変更後の送信間隔を４０（sec）と決定してもよい。KeepAlive送信間隔が長い場合は、接続が切れる可能性が高くなるので、決定したKeepAlive送信間隔を設定後に接続が切れなかった場合に、該送信間隔を本設定するようにしてもよい。それにより、無駄なKeepAlive送信を省くことができ、消費電力を低減できる。また、決定部３０７は、取得部３０５で取得したKeepAlive送信間隔の最小のKeepAlive送信間隔の倍数かつ、変更前のKeepAlive送信間隔に近くなるように、KeepAlive送信間隔を決定してもよい。例えば、アプリケーションのKeepAlive送信間隔が３５（sec）、ＨＴＴＰ／２のKeepAlive送信間隔が２４（sec）、ＴＣＰ／ＩＰのKeepAlive送信間隔が１０（sec）である場合、決定部３０７は、アプリケーションのKeepAlive送信間隔を４０（sec）、ＨＴＴＰ／２のKeepAlive送信間隔を２０（sec）、ＴＣＰ／ＩＰのKeepAlive送信間隔を１０（sec）と変更することを決定する。
【００２５】
本実施形態において、決定部３０７は、KeepAlive送信開始タイミングについて、ＨＴＴＰ／２のKeepAlive送信開始タイミングとＴＣＰ／ＩＰのKeepAlive送信開始タイミングを同じ時刻にし、アプリケーションのKeepAlive送信開始タイミングを該時刻よりも所定時間早くするように決定する。アプリケーションのKeepAlive送信開始タイミングを所定時間早くする理由は、アプリケーションのKeepAliveはＴＣＰ／ＩＰのKeepAliveよりも一般的にデータサイズが大きいため、ＴＣＰ／ＩＰのKeepAliveのKeepAlive送受信時間に比べ遅延が発生するからである。なお、本実施形態では、決定部３０７は、アプリケーションのKeepAlive送信開始タイミングを所定時間早くしているが、同時刻にしても良い。また、決定部３０７は、優先度を用いてKeepAlive送信順序を制御しても良い。
【００２６】
なお、決定部３０７は、KeepAliveに関する情報（送信間隔および送信開始タイミング）を、KeepAliveの待受け時間を考慮して決定してもよい。インターネットを介した通信の場合、１００ｍｓ以上の遅延が発生することが知られている。接続相手によって遅延を考慮することで、受信時間外になるKeepAliveを取り逃すことを低減する。さらに、決定部３０７は、通信の揺らぎの値から遅延の上限値と下限値を想定してKeepAliveに関する情報を決定してもよい。また、本実施形態では、通信装置１０１の対向機器となるサーバ１０２を１台にしているが、通信装置１０１は、複数の接続先の装置とのKeepAlive送信間隔と送信開始タイミングを調整してもよい。これにより、更なる消費電力の低減を行うことができる。
【００２７】
次に、設定部３０８は、決定部３０７にて決定したKeepAlive送信間隔と送信開始タイミングを第１のデータ保持部３０６に設定する。また、設定部３０８は、ＣＰＵ間通信を行い、第２のデータ保持部４０３および第３のデータ保持部５０２に設定する（Ｓ６０３）。
【００２８】
図７はＨＴＴＰ／２を使用した通信において、通信装置１０１が通信判断を行い、サーバ１０２に接続維持を行うためのシーケンスを示す図である。Ｍ７０１において、通信装置１０１は、サーバ１０２とＨＴＴＰ／２通信を開始し、コネクションを確立する。具体的には、アプリケーションプロトコル制御部３０１が、ＣＰＵ間通信を行い、ＨＴＴＰ／２制御部４０１にサーバ１０２とのコネクション生成を指示し、ＨＴＴＰ／２制御部４０１はＴＣＰ／ＩＰ制御部４０２を介し、ＣＰＵ間通信を行い、無線制御部２０７を用いてサーバ１０２とパケットの送受信を行う。
【００２９】
Ｍ７０２において、取得部３０５は、第１のデータ保持部３０６からKeepAlive送信間隔を取得する（Ｓ６０１）。Ｍ７０３において、取得部３０５は、ＣＰＵ間通信を行い、第２のデータ保持部４０３からKeepAlive送信間隔を取得する（Ｓ６０１）。Ｍ７０４において、取得部３０５は、ＣＰＵ間通信を行い、第３のデータ保持部５０２からKeepAlive送信間隔を取得する（Ｓ６０１）。なお、Ｍ７０２〜Ｍ７０４の順序は変更可能である。
【００３０】
Ｍ７０５において、決定部３０７は、KeepAlive送信間隔と送信開始タイミングを決定する（Ｓ６０２）。Ｍ７０６において、設定部３０８は、KeepAlive送信間隔と送信開始タイミングを第１のデータ保持部３０６に設定する（Ｓ６０３）。Ｍ７０７において、設定部３０８は、ＣＰＵ間通信を行い、KeepAlive送信間隔と送信開始タイミングを第２のデータ保持部４０３に設定する（Ｓ６０３）。Ｍ７０８において、設定部３０８は、ＣＰＵ間通信を行い、KeepAlive送信間隔と送信開始タイミングを第１のデータ保持部５０２に設定する（Ｓ６０３）。なお、Ｍ７０６〜Ｍ７０８の順序は変更可能である。
【００３１】
Ｍ７０９において、第１の接続維持部３１０は、サーバ１０２に対してアプリケーションのKeepAlive送信を行う。具体的には、まず、第１の接続維持部３１０がＣＰＵ間通信を行い、ＨＴＴＰ／２制御部４０１にKeepAliveメッセージの生成を指示する。本実施形態におけるアプリケーションのKeepAliveメッセージは、アプリケーションデータを含むメッセージのことである。例えば、ＨＴＴＰ／２のＨＥＡＤＥＲフレームを用いてＨＴＴＰのＧＥＴメソッドやＨＥＡＤメッセージといったような、サーバ１０２の状態が変わらないようなKeepAliveメッセージを用いる。ＨＴＴＰ／２制御部４０１は、ＴＣＰ／ＩＰ制御部４０２を介し、ＣＰＵ間通信を行い、無線制御部２０７を用いてサーバ１０２とパケットの送受信を行う。通信装置１０１は、アプリケーション制御部２０５のKeepAliveメッセージにアプリケーションデータを含めることにより、所定のルータがアプリケーションデータのやり取りを行っていないと接続を切ってしまうという問題の解消が可能となる。
【００３２】
また、本実施形態では、第１の接続維持部３１０は、アプリケーション制御部２０５のKeepAliveメッセージを他のKeepAliveメッセージよりも所定の時間早く送信する。アプリケーション制御部２０５のKeepAliveメッセージは、他のKeepAliveメッセージよりもデータサイズが大きく、KeepAliveメッセージの送受信時間がかかる。アプリケーション制御部２０５のKeepAliveメッセージが所定の時間早く送信されることで、プロトコル制御部２０６と無線制御部２０７の処理遅延を解消することができ、消費電力を小さくすることが可能である。なお、本実施形態ではアプリケーション制御部２０５のKeepAliveメッセージの送信を所定時間早くしているが、プロトコル制御部２０６と無線制御部２０７のKeepAliveメッセージの送信と同時刻であっても良い。
【００３３】
Ｍ７１０において、第２の接続維持部４０４は、サーバ１０２にＨＴＴＰ／２のKeepAlive送信を行う。具体的には、まず、第２の接続維持部４０４がＨＴＴＰ／２制御部４０１にKeepAliveメッセージの生成を指示する。本実施形態におけるアプリケーションのKeepAliveメッセージは、ＨＴＴＰ／２のＰＩＮＧフレームのことである。ＨＴＴＰ／２制御部４０１は、ＴＣＰ／ＩＰ制御部４０２を介し、ＣＰＵ間通信を行い、無線制御部２０７を用いてサーバ１０２とパケットの送受信を行う。なお、本実施形態ではＰＩＮＧフレームを送信しているが、ＨＥＡＤＥＲフレームであっても良い。また、本実施形態では、第２の接続維持部４０４は、ＨＴＴＰ／２のKeepAlive送信をしているが、ＨＴＴＰ／２のKeepAlive送信間隔よりアプリケーションのKeepAlive送信間隔が長い場合は、ＨＴＴＰ／２のKeepAlive送信を行わなくても良い。Ｍ７１１において、第３の接続維持部５０３はサーバ１０２にＴＣＰ／ＩＰのKeepAlive送信を行う。なお、Ｍ７１０とＭ７１１の順序は変更可能である。
【００３４】
本実施形態では、決定部３０７で決定したKeepAlive送信間隔を用いてKeepAliveメッセージを送受信しているが、決定部３０７で決定したKeepAlive送信間隔より小さな間隔で送信してもよい。例えば、ネットワークの状況によって、パケットのバーストロスが発生する場合がある。この時、通信装置１０１は、パケットロスが発生しているか否かを判断し、パケットロスが発生していた場合は、決定部３０７で決定したKeepAlive送信間隔よりも短い時間でKeepAliveメッセージを送受信しても良い。これによって、接続がより維持しやすくなるという効果がある。
【００３５】
また、本実施形態ではKeepAlive送信間隔の取得、決定、設定をアプリケーション制御部２０５のＣＰＵにて行っているが、これに限らず、プロトコル制御部２０６や無線制御部２０７で行っても良い。
【００３６】
以上、本実施形態における通信装置１０１は、サーバ１０２とのコネクション生成後、該コネクションの維持のためのKeepAlive通信を行う時に、アプリケーション、ＨＴＴＰ／２、ＴＣＰ／ＩＰのKeepAlive送信間隔と送信開始タイミングを決定する。これにより、KeepAlive時におけるプロトコル制御部２０６と無線制御部２０７が処理していない時間が長くなり、消費電力を小さくすることが可能とある。
【００３７】
実施形態のＨＴＴＰ／２は、例えば、ＷｅｂＳｏｃｋｅｔ、ＸＭＰＰ、ＲＴＳＰといった通信プロトコルであっても実現できる。ＸＭＰＰやＲＴＳＰのような、KeepAliveメッセージに相当するメッセージがない場合には、アプリケーションデータをKeepAliveメッセージとして送信する必要がある。その際のアプリケーションデータは、ＸＭＰＰであれば所定のメッセージ、ＲＴＳＰであれば、ＧＥＴメソッドのメッセージといった、サーバ１０２の状態が変わらないようなメッセージを用いることで、アプリケーション制御部２０５の通信を維持することができる。本実施形態のKeepAlive送信間隔は通信装置１０１の状態によってその値を変更しても良い。例えば、ＡＣ電源に繋いでいるような安定した電力が供給されている場合は、KeepAlive送信間隔を短くすることで、サーバ１０２との通信を維持しやすくすることが可能である。また、通信装置１０１の電池の残量が少ない場合は、KeepAlive送信間隔を長くすることで消費電力を小さくすることが可能である。
【００３８】
［実施形態２］
本発明の例示的な実施形態である実施形態２を、図面を参照して説明する。システム構成及び通信装置１０１の構成は、実施形態１で説明した構成と同様であるため、説明を省略する。
【００３９】
図９は、ＨＴＴＰ／２を使用した通信において、所定のプロトコルの通信が切断された際に、通信装置１０１が再接続を行ない、サーバ１０２とのKeepAlive送信間隔と送信開始タイミングを再決定する処理のフローチャートである。このフローは、第１の検知部４０５にてＨＴＴＰ／２コネクションの切断、もしくは第２の検知部５０４にてＴＣＰ／ＩＰの切断が検知された時に開始する。第１の検知部４０５にてＨＴＴＰ／２コネクションの切断が検知された場合、第１の通知部４０６は、ＣＰＵ間通信を行い、アプリケーションプロトコル制御部３０１に切断の通知を行う（Ｓ９０１）。第２の検知部５０４にてＴＣＰ／ＩＰコネクションの切断が検知された場合、第２の通知部５０５は、ＣＰＵ間通信を行い、ＴＣＰ／ＩＰ制御部４０２、ＨＴＴＰ／２制御部４０１を介し、アプリケーションプロトコル制御部３０１に切断の通知を行う。
【００４０】
再接続判断部３０９は、第１の通知部４０６もしくは第２の検知部５０４からの切断の通知をもとに、表示部３０２にて、ＨＴＴＰ／２またはＴＣＰ／ＩＰの再接続を行うか否かをユーザに判断させるための表示制御を行う。図１１（ａ）に、再接続を行うか否かをユーザに判断させるために再接続判断部３０９により表示制御された表示部３０２における画面例を示す。ユーザにより再接続するための操作が一定時間行われなかった場合、もしくは、再接続しないことを示す操作が行われた場合、再接続判断部３０９は、再接続を待たないと判断する（Ｓ９０２のＮｏ）。ユーザにより再接続するための操作が行われた場合、再接続判断部３０９は再接続を待つと判断する（Ｓ９０２のＹｅｓ）。この場合、再接続判断部３０９は、通信装置１０１とサーバ１０２間の再接続を確認するために待機する（Ｓ９０３）。
【００４１】
再接続判断部３０９は、第１の通知部４０６もしくは第２の検知部５０４から所定時間内に再接続の通知を受けることができたか否かによって、通信装置１０１とサーバ１０２間で再接続できたか否かを判断する（Ｓ９０４）。再接続判断部３０９は、所定時間内に再接続の通知を受けた場合、通信装置１０１とサーバ１０２間で再接続できたと判断する（Ｓ９０４のＹｅｓ）。この場合、通信装置１０１は、KeepAlive送信間隔と送信開始タイミングを再設定する為に、実施形態１において説明した図６の処理を実行する（Ｓ９０５）。一方、再接続判断部３０９は、所定時間内に再接続の通知を受けなかった場合、通信装置１０１とサーバ間で再接続できなかったと判断し（Ｓ９０４のＮｏ）、表示部３０２にて、エラー画面を表示するための制御を行い（Ｓ９０６）、処理は終了する。図１１（ｃ）に、再接続判断部３０９により表示制御された表示部３０２におけるエラー画面例を示す。
【００４２】
なお、本実施形態では、再接続判断部３０９は、表示部３０２にて図１１（ａ）と図１１（ｃ）に例示する画面を表示するための制御を行うが、このような表示制御を行わなくてもよい。また、再接続判断部３０９は、再接続を行うか否かを、ユーザからの操作以外の方法により判断してもよい。また、再接続判断部３０９は、図１１（ａ）に例示する画面を表示するための制御を行った後、表示部３０２に対して、再接続時のKeepAlive送信間隔を短くするか否かをユーザに判断させるための表示制御を行ってもよい。図１１（ｂ）に、再接続時のKeepAlive送信間隔を短くするか否かをユーザに判断させるために再接続判断部３０９により表示制御された表示部３０２における画面例を示す。
再接続を行うか否かをユーザに判断させるために再接続判断部３０９により表示制御された表示部３０２における画面例を示す。ユーザによりKeepAlive送信間隔（図１１（ｂ）の「接続維持間隔」）を短くするための操作が行われた場合、再接続時の通信が維持される可能性が高くなる。
【００４３】
図１０は、ＨＴＴＰ／２を使用した通信において、ＴＣＰの通信が切断された際に、再接続を行ない、通信装置１０１がサーバ１０２とのKeepAlive送信間隔と送信開始タイミングを再決定するためのシーケンスを示す図である。本シーケンス図は、ＴＣＰ／ＩＰの通信が切断された場合を示すが、ＨＴＴＰ／２の通信が切断された場合のシーケンスも同様である。
【００４４】
Ｍ１００１において、第２の検知部５０４は、ＴＣＰ／ＩＰコネクションの切断を検知する。Ｍ１００２において、第２の通知部５０５は、ＣＰＵ間通信を行い、ＴＣＰ／ＩＰ制御部４０２、ＨＴＴＰ／２制御部４０１を介し、アプリケーションプロトコル制御部３０１に切断の通知を行う（Ｓ９０１）。再接続判断部３０９は、ユーザにより再接続するための操作が行われた場合、再接続処理が行われるまで所定時間待機する（Ｓ９０２のＹｅｓ、Ｓ９０３）。
【００４５】
Ｍ１００３において、ＴＣＰ／ＩＰ制御部４０２は、ＣＰＵ間通信を行い、無線制御部２０７を用いてサーバ１０２とコネクションの生成を行う。Ｍ１００４において、第２の通知部５０５は、ＣＰＵ間通信を行い、ＴＣＰ／ＩＰ制御部４０２、ＨＴＴＰ／２制御部４０１を介し、アプリケーションプロトコル制御部３０１に再接続の通知を行う。再接続判断部３０９は、この通知をもとに、再接続できたことを判断し（Ｓ９０４でＹｅｓ）、通信装置１０１は、実施形態１において説明した図６の処理を行う。Ｍ１００５において、取得部３０５は、ＣＰＵ間通信を行い、第３のデータ保持部５０２からKeepAlive送信間隔を取得する（Ｓ６０１）。また、このとき、取得部３０５は、アプリケーションのKeepAlive送信間隔とＨＴＴＰ／２のKeepAlive送信間隔を取得してもよい。
【００４６】
Ｍ１００６において、決定部３０７は、KeepAlive送信間隔と送信開始タイミングを決定する（Ｓ６０２）。Ｍ１００７において、設定部３０８は、KeepAlive送信間隔と送信開始タイミングを第１のデータ保持部３０６に設定する（Ｓ６０３）。Ｍ１００８において、設定部３０８は、ＣＰＵ間通信を行い、KeepAlive送信間隔と送信開始タイミングを第２のデータ保持部４０３に設定する（Ｓ６０３）。Ｍ１００９において、設定部３０８は、ＣＰＵ間通信を行い、KeepAlive送信間隔と送信開始タイミングを第１のデータ保持部５０２に設定する（Ｓ６０３）。なお、Ｍ１００７〜Ｍ１００９の順序は変更可能である。
【００４７】
Ｍ１０１０において、第１の接続維持部３１０は、サーバ１０２にアプリケーションのKeepAlive送信を行う。具体的には、第１の接続維持部３１０が、ＣＰＵ間通信を行い、ＨＴＴＰ／２制御部４０１にKeepAliveメッセージの生成を指示する。ＨＴＴＰ／２制御部４０１は、ＴＣＰ／ＩＰ制御部４０２を介し、ＣＰＵ間通信を行い、無線制御部２０７を用いてサーバ１０２とパケットの送受信を行う。
【００４８】
Ｍ１０１１において、第２の接続維持部４０４はサーバ１０２にＨＴＴＰ／２のKeepAlive送信を行う。具体的には、第２の接続維持部４０４がＨＴＴＰ／２制御部４０１にKeepAliveメッセージの生成を指示する。ＨＴＴＰ／２制御部４０１はＴＣＰ／ＩＰ制御部４０２を介し、ＣＰＵ間通信を行い、無線制御部２０７を用いてサーバ１０２とパケットの送受信を行う。Ｍ１０１２において、第３の接続維持部５０３はサーバ１０２にＴＣＰ／ＩＰのKeepAlive送信を行う。なお、Ｍ１０１１とＭ１０１２の順序は変更可能である。
【００４９】
続いて、ＴＣＰの通信が切断された際に再接続できなかった場合のシーケンスを示す。Ｍ１０１３において、第２の検知部５０４は、ＴＣＰ／ＩＰコネクションの切断を検知する。Ｍ１０１４において、第２の通知部５０５は、ＣＰＵ間通信を行い、ＴＣＰ／ＩＰ制御部４０２、ＨＴＴＰ／２制御部４０１を介し、アプリケーションプロトコル制御部３０１に切断の通知を行う（Ｓ９０１）。再接続判断部３０９は、ユーザにより再接続するための操作が行われた場合、再接続処理が行われるまで所定時間待機する（Ｓ９０２のＹｅｓ、Ｓ９０３）。再接続判断部３０９は、所定時間内に再接続の通知を受けないことから、再接続できなかったと判断する（Ｓ９０４でＮｏ）。Ｍ１０１５において、アプリケーションプロトコル制御部３０１はサーバ１０２とのコネクションを削除し、Ｍ１０１６において、再接続判断部３０９は、表示部３０２にて図１１（ｃ）に例示するエラー画面を表示するための制御を行う。
【００５０】
このように、本実施形態における通信装置１０１は、サーバ１０２とのコネクションを再生成した際に、通信維持を行う時に、アプリケーション、ＨＴＴＰ／２、ＴＣＰ／ＩＰのKeepAlive送信間隔と送信開始時間を再決定する。これにより、再接続時にKeepAliveタイミングが変わることによる、消費電力の増加を抑えることが可能である。
【００５１】
［その他の実施形態］
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００５２】
１０１  通信装置、１０２  サーバ、２０５  アプリケーション制御部、２０６  プロトコル制御部、２０７  無線通信制御部、３０５  取得部、３０７  決定部
【図１】
2017076866.tif 000003
【図２】
2017076866.tif 000004
【図３】
2017076866.tif 000005
【図４】
2017076866.tif 000006
【図５】
2017076866.tif 000007
【図６】
2017076866.tif 000008
【図７】
2017076866.tif 000009
【図８】
2017076866.tif 000010
【図９】
2017076866.tif 000011
【図１０】
2017076866.tif 000012
【図１１】
2017076866.tif 000013