6LoWPAN-Open-Source-Projekt emb::6 spricht Bluetooth Low Energy

Elektronik-Projekt: Open-Source-Protokollstapel für 6LoWPAN
Elektronik-Projekt: Open-Source-6LoWPAN

Die portable 6LoWPAN-Implementierung »emb::6« – ein Projekt der Elektronik – entwickelt sich zu einem Multi-Band- und Multi-Protokoll-fähigen Kommunikationsstapel. Er kann nun auch IPv6-Pakete über Bluetooth Low Energy übertragen.

Der emb::6-Kommunikationsstapel – ein Open-Source-Projekt der Elektronik – unterstützt die Funkkommunikation mittels IPv6-Paketen über den IEEE-802.15.4-Standard für Anwendungen im Bereich der Low-Power Wireless Personal Area Networks (LoWPAN). Er basiert auf einer reinen C-Implementierung, die ursprünglich als Zweig des bekannten Contiki-OS entstand, dann aber sukzessive erweitert und optimiert wurde, unter anderem, um auch mehrere Kommunika­tionsprotokolle auf Schicht 1 und 2 zu unterstützen [1].

Ursprünglich wurde 6LoWPAN von der Internet Engineering Task Force (IETF) als ein offener Standard definiert, um das aktuelle Internetprotokoll IPv6 für IEEE-802.15.4-basierte Geräte zu ermöglichen. Inzwischen sind mehrere neue Ansätze entstanden, die die Nutzung des IPv6-Protokolls auch über andere Kommunikationsprotokolle als Basis ermöglichen. Diese sind dann im Allgemeinen als 6Lo-Protokolle bekannt. Beispiele hierfür sind IPv6 über Long Range Wide Area Network (LoRaWAN), die DECT-Erweiterung Ultra Low Energy (ULE) oder Bluetooth Low Energy (BLE).

Der emb::6-Protokollstapel folgt diesem Trend und wurde um die Unterstützung der IPv6-over-BLE-Kommunikation erweitert. Mit der aktuellen Implementierung ist es nun möglich, die Netzknoten so zu konfigurieren, dass sie über verbreitete IP-basierte Anwendungsprotokolle wie MQTT (Message Queuing Telemetry Transport) oder CoAP (Constrained Application Protocol) innerhalb eines BLE-Netzes kommunizieren können.

Zusammenspiel von Bluetooth Low Energy und IPv6

Bluetooth Low Energy (BLE) wurde erstmals in Bluetooth Spezifikation V4.0 eingeführt und mit Folgeversionen Bluetooth V4.1 und V4.2 weiter verbessert. Prinzipiell ist diese Technik für die Übertragung von kleinen Datenmengen bei sehr geringem Energieaufwand pro Bit ausgelegt, wodurch BLE-Geräte in der Regel mit Batterien geringer Kapazität oder sogar per Energy Harvesting autark betrieben werden können. Somit hat sich BLE als eine attraktive Funk­technik für Anwendungen im Internet der Dinge (IoT), wie z.B. im Medizin­bereich, in der Heim- und Gebäude­automatisierung, im Umwelt-Monitoring und in vielen anderen Bereichen etabliert.

Vor dem Hintergrund der voraussichtlich in den kommenden Jahren weiter schnell wachsenden Anzahl an Geräten in diesen Bereichen, bietet sich das Internetprotokoll (IP) in der Ver­sion 6 (IPv6) als eine ideale Grundlage für die Kommunikation mit und zwischen solchen Geräten an.

IPv6 garantiert nicht nur, dass es langfristig weltweit eindeutige Adressen für jedes einzelne Gerät geben wird, sondern es existieren auch bereits viele IP-basierte Techniken, die sich sehr gut bewährt haben. Darüber hinaus ermöglicht das Internetprotokoll die Nutzung vorhandener Infrastrukturen und Werkzeuge, wie z.B. Tools für Diagnose, Verwaltung und Inbetriebnahme von IP-Netzwerken. Schließlich ermöglicht IP eine nahtlose Integration von Geräten in andere IP-basierte Netzwerke ohne die Notwendigkeit von Gateways oder Proxies.

Der BLE-Stapel

Den allgemeinen Aufbau eines BLE-Stapels, wie er von der IETF in RFC7668 [2] definiert wurde, zeigt (Bild 1). Die unteren Schichten des Protokollstapels bestehen aus der Bitübertragungsschicht (Physical Layer – PHY) und der Sicherungsschicht (Data Link Layer – LL). Die Bitübertragungsschicht überträgt und empfängt die eigentlichen Datenpakete, wogegen die Sicherungsschicht für den Kanalzugriff, den Verbindungsauf- und -abbau sowie die Fehler- und Flusskontrolle verantwortlich ist. Zudem existiert auf der unteren Schicht noch eine Testschnittstelle namens Direct Test Mode (DTM), welche für Testzwecke verwendet werden kann.

Die oberen Schichten bestehen aus dem Logical Link Control and Adaptation Protocol (L2CAP), dem Attribute Protocol (ATT), dem Security Manager (SM), dem Generic Attribute Profile (GATT) und dem Generic Access Profile (GAP).

Die L2CAP-Schicht erlaubt das Multiplexen der verschiedenen Datenkanäle aus den obigen Schichten. Zudem stellt sie eine Fragmentierung bereit, die es ermöglicht, Pakete zu übertragen, welche größer sind als die von den unteren Schichten unterstütze Maximalgröße von 23 Byte Nutzdaten.

GATT- und BLE-Profile ermöglichen die gleichzeitige Erstellung von Applikationen ohne die Nutzung des Internetprotokolls. Zu guter Letzt existiert noch ein sogenannter Sicherheitsmanager, welcher in Form einer Sicherheits-Toolbox die erforderlichen Protokolle und Mechanismen, z.B. für eine sichere Kopplung und Schlüsselverteilung, bereitstellt.

Um die oberen und unteren Schichten sauber zu trennen, existiert eine einheitliche sogenannte Host-Controller-Schnittstelle (HCI). Diese erlaubt es, die unteren Schichten in einem speziellen Bluetooth-Controller in Hardware zu implementieren. Die höheren Schichten können dagegen in Form von Software bereitgestellt werden.

Das Internet Protocol Support Profile

BLE alleine unterstütz kein IPv6. Um dennoch die Übertragung von IPv6-Paketen über BLE zu unterstützen, definiert die Bluetooth Special Interest Group (SIG) das sogenannte Internet Protocol Support Profile (IPSP) [3]. Dieses Profil ermöglicht es BLE-Geräten, andere Geräte, die ebenfalls das IPSP unterstützen, zu erkennen und mit ihnen über das IPv6-Protokoll zu kommunizieren (Bild 2).

Das IPSP definiert hierfür zwei Rollen, sogenannte Knoten und Router. Router können IPv6-Pakete weiterleiten, wogegen Knoten die IPv6-Pakete zur Kommunikation untereinander benutzen.

Sollen Geräte sowohl Routing-Funktionen beinhalten als auch IPv6 zur Kommunikation nutzen, so besteht zudem die Möglichkeit, beide Rollen zu implementieren. Wird ein Gerät in der Rolle des Routers betrieben, so verwendet es ein spezielles GATT-Verfahren für die primäre Erkennung von Diensten vom Internet Protocol Support Service (IPSS) eines Knotens.

Befindet sich ein Knoten auf der gegenüberliegenden Seite im GAP-Erkennungsmodus, so kann er sich über seinen Unique Numeric Identifier (UUID) des IPSS zu erkennen geben, indem er diesen in das Feld Service UUIDs Advertising Data Type innerhalb der sogenannten Advertising-Datenpakete einfügt.

Rollen im BLE-IPv6-Netzwerk

Auch auf GAP-Ebene definiert der BLE-Standard zwei unterschiedliche Rollen, die sogenannten Centrals und die Peripherals. Eine Kommunikation findet aber immer nur zwischen einem Central- und einem Peripheral-Gerät statt. Ein Central-Gerät ist dabei in der Lage, gleichzeitig mehrere Verbindungen mit unterschiedlichen Peripheral-Gerät zu verwalten, wogegen ein Peripheral-Gerät, bis zur Bluetooth Version V4.0, nur zu einem einzigen Central-Gerät verbunden sein konnte.

Erst ab Bluetooth Version V4.1 kann sich auch ein Peripheral-Gerät gleichzeitig mit mehreren Central-Geräten verbinden. Dadurch wird es prinzipiell möglich, auch vermaschte Netzwerke zu bilden, was aber von der derzeitigen emb::6-Implementierung noch nicht unterstützt wird.

Werden nun die GAP-Rollen mit denen des IPSP kombiniert, so stellen Central-Geräte die Funktionen eines Routers – 6Lo Border Router (6LBR) – und Peripheral-Geräte die Funktionen eines Knotens – 6Lo Node (6LN) – bereit. Dadurch bilden sich sternförmig organisierte Netzwerke mit einem 6LBR und mehreren 6LNs, wobei jeweils eine Verbindung zwischen dem Router und den einzelnen Knoten entsteht.

Ein solches Netzwerk zwischen einem Central-Gerät und seinen angeschlossenen Peripheral-Geräten in einem BLE-Netzwerk wird als ein einzelnes Subnetzwerk behandelt. Durch den Einsatz von IP-basiertem Routing ist es innerhalb eines solchen Subnetzwerks nun auch möglich, eine Kommunikation zwischen zwei Knoten aufzubauen, indem die Pakete über den Router weitergeleitet werden.

Ein typisches Anwendungsszenario zeigt Bild 3, bei dem ein BLE-Netzwerk mit dem Internet verbunden ist. Jeder Knoten verfügt über eine separate Verbindung zum Router, die für das Routing sowohl innerhalb des BLE-Netzwerks als auch für die Weiterleitung der Pakete in und aus dem BLE-Netzwerk zuständig ist.