BLE #2 Protokół Bluetooth Low Energy

W świecie technologii bezprzewodowej, Bluetooth Low Energy (BLE) zdobywa coraz większą popularność, dzięki swojej efektywności i wszechstronności. W pierwszym artykule na temat BLE przedstawiłem podstawowe pojęcia i cechy protokołu. Dziś pragnę zaprosić do drugiej części naszej serii. Niniejszy artykuł skupi się na zrozumieniu stosu protokołu BLE, ukazując jego strukturę i warstwy, które kierują jego działaniem.

Warstwowa struktura protokołu BLE

Protokół Bluetooth Low Energy (BLE) jest jak cebula (albo ogr) – charakteryzuje się warstwową strukturą. Została ona zaprojektowana tak, aby zapewnić skuteczną i niezawodną komunikację między urządzeniami. W tej strukturze wyróżniamy dwie główne części: część kontrolera (Controller) oraz część hosta (Host). Każda z tych części pełni kluczową rolę w realizacji funkcji protokołu BLE.

Współdziałanie pomiędzy częścią kontrolera a częścią hosta jest kluczowe dla efektywnego działania protokołu BLE. Kontroler zapewnia fizyczną infrastrukturę transmisji, podczas gdy host zarządza aplikacjami i usługami, tworząc spójne środowisko komunikacyjne dla urządzeń obsługujących BLE. Za prawidłową komunikację między kontrolerem a hostem odpowiada interfejs HCI (Host Controller Interface).

W praktyce najczęściej w stosie BLE funkcjonuje to na zasadzie hosta jako swojego rodzaju systemu operacyjnego oraz kontrolera w formie układu SoC. Jednak niekoniecznie tak jest, a specyfikacje Bluetooth nie narzucają żadnych szczegółów dotyczących implementacji. Ważne jest, aby host i kontroler działały jako oddzielne logiczne kontenery w architekturze, które można zaimplementować w fizycznie oddzielnych komponentach, ze standardowym interfejsem HCI zdefiniowanym do komunikacji między nimi. Dzięki temu system Bluetooth może składać się z komponentów hosta i kontrolera pochodzących od różnych producentów.

Kontroler BLE

Część kontrolera odpowiada za fizyczną transmisję danych pomiędzy urządzeniami. Kontroler zarządza procesem modulacji, czyli sposobem kodowania sygnału, co umożliwia efektywną transmisję danych w warunkach bezprzewodowych. Poza tym ustala odpowiednią częstotliwość pracy oraz zakres działania urządzenia, aby zapewnić stabilność połączenia i minimalizować zakłócenia.

Warstwa fizyczna (Physical Layer)

Warstwa fizyczna w protokole Bluetooth Low Energy (BLE) pełni kluczową rolę w definiowaniu podstawowych parametrów technologii radiowej, a konkretnie w zakresie częstotliwości, modulacji sygnału oraz charakterystyk nadajnika i odbiornika. Ta warstwa skupia się na szczegółowym określeniu schematów modulacji, właściwości pasm częstotliwości oraz specyficznych parametrów kanałów, które są używane do transmisji danych. W skład warstwy fizycznej BLE wchodzą różnorodne konfiguracje, z których dwie główne to PHY LE 1M i PHY LE 2M, oferujące różne poziomy wydajności transmisji. Co więcej, istnieje również inna wersja PHY, znana jako LE Coded. Choć jej nazwa sugeruje odmienność, w rzeczywistości korzysta ona z tych samych ustawień co PHY LE 1M. Niemniej jednak wyróżnia się ona przez zastosowanie zaawansowanego kodowania korekcyjnego błędów oraz specjalistycznego mapowania wzorców, które są implementowane w warstwie Link Layer. Te kluczowe aspekty fizycznej warstwy BLE są niezbędne dla zapewnienia niezawodności, efektywności oraz optymalnej wydajności w komunikacji bezprzewodowej.

Warstwa łącza danych (Link Layer)

Warstwa Link Layer protokołu BLE definiuje formaty pakietów interfejsu radiowego oraz procedury przetwarzania strumienia bitów, takie jak sprawdzanie błędów i zarządzanie stanami. Zawiera również maszynę stanów oraz protokoły komunikacji over-the-air i kontrolę łącza. W ramach tej warstwy zdefiniowane są różne sposoby wykorzystania podstawowego radia dla komunikacji bezpołączeniowej, połączeniowej i izochronicznej, nazywane „transportami logicznymi”. Dzięki temu, warstwa Link Layer dostarcza elastycznych mechanizmów komunikacyjnych dostosowanych do różnorodnych potrzeb aplikacji. Umożliwia ona realizację zarówno prostych, jednokierunkowych transmisji, jak i bardziej złożonych, wieloetapowych sesji komunikacyjnych. Dodatkowo, zapewnia mechanizmy kontroli, które monitorują i regulują przepływ danych oraz zarządzają stanami połączenia. W warstwie tej, istotne jest również zapewnienie efektywności energetycznej oraz optymalizacja transmisji, co jest kluczowe dla urządzeń zasilanych bateryjnie.

Warstwa ISOAL (Isochronous Adaptation Layer)

Warstwa ISOAL (Isochronous Channels Adaptation Layer) w protokole BLE odgrywa ważną rolę w zapewnieniu synchronicznej komunikacji między urządzeniami. Jednym z jej głównych zadań jest umożliwienie urządzeniom korzystającym z kanałów izochronicznych na używanie różnych długości ramek. Dzięki temu warstwa ISOAL gwarantuje elastyczność w dostosowywaniu się do specyficznych wymagań transmisji dla konkretnych aplikacji i scenariuszy. Mechanizmy zapewnione przez ISOAL są kluczowe dla zapewnienia płynności i efektywności komunikacji w aplikacjach wymagających precyzyjnej synchronizacji danych. Komunikacja izochroniczna umożliwia wykorzystanie technologii Bluetooth LE do przesyłania ograniczonych czasowo danych pomiędzy urządzeniami. Jest wykorzystywana między innymi w przypadku urządzeń LE Audio do jednoczesnego przesyłania strumienia audio dla dwóch kanałów (prawego i lewego).

Interfejs HCI (Host Controller Interface)

Interfejs HCI (Host Controller Interface) stanowi krytyczny element w architekturze systemu Bluetooth, służąc jako most komunikacyjny między komponentem hosta a kontrolerem. Jego głównym celem jest zapewnienie dwukierunkowej komunikacji pomiędzy tymi dwoma elementami, umożliwiając przesyłanie poleceń oraz danych. Interfejs HCI istnieje zarówno po stronie kontrolera, jak i hosta, umożliwiając skuteczne i efektywne zarządzanie oraz nadzorowanie operacji Bluetooth.

Kontroler i host mogą istnieć w formie jednego fizycznego układu lub jako dwa oddzielnego chipy, a HCI zapewnia ich interoperacyjność. Dzięki temu deweloper urządzeń może wybierać certyfikowane urządzenia Bluetooth, kontroler i host, z pełnym przekonaniem, że są one kompatybilne ze sobą. W sytuacji, gdy host i kontroler znajdują się w osobnych chipsetach, warstwa HCI działa jako interfejs fizyczny komunikacji. Oficjalnie wspierane interfejsy sprzętowe według specyfikacji to: UART, USB oraz SDIO (Secure Digital Input Output). Jeśli natomiast obie warstwy, tj. host i kontroler, są częścią jednego chipsetu, warstwa HCI staje się interfejsem logicznym.

Host

Część hosta zajmuje się zarządzaniem warstwą aplikacji i komunikacją między użytkownikami. Host dostarcza interfejsy programistyczne (API) oraz protokoły, takie jak Generic Attribute Profile (GATT), które umożliwiają aplikacjom dostęp do funkcji BLE. Zarządza również procesem nawiązywania sesji, identyfikuje dostępne usługi i charakterystyki urządzeń oraz koordynuje wymianę danych między aplikacjami. Host odpowiada także za implementację mechanizmów zabezpieczeń, takich jak szyfrowanie i autentykacja, które zapewniają prywatność i integralność przesyłanych danych.

L2CAP (Logical Link Control and Adaptation Protocol)

Warstwa L2CAP (Logical Link Control and Adaptation Protocol) w protokole BLE jest odpowiedzialna za zarządzanie połączeniami i adaptację warstw niższych. Dostarcza ona usługi multiplexingu kanałów danych dla RF, co umożliwia jednoczesną transmisję różnych strumieni informacji. L2CAP dzieli również duże jednostki danych (SDU) na mniejsze segmenty, które mogą być efektywnie przesyłane przez łącze. Po przyjęciu segmentów, warstwa ta dokonuje ponownego ich scalenia, przywracając oryginalną strukturę SDU. Ponadto, L2CAP posiada rozbudowane mechanizmy wykrywania błędów, które umożliwiają identyfikację i korektę przekłamań podczas transmisji. W przypadku wystąpienia błędów, L2CAP wykorzystuje zaawansowane funkcje retransmisji, które zapewniają niezawodność przekazywania danych. Dzięki temu, warstwa L2CAP gwarantuje efektywną komunikację w środowisku Bluetooth Low Energy.

SMP (Security Manager Protocol)

Warstwa SMP (Security Manager Protocol) w protokole BLE pełni kluczową rolę w realizacji procedur związanych z bezpieczeństwem komunikacji. Jest to protokół specjalnie zaprojektowany do wspomagania wykonywania procedur bezpieczeństwa, takich jak proces parowania urządzeń. SMP odpowiada za inicjowanie, zarządzanie i koordynację procesów zabezpieczania połączeń w Bluetooth Low Energy. Jego głównym zadaniem jest zapewnienie, że komunikacja między urządzeniami odbywa się w sposób bezpieczny i prywatny. W trakcie procedury parowania, SMP nadzoruje wymianę kluczy kryptograficznych i autentykacyjnych. Ponadto, warstwa ta zapewnia mechanizmy ochrony przed atakami typu „man-in-the-middle”, które mogą zagrażać integralności i poufności danych. Dzięki SMP, urządzenia mogą nawiązywać bezpieczne połączenia, które chronią użytkowników przed potencjalnymi zagrożeniami.

ATT (Attribute Protocol)

Warstwa ATT (Attribute Protocol) w protokole BLE jest kluczowym elementem odpowiedzialnym za pobieranie oraz wykorzystanie danych przechowywanych przez serwer. Działa ona w oparciu o logiczną strukturę danych nazywaną tablicą atrybutów, gdzie przechowywane są informacje dostępne dla połączonych urządzeń. Protokół ATT umożliwia klientowi (np. urządzeniu centralnemu) dostęp do atrybutów serwera (np. urządzenia peryferyjnego) poprzez specyficzne operacje, takie jak odczyt, zapis czy aktualizacja danych. Każdy atrybut w tabeli posiada unikalny identyfikator, który umożliwia jednoznaczne określenie i odwołanie się do konkretnych informacji. ATT zapewnia również mechanizmy do zarządzania relacjami i dostępem do danych, umożliwiając dynamiczną interakcję między klientem a serwerem. Warstwa ta stanowi fundament dla wielu aplikacji w środowisku BLE, pozwalając na skuteczne korzystanie z zasobów i funkcji dostępnych w połączonych urządzeniach.

GATT (Generic Attribute Profile)

Warstwa GATT (Generic Attribute Profile) definiuje wysokopoziomowe typy danych, które obejmują serwisy, charakterystyki oraz deskryptory, w odniesieniu do podstawowych atrybutów w tabeli. Serwisy w GATT reprezentują zbiory powiązanych charakterystyk, które skupiają określone funkcje lub zestawy danych w ramach urządzenia. Charakterystyki, będące kolejnym elementem w hierarchii GATT, reprezentują konkretne wartości danych wewnątrz usług, które można odczytywać, zapisywać lub subskrybować. Deskryptory, natomiast, dostarczają dodatkowych informacji o charakterystykach, takich jak metadane czy konfiguracje. Wszystkie te elementy są integralnie powiązane z atrybutami w tabeli ATT, co zapewnia spójność i jednoznaczność w opisie funkcji oraz interfejsów urządzeń w środowisku BLE. Dzięki GATT, możliwe jest tworzenie zaawansowanych i elastycznych aplikacji, które efektywnie korzystają z funkcji i zasobów dostępnych w połączonych urządzeniach.

GAP (Generic Access Profile)

Warstwa GAP (Generic Access Profile) definiuje tryby operacyjne oraz procedury wykorzystywane w stanie niepołączonym, takie jak wykorzystanie trybu rozgłoszeniowego (advertising) do komunikacji bezpołączeniowej oraz wykrywania urządzeń. Dzięki mechanizmowi rozgłaszania, urządzenia mogą transmitować informacje o swojej obecności, pozwalając innym urządzeniom na ich wykrycie i nawiązanie połączenia. GAP określa także poziomy bezpieczeństwa, które regulują zabezpieczenia w różnych trybach działania, chroniąc prywatność i integralność danych. Ponadto, warstwa ta ustala standardy interfejsu użytkownika, definiując zalecenia dotyczące prezentacji informacji i interakcji z użytkownikiem w kontekście połączeń Bluetooth Low Energy. Dzięki specyfikacji GAP, protokół BLE oferuje spójny i znormalizowany sposób zarządzania komunikacją oraz bezpieczeństwem w różnorodnych scenariuszach działania.

Podsumowanie

W artykule przedstawiłem wgląd w technologię Bluetooth Low Energy (BLE) oraz jej kluczowe komponenty i warstwy protokołu. Omówiliśmy warstwową strukturę, pokrótce opisując zadania i cechy warstw Link Layer, HCI, ISOAL, L2CAP, SMP, ATT i GATT, ukazując ich indywidualne funkcje i znaczenie w architekturze BLE. W szczególności zwróciliśmy uwagę na kluczowe role, jakie odgrywają te warstwy w zapewnieniu efektywnej i bezpiecznej komunikacji między urządzeniami. Zakończyliśmy analizę warstwą GAP, która definiuje operacyjne tryby i standardy w stanie niepołączonym. W kolejnych artykułach dogłębnie omówimy sobie ważniejsze elementy tych warstw, już w odniesieniu do konkretnych przykładów w taki sposób, aby lepiej zrozumieć ich działanie i rolę w komunikacji BLE.

Na dzisiaj to wszystko. W kolejnym wpisie będziemy kontynuowali poznawanie protokołu Bluetooth Low Energy. Jeżeli podobał Ci się wpis lub masz jakieś własne przemyślenia, zostaw komentarz. Pamiętaj też, aby polubić mój profil na Facebook-u oraz zasubskrybować kanał na YouTube.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *