「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>通信技術]]
-戻る
--[[IoT]]
--[[通信技術]]

* 目次 [#g0a49cb3]
#contents

*概要 [#oba07a39]
-IoT関連の通信プロトコル。
IoT関連の通信プロトコル。

-[[Apache NiFi>]]でサーバがさっと建てられそうなので、~
-IoT関連の通信プロトコルと言うことで、全体的に、~
非力なデバイスやネットワークが不安定な場所でも~
動作しやすい様にメッセージ通信電文が軽量に設計されている。

-代表的なモノは、[[MQTT>#feb265c9]]と[[AMQP>#ne273685]]の2プロトコル。

-OSSでサーバ(ブローカ)がさっと建てられそうなので、~
クライアントライブラリについても調査する。

*詳細 [#ya47160c]

**MQTT [#feb265c9]

***概要 [#u865d25c]
-シンプル・省電力なメッセージキュープロトコル

--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回(必ずメッセージを配布して、重複も発生しない)

-MQTTブローカ
--自前

---[[Mosquitto]]~
MQTTのリファレンス実装の役割を担う。~
https://mosquitto.org

---mosca~
node.js上で動作するMQTT Broker~
http://mosca.io/~

---[[Node-RED>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Node-RED#d7d08977]]~
・Node-REDの1ノードとして動作~
・実態はmosca

--サービス
---HiveMQ
---Beebotte
---CloudMQTT
---shiftr.io
---AWS、Google
---[[Azure IoT Hub]]
---%%[[Azure Event Hubs]]%%

-認証(ブローカ)
--anonymous
--パスワード認証
--クライアント証明書
--サービス提供の独自機構

***参考 [#a849aa97]
-MQ Telemetry Transport - Wikipedia~
https://ja.wikipedia.org/wiki/MQ_Telemetry_Transport

-MQTT とはなんだったのか~
https://gist.github.com/voluntas/e0a90f3e22316144ed3a

-obnizから使いやすいMQTTブローカーとライブラリ|IoT-Gym~
https://iot-gym.com/mqtt-brokers-and-libraries-suitable-for-obniz/

-slideshare
--動かしながら学ぶMQTT~
https://www.slideshare.net/YokotaEiji/mqtt-61926090
--IoT時代を支えるプロトコルMQTT技術詳解~
https://www.slideshare.net/naotomatsumoto/itrc36-20141126nmatsumotov1

**AMQP [#ne273685]

***概要 [#y0dd68d6]
-高機能・高信頼性なワイヤレベルプロトコル。

--ブローカーモデル
---AMQP 0-10 はブローカー指向。
---AMQP 1.0 でプロトコル側からは削除されたので、~
厳密な意味でブローカーではないサーバー/中間を作成できる。

--信頼性、セキュリティ

-MQTTブローカ
--自前
---[[RabbitMQ]]

--サービス
---[[Azure IoT Hub]]
---[[Azure Event Hubs]]
---[[Azure Service Bus>Azureのメッセージング・サービス#a75511f3]]

-認証(ブローカ)
--パスワード認証
--クライアント証明書
--サービス提供の独自機構

***参考 [#icd28179]
-Advanced Message Queuing Protocol - Wikipedia~
https://ja.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol
-Azure Service Bus の AMQP 1.0 の概要 | Microsoft Docs~
https://docs.microsoft.com/ja-jp/azure/service-bus-messaging/service-bus-amqp-overview

**CoAP [#y624562c]

***概要 [#pa9a2710]
-制約付きM2Mデバイス用~
例えば、低電力、損失の多いネットワーク

-特殊なInternetアプリケーション・プロトコル。
--UDPまたはUDPアナログをサポートするほとんどのデバイスで実行できる。
--マルチキャストサポート、単純で、非常に低いオーバーヘッド。
--Webとの統合を簡素化するためにHTTPに簡単に変換できるように設計されている。

-関連技術に「[[CBOR]]」「[[CWT]]」がある。

***参考 [#qe03b662]
-Constrained Application Protocol - Wikipedia~
https://en.wikipedia.org/wiki/Constrained_Application_Protocol

-“モノ”のインターネットへのつながり方L4以上~
https://www.nic.ad.jp/ja/materials/iw/2016/proceedings/t08/t8-maeda.pdf

-RFC 7252 - The Constrained Application Protocol (CoAP)~
https://tools.ietf.org/html/rfc7252

**XMPP [#h20a0b88]

***概要 [#e8096e80]
-メッセンジャーなどでよく使われてきたプロトコル
-長い歴史があり枯れているため安心して利用できる。
-認証を伴った双方向性を持った仕組みが実現できる。

***参考 [#iffb7ba6]
-Extensible Messaging and Presence Protocol - Wikipedia~
https://ja.wikipedia.org/wiki/Extensible_Messaging_and_Presence_Protocol

**SNMP [#yb52045b]

***概要 [#jcd38017]
-DARPAモデルに準じた、~
IPネットワーク上のNW機器の監視・制御用プロトコル。

-[[トラフィック管理>監視・パケット解析編#x1059f2e]]などで利用される。

-対象機器(エージェント)の情報をSNMPで管理機器(マネージャー)が収集する。

-プロトコルは、UDPで以下の様なメッセージをやり取りする。
--Get Request : 指定した識別子(OID)の管理情報をSNMPエージェントから取得
--Get Response : Get Requestに対応するレスポンス
--Set Request : SNMPエージェントの制御
--Trap : SNMPエージェントからの状態通知

-管理情報ベース(MIB)という標準規格に基づいて管理情報を保持する。

-利用、応用
--[[RMONという仕組み>監視・パケット解析編#x1059f2e]]で利用されている。
--NW機器ではなく、IoT機器の監視・制御にも応用されている。

***参考 [#ybb51250]
-Simple Network Management Protocol - Wikipedia~
https://ja.wikipedia.org/wiki/Simple_Network_Management_Protocol

-CodeZine > net-snmpについて
--基礎知識~
https://codezine.jp/article/detail/2830
--環境構築~
https://codezine.jp/article/detail/2839
--機器監視~
https://codezine.jp/article/detail/2865
--Trap設定~
https://codezine.jp/article/detail/2893
--独自監視項目の追加 - 前編~
https://codezine.jp/article/detail/2938
--独自監視項目の追加 - 後編~
https://codezine.jp/article/detail/2991
--v3の設定、パッチについて~
https://codezine.jp/article/detail/3028

-.NETライブラリ
--vallog: SNMPメモ(C#、net-snmp)~
http://valvallow.blogspot.com/2009/09/snmpcnet-snmp.html

--WMI
---C# Programming > SNMPを使う~
http://uchukamen.com/Programming1/SNMP/

--#SNMP Library
---https://docs.sharpsnmp.com~
---https://www.nuget.org/packages/Lextm.SharpSnmpLib/

**[[REST]] API([[WebAPI]]) [#l2bee8d7]

***概要 [#u3d0377d]
[[HTTP]]プロトコルの[[REST]] API([[WebAPI]])

***参考 [#n764d4ad]
-[[HTTP]]
-[[REST]]
-[[WebAPI]]

**[[MQTT>#feb265c9]] vs [[AMQP>#ne273685]] [#tb15f6bf]

***サマリ [#y23916e1]
-MQTT
--シンプル
--省電力

-AMQP
--高機能
--高信頼性

***参考 [#ba7e7bcd]
-MQTTとAMQPと.NET~
https://www.slideshare.net/terurou/mqttamqpnet
-【第5回】プロトコルの選択肢と検討ポイント|IoTアーキテクチャ入門~
https://www.hulft.com/special-column/iot-architecture_01/iot-architecture_05
-通信プロトコルAMQPはIoTに向いているか調査せよ! | 日経クロステック(xTECH)~
https://xtech.nikkei.com/atcl/nxt/mag/nnw/18/041800005/121900011/

*参考 [#q2032c6c]
-MQTTとAMQPと.NET~
https://www.slideshare.net/terurou/mqttamqpnet

-IoTでの利用を期待されているプロトコルについて~
http://iot.nifcloud.com/blog/2015/10/09/iot-protocol/

**CodeZine(コードジン) [#h4b501b1]
-IoT時代を支えるプロトコル「MQTT」
--(前編)~
https://codezine.jp/article/detail/8000
--(中編)~
https://codezine.jp/article/detail/8019
--(後編)~
https://codezine.jp/article/detail/8020

----
Tags: [[:通信技術]], [[:.NET開発]], [[:ASP.NET]]
Tags: [[:通信技術]], [[:.NET開発]], [[:IoT]]


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS