Zadanie 13

Symulator

Symulator powstały w ramach zadania 13 umożliwia badanie predefiniowanych algorytmów jak i nowych komponentów wprowadzanych przez użytkownika. Modeluje on sieć radiową składającą się z dowolnej liczby węzłów. Jest to symulator typu kwazi-statycznego, co oznacza, że ruch obiektów jest w nim modelowany poprzez zmienność środowiska radiowego (zaniki szybkie). Symulator został napisany w taki sposób, aby możliwe było łatwe rozszerzanie jego funkcjonalności. Symulator został napisany w języku Python, wykorzystuje środowisko bazodanowe. Możliwe jest korzystanie z baz typu SQLite, PostgreSQL. Symulator składa się z kilku elementów tworzących wspólne środowisko. Poniższy schemat obrazuje części składowe środowiska symulacyjnego wraz z zależnościami pomiędzy poszczególnymi elementami.

Schemat środowiska symulacyjnego wraz z zależnościami pomiędzy poszczególnymi elementami

Najważniejsze elementy prac nad symulatorem wypisane są poniżej:
  1. Stworzenie modułu symulatora umożliwiającego szybką konfigurację parametrów
  2. Stworzenie obiektów przedstawiających węzły w sieci:
    • Warstwa fizyczna
    • Warstwa ramek
    • Warstwa pakietu
    • Węzły mogą należeć do predefiniowanych klas, bądź ich cechy składowe mogą być implementowane w zależności od stawianego zadania
  3. Stworzenie medium transmisyjnego przekazującego sygnały radiowe między węzłami
    • Zaimplementowane zaniki szybkie
    • Zaimplementowane zaniki wolne
    • Zaimplementowane straty propagacyjne, wyliczane wg modelu Indoor Pathloss 3GPP albo Extended Okumura-Hata, wraz z wyborem typu terenu [1]
  4. Stworzenie funkcjonalności odpowiedzialnej za automatyczne rozmieszczenie węzłów w sieci, w przestrzeni o dowolnie wybranych wymiarach lub w arbitralnym układzie heksagonalnym.
  5. Implementacja funkcjonalności realizującej generację pakietów do wysłania, lub dowolnych innych zdarzeń, w dwóch trybach:
  6. Tryb ciągły („full buffer”)
  7. tryb generacji zdarzeń z rozkładem Poissona
  8. Obydwa generatory napisano w taki sposób, aby umożliwić użytkownikowi łatwą rozszerzalność ich funkcjonalności.
  9. Stworzenie funkcjonalności odpowiedzialnej za zapisywanie wyników symulacji
    • Logowanie poszczególnych zdarzeń w sieci (zapis do bazy danych)
    • Logowanie stanu węzłów i medium transmisyjnego (zapis do bazy danych)
    • Zapisywanie wartości wyliczonych przez wybrane elementy sieci
  10. Implementacja dziennika zdarzeń umożliwiającego pracę symulatora w oparciu o interakcję między węzłami
  11. Synchronizacja generatorów losowych w taki sposób, aby symulacje były w pełni powtarzalne dla zadanego ziarna losowego symulacji
  12. Stworzenie modułu równoległego przetwarzania danych, umożliwiającego pracę symulatora w trybie wielowątkowym
  13. Implementacja odbiornika radiowego o zadanej czułości (zarówno moc jak i SNR)
  14. Implementacja mechanizmów przesyłania wiadomości pomiędzy węzłami
  15. Stworzenie buforów wiadomości umożliwiających odbieranie i przetwarzanie wiadomości odebranych przez węzeł
  16. Opracowano także dokumentacje symulatora, zawierającą, oprócz opisów komponentów służących modelowaniu sieci, także informacje dla użytkownika, pozwalające w prosty sposób uruchamiać, modyfikować lub generować własne eksperymenty. Symulator zawiera także przykładowe eksperymenty.

Zobacz też więcej informacji o symulatorze.