- Wprowadzenie
- Dlaczego niemożliwe jest osiągnięcie teoretycznych prędkości BLE?
- Szybkość Bluetooth 5 : 2x szybkość z wykorzystaniem nowego 2M PHY
- Faktory, które wpływają/określają przepustowość danych
- PHY
- Odstęp między połączeniami & max pakietów na zdarzenie połączenia
- Data Length Extensions (DLE)
- ATT Maksymalna Jednostka Transmisyjna (ATT MTU)
- Typ operacji: Write with response vs. write without response, Indications vs. Notifications
- Przestrzeń międzyramkowa (IFS): opóźnienie czasowe pomiędzy kolejnymi pakietami (150 us)
- Przesyłanie pustych pakietów
- Pakiet nadrzędny
- Obliczanie przepustowości danych aplikacji
- LE 1M PHY i LE 2M PHY obliczenia
- Kroki do obliczenia przepustowości (w Mbps):
- Kroki:
- Testowanie i obliczanie przepustowości danych pomiędzy dwoma zestawami rozwojowymi nRF52
- Case 1 (PHY: 1 Mbps, ATT MTU = 23 bajty, DLE: enabled, Connection interval: 7.5 milisecs)
- Data throughput reported by firmware:
- Obliczona przepustowość danych:
- Przypadek 2 (PHY: 2 Mbps, ATT MTU = 23 bajty, DLE: włączone, Interwał połączenia: 7.5 milisekund)
- Przepustowość danych raportowana przez firmware:
- Obliczona przepustowość danych:
- Przypadek 3 (PHY: 1 Mbps, ATT MTU = 158 bajtów, DLE: włączone, Interwał połączenia: 7.5 milisekund)
- Przepustowość danych raportowana przez firmware:
- Obliczona przepustowość danych:
- Przypadek 4 (PHY: 2 Mbps, ATT MTU = 247 bajtów, DLE: włączone, Interwał połączenia: 7.5 milisekund)
- Przepustowość danych raportowana przez firmware:
- Obliczona przepustowość danych:
- Przypadek 5 (PHY: 2 Mbps, ATT MTU = 247 bajtów, DLE: włączone, Interwał połączenia: 50 milisekund)
- Przepustowość danych zgłoszona przez firmware:
- Obliczona przepustowość danych:
- Przypadek 6 (PHY: 2 Mbps, ATT MTU = 247 bajtów, DLE: włączone, Interwał połączenia: 400 milisek)
- Przepustowość danych zgłoszona przez firmware:
- Obliczona przepustowość danych:
- Optymalizacja dla maksymalnej przepustowości danych
- Podsumowanie & zamknięcie
Wprowadzenie
W tym drugim poście w serii na temat Bluetooth 5, obejmujemy nową funkcję ulepszonej prędkości 2x wraz z ogólnym przeglądem przepustowości dla aplikacji BLE (poprzedni post przeszedł nad nowymi funkcjami Bluetooth 5 w ogóle i bardziej szczegółowo obejmował zwiększoną funkcję pojemności reklam).
Po pierwsze, musimy zrozumieć, że prędkości reklamowane (1 Mbps i nowe 2 Mbps) są tylko teoretyczne i są cięte w dół, gdy przychodzi do przepustowości aplikacji. Wynika to z wielu powodów, które będziemy przechodzić w następnej sekcji.
The Bluetooth 5 „2x prędkość” funkcja wymaga aktualizacji sprzętu, więc starsze urządzenia / chipy / moduły nie będą go wspierać. Ważne jest również, aby zauważyć, że w celu osiągnięcia tej wyższej przepustowości będziesz potrzebował obu urządzeń BLE komunikujących się ze sobą, aby wspierać nowy LE 2M PHY (który umożliwia przesyłanie danych z tą wyższą prędkością).
Nowy LE 2M PHY, jak również oryginalny LE 1M PHY, są zarówno nazywane Uncoded PHYs ponieważ używają 1-symbol reprezentacji na bit danych (w porównaniu do nowego LE Coded PHY, który używa 2-symbol lub 8-symbol reprezentacji na bit danych).
Inną ważną rzeczą do zauważenia jest to, że podczas korzystania z wyższej prędkości PHY, faktycznie osiągnąć niższe zużycie energii (biorąc pod uwagę, że przesyłanie tej samej ilości danych). Dzieje się tak, ponieważ czas włączenia radia jest zmniejszony bez zwiększania mocy nadawania. To z kolei poprawia również współistnienie z innymi technologiami bezprzewodowymi w obrębie widma 2,4 GHz (również ze względu na zmniejszony czas włączenia radia).
W tym poście omówimy:
- Jaka jest praktyczna przepustowość, której można oczekiwać od BLE?
- Nowe 2M PHY w Bluetooth 5 do transferu danych
- Jakie są czynniki wpływające/określające przepustowość danych?
- Jak obliczyć przepustowość danych w aplikacji?
- Jak zmaksymalizować przepustowość danych?
- Testowanie, mierzenie i obliczanie przepustowości danych przy użyciu dwóch zestawów rozwojowych z serii nRF52
Dlaczego niemożliwe jest osiągnięcie teoretycznych prędkości BLE?
Prędkości danych 1 Mbps (LE 1M PHY), 2 Mbps (LE 2M PHY), 125 kbps i 500 kbps (obie przy użyciu LE Coded PHY z S=8 i S=2, odpowiednio) są prędkościami, z którymi radio transmituje dane, ale nie jest to osiągalne dla przepustowości aplikacji z następujących powodów:
- Limit na liczbę pakietów na interwał połączenia
- Opóźnienie między pakietami (IFS) (150 us)
- Puste pakiety wymagane do wysłania z urządzenia, nawet jeśli żadne dane nie są dostępne do przesłania
- Nadmiar pakietów – nie wszystkie bajty w pakiecie są wykorzystywane na ładunek
Aby lepiej zrozumieć te czynniki i zrozumieć, co wpływa na przepustowość aplikacji, musimy przyjrzeć się głębiej formatowi pakietu. Poniższy rysunek pokazuje, jak wyglądają pakiety danych LE 1M PHY i 2M PHY:
Częścią, która nas interesuje (i która naprawdę definiuje dane aplikacji) jest ATT Payload. Jak widać na rysunku, istnieje pewna liczba bajtów nadrzędnych, które są używane przez każdą warstwę w Bluetooth Low Energy.
- W 4.0 i 4.1, maksymalny ATT Payload wynosi 20 bajtów.
- W 4.2 i 5.0, nowa funkcja zwana Data Length Extensions (DLE) pozwala ATT Payload pomieścić do 244 bajtów danych.
Szybkość Bluetooth 5 : 2x szybkość z wykorzystaniem nowego 2M PHY
Przydatne jest zrozumienie ograniczeń związanych z wykorzystaniem nowego LE 2M PHY w Bluetooth 5:
- Nie może być używany do transmisji podstawowych reklam (na podstawowych kanałach).
- Może być używany do wtórnych „pakietów pomocniczych” wysyłanych na tych samych kanałach co pakiety danych (37 kanałów: 0-36).
Aby dowiedzieć się więcej o pierwotnych i wtórnych reklam, odnieś się do mojego poprzedniego wpisu na blogu: Bluetooth 5 Reklamy: Wszystko, co musisz wiedzieć. - LE 1M jest obowiązkowe, podczas gdy LE 2M jest opcjonalne. Tak więc, nie wszystkie chipy roszczące sobie prawo do obsługi Bluetooth 5 mogą koniecznie obsługiwać wyższą przepustowość.
- Reklamowanie i odkrywanie może wystąpić na LE 2M PHY, a następnie połączenia występują na wtórnym kanale reklamowym przy użyciu LE 2M PHY
Przekazywanie danych aplikacji z jednego urządzenia do drugiego zwykle odbywa się podczas połączenia między dwoma urządzeniami. Połączone urządzenia mogą wynegocjować użycie innego PHY poprzez procedurę PHY Update. Może ona zostać zainicjowana przez urządzenie podrzędne (slave) lub nadrzędne (master) po ustanowieniu połączenia, ale urządzenie nadrzędne (master) podejmie ostateczną decyzję, które PHY są używane dla każdego kierunku (na podstawie żądania urządzenia podrzędnego i PHY obsługiwanych przez urządzenie nadrzędne).
Faktory, które wpływają/określają przepustowość danych
Istnieje kilka czynników, które wpływają na przepustowość danych aplikacji BLE. Najczęstsze z nich to:
- Używana sieć (LE 1M vs. LE 2M vs. LE Coded (S=2 lub S=8))
- Interwał połączenia
- Maksymalna liczba pakietów na interwał połączenia
- ATT Maximum Transmission Unit (ATT MTU)
- Data Length Extension (DLE)
- Typ operacji: Write with response vs. write without response, Indications vs. Notifications
- Inter Frame Space (IFS): przerwa czasowa między kolejnymi pakietami (150 us)
- Transmisja pustych pakietów
- Packet overhead – nie wszystkie bajty, w pakiecie, są wykorzystywane dla ładunku aplikacji
Przejrzyjmy się każdemu z nich bardziej szczegółowo.
PHY
W Bluetooth 5 są w zasadzie trzy PHY: oryginalny 1 Mbps PHY, nowy 2 Mbps, i kodowany PHY (z S=2, lub S=8). Używany PHY będzie miał bezpośredni wpływ na maksymalną przepustowość danych, jaką można osiągnąć, ponieważ określa on rzeczywistą szybkość surowych danych, w których pakiety są wysyłane przez powietrze.
Odstęp między połączeniami & max pakietów na zdarzenie połączenia
Odstęp między połączeniami efektywnie określa, ile pakietów może być wysłanych podczas jednego zdarzenia połączenia. Im wyższa wartość, tym więcej pakietów może być wysłanych w jednym zdarzeniu połączenia (do pewnego limitu dla niektórych urządzeń).
Dowiedz się więcej o interwałach połączenia: Interwały i zdarzenia połączeń BLE
Jednakże liczba pakietów na zdarzenie połączenia zależy od urządzenia i stosu BLE, więc jest ograniczona i różni się między urządzeniami i wersjami stosu na konkretnym urządzeniu. Wartość ta zależy również od pracy urządzenia, więc radio może być zmuszone do obsługi innych zdarzeń i liczba pakietów wysyłanych na zdarzenie połączenia może nie osiągnąć maksimum dopuszczalnego przez stos. Na przykład, liczba ta różni się między iOS i Android, a także zmienia się w zależności od wersji systemu operacyjnego działającego na urządzeniu.
Czasami przydatne jest dynamiczne aktualizowanie parametrów połączenia w oparciu o przypadek użycia. Należy jednak pamiętać, że to od urządzenia nadrzędnego zależy, czy zaakceptuje te zalecenia, czy też zaktualizuje parametry, aby je uwzględnić.
Data Length Extensions (DLE)
Ta funkcja pozwala na zwiększenie rozmiaru pakietu (do 251 bajtów vs. 27, gdy jest wyłączona). Ta funkcja została wprowadzona w wersji 4.2 specyfikacji Bluetooth.
ATT Maksymalna Jednostka Transmisyjna (ATT MTU)
ATT MTU Określa maksymalną ilość danych, które mogą być obsługiwane przez nadajnik i odbiornik i które mogą pomieścić w swoich buforach.
Wartość MTU wpływa na ilość danych ogólnych (w szczególności nagłówek ATT, który ma 3 bajty). Minimalna dozwolona wartość MTU ATT wynosi 27 bajtów. Pozwala to na maksymalnie 20 bajtów ładunku ATT (3 bajty są używane dla nagłówka ATT, a 4 bajty dla nagłówka L2CAP).
Nie ma limitu w specyfikacji na to, jak wysoka może być wartość MTU, ale konkretny stos w użyciu może mieć swoje własne ograniczenia. Na przykład, jeśli włączysz DLE to możesz przesłać do 251 – 4 = 247 bajtów (po odjęciu rozmiaru nagłówka L2CAP). Po uwzględnieniu nagłówka ATT (3 bajty), pozostają nam 244 bajty na faktyczne dane ładunku ATT. Jeśli MTU wynosi co najmniej 247 bajtów, to MTU zmieści się w jednym pakiecie. Jeśli MTU jest większe niż 247 bajtów, wtedy MTU będzie obejmowało wiele pakietów powodując spadek przepustowości (z powodu narzutu pakietów i czasu pomiędzy pakietami).
Efektywne MTU jest określane przez minimalną wartość ATT MTU, którą klient i serwer obsługują. Na przykład, jeśli klient obsługuje ATT MTU równe 100 bajtów, a serwer odpowiada, że obsługuje ATT MTU równe 150 bajtów, wtedy klient zdecyduje, że ATT MTU, które ma być używane dla połączenia od tego momentu to 100 bajtów.
Typ operacji: Write with response vs. write without response, Indications vs. Notifications
Jeśli pożądana jest wysoka przepustowość to możemy użyć Write without response lub Notifications do przesyłania danych od klienta do serwera i od serwera do klienta. Operacje te usuwają potrzebę potwierdzenia odbioru danych przez drugie urządzenie i udzielenia odpowiedzi przed wysłaniem następnego bloku danych.
Przestrzeń międzyramkowa (IFS): opóźnienie czasowe pomiędzy kolejnymi pakietami (150 us)
Z specyfikacji Bluetooth:
4.1.1 Przestrzeń międzyramkowa
Odstęp czasowy pomiędzy dwoma kolejnymi pakietami na tym samym indeksie kanału jest nazywany przestrzenią międzyramkową. Jest on zdefiniowany jako czas od końca ostatniego bitu poprzedniego pakietu do początku pierwszego bitu następnego pakietu.
Odstęp między ramkami jest oznaczony jako „T_IFS” i wynosi 150 μs.
Przesyłanie pustych pakietów
Jeżeli urządzenie odbierające dane nie ma danych do odesłania, nadal musi wysłać pusty pakiet zgodnie ze specyfikacją Bluetooth.
Pakiet nadrzędny
Jak widzieliśmy na rysunku formatu pakietu, pakiet zawiera pewne dane nadrzędne, które nie liczą się do danych aplikacji (dane ATT). Zasadniczo, te bajty zużyją część twojej prędkości przesyłu danych, nie uwzględniając żadnych bajtów wysyłanych jako część danych aplikacji.
Obliczanie przepustowości danych aplikacji
Poważne pytanie brzmi: jak obliczamy przepustowość naszej aplikacji?
Jak wspomnieliśmy wcześniej, istnieje kilka zmiennych, które mają wpływ na przepustowość danych:
- Wersja Bluetooth &Użyte PHY
- DLE: Data Length Extensions – włączone lub nie
- Wartość MTUATT
- Interwał połączenia
- Maksymalna liczba pakietów na zdarzenie połączenia
- Operacja (zapisy z odpowiedziami vs.
- Inter Frame Space (IFS): 150 mikrosekund
Wersja Bluetooth i PHY określają surową szybkość transferu danych. Na przykład, jeśli używamy Bluetooth w wersji 4.2 i LE 1M PHY, to prędkość transferu wynosi 1 Mbps. Jeśli z drugiej strony, używamy Bluetooth 5 LE Coded PHY z S=8, wtedy prędkość transferu danych spada do 125 kbps.
DLE, ATT MTU, interwał połączenia, maksymalna liczba pakietów na interwał połączenia, Operation, i IFS wszystkie określają część czasu on-radio, który jest wykorzystywany do rzeczywistego transferu danych.
Format pakietu odgrywa dużą rolę w tym, ile z danych przesyłanych jest rzeczywistymi danymi aplikacji. LE 1M PHY i LE 2M PHY mają podobny format pakietów. LE Coded PHY ma znacząco inny format pakietu, więc będziemy patrzeć na te dwa przypadki oddzielnie.
LE 1M PHY i LE 2M PHY obliczenia
Powracając do formatu pakietu dla LE Uncoded PHYs:
Wielkość narzutu dla każdego PHY jest nieco inna. Preambuła ma 1 bajt w przypadku 1M PHY i 2 bajty w przypadku 2M PHY. Pole MIC jest polem opcjonalnym, które jest używane tylko dla połączeń szyfrowanych. Dla uproszczenia, rozważymy tylko połączenia nieszyfrowane – w przypadku szyfrowania, dodaje ono po prostu 4 bajty narzutu.
Dla LE Coded PHY, format pakietu wygląda następująco (ze specyfikacji Bluetooth 5.0 Vol 6, Part B, Section 2.2):
Kroki do obliczenia przepustowości (w Mbps):
Dla uproszczenia zakładamy, że:
- Szyfrowanie NIE jest włączone (pole MIC nie jest zawarte w pakiecie)
- Interesuje nas przepustowość dla jednego kierunku (np. Master to Slave), więc zakładamy, że drugi kierunek przesyła tylko puste pakiety
- Zapisy bez odpowiedzi (co pomogłoby w maksymalizacji przepustowości przy przesyłaniu dużych ilości danych
Kroki:
- Określenie używanego PHY i zanotowanie szybkości przesyłania surowych danych
E.g. dla 1M PHY -> 1 Mbps, dla Coded PHY i S=8 -> 125 kbps - Określ czas potrzebny na wysłanie jednego pakietu danych i pustego pakietu od odbiornika.
Czas, w którym można wysłać jeden pakiet danych będzie obejmował następujące elementy:Data_Packet_Time = Czas na przesłanie pustego pakietu + IFS + Czas na przesłanie właściwego pakietu danych + IFS.
Czas transmisji pustego pakietu można obliczyć w następujący sposób:Czas transmisji pustego pakietu = rozmiar pustego pakietu / szybkość transmisji danych surowych
Pusty pakiet będzie zawierał następujące pola:
Preamble + Adres dostępu + Nagłówek LL + CRC.
Dla 1M PHY, Preambuła będzie miała 1 bajt, a więc całkowity rozmiar pustego pakietu = 1 + 4 + 2 + 3 bajty = 10 bajtów = 80 bitów.
(dla 2M PHY, rozmiar pustego pakietu będzie miał 88 bitów, ponieważ Preambuła ma 2 bajty zamiast 1 bajtu).W oparciu o to, czas transmisji pustego pakietu 1M PHY będzie wynosił:
Czas transmisji pustego pakietu = rozmiar pustego pakietu / szybkość transmisji surowych danych = 80 bitów / 1 Megabit na sekundę = 80 mikrosekund
Pakiet danych będzie zawierał wszystkie pola wymienione w diagramie formatu pakietu z wyjątkiem pola MIC (szyfrowanie wyłączone).
Czas transmisji pakietu danych = rozmiar pakietu danych / surowa szybkość transmisji danych
Jeśli mamy włączone DLE, a ATT MTU jest równe maksymalnym bajtom dozwolonym w jednym pakiecie: 247 bajtów, to rozmiar pakietu danych możemy obliczyć jako:
Rozmiar pakietu danych = 1 + 4 + 2 + 4 + 247 + 3 bajty = 265 bajtów = 265*8 bitów = 2088 bitów
Czas transmisji pakietu danych = 2088 bitów / 1 Mbps = 2,088 mikrosekund
Data_Packet_Time = Czas na transmisję pustego pakietu + IFS + Czas na transmisję właściwego pakietu danych + IFS = 80 + 2*150 + 2088 = 2,468 mikrosekund
Dla porównania, w przypadku 2M PHY, byłoby to:Data_Packet_Time = Czas do transmisji pustego pakietu + IFS + Czas do transmisji rzeczywistego pakietu danych + IFS = 88/2 + 2*150 + (2 + 4 + 2 + 4 + 247 + 3)*8/2 = 1,392 mikrosek
Gdy DLE jest włączone i ATT MTU jest ustawione na mniej niż 247, kończymy z większym narzutem (ponieważ teraz dane większe niż ATT MTU zostają podzielone na więcej pakietów). Na przykład, powiedzmy, że mamy ATT MTU ustawione na 158, wtedy w celu przesłania 244 bajtów danych aplikacji, będziemy potrzebowali dwóch pakietów zamiast jednego, powodując spadek przepustowości z powodu zwiększonego narzutu bajtów, jak również zwiększonego IFS pomiędzy pakietami. W innym scenariuszu, możemy mieć DLE wyłączone (Payload size up to 27 bytes) i ATT MTU większe niż 27 bajtów. Tutaj, to również spowoduje więcej pakietów potrzebnych do wysłania dla tej samej ilości danych, powodując spadek przepustowości.Uwaga: Ta sama metoda obliczania wielkości danych i pustych pakietów, której użyliśmy powyżej może być użyta dla LE Coded PHY.
- Wyliczenie ile pakietów może być przesłanych podczas jednego interwału połączenia
To wyliczenie nie zawsze jest czysto matematyczne – będziesz musiał wziąć pod uwagę ograniczenia stosu i używanego urządzenia. iOS i Android mają maksima, które zmieniają się wraz z wersją OS, więc nie zawsze jest to łatwe do ustalenia. To powiedziawszy, na MCU, SDK dostawcy zwykle wymienia maksimum w swojej dokumentacji. Pomocne jest również wykonanie próby i błędów, aby dowiedzieć się, co obsługuje twoje konkretne urządzenie.Gdy już poznasz maksimum, możesz obliczyć maksymalną teoretyczną liczbę pakietów, która zmieści się w wybranym przedziale połączenia. Na przykład, gdybyśmy mieli interwał połączenia 7.5 milisekundy (najniższy dozwolony przez specyfikację), wtedy dla naszego przykładu powyżej (używając 1M PHY, DLE włączone):
Maksymalny # pakietów danych na interwał połączenia = , gdzie zaokrągla się do najwyższej liczby całkowitej (integer)Maksymalny # pakietów danych na interwał połączenia = = 3 pakiety
Zwykle, ta liczba nie jest realistyczna, jako że istnieją opóźnienia czasowe pomiędzy pakietami wysyłanymi w kolejnych zdarzeniach połączenia. Tak więc, dla naszego przykładu, pójdziemy z 2 pakietów zamiast 3.
- Gdy już ustaliliśmy maksymalny # pakietów danych, które mogą być przesyłane na interwał połączenia, możemy obliczyć przepustowość danych:Przepustowość danych = dane na interwał połączenia / interwał połączenia = Liczba pakietów danych na interwał połączenia * Rozmiar danych na pakiet / interwał połączenia
= 2 * 244 * 8 bitów / 7.5 milisekund = 520,533 bitów/sek ~= 508 kbps
Testowanie i obliczanie przepustowości danych pomiędzy dwoma zestawami rozwojowymi nRF52
W tym rozdziale przeprowadzimy wiele testów transferu danych, obliczymy przepustowość używając procedury, którą opisaliśmy wcześniej, a następnie porównamy ją ze zmierzoną przepustowością raportowaną przez aplikację uruchomioną na płytkach rozwojowych. Testy są przeprowadzane w oparciu o aplikację demo dostarczoną przez Nordic Semiconductor i przedstawioną w tym wpisie na blogu: Throughput and long range demo.
Kod źródłowy dla przykładu można znaleźć na stronie GitHub tutaj.
Case 1 (PHY: 1 Mbps, ATT MTU = 23 bajty, DLE: enabled, Connection interval: 7.5 milisecs)
Data throughput reported by firmware:
Time: 36.11 sekund upłynęło.
Przepustowość: 232,29 Kbit/s.
Wysłano 1048580 bajtów ładunku ATT.
Obliczona przepustowość danych:
Przy MTU ustawionym na 23 bajty, DLE nie ma rzeczywistego wpływu na przepustowość danych i rozmiary pakietów.
Czas na transmisję pakietu danych = rozmiar pakietu danych / prędkość transmisji danych surowych = 1 + 4 + 2 + 4 + 23 + 3 bajty / 1 Mbps= 37*8 bitów / 1 Mbps = 296 mikrosekund
Data_Packet_Time = Czas na transmisję pustego pakietu + IFS + Czas na transmisję rzeczywistego pakietu danych + IFS = 80 + 150 + 296 + 150 mikrosekund = 676 mikrosekund
Maksymalny # pakietów danych na interwał połączenia = = = = 11 pakietów
Całkowita ilość danych przesyłanych na interwał połączenia = 11 * 20 bajtów = 11 * 20 * 8 bitów = 1760 bitów
Przepustowość danych = Całkowita ilość danych przesyłanych na interwał połączenia/interwał połączenia = 1760 bitów / 7.5 milisekund = 234.67 Kbits/s
Jak widzimy, obliczona wartość i zmierzona wartość są całkiem bliskie.
Przypadek 2 (PHY: 2 Mbps, ATT MTU = 23 bajty, DLE: włączone, Interwał połączenia: 7.5 milisekund)
Przepustowość danych raportowana przez firmware:
Czas: upłynęło 27,23 sekundy.
Przepustowość: 307,96 Kbits/s.
Wysłano 1048580 bajtów ładunku ATT.
Obliczona przepustowość danych:
Czas na przesłanie pakietu danych = rozmiar pakietu danych / surowa szybkość transmisji danych = 2 + 4 + 2 + 4 + 23 + 3 bajty / 2 Mbps= 38*8 bitów / 2 Mbps = 152 mikrosekundy
Data_Packet_Time = Czas na przesłanie pustego pakietu + IFS + Czas na przesłanie rzeczywistego pakietu danych + IFS = 44 + 150 + 152 + 150 mikrosekund =. 496 mikrosekund
Maksymalny # pakietów danych na interwał połączenia = = = = 15 pakietów
Całkowita ilość danych przesyłanych na interwał połączenia = 15 * 20 bajtów = 15 * 20 * 8 bitów = 2400 bitów
Przepustowość danych = Całkowita ilość danych przesyłanych na interwał połączenia/interwał połączenia = 2400 bitów / 7.5 milisekund = 320 Kbits/s
Jak widzimy, obliczona wartość i zmierzona wartość są dość bliskie.
Przypadek 3 (PHY: 1 Mbps, ATT MTU = 158 bajtów, DLE: włączone, Interwał połączenia: 7.5 milisekund)
Przepustowość danych raportowana przez firmware:
Czas: upłynęło 17,53 sekundy.
Przepustowość: 478,36 Kbits/s.
Wysłano 1048730 bajtów ładunku ATT.
Obliczona przepustowość danych:
Czas na transmisję pakietu danych = rozmiar pakietu danych / prędkość transmisji danych surowych = 1 + 4 + 2 + 4 + 158 + 3 bajty / 1 Mbps= 172*8 bitów / 1 Mbps = 1376 mikrosekund
Data_Packet_Time = Czas na transmisję pustego pakietu + IFS + Czas na transmisję rzeczywistego pakietu danych + IFS = 80 + 150 + 1376 + 150 mikrosekund =. 1756 mikrosekund
Maksymalny # pakietów danych na interwał połączenia = = = = 4 pakiety
Całkowita ilość danych przesyłanych na interwał połączenia = 4 * 155 bajtów = 4 * 155 * 8 bitów = 4960 bitów
Przepustowość danych = Całkowita ilość danych przesyłanych na interwał połączenia/interwał połączenia = 4960 bitów / 7.5 milisekund = 661.33 Kbits/s
Przypadek 4 (PHY: 2 Mbps, ATT MTU = 247 bajtów, DLE: włączone, Interwał połączenia: 7.5 milisekund)
Przepustowość danych raportowana przez firmware:
Czas: upłynęło 8,45 sekundy.
Przepustowość: 992,07 Kbit/s.
Wysłano 1048712 bajtów ATT payload.
Obliczona przepustowość danych:
Czas na przesłanie pakietu danych = rozmiar pakietu danych / surowa szybkość transmisji danych = 2 + 4 + 2 + 4 + 247 + 3 bajty / 2 Mbps= 262*8 bitów / 2 Mbps = 1048 mikrosekund
Data_Packet_Time = Czas na przesłanie pustego pakietu + IFS + Czas na przesłanie rzeczywistego pakietu danych + IFS = 44 + 150 + 1048 + 150 mikrosekund =. 1392 mikrosekundy
Maksymalny # pakietów danych na interwał połączenia = = = = 5 pakietów
Całkowita ilość danych przesyłanych na interwał połączenia = 5 * 244 bajty = 5 * 244 * 8 bitów = 9760 bitów
Przepustowość danych = Całkowita ilość danych przesyłanych na interwał połączenia/interwał połączenia = 9760 bitów / 7.5 milisekund = 1301.33 Kbits/s
Uwaga: W dwóch ostatnich przypadkach, liczba pakietów na interwał połączenia jest mała i jakakolwiek różnica pomiędzy tym co obliczamy a tym co jest mierzone będzie miała duży wpływ na rzeczywistą przepustowość danych. Na przykład, jeśli liczba pakietów na interwał połączenia wyniesie 4 zamiast 5 w Przypadku 4, obliczona przepustowość wyniesie 1,041.1 Kbps zamiast 1,301.33 Kbps (co jest dużą różnicą i może tłumaczyć rozbieżność w liczbach).
Przypadek 5 (PHY: 2 Mbps, ATT MTU = 247 bajtów, DLE: włączone, Interwał połączenia: 50 milisekund)
Przepustowość danych zgłoszona przez firmware:
Czas: upłynęło 6,34 sekundy.
Przepustowość: 1322,33 Kbits/s.
Wysłano 1048712 bajtów ładunku ATT.
Obliczona przepustowość danych:
Czas na transmisję pakietu danych = rozmiar pakietu danych / surowa szybkość transmisji danych = 2 + 4 + 2 + 4 + 247 + 3 bajty / 2 Mbps= 262*8 bitów / 2 Mbps = 1048 mikrosekund
Data_Packet_Time = Czas na transmisję pustego pakietu + IFS + Czas na transmisję rzeczywistego pakietu danych + IFS = 44 + 150 + 1048 + 150 mikrosekund = 1392 mikrosekundy
.
Maksymalny # pakietów danych na interwał połączenia = = = = = 35 pakietów
Całkowita ilość danych przesyłanych na interwał połączenia = 36 * 244 bajty = 35 * 244 * 8 bitów = 68320 bitów
Przepustowość danych = Całkowita ilość danych przesyłanych na interwał połączenia/interwał połączenia = 70272 bity / 50 milisekund = 1366.4 Kbits/s
Przypadek 6 (PHY: 2 Mbps, ATT MTU = 247 bajtów, DLE: włączone, Interwał połączenia: 400 milisek)
Przepustowość danych zgłoszona przez firmware:
Czas: upłynęło 6,11 sekundy.
Przepustowość: 1371,82 Kbits/s.
Wysłano 1048712 bajtów ładunku ATT.
Obliczona przepustowość danych:
Czas na transmisję pakietu danych = rozmiar pakietu danych / surowa prędkość transmisji danych = 2 + 4 + 2 + 4 + 247 + 3 bajty / 2 Mbps= 262*8 bitów / 2 Mbps = 1048 mikrosekund
Data_Packet_Time = Czas na transmisję pustego pakietu + IFS + Czas na transmisję rzeczywistego pakietu danych + IFS = 44 + 150 + 1048 + 150 mikrosekund = 1392 mikrosekundy
.
Maksymalny # pakietów danych na interwał połączenia = = = = = 287 pakietów
Całkowita ilość danych przesyłanych na interwał połączenia = 287 * 244 bajty = 287 * 244 * 8 bitów = 560224 bity
Przepustowość danych = Całkowita ilość danych przesyłanych na interwał połączenia/interwał połączenia =560224 bity / 400 milisekund = 1400.56 Kbits/s
Optymalizacja dla maksymalnej przepustowości danych
Based on the factors we went over, we can note the following when optimizing for high data throughput:
- Always enable DLE
Obviously, if you’re using Bluetooth v4.1 or earlier, this is not a valid option. Ogólnie jednak, upewnij się, że włączyłeś DLE, aby zmaksymalizować wydajność danych pakietów do aplikacji - Użyj LE 2M PHY
Jeśli wiesz, że urządzenia na obu końcach obsługują Bluetooth 5, to wykorzystanie LE 2M PHY jest jednym z najlepszych sposobów na zmaksymalizowanie przepustowości danych aplikacji. Użycie LE 2M PHY pomoże również zredukować zużycie energii, więc upieczesz dwie pieczenie na jednym ogniu! - Użyj Powiadomień i Zapisów bez Odpowiedzi
Użycie tych pomoże usunąć wszelkie niepotrzebne pakiety przesyłane (w porównaniu do Wskazań i normalnych Zapisów, które wymagają od odbiorcy potwierdzenia każdego otrzymanego pakietu). - Wybierz wartość ATT MTU przynajmniej większą niż 247 bajtów
To zminimalizuje jakikolwiek narzut w bajtach pakietów. - Wybierz interwał połączenia, który pozwala na maksymalną liczbę pakietów na interwał połączenia
Pamiętaj jednak, że interwał połączenia wpływa na zużycie energii. Im krótszy interwał, tym więcej energii zużyje twoje urządzenie z powodu zwiększonego czasu włączonego radia. Należy również upewnić się, że nie wybierzemy zbyt dużego interwału, w przeciwnym razie pogorszy to wrażenia użytkownika (większy interwał połączenia skutkuje większymi opóźnieniami). Ostatnią rzeczą, którą należy wziąć pod uwagę są ograniczenia urządzeń w systemie w zakresie maksymalnej liczby obsługiwanych pakietów na interwał połączenia.
Podsumowanie & zamknięcie
Obliczone wartości, które wymieniliśmy powyżej są nadal teoretyczne i mogą nie pokrywać się ze zmierzoną przepustowością danych w praktyce i rzeczywistych środowiskach, ale nadal są dobrym punktem wyjścia i dają dobre wskazówki, czego można się spodziewać (przynajmniej dla maksimum). Zakłócenia i błędy transmisji/odbioru również wpływają na przepustowość danych (ponowne próby, utrata danych i zdarzenia związane z zamknięciem połączenia skutkują niższą przepustowością). Mogą one być spowodowane obecnością innych urządzeń wykorzystujących to samo pasmo 2,4 GHz co Bluetooth, większą odległością między urządzeniami, istnieniem przeszkód między urządzeniami i innymi…
.