UK

wolfMQTT

MQTT (Message Queuing Telemetry Transport) はM2MやIoTのようにメモリー容量などの制限の厳しい環境向けに開発された軽量でオープンなメッセージング・プロトコルです。MQTTはメッセージのパブリッシュとトピックへのサブスクライブによって通信を行うパブリッシュ・サブスクライブ型モデルをベースにしています。プロトコルはオーバヘッドを最少に抑えるために、メッセージを効率的にパックすることができるようになっています。MQTT仕様では、トランスポート層をセキュアなプロトコルとするためのオプションとして8883ポートを使用したTLSを推奨しています(セキュアMQTT)。制限の厳しいデバイス環境では、TLSの「セッション再開機能」を利用した再接続コストの圧縮の恩恵を受けることができます。

wolfMQTTライブラリーは組み込み向けにC言語で記述されたクライアントを実現したもので、wolfSSLライブラリーによってSSL/TLSをサポートします。ライブラリーは、マルチプラットフォーム、容量の制約、拡張性などを配慮し、すべてオリジナルに設計されたもので、MQTT v3.1.1仕様をベースにすべてのパケット・タイプ、QoSレベル0から2、またwolfSSLライブラリーを利用したSSL/TLSをサポートします。

オープンソース版のダウンロードはこちら。

機能諸元

  • wolfSSL によるオリジナル開発
  • MQTT v3.1.1 仕様準拠
  • クライアント側のすべてのパケット・タイプ、プロトコル・オプションのサポート
  • QoSレベル0から2(配送保証)まで
  • 直接TCPおよびTLSのサポート(wolfSSLライブラリー経由)
  • 単一スレッド・モデル、単一メッセージ・コールバック
  • 移植性、互換性に配慮したC89による記述
  • 最少のメモリ容量(コンパイルサイズ約6kB)
  • ビルド手順、サンプル・プログラムの解説、APIドキュメント
  • MQTTクライアントの実現例
  • ネットワーク・インタフェースは拡張性のためにコールバック経由
  • カスタム仕様のためのパケット解析、エンコード・デコード構造
  • 最少の外部依存(strlen, memcpy, memset)
  • 詳細なエラーチェック、エラー処理
  • Doxygen形式のインライン・ドキュメンテーション
  • 1200行以下の構造化されたCコード
  • 複数のMQTTブローカー・サーバ、QoSレベル0-2、非TLS/TLSなどの充分なテスト
  • Linux, Mac OS X およびFreescale Kinetis K64でのテスト済
  • ChaCha20/Poly1305 AEAD、軽量、移植性など wolfSSLライブラリーから受け継いだ軽量TLSとしての特徴
  • オープンソース(GPLv2)
  • GitHub: https://github.com/wolfSSL/wolfMQTT