本記事では、MQTTについて、概要と特徴を要約して紹介します。
MQTTとは?
MQTT(Message Queueing Telemetry Transport :エムキューティティ)とは、IoTの世界でよく利用されているデータ通信プロトコルです。データ通信プロトコルとは、その名の通り機器間でデータのやり取りを行うためのプロトコルで、MQTTはシンプルで軽量に動作することからIoT(Internet of Things)に適したプロトコルとして広く利用されています。
MQTTはネットワークの品質が低く、制約のある環境下での利用に強い特徴を持っています。例えば、帯域幅が狭く信頼性が低いネットワーク上で稼働する機器間の通信などでの利用が想定されます。また、大量の小さいデータを頻繁、かつ双方向でやり取りするといった利用シーンに強く、センサによるデータ収集などに強みを発揮します。
MQTTの特徴
ヘッダが小さい
MQTTは他のデータ通信プロトコルと比較し非常に小さいヘッダで通信を行うことが可能です。例えば、HTTPは最小50byteのヘッダが必要なことに対してMQTTでは最小2Byteのヘッダで通信が可能です。これにより、通信回数が多くなったとしてもオーバーヘッドを最小に抑えて通信することが可能です。
Pub/Sub型の通信方式
MQTTではPub/Sub方式の通信を行います。Pub/Sub方式はデータ送信者であるPublisherと受信者であるSubscriber、そしてそれらを仲介するBrokerという役割で成り立ちます。
PublisherとSubscriberは直接通信を行わず、データの仲介者であるBroker上のTopicを経由してデータの配信/購読を行います。
PublisherはBrokerに接続し、送信したいデータが発生した際に配信先のTopicを指定してデータを配信します。Subscriberも同様にBrokerに常時接続しており、自分がSubscribe(購読)しているTopicに対して配信されたデータがあるとBrokerからデータを受け取ります。丁度、メールマガジンに登録しておくと配信者からのメールが自動で配信されてくるのに似ていますね。
図.Pub/Sub方式
また、1つのTopicに対して複数のSubscriberがSubscribeすることが可能で、これによってPublisherとの1:多の通信が可能となります。
双方向の通信が可能
MQTTでは1つのデバイスが同時にPublisher/Subscriberのどちらにもなることができるため、双方向の通信も可能です。
QoS(Quality of Service)の設定が可能
QoSとはネットワーク上で提供する通信サービス品質のことで、実装されるプロトコルによって、特定の通信で利用する帯域幅を保証したり、通信の優先度を設定したりするために利用されます。
MQTTではQoS 0~2という3つのレベルのQoSが存在します。QoSのレベルを上げるほど通信の信頼性は高まりますが、反対に確認応答(Ack)の頻度が上がるため通信量が増加し、性能は低くなります。
図.QoSのレベル毎の特徴
電池切れや故障を想定した機能が存在
MQTTでは信頼性の低い機器やネットワークを想定した機能が備わっています。
Retain
最後にPublishされたメッセージをブローカーに残しておく機能です。この機能によりSubscriberが一時的にネットワークから切断された場合でも、その間にPublishされたメッセージを後から受け取ることが出来ます。
Will
別名「遺書」と呼ばれる機能で、自分自身がネットワークから切断された場合に特定のトピックに自動的に通知を行うことを予め設定することが出来ます。これにより、ネットワーク上の機器に電池切れや回線の問題が発生した場合に、検知することが可能となります。
まとめ
- MQTTはPub/Sub方式のデータ通信プロトコルである
- 小型機器やIoTでの利用を考慮した機能が備わっている
- シンプルかつ機能を抑えることで軽量化と高速化を実現している
コメントを残す