【サルでもわかるBLE入門】(15)高速化に関わる「More Data」「DLE」「MTUサイズ」

こんにちは。ムセンコネクト三浦です。
今回も「サルでもわかるBLE入門」と銘打ってお話していこうと思います。
BLE初心者の方でも理解をしてもらえるように、できるだけわかりやすく解説していきます。
第15回は『Bluetooth LEの高速通信』についてのお話しです。
わかりやすく解説する為に、Bluetooth® LE(BLE)初心者にはあまり必要ない例外的な内容は省略して説明するようにしています。あえてアバウトに書いている部分もありますのでご承知おきください。
(厳密な技術的内容を知りたいような方は別の解説書を参考にしてください。)
Bluetooth LEは高速通信には向いていない?
Bluetooth LEは省電力な通信規格です。高速な通信にはあまり向いていないというイメージがあるかもしれません。
IoTデバイスの様に、定期的に数バイトのセンサデータを送信する用途であれば高速化の必要はありませんが、ファームウェアアップデートをする場合などは数百キロバイトのデータをできるだけ早く送信したくなります。
実は、Bluetooth LEには、データを高速通信する為の仕組みが用意されています。
今回は、Bluetooth LEの高速化に関連する大切な要素である「More Data」「DLE」「MTUサイズ」について、初心者の方にもわかりやすく解説していきます。
「More Data」って何?連続送信の合図
「More Data(モア・データ)」とは、送信側が受信側に対して「もっと送りたい!」と伝えるための仕組みです。
Bluetooth LEでは、「コネクションインターバル」で決定された周期毎に発生する「コネクションイベント」のタイミングで通信が行われる決まりになっています。
送信側がコネクションイベントの際に「もっと送りたい!」と相手に伝えることで、次のコネクションインターバルの経過を待たずに、継続してデータのやり取りを続けることができるようになります。

パケットフォーマット
Bluetooth LEのパケットフォーマットを確認しましょう。
「More Data」とは、BLEのデータパケットのヘッダーに含まれる、たった1ビットの「MD(More Data)ビット」のことです。

コネクションインターバルとコネクションイベント
コネクションインターバルとコネクションイベントのおさらいをしておきましょう。
コネクションインターバルで規定された時間毎にコネクションイベントが発生し、そのタイミングでペリフェラルとセントラルが、データの送受信を行います。

More Dataを利用するとき
MDビットを利用すると、次のコネクションインターバルを待たずに、データのやり取りを複数回繰り返すことができます。
1回のコネクションイベントでデータを連続的に送信できるようになり、結果として通信速度が向上します。
下図はペリフェラル側が「もっと送りたい」場合を説明した図ですが、セントラル側も同じようにMDビットを使って「もっと送りたい」という状況を相手に伝えることができます。
ペリフェラル側、セントラル側のどちらかが「もっと送りたい」という状況の場合、無線通信処理(下図では赤字の帯部分)をスリープさせずに継続して、データ送受信を継続します。
MDビットを利用して、データのやり取りを繰り返すことができる回数は、Bluetoothスタックの処理性能によります。

「DLE(Data Length Extension)」って何?
次に、BLEの通信速度を上げるもう一つの重要な技術、「DLE」について解説します。
「Data Length Extension(DLE)」は、Bluetooth Core 4.2のバージョンで導入された画期的な機能です 。これは、BLEの最も低い層である「リンク層」で、一度に送れるデータパケットのサイズそのものを大きくする技術です 。
Bluetooth Core 4.0や4.1のバージョンでは、パケットのデータ部分(ペイロード)のサイズが最大27バイトと決まっていました。この27バイトの中には、通信に必要なヘッダーなどが含まれるため、実際に送れるデータ本体(ATT Data)は約20バイト程度しかありませんでした 。

例えるなら、小さな軽トラックで、一度に少しの荷物(20バイトのデータ)しか運べなかったようなものです。
たくさんの荷物(データ)を運びたければ、何度も何度も軽トラックを往復させる必要があります。これでは効率が悪く、時間もかかります。
DLEを使うと、パケットのデータ部分(ペイロード)を、従来の27バイトから最大251バイトまで大きくできるようになります。軽トラックが大型トラックになったようなもので、一度に運べる荷物(データ)の量が格段に増えます。同じ量のデータを送るのに必要な回数が大幅に減り、通信効率が良くなります。

このDLE機能を使うには、通信する両方のデバイスがBluetooth Core 4.2以降に対応している必要があります。
1対1の接続が確立した後、デバイス同士で「どれくらいのパケットサイズまで送れるか」の情報をやり取りして、パケットサイズを調整して決定します。
「MTUサイズ」って何?
「MTUサイズ」は「Maximum Transmission Unit」の略で、データのやり取りのルールを決める「GATT(Generic Attribute Profile)」という層で、一度に送れるデータの最大サイズを指します。
初期状態ではMTUサイズは最大で23バイトです。Bluetooth Core 4.2ではMTUサイズを拡張できるようになりました。プロトコル・スタックの仕様にもよりますが、250バイト程度に拡張できるようになっています。
取り扱うサイズが小さかったのを大きくするという話なので、DLEの話と似ていていますが、DLEはリンク層で一度に送信できるパケットのペイロードのサイズを拡張する技術であるのに対して、MTUはそれより上位のL2CAP層で定義されGATT通信で利用される技術です。

例えるとすると、MTUは「手紙のサイズ」、DLEが「封筒のサイズ」のような関係です。
もしMTUで「大きな手紙」(例:250バイト)を指定しても、封筒(DLEのパケットサイズ)が従来の27バイトのままだと、その大きな手紙は小さく分割されて、何度も送る必要が出てきます。しかし、DLEで「封筒」も251バイトまで大きくしておけば、MTUで指定した「大きな手紙」が、より少ない回数の封筒のやり取りで運べるようになります。
Bluetooth LEを高速化する仕組みのまとめ
今日ご紹介した「More Data」「DLE」「MTUサイズ」はBluetooth LEの通信を効率化して高速化する為の仕組みです。
「More Data」はパケットの連続送信を可能とする技術、「DLE」や「MTUサイズ」は送信するデータのサイズを大きくする技術でした。
この他にも「コネクションインターバル」でデータをやり取りするタイミング間隔を短くする方法や、「LE 2M PHY」で物理的な転送速度を1Mbpsから2Mbpsに上げる機能があり、それらをバランスよく設定することでBluetooth LEのスループットを飛躍的に向上させることができます。
しかし、理論上の最大スループットは非常に魅力的ですが、実際の使用環境では電波干渉、デバイスの性能差、OSの制約、パケットロスによる再送など、多くの要因により、理論値通りの性能は得られないことがよくありますので注意が必要です。
次回もBluetooth LE(BLE)の技術要素について深堀りしてお話したいと思います。
