11. Livraison de trames dans un réseau maillé de couche liaison (Frame Delivery in a Link-Layer Mesh)
Bien qu'il soit prévu que les réseaux 802.15.4 utiliseront généralement le routage en réseau maillé (Mesh Routing), la spécification IEEE 802.15.4-2003 [ieee802.15.4] ne définit pas une telle capacité. Dans ce contexte, les dispositifs à fonctionnalité complète (Full Function Devices, FFDs) exécutent des protocoles de routage ad hoc ou en réseau maillé pour remplir leurs tables de routage (hors du cadre de ce document). Dans ce scénario de réseau maillé, deux dispositifs n'ont pas besoin d'être directement accessibles pour communiquer. Parmi ces dispositifs, l'émetteur est appelé « émetteur d'origine » (Originator) et le récepteur est appelé « destination finale » (Final Destination). Le dispositif émetteur d'origine peut utiliser d'autres dispositifs intermédiaires comme relais (Forwarders) vers la destination finale. Pour réaliser cette livraison de trames en utilisant l'unicast, les adresses de couche liaison de l'émetteur d'origine et de la destination finale doivent être incluses en plus des adresses source et de destination saut par saut.
Cette section définit comment réaliser la livraison de trames de couche 2 dans un réseau maillé, étant donné l'adresse de couche liaison de la « destination finale » cible.
La livraison en réseau maillé est réalisée en incluant un en-tête d'adressage réseau maillé (Mesh Addressing Header) avant tout autre en-tête dans l'encapsulation LoWPAN (section 5), y compris les en-têtes non fragmentés et fragmentés ; l'en-tête IPv6 complet ; ou l'en-tête IPv6 compressé selon la section 10 ou défini ailleurs.
Si un nœud souhaite utiliser le relais réseau maillé par défaut pour livrer un paquet (c'est-à-dire parce qu'il n'a pas d'accessibilité directe vers la destination), il DOIT inclure un en-tête d'adressage réseau maillé dans lequel l'adresse de couche liaison de l'émetteur d'origine est définie comme la sienne, et l'adresse de couche liaison de la destination finale est définie comme la destination finale du paquet. Il définit l'adresse source dans l'en-tête 802.15.4 comme sa propre adresse de couche liaison, et place l'adresse de couche liaison du relais dans le champ d'adresse de destination de l'en-tête 802.15.4. Enfin, il transmet le paquet.
De même, si un nœud reçoit une trame avec un en-tête d'adressage réseau maillé, il DOIT examiner le champ « Final Destination » de l'en-tête d'adressage réseau maillé pour déterminer la vraie destination. Si le nœud lui-même est la destination finale, il consomme le paquet selon la livraison normale. S'il n'est pas la destination finale, le dispositif décrémente le champ « Hops Left » et, si le résultat est zéro, rejette le paquet. Sinon, le nœud interroge sa table de routage de couche liaison, détermine quel devrait être le prochain saut vers la destination finale, et place cette adresse dans le champ d'adresse de destination de l'en-tête 802.15.4. Enfin, le nœud change l'adresse source dans l'en-tête 802.15.4 en sa propre adresse de couche liaison et transmet le paquet.
Bien qu'un nœud DOIVE participer à un protocole de routage en réseau maillé pour être un relais, il n'existe pas d'exigence similaire pour utiliser uniquement le transfert en réseau maillé. Seuls les « dispositifs à fonctionnalité complète » (FFDs) sont prévus pour participer comme routeurs dans le réseau maillé. Les « dispositifs à fonctionnalité réduite » (Reduced Function Devices, RFDs) se limitent à découvrir les FFDs et à les utiliser pour tout transfert, d'une manière similaire à celle dont les hôtes IP utilisent généralement un routeur par défaut pour transférer tout leur trafic hors lien. Pour un RFD utilisant la livraison en réseau maillé, le « relais » est toujours un FFD approprié.
11.1. Diffusion LoWPAN (LoWPAN Broadcast)
Les capacités de routage en réseau maillé supplémentaires sont encodées à l'aide d'un en-tête de routage (Routing Header) placé immédiatement après l'en-tête réseau maillé. En particulier, l'en-tête de diffusion est composé du dispatch LOWPAN_BC0 suivi d'un champ de numéro de séquence (Sequence Number). Le numéro de séquence est utilisé pour détecter les paquets dupliqués (et, espérons-le, les supprimer).
1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0|1|LOWPAN_BC0 |Sequence Number|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 11 : En-tête de diffusion
Définition des champs :
Sequence Number (numéro de séquence) : Ce champ de 8 bits DEVRA être incrémenté chaque fois que l'émetteur d'origine envoie un nouveau paquet de diffusion ou de multidiffusion en réseau maillé. La spécification complète de la façon de traiter ce champ dépasse le cadre de ce document.
Les implications supplémentaires de cette diffusion au niveau de la couche réseau maillé, par exemple si elle correspond à un mécanisme d'inondation contrôlée ou son rôle dans la découverte de topologie, dépassent le cadre de ce document.
Les capacités de routage en réseau maillé supplémentaires, telles que la spécification d'un protocole de routage en réseau maillé, le routage à la source, etc., peuvent être exprimées en définissant des en-têtes de routage supplémentaires placés avant les en-têtes de fragmentation ou d'adressage dans la pile d'en-têtes. La spécification complète de telles capacités de routage en réseau maillé dépasse le cadre de ce document.