wolfMQTTはその名の通り、MQTTプロトコルを実現するためのクライアント・ライブラリです。MQTT自身は、IoT向けのパブリッシュ&サブスクライブ型の軽量プロトコルとして比較的広く知られてきているので、ご存知のかたも多いことと思います。今回は、wolfMQTTの最近の強化ポイントを中心にご紹介しましょう。
MQTT(Message Queuing Telemetry Transport)は主にIoTのような多数のデバイスが接続されるパブリッシュ・サブスクライブモデルをベースとしたネットワークのための軽量のメッセージプロトコルで、2013年にはOASISにより標準化され、Version 3.1は2016年にはISO/IECでも標準として承認されています。
OASISではその後、大規模なIoTシステムへのスケールアウトにも対応できるようにプロトコルを拡張したVersion 5が承認されていて、最近ではそれに対応したパブリックなブローカーも利用できるようになりつつあります。
Version 5での強化点を少し紹介しましょう。
- エラーレポートの強化:QoS 1や2においてすべてのサブスクライバーへの配布が完了まで確認できるようにエラーレポートが強化されました。
- 共有サブスクライブ:莫大な数のデバイスがサブスクライブするような場合に、グループ内のデバイス間でサブスクライブを共有して負荷バランスが可能になるメカニズムです。
- ユーザ・プロパティ:アプリケーション固有のプロパティを定義して、パブリッシュ、接続、または応答時などに送ることができるようになり、より高度なカスタマイズが可能になりました。
MQTTは軽量のプロトコルを目指していますが、基本的にはTCP接続を前提にしています。このため、HTTPなどと比較すれば小型軽量といえますが、ある程度以上には軽量化されない面もあります。MQTT-SN (Sensor Network) では、TCP接続によらないUDPや無線ネットワークなどで接続されたセンサーデバイスなどのために、より軽量プロトコルを実現できるような配慮がされています。例えば、トピックIDを2文字または整数値で事前定義できるようにしたり、ブローカー検索をゲートウェイやクライアント経由でできるようにするなどが可能となっています。
wolfMQTTは、現在広く利用されているVersion 3.1.1に完全準拠の機能を提供するとともに、必要に応じてこうした Version 5 への対応、またMQTT-SNのための機能も利用できるIoTクライアント向け組み込みライブラリです。
wolfMQTTの詳細についてはこちらをご覧ください。
連載:wolfの仲間たち
第一回:全員集合
第二回:安全なファームウェア更新を支えるwolfBoot
第三回:安全なリモートコンソールwolfSSH
第四回:ハードウェアレベルのセキュリティを支えるwolfTPMとセキュアエレメント
第五回:最強のペア誕生 – cURLとwolfSSL