これまでPoint-to-Pointの接続が主だったBLEですが、そこにMeshネットワークの仕様が加わりつつあります。
ざっくりとですが調べてまとめました。
Bluetooth Meshの特徴
- 1対1,1対多のメッセージ送信可
- 他のノードを介してリレー状にメッセージ送信
- セキュアなメッセージ送信。以下の攻撃に対してセキュア
- 現行のBLEデバイスでも使える
- いくつかデバイスを動かしたり動作ストップさせても動作継続
- 今後のバージョンでも下位互換性を保つ
ネットワーク部分はフラッド型Meshと呼ばれる仕組みで実現されます。
フラッド型Meshとは?
Bluetooth Meshではフラッド型(洪水型)メッシュと呼ばれるネットワークを組みます。
フラッド型メッシュはその名前の通り洪水を起こすがごとくメッセージを伝えます。
仕組みはカンタンで
- あるノードがブロードキャストメッセージを投げる
- ブロードキャストメッセージを受け取った別のノードがさらにそのメッセージをブロードキャストする
という単純な方法でメッセージを伝達していきます。
例えば、ソースをA、ディスティネーションをNとしたとき以下のようにメッセージが伝達されます。
Aがメッセージをブロードキャストする
Bがメッセージを受け取りブロードキャストする
Cがメッセージを受け取りブロードキャストする
...
Nがメッセージを受け取る
このとき、合わせ鏡のようにB→C→B→C... と反復しないように 同じブロードキャストメッセージを複数回受けた場合には無視します。 すなわち、各ノードは一度受けたメッセージをキャッシュしておき、重複メッセージはブロードキャストしません。
また、データの氾濫を抑えるためにTTL(Time To Live)という仕組みでホップ回数に制限をかけています。
フラッド型Meshの特長
一般的には以下のような特長があるようです
Bluetooth Mesh その他機能
サブネット
Meshネットワークはサブネットという仕組みでグルーピングすることができます。
例えば、ホテルの部屋、ホテルロビーを別々のサブネットにする、など。
また、1ノードが複数のサブネットに属することができます。
サブネットにはプロビジョナと呼ばれる認証ノードがいます。
野良ノードはプロビジョナの認証がないとそのサブネットに入ることができません。
セキュア認証
セキュア認証をすることができます。認証はプロビジョナが請け負います。
基本的に各ノードはネットワークキー/アプリケーションキーを持ちます。
複数サブネットに所属する場合は、そのサブネットの数だけキーを持つことになります。
現行品との接続
現行品にはMeshの概念がないのでプロビジョナへ認証依頼するなどはできません。 なので、現行BLEとの間にFriendshipという役割のノードを置きメッセージを仲介させます。
また、Meshの通信方式にはアドバタイズ方式とGATTベース方式の2種類の方式があり アドバタイズ方式は通常Mesh、GATTベース方式は現行品通信に使われます。
その他Meshについて気になる点
以上でざっくりとですがMeshの仕様についてまとめました。
以下はMeshに関して気になるポイントまとめ
Bluetooth Mesh の仕様は Bluetooth 5 仕様公開と同時に発表されている?
No。2017/01/22 現在はBluetooth Meshの仕様は発表されていません。 Bluetooth 5の仕様としてMeshが含まれていると思っていたのですがそうではないようです。
これはBluetooth SIGの仕様策定方法が関係しています。
Bluetooth SIGでは仕様策定の進行をWorking Group単位で区切り進めており
Bluetooth 5 Core Spec.とMeshは独立したWorking Groupで仕様策定が進んでいます。
ちなみに、Meshの仕様策定は「Smart Mesh Working Group」が進めています。
Bluetooth Mesh 1.0.0 はいつ策定されるの?
Bluetooth Meshの仕様はいつ策定されるのかという点が気になりますが、
スケジュールはすでに決められていて、2017/5/31 にAdoptedになるようです。
(2017/01/22 現在 は PS(Prototyping Specification)状態)
ちなみに Mesh Working Group のSub-ChairはBluetooth Low Energy Handbookを書かれたRobin Heydon氏です。
Robin氏の現所属はCSR。CSRはCSR Meshという独自のMesh技術を持っています。
CSR Meshの技術は追えてないのですが、CSR Mesh ≒ Bluetooth Meshという感じなのでしょうか。
Bluetooth Mesh のドラフトはどこでみれる?
参考
Bluetooth 5 仕様書
https://www.bluetooth.com/specifications/adopted-specifications
告知
Akerunをつくっている株式会社フォトシンスでは、Railsエンジニアを募集しています! www.wantedly.com
Akerun Developersサイトもやってます。Akerun APIについては、こちらをご覧ください。 photosynth-inc.github.io