1、IOTとは何ですか?
モノのインターネット(IoT)は、英国のRFID(Radio Frequency Identification)の分野における技術の先駆者であるKevin Ashtonによって造られた用語で、ユビキタスセンサーを介して現実の世界をインターネットに接続するシステムを考案しました。モノのインターネットはインターネットを元にに構築され、人と人がつながっているインターネットとは異なり、それはマシンとマシンの間の相互接続(M2M)に焦点を当てています。
2、IOT機器のデータ特性とネットワークアーキテクチャ
IOTシステムは、リアルタイムで様々な端末装置からデータを受信することだけでなく、いつでも装置に制御コマンドを送信することも要求されます。これには、IOTデバイスのデータフォーマットが短くてスリムで解析しやすいことが必要です。さらに、通信プロトコル自体が軽量、スケーラブルで、ネットワークとデバイスの不安定に対処できることも必要です。
IoTデバイスは通常、工場、病院、駅、空港などの集合箇所または自動車、石油パイプライン、風力発電などのような分散した設備に配置されます。これには、さまざまなワイヤレス(赤外線、Bluetooth、WIFI、3G、4G、5G、衛星)および有線通信技術を使用してリモートサーバーにデータを送信できることが必要です。
IoTデバイスの密度を考慮すると、エッジコンピューティングノードを導入することで大量の生データを効果的にフィルタリングし、一次処理されたより綺麗なデータを中央ビジネス処理プラットフォームに流入することを可能にします。このようにして、中枢ネットワークのトラフィックを減少し、さらに、主処理プラットフォームの効率も向上させることもできます。
4、MOTTについて
現在のIOTプロトコルの中で、最も競争力があり、一番広く使用されている通信プロトコルは、IBM社は1999年提出したMQTTです。2011年にMOTTのオープンソースプロジェクトPahoを設立し、Eclipseソフトウェア財団に寄付しました。MQTTプロトコルは非常に軽量で拡張性が高く、上記のIOT問題を有効的に解決することができます。現在、モノのインターネット(Internet of Things)の通信規格の1つになりました。
5、MOTTプロトコルメッセージ構造
MOTTプロトコルのメッセージ構造は、他のネットワーク通信プロトコルと比較して非常に単純で明確であり、主に次の3つの部分から構成されています。
プロトコル構造:固定ヘッダ+可変ヘッダ+ペイロード
メッセージの詳細な説明については公式文書をご参照してください。
http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html
6、MOTTプロトコルの動作原理(PUBとSUBモデル)
MQTTプロトコルは、ネットワーク内で2つのエンティティタイプ、メッセージブローカとクライアントを定義します。ブローカは、クライアントからすべてのメッセージを受信し、それらを関連するターゲットクライアントにルーティングするサーバーです。基本的にQoS0,QoS1,QoS2など三つのサービス品質が提供できます。クライアントとは、メッセージの生産と消費する側です。クライアントは、同時に、自分で生産したメッセージも消費できます。
クライアントがプロキシに接続します。エージェント内の任意のメッセージ「トピック」を購読できます。この接続は、機密メッセージを送信するための単純なTCP / IP接続、または暗号化されたTLS接続です。
クライアントは、メッセージとトピックをブローカに送信することによって、トピックのメッセージを公開します。その後、ブローカはそのトピックを購読しているすべてのクライアントにメッセージを転送します。
6、MOTTプロトコルによって提供されるQoSモデル
■QOS 0 – Only Once
メッセージはTCP / IPネットワークを介して送信されます。 応答はありません、そして、再送の仕組みはプロトコルで定義されません。 メッセージは一度サーバーに到着するか、まったく到着しないことがあります。
■QOS 1 – At Least Once
サーバーはメッセージを受信し、PUBACKフラッグを設定することによって確認されます。伝送障害がある場合、送信者はメッセージヘッダのDUPビットを設定してからメッセージを再度送信します。 メッセージは少なくとも1回サーバーに到着することが保証されます。
クライアントがPUBACKメッセージを受信しない場合(それがアプリケーション定義のタイムアウトであるか失敗であるかにかかわらず、その後通信セッションが再開されるかどうか)、クライアントは再度PUBLISHメッセージを送信してDUPビットを設定します。クライアントから重複データを受信すると、サーバはメッセージを購読者に再送信し、新たなのPUBACKレスポンスメッセージを返信します。
■QOS 2 – Only Once
QoSレベル1で付加された処理フローは、重複メッセージが受信側に配信されないようにします。 これは最高レベルの伝送であり、重複メッセージが許可されていない場合に使用されます。 これによりネットワークトラフィックが増加しますが、メッセージの内容が重要であるため通常は許容されます。QoSレベル2では、ヘッダーにメッセージIDがあります。
次回は流行なオープンソースソシューションを選択して、実際のMQTTのサーバーを構築します。
興味のある方は、今回の基本概念を理解して、ぜひ、実感してみてください。
https://qiita.com/MichaelYang/items/d4d69e12c40b97bdf0ff
参考資料:
https://en.wikipedia.org/wiki/MQTT
https://thenewstack.io/mqtt-protocol-iot/
http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html
http://www.steves-internet-guide.com/mqtt-protocol-messages-overview/
https://mcxiaoke.gitbooks.io/mqtt-cn/content/mqtt/02-ControlPacketFormat.html
http://www.steves-internet-guide.com/understanding-mqtt-qos-levels-part-1/
http://www.steves-internet-guide.com/understanding-mqtt-qos-2/