web-dev-qa-db-fra.com

Longueur maximale des paquets pour Bluetooth LE?

Je me demandais quelle était la longueur maximale des paquets dans Bluetooth Low Energy. La limite de 20 octets si souvent dit, pour exemple ici

"BLE vous permet de transférer un maximum de 20 octets."

"Vous avez raison de dire que la spécification BLE ne permet pas aux opérations d'écriture de dépasser 20 octets."

Cependant, en lisant la spécification Bluetooth Core, nous pouvons voir que la valeur ATT_MTU est écrite avec 2 octets, ce qui signifie qu'elle peut aller jusqu'à 65 535 octets.

Quelle est la vérité derrière tout ça?

11
jdoe

Les spécifications ont toujours raison!

Dans Bluetooth 4.0, BLE a été introduit avec une charge utile maximale de 33 octets (sans compter les champs Adresse d'accès et CRC). Chaque couche de la pile de protocoles prend sa coupe:

  • 2 octets pour l'en-tête de paquet (type et longueur),
  • 4 octets pour MIC (lorsque le cryptage est activé),
  • 4 octets pour l'en-tête L2CAP (ID de canal et longueur de paquet),
  • Le protocole ATT est laissé avec 23 octets, ce qui est le MTU par défaut et minimal pour le protocole ATT.

Avec une demande d'écriture ATT (ou notification), 3 octets sont utilisés par type de commande et ID d'attribut, 20 octets sont laissés pour les données d'attribut.

Au niveau ATT, cette limite peut être élargie de deux manières:

  • Utilisation de la fragmentation au niveau L2CAP:

    L2CAP divisera les PDU ATT en fragments de 27 octets (23 pour le premier).

    Désavantages:

    • Il a besoin de mémoire des deux côtés,
    • Il est moins fiable car les paquets peuvent être perdus par certaines implémentations (même si les spécifications ne parlent pas de perte de paquets au niveau L2CAP, cela arrive)
  • Utilisation de l'extension de longueur de paquet introduite dans Bluetooth 4.2:

    Jusqu'à 251 octets au niveau radio (255 avec MIC), donc 242 octets disponibles pour les données d'attribut.

    Désavantages:

    • Encore nouveau, nécessite un support matériel, donc pas implémenté partout (même si l'annonce du support BLE 4.2),

    • Les paquets avec un temps d'antenne plus long auront plus de chances de se bloquer, donc des paquets plus longs impliquent plus de retransmissions.

Si les deux méthodes sont utilisées, L2CAP peut utiliser des fragments plus gros.

Quelle que soit la division de bas niveau de l'APT PDU, la longueur de la valeur d'attribut est limitée à 512 par 3.F 3.2.9.

28
Nipo