Zum Hauptinhalt springen

5. LoWPAN Adaptation Layer and Frame Format (LoWPAN-Anpassungsschicht und Rahmenformat)

Die in diesem Abschnitt definierten Kapselungsformate (Encapsulation Formats, im Folgenden als „LoWPAN-Kapselung" bezeichnet) sind die Nutzlast in IEEE 802.15.4-MAC-Protokolldateneinheiten (Protocol Data Unit, PDU). Die LoWPAN-Nutzlast (z. B. ein IPv6-Paket) folgt unmittelbar auf diesen Kapselungs-Header.

Alle über IEEE 802.15.4 übertragenen LoWPAN-gekapselten Datagramme (Datagrams) werden mit einem Kapselungs-Header-Stapel (Encapsulation Header Stack) als Präfix versehen. Jeder Header im Header-Stapel enthält einen Header-Typ (Header Type), gefolgt von null oder mehr Header-Feldern. Im IPv6-Header enthält der Stapel in folgender Reihenfolge: Adressierung (Addressing), Hop-by-Hop-Optionen (Hop-by-Hop Options), Routing (Routing), Fragmentierung (Fragmentation), Zieloptionen (Destination Options) und schließlich die Nutzlast [RFC2460]; im LoWPAN-Header ist eine ähnliche Header-Sequenz: Mesh-Netzwerk (L2)-Adressierung, Hop-by-Hop-Optionen (einschließlich L2-Broadcast/Multicast), Fragmentierung und schließlich die Nutzlast.

Typische Header-Stapel-Beispiele:

LoWPAN-gekapseltes IPv6-Datagramm:

+---------------+-------------+---------+
| IPv6 Dispatch | IPv6 Header | Payload |
+---------------+-------------+---------+

Fall mit Mesh-Adressierung und Fragmentierung:

+-------+-------+-------+-------+---------+---------+---------+
| M Typ | M Hdr | F Typ | F Hdr | HC1 Dsp | HC1 Hdr | Payload |
+-------+-------+-------+-------+---------+---------+---------+

Wenn mehrere LoWPAN-Header im selben Paket verwendet werden, MÜSSEN (MUST) sie in folgender Reihenfolge erscheinen: Mesh-Adressierungs-Header, Broadcast-Header, Fragmentierungs-Header.

5.1. Dispatch Type and Header (Dispatch-Typ und Header)

Der Dispatch-Typ wird durch die ersten zwei Bits „01" definiert, wobei ein 6-Bit-Selektor den darauf folgenden Header-Typ identifiziert.

Dispatch-Wert-Bitmuster:

  • 00 xxxxxx - NALP: Kein LoWPAN-Rahmen
  • 01 000001 - IPv6: Unkomprimierte IPv6-Adresse
  • 01 000010 - LOWPAN_HC1: HC1-komprimiertes IPv6
  • 01 010000 - LOWPAN_BC0: BC0-Broadcast
  • 01 111111 - ESC: Zusätzliches Dispatch-Byte
  • 10 xxxxxx - MESH: Mesh-Netzwerk-Header
  • 11 000xxx - FRAG1: Erster Fragmentierungs-Header
  • 11 100xxx - FRAGN: Nachfolgender Fragmentierungs-Header

5.2. Mesh Addressing Type and Header (Mesh-Adressierungstyp und Header)

Der Mesh-Typ wird durch die ersten zwei Bits „10" definiert:

|1 0|V|F|HopsLft| originator address, final address

Felddefinitionen:

  • V: 1 Bit, 0 bedeutet Absenderadresse ist 64 Bit, 1 bedeutet 16-Bit-Kurzadresse
  • F: 1 Bit, 0 bedeutet endgültige Zieladresse ist 64 Bit, 1 bedeutet 16-Bit-Kurzadresse
  • Hops Left: 4 Bit, wird bei jeder Weiterleitung dekrementiert, bei 0 wird das Paket verworfen. 0xF bedeutet, dass ein 8-Bit-Erweiterungsfeld folgt
  • Originator Address: Verbindungsschichtadresse des Absenders
  • Final Destination Address: Verbindungsschichtadresse des endgültigen Ziels

5.3. Fragmentation Type and Header (Fragmentierungstyp und Header)

Wenn ein Datagramm nicht in einen einzigen 802.15.4-Rahmen passt, SOLL (SHALL) es in Verbindungsschicht-Fragmente aufgeteilt werden. Alle Fragmente außer dem letzten MÜSSEN (MUST) ein Vielfaches von 8 Bytes sein.

Erster Fragmentierungs-Header (FRAG1):

|1 1 0 0 0| datagram_size | datagram_tag |

Nachfolgender Fragmentierungs-Header (FRAGN):

|1 1 1 0 0| datagram_size | datagram_tag |
|datagram_offset|

Felddefinitionen:

  • datagram_size: 11 Bit, kodiert die Gesamtgröße des IP-Pakets (vor der Verbindungsschicht-Fragmentierung). Für IPv6 ist der Wert Payload Length + 40
  • datagram_tag: 16 Bit, alle Fragmente desselben Datagramms haben denselben Tag; der Sender erhöht diesen Wert für aufeinanderfolgende Datagramme
  • datagram_offset: 8 Bit, Fragmentierungsversatz in Einheiten von 8 Bytes, erscheint nur in nachfolgenden Fragmenten

Reassemblierungsregeln:

Der Empfänger identifiziert Fragmente, die zum selben Datagramm gehören, anhand folgender Informationen:

  1. 802.15.4-Quelladresse des Senders (oder Mesh-Absenderadresse)
  2. 802.15.4-Adresse des Ziels (oder endgültige Mesh-Zieladresse)
  3. datagram_size
  4. datagram_tag

Der Reassemblierungs-Timeout MUSS (MUST) auf maximal 60 Sekunden gesetzt werden. Bei Erkennung eines Disassoziierungsereignisses MÜSSEN (MUST) alle teilweise reassemblierten Fragmente verworfen werden.