【IoT用語集】MQTTとは?

はじめに

MQTT(Message Queuing Telemetry Transport)とは、TCP/IPネットワークで利用可能な通信プロトコルの一つで、多数の主体の間で短いメッセージを高い頻度で送受信するのに適した軽量なプロトコルのことです。

メッセージ指向の通信ミドルウェアで主に利用されます。Publish/Subscription型のプロトコルですのでメッセージブローカー(MQサーバ)が必要ですが、クライアントはブローカーから選択的にメッセージを受け取ることができます。

機器間通信であるM2MネットワークやIoT分野での普及が見込まれています。ヘッダは最小で2バイト、メッセージ1度で転送できるデータも最長で256Mバイトと小さいのでHTTPでタグをつけたデータを転送するよりも電力消費量・データ処理量を大幅に抑え(10分の1から100分の1まで削減可能)、CPU負荷を低くしながら処理スピードを速くできるという性質があります。

オープン仕様のため、iOS、Android、Windows、Linux、Macとプラットフォームを選ぶことがありません。

MQTTの仕様と特徴

① ヘッダの長さ
固定長2バイトのヘッダおよびこれにともなう処理の軽さと速さを特徴とします。

② Pub/Sub型メッセージ・付加情報「トピック」
デバイス対多数のデバイス・多数のデバイス間のメッセージ配布が可能です。さらに、トピックワイルドカードにより、配布先の柔軟性が確保できます。

③ QoS=アプリケーションの性質に合わせて三種類のQoS(Quality of Service)を指定することができます。具体的には、以下のとおりです。

  • QoS0:最高1回
    メッセージが確実に届く保証はない
    メッセージ配布に失敗しても再送しない
  • QoS1:最低1回
    必ずメッセージを配布する。重複する可能性がある
  • QoS2:正確に1回
    必ずメッセージを配布する。重複は発生しない

④ Durable Subscribe=切断が発生し、再接続後に切断中のメッセージを受け取れるようメッセージ再配布
より具体的にはDurable Subscribeのフローは下記の通りになります。

  • 意図せずに電波状況等で、Subscriber(メッセージ配布)通信が切断
  • その後、Subscriberが再接続
  • 切断から再接続までに発生したメッセージを再送する処理
  • QoS1、2のメッセージを再配布

⑤ Last Will and Testament=Publish側が切断した場合、事前に決めておいたメッセージを流す
事前に決めておいたメッセージを挟んでも後から来た有効なメッセージが最小限のタイムラグで受信できるようメッセージは頻回に同じものが流せるようになっています。

⑥ Retain=後からSubscriberが受信を促した場合に送れるように、最後のメッセージを保存しておく
電波状況が不安定である等何らかの理由でSubscriberからの受信要求が途絶しても常にバックアップがあるので送信を再開できます。

開発目的

MQTTプロトコルは当初IBMで開発され、多数のPublisherとSubscriberをつなぐメッセージ通信のために作られ、かつ、接続が不安定な状況におかれるメッセンジャーや小型軽量デバイスに使われることを想定して開発されました。

Facebook Messengerに実装されているのが著名ですが、近時はIoTデバイス・ゲートウェイ間の通信、機器間通信に実装されるのが主流の用途になっています。

IoT利用事例として北九州スマートコミュニティ創造事業に使われ、エネルギー消費・蓄電器・コントローラー等の機器間通信に利用されているものがあります。

メリット

  • 電波の効率的利用が可能に
    通信が途切れやすい、不安定な状況においても繰り返し同じデータを頻回に送信することができるため安定的なデータ転送ができるようになります。また、帯域使用率も低く抑えることができます。
  • 省電力
    データ転送量自体は、非常に少ないので省電力でも通信が可能になります。センサ同士を結ぶ機器間通信やIoTデバイスの様に、小型・省スペース・省電力のチップセットにおいて、通信を行うことにも適したプロトコルということができます。
  • 「トピック」による柔軟な配布先設定
    メッセージには、「トピック」という付加情報をつけることができます。「トピック」で配布先を指定することになりますが、配布先であるメッセージブローカーは、受け取ったメッセージをさらに他のデバイスに配布することができ、最終配布先であるクライアントに関係のないデータは落としたうえでクライアントが受信することもこの「トピック」のために可能になります。

    このため、「トピック」の使い方により、ネットワーク内を流れるデータ量をあるレベルに安定させることも可能です。さらに、この「トピック」は、多層化することができ、ワイルドカードで変数をつけられるためSubscriberはトピックを柔軟に選択することができます。

限界・課題

限界・課題としては、セキュリティがあげられます。Mosquitoのようなプラットフォームに用いた場合、アクセスコントロールは可能です。

しかし、暗号化通信とすることはデータの軽さをうばうことになることからMQTTのメリット・機能特性を滅却してしまわないように工夫が必要です。

まとめ

IoT・M2M時代にセンサ間・デバイス間の通信にMQTTのような軽い、柔軟性の高い通信プロトコルは、必要不可欠と言えます。その一方で、データ・プライバシーの保護には課題があるようです。

今後、MQTTのIoTでの実例において、セキュリティとの両立をどのように技術的に達成するか、注目が集まるところです。