投稿日

ストリーム型のプロトコルである TCP を SORACOM Beam が HTTPS に変換する際に使う技術とは?

こんにちは、プロダクトマネージャーの tau です。
この記事では、デバイスが TCP で送信したデータを、プロトコル変換サービス SORACOM Beam (以下 Beam) がどのように HTTPS に変換するのかをご紹介します。キーワードは「SORACOM Binary Format v1」です。

SORACOM Binary Format v1 とは、ソラコムが定義する独自フォーマットです。その機能を端的に言うなら、TCP はストリーム型の通信であるにも関わらず、データグラム型のような通信を実現する仕組みです。… と言われても、ピンと来にくいかもしれませんね。詳しい話に入る前に、まずは TCP というプロトコル自体の仕組みをおさらいしましょう。

TCP は HTTPS より軽量。ただしデータの大きさが事前に分からない

IoT デバイスが TCP 通信を選択する理由の 1 つは、通信量の削減です。TCP は HTTPS と比べて軽量で、通信量を約 89% も削減できた例もあります。電源の制約の厳しい IoT デバイスや、できるだけ通信量を削減したい IoT デバイスでは、軽量な TCP による通信が選ばれるケースがあります。

一方で、TCP はストリーム型のプロトコルであり、一度に送信されるデータの大きさや区切りが事前に分からない特徴があります。たとえば TCP を使った通信では、次のようなことが起きえます。

  • 送信側のプロトコルスタックは、小さなデータをある程度まで貯めてからまとめて送信したり、あるいは逆に大きなデータを送信できる大きさに分割して送信したりします。
  • その反対に、受信側のプロトコルスタックは、受け取ったデータを解釈して適宜意味のある単位に分割したり、あるいは結合したりします。

ストリーム型と対をなす方式に、データグラム型があります。データグラム型のプロトコルでは、一度に送信されるデータの大きさや区切り目が事前に決められており、送信側・受信側ともにその単位で送受信を行います。UDP は、データグラム型のプロトコルです。

SORACOM Beam の仕組みと、SORACOM Binary Format v1

Beam は、IoT デバイスとクラウドの間に入り、通信のプロトコルを変換・仲介するサービスです。たとえばデバイスでは軽量な TCP でデータを送信し、サーバーでは安全な HTTPS で待ち受けるといった効率的な構成も、Beam を利用すれば実現できます。

[画像] 様々なプロトコルを Beam で HTTPS に変換するイメージ

前述のように、TCP はストリーム型のプロトコルのため、データの区切りがあらかじめ決められていません。そのため Beam がデバイスから TCP でデータを受け取ったとき、一度に受信したデータの塊が「それ単体で意味をなす塊」なのか、あるいは「その中に意味をなす塊がいくつか含まれている」のか、それとも「より大きなデータの一部」なのか、判断ができません。

そこで開発されたのが SORACOM Binary Format v1 です。SORACOM Binary Format v1 は、データのサイズや区切り目に関する情報を自身に含んでいます。そのため SORACOM Binary Format v1 に準拠したデータであれば、Beam はデータの区切れ目を判定できるようになり、適切な単位でデータをクラウドに転送できるのです。

[画像] MTU で断片化された TCP セグメントを、Beam が再結合して転送するケースのイメージ図

注意点は、デバイス側で SORACOM Binary Format v1 に準拠したデータを組み立てて、Beam に送信する必要がある点です。データを TCP に乗せる前に、「ここからここまでがひとかたまりです」と印を付けるようなイメージです。SORACOM Binary Format v1 をご検討の際には、デバイス側の対応が必要との旨をご確認ください。

SORACOM Binary Format v1 の詳しい仕様や使い方は、SORACOM Binary Format v1 – SORACOM Users をご参照ください。

TCP を利用するデバイスをクラウドと繋げるときに

2024 年 6 月 12 日のアップデートで、Beam の TCP → HTTP/HTTPS エントリポイントが SORACOM Binary Format v1 に対応し、TCP → HTTPS の変換性能が改善しました。この機能を実際にご利用いただいたミツフジ様の声をご紹介します。同社は、暑熱リスクに対処する IoT スマートウォッチ型デバイス「Hamon Band」を開発しています。

弊社が扱う生体情報はそれなりのデータ量になりますが、Beam を使用することによりデバイスからは UDP/TCP でインターフェースできるので通信量削減が可能です。サーバは HTTPS でインターフェースできるのでセキュリティも両立でき、デバイスは証明書を持つ必要が無く更新のための運用が不要になります。SORACOM Binary Format v1 を使用することによりサーバ側でのパケット分割も抑制できるため、実装の負担を減らすことができました。 

ミツフジ株式会社 プロダクト開発

上記の注意点の通り、デバイス側で SORACOM Binary Format v1 を組み立てて送信する必要があるため、TCP 通信に対応した既存デバイスで利用できるかどうかは検証が必要な場合があります。不明な点があれば、ぜひお気軽にソラコムまでお問い合わせください!

― ソラコム 小林 (tau)