皆様、こんにちは。ソリューションアーキテクトの松永(ニックネーム:taketo)です。
今回はセルラー通信を利用したIoTプロジェクトでデータ通信量を減らす方法についてご紹介します。
クラウドの利用によりWebやIoTプロジェクトが進めやすくなった反面、バッテリーの持ちを長くしたいなどIoTプロジェクト特有の課題に直面することがあります。クラウドではインターネットを経由することやJSONといったデータフォーマットの利用が一般的となっているため、IoTデバイスからその仕様にそのまま合わせた実装をされているお客様を数多く見てきました。このような場合、IoTではデバイスの消費電力やコストが課題になる場合が多いのですが、SORACOMの良さが生きる場面でもあります。
後半でご紹介する削減方法では、お客様の要件にもよりますが最大94%の費用削減も可能なことがわかります。
このような課題を含め、改めてなぜデータ通信量を減らす必要があるのか?という点から具体的にデータ通信量を削減する方法までご紹介いたしますので、是非最後まで読んでくださいね!
データ通信量を減らすメリットとは?
これによるメリットは2つです。
- 省電力化
- 通信コスト削減
まずは、「省電力化」。データ通信量の削減は省電力化に大きく関係します。今回はセルラー通信に注目してご紹介しておりますが、例えば、なるべく消費電力を抑えて遠距離通信を実現する通信方式 LPWA (Low Power Wide Area)のSigfoxではその通信量を最大12byte/回と制限するなどしており消費電力を抑える仕様としています。セルラー通信通信においても同様に通信量を減らすテクニックとなっていることが変わらず、特にバッテリー駆動のデバイス開発においては非常に重要なポイントとなります。
次に、通信コスト削減。SORACOMではデータ通信量に応じた従量課金となっておりデータ通信量の削減はコスト削減に直結します。後半で実際のケースにてご案内致しますが、通信量を削減することによるコスト削減は94%にもなることがあります。
セルラー通信の省電力化では、データ通信量以外にもLTE-Mの利用も是非ご検討ください。詳細は、SORACOMブログ「SORACOM Air に省電力LPWAセルラー通信「LTE-M」が追加、合わせて2種のデバイスや新機能をリリース」をご覧ください。
データ通信量削減可能なSORACOMのサービス
具体的なデータ量削減方法で利用するSORACOMのサービスについてまずご紹介したいと思います。
1.SORACOM Beam/Funk/Funnel
SORACOM Beam/Funk/Funnelは、主にプロトコル変換によりデータ通信量削減をすることができます。これらのサービスはいずれもデバイス側の通信をプロトコル変換し認証情報など付加してデータ転送をするサービスです。例えば、AWS上のHTTPSプロトコルを必要とするサービスに連携するために、デバイスからHTTPやTCP・UDPと言った通信で送信されるデータを受け取りAWSとの認証をした上で転送することが可能となりデバイスからのデータ通信量を削減することができます。
2.バイナリーパーサーおよびSORACOM Orbit
バイナリーパーサーおよびSORACOM Orbitは、データフォーマット変換によるデータ通信量削減が実現できます。いずれのサービスもデバイス側から送信されるデータを変換するサービスですが、特にバイナリーパーサーは、デバイスから送信されるバイナリーデータをJSON形式のデータフォーマットに変換するサービスです。一方で、SORACOM Orbitは、バイナリーデータ以外でもテキストデータなども対象にデータフォーマット変換が可能なサービスです。
データフォーマット変換した後に、Beam/Funk/Funnelのサービス群へ変換後のデータを連携することも可能となっておりプロトコル変換と合わせてデバイスからの通信量を削減することができます。
データ通信量削減方法
お待たせいたしました!それでは、どのように通信量を削減できるのかみていきましょう。
1.暗号化と通信プロトコルの最適化
暗号化と重い通信プロトコルは通信量に大きなインパクトがあります。SORACOMブログ「実測!IoT通信プロトコルのオーバーヘッドの実態と削減方法」にて通信プロトコル毎の通信量がどうなるのかご紹介しました。そこで、3時間に一度など低頻度でデータ送信の度に通信確立をする場合、下図の通り、暗号化を伴うHTTPSに比べ暗号化なしで軽量なUDP通信に変更した場合、その通信量は約1/19に削減できることがわかっています。
ここでは、2つのポイントをご紹介します。
- デバイスからの暗号化をしない
SORACOM Beam/Funk/Funnelを利用して、デバイスからの暗号化通信をなく通信する設計としましょう。
- 軽量な通信プロトコルを利用する
HTTPより軽量なプロトコル(TCPやUDP)の利用を検討してください。ただし、この時 UDPへ変更する場合は再送制御や到達保証がないことに注意してください。ビジネス上の理由からこの仕様が必要である場合は、TCPを選択するのがよいでしょう。
高頻度で通信する場合には、一度確立した接続を再利用するKeepAliveという仕組みが利用されます。暗号化や重いプロトコルを利用しても、このKeep Aliveにより一度接続した通信を再利用し通信量が削減されます。その場合には、HTTPS → UDP でも1/19のデータ通信量削減にはなりませんのでご注意ください。
2.データフォーマットの最適化
バイナリーパーサーおよびSORACOM Orbitを利用して、通信データフォーマットを変更しデータ通信量の削減をしましょう。
詳細はバイナリーパーサーとSORACOM Orbitのユーザードキュメントをご確認頂ければと思いますが、バイナリーデータを決められたフォーマットでデータが送信される場合には、コスト観点でもバイナリーパーサーはSORACOM Airの料金に含まれており追加料金なしで利用できますので、バイナリーパーサーを利用する方が良いでしょう。
3.ケーススタディ 通信量削減の効果を検証してみる
SORACOMブログ「実測!IoT通信プロトコルのオーバーヘッドの実態と削減方法」でご紹介したベンチマーク環境を元に通信量とコストがどの程度削減できるか考えてみましょう。
下図のアーキテクチャの通り、3通りの通信経路での違いを検証してみましょう。経路1に比べてデータ通信量を最適化した経路2と経路3でどの程度通信量とコストが削減できるのか確認してみます。
デバイスからは、 {“test”:”message”} (18 bytes)を3時間毎に1ヶ月送信し、都度Amazon API Gatewayから {“statusCode”:200, “body”:”Hello from Lambda!”} を応答することとします。ただし、この時 KeepAliveは利用しないこととします。
まず経路2と3では、SORACOM Beamを利用することでデバイスからHTTPSではなくUDPを利用していますね。前述の通り、これにより通信量を大幅に削減できます。
経路3のSARACOMバイナリパーサーを利用した例では、デバイスから先頭7文字の文字列を送信し、testというJSONのキーを付加してSORACOM Beamに連携する仕様とます。つまり、messageという部分以外の11 Bytesを削減できますね。
- 経路1:Raspberrypi → Amazon API Gateway
- 経路2:Rasyberrypi → SORACOM Beam -> Amazon API Gateway
- 経路3:Rasyberrypi → SORACOM バイナリーパーサー → SORACOM Beam → Amazon API Gateway
それでは、結果をみていきましょう。
2023.05時点でのplan01sの価格を元に実際のコストも算出しています。
まず、経路2と経路3では データ通信量とコストが94%以上削減できることがわかりますね。特にデータフォーマット変換をしていない経路2でも高い削減率が実現できていることがわかりますね。このことから暗号化を無くし軽量な通信プロトコルを利用することが大きいインパクトを与えることが良くわかります。ただし、前述した通り暗号化や軽量なプロトコルに変更することで大きく削減できるのは送信頻度が3時間に一度など低頻度の場合に大きくなります。これはKeepAliveやTCPの3ウェイハンドシェイクをデータ送信の度に実施することとなり、そのオーバーヘッドが大きいことによります。通常通信経路上のネットワークコンポーネントの設定に依存し、Linuxの場合デフォルトで2時間11分25秒(net.ipv4.tcp_keepalive_time = 7200, net.ipv4.tcp_keepalive_probes = 9, net.ipv4.tcp_keepalive_intvl = 75の場合)のコネクションは再利用される設定となっておりこれを超える送信間隔の場合大きな削減効果が期待できます。
データフォーマット変換については、SORACOM Orbitを利用すれば下りのデータ通信量も削減が可能です。今回は非常にシンプルなデータを送信する例でしたが、より多くのデータ項目をデバイスからデータ送信する場合にはこのデータフォーマット変換も大きなインパクトを与えることがわかります。
plan01s(JP国内利用)[USD/MiB] | 0.2 |
Beam 利用料金[USD/req] | 0.000009 |
{“test”:”message”}を送信した場合の、HTTPS 通信量[bytes] | 10,664 |
{“test”:”message”}を送信した場合の、UDP 通信量[bytes] | 560 |
暗号化と通信プロトコルの最適化 | データフォーマットの最適化 | データ通信量[MiB] | SORACOM Beam利用回数[回] | コスト[USD] | データ通信量削減率[%] | コスト削減率[%] | |
経路1 | × | × | 2.4053 | 0.4811 | – | – | |
経路2 | ○ | × | 0.1263 | 248 | 0.0275 | 0.9475 | 0.9428 |
経路3 | ○ | ○ | 0.1238 | 248 | 0.0270 | 0.9485 | 0.9439 |
さいごに
これまでに、通信量削減のメリットとその実現方法についてご紹介しましたがいかがだったでしょうか?
私自身も通信量やコストを実際に計算してみて、最大94%も削減できることに驚きでした。コストに関してはSORACOM Beam/Funk/Funnelは有償サービスとなりますがそれを超えるインパクトですね。
特にこれからIoTプロジェクトを始める方には、初めての話も多かったのではないでしょうか。
是非みなさまの設計に落とし込んで頂きたいと思っていますので、SORACOMの利用をご検討ください!
― ソラコム松永 (taketo)