先日LoRaWANをテーマに行われました。LoRaWANの仕様や特徴をソラコムの事業開発マネージャである大槻よりご紹介します。IoT通信プラットフォームSORACOMの、IoTシステム構築に役立つ機能やTIPSを紹介する技術者向けのオンラインセミナーです。ソラコムのFacebookページからライブストリーミングを使ってお届けするため、PC、スマホとインターネット環境があれば、どなたでもどこからでもご参加いただけます。仕様を解説LoRaWANは、LPWAと呼ばれる無線規格の一つです。Areaの略称で、名前のとおり、低消費電力で、かつ長距離通信が特徴です。従来IoTの通信は、3GやLTEを使った、いわゆるセルラー通信で実現していたケースが多かったですが、LoRaWANはIoTに特化して使うために作られたところが特徴となっています。Allianceという標準化団体が存在し、そこの中に様々なOEMさん、キャリアさん、チップベンダーさん等が参画し、仕様の協議がされています。Allianceのページから無料でスペックをダウンロードできるようになっています。他の規格に比べても、比較的グローバルで、かつオープンな通信方式といえます。Alliance加入のメンバーは、現時点で、400社以上の会社が加入しています。Telecom、ハードウェアベンダーからは、STマイクロ、MICROCHIP、CISCOといった大手のベンダーさんも参画しています。ソラコムは、出資をしているM2Bコミュニケーションズ社と技術提携することによって、最新のLoRaの仕様をキャッチアップしている状況です。Specification中で規定されています。LoRaとLoRaWANの違いとは?LoRaという名前で呼ぶと、一般的にはLoRaの変調方式を指します。LoRaWANという呼び方をするときは、プロトコル体系を、MACレイヤーを含んだ仕様全体を指します。LoRaWANとLoRaは必ずしもイコールではない可能性がありますので、その点にはご注意ください。従来の規定は、欧米系の周波数帯、ヨーロッパで言う868MHz帯、433MHz帯、あとはUS用915MHz帯が中心でしたが、昨年の秋、バージョン1.0.2というリリースから、日本も含むアジアの十数カ国についても、対象の仕様となりました。日本ではアンライセンスバンドと一般的に呼ばれている、サブギガの920MHz帯を、ARIBの規定に準じて利用し、運用することになっています。LoRaWANの6つの特徴こちらは実際のLoRaWANの概要になります。一般的なLPWAの仕様です。三つ目以降が比較的LoRaの特徴になり、基本的に常にデバイスから通信が始まります。アップリンクがトリガーとなり、つまりデバイス側からの通信から始まる点が特徴です。IoTに特化した規格だからこその動きになります。二つ目は、低データレートです。SF10という設定で運用した場合のデータレートは、976bpsになります。日本の場合は、更にARIBの規定が入るため、キャリアセンスや送信休止時間等を含めると実際は約4.4秒に1回送れます。その際に送れるデータが、11バイトです。実際のネットワーク構成は、メッシュ型です。マルチホップを想定したメッシュ型ではなく、スター型の構成になります。デバイスとゲートウェイは、一対一でつながる環境である必要性があります。LoRaWANの体系は、もともとレイヤー2、MACのレイヤーまでしか規定がないため、IPではなくて、デバイスIDで管理します。IPのEndがLoRaデバイスではない点も、一つの特徴になっています。プロトコルについてLoRa変調と呼んでる部分は、スペクトル拡散通信の一種であるチャープ拡散を活用しています。Factorと呼び、拡散率を上げることで、実際のノイズに対する耐性を考慮し、高いインクバジェットゲインを得ることができます。要するに、受信の感度が上がることで、遠くにも電波が届くようになり、LPWAのロングレンジをカバーすることができます。伝送距離を稼ぐため拡散率を上げると、送信距離は長くなるが、その分スループットは落ちる相関関係があることを覚えてください。Rateを4/5の設定にした場合、ビットレートは、976bpsです。日本の場、920MHz帯のレギュレーション上、連続して無線出力可能な時間が最大400msecという規定があります。逆に言うと、これ以上電波を出してはいけないという動きになります。これらのレギュレーションに従い、実際にデータを送ってみると、ヘッダーを除いた部分のペイロードは、11バイトまで送れます。先ほど4.4秒に1回というお話をしたのは、ARIBの規定の中に電波を出した時間に対して、その10倍待たなければいけないというルールがあるため、例えば400msec限界まで送った場合、その10倍の4000msec、つまり4秒は待たないといけません。足し算すると、4.4秒に1回が実際の連続送信できる間隔になります。こちらは実際の拡散率を変えた場合は、変更になるため、あくまで例示というご認識をいただければと思います。LoRaWANのクラスレイヤー2で規定のあるクラスは、クラスA、B、Cという3種類があります。基本的にはクラスAがメイン、クラスB、Cという二つの追加のクラスがあります。クラスが下にいくにつれて、デバイスが利用する無線間隔が広がっていきます。無線を長く使うため、その分電池を消耗します。クラスAは、デバイス自らのデータをアップリンクとして送ります。特定の時間軸を経過した後に、一定の時間だけ受信のスロットをデバイス側は開けます。逆に言うと、このタイミングで下りのデータを受けられるような枠を設けることができるようになっています。クラスAでは、そのチャンスを二つ持っていて、Rx1とRx2という二つのスロットを使うことで、下りの通信が可能になっています。下りのスロットが必要であれば、こちらのスロットを使う双方向の仕様です。逆に、下りの通信がなければ、こちらは受信しないという動きになります。Rx1、Rx2以外の時間軸は、デバイスは受信用の無線を使わないため、電力を抑えられます。クラスCは、先ほどクラスAの動きと似ていますが、送受信時以外は、基本的に受信のスロットを常時開けることができるようになります。そのため、決められた時間軸でしか受けられなかったクラスAに比べて、いつでも下りのパケットを受けるチャンスがある点が異なります。デバイスは常に無線を開けている状態になるため、消費電力は増大します。クラスCは、常時給電ができるような環境、例えば自動販売機や、車などのユースケースで使えるのではと想定されています。最後にクラスBという規格は、Beaconという特殊なパケットを下りの通信として送ることができます。冒頭でお話しした、LoRaWANがアップリンク、上りの通信から必ずしないといけないというところの唯一の例外が、このクラスBという動きになります。クラスBを使うことによって、このBeaconのパケットが定期的にデバイスには降ってくるようになり、デバイスは決められたタイミングのインターバルで下りのスロットを受けることができるようになります。セルラーで使うようなPagingのような、一方的にネットワークから投げるような動きができるようになるというのがクラスBです。現状この辺りの仕様が、LoRaWANのスペックの中でも、グレーな部分があり使用ケースは少ないといったところが実情にはなっております。LoRaネットワークアーキテクチャーここからが実際のネットワークアーキテクチャーになります。実際のアーキテクチャーは、ゲートウェイの後ろに、更にネットワークサーバーというノードが存在しています。こちらは実際にデバイスのIDの管理や、データのルーティング、データの暗号化、復号化等の全てのパケットの制御をしています。レイヤー2で飛んできているLoRaのMACレイヤーの転送を制御します。そのため、ゲートウェイとデバイスだけあれば通信できるかというと、実際にはそうではなく、ネットワークサーバーというコアネットワークが必要になります。必要に応じて、アプリケーションサーバーと連携することも、可能にはなっています。LoRaWANのアーキテクチャーは、ネットワークサーバーといったノードを含めたソリューションである点を、ご認識いただければと思います。デバイスとネットワークサーバーは、あらかじめ決められたPre-Shared-Keyのキーを持つことになっています。実際に、レイヤー2のMACレイヤーは、こちらのキーを使って、AESベースでデータを暗号化します。Checkとして、MACパケットを付けて、完全性の確認を行います。同様の処理をアプリケーションレイヤーでも行えるようになり、アプリケーションレイヤーも、アプリケーション用のキーを使い、セキュリティーを担保します。実際のセキュリティーの終端というのは、ゲートウェイではなく、ネットワークサーバーとデバイス間、デバイスとアプリケーションサーバー間といった動きになります。ゲートウェイはあくまで無線の中継をし、セキュリティーはネットワークサーバー側で行っているため、ゲートウェイ側で取っているデータは、ゲートウェイ側からは見ることができない状態です。ネットワークサーバーは不正なパケットを受信した場合は、基本的には受け捨てる動きをし、不正なデバイスからのアクセスや、不正な鍵のデバイス、偽装したようなデバイスからのアクセスを遮断することができます。LoRaWANの仕様の中では、ネットワークセッションキーとアプリケーションセッションキーという名で呼ばれています。標準ベースでは、AESの128の事前共有鍵のような位置付けになっています。Personalizationで、Personalization、要するに、工場出荷時にあらかじめ二つの鍵を格納しておく方式です。端末には周波数とConfigurationも入れておくという状態です。activationというやり方になります。名前のとおり、実際にベンダーさんから工場出荷時に、仮の鍵を保管しておきます。その後、実際にLoRaのネットワークにつなぐタイミングでJOINろというProcedureを実行するようになっています。この仮の鍵をベースに認証作業をして、認証が通れば、ネットワークセッションキーとアプリケーションセッションキーという二つの鍵を本鍵として、後から発行することができます。こちらは、実際にデバイスを製造するロールの会社と、ネットワークを提供する会社というのが別のプレイヤーだった場合は、基本的にはOTAAの方式が有効です。逆にデバイスを作る人とネットワークサーバーを持っている会社が同じ場合は、ABPでもOKとなります。LoRaWANの通信方式のクラスAのデータ方式には、Unconfirmed-DataとConfirmed-Dataという2種類が存在しています。こちらは、UDPとTCPといったようなイメージをしていただけると分かりやすいです。Unconfirmed-Dataは、デバイスは基本的にネットワークからACKを一切待ちません。そのため例えばセンサーで取ったデータを送りっぱなしても、そのデータが届いたかどうかの確認は一切しません。信頼性の担保というところはできませんが、その分、トラフィックとしては少なく済ませることができます。一つのConfirmed-Dataは、デバイスが送ったデータに対するACKを待つモードになります。このため、仮にネットワーク要因や、無線要因で、データが届かなかった場合に、デバイスはACKが受け取れなかったことによって、再送制御を行う実装を入れることができます。データの確からしさがほしい場合は、Confirmed-Dataを指定することで、デバイスが再送制御を入れることができます。資料はこちらからご覧いただけます。