いつもお世話になっております。
長文ですが、よろしくお願いします。
背景
現在、イーサネットで接続された機器間通信をどのように実現するか調査・考察しております。
調査していくと、いわゆる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に指示を出すといったような、通信によるシーケンスが発生しないようなシステムの実現を考えています)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。