Symulator

badanie sieci radiowych

Założenia




W trakcie realizacji projektu powstał symulator sieci radiowej, umożliwiający efektywne testowanie algorytmów z uwzględnieniem różnych charakterystyk badanych sieci. Symulator wyposażono w kilka modeli kanału radiowego z parametryzowanymi mechanizmami propagacji sygnałów. Symulator jest typu kwazi-statycznego: ruch obiektów jest modelowany poprzez zmienność środowiska radiowego (zaniki szybkie).
Modułowa budowa symulatora umożliwia tworzenie własnego kodu implementującego algorytmy sieciowe, kontrolę geograficznego środowiska (rozmieszczenia węzłów), oraz pisanie własnych procedur raportowania i obróbki wyników symulacji.
Symulator został napisany w języku Python, wykorzystuje środowisko bazodanowe. Możliwe jest korzystanie z baz typu SQLite, PostgreSQL oraz MySQL, przy czym ta ostatnia jest zalecana.
Poniżej przedstawiamy tylko najważniejsze elementy symulatora. Dokładniejszy opis jest dostępny w dokumencie do pobrania.

Implementacja

Symulator składa się z kilku odrębnych elementów, jak na rysunku powyżej:

  1. Kod symulatora - niezmienny element środowiska.
  2. Skrypty obsługi bazy danych
  3. Plik eksperymentu - tworzony niezależnie przez użytkownika kod w języku Python implementujący badany algorytm
  4. Plik konfiguracji eksperymentu - plik JSON definiujący zakresy dla poszczególnych parametrów badanego algorytmu
  5. Baza danych - zewnętrzny silnik bazodanowy, przechowuje parametry i wyniki (przebieg każdego wykonanego eksperymentu)

Modelowanie systemu

Symulator działa w oparciu o dynamiczny dziennik zdarzeń. W pamięci przechowywane są dyskretne ciągi zdarzeń, z których każde zostanie wykonane w określonym momencie czasu.
W celu modelowania kanału radiowego, zaimplementowano możliwe do wyboru następujące mechanizmy:

Wielowątkowość

Przeprowadzenie symulacji danego algorytmu z różnymi wartościami parametrów (np. tłumienie, rozmieszczenie węzłów, itp.) możliwe jest do wykonania równolegle -- poszczególne instancje badanego problemu są uruchamiane w osobnych wątkach.

API

W symulatorze stworzono także API (Application Programming Interface) umożliwiające zaprogramowanie nowego algorytmu z zestawu narzędzi istniejących w symulatorze. Użytkownik nie znający całości kodu symulatora może w prosty sposób określić środowisko symulacyjne, manipulować parametrami radiowymi węzłów a także dodawać własne algorytmy modyfikujące lub rozszerzające zachowanie węzłów radiowych.

Literatura

  1. Jakes, W. C. (1974). Microwave Mobile Communications: strona wydawcy
  2. 3GPP. TR 36.814 v 900 Evolved Universal Terrestrial Radio Access (E-UTRA); Further advancements for E-UTRA physical layer aspects. (link)
  3. European Communications Office. SEAMCAT Handbook, 2010 (wersja online)