-
Notifications
You must be signed in to change notification settings - Fork 0
MS_IoTCommunicationProtocols
nishi_74322014 edited this page Aug 3, 2026
·
1 revision
- 戻る(通信技術、IoT(
MS_IoT.md))- IoT関連の通信プロトコル
IoT関連の通信プロトコル。
- IoT関連の通信プロトコルと言うことで、全体的に、
非力なデバイスやネットワークが不安定な場所でも
動作しやすい様にメッセージ通信電文が軽量に設計されている。 - 代表的なモノは、MQTTとAMQPの2プロトコル。
- OSSでサーバ(ブローカ)がさっと建てられそうなので、クライアントライブラリについても調査する。
- シンプル・省電力なメッセージキュープロトコル
- TopicベースでのPub/Sub型データ配信モデル
- 1対1、1対N、N対Nのメッセージ配布が可能。
- メッセージの中継を行うブローカと言うサーバが必要になる。
- 3つのQoS(Quality of Service)レベルの指定ができる。
- QoS 0 (At most once):最高1回(メッセージ配布に失敗しても再送をしない)
- QoS 1 (At least once):最低1回(必ずメッセージ配布するが、重複する可能性がある)
- QoS 2 (Exactly once):正確に1回(必ずメッセージを配布して、重複も発生しない)
- TopicベースでのPub/Sub型データ配信モデル
- MQTTブローカ
- 自前
- Mosquitto — MQTTのリファレンス実装の役割を担う。
- mosca — node.js上で動作するMQTT Broker
- Node-RED — Node-REDの1ノードとして動作(実体はmosca)
- サービス
- HiveMQ / Beebotte / CloudMQTT / shiftr.io
- AWS IoT Core、Google Cloud IoT
- Azure IoT Hub(
MS_AzureIoTHub.md)
- 自前
- 認証(ブローカ)
- anonymous
- パスワード認証
- クライアント証明書
- サービス提供の独自機構
補足(最新化): 元 Wiki の記述は MQTT 3.1.1 が前提。 現在は MQTT 5.0(OASIS 標準)が主流で、 理由コード、セッション有効期限、共有サブスクリプション、 トピック エイリアス、Request/Response パターンなどが追加されている。 また Node-RED の内蔵 MQTT ブローカは Aedes 系に置き換わっており、 Google Cloud IoT Core は 2023年に提供終了している。
- 高機能・高信頼性なワイヤレベルプロトコル。
- ブローカーモデル
- AMQP 0-10 はブローカー指向。
- AMQP 1.0 でプロトコル側からは削除されたので、
厳密な意味でブローカーではないサーバー/中間を作成できる。
- 信頼性、セキュリティ
- ブローカーモデル
- ブローカ
- 自前
- RabbitMQ(
MS_RabbitMQ.md)
- RabbitMQ(
- サービス
- Azure IoT Hub(
MS_AzureIoTHub.md) - Azure Event Hubs(
MS_AzureEventHubs.md) - Azure Service Bus(Azureのメッセージング・サービス:
MS_AzureMessagingServices.md)
- Azure IoT Hub(
- 自前
- 認証(ブローカ)
- パスワード認証
- クライアント証明書
- サービス提供の独自機構
移行メモ: 原文はこの節の見出しを「MQTTブローカ」としていたが、 AMQP の節なので「ブローカ」に改めた(列挙内容も AMQP 側のもの)。 なお RabbitMQ のネイティブ プロトコルは AMQP 0-9-1 で、 AMQP 1.0 はプラグイン(3.x)/ネイティブ対応(4.0 以降)という位置付け。
- 制約付きM2Mデバイス用(例えば、低電力、損失の多いネットワーク)
- 特殊なInternetアプリケーション・プロトコル。
- UDPまたはUDPアナログをサポートするほとんどのデバイスで実行できる。
- マルチキャストサポート、単純で、非常に低いオーバーヘッド。
- Webとの統合を簡素化するためにHTTPに簡単に変換できるように設計されている。
- 関連技術に「CBOR」「CWT」がある。
※ CoAP は REST スタイル(GET/POST/PUT/DELETE)を UDP 上で実現するもので、
暗号化には DTLS を使う(coaps://、5684/udp)。
- メッセンジャーなどでよく使われてきたプロトコル
- 長い歴史があり枯れているため安心して利用できる。
- 認証を伴った双方向性を持った仕組みが実現できる。
※ XML ベースのため電文が重く、非力なデバイス向けとしては MQTT / CoAP に比べ不利。
- DARPAモデルに準じた、IPネットワーク上のNW機器の監視・制御用プロトコル。
- トラフィック管理などで利用される。
- 対象機器(エージェント)の情報をSNMPで管理機器(マネージャー)が収集する。
- プロトコルは、UDPで以下の様なメッセージをやり取りする。
- Get Request : 指定した識別子(OID)の管理情報をSNMPエージェントから取得
- Get Response : Get Requestに対応するレスポンス
- Set Request : SNMPエージェントの制御
- Trap : SNMPエージェントからの状態通知
- 管理情報ベース(MIB)という標準規格に基づいて管理情報を保持する。
- 利用、応用
- RMONという仕組みで利用されている。
- NW機器ではなく、IoT機器の監視・制御にも応用されている。
※ SNMP v1/v2c は community 文字列が平文で流れるため、
認証・暗号化が必要な場合は SNMPv3 を使う。
- MQTT — シンプル、省電力
- AMQP — 高機能、高信頼性
- IoTでの利用を期待されているプロトコルについて
- CodeZine「IoT時代を支えるプロトコル『MQTT』」
Tags: 通信技術, .NET開発, IoT
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。