mqtt
標準化
mqtt5
mqttv5

MQTTバージョン5の概要 第1回 標準化の狙い

More than 1 year has passed since last update.

2017/3/18 連載終了!

最近IoTへの応用で注目されている通信プロトコルであるMQTTですが、最新バージョン3.1.1の次のバージョンとして、バージョン5の標準化が進んでおり、2017年末には標準化完了する見込みです。

バージョン番号がかなり上がることにふさわしい、大きな変更になっているようです。しかし、これに関して日本語のドキュメントが皆無に等しい状況です。よって、拙いですが、情報発信してみます。

なお、筆者は、標準化には素人なので、間違いがありましたら、ご容赦とともに、あたたかいご指摘をお願いします。

連載目次

第1回 標準化の狙い (2017/2/25)

第2回 旧バージョンからの主な変更点 1〜3.2 (2017/3/9)

第3回 旧バージョンからの主な変更点 3.3〜3.15 (2017/3/12)

第4回 旧バージョンからの主な変更点 4〜 (2017/3/18)

第5回 考察 MQTTはIoTにおいてHTTP/RESTを完全に駆逐する (2017/3/18)

参考文献

OASIS MQTT TC - 本記事はこちらの各種ドキュメントをもとに記載しました。

Mosquitto MQTT v5 draft features - 概要がまとまっていますが執筆時点が古く、重要な新機能が漏れています。


1. 標準化完了は2017年末の見込み


1.1. 標準化スケジュールと進捗

MQTT_v5_TC_Timeline_30062016 2016/6/30 にスケジュールが記載されています。

タスク
期限

WD(final) = CSD1
2016/9/8

CSD2
2016/12/1

CS
2017/1/8

COS
2017/1/15

OS
2017/4/17

WD: Working Draft (TC内の標準化作業メンバー間の合意形成)

CSD: Committee Specification Draft

CS: Committee Specification (OASIS MQTT TCでの投票による最終合意)

COS: Candidate OASIS Standard

OS: OASIS Standard (パブリックレビューを経たOASIS標準)

これによると、2017年4月には、バージョン5の標準化が完了する予定になっています。しかし、現時点でWD11(2017/2/23)まで議論が進んでいますが、いまだにWD(final)には至っていません。


1.2. 標準化完了時期の予測

本稿では、大胆に、MQTTバージョン5標準化の時期を予測します。

まず、2/9の議事録を参照すると、WD12がCSDとなる期待があるようです。WDのリリース間隔から想定すると4月にはWD12=WDfinal=CSDが出てくると思われます。以降のスケジュールは投票期間等であるため、計画時と相対期間は変わらないと仮定すると、+7か月あまり、すなわち2017年11月〜12月に標準化完了すると思われます。

なお、OASIS標準は、いわゆる「コミュニティー標準」であり、国際標準ではありません。前の版のMQTT3.1.1は、OASIS標準化から約1年半経過して、国際標準であるISO/IEC標準になりました。

CSDが出てくると、オープンソースの対応も進み、夏〜秋には一部のオープンソースの先行評価版において、MQTTバージョン5ドラフト対応のものが出てくると予想します。そのあたりになると、日本語の解説も揃ってくることでしょう。


2. 標準化の狙い

MQTT Recharter.docx #6 2016/4/12 に標準化開始時の目的が記載されています。

Charterとは、OASIS標準化におけるプロジェクト計画書のことを示します。後続バージョンのプロジェクト計画書は、Recharterと呼びます。

これによると、MQTTバージョン5は、MQTTバージョン3.1.1をベースに以下の拡張を行うとあります。


  • 拡張性強化と大規模システムへの対応


    • 通信機能、オプション機能、リソース使用量制御など



  • エラーレポートの改善


    • MQTTクライアントとサーバの双方に対する拡張リターンコードの定義



  • Observedパターンへの対応


    • 検索、要求応答、関連付けなど



  • 拡張機構


    • パケットにアプリで活用可能なデータ領域の追加を可能に



  • 性能改善とリソース制限が厳しい端末への対応強化

なお、この文章の中には、同じOASISで標準化をしているAMQPとの位置付けについて、次のような記載があります。OASISの公式見解として、興味深いです。


  • AMQPは、企業ミドルウェア・アプリケーション同士の相互接続向け

  • MQTTは、センサー、制御システム、組み込みシステム、モバイルデバイス向け

  • 双方をブリッジすることで、テレメトリーを企業アプリと接続することができる


3. 標準化イシューリスト

JiraListInputForAprilFaceToFace.odt #4 2016/4/13 にイシューリストが記載されています。

JIRAとは、OASIS標準化におけるイシューリストのことを示します。

標準化プロジェクト開始当初、以下の20個(項13は欠番)のJIRAがリストアップされています。それぞれの詳細内容や検討進捗状況は、https://issues.oasis-open.org/browse/(JIRA番号)という形のURLに記載されています。本稿執筆時点(2017/2/25)における進捗状況を確認し、ステータスおよび結果の欄に記載しました。


JIRA番号
表題
ステータス
結果

1
MQTT-276
大規模システム向け拡張
open
unresolved

2
MQTT-236
ACK結合、否定応答
closed
fixed

3
MQTT-256
一般的なメッセージフォーマット表示、メッセージメタデータ
applied
fixed

3続き
MQTT-282
既存のパケット領域をメタデータ向けに再構成
closed
unresolved

4
MQTT-270
MQTT-SN向けサーバー契機の切断
applied
fixed

5
MQTT-197
要求応答(Observedパターン)
applied
fixed

6
MQTT-235
非局所的サブスクリプション
applied
fixed

7
MQTT-249
有効期限機能の追加
applied
fixed

8
MQTT-203
MQTT URIスキーマ
open
unresolved

9
MQTT-234
共有サブスクリプション
applied
fixed

10
MQTT-257
フロー制御
applied
fixed

11
MQTT-255
新たな認証機構
applied
fixed

12
MQTT-278
MQTT-SN向けサーバー契機のping
applied
fixed

14
MQTT-269
MQTT-SN向けトピック登録
applied
fixed

15
MQTT-217
サブスクリプションの重複に関する実装ガイドライン
applied
fixed

16
MQTT-251
サーバーにて付与したクライアントIDをクライアントに返信
applied
fixed

17
MQTT-260
CONNACKにリダイレクトを追加
applied
fixed

18
MQTT-263
ステート管理の簡略化
closed
fixed

19
MQTT-259
MQTTの拡張性のためのDNS SRVレコードの利用
new
unresolved

20
MQTT-271
低性能デバイスの制限「Arduino問題」
closed
unresolved

21
MQTT-252
大きなサイズのメッセージの転送
closed
unresolved

進捗状況を見ると、初期のJIRAのうち、openもしくはnew/unresolvedは、残り3つになっており、WD完成が近づいていることがわかります。

これらを踏まえつつ、次回は、最新のMQTTバージョン5 WD11が、バージョン3.1.1からどのように変更されたかを、見てみましょう。