プロトコル

Cloud IoT Core では、デバイス接続と通信(MQTT と HTTP)の 2 つのプロトコルがサポートされています。デバイスは「ブリッジ」(MQTT ブリッジまたは HTTP ブリッジのいずれか)を介して Cloud IoT Core と通信します。コンポーネントの概要に示すように、MQTT/HTTP ブリッジは Cloud IoT Core の中心的なコンポーネントです。

デバイス レジストリを作成する際に、MQTT、HTTP、またはそれらの両方を有効にするプロトコルを選択します。

  • MQTT は、組み込みデバイスで頻繁に使用され、サポートされる標準のパブリッシュ / サブスクライブ プロトコルであり、マシン間のやり取りでも広く使用されています。

  • HTTP は「接続レス」プロトコルです。HTTP ブリッジでは、デバイスは Cloud IoT Core への接続を維持しません。代わりに、リクエストを送信してレスポンスを受け取ります。Cloud IoT Core は HTTP 1.1(2.0 ではありません)のみをサポートします。

次の表は、Cloud IoT Core での 2 つのプロトコルの仕組みを比較したものです。

MQTT ブリッジ HTTP ブリッジ
デバイスの接続が維持される 接続なし(リクエスト / レスポンス)
全二重 TCP 接続 半二重 TCP 接続
JWT は、CONNECT メッセージのパスワード フィールドで送信されます。 JWT は、HTTP リクエストの Authorization ヘッダーで送信されます。
テレメトリー イベントが Cloud Pub/Sub に push される テレメトリー イベントが Cloud Pub/Sub に push される
デバイスの接続ステータスが報告されます デバイスの接続ステータスは報告されません
デバイス構成はサブスクリプションを通じて伝播される デバイス構成は(ポーリングを介して)明示的にリクエストする必要がある
最新の構成(新しいかどうかに関係なく)は、サブスクリプションでは常にデバイスによって受信される デバイスは、新しい構成のみを受け取るように指定できます
QoS 1 使用時のデバイス構成の確認応答(ACK) デバイス構成の場合は明示的な ACK はありません
前回のデバイスのハートビート時間は保持されます デバイスのハートビート データはありません

各プロトコルの次の一般的な機能を検討することもできます。

MQTT HTTP
  • 低い帯域幅の使用量
  • 低レイテンシ
  • 高スループット
  • 未加工のバイナリデータのサポート
  • 軽量(簡単に開始、シンプルな curl コマンド)
  • ファイアウォールの問題が少ない
  • バイナリデータは Base64 でエンコードされる必要があり、これにはより多くのネットワークと CPU リソースが必要です。

両方のブリッジで公開鍵(非対称)デバイス認証と JSON Web Token(JWT)が使用されます。詳細については、デバイスのセキュリティのセクションをご覧ください。

ヒント: ユースケースに最適なプロトコルが不明な場合は、HTTP から開始して Cloud IoT Core に習熟してから、必要に応じて MQTT に切り替えます。