- 追加された行はこの色です。
- 削除された行はこの色です。
「[[マイクロソフト系技術情報 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>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Apache%20NiFi]]でサーバがさっと建てられそうなので、~
-代表的なモノは、[[MQTT>#feb265c9]]と[[AMQP>#ne273685]]の2プロトコル。
-OSSでサーバ(ブローカ)がさっと建てられそうなので、~
クライアントライブラリについても調査する。
*詳細 [#ya47160c]
**MQTT [#feb265c9]
***概要 [#u865d25c]
-シンプル・省電力なメッセージキュープロトコル
-TopicベースでのPub/Sub型データ配信モデル、~
1対1、1対N、N対Nのメッセージ配布が可能。
--TopicベースでのPub/Sub型データ配信モデル
---1対1、1対N、N対Nのメッセージ配布が可能。
---メッセージの中継を行うブローカと言うサーバが必要になる。
-3つのQoS(Quality of Service)レベルの指定ができる。
--QoS0:最高1回(メッセージ配布に失敗しても再送をしない)
--QoS1:最低1回(必ずメッセージ配布するが、重複する可能性がある)
--QoS2:正確に1回(必ずメッセージを配布して、重複も発生しない)
--3つのQoS(Quality of Service)レベルの指定ができる。
---QoS 0 (At most once):~
最高1回(メッセージ配布に失敗しても再送をしない)
---QoS 1 (At least once):~
最低1回(必ずメッセージ配布するが、重複する可能性がある)
---QoS 2 (Exactly once):~
正確に1回(必ずメッセージを配布して、重複も発生しない)
-FacebookのメッセンジャーにMQTTを使用している。
-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
-動かしながら学ぶMQTT~
-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技術詳解~
--IoT時代を支えるプロトコルMQTT技術詳解~
https://www.slideshare.net/naotomatsumoto/itrc36-20141126nmatsumotov1
-.NETライブラリ
--M2Mqttを使用したMQTTのクライアントサンプル | OPC Diary~
https://opcdiary.net/?p=28785
**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デバイス(例えば、低電力、損失の多いネットワーク)用
-制約付き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
**AMQP [#ne273685]
**SNMP [#yb52045b]
***概要 [#y0dd68d6]
高機能・高信頼性なワイヤレベルプロトコル。
***概要 [#jcd38017]
-DARPAモデルに準じた、~
IPネットワーク上のNW機器の監視・制御用プロトコル。
-メッセージ指向
-キューイング
-ルーティング
--ポイント・ツー・ポイント
--Pub/Sub型データ配信モデル
-[[トラフィック管理>監視・パケット解析編#x1059f2e]]などで利用される。
-信頼性、セキュリティ
-対象機器(エージェント)の情報をSNMPで管理機器(マネージャー)が収集する。
***参考 [#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
-プロトコルは、UDPで以下の様なメッセージをやり取りする。
--Get Request : 指定した識別子(OID)の管理情報をSNMPエージェントから取得
--Get Response : Get Requestに対応するレスポンス
--Set Request : SNMPエージェントの制御
--Trap : SNMPエージェントからの状態通知
-.NETライブラリ
--・・・
-管理情報ベース(MIB)という標準規格に基づいて管理情報を保持する。
**SNMP [#yb52045b]
-利用、応用
--[[RMONという仕組み>監視・パケット解析編#x1059f2e]]で利用されている。
--NW機器ではなく、IoT機器の監視・制御にも応用されている。
***概要 [#jcd38017]
-DARPAモデルに準じた、~
IPネットワーク上のNW機器の監視・制御用プロトコル。
-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(HTTP) [#l2bee8d7]
...
**[[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の市場性と、IoTを取り巻く最新技術動向~
https://codezine.jp/article/detail/7750
-IoT時代に知っておくべきテクノロジーと課題~
https://codezine.jp/article/detail/7751
-IoT時代を支えるプロトコル「MQTT」(前編)~
-IoT時代を支えるプロトコル「MQTT」
--(前編)~
https://codezine.jp/article/detail/8000
-IoT時代を支えるプロトコル「MQTT」(中編)~
--(中編)~
https://codezine.jp/article/detail/8019
-IoT時代を支えるプロトコル「MQTT」(後編)~
--(後編)~
https://codezine.jp/article/detail/8020
-モノのインターネット(IoT)の不都合な真実~
https://codezine.jp/article/detail/8770
----
Tags: [[:通信技術]], [[:.NET開発]], [[:IoT]]