Testowanie sieci wątków z wizualizacją

1. Wstęp

5abd22afa2f2ee9a.png

Czym są Thread, OpenThread, OTNS i Jedwabne?

Thread to bezprzewodowy protokół sieci typu mesh oparty na adresach IP, który umożliwia bezpieczną komunikację między urządzeniami i chmurą. Sieci wątków mogą dostosowywać się do zmian topologii, aby uniknąć jednego punktu awarii.

OpenThread to nowe rozwiązanie wprowadzone przez Google jako open source. Mimo małego rozmiaru kodu i pamięci operacyjnej OpenOpen obsługuje wszystkie funkcje zdefiniowane w specyfikacji wątku.

Symulator sieci OpenThread (OTNS) może służyć do symulowania sieci wątkowych przez uruchamianie symulowanych węzłów OpenThread na platformach posix. OTNS zapewnia łatwy w użyciu interfejs internetowy (OTNS-Web), który umożliwia wizualizację i obsługowanie symulowanych sieci sieciowych.

Silk to w pełni zautomatyzowana platforma testowa do weryfikowania funkcji, funkcji i wydajności systemu na rzeczywistych urządzeniach.

Czego się dowiesz

  • Platforma weryfikacji funkcji OpenThread: jedwab
  • Tworzenie OpenOpen dla prawdziwych urządzeń z włączoną funkcją OTNS
  • Interfejs OTNS-Web służy do monitorowania stanu sieci wątków tworzonej przez uruchamianie jedwabnych testów.

labwiczenia te skupiają się na użyciu jedwabiu z OTNS. Nie omawiamy innych funkcji jedwabiu ani OTNS.

Niezbędne elementy

Sprzęt:

  • 6 nordic Semiconductor nRF52840 deweloprów
  • 6 kabli USB do micro USB, aby połączyć płytki
  • hub USB

Oprogramowanie:

Wymagania wstępne:

2. Wymagania wstępne

Wykonaj podstawowe ćwiczenia z programowania

Sprawdzam wymagania wstępne pakietu

Sprawdźmy, czy spełnione są wszystkie wymagania wstępne.

  1. Uruchom which otns, aby sprawdzić, czy plik wykonywalny otns może być przeszukiwany w $PATH.
  2. Uruchom program which wpantund, aby sprawdzić, czy program wpantund jest dostępny.
  3. Sprawdź, czy są dostępne pakiety narzędzi ARM GNU, J-Link i nrfjprog.
  4. Sprawdź, czy można utworzyć plik binarny OpenThread, uruchamiając polecenie make -f examples/Makefile-nrf52840 w folderze openthread.

Uwaga: w dokumentacji w linku znajdziesz wskazówki konfiguracji. Warunek wstępny nr 1 toSymulacja sieci wątków za pomocą OTNS oraz inne osobyUtwórz sieć wątków z płytami nRF52840 i OpenThread danych

3. Konfiguracja jedwabiu

Aby skopiować Jedwab i skonfigurować środowisko, uruchom następujące polecenia w katalogu źródłowym:

$ git clone https://github.com/openthread/silk.git
$ cd silk
$ ./bootstrap.sh
$ sudo make install-cluster

Zdefiniuj plik konfiguracji sprzętowej

Aby umożliwić aplikacji Silk zbieranie dostępnych zasobów sprzętowych do testowania połączonych z maszyną, zdefiniuj plik hwconfig.ini w takim formacie:

[DEFAULT]
ClusterID: 0
LayoutCenter: 300, 300
LayoutRadius: 100

[Dev-8A7D]
HwModel: Nrf52840
HwRev: 1.0
InterfaceSerialNumber: E1A5012E8A7D
USBInterfaceNumber: 1
DutSerial: 683536778

Narzędzie o nazwie usbinfo jest zainstalowane jako część Jedwabiu, dzięki czemu można znaleźć numer seryjny i numer interfejsu USB. DutSerial to numer SN wydrukowany na elemencie lub wyświetlany przez usbinfo dla produktów J-Link.

Pola LayoutCenter i LayoutRadius w sekcji [DEFAULT] określają kształt układu podczas wyświetlania urządzeń w interfejsie internetowym. Na początek ustaw wartości opisane tutaj.

Następnie określa sekcję dla każdego urządzenia testowego i dostarcza odpowiednie informacje sprzętowe.

4. Kompilowanie OpenOpen z włączonym OTNS

Obraz budynku i miganie

Domyślnie urządzenia OpenThread nie emitują komunikatów OTNS. Aby umożliwić deweloperom emitowanie komunikatów o stanie do interfejsów logów niezbędnych do wizualizacji OTNS, uruchom następujące polecenie w katalogu źródłowym OpenThread, by utworzyć obraz FTD i przekonwertować go na format szesnastkowy.

$ git clone https://github.com/openthread/ot-nrf528xx.git --recursive
$ cd ot-nrf528xx
$ ./script/bootstrap
$ ./script/build nrf52840 USB_trans -DOT_COMMISSIONER=ON -DOT_JOINER=ON -DOT_OTNS=ON
$ cd ./build/bin
$ arm-none-eabi-objcopy -O ihex ot-ncp-ftd ot-ncp-ftd.hex

Aby migać na płytkach, postępuj zgodnie z instrukcjami w kroku 4labwiczenia z programowania w sieci wątków do użycianrfjprog danych Następnie podłącz wszystkie płytki przez port USB nRF do hosta. Ten sam zestaw kabli USB do micro USB może być odłączony od portów J-Link i portów USB nRF na płytach deweloperskich nRF52840. W przypadku tych zaledwie 6 kabli można przeprowadzić test. Aby uniknąć problemów, użyj 12 kabli i podłącz do obu portów.

5. Działanie serwera OTNS w trybie rzeczywistym

Uruchamianie OTNS z parametrami domyślnymi pozwala użytkownikowi symulować sieć wątków. Aby użyć go jako narzędzia do wizualizacji w rzeczywistych sieciach fizycznych, uruchom go za pomocą:

otns -raw -real -ot-cli otns-silk-proxy

Te argumenty informują OTNS, że spodziewane są komunikaty gRPC i UDP, które opisują, jak powinna być wizualizowana sieć wątków, zamiast uruchamiać wiele procesów ot-cli w celu symulowania sieci. Przeglądarka powinna automatycznie otworzyć stronę wizualizacji z pustym miejscem roboczym.

4dd5b41bf7e71334.png

6. Uruchamianie spraw testowych jedwabiu z obsługą OTNS

Silk to w pełni zautomatyzowana platforma testowa służąca do weryfikowania funkcji, funkcji i wydajności systemu na rzeczywistych urządzeniach. Instrukcje w projekcie README wyjaśniają, jak z niego korzystać.

Plik silk_run_test.py w lokalizacji silk/unit_tests zawiera przewagę. Silk zapewnia obsługę OTNS podczas uruchamiania przypadku testowego. Usługa trybu OTNS działa już lokalnie, więc wystarczy, że zmodyfikujesz plik silk_run_test.py przy użyciu odpowiednich lokalizacji dla wyjściowego pliku dziennika, wpisanych skryptów testowych i pliku hwconfig.ini. Argument -s localhost informuje Silk o wysyłaniu wiadomości OTNS do localhost.

Można na przykład przeprowadzić test o nazwie ot_test_form_network.py, stosując następujące modyfikacje pliku silk_run_test.py. /opt/openthread_test/ to domyślna ścieżka pliku wyjściowego logu i pliku konfiguracyjnego używana przez Silk, ale możesz użyć dowolnej ścieżki.

silk_run_test.py

import datetime
import os

from silk.tests import silk_run

RESULT_LOG_PATH = '/opt/openthread_test/results/' + 'silk_run_' + \
                  datetime.datetime.today().strftime('%m-%d') + '/'
CONFIG_PATH = '/opt/openthread_test/'

os.chdir('~/src/silk/silk/tests/')

timestamp = datetime.datetime.today().strftime('%m-%d-%H:%M')

run_log_path = RESULT_LOG_PATH + 'test_run_on_' + timestamp + '/'

argv = [
    'tests/silk_run.py',
    '-v2',
    '-c', CONFIG_PATH + 'hwconfig.ini',
    '-d', run_log_path,
    '-s', 'localhost',
    'ot_test_form_network.py'
]

silk_run.SilkRunner(argv=argv)

Wizualizacja topologii utworzonej sieci pojawi się w interfejsie internetowym OTNS.

ee443b66e0a6620b.png

W lewym górnym rogu widoczne są statystyki wizualizacji, wersja OT i tytuł testu. W lewym dolnym rogu znajdują się elementy sterujące okna dziennika pokazanego po prawej stronie. Początkowo węzły są dodawane, ale nie jest tworzona żadna sieć. W trakcie testu zmieniają się tryby i role każdego węzła. Powstają też linki.

5C38E2C72519E620.PNG

7. Gratulacje

Gratulacje! Udało Ci się przeprowadzić test jedwabiu na fizycznych urządzeniach nici i zwizualizować go za pomocą OTNS.

Test jedwabiu został wykonany przy użyciu płytek deweloperskich z oprogramowaniem układowym obsługującym OTNS. Zarząd zgłasza swój stan serwerowi Jedwab, który monitoruje i zbiera je wszystkie oraz wysyła do usługi OTNS wraz z innymi informacjami testowymi. OTNS działające w trybie rzeczywistym wizualizują sieć Thread w interfejsie internetowym.

Co dalej?

Spróbuj uruchomić inne przypadki testowe OpenThread zawarte w pakiecie Jedwabiu.

Więcej informacji

Różne zasoby OpenThread znajdziesz w openthread.io i Silk.

Dokumenty referencyjne