LoRaWANの覚え書き

この覚え書きは LoRaWAN 仕様 ver.1.0.2 をもとに書いている。
無線の専門家でもなんでもないので、識者の突っ込みお待ちしております。

# LoRa/LoRaWAN とは何か
LPWAN(Low Power Wide Area Network)の１つ。文字通り低消費電力、長距離通信が売り。低コストといった特徴も備えている。 LoRa は物理層の規格であり、 LoRaWAN はデータリンク層の規格である。これらの仕様は LoRa Alliance が策定する。
 
# なぜ LoRaWAN なのか
オープンであることに尽きる。 LPWA にはライセンスバンドの NB-IoT や LoRaWAN と同じアンライセンスバンドの sigfox がある。これらはクローズドであり、使いたいときに使えるとは限らない。

NB-IoT は既存の携帯基地局を利用するものなので、近くに携帯基地局がなければ使えない。使いたい場合はキャリアにお願いするしかない。都市部ならともかく、へき地での普及は難しい。

sigfox はアンライセンスバンドでありながら、 仏SIGFOX社が認可したネットワークオペレータしか基地局を開設できない。１国に１社しかオペレータにはなれず、日本では京セラがその役割を担う。携帯キャリアとほぼ同じビジネスモデルのため、 NB-IoT と同じような弊害が発生する。

このように LoRaWAN 以外は始めようと思ったときに使えるとは限らず、昨今の maker ブームに乗った個人・企業が気軽に試せるものではない。その点 LoRaWAN ならいくつかのハードルを越えれば試すことができる。 LoRaWAN の実証実験を行う企業が多いのはそのためだろう。
また、オープンであるがゆえにインターネット上に情報が存在することが大きい。この文章もかなりの部分がインターネットに助けられている。

# LoRaWAN の仕様
上述の通り、 LoRa は物理層の規格であり、地域によって使う周波数が異なる。日本では 920MHz を使うことになっているが、現時点では正式には決定していない。
LoRaWAN のスタックは下記のようになる。　※LoRaWAN specification 1.0.2 P8 より引用

![WS000000.JPG](https://qiita-image-store.s3.amazonaws.com/0/13046/f87a353c-80a2-1af6-9cd3-de0f397cf69d.jpeg)

## LoRaWAN ネットワーク
LoRaWAN ネットワークを構成する要素は次の通り。

- エンドデバイス(ノード、Motesとも言う）
- ゲートウェイ（コンセントレータとも言う）
- ネットワークサーバー
- アプリケーション

エンドデバイス・ゲートウェイ間を LoRa で通信して、ゲートウェイ・ネットワークサーバー間は一般的なIPネットワークで通信する。ネットワークサーバー・アプリケーション間も同様にIPネットワークで通信し、エンドデバイス・ネットワークサーバー間を LoRaWAN と言う。
エンドデバイスはデータを暗号化して、１つまたは複数のゲートウェイを経由してネットワークサーバーに送信する(uplink)。また、ネットワークサーバーは１つのゲートウェイを経由してエンドデバイスにデータを送信する(downlink)。

### エンドデバイス
エンドデバイスにはクラスA、B、Cの３種類あり、すべてのエンドデバイスがクラスAである。クラスB、CはクラスAの拡張仕様だが、クラスBはVer.1.1で決定予定となっている。

クラスAは双方向通信のデバイスであり、送信後に２回受信ウィンドウを持つ。クラスBはクラスAの仕様に加えて、一定間隔の受信ウィンドウを持つ。クラスCはクラスAの仕様に加えて、送信時以外は常時受信ウィンドウを持つ。

おそらく現時点で日本に LoRaWAN 仕様に準拠したエンドデバイスは存在しない。
ただし、東陽テクニカがエンドデバイス認証試験を開始したので、徐々に増えるとは思われる。

### ゲートウェイ
LoRaWAN ネットワークにおいて、ゲートウェイは単なる中継役である。エンドデバイスからサーバーに向けた通信に対してRSSIなど付加情報を付与するだけだ。

日本国内にあるゲートウェイは、M2Bコミュニケーションズなど数社しか保有していないと思われる。また、各社PoC中であり正式販売はもう少し先のようだ。

### ネットワークサーバー
エンドデバイスから暗号化されて送信されたデータを復号し、アプリケーションへと転送する。現時点では保有していることを明示している企業は存在しない。ただしPoC実施中なら当然所有していると思われる。

### アプリケーション
ここには特に規定はないが、暗号化で重要な役割を担うため実質的にはネットワークサーバーのバックエンド的な役割を担当する。ユーザーのアプリケーションはこれよりさらにバックエンドに位置するだろう。

## 暗号化
LoRaWAN では AES-128 で暗号化し、暗号化キーは AppKey, NwkSKey, AppSKey の３種類存在する。
AppKey, SppSKey はエンドデバイスとアプリケーションが持ち、NwkSKey はエンドデバイスとネットワークサーバーが持つ。

![WS000001.JPG](https://qiita-image-store.s3.amazonaws.com/0/13046/91cd039b-8fd9-b711-8e73-3c8a95b1b2c0.jpeg)

https://www.thethingsnetwork.org/wiki/LoRaWAN/Overview から引用

## ネットワークへの参加
エンドデバイスが LoRaWAN ネットワークに参加するには手続きが２種類存在する。エンドデバイスはどちらか１種類対応すればよい。

### OTAA(Over The Air Activation)
あらかじめエンドデバイスに AppKey を格納して、無線でネットワークに参加する方式。
エンドデバイスは参加リクエストとして AppEUI（アプリケーション固有の64bitID）とDevEUI（デバイス固有の64bitID）を送信する。これらの情報と AppKey から DevAddr（ネットワーク内のデバイスID）、AppSKey、NwkSKeyを算出して参加承認する。以降は AppSKey と NwkSKey で暗号化する。

### ABP(Activation By Personalization)
あらかじめエンドデバイスに DevAddr, AppSKey, NwkSKey を格納しておく方式。
おそらく日本国内に存在する、ほとんどのエンドデバイスが採用している方式だろう。

# 今後の予想
エンドデバイスは今後徐々に登場してくると思われるが、しばらくはカスタムのエンドデバイスが主流だろう。PoCから実運用に進むものがあるかもしれない。

ゲートウェイはPoCから実運用にすすんだものと海外からの輸入が混在すると思われる。ただし、そこまで販売台数がでないので、販売する企業は少ないと思われる。

ネットワークサーバーは正直予想がつかない。 OSS を活用するところが出てくるかもしれないし、クラウド事業者が PaaS として提供する可能性もあるが、採算がとれるほど需要があるとは思えない。

LoRaWAN の場合、これらを単体で提供しても意味がないので、ある程度パッケージングした形で提供する企業が現れたら一人勝ちできるかもしれない。今のところ可能性が高いのはSORACOMか。