バージョン状態レベル適した用途新規プロジェクト
MQTT 3.1履歴版3legacy device、古い broker、初期 IBM 互換必要な場合のみ
MQTT 3.1.1OASIS / ISO4広い IoT 互換、gateway、軽量 telemetry互換性基準として有効
MQTT 5.0OASIS5modern broker、cloud、multi-tenant、診断性新規では優先
MQTT-SN 1.2関連仕様独立センサーネットワーク、非 TCP/IP、制約デバイスネットワークが必要とする場合のみ
MQTT 3.1: legacy 互換のための履歴バージョン
MQTT 3.1 は OASIS 標準化前の重要な基盤で、client、broker、CONNECT、PUBLISH、SUBSCRIBE、QoS、retain、will、keep alive、topic filter をすでに備えていました。
現在の価値は古い protocol name、CONNECT packet、Broker の互換モードを理解することです。
新規プロダクトでは選ばず、firmware や現場 gateway が更新できない場合だけ互換経路を残します。
確認ポイント
- Broker の MQTT 3.1 互換が有効か確認する。
- CONNECT の protocol name と protocol level を見る。
- 接続失敗を単純なネットワーク障害と決めつけない。
MQTT 3.1.1: 実務上の互換性ベースライン
MQTT 3.1.1 は広く標準化され、IoT device、gateway、OSS broker、cloud service、WebSocket client の共通語になっています。
publish、subscribe、QoS、retain、last will が中心なら今でも十分です。
一方で error reporting、標準 properties、session expiry、message expiry、flow control、disconnect diagnostics は MQTT 5.0 より弱いです。
3.1.1 が適する場合
- SDK や module が MQTT 5.0 非対応。
- message model が単純。
- 最大互換性が最重要。
- 現場更新コストが高い。
MQTT 5.0: modern MQTT の第一候補
MQTT 5.0 は publish/subscribe を保ちつつ、properties と reason codes で接続、publish、subscribe、ack、disconnect を拡張します。
properties は session expiry、message expiry、packet size、receive maximum、topic alias、response topic、correlation data、user properties、content type などを表現します。
reason codes により認証失敗、権限拒否、packet size 超過、server migration、管理 disconnect などを運用で判別できます。
主な機能
- 詳細な reason codes。
- 標準化された message / session metadata。
- Message Expiry で古い command を防止。
- Receive Maximum と Maximum Packet Size で保護。
- Response Topic と Correlation Data で request-response。
MQTT-SN: センサーネットワーク向け関連プロトコル
MQTT-SN は TCP 上の MQTT の代替ではなく、非 TCP/IP や極端に制約された sensor network に publish/subscribe を持ち込みます。
多くの場合、short address や Topic ID を通常の MQTT Broker に変換する gateway を使います。
TCP/TLS や WebSocket が安定して使えるなら MQTT-SN は通常不要です。
選び方
- Cloud IoT と WebSocket は MQTT 3.1.1 または 5.0。
- 非 TCP/IP や sleep-heavy device は MQTT-SN。
- 既存 Broker 接続では gateway 設計が重要。