質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
TCP

TCP(Transmission Control Protocol)とは、トランスポート層のプロトコルで、コネクション型のデータサービスです。

UDP

UDP(User Datagram Protocol)とは、トランスポート層のプロトコルであり、コネクション型のデータサービスです。IPネットワーク上の別のホストにコンピュータのアプリケーションがメッセージを送ることができ、転送チャンネルやデータ経路を設定する必要はありません。TCPに比べて高速であるが、信頼性が薄いという特徴があります。

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

MQTT

MQTT(Message Queue Telemetry Transport)とは、TCP/IPネットワークで利用可能な通信プロトコルの一つで、IoT/M2M向けに開発された軽量なプロトコルです。ヘッダ部分は最小2バイトと小さく、通信量・CPU負荷・電力消費量などを抑えることができます。

Q&A

解決済

1回答

9209閲覧

MQTTとUDPマルチキャスト/ブロードキャストの比較

退会済みユーザー

退会済みユーザー

総合スコア0

TCP

TCP(Transmission Control Protocol)とは、トランスポート層のプロトコルで、コネクション型のデータサービスです。

UDP

UDP(User Datagram Protocol)とは、トランスポート層のプロトコルであり、コネクション型のデータサービスです。IPネットワーク上の別のホストにコンピュータのアプリケーションがメッセージを送ることができ、転送チャンネルやデータ経路を設定する必要はありません。TCPに比べて高速であるが、信頼性が薄いという特徴があります。

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

MQTT

MQTT(Message Queue Telemetry Transport)とは、TCP/IPネットワークで利用可能な通信プロトコルの一つで、IoT/M2M向けに開発された軽量なプロトコルです。ヘッダ部分は最小2バイトと小さく、通信量・CPU負荷・電力消費量などを抑えることができます。

0グッド

1クリップ

投稿2017/06/23 23:27

編集2017/06/25 13:01

いつもお世話になっております。
長文ですが、よろしくお願いします。

背景

現在、イーサネットで接続された機器間通信をどのように実現するか調査・考察しております。
調査していくと、いわゆるIoT下での機器間通信は、MQTTやAMQPなどのプロトコルが一般的に使われているということがわかりました。
トレンドで確認してみると、主流はMQTTになりつつあるのかなぁという認識です。
そこで、MQTTを導入する前に確認しておきたいこと・疑問に思っていることをご教授いただけないでしょうか。
よろしくお願いします。

具体的に想定するシステム構成

  • イーサネットで接続される機器が最大20ほどあり、その集合を1ユニットとする
  • 1ユニットはプライベートネットワークを構成する
  • 1ユニット内の機器には、デスクトップPCや低スペックの組み込み機器などが属する
  • 1ユニット内の機器同士で多対多で通信を行う
  • ユニットは複数(想定で最大1000個)あり、ユニットごとに異なるネットワーク空間を形成するが、異なるユニット同士が通信することはない
  • 最大1000個あるユニットを監視するサーバが1つある。監視サーバはWAN(VPN)を経由してどのユニットにも属さないネットワーク空間にある
  • 監視サーバは、(1000ユニット)×(1ユニット内20機器)の最大20000機器の状態を10秒程度の誤差内でリアルタイム監視する

※サーバと各ユニットが異なるネットワーク空間に属するため、ブロードキャストは事実上不可です

UDPによるマルチキャストとMQTTの比較

自分なりに比較してみたところが以下の通りです。

UDPマルチキャストのメリット(MQTTのデメリット)
  • コネクション不要なので、UDPによるマルチキャストはリソースコストが低い
  • MQTTの環境を整備する必要がない
UDPマルチキャストのデメリット(MQTTのメリット)
  • 独自プロトコルを定義しなければならないため?(送られてきたマルチキャストについて、その情報を使用するかしないかを機器が取捨選択しなければならないが、その方法を独自に定義する必要がある、など)
  • 取りこぼしが発生する可能性があるため?

上記2点が考えられましたが、
1つ目については、MQTTで送られるメッセージの中身自体は独自プロトコルを定義する必要があるため、あまり問題ではないと感じます。
2つ目については、例えばビーコンのように各機器が定期的に情報を発信するシステムであれば問題ないと思います。

以上を踏まえて疑問に思っていること

以下、2点ご教授願いします。

** 1. 機器間通信にUDPによるマルチキャスト/ブロードキャストを使用するのは一般的ではないのでしょうか **

色々ググってみると、MQTTなどのTCPベースのM2Mプロトコルを使用する事例ばかり見つかります。
しかし、個人的にはUDPによるマルチキャスト/ブロードキャストも合理的な選択肢なのではと思っています。
実際に、機器間通信にUDPによるマルチキャスト/ブロードキャストを使用するのは一般的ではないのでしょうか?
そして一般的ではないならその理由は何故なのでしょうか?

** 2. UDPのマルチキャスト/ブロードキャストではなく、MQTTを使うメリットは? **

上の項目に関連しますが、一般的に、UDPのマルチキャスト/ブロードキャストでなく、MQTTを使用するメリットは何があるのでしょうか。

以上、2点よろしくお願いします。


そもそも、マルチキャスト/ブロードキャストとMQTTを比較すること自体がちょっとズレているのでしょうか。(ググっても比較などの記事は見つかりませんし・・・)

補足です

前提として、以下を想定しています。

  • 通信において、通信内容の順番は考慮不要とします。

つまり、TCPであれば通信の順番が保証されることにより、機器間でシーケンスという概念を形成できます。しかし、今回のシステムでは通信によるシーケンスは存在しません。(というか、機器Aが機器Bに指示を出すといったような、通信によるシーケンスが発生しないようなシステムの実現を考えています)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

そもそも、マルチキャスト/ブロードキャストとMQTTを比較すること自体がちょっとズレているのでしょうか。

(あくまでも私の感覚になりますが)UDP対MQTTという比較自体に違和感があります。

MQTTではトランスポート層にTCPを利用しますが、UDPはこのTCPと同じレイヤに属します。異なるレイヤの物を、直接比較するのは少々無理がある気がします。

MQTTが何を目指したものであるかは、下記ページを参考にください。
https://github.com/mqtt/mqtt.github.io/wiki/Design-principles

投稿2017/06/28 05:20

編集2017/06/28 05:26
yohhoy

総合スコア6191

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問