(57)【要約】【課題】通信ネットワークの状況を考慮したメッセージ到達率の高いメッセージ中継装置及び方法を提供する。【解決手段】アプリケーション２０とデバイス３０との間に介在するメッセージ中継装置１００は、デバイス３０との間の通信可否状態を判定するデバイス通信状態判定部１３１と、前記通信可否状態に基づきネットワーク状態を推定するネットワーク状態推定部１３３と、ネットワーク状態に基づきアプリケーションメッセージの転送可否状態を判定し、転送不可の場合にアプリケーションメッセージをバッファリングするメッセージ処理部１１０とを備えた。【選択図】図２
2020136859.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションが端末宛に送信したアプリケーションメッセージを受信し、受信したアプリケーションメッセージを宛先の端末に転送するメッセージ中継装置であって、
端末との間の通信可否状態を判定する通信可否状態判定部と、
前記通信可否状態に基づき端末とメッセージ中継装置との間のネットワーク状態を推定するネットワーク状態推定部と、
アプリケーションから受信したアプリケーションメッセージの宛先となる端末について推定されたネットワーク状態に基づきアプリケーションメッセージの転送可否状態を判定し、転送不可の場合にアプリケーションメッセージをバッファリングするメッセージ処理部とを備えた
ことを特徴とするメッセージ中継装置。
【請求項２】
前記通信可否状態判定部は、端末に対して状態確認メッセージに送信し、当該状態確認メッセージに対する端末からの応答メッセージに基づき、端末との間の通信可否状態を判定する
ことを特徴とする請求項１記載のメッセージ中継装置。
【請求項３】
前記通信可否状態判定部は、アプリケーションメッセージの転送に用いられるメッセージ中継装置と端末との間のコネクションの状態に基づき、端末との間の通信可否状態を判定する
ことを特徴とする請求項１又は２記載のメッセージ中継装置。
【請求項４】
前記通信可否状態判定部は、メッセージ中継装置と端末との間の通信経路を形成するネットワークの管理装置から取得した端末の接続状態情報に基づき、端末との間の通信可否状態を判定する
ことを特徴とする請求項１乃至３何れか１項記載のメッセージ中継装置。
【請求項５】
前記メッセージ処理部は、端末の通信可否状態の経時的な変化に関する現在の状況に基づきアプリケーションメッセージの転送可否状態を判定し、
前記ネットワーク状態推定部は、前記転送可否状態の判定処理で用いられる端末の通信可否状態の経時的な変化に関する情報を算出してネットワーク状態とする
ことを特徴とする請求項１乃至４何れか１項記載のメッセージ中継装置。
【請求項６】
前記メッセージ処理部は、端末が通信可能状態である場合に前回の通信不可状態となった時からの経過時間と前記ネットワーク状態に基づきアプリケーションメッセージの転送可否状態を判定する
ことを特徴とする請求項５記載のメッセージ中継装置。
【請求項７】
前記ネットワーク状態推定部は、端末が通信不可状態である複数の期間の間の時間間隔に基づき、ネットワーク状態として閾値を算出し、
前記メッセージ処理部は、前記経過時間と前記閾値とを比較することによりアプリケーションメッセージの転送可否状態を判定する
ことを特徴とする請求項６記載のメッセージ中継装置。
【請求項８】
ネットワークに配備されたメッセージ中継装置が、アプリケーションが端末宛に送信したアプリケーションメッセージを受信し、受信したアプリケーションメッセージを宛先の端末に転送するメッセージ中継方法であって、
通信可否状態判定部が、端末との間の通信可否状態を判定するステップと、
ネットワーク状態推定部が、前記通信可否状態に基づき端末とメッセージ中継装置との間のネットワーク状態を推定するステップと、
メッセージ処理部が、アプリケーションから受信したアプリケーションメッセージの宛先となる端末について推定されたネットワーク状態に基づきアプリケーションメッセージの転送可否状態を判定し、転送不可の場合にアプリケーションメッセージをバッファリングするステップとを備えた
ことを特徴とするメッセージ中継方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クラウド等のサーバ上に構築されたアプリケーションからデバイスにメッセージを送信するサーバ−クライアントモデルのような通信形態において、デバイスへのメッセージの到達性を向上させるためのメッセージ中継装置及び方法に関する。
【背景技術】
【０００２】
ＩｏＴ（Internet of Things）技術の進展に伴い、通信ネットワークを経由して様々なアプリケーションと通信することによってデバイスを制御する、ＩｏＴサービスが増えてきた。
【０００３】
このようなＩｏＴサービスでは、移動ロボット等のようにデバイスが移動する場合、無線区間の通信ネットワークが不安定になる可能性が高いため、その状態によっては、メッセージをデバイスに到達させることができない。
【０００４】
メッセージの到達性を向上させることを目的とした技術としては特許文献１に記載された技術が提案されている。特許文献１に記載された技術は、クラウド等のサーバに構築されたアプリケーションからデバイスにメッセージを送信するサーバ−クライアントモデルのような通信形態のＩｏＴサービスにおいて、アプリケーションからデバイスにメッセージが送信された際にデバイスが通信不可能な状態だった場合、通信ネットワークに設けた通信ノード装置が、当該メッセージを一時的に保持し、デバイスが通信可能な状態に遷移した際に転送するものである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１７−４１７１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
デバイスが通信不可能な状態になる状況は、デバイスが通信可能な状態と通信不可能な状態を繰り返す通信ネットワークの不安定な環境にデバイスが存在している可能性が高い。そのため、通信可能な状態に遷移したとしても、即時に、通信不可能な状態に再び遷移する可能性が高い。このような環境でメッセージを転送しても、メッセージを到達させることができない。
【０００７】
上記特許文献１に記載された技術は、デバイスが通信可能な状態に遷移したことを起因に、一時的に保持したメッセージを転送しているため、通信ネットワークの不安定な状況まで考慮できていない。
【０００８】
このように、メッセージの到達性を向上させるためには、デバイスの通信可不可の状態だけでなく、通信ネットワークが不安定な環境か否かを考慮することが必要である。
【０００９】
本発明は上記事情に鑑みてなされたものであり、その目的とするところは、通信ネットワークの状況を考慮したメッセージ到達率の高いメッセージ中継装置及び方法を提供することにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、本願発明は、アプリケーションが端末宛に送信したアプリケーションメッセージを受信し、受信したアプリケーションメッセージを宛先の端末に転送するメッセージ中継装置であって、端末との間の通信可否状態を判定する通信可否状態判定部と、前記通信可否状態に基づき端末とメッセージ中継装置との間のネットワーク状態を推定するネットワーク状態推定部と、アプリケーションから受信したアプリケーションメッセージの宛先となる端末について推定されたネットワーク状態に基づきアプリケーションメッセージの転送可否状態を判定し、転送不可の場合にアプリケーションメッセージをバッファリングするメッセージ処理部とを備えたことを特徴とする。
【発明の効果】
【００１１】
本発明によれば、通信ネットワークの状態を考慮してメッセージの転送可否を決定するので、メッセージ転送の失敗を抑制することができ、メッセージの到達性を向上できる。また、通信ネットワークの状態を考慮してメッセージの転送可否を決定するので、メッセージ転送の失敗によるメッセージの無駄な再送を抑制することができ、通信ネットワークの帯域等のリソースを効率的に使用することができる。
【図面の簡単な説明】
【００１２】
【図１】一実施の形態に係るメッセージ中継システムの全体構成図
【図２】メッセージ中継装置の機能ブロック図
【図３】メッセージ転送フローの一例
【図４】デバイスの通信状態判定フローの一例
【図５】デバイスの通信状態判定フローの一例
【図６】デバイスの通信状態判定フローの一例
【図７】通信ネットワークの状態推定フローの一例
【図８】実施例に係るメッセージ中継システムの全体構成図
【図９】通信ネットワークの状態変化のイメージを説明する図
【発明を実施するための形態】
【００１３】
本発明のメッセージ中継システムの概要について説明する。本発明では、サーバ−クライアントモデルのような通信形態において、ネットワークに配置したメッセージ中継装置が、予めメッセージの通信経路である通信ネットワークの状態を推定しておき、サーバに構築されたアプリケーションからクライアントであるデバイスにメッセージが送信された際に、前記推定結果に基づいて当該メッセージを転送する又はバッファリングするというものである。
【００１４】
次に、本発明の一実施の形態に係るメッセージ中継システムについて図１を参照して説明する。図１は本発明の実施の形態に係るメッセージ中継システムの全体構成図である。
【００１５】
メッセージ中継システムは、図１に示すように、１以上のアプリケーション２０と、１以上のデバイス３０とが通信ネットワーク１０に通信可能に接続している。通信ネットワーク１０には、本実施の形態に係るメッセージ中継装置１００が配備されている。
【００１６】
アプリケーション２０は、デバイス３０に対してメッセージを送信するアプリケーションである。アプリケーション２０の実装形態は不問であり、物理サーバ上に実装されていてもよいし、仮想サーバ上に実装されていてもよい。典型的な例では、アプリケーション２０はインターネット上のクラウドサーバに実装される。他の例としては、アプリケーション２０は回線事業者網のデータセンタや基地局に配備されたサーバに実装される。アプリケーション２０は、サービス事業者によって提供される。なお、デバイス３０と通信するアプリケーション２０はメッセージ中継システム上で単一とは限らない点に留意されたい。
【００１７】
アプリケーション２０は、ＯＳＩ（Open Systems Interconnection）参照モデルの第７層であるアプリケーション層におけるアプリケーションである。すなわち、アプリケーション２０からデバイス３０に送られるメッセージはアプリケーション層におけるメッセージである。なお、以下の説明では、アプリケーション２０からデバイス３０に送られるメッセージを「アプリケーションメッセージ」と呼ぶ。アプリケーションメッセージの送信に用いるプロトコルは不問であり、例えば、ＣｏＡＰ（Constrained Application Protocol）やＭＱＴＴ（Message Queuing Telemetry Transport）といった軽量なＭ２Ｍ（Machine to Machine）向けプロトコルや、ＨＴＴＰ（HyperText Transfer Protocol）やＨＴＴＰ／２等の高機能プロトコルなどが挙げられる。アプリケーション２０が実装されたサーバは、アプリケーションメッセージの送信に必要なアプリケーション層より下位の層におけるプロトコルスタックや装置が実装されている。本実施の形態では、アプリケーションメッセージはＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）を用いて送信されることを例示するが、他のプロコトルスタックを用いてもよい。また、本実施の形態では、アプリケーションメッセージの送信は、トランスポート層においてコネクションを形成してデータ送信を行うコネクション型プロトコルであるＴＣＰを用いる。なお、ＵＤＰ（User Datagram Protocol）などコネクションレス型プロトコルであっても本発明を実施できる。
【００１８】
通信ネットワーク１０は、アプリケーション２０とデバイス３０との間の通信経路を形成する。通信ネットワーク１０は、複数のネットワークから構成することができる。本発明では、メッセージ中継装置１００とデバイス３０との間の通信経路に無線通信区間を含むことを想定する。典型的な例では、デバイス３０のアクセス回線として無線通信区間を含む。なお、通信ネットワーク１０が無線通信区間を含んでいなくても本発明を適用できる。通信ネットワーク１０においては、アプリケーションメッセージの送信に必要なトランスポーション層以下のプロトコルスタックをサポートする。本実施の形態では、ＴＣＰ／ＩＰのプロトコルスタックをサポートする。
【００１９】
デバイス３０は、アプリケーション２０からアプリケーションメッセージを受信し、このアプリケーションメッセージに基づき所定の動作を行う装置である。デバイス３０は、アプリケーション２０及び通信ネットワーク１０と対応して、アプリケーションメッセージの受信のためのアプリケーション層におけるプロコトル、及び、その下位の層におけるプロトコルスタックをサポートする。本実施の形態では、ＴＣＰ／ＩＰのプロトコルスタックをサポートする。なお、デバイス３０はメッセージ中継システム上で単一とは限らない点に留意されたい。
【００２０】
メッセージ中継装置１００は、アプリケーション２０からデバイス３０に向けて送信されたアプリケーションメッセージを受信し、このアプリケーションメッセージをデバイス３０に転送する機能を有する。以下、メッセージ中継装置１００の詳細について図２を参照して説明する。図２はメッセージ中継装置の機能ブロック図である。
【００２１】
メッセージ中継装置１００は、図２に示すように、通信機能部１１０と、メッセージ処理部１２０と、状態確認部１３０とを備えている。ここで、メッセージ中継装置１００の実装形態は不問であり、１つのノードとして実装されている必要はない。すなわち、図２では、メッセージ中継装置１００は説明の便宜上３つの機能部が設けられているが、他の機能部から共通的に利用される通信機能部１１０を除き、これらにも実装上の制約等はない。
【００２２】
通信機能部１１０は、アプリケーションメッセージの送受信を行うアプリケーション層よりも下位の層における機能部であり、上位層に対してトランスポート層以下の各種機能を提供する。通信機能部１１０は、メッセージ処理部１２０と状態確認部１３０とから共通的に利用される。通信機能部１１０は、通信管理部１１１と、通信処理部１１２とを含む。
【００２３】
通信管理部１１１は、通信処理部１１２が行う通信を制御・管理する。例えば、通信管理部１１１は、５−ｔｕｐｌｅによる通信の識別や、ＴＣＰ（Transmission Control Protocol）コネクションの形成・維持・管理など、通信の実現に必要な管理を行う。通信処理部１１２は、通信ネットワーク１０を介してアプリケーションサーバやデバイス３０などの機器との間でデータの送受信処理を行う。
【００２４】
メッセージ処理部１２０は、通信機能部１１０を介してアプリケーション２０からアプリケーションメッセージを受信し、受信したアプリケーションメッセージを、必要に応じて一時的に保存（バッファリング）し、通信機能部１１０を介してデバイス３０に転送する機能部である。ここで、アプリケーション２０との通信に用いられるトランスポート層におけるコネクションと、デバイス３０との通信に用いられるトランスポート層におけるコネクションとは異なる点に留意されたい。すなわち、アプリケーション２０によるアプリケーションメッセージの送信に用いられるコネクションは、メッセージ中継装置１００の通信機能部１１０で終端される。同様に、デバイス３０によるアプリケーションメッセージの受信に用いられるコネクションは、メッセージ中継装置１００の通信機能部１１０で終端される。
【００２５】
メッセージ処理部１２０は、アプリケーションメッセージ宛先特定機能部１２１と、アプリケーションメッセージバッファ機能部１２２と、アプリケーションメッセージ転送機能部１２３とを備えている。
【００２６】
アプリケーションメッセージ宛先特定機能部１２１は、アプリケーション２０から受信したアプリケーションメッセージの宛先となるデバイス３０を特定する。当該特定処理は、例えば、デバイス３０のアプリケーションレベルにおける識別情報や５−ｔｕｐｌｅやこれらの組み合わせにより行われる。
【００２７】
アプリケーションメッセージバッファ機能部１２２は、アプリケーション２０から受信したメッセージの宛先となるデバイス３０についての転送可否状態（後述する）が「転送不可」状態であった場合に、一時的にそのアプリケーションメッセージを保持する機能である。アプリケーションメッセージバッファ機能部１２２に保持されているアプリケーションメッセージは、その宛先となるデバイス３０についての転送可否状態が「転送可能」状態になると、アプリケーションメッセージ転送機能部１２３により当該アプリケーションメッセージが宛先デバイス３０に送信され、アプリケーションメッセージバッファ機能部１２２から削除される。
【００２８】
アプリケーションメッセージ転送機能部１２３は、アプリケーション２０から受信したメッセージについて、その宛先となるデバイス３０についての転送可否状態、すなわち「転送可能」状態であるか又は「転送不可」状態であるかを判定する。当該判定処理の際には、後述する状態確認部１３０のデバイス通信状態ＤＢ１３２及び通信ネットワーク状態ＤＢ１３４を参照する。当該判定の結果、「転送可能」状態の場合、アプリケーションメッセージ転送機能部１２３は、通信機能部１１０を介して当該アプリケーショメッセージを宛先デバイス３０に送信する。一方、「転送不可」状態の場合、アプリケーションメッセージ転送機能部１２３は、当該アプリケーションメッセージバッファ機能部１２２に記憶する。また、アプリケーションメッセージ転送機能部１２３は、アプリケーションメッセージバッファ機能部１２２に保持されているアプリケーションメッセージについて、その宛先となるデバイスについての転送可否状態が「転送可能」状態に遷移したことを検出すると、当該アプリケーションメッセージをアプリケーションメッセージバッファ機能部１２２から取り出して宛先デバイス３０に送信するとともに、当該アプリケーションメッセージをアプリケーションメッセージバッファ機能部１２２から削除する。前記検出処理は、後述する状態確認部１３０の通信ネットワーク状態ＤＢ１３４を参照することにより行う。
【００２９】
メッセージ処理部１２０の動作について図３のフローチャートを参照して説明する。メッセージ処理部１２０は、アプリケーションメッセージを受信すると（ステップＳ１０１）、当該アプリケーションメッセージの宛先となるデバイス３０を特定する（ステップＳ１０２）。メッセージ処理部１２０は、まず、後述する状態確認部１３０のデバイス通信状態ＤＢ１３２を参照して当該デバイス３０についての通信可否状態を確認する（ステップＳ１０３）。そして、メッセージ処理部１２０は、当該デバイス３０が通信可能状態でない場合、アプリケーションメッセージをアプリケーションメッセージバッファ機能部１２２に一時的に記憶し（ステップＳ１０４，Ｓ１０５）、デバイス３０が通信可能状態に遷移するまで待機する（ステップＳ１０６）。
【００３０】
次に、メッセージ処理部１２０は、当該デバイス３０についての転送可否状態を判定し（ステップＳ１０７）、「転送不可」状態の場合、メッセージ処理部１２０は、当該アプリケーションメッセージをアプリケーションメッセージバッファ機能部１２２に一時的に記憶し（ステップＳ１０８，Ｓ１０９）、デバイス３０についての転送可否状態が「転送可能」状態に遷移するまで待機する（ステップＳ１１０）。次に、メッセージ処理部１２０は、当該アプリケーションメッセージを当該デバイス３０に送信する（ステップＳ１１１）。
【００３１】
なお、メッセージ処理部１２０は、通信機能部１１０を介してアプリケーション２０から受信したアプリケーションメッセージの全てを、一旦、アプリケーションメッセージバッファ機能部１２２に記憶し、その後に、アプリケーションメッセージバッファ機能部１２２に記憶されているアプリケーションメッセージについて、通信可否状態や転送可否状態の判定を行うようにしてもよい。
【００３２】
図２に示すように、状態確認部１３０は、デバイス通信状態判定機能部１３１と、デバイス通信状態ＤＢ１３２と、通信ネットワーク状態推定機能部１３３と、通信ネットワーク状態ＤＢ１３４とを備えている。
【００３３】
デバイス通信状態判定機能部１３１は、デバイス３０がメッセージ中継装置１００と通信可能であるか否かを示す状態（通信可否状態）を判定し、その判定結果と、必要に応じてその付加情報とともにデバイス通信状態ＤＢ１３２に記憶する。判定結果はデバイス３０の識別情報と判定処理時刻情報を含む。また、付加情報とは、デバイス３０の各種属性情報やデバイス３０の通信状態に関連する情報を含む。付加情報としては、例えば、デバイス３０の種別情報、位置情報、移動方向情報などが挙げられる。
【００３４】
ここで、デバイス３０が通信可能である状態とは、メッセージ中継装置１００とデバイス３０との間にトランスポート層のコネクションが形成され、且つ、当該コネクション上でデータの送受信が可能な状態を意味する。したがって、通信可否状態の判定処理は、トランスポート層だけでなくその下位のレイヤにおける通信の正常性の判定をもって行うこともできる。通信可否状態の判定処理としては種々の方法を用いることができる。通信可否状態の判定処理としては、例えば、（１）メッセージ中継装置１００とデバイス３０との間に形成されたトランスポート層のコネクション上で状態確認用メッセージの疎通を判定する、（２）メッセージ中継装置１００とデバイス３０との間のトランスポート層のコネクションの状態を判定する、（３）デバイス３０の通信ネットワーク１０への接続状態を管理する他の装置や機能部（以下、便宜的に「管理装置」と言う）からその管理情報である接続状態情報を取得して判定する、というものが挙げられる。デバイス通信状態判定機能部１３１は、前記判定方法のうちの何れかを用いてもよいし、例えばＰＩＮＧによるデバイス３０の疎通確認を用いた判定など他の方法を用いてもよいし、前記の各判定方法を複数組み合わせて用いてもよい。
【００３５】
デバイス通信状態判定機能部１３１は、通信可否状態の判定処理及び判定結果の記憶処理を定期的に繰り返し実施することにより、デバイス３０について最新の通信可否状態を含む複数の通信可否状態がデバイス通信状態ＤＢ１３２に蓄積される。本処理の実施間隔は不問であり、ネットワークの負荷やメッセージ中継装置１００の負荷等を考慮して適宜決定すればよい。
【００３６】
上記（１）状態確認用メッセージを用いる方法について図４のフローチャートを参照して説明する。本方法では、後述するように、デバイス３０は当該状態確認用メッセージを受信すると、当該状態確認用メッセージに対して応答メッセージを返答するよう構成されていることを前提とする。
【００３７】
デバイス通信状態判定機能部１３１は、デバイス３０に対して状態確認用メッセージを送信する（ステップＳ２０１）。このメッセージ送信は、デバイス３０との間に形成されたコネクションが用いられる。また、このコネクションは、アプリケーションメッセージの送信に用いられるものと共通である。次に、デバイス通信状態判定機能部１３１は、デバイス３０から応答メッセージを受信すると（ステップＳ２０２）、当該デバイス３０が通信可能な状態であると判定し（ステップＳ２０３）、判定結果をデバイス通信状態ＤＢ１３２に記憶する（ステップＳ２０４）。所定時間内にデバイス３０から応答メッセージを受信しない場合、デバイス通信状態判定機能部１３１は、所定回数（ｎ回）状態確認用メッセージの送信を繰り返す（ステップＳ２０２，Ｓ２０５）。所定回数（ｎ回）状態確認用メッセージの送信を繰り返しても応答メッセージを受信できない場合、デバイス３０が通信不可な状態であると判定し（ステップＳ２０６）、判定結果をデバイス通信状態ＤＢ１３２に記憶する（ステップＳ２０４）。
【００３８】
なお、状態確認用メッセージの再送処理は、デバイス通信状態判定機能部１３１自身が行ってもよいし、通信機能部１１０のトランスポート層の処理部が再送処理機能を有している場合には、当該機能を用いてもよい。また、デバイス３０は応答メッセージに付加情報を付加することができる。この場合、デバイス通信状態判定機能部１３１は、デバイス通信状態ＤＢ１３２に判定結果を記憶する際に、判定結果とともに付加情報を記憶することができる。
【００３９】
上記（２）コネクションの状態に基づく方法について図５のフローチャートを参照して説明する。本方法では、デバイス通信状態判定機能部１３１は、通信機能部１１０の通信管理部１１１を用いてメッセージ中継装置１００とデバイス３０との間のコネクションの状態遷移の検出に基づき、具体的にはコネクションの確立又は切断の検出に基づき、デバイス３０の通信状態を判定する。
【００４０】
デバイス通信状態判定機能部１３１は、コネクションが確立されていてデバイス３０が通信可能な状態において、デバイス３０による通信が終了してコネクションの切断を検出すると（ステップＳ３０１，Ｓ３０２）、デバイスが通信不可の状態であると判定し（ステップＳ３０３）、判定結果をデバイス通信状態ＤＢ１３２に記憶する（ステップＳ３０４）。一方、デバイス通信状態判定機能部１３１は、コネクションが切断されてデバイス３０が通信不可な状態において、デバイス３０が通信ネットワーク１０に再接続してコネクションが確立したことを検出すると（ステップＳ３０１，Ｓ３０５）、デバイス３０が通信可能の状態であると判定し（ステップＳ３０６）、判定結果をデバイス通信状態ＤＢ１３２に記憶する（ステップＳ３０４）。
【００４１】
上記（３）他の管理装置から取得した接続状態情報に基づく方法について図６のフローチャートを参照して説明する。本方法において接続状態情報を取得する他の管理装置は、デバイス３０の通信ネットワーク１０への接続を管理する装置である。当該管理装置は、例えば通信ネットワーク１０がＬＴＥ（Long Term Evolution）などの移動通信網を含んでおり、デバイス３０が当該移動通信網に収容されている場合、当該移動通信網内における基地局や移動管理装置や中継装置などが挙げられる。
【００４２】
デバイス通信状態判定機能部１３１は、他の管理装置に対して接続状態情報の問合せメッセージを送信し（ステップＳ４０１）、当該他の管理装置から接続状態情報を含む応答メッセージを受信する（ステップＳ４０２）。そして、デバイス通信状態判定機能部１３１は、応答メッセージに含まれる接続状態情報に基づきデバイス３０の通信可否状態を判定し（ステップＳ４０３〜Ｓ４０５）、判定結果をデバイス通信状態ＤＢ１３２に記憶する（ステップＳ４０６）。
【００４３】
通信ネットワーク状態推定機能部１３３は、デバイス通信状態ＤＢ１３２に記憶されているデバイス３０の通信可否状態情報に基づき、当該デバイス３０とメッセージ中継装置１００との間における通信ネットワーク１０の状態、すなわちデバイス３０とメッセージ中継装置１００との間の通信経路の状態を推定する。より詳しくは、通信ネットワーク状態推定機能部１３３は、デバイス３０の通信可否状態の経時的な変化に基づき、通信ネットワーク１０の状態を推定する。そして、通信ネットワーク状態推定機能部１３３は、推定結果を、必要に応じて付加情報とともに通信ネットワーク状態ＤＢ１３４に記憶する。ここで、付加情報とは推定処理に利用した情報である。本実施の形態では、通信ネットワーク状態推定機能部１３３は、デバイス３０が通信不可な状態の発生間隔に基づき、当該デバイス３０についての通信ネットワーク１０の状態を推定する。
【００４４】
通信ネットワーク状態推定機能部１３３が、通信ネットワーク状態の推定処理及び推定結果の記憶処理を定期的に繰り返し実施することにより、デバイス３０について最新の通信ネットワーク状態が通信ネットワーク状態ＤＢ１３４に記憶される。本処理の実施間隔は不問であり、メッセージ中継装置１００の負荷等を考慮して適宜決定すればよい。また、本処理は、前記デバイス通信状態判定機能部１３１の処理とは独立して実施してもよいし、前記デバイス通信状態判定機能部１３１の処理に引き続き実施してもよいし、前記デバイス通信状態判定機能部１３１の処理によりデバイス通信状態ＤＢ１３２の更新があったときにのみ実施してもよい。
【００４５】
通信ネットワーク状態推定機能部１３３の動作について図７のフローチャートを参照して説明する。通信ネットワーク状態推定機能部１３３は、デバイス通信状態ＤＢ１３２からデバイス３０の通信可否状態を取得し（ステップＳ５０１）、当該デバイス３０の通信不可状態の発生間隔を算出する（ステップＳ５０２）。次に、通信ネットワーク状態推定機能部１３３は、算出した通信不可状態の発生間隔に基づき、デバイス３０の通信不可状態の発生モデルを導出する（ステップＳ５０３）。次に、通信ネットワーク状態推定機能部１３３は、前記発生モデルに基づき、前記メッセージ処理部１２０のアプリケーションメッセージ転送機能部１２３におけるアプリケーションメッセージの転送可否状態の判定に用いられる基準値を算出し（ステップＳ５０４）、この基準値を推定結果として通信ネットワーク状態ＤＢ１３４に記憶する（ステップＳ５０５）。
【００４６】
本実施の形態に係るメッセージ中継装置によれば、通信ネットワーク１０の状態を考慮してアプリケーションメッセージの転送可否を決定するので、アプリケーションメッセージ転送の失敗を抑制することができ、メッセージの到達性を向上できる。また、通信ネットワーク１０の状態を考慮してアプリケーションメッセージの転送可否を決定するので、アプリケーションメッセージ転送の失敗によるメッセージの無駄な再送を抑制することができ、通信ネットワーク１０の帯域等のリソースを効率的に使用することができる。
【実施例】
【００４７】
本発明の実施例に係るメッセージ中継システムについて図面を参照して説明する。ここでは、図８に示すような全体構成におけるアプリケーションメッセージ転送の例を示す。ここで、前述したように、アプリケーション２０やデバイス３０は複数あっても良い。また、メッセージ中継装置１００を構成する各機能部／機能が一つのノードに実装されている必要もない。
【００４８】
実際は、前述した図３〜７のフローに基づいて実施するため、並行処理を行うものも存在しているが、説明の便宜上、各手順に（１）〜（１３）の番号を振り分けている。ここで、手順（１）〜（３）は図４〜６のフローを説明するための手順、手順（４）〜（６）は図７のフローを説明するための手順、手順（７）〜（１３）は図３のフローを説明するための手順である。以下、各手順について説明する。
【００４９】
手順（１）：メッセージ中継装置１００は、デバイス３０に通信状態確認メッセージを送信する。
【００５０】
手順（２）：デバイス３０は、通信状態確認メッセージに基づいて、メッセージ中継装置１００に応答メッセージを返信する。
【００５１】
手順（３）：メッセージ中継装置１００は、デバイス３０からの応答メッセージを受信し、デバイス３０が通信可能な状態であると判定する。さらに、判定結果をデバイス通信状態ＤＢ１３２に記憶する。
【００５２】
手順（４）：メッセージ中継装置１００は、デバイス通信状態ＤＢ１３２の情報に基づいて、デバイス３０の通信が不可能な状態が発生する時間間隔ｔｎを算出する。
【００５３】
手順（５）：メッセージ中継装置１００は、手順（４）で算出したデバイスの通信が不可能な状態が発生する時間間隔ｔｎに基づいて、後述の手順（１２）で実施するメッセージ転送の判定基準となる閾値ｔｔｈを決定する。閾値ｔｔｈの決定方法については後述する。
【００５４】
手順（６）：手順（５）の算出結果を通信ネットワーク状態ＤＢ１３４に記憶する。閾値決定方法が後述の（ｃ）〜（ｄ）のように、経験分布関数や累積分布関数等のように数式モデルを導出する場合は、この数式モデルも記憶する。
【００５５】
手順（７）：アプリケーション２０は、メッセージ中継装置１００にアプリケーションメッセージを送信する。
【００５６】
手順（８）：メッセージ中継装置１００は、アプリケーションメッセージを受信し、アプリケーションメッセージの宛先を判定する。
【００５７】
手順（９）：メッセージ中継装置１００は、デバイス通信状態ＤＢ１３２を参照し、アプリケーションメッセージの宛先であるデバイス３０の最新の通信状態を確認する。ここで、宛先デバイス３０が通信不可能な状態の場合、メッセージ中継装置１００は、アプリケーションメッセージを一時的に保持し、宛先デバイス３０が通信可能な状態に遷移した場合、手順（１０）に進む。
【００５８】
手順（１０）：メッセージ中継装置１００は、デバイス通信状態ＤＢ１３２に記憶されている一番最新のデバイス３０が通信不可能になった時刻と、デバイスの種別、位置、移動方向等の付加情報を抽出する。
【００５９】
手順（１１）：メッセージ中継装置１００は、一番最新のデバイス３０が通信不可能になった時刻からの経過時間を算出する。
【００６０】
手順（１２）：メッセージ中継装置１００は、前述の手順（１０）で抽出した情報に基づいて手順（６）で通信ネットワーク状態ＤＢ１３４に記憶した閾値ｔｔｈを参照し、この閾値ｔｔｈと前述の手順（１１）の経過時間とを比較して、閾値ｔｔｈよりも経過時間が大きい、もしくは、以上であったときに、アプリケーションメッセージを転送可能と判定する。
【００６１】
手順（１３）：メッセージ中継装置１００は、アプリケーションメッセージをデバイス３０に転送する。前述の手順（１２）で転送不可能と判定された場合は、前述の手順（１１）の経過時間が手順（６）の閾値ｔｔｈよりも大きい、もしくは、以上になるまで、アプリケーションメッセージを保持する。
【００６２】
また、最近では、移動デバイスの自動走行や遠隔制御等の、デバイスが通信不可能になる時間を最小化する必要のあるユースケースが増えてきている。したがって、デバイス３０が通信不可能になる時間を最小化するために、Ｗｉ−Ｆｉ（登録商標）やＬＴＥ等、シングル／マルチキャリアに限らず、複数の通信ネットワーク用のインタフェースをデバイスに具備している。このように、メッセージ転送に利用できる通信ネットワークが複数存在する場合は、手順（１）〜（１２）をそれぞれの通信ネットワークに対して実施し、それぞれの通信ネットワークでメッセージ転送の判定を行い、判定結果の良い方の通信ネットワークを利用して、メッセージを転送する。
【００６３】
＜閾値決定方法＞
次に、上記手順（５）の閾値ｔｔｈの決定方法の実施例について詳述する。この閾値決定方法は、前述のとおり、デバイス３０が通信ネットワーク１０の不安定な環境に存在する際の通信不可能な状態が発生する時間間隔ｔｎを使った決定方法である。
【００６４】
なお、他の決定方法としては、デバイス３０が、通信ネットワーク１０の不安定な環境に存在し始めて最初に通信不可能な状態になってから、通信ネットワーク１０の安定した環境に移動して通信可能な状態に遷移するまでの時間を使った決定方法もある。これは、下記閾値決定方法と同様の論理で決定することができる。この方法で閾値を決定した場合は、上記手順（１１）で算出する経過時間は、通信ネットワーク１０の不安定な環境に存在し始めて最初に通信不可能な状態になってから現在時刻までの時間とする必要がある。
【００６５】
また、下記閾値決定方法は一例であるため、このメッセージ中継装置１００を利用したり運用したりするユーザが任意で決定する等の他の方法を実施しても構わない点に留意されたい。
【００６６】
＜閾値決定方法（ａ）＞
下記数１に示すように、予め指定されたｎ個の時間間隔ｔｎの平均値を閾値ｔｔｈとする。なお、閾値計算に使用する時間間隔ｔｎのサンプルを抽出する方法は後述する。
【００６７】
【数１】
2020136859.tif 000003
【００６８】
＜閾値決定方法（ｂ）＞
下記数２に示すように、予め指定されたｎ個の時間間隔ｔｎの最大値を閾値ｔｔｈとする。なお、前述の方法（ａ）と同様、閾値計算に使用する時間間隔ｔｎのサンプルを抽出する方法は後述する。
【００６９】
【数２】
2020136859.tif 000004
【００７０】
＜閾値決定方法（ｃ）＞
予め指定されたｎ個の時間間隔ｔｎの中央値を閾値ｔｔｈとする。対象データを小さい順に並び替えたものをｔ１，ｔ２，…，ｔｎとしたとき、下記数３に示す計算式で算出する。なお、前述の方法（ａ）〜（ｂ）と同様、閾値計算に使用する時間間隔ｔｎのサンプルを抽出する方法は後述する。
【００７１】
【数３】
2020136859.tif 000005
【００７２】
＜閾値決定方法（ｄ）＞
予め指定されたｎ個の時間間隔ｔｎの経験分布関数に基づき、閾値ｔｔｈについて数値計算、または、経験分布関数に対して近似関数を求め、閾値ｔｔｈを解析的に解く。経験分布関数の一例を下記数４に示す。閾値ｔｔｈが時間ｔとなる確率Ｆ（ｔ）は、このメッセージ中継装置１００を利用したり運用したりするユーザが任意に決定する。なお、前述の方法（ａ）〜（ｃ）と同様、閾値計算に使用する時間間隔ｔｎのサンプルを抽出する方法は後述する。
【００７３】
【数４】
2020136859.tif 000006
【００７４】
＜閾値決定方法（ｅ）＞
予め指定されたｎ個の時間間隔ｔｎが、ある確率分布に従うものと仮定し、その累積分布関数に基づき、閾値ｔｔｈを数値計算する。例として、正規分布に従った場合の確率密度関数を下記数５に示す。また、前述の方法（ｄ）と同様、閾値ｔｔｈが時間ｔとなる確率Ｆ（ｔ）は、このメッセージ中継装置１００を利用したり運用したりするユーザが任意に決定する。また、前述の方法（ａ）〜（ｄ）と同様、閾値計算に使用する時間間隔ｔｎのサンプルを抽出する方法は後述する。
【００７５】
【数５】
2020136859.tif 000007
【００７６】
なお、上記数１〜数５で用いられた記号は以下のように定義される。
ｔｎ：デバイスの通信が不可能な状態が発生する時間間隔
ｔｔｈ：メッセージ転送の判定基準となる閾値
ｔｍａｘ：ｎ個の時間間隔ｔｎの最大値
ｎ：閾値ｔｔｈを算出するのに使用する時間間隔のデータ数
Ｆ（ｔ）：閾値ｔｔｈが時間ｔとなる確率
μ：閾値ｔｔｈを算出するのに使用する時間間隔の平均値
σ：閾値ｔｔｈを算出するのに使用する時間間隔の標準偏差
【００７７】
＜時間間隔ｔｎのサンプル抽出方法＞
閾値計算に使用する時間間隔ｔｎは、最新ｎ個で抽出しても良いし、無作為に抽出しても良いし、デバイス３０の種別や判定時刻や、位置、移動方向／速度、メッセージ転送の成功情報等の属性情報で条件付けしたものから抽出しても良い。ここでは、以下に示す方法を一例として示す。
【００７８】
前述のとおり、デバイス３０が通信不可能な状態になる状況は、デバイス３０が通信可能な状態と通信不可能な状態を繰り返す通信ネットワーク１０の不安定な環境にデバイス３０が存在している可能性が高い。そのため、通信可能な状態に遷移したとしても、即時に、通信不可能な状態に再び遷移する可能性が高い。すなわち、通信ネットワーク１０の状態変化は、図９のように、時間間隔ｔｎの長い通信ネットワーク１０が安定している環境にいる状況を経て、時間間隔ｔｎの短い通信ネットワーク１０の不安定な環境にいる状況に移行し、通信可能な状態と通信不可能な状態の遷移を頻繁に繰り返す傾向がある。マクロで観測すると、この二つの状況を繰り返す傾向がある。
【００７９】
そこで、サンプル抽出法の一例としては、図９のような傾向を考慮して、時間間隔ｔｎの長い状態を経て通信不可能な状況が発生した時点を起点として、通信可能な状態に遷移後に再び通信不可能な状況が発生するまでの時間間隔ｔｎが長くなるまでの間を抽出対象とする。
【００８０】
また、このような時間間隔ｔｎを抽出するためには、時間間隔ｔｎが抽出対象であるかを判定する必要がある。ここでは、以下の方法を一例として示す。
【００８１】
すべての時間間隔ｔｎに基づいて、確率密度関数ｆ（ｔ）を求める。図９のような傾向があるため、この確率密度関数ｆ（ｔ）は、複数のピークが存在する形状となる。さらに、この確率密度関数ｆ（ｔ）に基づいて、ｆ’（ｔ）＝０となる極小値の時間間隔ｔ０を算出する。確率密度関数ｆ（ｔ）が、複数のピークの存在する形状の場合は、極小値が複数あり時間間隔ｔ０が複数算出される可能性がある。その場合、複数算出された極小値となる時間間隔ｔ０のうち、一番小さい値を判定基準とし、これよりも小さい、もしくは、以下となる時間間隔ｔｎを抽出する。
【００８２】
ここで、判定基準の抽出方法は、すべての時間間隔ｔｎの平均値や中央値等を採用しても良い。
【００８３】
さらに、この抽出された時間間隔ｔｎに対して、スミルノフ・グラブス検定やトンプソン検定等の外れ値を検出する検定を実施し、外れ値を除外したものを、閾値計算に使用する時間間隔ｔｎとする。外れ値を除外する方法はこれ以外の方法を適用しても構わないし、外れ値の除外自体を実施についても任意である。
【００８４】
以上のように、デバイス３０が通信ネットワーク１０の不安定な環境から安定している環境に移動したかどうかが重要となるため、通信可能な状態と通信不可能な状態の遷移を頻繁に繰り返す通信ネットワークの不安定な環境における時間間隔ｔｎのみを対象とすることにより、通信可能な状態で前回通信不可能な状態になってからの経過時間と、閾値ｔｔｈを比較することによって、通信ネットワークが安定している環境に移動したと判断することが可能となる。
【００８５】
以上、本発明の実施の形態及び実施例について詳述したが、本発明はこれに限定されるものではない。例えば、上記実施の形態では、アプリケーションメッセージの送信にコネクション型のプロトコルであるＴＣＰを用いたが、コネクションレス型のＵＤＰを用いてもよい。
【符号の説明】
【００８６】
１０…通信ネットワーク
２０…アプリケーション
３０…デバイス
１００…メッセージ中継装置
１１０…通信機能部
１１１…通信管理部
１１２…通信処理部
１２０…メッセージ処理部
１２１…アプリケーションメッセージ宛先特定機能部
１２２…アプリケーションメッセージバッファ機能部
１２３…アプリケーションメッセージ転送機能部
１３０…状態確認部
１３１…デバイス通信状態判定機能部
１３２…デバイス通信状態ＤＢ
１３３…通信ネットワーク状態推定機能部
１３４…通信ネットワーク状態ＤＢ
【図１】
2020136859.tif 000008
【図２】
2020136859.tif 000009
【図３】
2020136859.tif 000010
【図４】
2020136859.tif 000011
【図５】
2020136859.tif 000012
【図６】
2020136859.tif 000013
【図７】
2020136859.tif 000014
【図８】
2020136859.tif 000015
【図９】
2020136859.tif 000016