IoTで使われる通信プロトコル

 前回に引き続いてIoTのお話を少ししたいと思います。 

 

 前回、IoTで使われるLPWA(Low Power Wide Area=低消消費電力で電波が広範囲に届く)について少し書きましたが、LPWAの規格は、その性質上通信速度が遅く、多くのデータを送るのには適していません。よって、アプリケーションに使うプロトコルもLAN(イーサネット)の環境と同じものを使わない方が良い場合があります。例えばHTTPやFTPなどですね。なぜなら、それらのプロトコルは、ヘッダ(送りたいデータのプロパティなどの付加情報)のサイズがとても大きいからです。

 

 LPWAを利用するデータ通信で注目されているのは、MQTTというアプリケーション層のプロトコルです。

 このサーバークライアント型のプロトコルは、何といってもヘッダのサイズが小さいのが特徴です。例えばHTTPなら最低50バイト、軽いプロトコルの代表格であるDNSでも最低12バイトのヘッダが付きますが、MQTTでは最低2バイトですみます。100bpsくらいの帯域であれば、通信時間にかなり差が出てしまいます。また、消費電力も少なくて済みます。だからMQTTが使われるわけですね。

 IoTでは、センサーからデータを送ったり、各機器に対して命令を送ったりすることなどに幅広く利用されています。

 

 MQTTの送受信の仕組みとしては、Pub/Subモデルを採用しています。

 Pub/Subモデルでは、メッセージを受信するデバイス(Subscriber:購読者)は、Broker(中継サーバ)に受信したいメッセージの種類を事前にSubscribe(購読登録)します。

 メッセージを配信するデバイス(Publisher:配給者)は、中継サーバ(Broker)にメッセージをPublish(配信)します。Brokerは受け取ったメッセージを一時保存します。

 続いてBrokerは、そのメッセージを受信するSubscribeを行っているSubscriberに対してメッセージを送ります。事前にSubscribe(購読登録)を行っているSubscriberにだけ送信することで不要なトラフィックが発生することを防ぎます。

 Brokerが間に入ることで多対多のメッセージ伝達を効率化しているわけですね。

 

 また、一回だけ送る、返事があるまで何度も送るなど品質の高低を設定することができます。

 

 なお、MQTTでは当然ながら暗号化通信は行われませんので、見られてはまずいデータの場合は、TLSなど別の仕組みで暗号化する必要があります。

 

コラム一覧へ