「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -戻る --[[IoT]] --[[通信技術]] * 目次 [#g0a49cb3] #contents *概要 [#oba07a39] IoT関連の通信プロトコル。 -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] -高機能・高信頼性なワイヤレベルプロトコル。 --メッセージ指向 --キューイング --ルーティング ---P2P型 ---Pub/Sub型 --ブローカーモデル ---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開発]], [[:IoT]]