JP2018512645A - メッセージバスサービスディレクトリ - Google Patents

メッセージバスサービスディレクトリ Download PDF

Info

Publication number
JP2018512645A
JP2018512645A JP2017543945A JP2017543945A JP2018512645A JP 2018512645 A JP2018512645 A JP 2018512645A JP 2017543945 A JP2017543945 A JP 2017543945A JP 2017543945 A JP2017543945 A JP 2017543945A JP 2018512645 A JP2018512645 A JP 2018512645A
Authority
JP
Japan
Prior art keywords
service
omb
message
services
dns
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
JP2017543945A
Other languages
English (en)
Other versions
JP6538867B2 (ja
Inventor
デール エヌ. シード,
デール エヌ. シード,
ウィリアム ロバード ザ フォース フリン,
ウィリアム ロバード ザ フォース フリン,
ポール エル. ジュニア ラッセル,
ポール エル. ジュニア ラッセル,
ナラヤン ピー. メノン,
ナラヤン ピー. メノン,
リチャード ピー. ゴーマン,
リチャード ピー. ゴーマン,
チュアン リー,
チュアン リー,
ホンクン リ,
ホンクン リ,
ドナルド エー. フレック,
ドナルド エー. フレック,
ズオ チェン,
ズオ チェン,
マイケル エフ. スターシニック,
マイケル エフ. スターシニック,
トーマス エス. ギリー,
トーマス エス. ギリー,
デイビッド ゴーリッグ,
デイビッド ゴーリッグ,
Original Assignee
コンヴィーダ ワイヤレス, エルエルシー
コンヴィーダ ワイヤレス, エルエルシー
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 コンヴィーダ ワイヤレス, エルエルシー, コンヴィーダ ワイヤレス, エルエルシー filed Critical コンヴィーダ ワイヤレス, エルエルシー
Publication of JP2018512645A publication Critical patent/JP2018512645A/ja
Application granted granted Critical
Publication of JP6538867B2 publication Critical patent/JP6538867B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/562Brokering proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4505Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
    • H04L61/4511Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/70Services for machine-to-machine communication [M2M] or machine type communication [MTC]

Abstract

本明細書では、「オープンメッセージバス」(OMB)と称されるメッセージングシステムアーキテクチャが提示される。OMBは、サービス間のコネクティビティおよび通信を促進するメッセージングシステムインフラストラクチャである。OMBバックボーンは、OMBに接続する全てのサービスによって活用されることができるインフラストラクチャサービスを提供し得る。一実施形態において、方法は、メッセージブローカに関連付けられている利用可能なサービスについての情報を第1のサービスから要求することと、利用可能なサービスの記述を含む応答を受信することと、応答からの利用可能なサービスのうちの第2のサービスを精査することと、応答内の第2のサービスの記述に基づいて、メッセージブローカと接続することとを含む。

Description

(関連出願の引用)
本願は、米国仮特許出願第62/118,882号(2015年2月20日出願、名称「Message Bus Service Directory」)の利益を主張し、上記出願の内容は、参照により本明細書に引用される。
(既存のメッセージングベースのミドルウェアアーキテクチャ)
メッセージベースのミドルウェアは、通信サービス間の「メッセージ層」を提供し、したがって、各サービスが起動する下層動作環境を抽象化する。換言すると、「メッセージ層」は、サービスの間でメッセージを交換することにおいて仲介者としての役割を果たす。図1は、メッセージベースのミドルウェアの高レベル表現を示す。図1では、4つのサービスが、共通ミドルウェアプラットフォームを介して通信する。各サービスは、異なるプラットフォーム(例えば、ハードウェアプラットフォーム、オペレーティングシステム等)上で起動し得る。ミドルウェアは、それらがある定義されたメッセージングプロトコルを介して通信することができるように、各サービスの下層動作環境を抽象化する。
多くのメッセージベースのミドルウェアアーキテクチャがある。ミドルウェアアーキテクチャは、メッセージ待ち行列、パブリッシュ/サブスクライブ、およびメッセージブローカ等の特徴を含むことができる。ミドルウェア層は、メッセージ待ち行列の概念に基づくことができる。待ち行列ベースのミドルウェアアーキテクチャは、多くの異なる形態を成すことができ、いくつかある技法の中でも、メッセージを全てのサービスに送信するために使用される単一の共有待ち行列、各サービスがメッセージを受信するための専用待ち行列、または各サービスがメッセージを送信するための専用待ち行列があり得る。パブリッシュ/サブスクライブモデルでは、メッセージが、ミドルウェア内の宛先に送信(パブリッシュ)される。宛先は、メッセージ「トピック」(チャネルと呼ばれることもある)に依存する。特定のトピックに関連するメッセージを受信することを所望するサービスは、「トピック」にサブスクライブする。トピックは、メッセージタイプ(デバッグ、アラーム、警告、またはタスク要求)に関連し得る。メッセージブローカは、いくつかのトピック等を伴うパブリッシュ/サブスクライブアーキテクチャのように、いくつかの待ち行列を伴って実装され得る。メッセージブローカという用語は、全てのメッセージを受信し、全てのメッセージを配布するエンティティを一般的に指すメッセージバスの一部である。
(メッセージタイプ)
ミドルウェアブローカから、またはそこに送信されるメッセージは、いくつかの異なる方法で特徴付けられ得る。4つの一般的なタイプのメッセージは、送信メッセージ、受信メッセージ(ブロッキング)、受信メッセージ(非ブロッキング)、および通知である。送信メッセージは、サービスによってブローカに送信される。サービスがメッセージをブローカに送信すると、サービスは応答を期待せず、サービスの実行が継続する。ブロッキングメッセージは、サービスがメッセージを受信するまでサービスに一時停止(ブロック)させるであろうメッセージである。例えば、サービスがブローカまたは待ち行列からのメッセージを読み取ろうとし、メッセージが準備できていない場合、サービスの実行がブロッキングされるであろう。非ブロッキングメッセージは、メッセージが準備完了するまでサービスを一時停止(ブロック)させるないであろうメッセージである。例えば、サービスがブローカまたは待ち行列からのメッセージを読み取ろうとし、メッセージが準備できていない場合、サービスの実行は、メッセージが準備完了するまで継続するであろう。サービスは、非ブロッキング読み取りを試行するとき、それは、メッセージが準備できているときに呼び出され得るコールバック関数をブローカに提供し得る。通知メッセージは、ある前の要求の結果として、ブローカがサービスに送信するメッセージである。例えば、前の要求は、非ブロッキング読み取り試行またはサブスクライブ要求であり得る。
(メッセージバスプロトコル)
Advanced Message Queuing Protocol(AMQP)は、メッセージバスプロトコルである。図2は、AMQPの交換と待ち行列との間の関係を示す。AMQP交換は、サービスからメッセージを受理し、メッセージを1つ以上の待ち行列にルーティングする。交換は、静的ルール(例えば、メッセージをこれら5つのサービスに送信する)に基づいて、それら自体を交換に結合するあらゆる待ち行列に基づいて、メッセージトピックに基づいて、またはメッセージヘッダ内の値に基づいて、メッセージをルーティングするように設計されることができる。
Message Queuing Telemetry Transport(MQTT)(例えば、OASIS MQTTV 3.1.1 Committee Specification 01,18 May 2014を参照)は、メッセージベースのミドルウェアプロトコルである。MQTTは、最も一般的にFacebook Messengerモバイルアプリで展開されている、制約されたデバイスならびに低帯域幅ネットワークに合った低オーバーヘッドメッセージ待ち行列およびトランスポートプロトコルである。それは、パブリッシュ/サブスクライブ(またはクライアント/サーバ)モデルを使用する。MQTTの要素は、クライアント(パブリッシャおよびサブスクライバの両方であり得る)、サーバ(ブローカとも称される)、セッション、サブスクライブ、およびトピックである。HTTPのように、MQTTプロトコルは、それが2つの異なる役割(すなわち、クライアントおよびサーバ)を区別するという点で非対称である。
MQTT用語では、クライアントは、MQTTを使用するプログラムまたはデバイスである。それは、常に、サーバへのネットワーク接続を確立する。クライアントは、
・ 他のクライアントが関心を持ち得るアプリケーションメッセージをパブリッシュすること
・ それが受信することに関心を持っているアプリケーションメッセージを要求するためにサブスクライブすること
・ アプリケーションメッセージに対する要求を除去するためにサブスクライブを解除すること
・ サーバから切断すること
を行うことができる。
MQTTサーバは、クライアントからの接続を受理するエンティティである。HTTPと異なり、これは、概して、いかなるアプリケーション論理も起動しないが、代わりに、MQTTサーバが、アプリケーションメッセージをパブリッシュするクライアントと、それらを受信するようにサブスクライブしているクライアントとの間の仲介人としての役割を果たす。
トピックは、MQTTでは「Q」であり、パブリッシャをサブスクライバとリンクするためにサーバによって維持される名前を付けられたメッセージ待ち行列である。MQTTクライアントは、PUBLISHメッセージ(例えば、不透明なメッセージペイロードを、供給されたトピック名にサブスクライブした任意のクライアントに配信するための命令)をMQTTサーバに発行するときにパブリッシャの役割を担い、SUBSCRIBEメッセージ(例えば、供給されたトピックフィルタに一致する任意のPUBLISHメッセージを受信するための命令)をMQTTサーバに発行するときにサブスクライバの役割を担う。トピックフィルタは、1つ以上のトピックへの関心を示すためのサブスクライブにおいて含まれる表現である。トピックフィルタは、ワイルドカード性格を含み得る。PUBLISHメッセージは、多くても1回、少なくても1回、正確に1回等の3つのQoS保証レベルのうちの1つを伴って配信される。
セッションおよびサブスクライブは、クライアントとサーバとの間の2つのアタッチレベルを表す。セッションは、クライアントとサーバとの間のステートフル相互作用(例えば、アクティブなTCP/IPネットワーク接続)であり、固有のクライアント識別子によって識別される。セッションは、CONNECTメッセージをサーバに送信するクライアントによってのみ確立されることができる。CONNECT、PUBLISH、およびSUBSCRIBEメッセージ内のフラグは、セッションが切断される場合、どのようにしてセッション状態が維持されるかを決定する。
(ドメイン名システム(DNS))
ドメイン名システム(DNS)は、RFC 1035で定義されている。DNSは、あるタイプのメッセージバスまたはミドルウェアではないが、それは、インターネットもしくはプライベートネットワークに接続されるコンピュータ、サービス、または任意のリソースのための分散データベース上に構築される階層命名システムである。それは、IPアドレスを参加エンティティの各々に割り当てられたドメイン名に関連付けるように設計される。
(ドメイン名システム−サービス発見(DNS−SD))
DNSベースのサービス発見(DNS−SD)は、あるタイプのメッセージバスまたはミドルウェアではないが、それは、ネットワークサービスの発見をサポートするために標準DNSプログラミングインターフェース、サーバ、およびパケットフォーマットを使用するプロトコルである。クライアントが探しているサービスのタイプとクライアントがそのサービスを探しているドメインとを与えられると、この機構は、クライアントが、標準DNSクエリを使用して、その所望のサービスの名前を付けられたインスタンスのリストを発見することを可能にする。
特定のサービスインスタンスが、RFC 2782で議論されるようなDNSサービス場所レコード(SRV)およびRFC 6763で議論されるようなDNSテキストレコード(TXT)を使用して、記述されることができる。SRVレコードは、「<Instance>.<Service>.<Domain>」という形態の名前を有し、サービスインスタンスが到達されることができる標的ホストおよびポートを与える。同一名のDNS TXTレコードは、キー/値ペア(例えば、scl=<uri_path_to_sclBase>)を使用する構造化形態で、このインスタンスについての追加の情報を与える。クライアントは、前述のDNS SRV/TXTレコードペアの名前であるゼロ以上の名前の組を返す、「<Service>.<Domain>」という形態の名前を伴う、RFC 6763で議論されるようなDNSポインタレコード(PTR)に対するDNSクエリを使用して、所与のサービスタイプの利用可能なインスタンスのリストを発見する。次いで、クライアントは、SRV/TXTレコードペアを読み出し、これらの記録内に含まれる発見情報を入手するために、第2のDNSクエリを行うことができる。この発見されたホスト、ポート、および追加の発見情報を使用して、次いで、クライアントは、着目サービスにアクセスすること/それを呼び出すことができる。
(oneM2Mサービス層)
サービス層は、どのようにしてサービスがアプリケーションおよび他のサービスと相互作用するかを定義するプロトコルの組である。oneM2Mサービス層は、共通機能(またはサービス能力)の組として編成され、そのインスタンス化は、oneM2M TS−0001 Functional Architectureで議論されるように、共通サービスエンティティ(CSE)と称される。これらの共通機能は、図3および図4に示されるように、Mca、Mcc、およびMcn参照点を介してエクスポーズされる。図4は、Msc参照点も強調表示する。Msc参照点は、異なるサービスコンポーネントのサービス能力間の相互作用の組を規定する。サービス能力間の相互作用の実現は、oneM2M TS−0007 Service Component Architectureで議論されるように実装特定である。
Mca参照点が、アプリケーションエンティティ(AE)とCSEとの間の通信フローを指定する一方で、Mcc参照点は、同一のM2Mサービスプロバイダドメイン内の2つのCSE間の通信フローを指定する。McaおよびMccを横断する通信は、ペアリングされた要求/応答メッセージを介して行われ、各要求は、標的CSE上でホストされるリソースに特定のRESTful動作(例えば、Create、Retrieve、Update、Delete)を行う。Mcc’は、異なるM2M SPのインフラストラクチャドメイン内に位置するCSE間で使用される。Mcnは、トランスポートおよびコネクティビティ以外のサービスのために、CSEと下層ネットワークサービスエンティティ(NSE)との間で使用される。
CSEは、「ノード」と称されるアーキテクチャのエンティティ上でホストされる。ノードは、a)1つのCSEおよびゼロ以上のAE、または、b)1つ以上のAEを含む、機能的エンティティである。CSEによって提供されるサービスは、低コストデバイス上で実装される温度センササービスから、大型ネットワークサーバ上で展開される課金システムまで様々であり得る。したがって、アーキテクチャは、メッセージングプロトコルを利用するために好適である。
本明細書では、我々が「オープンメッセージバス」(OMB)と称するメッセージングシステムアーキテクチャが提示される。OMBは、サービス間のコネクティビティおよび通信を促進するメッセージングシステムインフラストラクチャである。OMBバックボーンは、OMBに接続する全てのサービスによって活用されることができるいくつかのインフラストラクチャサービスを提供する。
OMBインフラストラクチャは、サービスディレクトリおよび発見サービスを提供する。発見サービスは、どのようなサービスがOMBを介して利用可能であるかを分類し、サービスが通信するためにいずれのプロトコルを要求するか、サービスにアクセスすることに関連付けられるコスト等の追加の詳細を提供するサービスディレクトリまたはデータベースをクライアントがブラウズすることを可能にする。OMBは、どのようなサービスが着目されるOMB上で利用可能であるかを動的に発見するためにサービスが使用し、次いで、OMBに接続し、これらの発見されたサービスと通信するために発見中に取得された情報を使用することができるDNS−SDインターフェースを提供する。
サービスがOMBに参入すると、サービスディレクトリにサブスクライブし、特定のサービスまたは特定のクラスのサービスが接続するとき、またはOMBから切断するときに通知を受信することができる。
OMBは、トランスポートに依存しないAPIを利用し得る。APIは、サービスが、バスに接続し、異なる下層トランスポートおよびアプリケーションレベルプロトコルを使用する他のサービスと通信するために、任意の下層トランスポートおよびアプリケーションレベルプロトコル(UDP、CoAP、TCP、WebSockets、HTTP等)を使用することができるように設計される。
本概要は、発明を実施するための形態において以下でさらに説明される、簡略化形態の一連の概念を導入するように提供される。本概要は、請求される主題の主要な特徴または不可欠な特徴を識別することを意図せず、請求される主題の範囲を限定するために使用されることも意図していない。さらに、請求される主題は、本開示の任意の部分で記述されるいずれかまたは全ての不利点を解決する制限に制約されない。
添付の図面と併せて一例として挙げられる、以下の説明から、より詳細に理解され得る。
図1は、メッセージベースのミドルウェアの例示的高レベル表現を図示する。 図2は、AMQP交換と待ち行列との間の例示的関係を図示する。 図3は、例示的oneM2M機能的アーキテクチャを図示する。 図4は、例示的oneM2M機能的アーキテクチャを図示する。 図5は、例示的オープンメッセージバスアーキテクチャを図示する。 図6は、オープンメッセージバスアーキテクチャで動作する例示的サービスディレクトリを図示する。 図7は、オープンメッセージバスアーキテクチャで動作する例示的データベースサービスを図示する。 図8は、オープンメッセージバスアーキテクチャで動作する例示的管理サービスを図示する。 図9は、サービス/OMB AP/OMBクライアント関係を伴うオープンメッセージバスアーキテクチャの例示的エンドツーエンド通信を図示する。 図10は、例示的DNS−SDベースのサービス発見メッセージフローを図示する。 図11は、オープンメッセージバスアーキテクチャの1つ以上のコンポーネントを使用する、メッセージングの例示的概観を図示する。 図12は、サービスディレクトリへのサービス発見情報のパブリッシュのための例示的メッセージフローを図示する。 図13は、DNS−SDベースの発見のための例示的メッセージフローを図示する。 図14は、AMQP接続を開くことの例示的メッセージフローを図示する。 図15は、メッセージバスバックボーンの1つ以上のコンポーネントを使用して、発見されたサービスと通信するための例示的方法フローを図示する。 図16は、OMBアーキテクチャを使用して、どのようにしてoneM2Mサービス(CSF)またはサービスコンポーネント(例えば、サービスのグループ)が展開され得るかという例示的実装を図示する。 図17Aは、開示される主題が実装され得る、例示的マシンツーマシン(M2M)またはモノのインターネット(IoT)通信システムの系統図である。 図17Bは、図17Aで図示されるM2M/IoT通信システム内で使用され得る、例示的アーキテクチャの系統図である。 図17Cは、図17Aで図示される通信システム内で使用され得る、例示的M2M/IoT端末またはゲートウェイデバイスの系統図である。 図17Dは、図17Aの通信システムの側面が具現化され得る、例示的コンピューティングシステムのブロック図である。 図18は、メッセージバスサービスディレクトリに関連付けられる、例示的ユーザインターフェースを図示する。
本明細書では、サービスの間のコネクティビティおよび通信を促進する、メッセージングバス(「オープンメッセージバス」(OMB)とも称される)が議論される。開示されるメッセージングバスは、メッセージングバスと接続するサービスによって活用され得るインフラストラクチャサービスを提供する。
Advanced Message Queuing Protocol(AMQP)およびMessage Queuing Telemetry Transport(MQTT)等の従来のメッセージングバスプロトコルは、どのようなサービスがメッセージバス上で利用可能であるかを動的に発見するための組み込みのサポートを有していない。したがって、メッセージバスに接続されるサービスは、どのような他のサービスがメッセージバス上にあるかを認識しない場合がある。これは、メッセージバスのサービスの過小利用をもたらし得る。例えば、ホームオートメーションサービスプロバイダは、地元の気象状態についての情報を提供するサービス接続することが可能である場合、家庭暖房および冷房システムをより効率的に管理することが可能であり得る。AMQPおよびMQTTは、ホームオートメーションプロバイダが気象サービスを動的に発見して使用する手段を提供しない。
OMBインフラストラクチャは、発見サービスを備えているサービスディレクトリを提供し得る。発見サービスは、どのようなサービスがOMBを介して利用可能であるかを分類するサービスディレクトリまたはデータベースをクライアントがブラウズすることを可能にする。発見サービスは、とりわけ、サービスが通信するためにどのプロトコルを要求するか、またはサービスにアクセスすることに関連付けられるコスト等の追加の詳細も提供し得る。実施例では、OMBは、DNS−SDインターフェースを提供し、サービスは、それを使用して、そのサービスが着目するどんなサービスがOMB上で利用可能であるかを動的に発見し、次いで、OMBに接続し、これらの発見されたサービスと通信するために発見中に取得された情報を使用することができる。
サービスがOMBに参入すると、それは、OMBクライアントと称され得る。OMBクライアントは、サービスディレクトリにサブスクライブし、特定のサービス(特定のクラスのサービスを含む)が接続するとき、もしくはそれがOMBから切断するとき、通知を受信することができる。
OMBは、トランスポートに依存しないアプリケーションプログラミングインターフェース(API)を利用し得る。APIは、サービスが、バスに接続し、異なる下層トランスポートおよびアプリケーションレベルプロトコルを使用する他のサービスと通信するために、任意の下層トランスポートおよびアプリケーションレベルプロトコル(UDP、CoAP、TCP、WebSockets、HTTP、AMQP、MQTT、XMPP等)を使用することができるように設計される。
図5は、OMBアーキテクチャ201の例示的説明図である。OMBアーキテクチャ201は、メッセージブローカ203と、サービスディレクトリ210もしくは他のサービス204等の1つ以上のメッセージバスバックボーン202サービス(すなわち、本明細書でさらに詳細に議論されるインフラストラクチャサービス)とを含むメッセージバスバックボーン202を有する。他のサービス204は、それぞれ、図7および図8に示されるように、とりわけ、データベースサービス240と、管理サービス250とを含み得る。本明細書でさらに詳細に議論されるデータベースサービス240は、情報を記憶し、クエリを行うために、サービスによって使用され得る。管理サービス250は、メッセージバスバックボーン202と接続するクライアントサービスを管理および監視するために使用され得る。
サービスディレクトリ210は、メッセージブローカ203と接続されているサービスの動的発見およびパブリッシュのために使用され得る。サービスディレクトリ210は、DNS−SDインターフェース211ならびにOMB API 212をサポートする。DNS−SDインターフェース211は、場所追跡デバイス220がメッセージブローカ203に登録する前、またはそれと接続する前にメッセージブローカ203と接続される利用可能なサービスをブラウズするために、第1のサービス(例えば、場所追跡デバイス220)によって使用されることができる。場所追跡デバイス220がメッセージブローカ203に登録されると、OMB API 225が、メッセージバスバックボーン202に関連付けられるサブスクライブまたは通知機構を利用するために使用されることができる。サブスクライブは、イベントXが起こるときを知ることを所望することをサービスが示すときである。通知は、イベントXが起こったことをサービスが伝えられるときである。サブスクライブまたは通知機構は、DNS−SDインターフェース211上で利用可能でないこともある。サブスクライブまたは通知機構は、場所追跡デバイス220等のサービスが、他のサービスに関する通知を受信するためにサービスディレクトリ210にサブスクライブすることを可能にする。例えば、場所追跡デバイス220は、場所追跡デバイス220が関心を持つサービスがバスと接続または切断するとき、通知を受信するためにサブスクライブすることができる。サービスディレクトリ210およびサブスクライブまたは通知機構(例えば、図6のサブスクライブまたは通知213)は、本明細書でさらに詳細に説明される。
本明細書でさらに詳細に議論されるように、サービスは、OMBクライアント222等のOMBクライアントを介してメッセージバックボーン202とインターフェースをとり、OMBクライアントは、サービスとOMBによって使用される下層トランスポート(例えば、AMQP、UDP、MQTT、XMPP、WebSockets等)との間の抽象化の層(API)を提供する。
OMBアーキテクチャ201およびそのトランスポートに依存しないAPI(例えば、OMB API 225)は、設計が規模調整されることを可能にする。設計は、大型展開(例えば、クラウドインフラストラクチャ)からより小型の展開(例えば、ホームゲートウェイ)まで適応する。例えば、サービスが多くの遠隔サーバ上でホストされるクラウドベースの展開から、全てのサービスが個々のデバイス、例えば、低複雑性温度センサ上でホストされる展開まで及ぶ。
図6は、OMBアーキテクチャ201で動作する例示的サービスディレクトリ210を図示する。サービスディレクトリ210は、とりわけ、OMBクライアント214、DNS−SDインターフェース211と接続されるDNS−SDサーバ218、サービスパブリッシャマネージャ217、サービス発見クエリマネージャ216、サブスクライブまたは通知マネージャ213、およびサービス発見レコード記憶装置215をサポートすることができる。サービスパブリッシャマネージャ217は、サービス作成要求を受理する。それは、サービスディレクトリ210内の新しいサービスプロファイルに入力するために使用され得る。サービス発見クエリマネージャ216は、他のサービスからサービスクエリを受理し、要求サービスがサービスディレクトリ210内にあるかどうかをチェックする。サブスクライブ/通知マネージャ213は、他のサービスからサブスクライブ要求を受理し、新しいサービスがサービスディレクトリ210に入力されるとき、要求通知を生成し得る。DNS−SDインターフェース211は、メッセージブローカ203またはメッセージバックボーン202の他の部分にアクセスすることなく、サービス(例えば、場所追跡デバイス220)がサービスディレクトリ210をブラウズすることを可能にする。DNS−SDインターフェース211は、場所追跡デバイス220がメッセージバックボーン202と接続すべきかどうかを決定する前に、場所追跡デバイス220(または他のサービス)が、どのようなサービスがメッセージバックボーン202を介して提供されるかを動的に決定することを所望するとき、特に有用であり得る。
サービスプロファイル(例えば、サービスプロファイル219)は、サービス(例えば、場所追跡デバイス220または場所追跡サービス230)を記述する、PTR、SRV、およびTXTレコードから成る。サービスプロファイル219は、メモリに常駐するであろうテーブル内の入力であろう。OMB API(例えば、OMB API 225またはOMB API 212)は、サービスプロファイルがサービスディレクトリ210に登録されることを可能にし、発見または検索動作がサービスディレクトリ210に行われることを可能にし、他のOMBクライアント(例えば、OMBクライアント222)がサブスクライブ要求をサービスディレクトリ210に発行することを可能にする。サブスクライブ要求は、特定のサービスがサービスディレクトリ210に登録する(または登録解除する)ときに通知を要求するために使用され得る。
本明細書の以降(例えば、表3)で、サービスディレクトリ210に関連付けられるOMBコールのリストが提示される。ombConfig()APIは、サービスプロファイル223がサービスディレクトリ210にロードされることを可能にする。例えば、ombConfig()APIは、ネットワーク管理者がサービスディレクトリ210にサービスのプロファイル(例えば、場所追跡デバイス220のためのサービスプロファイル223)をロードするために管理サービス250を使用することを所望するとき、使用され得る。代替として、場所追跡デバイス220は、独自のサービスプロファイル223をサービスディレクトリ210にロードするためにombConfig()APIを使用することができる。例えば、場所追跡デバイス220のためのサービスプロファイル223がネットワーク管理者によってロードされるとき、場所追跡デバイス220は、そのサービスプロファイル223をフェッチし、(そのOMBクライアント222を介して)メッセージブローカ203と適切に接続し、それを構成する方法を習得するとともに、それが依存する他のサービスを決定するために、ombConfig()APIを使用し得る。
OMB API 212は、サービスディレクトリ210が、他のOMBサービスからパブリッシュ、サブスクライブ、および発見作成要求を受信すること、ならびに通知を他のOMBサービスに送信することを可能にする。サブスクライブまたは通知特徴は、メッセージバスバックボーン202(またはサービスに関連付けられるOMBクライアント)の1つ以上のコンポーネントと接続される他のサービスが、サービスディレクトリ210にサブスクライブし、規定基準(例えば、特定のタイプのサービスがサービスディレクトリプロファイルを作成、更新、または削除した)に基づく通知を受信することを可能にする。本明細書で使用されるようなサービスディレクトリプロファイルは、サービスプロファイルと見なされることに留意されたい。
サービスディレクトリ210は、DNS−SDレコードタイプ(PTR、SRV、およびTXT)を使用して、データベース内にサービスプロファイル219を記憶する。メッセージブローカ203(すなわち、OMBサービス)と接続される各サービスのサービスプロファイルは、管理コンソール(管理サービス250)を介して、静的もしくは動的のいずれかで、またはOMBサービスのombConfig()APIの使用によって動的に、DNS−SDサーバ218の中にプロビジョニングされる。これらのレコードは、表1に列挙されるサービス発見および構成情報で構成される。
各サービスは、サービスIDおよびサービスタイプを割り当てられ得る。サービスIDは、DNS−SDサービスタイプにマップされ、OMBサービスのDNS−SDベースの発見(例えば、特定のタイプのoneM2MサービスまたはETSI M2Mサービス)を行うために使用されることができる。識別子は、追加のDNS−SDサービスサブタイプも、追加の粒度(例えば、サービスの能力にマップされることができるサブサービス)を提供するために定義され得るように、フォーマットされて使用され得る。
DNS−SD SRVレコードが、サービスディレクトリ210にロードされる各OMBサービス(例えば、場所追跡デバイス220または場所追跡サービス230)のために、随意に、OMBサービスによってサポートされる個々の特徴(例えば、2つの別個の領域の場所カバレッジ)のために、DNS−SDサーバ218上で作成されるであろう。SRVレコード構文は、サービスならびにサブサービスを定義することをサポートする。この構文は、(サブサービスとして)特徴を規定するために使用されることができる。次いで、DNS−SDインターフェース211は、所与のサービスタイプ(例えば、特定のoneM2MサービスまたはETSI M2Mサービス)の利用可能なインスタンスのリストを発見するために、DNS PTRレコードルックアップを行うために使用されることができる。DNS PTRルックアップへの応答は、一致するインスタンス名のリストである。サービスタイプインスタンスのためのDNS−SD PTRレコードは、service.proto.domain PTR instance.service.proto.domainというフォーマットを有し得る。OMBサービスサブタイプインスタンスのためのDNS−SD PTRレコードは、以下のフォーマットを有し得る。
● sub−service.service.proto.domain PTR instance.sub−service.service.proto.domain
○ sub−serviceは、サブサービス名が後に続く、下線文字から成る(例えば、_hdr)。
○ serviceは、サービスプロトコル名が後に続く、下線文字から成る(例えば、_etsiM2M)。このフィールドは、いずれのプロトコルがサービスと通信するために要求されるかを検索エンティティがチェックすることを可能にする。
○ protoは、下線と、「_tcp」(TCPを経由して起動するアプリケーションプロトコルのため)または「_udp」(他の全てのため)のいずれかとから成る。
○ domainは、サービス名が登録されるDNSサブドメインを規定する。それは、「link−local domain」を意味する「local.」であり得るか、または、それは、非ローカルDNSドメイン名(例えば、「com」)であり得る。
● PTRは、DNS PTRレコードで使用されるDNSキーワードである。
● instanceは、サービスインスタンスに割り当てられる使いやすい名前(例えば、OMBサービスインスタンスの名前)である。
タイプ「etsiM2M」および「example.com」と名付けられたドメイン内でホストされるインスタンス名「nrar01」のOMBサービスインスタンスのための例示的PTRレコードが、以下のように示される:nrar.etsiM2M._tcp.example.com.PTRnrar01._nrar._etsiM2M._tcp.example.com。
DNS−SDは、サービスインスタンスが到達されることができる標的ホスト名またはアドレスと、ポートとを定義するために、DNS SRVレコードを使用する。IPベースのアドレスがOMBサービスの間で使用されないので、SRVレコードは、必ずしもクライアントを発見されたサービスに向けさせないであろう。SRVレコードは、バスに参入し、メッセージバスバックボーン202の1つ以上のコンポーネントと通信するために使用されることができるアドレス/ポート/プロトコルの組み合わせのリストにサーチャを向けさせることができる。サーチャのOMBクライアント222は、メッセージバスバックボーン202に接続し、発見されたサービスと通信するために、これらのアドレス/ポート/プロトコルの組み合わせのうちの1つを使用することができる。OMBサービスインスタンスのためのSRVレコードは、service._proto.domain TTL class SRV priority weight port targetというフォーマットを有し得る。OMBサービスサブタイプインスタンスのためのSRVレコードは、sub_service._service._proto.domain TTL class SRV priority weight port targetというフォーマットを有する。用語は、以下のように説明され得る。
・ sub_service:所望のサブサービスの記号名。
・ service:所望のサービスの記号名。
・ proto:所望のサービスのトランスポートプロトコル。これは、通常、TCPまたはUDPのいずれかである。
・ domain:このレコードが有効であるドメイン名。
・ TTL:標準DNS有効期間フィールド。
・ class:標準DNSクラスフィールド(これは、常に、「インターネット」を表す「IN」の値に設定される)。
・ priority:標的ホストの優先順位、より低い値は、より好ましいことを意味する。
・ weight:同一の優先順位を伴うレコードに対する相対的重み。
・ port:サービスが見出されるTCPまたはUDPポート。
・ target:サービスを提供するマシンの正規のホスト名。
タイプ「etsiM2M」およびインスタンス名「nrar01」のOMBサービスインスタンスのための例示的SRVレコードは、_etsiM2M._tcp.example.com.86400 IN SRV 0 5 5060 nrar01.example.comである。
サービスディレクトリ210のためのDNS−SD TXTレコードも、(例えば、管理ツール250によって)各OMBサービスのためにDNS−SDサーバ上で作成されることができる。DNS−SDは、名前を付けられたサービスについての追加の情報を伝える名前/値ペアを記憶するために、DNS TXTレコードを使用する。各名前/値ペアは、「name=value」の形態で、DNS TXTレコード内の独自の構成文字列としてエンコードされる。最初の「=」記号までの全てが、名前である。(存在する場合、後続の「=」記号を含む)文字列の終わりまでの最初の「=」記号の後の全てが、値である。サービスディレクトリ210の観点から、DNS−SD TXTレコードは、OMBサービスの有用な属性情報を記憶するために使用されることができる。例えば、DNS−SD TXTレコードは、以下等の属性名/値ペアを含み得る。
● SERVICE_ID=12345
● SERVICE_TYPE=NAE
● SERVICE_NAME=NAE01
● BROKER_IP_OPTION_1=172.25.0.230
● BORKER_PORT_OPTION_1=5672
● OMB_PROTOCOL_TYPE_OPTION_1=AMQP
● BROKER_IP_OPTION_2=172.25.0.231
● BORKER_PORT_OPTION_2=5673
● OMB_PROTOCOL_TYPE_OPTION_2=HTTP
● SELF_EXHANGE_NAME=NAE01_EX
● SELF_ROUTING_KEY=NAE01_RK
● SELF_QUEUE=NAE01_Q
● SD_EXCHANGE_NAME=SD01_EX
● SD_ROUTING_KEY=SD01_RK
● GDI_EXCHANGE_NAME=GDI01_EX
● GDI_ROUTING_KEY=GDI01_RK
● REQD_SERVICES=SD,GDI,NRAR,NSEC,NHDR
OMBサービス構成は、サービス(例えば、場所追跡デバイス220)がメッセージブローカ203と接続し、その上で通信することができるように、サービスが、それ自体についての情報をOMBクライアント(例えば、OMBクライアント222)に提供するプロセスを指す。構成中に提供される情報は、表1(上記)に示される。本明細書で議論されるアーキテクチャは、OMBサービス構成のための複数の方法をサポートする。第1の方法は、構成ファイルの使用のみに依拠する。第2の方法は、DNS TXTレコードルックアップと結合される構成ファイルに依拠する。第1の方法に対して、この情報の全ては、サービス(例えば、場所追跡サービス230)内に記憶されるOMBサービス構成のためのファイル内に含まれる。例では、場所追跡デバイス220は、APIコールを介して、この構成ファイルをOMBクライアント222にパスする。第1の方法が使用されるとき、ombConfig()APIコールは、メッセージブローカ203への動作をもたらさず、ファイルは、単に、OMBクライアント222にパスされる。しかしながら、OMBクライアント222が場所追跡デバイス220についての情報で構成されると、場所追跡デバイス220は、メッセージバスバックボーン202の一部(例えば、メッセージブローカ203)に登録するために、ombRegister()APIコールを使用し得る。ombRegister()APIおよびombConfig()APIは、表において、および図12のコールフローに関する議論において、本明細書でさらに詳細に議論される。
第2の方法に対して、表1内の情報は、2つの別個のファイルに記憶される。第1のファイルは、DNS情報(表1の最初の4行)を記憶し、サービス(例えば、場所追跡デバイス220)内に記憶される。例では、場所追跡デバイス220は、この第1のファイルをOMBクライアント222にパスし、それは、ombConfig()APIコールを介して行われ得る。残りの情報は、サービスディレクトリ210の中でプロビジョニングされるDNS TXTレコード内に記憶される。OMBクライアント222は、DNS TXTレコードルックアップを介して、残りの情報を読み出す。
図10−図15に図示されるステップを行うエンティティは、論理エンティティであり得ることを理解されたい。ステップは、図17Cまたは図17Dに図示されるもの等のデバイス、サーバ、またはコンピュータシステムのメモリ内に記憶され、そのプロセッサ上で実行し得る。例では、M2Mデバイスの相互作用に関しては以下にさらに詳述されるが、図11の場所追跡サービス230および場所追跡デバイス220が、図17Aの1つ以上のM2M端末デバイス18上に常駐し得る一方で、図11のメッセージブローカ203、サービスディレクトリ201、およびDNS−SDサーバ211ならびにOMB APインターフェース212は、図17AのM2Mゲートウェイデバイス14上に常駐し得る。これは、一例にすぎない。
図10は、サービス(例えば、場所追跡デバイス220)がサービスディレクトリ210をブラウズするためにDNS−SDを使用する、プロセスの例示的説明図である。この例では、場所追跡デバイス220は、ETSIネットワークアプリケーションイネーブルメント(NAE)サービスを検索する。oneM2Mの例では、場所追跡デバイス220は、oneM2Mデバイス管理(DMG)サービスを検索する。ステップ280では、場所追跡デバイス220は、マルチキャストが使用されない場合、ローカルサービスディレクトリサーバ(例えば、サービスディレクトリ210)のユニキャストアドレスで構成される。ステップ281では、サービスディレクトリ210は、メッセージブローカ203にアタッチされたサービスのためにプロビジョニングされるDNS−SDサービス発見レコード(PTR、SRV、およびTXT)を有する。ステップ282では、場所追跡デバイス220は、NAE PTRレコードに対するDNS−SDルックアップを送信する。ステップ283では、サービスディレクトリ283は、DNS−SD応答(例えば、ane01._nae._etsiM2M._tcp.com)を場所追跡デバイス220に送信する。ステップ284では、場所追跡デバイス220は、解決すべき所望のNAE PTRレコードを選択する。ステップ285では、場所追跡デバイス220は、選択されたサービスのためのSRVレコード(例えば、nae01.nae._etsiM2M._tcp.com)に対するDNS−SDルックアップを送信する。ステップ286では、サービスディレクトリ210は、DNS−SD応答(例えば、nae01.example.comFQDN,nae01._nae._etsiM2M._tcp.comを含むSRVレコード)を送信する。このSRVレコードは、バスに参入し、OMBと通信するために使用されることができるアドレス/ポート/プロトコル組み合わせのリストを場所追跡デバイス220に提供する。ステップ287では、場所追跡デバイス220は、TXTレコード(例えば、nae01.example.com)に対するDNS−SDルックアップを送信する。DNS TXTレコードは、サービスについての追加の情報を伝える名前/値ペアを場所追跡デバイス220に提供する。ステップ288では、サービスディレクトリ210は、DNS−SD応答(例えば、nae01の発見情報を含むTXTレコード)を送信する。ステップ289では、場所追跡デバイス220は、受信されたTXTレコード内の発見情報(例えば、nae01)を処理する。
概して、図10のステップは、以下のように考えられ得る:ステップ280では、場所追跡デバイス220は、サービスディレクトリ210のアドレスを事前にプロビジョニングされる。ステップ281では、サービスディレクトリ210は、発見されることができる記録を事前にロードされる。ステップ282では、場所追跡デバイス220は、サービスディレクトリ210がいくつかのNAEサービスについて把握しているかどうかをサービスディレクトリ210に尋ねる。ステップ283では、サービスディレクトリ210は、ポインタのリストを場所追跡デバイス220に提供する。サービスディレクトリ210が把握している各NAEサービスのためのポインタがあろう。各ポインタは、NAEサービスのインスタンスについてさらなる情報を見出すために進むことができる場所を場所追跡デバイス220に伝える。ステップ284では、場所追跡デバイス220は、ポインタを選ぶ。ステップ285では、ポインタは、サービス(例えば、場所追跡サービス230)のためのSRVレコードを読み出すために使用されることができる。SRVレコードは、サービスについての詳細を提供する。具体的には、それは、サービスが到達されることができる場所を伝える。ステップ286では、SRVレコードは、場所追跡デバイス220に提供される。ステップ287では、場所追跡デバイス220は、サービスのためのTXTレコードをフェッチする。TXTレコードは、サービスについてのさらなる詳細を与えるカスタマイズされた記録であることができる。ステップ288では、TXTレコードは、場所追跡デバイス220に送信される。ステップ289では、TXTレコードは、分析され、場所追跡デバイス220は、それがサービスを使用することを所望するかどうかを決定する。
図10の前述のステップに関して要するに、場所追跡デバイス220が発見されたサービスと通信することに関心があると仮定すると、場所追跡デバイス220は、メッセージバスバックボーン202に参入することを決定することができる。場所追跡デバイス220のOMBクライアント222は、発見されたサービスのTXTファイルから、メッセージバスバックボーン202の一部(例えば、メッセージブローカ203)にアクセスするために使用され得る、IPアドレス/ポート番号/プロトコルの組み合わせの組を取得することができる。TXTファイルは、発見されたサービスにアクセスするために、どのような待ち行列が使用され得るかを示すこともできる。
図7は、メッセージバスデータベースサービスの例示的説明図である。データベースサービス240は、データベースサービスを、メッセージブローカ203と接続される他のサービスに提供し得る。データベースサービス240は、図5に図示されるように、他のサービス204のうちの1つであり得る。図7は、データベースサービス240が、一般データベースインターフェース(GDI)サービス242を備えて設計されることを示す。一般データベースインターフェース(GDI)は、データベースアクセスおよびデータ管理の能力を提供する、複数のデータベースへの共通アプリケーションインターフェースである。データベースサービス240の一部(例えば、RDBMS245およびDBMS246)は、大部分が、本明細書で議論されるようなメッセージバスバックボーン202を認識していない。GDIサービス242は、表4に列挙されるOMB APIとインターフェースをとるように設計される。図7では、例えば、OMBクライアント244は、AMQPインターフェース243を利用する。しかしながら、OMBクライアント244は、代替として、OMB API 241が不変のままとなるような、異なるインターフェース(例えば、HTTP)に基づいて使用されることができる。
図9は、どのようにしてメッセージブローカ203に接続されたサービス間のエンドツーエンド通信が機能することができるかという例示的説明図である。各サービスは、そのローカルOMBクライアントとインターフェースをとる。図9は、OMBクライアント265およびOMBクライアント268が、それぞれ、トランスポートインターフェース266およびトランスポートインターフェース267を介して、ブローカとインターフェースをとることを示す。OMBクライアント265およびOMBクライアント268は、異なるトランスポートインターフェースを使用し得る。例えば、OMBクライアント265が、AMQPを介してメッセージブローカ203とインターフェースをとってもよい一方で、OMBクライアント268は、WebSocketsを介してメッセージブローカ203とインターフェースをとる。各サービスは、他のサービス(例えば、x−nrar)からメッセージを受信するために、メッセージブローカ203上でホストされる1つ以上の交換(例えば、交換269)を使用し得る。各サービスは、その交換をその待ち行列と結合し得る。結合は、サービスの待ち行列の名前(例えば、q−nsec)を交換に提供する。この名前は、メッセージをルーティングするために交換によって使用される。各サービスは、他のサービスからメッセージを受信するために、メッセージブローカ203上でホストされる1つ以上の待ち行列を使用する。各OMBクライアント(例えば、OMBクライアント265およびOMBクライアント268)は、メッセージブローカ203への単一トランスポート接続しか要求しない。メッセージブローカ203は、通信チャネルを使用して、この単一トランスポート接続を経由して多重化されたメッセージの送信(生成)および受信(消費)をサポートする。
再度、図5を参照すると、メッセージバスバックボーン202に組み込まれる発見アーキテクチャは、メッセージバスバックボーン202に登録し、メッセージブローカ203を介して通信する前に、サービスが利用可能なサービスをブラウズすることを可能にする。実施例では、CoAPを介して通信する軽量場所追跡センサ(例えば、場所追跡デバイス220)は、そのGPS座標をアップロードするために使用することができる場所追跡サービス(例えば、場所追跡サービス230)を発見することを所望するであろう。追跡センサが発見するであろう場所追跡サービスは、WebSocketsを介して通信する。この使用事例は、図11に示されるような例示的コールフローによって、かつ図5を参照して図示される。
本明細書でさらに詳細に議論されるが、図11は、概して、メッセージバスへの登録およびサービス利用が後に続く、DNS−SD発見について議論する。ステップ291では、場所追跡サービス230は、OMB APIを介して、そのサービスプロファイルをサービスディレクトリ210にパブリッシュし得る。ステップ292では、場所追跡デバイス220は、DNS−SDインターフェース211を使用してサービスディレクトリ210をブラウズする。ステップ293では、場所追跡デバイス220は、メッセージブローカ203と接続することを決定し、それは、場所追跡サービス230の存在によるものであり得る。ステップ294では、場所追跡デバイス220は、メッセージブローカ203を介して場所追跡サービス230とコンタクトする。
図12は、サービスディレクトリへのサービス発見情報のパブリッシュのより詳細な実施例を図示する。要するに、図11のステップ291を詳述する図12を参照すると、メッセージブローカ203にすでに接続されている場所追跡サービス230は、それ(場所追跡サービス230)が他のサービスによって発見されることができるように、そのプロファイルをサービスディレクトリ210にパブリッシュする。場所追跡サービス230のサービスプロファイルがサービスディレクトリ210内に来ると、他のサービスによって発見され得る。場所追跡、課金、画像処理、およびテレメトリ等のサービスは、例えば、サービスディレクトリ210内でそれらのプロファイルをパブリッシュするために、このプロシージャを使用し得る。プロファイルは、ombServiceID、ombServiceType、およびブローカコンタクトアドレス等の情報を含み得る。場所追跡サービス230の例では、ombServiceIDは、メッセージブローカ203と接続される場所追跡サービス230を識別する識別子である。ombServiceTypeは、サービスのタイプを識別する識別子である。この例では、これは、場所追跡サービス230が場所サービスを提供することを識別するであろう。ブローカコンタクトアドレスは、サービスがメッセージバスバックボーン202の1つ以上の部分にコンタクトして参入するために使用し得るURI、IPアドレス、もしくはポート番号であり得る。コンタクトアドレスの組があり得る。各アドレスは、異なるトランスポートプロトコルのために使用され得る。例えば、AMQP URI、WebSockets URI、およびMQTT URIがあり得る。代替として、これらのURIは、サービスディレクトリ210によって提供され得る。
図12をさらに参照すると、ブロック296は、典型的には、始動(例えば、初期化ステップ)時に起こる動作であり、その待ち行列にパブリッシュされるメッセージを受信するために、AMQPブローカにサブスクライブするサービスディレクトリの例である。ステップ301では、ombConfig()APIコールが、OMBクライアント214に送信される。このステップでは、サービスディレクトリ210は、その構成ファイルを用いて、そのOMBクライアント214を構成している。ステップ302では、ombRegister()APIコールが、そのServiceIDをメッセージバスバックボーン202の1つ以上のコンポーネントに登録するために、サービスディレクトリ210から送信される。メッセージバスバックボーン202の1つ以上のコンポーネントは、サービスディレクトリ210のためのメッセージ待ち行列を作成し得る。ステップ303では、ombReceive()(sd_callback_fcn)APIコールを用いて、サービスディレクトリ210は、メッセージがメッセージブローカ203から受信されたときに何をすべきかをOMBクライアント214に知らせる。sd_callback_fcnは、受信されたメッセージをハンドリングするために呼び出されるべき関数へのポインタである。
図12のブロック297は、そのOMBサービスプロファイルをサービスディレクトリにパブリッシュするサービスの例示的フローを図示する。ステップ304では、ombSdRegister()APIコールを介して、場所追跡サービス230は、そのプロファイルがサービスディレクトリ210にロードされることを要求する。ステップ305では、場所追跡サービス230のOMBクライアント231は、ombSdRegister登録メッセージをサービスディレクトリ210のメッセージブローカ203にパブリッシュする。ステップ306では、メッセージブローカ203は、メッセージをサービスディレクトリ210のOMBクライアント214に転送するためにコールバック関数を使用する。メッセージブローカ203は、コールバック関数で以前に構成されているが、このステップは示されていない。ステップ307では、OMBクライアント214は、新しいサービス登録をハンドリングする責任があるサービスディレクトリ関数を呼び出すために、ステップ303で提供されたsd_callback_fcnポインタを使用する。ステップ307のメッセージは、以下のようなものであり得る:sd_callback_fcn(ombMsgID=1234,ombRxServiceID=S1,ombMsgType=SD Reg Request,ombRxMsgPayload=SD Profile)。ステップ308では、サービスディレクトリ210を使用して、プロファイルが記憶され、応答が作成され得る。ステップ309では、ombTransmit()APIコールを使用して、サービスディレクトリ210は、その登録要求が成功したことをそれに知らせるメッセージを新しいサービスに返送する。ステップ309のメッセージは、以下のようなものであり得る:ombTransmit(ombBlocking=FALSE,ombTarget=S1,ombMsgID=1234,ombTxMsgPayload=SD Reg Response)。ステップ310では、OMBクライアント214は、ステップ309のメッセージをメッセージブローカ203にパブリッシュする。ステップ311では、メッセージブローカ203が、ステップ309のメッセージをOMBクライアント231に転送する。ステップ312では、OMBクライアント231は、ステップ309のメッセージを場所追跡サービス230に転送する。
図13は、DNS−SDベースの発見のより詳細な例を図示する。要するに、図11のステップ292を詳述する図13を参照すると、まだメッセージブローカ203と接続されていない場合がある場所追跡デバイス220は、メッセージブローカ203が利用可能な場所追跡サービスを有するかどうかをチェックするために、DNS−SDサーバ218にクエリを行い得る。DNS−SDサーバ218は、メッセージブローカ203のAMQP URI、および場所追跡サービス230のOMBServiceId、またはメッセージバス203と接続された状態で見出されることができる場所追跡サービス230のombServiceTypeを場所追跡デバイス220に提供し得る。随意に、場所追跡デバイス220が、そのDNS−SDクエリを行うとき、場所追跡デバイス220は、どのようなタイプのトランスポートをそれがサポートするか(例えば、AMQP)を示し得、DNS−SDサーバ218は、どのようなIPアドレス、ポート番号、またはプロトコル情報がTXTレコードに含まれるべきかを決定するために、この情報を使用し得る。場所追跡デバイス220が、それが使用することを所望するサービス(例えば、場所追跡サービス230)を選択すると、サービスにコンタクトしてそれを使用する方法を習得するために、場所追跡サービス230のDNS TXTファイルを使用するであろう。ombServiceIDは、メッセージブローカ203と接続される場所追跡サービス230を識別する識別子である。ombServiceTypeは、サービスのタイプを識別する識別子である。この例では、これは、場所追跡サービス230が場所サービスを提供することを識別するであろう。TXTファイルは、ブローカコンタクトアドレスを含むであろう。BROKER_IP、BROKER_PORT、およびOMB_PROTOCOL_TYPEは、コンタクトアドレスおよびメッセージングプロトコルを示す。TXTファイルは、発見を行う場所追跡デバイス220が、メッセージブローカ203にコンタクトするためにどのようなプロトコルを使用するであろうかを選定することができるように、複数のコンタクトアドレスおよびプロトコルを含み得る。場所追跡デバイス220は、DNS TXTファイルから関連SERVICE_IDを習得する。SERVICE_IDは、メッセージバスバックボーン202の1つまたはその一部と接続するときに場所追跡サービス230にコンタクトするために、場所追跡デバイス220によって使用され得る。
図13をさらに参照すると、OMBクライアント222とDNS−SDサーバ210との間の相互作用は、メッセージブローカ203を経由して起こらず、それは、別個のDNS−SDインターフェース211を経由する。代替として、OMBクライアント222がDNS−SDインターフェースをサポートしなかった場合、場所追跡デバイス220がDNS−SDをサポートし、DNS−SDサーバ210にクエリを行い得る。DNS−SD発見に関する詳細は、以下の通りである。ステップ320では、場所追跡デバイス220は、特定のタイプのサービスに対してサービスディレクトリ210をブラウズするために、OMBクライアント222がそのDNS−SDインターフェース211を使用することを要求し得る。本明細書で定義されるombSdDiscover()APIコールは、OMBクライアント222に要求を行うために使用され得る。ステップ320の代替として、OMBクライアント222は、複数のサーバ上で検索を行うことができるように、複数のDNS−SDサーバのコンタクト情報をプロビジョニングされ得る。
ステップ321では、本明細書でさらに詳細に議論されるように、OMBクライアント222は、DNS−SDサーバ218にPTRレコード要求を行う。ステップ322では、DNS−SDサーバ218は、要求されたServiceTypeに一致する0−N serviceIdで応答する。ステップ323では、OMBクライアント222は、ステップ322で提供されたリスト内の第1のサービスに関連付けられるTXTレコードを要求する。ステップ324では、DNS−SDサーバ218は、第1のサービスのためのTXTレコードで応答する。ステップ325では、OMBクライアント222は、第1のサービスのためのTXTレコードを記憶する。ステップ326では、OMBクライアント222は、ステップ322で提供されたリスト内のN番目のサービスに関連付けられるTXTレコードを要求するであろう。ステップ327では、DNS−SDサーバ218は、N番目のサービスのためのTXTレコードで応答する。ステップ328では、OMBクライアント222は、N番目のサービスのためのTXTレコードを記憶する。ステップ329では、OMBクライアント222は、本明細書で議論される、ombSdDiscover()APIに応答することによって、発見されたサービスのリストを場所追跡デバイス220に提供する。
図14は、メッセージブローカ203またはメッセージバスバックボーン202の他の部分と接続するためのより詳細な例示的方法フローを図示する。要するに、図11のステップ293を詳述する図14を参照すると、場所追跡デバイス220は、メッセージバスバックボーン202の1つ以上のコンポーネント(例えば、メッセージブローカ203)に参入することを決定し得る。場所追跡デバイス220は、メッセージブローカ203との接続(例えば、AMQP接続)を開くために、前のステップで発見されたブローカコンタクトアドレスを使用し得る。メッセージブローカ203との接続に関する詳細は、以下の通りである。ステップ330では、場所追跡デバイス220は、OMBクライアント222がメッセージブローカ203と接続することを要求するために、ombRegister()APIを使用する。ステップ331では、OMBクライアント222がAMQPトランスポートインターフェースを伴って設計されると仮定して、OMBクライアント222は、メッセージブローカ203にコンタクトし、接続が開かれることを要求するために、AMQP URIを使用する。AMQP URIは、図13のステップ292に関して説明される発見プロセス中に取得されているであろう。OMBクライアント222は、他のトランスポートインターフェース(例えば、CoAP等)を使用するように設計され得る。この例は、下層トランスポートがAMQPである事例を対象とする。
ステップ332では、メッセージブローカ203に対するAMQPインターフェースは、ステップ331の要求に応答する。ステップ333では、セキュリティが、AMQP接続上で確立される(例えば、セキュリティチャレンジ)。OMBクライアント222は、DNS−SDルックアップ中に取得されたTXTレコードからの接続パラメータを使用する。ステップ334では、セキュリティが、AMQP接続上で確立される(例えば、セキュリティ応答)。ステップ335では、AMQP接続が構成される(例えば、提案された最大チャネル、提案された最大フレームサイズ、所望のハートビート遅延等)。OMBクライアント222は、DNS−SDルックアップ中に取得されたTXTレコードからの接続パラメータを使用する。ステップ336では、AMQP接続が構成される(例えば、ネゴシエートされた最大チャネル、ネゴシエートされた最大フレームサイズ、ネゴシエートされたハートビート遅延等)。ステップ337では、メッセージブローカ203のAMQPは、接続が確立されていることを肯定応答する(例えば、プロトコルバージョン、サーバプロパティ、利用可能なセキュリティ等)。ステップ338では、OMBクライアント222のAMQPは、接続が確立されていることを肯定応答する(例えば、選択されたセキュリティ、クライアントプロパティ等)。ステップ339では、OMBクライアント222は、ステップ331のombRegister()要求に応答する。応答は、登録要求が成功した、拒否された、またはエラーを引き起こしたかどうかというインジケーションを含み得る。
図15は、メッセージバスバックボーン202の1つ以上のコンポーネント(例えば、メッセージブローカ203)を使用して、発見されたサービスと通信するための例示的方法フローである。要するに、場所追跡デバイス220は、メッセージを場所追跡サービス230に送信するために、発見されたombServiceIDを使用する。発見されたOMBServiceIDまたはombServiceTypeが使用されることに留意されたい。ステップ341では、場所追跡デバイス220は、前に発見された場所追跡サービス230のために意図されるメッセージ(例えば、ombTransmit()APIコール)を送信する。ステップ341のメッセージは、以下のようなものであり得る:ombTransmit(ombBlocking=False,ombTarget=S2,ombToken=ABC,ombTxMsgPayload ombCallbackFcn=S1_callback_fcn)。前に発見されたOMBServiceIDは、標的場所追跡サービス230を識別するために使用され得る。図15では、場所追跡サービス230が、S2(サービス2)と呼ばれる一方で、場所追跡デバイス220は、S1(サービス1)と呼ばれる。ステップ342では、OMBクライアント222は、ステップ341のメッセージをメッセージブローカ203にパブリッシュする。ステップ342のメッセージは、以下のようなものであり得る:publish(exchange=’x−s2’,routing key=’S2’,OMB Message)。ステップ343では、メッセージブローカ203は、ステップ341のメッセージをOMBクライアント231に転送する。ステップ344では、OMBクライアント222は、メッセージを場所追跡サービス230に転送する。ステップ344のメッセージは、以下のようなものであり得る:sd_callback_fcn(ombMsgID=1234,ombToken=ABC,ombRxServiceID=S1,ombMsgType=Tx Request,ombRxMsgPayload=Tx payload)。ステップ345では、場所追跡サービス230は、ステップ341のメッセージを処理する。ステップ346では、場所追跡サービス230は、ombTransmit APIを使用することによって要求に応答する。場所追跡サービス230は、ステップ344でsd_callback_fcnによって提供された同一のサービスIDを使用することによって、それが応答しているサービスを識別し得る。ステップ346のメッセージは、以下のようなものであり得る:ombTransmit(ombBlocking=FALSE,ombTarget=S1,ombMsgID=1234,ombToken=ABC,ombTxMsgPayload=Tx Response)。ステップ347では、OMBクライアント231は、メッセージをメッセージブローカ203にパブリッシュする。ステップ347のメッセージは、以下のようなものであり得る:publish(exchange=’x−s1’,routing key=’S1’,OMB Message)。ステップ348では、メッセージブローカ203は、ステップ346のメッセージをOMBクライアント222に転送する。ステップ349では、OMBクライアント222は、ステップ346のメッセージを、要求を処理する場所追跡デバイス220に転送する。ステップ349のメッセージは、以下のようなものであり得る:s1_callback_fcn(ombRspCode,ombRxMsgType=Tx_Rsp,ombToken=ABC,ombRxMsgPayload)。
図16は、本明細書で議論されるOMBアーキテクチャを使用して、どのようにしてoneM2Mサービス(CSF)またはサービスコンポーネント(例えば、サービスのグループ)が展開され得るかという例示的実装を図示する。各サービスが独自のOMBクライアント(CSF1およびCSF6)を伴って展開されることができることに留意されたい。複数のサービスがOMBクライアント(CSF2およびCSF3)を共有し得ることに留意されたい。Mcc、Mca、およびMcn参照点は、メッセージバスブローカをトラバースしないこともある。それらは、それぞれ、遠隔サービス、アプリケーション、または外部ネットワークに到達するために、インターネットに直接ルーティングされ得る。Msc参照点は、OMBにマップまたは結合され得る(どのようにしてMsc参照点がサービスを接続するかを実証する別の図については、図4を参照されたい)。CSFおよびOMBクライアントは、同一のネットワークサーバ上または別個の遠隔ネットワークサーバ上に展開され得ることに留意されたい。
ここでは、メッセージブローカ203とのサービスのトランスポートに依存しない接続を可能にすることを補助し得るOMB API(例えば、OMB API 225、OMB API214等)に関する詳細が議論される。メッセージブローカ203と接続されると、OMB API 225は、メッセージブローカ203と接続された他のサービスとメッセージを交換するために使用されることができる。メッセージブローカ203は、ブローカとしての役割を果たすので、クライアント間でメッセージをパスする。以下の特徴が、OMB APIによってサポートされ得る:1)独立し、下層トランスポートプロトコルに依存しない、2)独立し、上層サービスプロトコルに依存しない、3)ブロッキングおよび非ブロッキング機能性をサポートする、および、4)オブジェクト指向原理に基づく。記述されるように、OMB API 225は、独立し、下層OMBトランスポートプロトコルに依存しない(例えば、メッセージパッシング、AMQP、XMPP、MQTT、Web Sockets等)。下層トランスポートは、OMBクライアント222によって隠され得る。OMB API 225は、独立し、メッセージブローカ203を使用する上層サービスプロトコルに依存しない。OMB API 225を使用する各上層サービス(例えば、oneM2Mサービス、ETSI M2Mサービス等)は、OMB API 225に結合されることが予期される。したがって、OMB APIは、サービスが使用するペイロードフォーマットから独立している。例えば、サービスは、XML、JSON、カスタムフォーマット等を使用することができる。
OMB API 225は、ブロッキングおよび非ブロッキング機能性をサポートする。非ブロッキング機能性をサポートするために、OMB API(例えば、OMB API 225)は、コールバック関数がOMBクライアント222に提供されることを可能にする。メッセージは、メッセージブローカ203上に配置されることができ、コールバック関数は、応答が受信されるときにOMBクライアント222によって呼び出されることができる。OMB API 225の設計は、オブジェクト指向原理に基づき、ライブラリとして設計される。
OMB APIは、異なるタイプの機能性をサポートする。第1の例では、サービス(例えば、場所追跡デバイス22)は、対応するOMBサービス構成設定に基づいてOMBクライアント222を構成することができる(表1参照)。第2の例では、場所追跡サービス230は、OMBクライアント225とメッセージブローカ203との間の接続または登録を開始し得る。これは、対応するOMBサービス構成設定に基づいてメッセージブローカ203を構成すること(例えば、交換、待ち行列、結合等の必要なメッセージブローカ構築物を作成/構成する)をもたらす。第3の例では、OMBサービス(例えば、場所追跡デバイス220)は、サービスディレクトリ210を介して、メッセージブローカ203に接続された他の利用可能なOMBサービス(例えば、場所追跡サービス230)を発見し得る。第4の例では、OMBサービスは、データベースサービス240に記憶された情報を作成し/読み出し/更新し/削除し得る。第5の例では、OMBサービスは、メッセージブローカ203を経由してメッセージを送信または受信し得る。第6の例では、OMBサービスは、それ自体についての管理またはデバッグ情報を管理サービス250に提供し得る。第7の例では、管理サービスは、OMBサービスを管理するために使用され得る。第8の例では、OMBサービスは、OMBサービスディレクトリにサブスクライブし、通知基準(例えば、特定のタイプのサービスがメッセージブローカ203と接続する場合/とき)を規定し得る。第9の例では、OMBサービスは、OMBクライアント(例えば、OMBクライアント222)とメッセージブローカ203との間の切断または登録解除を開始し得る。
メッセージブローカ203またはメッセージバスバックボーン202の別の部分と接続するサービスは、OMBServiceIDを使用し得る。OMBServiceIDは、メッセージバスバックボーン202の1つ以上のコンポーネントによって割り当てられる識別子である。OMBServiceIDは、バス上の各サービスを識別するために使用される。OMBServiceIDは、サービスの中にプロビジョニングされ得るか、またはメッセージバスバックボーン202への登録時に割り当てられ得る。サービスは、メッセージバスバックボーン202と接続し、いかなるサービスも他のサービスに提供しないこともある。しかしながら、そのようなサービスは、それがバス上で通信することができるように、依然としてOMBServiceIDを割り当てられるであろう。サービスを提供しない「サービス」の例は、単純に、他のサービスから情報を収集し、アラームをトリガするアラームサービス(例えば、サイレンデバイス)であり得る。
サービスは、ombServiceTypeも割り当てられ得る。ombServiceTypeは、サービスのタイプを識別する。例えば、ombServiceTypeは、関連付けられたサービスがセンサであること、または関連付けられたサービスが画像処理用であることを示し得る。ombServiceTypeは、サービスの中にプロビジョニングされ得るか、またはメッセージバスバックボーン202の1つ以上のコンポーネントへの登録時に割り当てられ得る。OMBServiceIDおよびombServiceTypeは、他のサービスを発見してアドレスするために、サービスによって使用される。例えば、OMBServiceIDは、メッセージをサービスの特定のインスタンスに送信するために使用されることができ、ombServiceTypeは、特定のサービスタイプに関連する全てのメッセージにサブスクライブするために使用されることができる。例示的コールフローが、本明細書で議論される。OMBクライアントは、ombGroupId等の追加の随意の識別子を割り当てられ得る。複数のombGroupIdが、各OMBクライアントに割り当てられ得る。ombGroupIdは、所有権、コスト、タイプ、アクセス権等に基づいて、クライアントをグループ化するために使用され得る。
OMB APIのさらなる説明が、本明細書で議論される。以下は、OMB API 225等によってサポートされる関数コールがグループ化され得るカテゴリである:1)メッセージブローカを経由して通信するために使用される一般OMB API関数(表2に示される)、2)OMBサービスディレクトリAPI関数(表3に示される)、3)OMBデータベースAPI関数(表4に示される)、および4)OMB管理コンソールAPI関数。
表5は、OMB APIによってサポートされる共通のパラメータの組を列挙する。これらの共通パラメータは、OMB APIコールの多くの中で出現し、ここで説明される。
ombConfig()関数は、サービスおよびメッセージブローカに特定の情報でOMBクライアントを構成するために、サービスによって呼び出される。さらなる詳細が、表6に示されている。
表7は、可能なombRegister()入出力パラメータを列挙する。ombRegister()は、メッセージバスバックボーンに登録し、OMB交換を作成するためにOMBサービスによって呼び出される。交換は、OMBの一部である。交換は、サービスからメッセージを受理し、それを待ち行列にルーティングする。待ち行列に入ると、メッセージは、1つ以上のサービスに送信されるであろう。基本的に、この関数は、OMBへの接続を作成するために使用される。「接続」は、「OMB交換」である。
表8は、可能なombDeregister()入出力パラメータを列挙する。ombDeregister()関数は、メッセージブローカと登録解除するために、OMBサービスによって呼び出される。
ombReceive()関数は、OMBクライアントから未承諾メッセージを受信するために、OMBサービスによって呼び出される。この受信は、ブロッキングまたは非ブロッキング様式のいずれかで行われることができる。加えて、受信は、1つ以上の定義されたOMBメッセージタイプに対して行われることができる。
OMBクライアントがメッセージブローカからOMBメッセージを受信するとき、それは、メッセージが承諾または未承諾であるかどうかを決定するようにチェックするであろう。承諾メッセージは、OMBクライアントからの以前に伝送されたOMBメッセージと一致するOMBメッセージIDを有する(例えば、このメッセージは、前の要求への応答である)。未承諾メッセージは、以前に伝送されたOMBメッセージと一致しないOMBメッセージである。
表9を参照すると、受信されるOMBメッセージのタイプに応じて、OMBクライアントは、それをOMBサービスに転送する前に、OMBメッセージペイロードをデコードすることも、デコードしないこともある。例えば、OMBクライアントは、OMBサービスディレクトリから発信するOMBメッセージのOMBメッセージペイロードをデコードする。一方で、OMBクライアントは、バックボーンサービスではない、OMBクライアントが認識/知識を有していないOMBサービス(例えば、oneM2MサービスまたはETSI M2Mサービス等)から発信するOMBメッセージのOMBメッセージペイロードをデコードしない。
表10は、可能なombTransmit()入出力パラメータを列挙する。ombTransmit()関数は、メッセージを他のOMBサービスに伝送するために、OMBサービスによって呼び出される。この伝送は、ブロッキングまたは非ブロッキング様式のいずれかで行われることができる。
表11は、可能なombSdRegister()入出力パラメータを列挙する。ombSdRegister()関数は、(DNS−SDインターフェースではなくOMBを介して)OMBサービスディレクトリ内にサービスプロファイルを作成するために、OMBサービスによって呼び出される。登録は、存続期間が満了する前にombSdUpdate()を介して更新される必要があり得るように、それに関連付けられる存続期間を有し得る。そうでなければ、登録は、OMBサービスディレクトリによって自動的に削除され得る。構成ファイルおよび/またはDNS TXTレコードからの情報は、OMBサービスディレクトリプロファイルを作成するために使用され得る。
表12は、可能なombSdDeregister()入出力パラメータを列挙する。ombSdDeregister()関数は、OMBサービスディレクトリからサービスプロファイルを登録解除するために、OMBサービスによって呼び出される。
表13は、可能なombSdUpdate()入出力パラメータを列挙する。ombSdUpdate()関数は、そのサービスディレクトリプロファイルを更新するために、OMBサービスによって呼び出される。この関数は、OMBサービスがそのOMBサービスディレクトリプロファイルを認識し、サービスディレクトリ内で独自のプロファイルを動的に更新/作成するときに使用される。
表14は、可能なombSdDiscover()入出力パラメータを列挙する。ombSdDiscover()関数は、特定のクエリに一致するOMBに接続された利用可能なOMBサービスを発見して読み出すために、OMBサービスディレクトリにクエリを行うためにOMBサービスによって呼び出される。
このAPIコールは、(利用可能であるときに)下層DNSベースのサービスディレクトリを利用するであろう。そうでなければ、それは、発見のためにOMBベースのサービスディレクトリを利用するであろう。
表15は、可能なombSdSubscribe()入出力パラメータを列挙する。ombSdSubscribe()関数は、OMBサービスプロファイルが作成、更新、または削除されるとき等に、状態変化の通知を受信するために、OMBサービスディレクトリにサブスクライブするためにOMBサービスによって呼び出される。
表16は、可能なombDbRegister()入出力パラメータを列挙する。ombDbRegister()関数は、OMBデータベースに登録するために、OMBサービスによって呼び出される。
表17は、可能なombDbDeregister()入出力パラメータを列挙する。ombDbDeregister()関数は、OMBデータベースから登録解除するために、OMBサービスによって呼び出される。
表18は、可能なombDbCreateResource()入出力パラメータを列挙する。ombDbCreateResource()関数は、OMBデータベース内でリソースを作成するために、OMBサービスによって呼び出される。
表19は、可能なombDbRetrieveResource()入出力パラメータを列挙する。ombDbRetrieveResource()関数は、OMBデータベースからリソースを読み出すために、OMBサービスによって呼び出される。
表20は、可能なombDbUpdateResource()入出力パラメータを列挙する。ombDbUpdateResource()関数は、OMBデータベース内のリソースを更新するために、OMBサービスによって呼び出される。
表21は、可能なombDbDeleteResource()入出力パラメータを列挙する。ombDbDeleteResource()関数は、OMBデータベース内のリソースを削除するために、OMBサービスによって呼び出される。
表22は、可能なombDbFindAllSubscriptions()入出力パラメータを列挙する。ombDbFindAllSubscriptions()関数は、データベース内の標的リソースの下の全てのサブスクライブリソースを再帰的に見出すために、OMBサービスによって呼び出される。
表23は、可能なombDbFindAllChildResources()入出力パラメータを列挙する。ombDbFindAllChildResources()関数は、OMBデータベース内で1つのレベルのみに対して親リソースの下の全ての子リソースを見出すために、OMBサービスによって呼び出される。
表24は、可能なombDbFindAllChildResourcesRecursively()入出力パラメータを列挙する。ombDbFindAllChildResourcesRecursively()関数は、OMBデータベース内で再帰的に所与の標的リソースの下の全ての子リソースを見出すために、OMBサービスによって呼び出される。
表25は、可能なombDbIsResourcePresent()入出力パラメータを列挙する。ombDbIsResourcePresent()関数は、規定検索文字列に一致するリソースについてOMBデータベースを再帰的に検索するように、OMBサービスによって呼び出される。
Advanced Message Queuing Protocol(AMQP)およびMessage Queuing Telemetry Transport(MQTT)等の従来のメッセージングバスプロトコルは、どのようなサービスがメッセージバス上で利用可能であるかを動的に発見するための組み込みのサポートを有していない。したがって、メッセージバスに接続されるサービスは、どのような他のメッセージがメッセージバス上にあるかを認識しない場合がある。これは、メッセージバスのサービスの過小利用をもたらし得る。例えば、ホームオートメーションサービスプロバイダは、地元の気象状態についての情報を提供するサービスに接続することが可能である場合、家庭暖房および冷房システムをより効率的に管理することが可能であり得る。AMQPおよびMQTTは、ホームオートメーションプロバイダが気象サービスを動的に発見して使用する手段を提供しない。
サービスがアクセスすることを所望する別のサービスを発見する場合、2つのサービスの下層トランスポートプロトコルの適合性がないであろう可能性がある。例えば、低コストIoTセンサ上でホストされるサービスが、CoAP等の軽量UDPベースのプロトコルを介してメッセージングシステムに接続し得る一方で、サーバ上でホストされるデータマイニングサービスは、WebSockets等のTCPベースのプロトコルを介してメッセージングシステムに接続し得る。メッセージブローカと接続するためにサービスによって使用される、本明細書で議論されるAPIまたはプロトコルは、ピアサービスによって使用されるトランスポートプロトコルに非依存であり得る。新しいプロトコルが、OMBクライアント265のトランスポートインターフェースを更新することによってサポートされることができる。OMBクライアントAPIは、必ずしも変化せず、トランスポートインターフェースが、変化するであろう。メッセージブローカもまた、新しいトランスポートインターフェースをサポートするために更新されるであろう。
サービスは、動的にメッセージバスに関連付けおよび関連付け解除し得る。サービスがメッセージバスに関連付けるとき、他のサービスが通知され得る。例えば、暖房および冷房システムサービスは、気象感知サービスが利用可能であるときを把握することを所望し得る。サービスがメッセージバスに関連付け解除するとき、他のサービスが通知され得る。例えば、同一の暖房および冷房システムサービスは、新しい気象感知サービスをみつけ得るように、気象感知サービスが関連付け解除するときを把握することを所望し得る。従来、新しいメンバがメッセージバスに関連付けおよび関連付け解除するとき、メッセージバスに関連付けられる全てのサービスが通知されるであろうことを当然のことと思わないであろう。本明細書で議論されるようなメッセージバスプロトコルまたはインフラストラクチャは、サービスがどのような他のサービスに関心があるかを示し、これらの他のサービスがメッセージバスに関連付けおよび関連付け解除するとき、メッセージバスがサービスに知らせることを要求する手段を提供する。
本開示の全体を通して、メッセージバスバックボーンと接続し、どのようなサービスがメッセージバスバックボーンの1つ以上のコンポーネント(例えば、メッセージブローカ203)を介して利用可能である(例えば、それに登録または接続される)かをブラウズするためにサービスディレクトリを使用するサービスが参照される。「デバイス」という用語は、サービスと同義的に使用されることができる。サービスは、多くの場合、あるタイプの計算または記憶を行う論理エンティティを指す。デバイスは、多くの場合、物理的であるものを指し、サービスより劣った機能性を有し得る。例えば、サイレンデバイスは、単純に、他のサービスから感知された情報を収集し、サイレンを鳴らすかどうかについて決定を行い得る。サービスおよびデバイスは両方とも、本明細書で開示されるようなメッセージバスバックボーンと接続し、どのようなサービスがメッセージバスバックボーンの1つ以上のコンポーネントを介して利用可能であるかをブラウズするためにサービスディレクトリを使用することができる。本明細書で議論されるリソースは、ネットワーク(例えば、ウェブ)を介して識別され、名前を付けられ、(典型的には、URIを使用して)アドレスされることができるエンティティである。
oneM2MおよびETSI M2Mアーキテクチャが、本明細書で背景として説明され、本明細書に説明される主題を例証するために使用され得るが、本明細書に説明される主題の実装は、本開示の範囲内にとどまりながら変動し得ることを理解されたい。当業者はまた、開示される主題が、本明細書で議論されるoneM2MおよびETSI M2Mアーキテクチャを使用する実装に限定されず、むしろ、他のアーキテクチャおよびシステムで実装され得ることを認識するであろう。
図17Aは、1つ以上の開示される概念が実装され得る、例示的マシンツーマシン(M2M)、モノのインターネット(IoT)、またはモノのウェブ(WoT)通信システム10の略図である。概して、M2M技術は、IoT/WoTのための構築ブロックを提供し、任意のM2Mデバイス、M2Mゲートウェイ、またはM2Mサービスプラットフォームは、IoT/WoTのコンポーネントならびにIoT/WoTサービス層等であり得る。
図17Aに示されるように、M2M/IoT/WoT通信システム10は、通信ネットワーク12を含む。通信ネットワーク12は、固定ネットワーク(例えば、Ethernet(登録商標)、Fiber、ISDN、PLC等)または無線ネットワーク(例えば、WLAN、セルラー等)、もしくは異種ネットワークのネットワークであり得る。例えば、通信ネットワーク12は、音声、データ、ビデオ、メッセージング、ブロードキャスト等のコンテンツを複数のユーザに提供する複数のアクセスネットワークから成り得る。例えば、通信ネットワーク12は、符号分割多重アクセス(CDMA)、時分割多重アクセス(TDMA)、周波数分割多重アクセス(FDMA)、直交FDMA(OFDMA)、単一キャリアFDMA(SC−FDMA)等の1つ以上のチャネルアクセス方法を採用し得る。さらに、通信ネットワーク12は、例えば、コアネットワーク、インターネット、センサネットワーク、工業制御ネットワーク、パーソナルエリアネットワーク、融合個人ネットワーク、衛星ネットワーク、ホームネットワーク、または企業ネットワーク等の他のネットワークを備え得る。
図17Aに示されるように、M2M/IoT/WoT通信システム10は、インフラストラクチャドメインと、フィールドドメインとを含み得る。インフラストラクチャドメインは、エンドツーエンドM2M展開のネットワーク側を指し、フィールドドメインは、通常はM2Mゲートウェイの背後にある、エリアネットワークを指す。フィールドドメインは、M2Mゲートウェイ14と、端末デバイス18とを含む。任意の数のM2Mゲートウェイデバイス14およびM2M端末デバイス18が、所望に応じてM2M/IoT/WoT通信システム10に含まれ得ることが理解されるであろう。M2Mゲートウェイデバイス14およびM2M端末デバイス18の各々は、通信ネットワーク12または直接無線リンクを介して、信号を伝送および受信するように構成される。M2Mゲートウェイデバイス14は、無線M2Mデバイス(例えば、セルラーおよび非セルラー)ならびに固定ネットワークM2Mデバイス(例えば、PLC)が、通信ネットワーク12等のオペレータネットワークを通して、または直接無線リンクを通してのいずれかで、通信することを可能にする。例えば、M2Mデバイス18は、データを収集し、通信ネットワーク12または直接無線リンクを介して、データをM2Mアプリケーション20もしくはM2Mデバイス18に送信し得る。M2Mデバイス18はまた、M2Mアプリケーション20またはM2Mデバイス18からデータを受信し得る。さらに、データおよび信号は、以下で説明されるように、M2Mサービス層22を介して、M2Mアプリケーション20に送信され、そこから受信され得る。M2Mデバイス18およびゲートウェイ14は、例えば、セルラー、WLAN、WPAN(例えば、Zigbee(登録商標)、6LoWPAN、Bluetooth(登録商標))、直接無線リンク、および有線を含む、種々のネットワークを介して通信し得る。
図17Bを参照すると、フィールドドメイン内の図示されるM2Mサービス層22は、M2Mアプリケーション20、M2Mゲートウェイデバイス14、およびM2M端末デバイス18ならびに通信ネットワーク12のためのサービスを提供する。M2Mサービス層22は、所望に応じて、任意の数のM2Mアプリケーション、M2Mゲートウェイデバイス14、M2M端末デバイス18、および通信ネットワーク12と通信し得ることが理解されるであろう。M2Mサービス層22は、1つ以上のサーバ、コンピュータ等によって実装され得る。M2Mサービス層22は、M2M端末デバイス18、M2Mゲートウェイデバイス14、およびM2Mアプリケーション20に適用されるサービス能力を提供する。M2Mサービス層22の機能は、例えば、ウェブサーバとして、セルラーコアネットワークで、クラウドで等の種々の方法で実装され得る。
図示されるM2Mサービス層22と同様に、インフラストラクチャドメイン内にM2Mサービス層22’がある。M2Mサービス層22’は、インフラストラクチャドメイン内のM2Mアプリケーション20’および下層通信ネットワーク12’のためのサービスを提供する。M2Mサービス層22’はまた、フィールドドメイン内のM2Mゲートウェイデバイス14およびM2M端末デバイス18のためのサービスも提供する。M2Mサービス層22’は、任意の数のM2Mアプリケーション、M2Mゲートウェイデバイス、およびM2M端末デバイスと通信し得ることが理解されるであろう。M2Mサービス層22’は、異なるサービスプロバイダによってサービス層と相互作用し得る。M2Mサービス層22’は、1つ以上のサーバ、コンピュータ、仮想マシン(例えば、クラウド/計算/記憶ファーム等)等によって実装され得る。
図17Bも参照すると、M2Mサービス層22および22’は、多様なアプリケーションおよびバーティカルが活用することができる、サービス配信能力のコアセットを提供する。これらのサービス能力は、M2Mアプリケーション20および20’がデバイスと相互作用し、データ収集、データ分析、デバイス管理、セキュリティ、課金、サービス/デバイス発見等の機能を果たすことを可能にする。本質的に、これらのサービス能力は、これらの機能性を実装する負担をアプリケーションから取り除き、したがって、アプリケーション開発を単純化し、市場に出すコストおよび時間を削減する。サービス層22および22’はまた、M2Mアプリケーション20および20’が、サービス層22および22’が提供するサービスと関連して、種々のネットワーク12および12’を通して通信することも可能にする。
いくつかの例では、M2Mアプリケーション20および20’は、本明細書で議論されるように、オープンメッセージバスアーキテクチャの1つ以上のコンポーネントを使用して通信する所望のアプリケーションを含み得る。M2Mアプリケーション20および20’は、限定ではないが、輸送、保健および健康、コネクテッドホーム、エネルギー管理、アセット追跡、ならびにセキュリティおよび監視等の種々の業界での用途を含み得る。上記のように、システムのデバイス、ゲートウェイ、および他のサーバを横断して起動するM2Mサービス層は、例えば、データ収集、デバイス管理、セキュリティ、課金、場所追跡/ジオフェンシング、デバイス/サービス発見、およびレガシーシステム統合等の機能をサポートし、サービスとしてこれらの機能をM2Mアプリケーション20および20’に提供する。
本願のオープンメッセージバスアーキテクチャの1つ以上のコンポーネントは、サービス層に関連して実装され得る。サービス層は、アプリケーションプログラミングインターフェース(API)および下層ネットワーキングインターフェースの組を通して付加価値サービス能力をサポートするソフトウェアミドルウェア層である。M2Mエンティティ(例えば、ハードウェアおよびソフトウェアの組み合わせによって実装され得るデバイス、ゲートウェイ、またはサービス/プラットフォーム等のM2M機能エンティティ)は、アプリケーションまたはサービスを提供し得る。ETSI M2MおよびoneM2Mは両方とも、本願のオープンメッセージバスアーキテクチャの1つ以上のコンポーネントを含み得る、サービス層を使用する。ETSI M2Mのサービス層は、サービス能力層(SCL)と称される。SCLは、M2Mデバイス(デバイスSCL(DSCL)と称される)、ゲートウェイ(ゲートウェイSCL(GSCL)と称される)、および/またはネットワークノード(ネットワークSCL(NSCL)と称される)内で実装され得る。oneM2Mサービス層は、共通サービス機能(CSF)(すなわち、サービス能力)の組をサポートする。1つ以上の特定のタイプのCSFの組のインスタンス化は、異なるタイプのネットワークノード(例えば、インフラストラクチャノード、中間ノード、特定用途向けノード)上でホストされることができる共通サービスエンティティ(CSE)と称される。さらに、本願のオープンメッセージバスアーキテクチャの1つ以上のコンポーネントは、本願のオープンメッセージバスアーキテクチャの1つ以上のコンポーネント等のサービスにアクセスするために、サービス指向アーキテクチャ(SOA)および/もしくはリソース指向アーキテクチャ(ROA)を使用する、M2Mネットワークの一部として実装されることができる。
図17Cは、M2M端末デバイス18等の例示的M2Mデバイス30の系統図である。図17Cに示されるように、M2Mデバイス30(例えば、場所追跡デバイス220)は、プロセッサ32と、送受信機34と、伝送/受信要素36と、スピーカ/マイクロホン38と、キーパッド40と、ディスプレイ/タッチパッド42と、非取り外し可能メモリ44と、取り外し可能メモリ46と、電源48と、全地球測位システム(GPS)チップセット50と、他の周辺機器52とを含み得る。M2Mデバイス30は、開示される主題と一致したままで、先述の要素の任意の副次的組み合わせを含み得ることが理解されるであろう。M2Mデバイス30(例えば、場所追跡デバイス220)は、オープンメッセージバスアーキテクチャのための開示されるシステムおよび方法を使用するデバイスであり得る。
プロセッサ32は、汎用プロセッサ、特殊目的プロセッサ、従来のプロセッサ、デジタル信号プロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアと関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、任意の他のタイプの集積回路(IC)、状態マシン等であり得る。プロセッサ32は、信号符号化、データ処理、電力制御、入出力処理、および/またはM2Mデバイス30が無線環境で動作することを可能にする任意の他の機能性を果たし得る。プロセッサ32は、伝送/受信要素36に結合され得る送受信機34に結合され得る。図17Cは、プロセッサ32および送受信機34を別個のコンポーネントとして描写するが、プロセッサ32および送受信機34は、電子パッケージまたはチップにともに統合され得ることが理解されるであろう。プロセッサ32は、アプリケーション層プログラム(例えば、ブラウザ)および/または無線アクセス層(RAN)プログラムならびに/もしくは通信を行い得る。プロセッサ32は、例えば、アクセス層および/またはアプリケーション層等で、認証、セキュリティキー一致、ならびに/もしくは暗号化動作等のセキュリティ動作を行い得る。
伝送/受信要素36は、信号をM2Mサービスプラットフォーム22に伝送するか、またはM2Mサービスプラットフォーム22から信号を受信するように構成され得る。例えば、伝送/受信要素36は、RF信号を伝送および/または受信するように構成されるアンテナであり得る。伝送/受信要素36は、WLAN、WPAN、セルラー等の種々のネットワークならびにエアインターフェースをサポートし得る。実施例では、伝送/受信要素36は、例えば、IR、UV、もしくは可視光信号を伝送および/または受信するように構成されるエミッタ/検出器であり得る。さらに別の例では、伝送/受信要素36は、RFおよび光信号の両方を伝送ならびに受信するように構成され得る。伝送/受信要素36は、無線もしくは有線信号の任意の組み合わせを伝送および/または受信するように構成され得ることが理解されるであろう。
加えて、伝送/受信要素36は、単一の要素として図17Cで描写されているが、M2Mデバイス30は、任意の数の伝送/受信要素36を含み得る。より具体的には、M2Mデバイス30は、MIMO技術を採用し得る。したがって、実施例では、M2Mデバイス30は、無線信号を伝送および受信するための2つ以上の伝送/受信要素36(例えば、複数のアンテナ)を含み得る。
送受信機34は、伝送/受信要素36によって伝送される信号を変調するように、および伝送/受信要素36によって受信される信号を復調するように構成され得る。上記のように、M2Mデバイス30は、マルチモード能力を有し得る。したがって、送受信機34は、M2Mデバイス30が、例えば、UTRAおよびIEEE802.11等の複数のRATを介して通信することを可能にするための複数の送受信機を含み得る。
プロセッサ32は、非取り外し可能メモリ44および/または取り外し可能メモリ46等の任意のタイプの好適なメモリから情報にアクセスし、そこにデータを記憶し得る。非取り外し可能メモリ44は、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、ハードディスク、または任意の他のタイプのメモリ記憶デバイスを含み得る。取り外し可能メモリ46は、加入者識別モジュール(SIM)カード、メモリスティック、セキュアデジタル(SD)メモリカード等を含み得る。他の例では、プロセッサ32は、サーバまたはホームコンピュータ上等のM2Mデバイス30上に物理的に位置しないメモリから情報にアクセスし、そこにデータを記憶し得る。プロセッサ32は、本明細書に説明される実施例のうちのいくつかにおけるオープンメッセージバスアーキテクチャの1つ以上のコンポーネントが成功であるか、不成功であるか(例えば、サービス発見、サービスサブスクライブ等)に応答して、ディスプレイもしくはインジケータ42上の照明パターン、画像、または色を制御するか、もしくは別様にオープンメッセージバスアーキテクチャの1つ以上のコンポーネントのステータスを示すように構成され得る。ディスプレイまたはインジケータ42上の制御照明パターン、画像、もしくは色は、本明細書に図示または議論される図(例えば、図1−図16)における方法フローもしくはコンポーネントのうちのいずれかのステータスを反映し得る。本明細書では、オープンメッセージバスアーキテクチャを作成して実装するためのメッセージおよびプロシージャが開示される。メッセージおよびプロシージャは、ユーザが、入力源(例えば、スピーカ/マイクロホン38、キーパッド40、またはディスプレイ/タッチパッド42)を介してオープンメッセージバスを構成することを要求し、ディスプレイ42上に表示され得るものでもとりわけ、オープンメッセージバス関連メッセージを要求、構成、またはクエリするために、インターフェース/APIを提供するように拡張されることができる。
プロセッサ32は、電源48から電力を受け取り得、M2Mデバイス30内の他のコンポーネントへの電力を分配および/または制御するように構成され得る。電源48は、M2Mデバイス30に給電するための任意の好適なデバイスであり得る。例えば、電源48は、1つ以上の乾電池バッテリ(例えば、ニッケルカドミウム(NiCd)、ニッケル亜鉛(NiZn)、ニッケル水素(NiMH)、リチウムイオン(Li−ion)等)、太陽電池、燃料電池等を含み得る。
プロセッサ32はまた、M2Mデバイス30の現在の場所に関する場所情報(例えば、経度および緯度)を提供するように構成される、GPSチップセット50に結合され得る。M2Mデバイス30は、本明細書に開示される情報と一致したままで、任意の好適な場所決定方法を介して場所情報を獲得し得ることが理解されるであろう。
プロセッサ32はさらに、追加の特徴、機能性、および/または有線もしくは無線コネクティビティを提供する、1つ以上のソフトウェアならびに/もしくはハードウェアモジュールを含み得る他の周辺機器52に結合され得る。例えば、周辺機器52は、加速度計、e−コンパス、衛星送受信機、センサ、デジタルカメラ(写真またはビデオ用)、ユニバーサルシリアルバス(USB)ポート、振動デバイス、テレビ送受信機、ハンズフリーヘッドセット、Bluetooth(登録商標)モジュール、周波数変調(FM)ラジオユニット、デジタル音楽プレーヤ、メディアプレーヤ、ビデオゲームプレーヤモジュール、インターネットブラウザ等を含み得る。
図17Dは、例えば、図17Aおよび17BのM2Mサービスプラットフォーム22が実装され得る例示的コンピューティングシステム90のブロック図である。コンピューティングシステム90は、コンピュータまたはサーバを備え得、主に、そのようなソフトウェアが記憶またはアクセスされる場所もしくは手段にかかわらず、ソフトウェアの形態であり得るコンピュータ読み取り可能な命令によって制御され得る。そのようなコンピュータ読み取り可能な命令は、コンピューティングシステム90を稼働させるように、中央処理装置(CPU)91内で実行され得る。多くの既知のワークステーション、サーバ、およびパーソナルコンピュータでは、中央処理装置91は、マイクロプロセッサと呼ばれる単一チップCPUによって実装される。他のマシンでは、中央処理装置91は、複数のプロセッサを備え得る。コプロセッサ81は、追加の機能を果たす、またはCPU91を補助する、主要CPU91とは明確に異なる、随意のプロセッサである。CPU91および/またはコプロセッサ81は、メッセージバスバックボーンに関連付けられるサービスをブラウズするためのDNS−SDメッセージを受信すること等、オープンメッセージバスアーキテクチャの1つ以上のコンポーネントのための開示されるシステムおよび方法に関連するデータを受信、生成、および処理し得る。
動作時、CPU91は、命令をフェッチ、デコード、および実行し、コンピュータの主要データ転送パスであるシステムバス80を介して、情報を他のリソースへ、ならびにそこから転送する。そのようなシステムバスは、コンピューティングシステム90内のコンポーネントを接続し、データ交換のための媒体を定義する。システムバス80は、典型的には、データを送信するためのデータラインと、アドレスを送信するためのアドレスラインと、インタラプトを送信するため、およびシステムバスを動作させるための制御ラインとを含む。そのようなシステムバス80の例は、PCI(周辺コンポーネント相互接続)バスである。
システムバス80に結合されるメモリデバイスは、ランダムアクセスメモリ(RAM)82と、読み取り専用メモリ(ROM)93とを含む。そのようなメモリは、情報が記憶されて読み出されることを可能にする回路を含む。ROM93は、概して、容易に修正されることができない、記憶されたデータを含む。RAM82に記憶されたデータは、CPU91または他のハードウェアデバイスによって読み取られるか、または変更されることができる。RAM82および/またはROM93へのアクセスは、メモリコントローラ92によって制御され得る。メモリコントローラ92は、命令が実行されると、仮想アドレスを物理的アドレスに変換する、アドレス変換機能を提供し得る。メモリコントローラ92はまた、システム内のプロセスを隔離し、ユーザプロセスからシステムプロセスを隔離する、メモリ保護機能を提供し得る。したがって、第1のモードで起動するプログラムは、独自のプロセス仮想アドレス空間によってマップされるメモリのみにアクセスすることができ、プロセス間のメモリ共有が設定されていない限り、別のプロセスの仮想アドレス空間内のメモリにアクセスすることができない。
加えて、コンピューティングシステム90は、CPU91からプリンタ94、キーボード84、マウス95、およびディスクドライブ85等の周辺機器に命令を通信する責任がある、周辺機器コントローラ83を含み得る。
ディスプレイコントローラ96によって制御されるディスプレイ86は、コンピューティングシステム90によって生成される視覚出力を表示するために使用される。そのような視覚出力は、テキスト、グラフィックス、動画グラフィックス、およびビデオを含み得る。ディスプレイ86は、CRTベースのビデオディスプレイ、LCDベースのフラットパネルディスプレイ、ガスプラズマベースのフラットパネルディスプレイ、またはタッチパネルを伴って実装され得る。ディスプレイコントローラ96は、ディスプレイ86に送信されるビデオ信号を生成するために必要とされる、電子コンポーネントを含む。
さらに、コンピューティングシステム90は、図17Aおよび17Bのネットワーク12等の外部通信ネットワークにコンピューティングシステム90を接続するために使用され得る、ネットワークアダプタ97を含み得る。
図18は、本明細書で議論される方法およびシステムに基づいて生成され得る例示的ディスプレイ(例えば、グラフィカルユーザインターフェース)を図示する。ディスプレイインターフェース901(例えば、タッチスクリーンディスプレイ)は、表1から表25のパラメータ等のメッセージバスサービスディレクトリに関連付けられるブロック902内でテキストを提供し得る。別の実施例では、本明細書で議論されるステップのうちのいずれかの進捗(例えば、送信されたメッセージまたはステップの成功)は、ブロック902内で表示され得る(例えば、図10−図15)。加えて、グラフィカル出力903が、(例えば、図1−図17Dに関連付けられる)ディスプレイインターフェース901上に表示され得る。グラフィカル出力903は、クラスタ内のデバイスのトポロジ、本明細書で議論される任意の方法またはシステムの進捗のグラフィカル出力等であり得る。例えば、グラフィックユーザインターフェースを用いた管理サービス250(図8参照)が、OMBに接続するクライアントサービスを管理および監視するために使用され得る。管理サービス250は、メッセージバスサービスディレクトリの構成および監視のために使用され得る。
本明細書に説明されるシステム、方法、およびプロセスのうちのいずれかまたは全ては、命令が、コンピュータ、サーバ、M2M端末デバイス、M2Mゲートウェイデバイス等のマシンによって実行されると、本明細書に説明されるシステム、方法、およびプロセスを実施ならびに/または実装する、コンピュータ読み取り可能な記憶媒体上に記憶されたコンピュータ実行可能命令(すなわち、プログラムコード)の形態で具現化され得ることが理解される。具体的には、上記で説明されるステップ、動作、または機能のうちのいずれも、そのようなコンピュータ実行可能命令の形態で実装され得る。コンピュータ読み取り可能な記憶媒体は、情報の記憶のための任意の方法または技術で実装される、揮発性および不揮発性の取り外し可能および非取り外し可能媒体の両方を含むが、そのようなコンピュータ読み取り可能な記憶媒体は、信号を含まない。コンピュータ読み取り可能な記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光学ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶デバイス、もしくは所望の情報を記憶するために使用することができ、コンピュータによってアクセスされることができる任意の他の物理的媒体を含むが、それらに限定されない。
図で図示されるような本開示の主題の好ましい方法、システム、または装置を説明する際に、具体的用語が、明確にするために採用される。しかしながら、請求される主題は、そのように選択された具体的用語に限定されることを意図せず、各具体的要素は、類似目的を達成するように同様に動作する、全ての技術的均等物を含むことを理解されたい。
本明細書は、最良の様態を含む、本発明を開示するために、また、当業者が、任意のデバイスまたはシステムを作製して使用すること、および任意の組み込まれた方法を行うことを含む、本発明を実践することを可能にするために、実施例を使用する。本発明の特許性のある範囲は、請求項によって定義され、他の実施例を含み得る(例えば、本明細書に開示される例示的方法の間でステップを省略する、ステップを組み合わせる、またはステップを追加する)。そのような他の実施例は、請求項の文字通りの用語と異ならない構造要素を有する場合、または請求項の文字通りの用語からごくわずかな差異を伴う同等の構造要素を含む場合、請求項の範囲内であることを意図している。以下で議論されるような方法、システム、コンピュータ読み取り可能な記憶媒体、装置等に関する要素の全ての組み合わせが、発明を実施するための形態の他の部分と一致する様式で考慮される。
方法、システム、コンピュータ読み取り可能な記憶媒体、または装置は、メッセージブローカに関連付けられている利用可能なサービスについての情報に対する要求を送信し、利用可能なサービスの記述を含む応答を受信し、応答からの利用可能なサービスのうちの第1の利用可能なサービスを選択し、応答内の第1の利用可能なサービスの記述に基づいて、メッセージブローカと接続する手段を有する。情報に対する要求は、ポインタレコードに対するDNS−SDルックアップを含み得る。応答は、DNS−SD応答であり得る。
方法、システム、コンピュータ読み取り可能な記憶媒体、または装置は、メッセージブローカを介して利用可能なサービスを分類するサービスディレクトリに、第1のサービスであって、メッセージブローカと接続される第1のサービスのプロファイルをロードし、サービスディレクトリをブラウズするように、第2のサービスによる要求を受信し、第2のサービスから、メッセージブローカと接続する要求を受信し、メッセージブローカを介して第1のサービスを第2のサービスに接続する手段を有する。サービスディレクトリをブラウズする要求は、DNS−SDインターフェースに関連付けられ得る。メッセージブローカは、管理サービスと接続され得る。メッセージブローカは、データベースサービスと接続され得る。第1のサービスは、メッセージバスクライアントと接続されるアプリケーションプログラミングインターフェースを介して、メッセージブローカと接続され得る。第1のサービスがメッセージブローカと切断するとき、第2のサービスの通知があり得る。一致しているプロファイルを有する第3のサービスがメッセージブローカと接続するときに通知を受信するように、第2のサービスによるサブスクライブがあり得る。
方法、システム、コンピュータ読み取り可能な記憶媒体、または装置は、メッセージブローカを介して、第1のサービスを第2のサービスと接続し、状態が第2のサービスまたは第3のサービスとともに変化するとき、もしくは状態がメッセージブローカと接続されるサービスのクラスとともに変化するとき、第1のサービスに通知するための命令を含む要求を第1のサービスによって送信する手段を有する。状態変化は、第2のサービスまたは第3のサービスのサービスプロファイルの削除、作成、もしくは更新を含み得る。状態変化は、第2のサービスまたは第3のサービスの削除、作成、もしくは更新を含み得る。
方法、システム、コンピュータ読み取り可能な記憶媒体、または装置は、第1のサービスが複数のサービスを記述するプロファイルを管理する、第1のサービス、第1のサービスと通信可能に接続されるメッセージバスクライアント、および第1のサービスならびにメッセージバスクライアントであって、第1のサービスがメッセージバスと接続するためにアプリケーションプログラミングインターフェース(API)を提供する、メッセージバスクライアントと通信可能に接続されるメッセージブローカのための手段を有する。APIは、第1のサービスがサービス識別子またはサービスタイプ識別子でそれ自体を識別することを可能にし得る。APIは、API要求がブロッキングまたは非ブロッキングであるかどうかを第1のサービスが示すことを可能にし得る。APIは、第1のサービスが、トークン値、関数名、または各APIコールもしくは各非ブロッキングAPIコールのための関数へのポインタを提供することを可能にし得る。トークンは、応答を元のAPIコールと相関させるために第1のサービスによって使用され得る。APIは、第1のサービスが、非ブロッキング要求に戻るときにどのような関数が呼び出されているかを示すことを可能にし得る。APIは、第1のサービスとメッセージブローカとの間で使用される下層トランスポートプロトコルに特定のコマンドを実行することなく、第1のサービスがメッセージブローカと通信するためのコマンドの組を提供し得る。

Claims (20)

  1. デバイスであって、前記デバイスは、
    プロセッサと、
    前記プロセッサと接続されているメモリと
    を備え、
    前記メモリは、実行可能命令を含み、前記命令は、前記プロセッサによって実行されると、
    メッセージブローカに関連付けられている利用可能なサービスについての情報を要求することと、
    前記利用可能なサービスの記述を含む応答を受信することと、
    前記応答からの前記利用可能なサービスのうちの第1のサービスを精査することと、
    前記応答内の前記第1のサービスの前記記述に基づいて、前記メッセージブローカと接続することと
    を含む動作を前記プロセッサに達成させる、デバイス。
  2. 前記利用可能なサービスの前記記述を含む前記応答は、前記メッセージブローカと接続されているサービスディレクトリからである、請求項1に記載のデバイス。
  3. 前記サービスディレクトリは、メッセージブローカを介して利用可能な前記サービスを分類している、請求項2に記載のデバイス。
  4. 前記サービスディレクトリをブラウズするための前記要求は、DNS−SDインターフェースに関連付けられている、請求項2に記載のデバイス。
  5. 情報に対する前記要求は、ポインタレコードに対するDNS−SDルックアップを備えている、請求項1に記載のデバイス。
  6. 前記応答は、DNS−SD応答である、請求項1に記載のデバイス。
  7. 前記動作は、前記第1のサービスのためのDNSサービス場所レコードを送信することをさらに含む、請求項1に記載のデバイス。
  8. 前記メッセージブローカは、トランスポートに依存しないアプリケーションプログラミングインターフェースを介して接続する、請求項1に記載のデバイス。
  9. 前記動作は、一致しているプロファイルを有する第2の利用可能なサービスが前記メッセージブローカと接続するときに通知を受信するためにサブスクライブすることをさらに含む、請求項1に記載のデバイス。
  10. 方法であって、前記方法は、
    メッセージブローカに関連付けられている利用可能なサービスについての情報を第1のサービスから要求することと、
    前記利用可能なサービスの記述を含む応答を受信することと、
    前記応答からの前記利用可能なサービスのうちの第2のサービスを精査することと、
    前記応答内の前記第2のサービスの前記記述に基づいて、前記メッセージブローカと接続することと
    を含む、方法。
  11. 情報に対する前記要求は、ポインタレコードに対するDNS−SDルックアップを備えている、請求項10に記載の方法。
  12. 前記応答は、DNS−SD応答である。請求項10に記載の方法。
  13. 前記動作は、前記第2のサービスのためのDNSサービス場所レコードを送信することをさらに含む、請求項10に記載の方法。
  14. 前記メッセージブローカは、トランスポートに依存しないアプリケーションプログラミングインターフェースを介して接続する、請求項10に記載の方法。
  15. 前記動作は、一致しているプロファイルを有する第3のサービスが前記メッセージブローカと接続するときに通知を受信するためにサブスクライブすることをさらに含む、請求項10に記載の方法。
  16. 前記動作は、前記第2のサービスが前記メッセージブローカと切断するとき、前記第1のサービスに通知することをさらに含む、請求項10に記載の方法。
  17. コンピュータ実行可能命令を備えているコンピュータ読み取り可能な媒体であって、前記命令は、コンピュータデバイスによって実行されると、
    メッセージブローカに関連付けられている利用可能なサービスについての情報を要求することと、
    前記利用可能なサービスの記述を含む応答を受信することと、
    前記応答からの前記利用可能なサービスのうちの第1のサービスを精査することと、
    前記応答内の前記第1のサービスの前記記述に基づいて、前記メッセージブローカと接続することと
    を含む動作を前記コンピュータデバイスに達成させる、コンピュータ読み取り可能な記憶媒体。
  18. 利用可能なサービスの前記説明を含む前記応答は、前記メッセージブローカと接続されているサービスディレクトリからである、請求項17に記載のデバイス。
  19. 前記サービスディレクトリは、メッセージブローカを介して利用可能な前記サービスを分類している、請求項18に記載のデバイス。
  20. 前記サービスディレクトリをブラウズするための前記要求は、DNS−SDインターフェースに関連付けられている、請求項18に記載のデバイス。
JP2017543945A 2015-02-20 2016-02-19 メッセージバスサービスディレクトリ Active JP6538867B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201562118882P 2015-02-20 2015-02-20
US62/118,882 2015-02-20
PCT/US2016/018692 WO2016134267A1 (en) 2015-02-20 2016-02-19 Message bus service directory

Publications (2)

Publication Number Publication Date
JP2018512645A true JP2018512645A (ja) 2018-05-17
JP6538867B2 JP6538867B2 (ja) 2019-07-03

Family

ID=55456948

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017543945A Active JP6538867B2 (ja) 2015-02-20 2016-02-19 メッセージバスサービスディレクトリ

Country Status (6)

Country Link
US (1) US10708376B2 (ja)
EP (1) EP3259898B1 (ja)
JP (1) JP6538867B2 (ja)
KR (1) KR102046700B1 (ja)
CN (1) CN107431726B (ja)
WO (1) WO2016134267A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020158154A1 (ja) * 2019-01-28 2020-08-06 日本電信電話株式会社 メッセージ送受信方法、通信装置、及びプログラム

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018009159A1 (en) * 2016-07-02 2018-01-11 Intel Corporation Resource orchestration brokerage for internet-of-things networks
US10650621B1 (en) 2016-09-13 2020-05-12 Iocurrents, Inc. Interfacing with a vehicular controller area network
WO2018061017A1 (en) * 2016-09-30 2018-04-05 Telefonaktiebolaget Lm Ericsson (Publ) Methods and apparatuses for charging of a service session of m2m devices in a communication network
US9860677B1 (en) * 2016-09-30 2018-01-02 Intel Corporation Internet-of-things gateway coordination
JP6848426B2 (ja) * 2016-12-27 2021-03-24 富士通株式会社 通信装置,通信システム,プログラム及び通信制御方法
US10554607B2 (en) * 2017-02-24 2020-02-04 Telefonaktiebolaget Lm Ericsson (Publ) Heterogeneous cloud controller
US10728181B2 (en) * 2017-03-27 2020-07-28 Dell Products, L.P. Advanced message queuing protocol (AMQP) message broker and messaging client interactions via dynamic programming commands using message properties
US11323519B2 (en) * 2017-04-19 2022-05-03 Microsoft Technology Licensing, Llc Internet of things pub-sub data publisher
US10833881B1 (en) * 2017-11-06 2020-11-10 Amazon Technologies, Inc. Distributing publication messages to devices
CN108429665B (zh) * 2018-03-22 2020-12-15 四川长虹电器股份有限公司 一种并发通信传输数据的方法
CN110391991B (zh) * 2018-04-18 2022-04-29 华为技术有限公司 一种流量控制的方法及相关装置
CN108650277A (zh) * 2018-05-24 2018-10-12 哈工大机器人(合肥)国际创新研究院 一种数据加密传输方法
CN108924183B (zh) * 2018-05-31 2022-01-11 北京百度网讯科技有限公司 用于处理信息的方法及装置
CN113366816B (zh) * 2019-04-12 2024-02-13 三星电子株式会社 通过域名服务器解析发现边缘服务器或边缘服务的方法和系统
CN110138850B (zh) * 2019-05-06 2022-05-03 福建星网智慧科技有限公司 一种基于DNSmasq实现云PBX业务负载均衡的方法
US11128587B2 (en) 2019-05-13 2021-09-21 Sap Se Enterprise messaging using a virtual message broker
CN110808973A (zh) * 2019-10-31 2020-02-18 国网河北省电力有限公司电力科学研究院 一种可以跨主机部署的融合型消息总线
CN111131426B (zh) * 2019-12-19 2022-05-10 浙江百应科技有限公司 一种基于mqtt数据交互的方法、终端及服务端
CN113098914B (zh) * 2019-12-23 2022-09-30 中国移动通信集团湖南有限公司 消息总线系统及消息传输方法、装置、电子设备
KR20220097555A (ko) * 2020-10-21 2022-07-08 한국전자기술연구원 다중 메시지 프로토콜을 지원하는 컨테이너 오케스트레이터 기반의 메모리 공유 방법
CN112559202A (zh) * 2020-12-08 2021-03-26 北京机电工程研究所 基于嵌入式实时操作系统的飞行器应用软件通讯方法
WO2022122789A1 (en) * 2020-12-09 2022-06-16 Sony Group Corporation Broker device, publisher device, subscriber device, publisher-subscriber system, publisher-subscriber method
US11902239B2 (en) * 2021-01-11 2024-02-13 Salesforce, Inc. Unified application messaging service
CN112835911B (zh) * 2021-03-10 2022-12-02 四川大学华西医院 一种适用于医疗信息平台的主数据管理系统
US11819762B1 (en) * 2021-08-06 2023-11-21 Amazon Technologies, Inc. Registration and control of a game entity as a device
CN113626219B (zh) * 2021-08-06 2022-11-22 湖南大学 一种基于注册回调机制的线程间数据分发方法
US11922235B2 (en) * 2021-11-10 2024-03-05 International Business Corporation Machines Coordinating asynchronous communication among microservices
US20230300218A1 (en) * 2022-03-16 2023-09-21 Cisco Technology, Inc. Dynamic Hashing Framework for Synchronization Between Network Telemetry Producers and Consumers

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004334896A (ja) * 2000-04-10 2004-11-25 Nec Corp プラグアンドプレイ機能を有するフレームワークおよびその再構成方法
JP2014512729A (ja) * 2011-03-03 2014-05-22 インターデイジタル パテント ホールディングス インコーポレイテッド 発見されたサービスプロバイダに属するサービスにアクセスする方法および装置

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6782541B1 (en) * 1999-05-28 2004-08-24 Avaya Technology Corp. System and method of exchanging information between software modules
US6594700B1 (en) 1999-06-14 2003-07-15 International Business Machines Corporation System and method for implementing a universal service broker interchange mechanism
US7414981B2 (en) * 2001-04-25 2008-08-19 Qwest Communications International, Inc. Method and system for event and message registration by an association controller
US7870012B2 (en) * 2001-05-15 2011-01-11 Agile Software Corporation Method for managing a workflow process that assists users in procurement, sourcing, and decision-support for strategic sourcing
US20030140119A1 (en) * 2002-01-18 2003-07-24 International Business Machines Corporation Dynamic service discovery
US8346929B1 (en) * 2003-08-18 2013-01-01 Oracle America, Inc. System and method for generating secure Web service architectures using a Web Services security assessment methodology
US7228141B2 (en) * 2003-12-23 2007-06-05 Cisco Technology, Inc. Providing location-specific services to a mobile node
JP2007538313A (ja) * 2004-04-29 2007-12-27 インターナショナル・ビジネス・マシーンズ・コーポレーション 分散ネットワーキング・アーキテクチャ内にサービスをモデル化し、動的にデプロイするためのシステムおよび方法
US8812684B1 (en) * 2006-09-28 2014-08-19 Rockwell Automation Technologies, Inc. Messaging configuration system
US20080104258A1 (en) * 2006-10-30 2008-05-01 Gestalt, Llc System and method for dynamic data discovery in service oriented networks with peer-to-peer based communication
WO2008082021A1 (en) * 2007-01-05 2008-07-10 Ajou University Industry Cooperation Foundation Open framework system for heterogeneous computing and service integration
US8484663B2 (en) 2007-04-27 2013-07-09 Microsoft Corporation Method of deriving web service interfaces from form and table metadata
US8081610B2 (en) * 2007-05-09 2011-12-20 Vlad Stirbu Modifying remote service discovery based on presence
CN101609415B (zh) * 2009-07-17 2012-05-30 武汉大学 基于中间件的通用服务调用系统及方法
US8924559B2 (en) * 2009-12-03 2014-12-30 International Business Machines Corporation Provisioning services using a cloud services catalog
US20110314163A1 (en) * 2010-06-16 2011-12-22 Mmb Research Inc. Wireless communication network for smart appliances
KR101417196B1 (ko) * 2010-11-05 2014-07-09 한국전자통신연구원 논리 공간 기반의 다형 서비스 제공 방법 및 이러한 방법을 사용하는 장치
EP2646935B1 (en) * 2010-11-30 2015-08-05 Nokia Technologies Oy Method and apparatus for coordinating information request messages over an ad-hoc mesh network
US20170063566A1 (en) * 2011-10-04 2017-03-02 Electro Industries/Gauge Tech Internet of things (iot) intelligent electronic devices, systems and methods
CN104247333B (zh) * 2011-12-27 2017-08-11 思科技术公司 用于基于网络的服务的管理的系统和方法
US9515920B2 (en) * 2012-04-20 2016-12-06 Futurewei Technologies, Inc. Name-based neighbor discovery and multi-hop service discovery in information-centric networks
US9825767B2 (en) * 2012-05-01 2017-11-21 Avago Technologies General Ip (Singapore) Pte. Ltd Service based power management in a network
US9298410B2 (en) * 2012-06-26 2016-03-29 Hewlett-Packard Development Company, L.P. Exposing network printers to WI-FI clients
US9553831B2 (en) * 2013-04-11 2017-01-24 Cisco Technology, Inc. Adaptive publish/subscribe system
CN105493046B (zh) * 2013-09-28 2019-08-13 迈克菲有限公司 面向服务的中介、方法和计算机可读存储介质
WO2015047436A1 (en) * 2013-09-28 2015-04-02 Mcafee, Inc. Efficient request-response routing over a data exchange layer
US9414215B2 (en) * 2013-10-04 2016-08-09 Cisco Technology, Inc. System and method for orchestrating mobile data networks in a machine-to-machine environment
US20150156266A1 (en) * 2013-11-29 2015-06-04 Qualcomm Incorporated Discovering cloud-based services for iot devices in an iot network associated with a user
US9417831B2 (en) * 2014-03-05 2016-08-16 Tricerat Method and system of providing computer network based limited visibility service discovery
US20150301875A1 (en) * 2014-04-22 2015-10-22 Andreas Harnesk Persisting and managing application messages
US9660943B2 (en) * 2014-04-25 2017-05-23 International Business Machines Corporation Messaging based signaling for communications sessions
US10136284B2 (en) * 2014-07-07 2018-11-20 Convida Wireless, Llc Coordinated grouping for machine type communications group based services
CN106663143B (zh) * 2014-07-18 2019-12-17 康维达无线有限责任公司 M2m本体管理和语义互操作性
EP3195567B1 (en) * 2014-07-22 2020-11-25 Convida Wireless, LLC Publication and discovery of m2m-iot services
US10075348B2 (en) * 2014-07-25 2018-09-11 Cable Television Laboratories, Inc. Network service discovery
CN106605421B (zh) * 2014-09-16 2020-01-31 诺基亚技术有限公司 用于服务节点的匿名访问和控制的方法和装置
US20160128043A1 (en) * 2014-10-30 2016-05-05 Qualcomm Incorporated Dynamic mobile ad hoc internet of things (iot) gateway
CN107430512B (zh) * 2014-10-31 2021-02-02 康维达无线有限责任公司 管理机器对机器系统中的应用关系
US10084643B2 (en) * 2014-11-28 2018-09-25 Huawei Technologies Co., Ltd. Systems and methods for providing customized virtual wireless networks based on service oriented network auto-creation
US9762556B2 (en) * 2015-01-09 2017-09-12 Verisign, Inc. Registering, managing, and communicating with IOT devices using domain name system processes
US20160205106A1 (en) * 2015-01-12 2016-07-14 Verisign, Inc. Systems and methods for providing iot services
US9935950B2 (en) * 2015-01-12 2018-04-03 Verisign, Inc. Systems and methods for establishing ownership and delegation ownership of IOT devices using domain name system services
WO2016118979A2 (en) * 2015-01-23 2016-07-28 C3, Inc. Systems, methods, and devices for an enterprise internet-of-things application development platform
US10362074B2 (en) * 2015-02-03 2019-07-23 Kodiak Networks, Inc Session management and notification mechanisms for push-to-talk (PTT)

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004334896A (ja) * 2000-04-10 2004-11-25 Nec Corp プラグアンドプレイ機能を有するフレームワークおよびその再構成方法
JP2014512729A (ja) * 2011-03-03 2014-05-22 インターデイジタル パテント ホールディングス インコーポレイテッド 発見されたサービスプロバイダに属するサービスにアクセスする方法および装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020158154A1 (ja) * 2019-01-28 2020-08-06 日本電信電話株式会社 メッセージ送受信方法、通信装置、及びプログラム
JPWO2020158154A1 (ja) * 2019-01-28 2021-10-28 日本電信電話株式会社 メッセージ送受信方法、通信装置、及びプログラム
JP7030217B2 (ja) 2019-01-28 2022-03-04 日本電信電話株式会社 メッセージ送受信方法、通信装置、及びプログラム
US11582320B2 (en) 2019-01-28 2023-02-14 Nippon Telegraph And Telephone Corporation Message transmitting and receiving method, communication apparatus, and program

Also Published As

Publication number Publication date
EP3259898B1 (en) 2020-07-22
JP6538867B2 (ja) 2019-07-03
US20160248871A1 (en) 2016-08-25
KR20170118815A (ko) 2017-10-25
EP3259898A1 (en) 2017-12-27
CN107431726A (zh) 2017-12-01
KR102046700B1 (ko) 2019-11-19
WO2016134267A1 (en) 2016-08-25
CN107431726B (zh) 2020-07-28
US10708376B2 (en) 2020-07-07

Similar Documents

Publication Publication Date Title
JP6538867B2 (ja) メッセージバスサービスディレクトリ
US10404601B2 (en) Load balancing in the internet of things
US11882195B2 (en) Systems and methods for enabling access to third party services via a service layer
JP6692862B2 (ja) Mqttプロトコルを使用するサービス層インターワーキング
KR102084104B1 (ko) 종단간 m2m 서비스 계층 세션
JP2016524747A (ja) 改善された発見のためのシステムおよび方法
US10270682B2 (en) Service layer anycast and somecast
WO2016153997A1 (en) Methods to support message routing at service layer

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180831

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180911

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181211

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20190214

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20190222

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: 20190514

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190606

R150 Certificate of patent or registration of utility model

Ref document number: 6538867

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250