Poprawa efektywności roamingu w standardzie IEEE802.11 z
Transkrypt
Poprawa efektywności roamingu w standardzie IEEE802.11 z
Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut Informatyki PRACA DYPLOMOWA MAGISTERSKA Marcin Harasimczuk Poprawa efektywności roamingu w standardzie IEEE802.11 z wykorzystaniem interfejsów równoległych Opiekun pracy dr inż. Jacek Wytrębowicz Ocena: ..................................................... ................................................................. Podpis Przewodniczącego Komisji Egzaminu Dyplomowego Kierunek: Informatyka Specjalność: Inżynieria Systemów Informatycznych Data urodzenia: 1988.01.28 Data rozpoczęcia studiów: 2012.02.20 Życiorys Urodziłem się 28 stycznia 1988 roku w Łodzi. Od 2004 roku uczęszczałem do L LO im. Ruy Barbosy w Warszawie. W 2007 roku ukończyłem szkołę średnią. Od lutego 2008 roku podjąłem studia na Wydziale Elektroniki i Technik Informacyjnych Politechniki Warszawskiej na kierunku Informatyka i specjalności Inżynieria Systemów Informatycznych. Od lutego 2012 roku podjąłem studia II stopnia na Wydziale Elektroniki i Technik Informacyjnych Politechniki Warszawskiej na kierunku Informatyka i specjalności Inżynieria Systemów Informatycznych. Od czerwca 2012 roku rozpocząłem pracę zawodową w firmie Newterm. ....................................................... Podpis studenta EGZAMIN DYPLOMOWY Złożył egzamin dyplomowy w dniu ..................................................................................20__ r z wynikiem ................................................................................................................................... Ogólny wynik studiów: ................................................................................................................ Dodatkowe wnioski i uwagi Komisji: .......................................................................................... ....................................................................................................................................................... ....................................................................................................................................................... STRESZCZENIE Celem niniejszej pracy jest zbadanie możliwości poprawy efektywności roamingu stacji klienckiej standardu IEEE802.11 z zastosowaniem interfejsów równoległych. Zastosowanie interfejsów równoległych polega na zwieloktronieniu komponentów systemu komputerowego odpowiedzialnych za komunikację w standardzie IEEE802.11. W ramach badań zaimplementowano modele symulacyjne sterujące zachowaniem dodatkowych interfejsów komunikacji sieciowej. Celem implementacji jest niwelacja opóźnień wynikających z etapu sondowania łącza procedury roamingu stacji klienckiej. Praca zawiera analizę porównawczą wyników symulacyjnych oraz studium wykonalności rzeczywistego rozwiązania. Słowa kluczowe: standard IEEE802.11, roaming, interfejsy komputerowe IMPROVING THE EFFICIENCY OF ROAMING IN IEEE802.11 NETWORKS USING PARALLEL INTERFACES The aim of this study is to investigate the possibility of improving the efficiency of roaming procedures by using parallel interfaces IEEE802.11. The use of the parallel interfaces consists of multiplying the number of components of a computer system responsible for communication in the IEEE802.11 standard. This study describes the implementation of simulation models used for controlling additional network interface components. The goal of implementation is to reduce the overhead introduced by scanning procedure performed by a client station during roaming. This study contains comparative analysis of simulation results as well as feasibility study of a real-life solution. Keywords: IEEE802.11 standard, roaming, computer interfaces Spis treści 1 Cel pracy 7 2 Wieloaspektowa analiza zjawiska roamingu 2.1 Wykorzystywane ramki modelu OSI . . . . . . . . . . . . . . . . . . . . 2.2 Oś czasowa procedury roamingu . . . . . . . . . . . . . . . . . . . . . . 2.2.1 Wyzwalanie procedury roamingu . . . . . . . . . . . . . . . . . . 2.2.2 Sondowanie łącza . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.3 Uwierzytelnianie i przyłączenie w punkcie dostępowym . . . . . . 2.3 Efektywność procedury roamingu . . . . . . . . . . . . . . . . . . . . . . 2.3.1 Pojęcie scenariusza doświadczalnego . . . . . . . . . . . . . . . . 2.3.2 Czas trwania sekwencji roamingu . . . . . . . . . . . . . . . . . . 2.3.3 Ilość sekwencji roamingu w ramach scenariusza doświadczalnego 2.3.4 Efektywność roamingu stacji klienckiej . . . . . . . . . . . . . . . . . . . . . . . . . 9 9 13 13 15 17 23 23 24 26 28 . . . . . 30 31 31 32 32 33 . . . . . . 36 36 38 42 46 48 49 5 Scenariusze doświadczalne dla modeli symulacyjnych 5.1 Tworzenie scenariuszy doświadczalnych w środowisku OMNet++ . . . . . . . 5.2 Sieć bazowa scenariuszy symulacyjnych . . . . . . . . . . . . . . . . . . . . . . 52 52 54 3 Projekt procedury interfejsów równoległych 3.1 Stos protokołu IEEE802.11 . . . . . . . . . . 3.2 Definicja pojęcia interfejsów równoległych . . 3.3 Projekt metody wyzwalania przez sondowanie 3.3.1 Decyzje projektowe . . . . . . . . . . . 3.3.2 Projekt jednostki zarządzającej SME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Implementacja modeli interfejsów równoległych w strukturach INET 4.1 Struktura modeli INET . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Implementacja rozwiązania wyzwalania przez sondowanie . . . . . . . . . 4.2.1 Niezbędne modyfikacje modułu Ieee80211MgmtSTA . . . . . . . . 4.2.2 Implementacja modułu Ieee80211AgentScanSTA . . . . . . . . . . 4.2.3 Implementacja modułu Ieee80211AgentCommSTA . . . . . . . . . 4.2.4 Implementacja modułu Ieee80211AgentScanHystSTA . . . . . . . . 4 . . . . . . . . . . . . . . . . . . . . . 5.3 5.4 Konfiguracje pośrednie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Docelowe scenariusze doświadczalne . . . . . . . . . . . . . . . . . . . . . . . 6 Analiza porównawcza wyników symulacji 6.1 Metodologia analizy porównawczej . . . . 6.1.1 Narzędzie elog-parser . . . . . . . 6.1.2 Skrypt run experiments . . . . . . 6.2 Wyniki dla scenariuszy symulacyjnych . . 62 64 . . . . 67 67 68 69 70 7 Podsumowanie oceny rozwiązania 7.1 Wnioski na temat wyników analizy porównawczej . . . . . . . . . . . . . . . . 7.2 Wnioski z procesu analizy, projektowania i implementacji rozwiązania . . . . 7.3 Kierunki rozwoju . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 75 76 77 A Załączniki A.1 Odtworzenie środowiska symulacyjnego. . . . . . . . . . . . . . . . . . . . . . 79 79 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rozdział 1 Cel pracy Celem niniejszej pracy jest zbadanie możliwości poprawy efektywności roamingu stacji klienckiej standardu IEEE802.11 z zastosowaniem interfejsów równoległych. Roaming jest procedurą przełączania się stacji klienckiej między punktami dostępowymi sieci bezprzewodowej WLAN (ang. wireless local area network ). Pojęcie interfejsów równoległych polega na zastosowaniu zwielokrotnionych komponentów typu NIC (ang. network interface controller ). Zwielokrotnienie komponentów NIC pozwala na przekroczenie fizycznych ograniczeń wpływających na efektywność roamingu w standardzie IEEE802.11. Podczas roamingu stacji klienckiej występuje konieczność wielokrotnej zmiany kanału pracy pojedynczego komponentu NIC w celu odnalezienia nowego punktu dostępowego. Każdy dodatkowy interfejs umożliwia stacji równoległą pracę na różnych częstotliwościach pasma, co niweluje potrzebę przedwczesnego przełączania kanału pracy komponentu NIC owocującego zerwaniem połączenia. Zagadnienie efektywności roamingu jest wyjątkowo istotne dla szeregu urządzeń mobilnych wykorzystujących standard IEEE802.11 jako narzędzie stałego oraz bezprzewodowego dostępu do zasobów sieciowych. W wyniku daleko idącej komputeryzacji standard IEEE802.11 znajduje zastosowanie nie tylko w przedmiotach osobistych, takich jak telefon lub zegarek, ale również w samochodach oraz samolotach bezzałogowych typu drone. Biorąc pod uwagę urządzenia o tak zróżnicowanej mobilności oraz fakt ograniczonego zasięgu anten radiowych, efektywność roamingu stacji staje się kluczowa dla utrzymania komunikacji sieciowej. Opisane potrzeby znajdują odwzorowanie w tekście standardu IEEE802.11-2012. Zatwierdzony tekst standardu z 2012 roku opisuje procedury szybkiego roamingu w trybie FT (ang. fast transition) oraz zawiera poprawkę IEEE802.11p dotyczącą metod przyspieszania uwierzytelniania w punkcie dostępowym dedykowaną dla rozwiązań typu WAVE (ang. wireless access in vehicular environments). Zwiększenie liczby interfejsów komunikacji bezprzewodowej urządzenia nie jest ani trudne, ani kosztowne. Istnieje szeroka gama komputerów typu router board dedykowanych dla klientów technicznych oraz zastosowań przemysłowych. Komputery router board posiadają porty typu PCI pozwalające na zwiększenie liczby kart radiowych. Zastosowanie interfejsów równoległych jest łatwiejsze w komputerach przenośnych posiadających wejścia kart rozszerzeń lub pełną obsługę komponentów NIC dla portów USB. Większość popularnych komputerów 7 SBS (ang. single-board computer ) posiada więcej niż jeden port USB. Obsługa komponentów NIC dla portów USB jest standardem w nowoczesnych systemach operacyjnych. Centralnym narzędziem, użytym do prezentowanych w pracy badań, jest środowisko symulacyjne OMNet++ oraz zestaw modeli sieci komunikacyjnych INET. Źródła projektu INET są otwarte i udostępniane na zasadzie GNU LGPL. Modele zostały wybrane ze względu na możliwość bezpośredniej ingerencji w kod oraz udokumentowaną i potwierdzoną przykładem symulację zjawiska roamingu mobilnej stacji klienckiej. Poprawności modeli INET dowodzi publikacja [3]. Symulator OMNet++ bazuje na popularnym środowisku Eclipse oraz udostępnia graficzny interfejs przebiegu symulacji pomocny w pracy z modelami. Implementację modeli poprzedza projekt procedury interfejsów równoległych osadzony w ramach możliwych zachowań stacji standardu IEEE802.11. Dodatkowo, moja praca zawiera studium wykonalności hipotetycznej implementacji rzeczywistego rozwiązania w wybranym środowisku. 8 Rozdział 2 Wieloaspektowa analiza zjawiska roamingu Niniejszy rozdział skupia się na zjawisku roamingu stacji klienckiej w sieciach 802.11. Prezentuję szczegółowy opis procedury roamingu w oparciu o tekst standardu IEEE802.11 oraz obserwacje przebiegu scenariuszy doświadczalnych. Scenariusze doświadczalne przeprowadzone zostały z użyciem sprzętu rzeczywistego oraz modeli symulacyjnych. Przedstawiona analiza zjawiska roamingu jest wielopoziomowa oraz wieloaspektowa. Dążę do wyznaczenia osi czasowej szeregującej następujące po sobie scenariusze wymiany ramek składające się na ogół procedury. Przebieg roamingu opisuję z punktu widzenia wymiany ramek warstw modelu OSI (ang. Open Systems Interconnection model ). Poszczególne scenariusze zamykam w bloki opisujące możliwe wariacje wpływu wywieranego na efektywność roamingu. Bazując na dostępnych źródłach dokonuję jasnego rozgraniczenia między zaleceniami standardu, a elementami wprowadzonymi przez producentów urządzeń. 2.1 Wykorzystywane ramki modelu OSI Poszczególne etapy procedury roamingu sprowadzam do diagramów interakcji między stacją kliencką i punktem dostępowym. Diagramy interakcji obrazują wymianę podstawowych jednostek informacyjnych protokołu warstwy, na której poziomie rozgrywa się dany scenariusz. Jednostki te będę dalej nazywał ramkami. Fakt, iż tekst standardu IEEE802.11 dotyczy warstwy fizycznej oraz protokołu MAC (ang. media access control ) implikuje opis roamingu z użyciem ramek protokołu warstwy łącza danych (ang. data link layer ). Należy jednak wziąć pod uwagę, iż z punktu widzenia modelu OSI można rozróżnić dwa przypadki roamingu: – Roaming na poziomie łącza danych - w warstwie drugiej (L2 ), – Roaming na poziomie sieciowym - w warstwie trzeciej (L3 ). 9 Przypadek L2 występuje każdorazowo, a przypadek L3 gdy punkty dostępowe znajdują się w różnych sieciach (w sensie warstwy trzeciej). Proponuję tutaj określenie świadomości roamingu, które mówi o istnieniu w danej warstwie protokołów opisujących zjawisko roamingu. Wykorzystując to pojęcie można stwierdzić, iż warstwa trzecia posiada świadomość roamingu, gdy protokół IP korzysta z rozszerzeń MIP (ang. mobile IP ). Rozszerzenie MIP pozwala stacji klienckiej na zachowanie adresu IP podczas migracji między sieciami. W przeciwnym przypadku roaming L3 zaowocuje jedynie utratą połączenia (sesji w sensie protokołu TCP ). Łatwo zauważyć propagację wpływu roamingu L2 i L3 w górę stosu protokołów modelu OSI. Warstwy pozbawione świadomości roamingu potraktują opisywane zjawisko jako brak połączenia (w skutek zaimplementowanego mechanizmu niedoczasu) lub utratę ramki (w zależności od protokołu). Wnioskując, określenie efektywności roamingu wymaga analizy jego wpływu na przestrzeni wszystkich warstw. Poniżej przedstawiam zestawienie typów ramek protokołu IEEE802.11 MAC 2.1 2.2, WPA2 2.3 2.4 oraz IEEE802.1X 2.5 2.6. Zestawienie zawiera nazwy, którymi posługuję się na diagramach interakcji. Ramki te wybrałem, ze względu na przydatność w analizie zjawiska roamingu. Tablica 2.1: Ramki protokołu IEEE802.11 MAC. Skrót Nazwa Opis Data Data frame Ack Acknowledgement frame Ramka przenosząca dane z wyżych warstw modelu. Ramka potwierdzająca bezbłędne odebranie ramki typu Data. Beacon Beacon frame Rozgłoszeniowa ramka okresowo wysyłana przez punkt dostępowy. AssocReq Association request frame Ramka wnosząca o podłączenie do punktu dostępowego (używana przy powtórnej asocjacji między różnymi BSS ). AssocRsp Association response frame Ramka potwierdzająca połączenie z punktem dostępowym. Disassoc Disassociation frame Ramka wnosząca o rozwiązanie asocjacji z punktem dostępowym (pozwala na zamknięcie połączenia z gracją). 10 Tablica 2.2: Ramki protokołu IEEE802.11 MAC. Skrót Nazwa Opis AuthReq Authentication request frame Ramka wnosząca o uwierzytelnianie w punkcie dostępowym. AuthRsp Authentication frame Ramka potwierdzająca uwierzytelnianie w punkcie dostępowym. Deauth Deauthentication frame Ramka wnosząca o zamknięcie bezpiecznego kanału wymiany danych. ProbeReq Probe request frame Zapytanie o dostępność i parametry punktu dostępowego na danym kanale. ProbeRsp Probe response frame Ramka odpowiedzi punktu dostępowego. response Tablica 2.3: Ramki protokołu WPA2. Skrót Nazwa Opis EAPOL-Key (ANonce) Extended authentication protocol over LAN key frame Ramka protokołu WPA2 przekazująca stacji wnoszącej o uwierzytelnianie informacje niezbędne do obliczenia klucza PTK (ang. Pairwise Transient Key). EAPOL-Key (SNonce+MIC) Extended authentication protocol over LAN key frame Ramka protokołu WPA2 przekazująca punktowi dostępowemu informacje niezbędne do zabezpieczenia tożsamości stacji klienckiej. 11 Tablica 2.4: Ramki protokołu WPA2. Skrót Nazwa Opis EAPOL-Key (GTK+MIC) Extended authentication protocol over LAN key frame) Ramka protokołu WPA2 przekazująca stacji wnoszącej o uwierzytelnianie klucz GTK (ang. Group Transient Key) oraz informacje niezbędne do zabezpieczenia tożsamości. EAPOL-key (ACK) Extended authentication protocol over LAN key frame Ramka protokołu WPA2 przekazująca punktowi dostępowemu potwierdzenie odebrania ramki EAPOLKey(GTK+MIC). Tablica 2.5: Ramki protokołu IEEE802.1X Skrót Nazwa Opis EAP-Request (ID) Extended authentication protocol request frame Ramka wymuszająca na stacji klienckiej rozpoczęcie negocjacji klucza PMK z serwerem uwierzytelniania poprzez podanie informacji identyfikującej. EAP-Response (ID) Extended authentication protocol response frame Ramka przekazująca punktowi dostępowemu informacje służącą do identyfikacji klienta na serwerze uwierzytelniania. EAP-Request (Method) Extended authentication protocol request frame Ramka opakowująca wymuszenie metody uwierzytelniania EAP narzuconej przez serwer uwierzytelniania. EAP-Success Extended authentication protocol success frame Ramka opakowująca potwierdzenie powodzenia uwierzytelniania stacji klienckiej na serwerze. 12 Tablica 2.6: Ramki protokołu IEEE802.1X Skrót Nazwa Opis Access-Request (ID) Ramka przenosząca rozpakowane dane identyfikujące stację kliencką z punktu dostępowego. Access-Challenge Ramka wymuszająca konkretną metodę uwierzytelniania EAP. Access-Accept Ramka potwierdzająca powodzenie wybranej metody uwierzytelniania EAP. 2.2 Oś czasowa procedury roamingu Analiza efektywności roamingu jest łatwiejsza po uprzednim podzieleniu zjawiska na następujące po sobie etapy co prowadzi do powstania osi czasowej Rys. 2.1. Podejście to podyktowane jest zmiennością obciążenia nakładanego na procedurę zakończenia lub rozpoczęcia komunikacji z punktem dostępowym. Obciążenie to zależy od technik lub rozszerzeń standardu IEEE802.11, które mogą znacznie skomplikować lub strywializować poszczególne etapy roamingu. Procedurę przełączania stacji klienckiej między punktami dostępowymi można przedstawić w następujących krokach: – Wyzwalanie procedury roamingu, – Sondowanie łącza, – Uwierzytelnianie w punkcie dostępowym, – Przyłączenie do punktu dostępowego. Wyzwalanie Sondowanie Przyłączenie Uwierzytelnianie t Rysunek 2.1: Oś czasowa zjawiska roamingu. W dalszej części rozdziału opiszę każdy z tych etapów oraz ocenię jego wpływ na zjawisko roamingu. 2.2.1 Wyzwalanie procedury roamingu Sposób podejmowania decyzji o zainicjowaniu roamingu nie jest ujęty w tekście standardu IEEE802.11. Podejście to otwiera drogę dla szeregu heurystyk stosowanych na tym etapie. 13 W rzeczywistości zastosowana technika zależy od producenta sprzętu lub nawet konkretnego modelu urządzenia z interfejsem radiowym. Decyzja ta zwykle podejmowana jest w stacji klienckiej. Do najpopularniejszych [5] metod można zaliczyć: – Przekroczenie limitu retransmisji ramek, – Niski poziom odbieranego sygnału RSSI (ang. received signal strength indicator ), – Niski poziom stosunku sygnału do szumu SNR (ang. signal to noise ratio), – Utrata określonej liczby ramek typu Beacon. Oczywiście, w przypadku mniej uniwersalnego podejścia, gdzie celem jest optymalizacja wyzwalania pod zadanym kątem, ograniczeniem jest jedynie liczba danych dostępnych na poziomie algorytmu decyzyjnego. Dostępne są propozycje optymalizujące czas przełączania stacji (z wykorzystaniem danych na temat prędkości i położenia) lub skupiające się na rozkładzie obciążenia punktów dostępowych (ang. load balancing). Na tym etapie za efektywne uznaję zerwanie połączenia z punktem dostępowym w sposób, który minimalizuje wpływ procedury roamingu na wyższe warstwy modelu OSI. Sprowadza się to do minimalizacji czasu jaki stacja straci w kolejnych krokach procedury. W przypadku metod bazujących na parametrach RSSI oraz SNR rozsądne wydaje się zastosowanie mechanizmu histerezy. Łatwo zauważyć, że brak histerezy może prowadzić do zbyt pochopnych reakcji na skoki mocy sygnału. W metodach wykorzystujących ilościowe pomiary utraconych ramek lub retransmisji, dodatkowo brana jest pod uwagę możliwość wystąpienia błędów ramki przy dużej mocy sygnału. Podejście to zapewnia możliwość ucieczki z kanałów o wysokim poziomie zakłóceń na danej częstotliwości. RSSI oraz SNR w standardzie IEEE802.11 Standard IEEE802.11 określa sposób przedstawiania mocy sygnału anteny odbiornika w postaci liczby całkowitej [1]. Pomiar ten nosi nazwę RSSI oraz należy do zakresu od 0 do RSSI Max. Standard nie określa wartości RSSI Max co pozwala producentom na ustalenie podziału o wybranej granularyzacji. Warto zauważyć, że nie podano sposobu tłumaczenia wartości RSSI na rzeczywiste jednostki mocy takie jak dBm lub mW [2]. Sterowniki interfejsów radiowych mogą wykorzystać parametr RSSI do określenia dwóch ważnych progów sygnału: – CCT (ang. clear channel treshold ): Poziom sygnału podczas nasłuchu jest bardzo niski - kanał można uznać za niezajęty, – RT (ang. roaming treshold ): Poziom sygnału zmierzonego podczas odbioru ramek z punktu dostępowego jest niski - należy rozpocząć roaming. Wartość parametru SNR związana jest ściśle z możliwością pomiaru szumu na interfejsie radiowym. Za przykład pomiaru szumu mogą posłużyć urządzenia firmy Atheros. Starsza 14 wersja otwartych sterowników urządzeń Atheros zakładała stały poziom szumu o wartości -95dBm. Oczywiście, z punktu widzenia tak dynamicznego zjawiska jak roaming przemieszczającej się stacji klienckiej stały poziom szumu nie wnosi dodatkowych korzyści. Nowsze wersje sterowników ath5k oraz ath9k wykorzystują okresowe pomiary wartości szumu oferowane przez obsługiwane karty. Porównywanie precyzji pomiarów zaproponowanych w rozwiązaniach fitmy Atheros, a wynikami oferowanymi przez analizator widma wychodzi poza zakres tej pracy. Wykorzystanie wartości SNR jako progu wyzwalania roamingu pozwala na wprowadzenie dodatkowej informacji o otoczeniu przemieszczającej się stacji. Limit retransmisji i utrata ramek Wyzwalanie roamingu z użyciem limitu retransmisji polega na sprawdzaniu ilości zgubionych ramek typu Ack dla kolejnych ramek Data. Podejście to może okazać się efektywne tylko jeśli na stacji klienckiej działają aplikacje, które żądają wysyłania danych z odpowiednim nasileniem i regularnością. Według standardu IEEE802.11 jedynie ramki Data wymagają potwierdzenia. Podejmowanie decyzji na temat roamingu po utraceniu określonej liczby kolejnych ramek typu Beacon zapewnia możliwość roamingu stacji, która nie wysyła żadnych ramek. Warto zauważyć, że korzystanie z ramek typu Beacon zmusza stację kliencką do akceptacji interwału wysyłania narzuconego przez parametr beaconInterval punktu dostępowego, który zwykle wynosi 100ms. Można wyobrazić sobie stację kliencką generującą ruch o dużym natężeniu, która w przypadku podjęcia decyzji na podstawie utraconych ramek Ack podjęłaby decyzję o roamingu w sposób bardziej efektywny. 2.2.2 Sondowanie łącza Po podjęciu decyzji o rozwiązaniu połączenia w skutek procedury wyzwalania roamingu stacja kliencka rozpoczyna poszukiwanie nowego punktu dostępowego. Brak połączenia występujący na tym etapie ma duży wpływ na wyższe warstwy modelu OSI. Częstotliwość pracy interfejsu radiowego jest ustawicznie zmieniana, a możliwość wymiany danych na pojedynczym kanale skutecznie uniemożliwia utrzymanie stałej komunikacji oraz wymianę ramek typu Data. Tekst standardu IEEE802.11 określa procedurę sondowania oraz wykorzystywane typy ramek. Warto zauważyć, że standard nie proponuje żadnej konfiguracji użytych w opisie parametrów czasowych oraz nie wskazuje algorytmu wyboru nowego punktu dostępowego [4] z listy znalezionych. Scenariusze sondowania łącza składają się z wymiany ramek typu ProbeReq, ProbeRsp oraz Beacon. Można rozróżnić następujące warianty sondowania łącza: – Aktywne z ustalonym SSID, – Aktywne rozgłoszeniowe (ang. broadcast), – Pasywne. 15 Sondowanie aktywne Sondowanie aktywne Rys. 2.2 polega na okresowej zmianie częstotliwości pracy interfejsu radiowego karty, wysłaniu ramki typu ProbeReq oraz oczekiwaniu przez określoną ilość czasu (limit nie jest określony w standardzie) na odpowiedź punktu dostępowego w postaci ramki ProbeRsp lub Beacon. Ramka ProbeReq może zostać zaadresowana do konkretnego SSID lub wysłana w sposób rozgłoszeniowy do wszystkich punktów dostępowych na danym kanale. Po nadaniu ramki typu ProbeReq stacja kliencka oczekuje na łączu przez okres czasu ograniczony wartością parametru minChannelTime. Brak odbioru ramki ProbeRsp lub Beacon w czasie minChannelTime pozwala stacji na zmianę częstotliwości pracy interfejsu radiowego. Odebranie ramki ProbeRsp lub Beacon w czasie minChannelTime oznacza, że stacja pozostanie na danej częstotliwości pracy interfejsu radiowego przez okres czasu ograniczony wartością parametru maxChannelTime. Pozostawanie na danym kanale ma za zadanie umożliwienie odbioru ramek od innych punktów dostępowych pracujących z tą samą częstotliwością. Określenie ustalonej nazwy SSID może uprościć działanie ostatecznego algorytmu wyboru. Klient AP ProbeReq Klient oczekuje nie dłużej niż minChannelTime. ProbeRsp Klient oczekuje jeszcze nie dłużej niż maxChannelTime. Rysunek 2.2: Sondowanie aktywne. Sondowanie pasywne Sondowanie pasywne Rys. 2.3 polega na okresowym przełączaniu częstotliwości radiowego interfejsu i oczekiwaniu na ramki typu Beacon. Czas oczekiwania na danym kanale ograniczony jest przez wartość parametru maxChannelTime. Tryb skanowania pasywnego uzależnia stację kliencką od powszechnie stosowanego interwału wysyłania ramek typu Beacon równego 100ms. Interwał ten staje się, w najgorszym przypadku, czasem jaki stacja musiałaby oczekiwać na danym kanale w celu otrzymania możliwych ramek typu Beacon. Łatwo zauważyć, że tryb pasywny znacznie zmniejsza ruch w medium transmisyjnym. Zwiększenie częstotliwości wysyłania ramek typu Beacon mogłoby mieć pozytywny wpływ na efektywność procedury roamingu, ale powszechnie stosowany interwał zdecydowanie wskazuje na procedurę sondowania aktywnego. 16 Klient AP Klient oczekuje na łączu. Beacon Klient oczekuje jeszcze do progu maxChannelTime. Rysunek 2.3: Sondowanie pasywne. Zakres częstotliwości Kolejnym aspektem sondowania jest badany zestaw częstotliwości. Tryb pasywny może być wykorzystany na częstotliwościach zabronionych dla danego regionu. Sondowanie można przyspieszyć specyfikując kolejność i ilość częstotliwości. Częstotliwości sondowane w trybie aktywnym zależą od regionu przypisanego do urządzenia. Niektóre urządzenia takie jak punkty dostępowe pozwalają na ręczne określenie regionu pracy. Określenie regionu pozwala na sondowanie tylko dozwolonych częstotliwości. Często sondowaniu podlegają jedynie nie nakładające się kanały pasma używanego w standardzie IEEE802.11. Problem wyboru punktu dostępowego Standard nie porusza kwestii wyboru nowego punktu dostępowego [9]. Podejście to wydaje się unikać zbędnych komplikacji protokołu, gdyż podobnie jak w przypadku wyzwalania procedury roamingu algorytm może optymalizować wiele różnych parametrów sieci (np. rozkład obciążenia punktów dostępowych). W większości oprogramowania stosuje się podejście minimalistyczne, które wykorzystuje opisany w standardzie parametr RSSI lub SNR do wyboru najlepszego punktu dostępowego z listy odnalezionych. Łatwo zauważyć, że w punktach granicznych wpływu dwóch punktów dostępowych poziomy SNR mogą być bardzo zbliżone. W takich miejscach najczęściej wyzwalana jest decyzja o roamingu co może zaowocować nieefektywnym wyborem nowego punktu dostępowego. 2.2.3 Uwierzytelnianie i przyłączenie w punkcie dostępowym Etap uwierzytelniania ma na celu utworzenie bezpiecznego kanału wymiany ramek typu Data między punktem dostępowym, a stacją kliencką. Podstawowe metody uwierzytelniania wykorzystują procedury wymiany ramek typu AuthReq oraz AuthRsp. W zależności od skomplikowania metody liczba wymienianych ramek typu AuthReq oraz AuthRsp wzrasta. Obecnie, metody oferujące zadowalający poziom bezpieczeństwa odkładają uwierzytelnianie 17 na czas po przyłączeniu do punktu dostępowego i stosują ramki typu EAPOL-Key. Sukcesy kolejnych prób przełamywania protokołów bezpieczeństwa standardu IEEE802.11 inicjowały wprowadzanie coraz bardziej rozbudowanych metod uwierzytelniania. Znaczne rozbudowanie niniejszego etapu wpływa szkodliwie na efektywność roamingu stacji klienckiej. Problem nie został przeoczony w kolejnych wersjach standardu IEEE802.11. Warto tutaj wspomnieć o rozszerzeniu IEEE802.11r-2008, które zostało włączone do tekstu standardu IEEE802.112012. Rozszerzenie IEEE802.11r pozwala obecnie stosowanym metodom uwierzytelniania na podłączenie informacji, która wcześniej wymieniana była przy pomocy wspominanych ramek EAPOL-Key do ramek typu AuthReq, AuthRsp, AssocReq oraz AssocRsp. Podejście to pozwala przeprowadzić rozszerzone uwierzytelnianie z wykorzystaniem liczby ramek odpowiadającej procedurze podstawowej. Z punktu widzenia wymiany ramek Rys. 2.4 przyłączenie stacji klienckiej do punktu dostępowego odpowiada wymianie ramek typu AssocReq oraz AssocRsp. Scenariusz ten nie zmienia się na przestrzeni różnych wersji standardu IEEE802.11. Przyłączenie do punktu dostępowego może być krokiem uwierzytelniania i powinno być analizowane w kontekście tej procedury. Klient AP AssocReq AssocRsp Rysunek 2.4: Przyłączenie do punktu dostępowego. Niniejszy rozdział opisuje możliwe scenariusze uwierzytelniania i dąży do analizy ich wpływu na efektywność roamingu stacji klienckiej. W swoich rozważaniach zdecydowałem się na pominięcie algorytmu WEP (ang. wired equivalent privacy). Stosowanie algorytmu WEP nie jest aktualnie zalecane ze względów bezpieczeństwa. Problemy z bezpieczeństwem zamykają możliwości rozwoju tej metody i powodują, że jej analiza ma obniżoną wartość. W roku 2006 najnowsze standardy bezpieczeństwa stały się obowiązkowe dla wszystkich certyfikowanych urządzeń implementujących standard IEEE802.11. Przymusowa certyfikacja oznacza, że metoda uwierzytelniania WPA (ang. Wi-Fi protected access) są spotykane głównie ze względu na kompatybilność ze starszym sprzętem. Trendy rozwoju zauważalne w kolejnych wersjach standardu IEEE802.11 wskazują, że prace związane ze zwiększeniem efektywności roamingu skupiają się rozwoju uwierzytelniania WPA2 (ang. Wi-Fi protected access II ). Wsparcie dla algorytmów WEP oraz WPA zauważalne w nowoczesnych urządzeniach ma charakter kompatybilności wstecznej. Analizowanie wpływu metod WEP oraz WPA na zwiększanie efektywności roamingu może mieć znacznie obniżoną wartość badawczą, gdyż głównym nurtem rozwoju standardu IEEE802.11 jest modyfikacja algorytmu WPA2. 18 Odrzucając opisane mechanizmy skupiam się na opisanej w standardzie IEEE802.112012 gałęzi RSNA (ang. robust security network association). Należy wspomnieć, iż algorytm WPA2 polega na implementacji podzbioru mechanizmów zebranych w RSNA, do których można zaliczyć: – Uwierzytelnianie typu open-system, – Porozumienie cztero-etapowe (ang. 4-way handshake), – Porozumienie klucza grupowego (ang. group key handshake), – Porozumienie cztero-etapowe w wersji FT (ang. fast transition), – Współdzielenie kluczy na zasadzie PSK (ang. pre-shared key), – Współdzielenie kluczy na zasadzie IEEE802.1X. Uwierzytelnianie open-system Najprostszą metodą jest uwierzytelnianie typu open-system Rys. 2.5. W celu zachowania poprawności należałoby tutaj mówić o procedurze identyfikacji. Metoda open-system nie służy ustaleniu bezpiecznego kanału wymiany informacji, lecz identyfikacji przy pomocy adresu MAC interfejsu bezprzewodowego. Uwierzytelnianie i przyłączenie wymaga w tym przypadku wymiany jedynie czterech ramek. Opis tej metody jest wartościowy ze względy na fakt, że jest ona dobrze odseparowanym etapem jako samodzielny algorytm uwierzytelniania oraz jako element składowy procedury uwierzytelniania WPA2. Metoda uwierzytelniania opensystem jest interesująca, gdyż narzuca pewnego rodzaju dolne ograniczenie na ilość niezbędnych kroków procedury uwierzytelniania i przyłączenia stacji klienckiej. Jest to minimalny scenariusz pozwalający na wymianę ramek typu Data i zakończenie procesu roamingu. Klient AP AuthReq AuthRsp AssocReq AssocRsp Rysunek 2.5: Uwierzytelnianie open-system. 19 Porozumienie cztero-etapowe Uwierzytelnianie z użyciem algorytmu WPA2 zakłada istnienie klucza nadrzędnego PMK (ang. pairwise master key). Klucz PMK jest sekretem stacji klienckiej oraz punktu dostępowego. Ryzyko związane z bezpośrednim stosowaniem klucza PMK jest wysokie. Porozumienie cztero-etapowe Rys. 2.6 służy ustaleniu klucza pochodnego PTK, na który składa się: – Oryginalny klucz PMK, – Losowa liczba jednorazowa ANonce (ang. authenticator nonce), – Losowa liczba jednorazowa SNonce (ang. supplicant nonce), – Adres MAC stacji klienckiej, – Adres MAC punktu dostępowego. Dodatkowo, w ramach porozumienia dokonuje się wymiany klucza grupowego GTK (ang. group transient key), który zabezpiecza komunikaty typu Broadcast oraz Multicast. Ze względu na okres ważności wymiana klucza grupowego zachodzi częściej. Wymiana klucza grupowego w postaci odseparowanego porozumienia (ang. group key handshake) może zajść jedynie po wstępnym porozumieniu cztero-etapowym. Porozumienie inicjowane jest przez punkt dostępowy, który przyjmuje rolę jednostki decydującej o powodzeniu uwierzytelniania (ang. authenticator ). Stacja kliencka przyjmuje rolę stacji wnoszącej o uwierzytelnianie (ang. supplicant). Punkt dostępowy wysyła do stacji klienckiej ramkę typu EAPOL-Key(ANonce) udostępniając swój składnik niezbędny do obliczenia klucza PTK. Stacja kliencka dokonuje obliczenia klucza i wysyła punktowi dostępowego ramkę typu EAPOL-Key(SNonce+MIC ) pozwalającą punktowi dostępowemu obliczyć PTK oraz sprawdzić integralność wiadomości przy pomocy liczby kontrolnej MIC. Powodzenie na tym etapie pozwala punktowi dostępowemu przejść do porozumienia klucza grupowego. Punkt dostępowy wysyła ramkę typu EAPOL-Key(GTK+MIC) zawierającą klucz grupowy oraz liczbę kontrolującą integralność MIC. Stacja kliencka potwierdza powodzenie procedury ramką typu EAPOL-Key(Ack). 20 Klient AP Uwierzytelnianie open-system. EAPOL-Key ANonce EAPOL-Key SNonce+MIC EAPOL-Key GTK+MIC EAPOL-Key ACK Rysunek 2.6: Porozumienie cztero-etapowe. Porozumienie klucza grupowego Jest to osobny scenariusz wymiany ramek Rys. 2.7, którego celem jest wymiana klucza grupowego między punktem dostępowym i stacją kliencką. Porozumienie jest inicjowane przez punkt dostępowy po upływie wyznaczonego czasu ważności klucza. Scenariusz składa się z wymiany dwóch ramek. Punkt dostępowy wysyła ramkę typu EAPOL-Key(GTK+MIC) zawierającą klucz grupowy oraz liczbę kontrolującą integralność MIC. Stacja kliencka potwierdza powodzenie procedury ramką typu EAPOL-Key(Ack). Klient AP Porozumienie cztero-etapowe oraz upłynęła ważność klucza grupowego. EAPOL-Key GTK+MIC EAPOL-Key ACK Rysunek 2.7: Porozumienie klucza grupowego. Porozumienie cztero-etapowe w wersji FT Zmiany zawarte w poprawce IEEE802.11r-2008 zostały włączone do tekstu standardu IEEE802.11-2012 pod hasłem FT (ang. fast trasition). Centralnym elementem poprawki jest redukcja wymiany ramek podczas ponownego uwierzytelniania. Ponowne uwierzytelnianie rozumiem jako przyłączenie do innego punktu dostępowego, który pracuje pod szyldem wspólnego ESS (ang. extended service set). Punkty dostępowe implementujące ESS wymagają 21 określonego w standardzie sposobu komunikacji DS (ang. distribution system). DS oznacza istnienie bezpośredniego, bliżej nie sprecyzowanego sposobu zestawienia komunikacji między punktami dostępowymi. Zastosowanie ESS powoduje, że procedura roamingu stacji klienckiej staje się niewidoczna dla interfejsu LLC (ang. logical link control ), który rozgranicza warstwę drugą i trzecią modelu OSI. Oczywiście nie należy mylić tej funkcjonalności ze wspomnianym wcześniej mobilnym adresem IP. Mechanizm ESS zakłada podłączenie punktów dostępowych do wspólnej sieci. Ramka otrzymana przez punkt dostępowy jest przekierowana z pomocą DS do innego punktu dostępowego, z którego klient korzysta w danej chwili. Mechanizm FT rozszerza dodatkowo funkcjonalność ESS przyspieszając procedurę uwierzytelniania podczas roamingu L2. Pełne porozumienie cztero-etapowe wymagane jest jedynie podczas wstępnego uwierzytelniania klienta w ESS. Poprawnie uwierzytelniona stacja kliencka wykonująca procedurę roamingu w zakresie ESS może skorzystać z opcji przyłączania FT (ang. fast trasition). W opcji FT wymiana klucza porozumienia cztero-etapowego odbywa się poprzez podpinanie potrzebnych informacji do ramek AuthReq, AuthRsp, AssocReq oraz AssocRsp. Uwierzytelnianie stacji klienckiej sprowadza się do scenariusza open-system. Współdzielenie kluczy na zasadzie PSK Dystrybucja nadrzędnego klucza uwierzytelniającego PMK na zasadzie PSK polega na wcześniejszym umieszczeniu go na wszystkich maszynach. Założenie o wcześniejszej dystrybucji klucza pozwala na pomiecie związanego z tym etapu podczas uwierzytelniania. Wcześniejsza dystrybucja klucza jest jednak uciążliwa przy większej ilości maszyn. Brak centralnego zarządzania kluczami może doprowadzić do dodatkowych utrudnień związanych z utrzymaniem bezpieczeństwa klucza. Współdzielenie kluczy na zasadzie IEEE802.1X Metoda współdzielenia opisana w standardzie IEEE802.1X zakłada istnienie centralnej maszyny zarządzającej kluczami. Punkty dostępowe mają możliwość komunikacji z maszyną uwierzytelniającą. Zastosowanie tej metody wymusza dodatkowe porozumienie Rys. 2.8 z udziałem punktu dostępowego, stacji klienckiej oraz serwera uwierzytelniania (ang. authentication server ). Dodatkowe porozumienie zachodzi po uwierzytelnianiu open-system. Powodzenie pozwala na użycie otrzymanego, unikalnego klucza głównego w porozumieniu czteroetapowym ze stacją kliencką. Podczas porozumienia 802.1X serwer uwierzytelniania wymusza na stacji klienckiej metodę uwierzytelniania EAP (ang. extended authentication protocol ). Istnieje wiele metod EAP pozwalających na uzgodnienie klucza PMK, które wymagają wymiany dodatkowych ramek. Łatwo zauważyć jak duży jest narzut ilości ramek związanych z współdzieleniem klucza na zasadzie 802.1X. Z punktu widzenia analizy roamingu można założyć, że kanał komunikacji między punktem dostępowym i serwerem uwierzytelniania zestawiony jest z pomocą dowolnego medium transmisji. W szczególności może to być kanał pozwalający na szybszą i pewniejszą wymianę ramek. Jeśli szybkość transmisji byłaby o wiele większa to proces opakowywania ramek w punkcie dostępowym mógłby stać się przeźroczysty dla potrzeb 22 analizy roamingu na łączu radiowym. W takim przypadku możnaby potraktować uzgadnianie klucza na zasadzie IEEE802.1X jako konieczność dodatkowego porozumienia między stacją kliencką i punktem dostępowym. Klient AP Serwer EAP-Request EAP-Response Access-Request Access-Challenge EAP-Request Wybrana metoda EAP. Access-Accept EAP-Success Rysunek 2.8: Uwierzytelnianie na zasadzie IEEE802.1X. 2.3 Efektywność procedury roamingu Ważnym elementem tej pracy jest porównanie wpływu modyfikacji poszczególnych kroków na całość procedury roamingu. Posiadając dobrze zdefiniowaną oś czasową roamingu Rys. 2.1 mogę wprowadzić pojęcie sekwencji roamingu, które opisuje pojedyncze zajście procedury roamingu w ramach scenariusza doświadczalnego zgodnie z definicją 2.3.1. Porównywanie sekwencji roamingu wymaga wprowadzenia miary, która pozwala rozróżnić scenariusze bardziej lub mniej udane. Scenariusz udany zawiera sekwencje roamingu o większej efektywności. Niniejszy rozdział definiuje miarę efektywności roamingu, która pozwala przedstawić ocenę sekwencji roamingu w postaci liczby rzeczywistej. Warto zwrócić uwagę na fakt, iż wybór miary efektywności jest subiektywny. Dążę do określenia sposobu oceny scenariusza roamingu, który faworyzuje zjawiska korzystne z punktu widzenia mobilnej stacji klienckiej. 2.3.1 Pojęcie scenariusza doświadczalnego Ocena pojedynczego zajścia procedury roamingu w postaci sekwencji roamingu nie jest wystarczająca do ustalenia całościowej miary efektywności zjawiska. Należy zwrócić uwagę, 23 że ruch stacji mobilnej jest bezpośrednim czynnikiem inicjalizującym etap wyzwalania roamingu. Potrzebna jest miara, która uwzględnia ocenę decyzji stacji o rozpoczęciu sekwencji roamingu. Konieczne jest rozpatrywanie efektywności roamingu na podstawie pojęcia scenariusza doświadczalnego. Scenariusz doświadczalny pozwala wprowadzić opis środowiska oraz zachodzącego w nim ruchu stacji mobilnej. Wyzwalanie procedury roamingu może zachodzić wielokrotnie w ramach danego scenariusza. Środowiskiem nazywam wszystkie elementy scenariusza doświadczalnego, które nie dotyczą mobilnej stacji klienckiej. Do składowych środowiska zaliczam: – Obszar roboczy scenariusza, – Punkty dostępowe, – Architekturę sieciową, – Dodatkowe artefakty (np. przeszkody). Środowisko doświadczalne najprostszej postaci składa się z obszaru roboczego oraz rozmieszczonych w nim punktów dostępowych. Obszar roboczy powinien posiadać określony rozmiar z założeniem pomijania wpływu czynników z poza jego granic. Ilość punktów dostępowych jest znana oraz posiadają one ustalone położenie i zasięg działania. Architektura sieci stanowi definicję zasobów udostępnianych przez punkty dostępowe. Opis środowiska doświadczalnego powinien zawierać również wszystkie parametry wejściowe swoich składników. Ilość parametrów zależy od przyjętego stopnia szczegółowości scenariusza. Definicja stacji mobilnej zawiera opis ruchu oraz pozostałe parametry konfiguracyjne klienta. Parametry ruchu opisują sposób przemieszczania się stacji w ramach obszaru roboczego środowiska. Parametry konfiguracyjne klienta powinny określać zasięg sygnału oraz dodatkowe pozycje w zależności od stopnia szczegółowości scenariusza. 2.3.2 Czas trwania sekwencji roamingu Wybór czasu jako miary efektywności pojedynczego zdarzenia roamingu jest naturalnym następstwem reprezentacji sekwencji roamingu w postaci osi czasowej. Należy zwrócić uwagę, że celem wyprowadzania wzorów jest szczegółowa definicja miary efektywności. Niektóre parametry zostały uznane za stałe i uległy pominięciu. Następujące parametry nie są brane pod uwagę: – Czas przełączania kanału radiowego, – Opóźnienie sygnału w medium transmisji. Prezentowane równania nie biorą pod uwagę opóźnień powyżej warstwy drugiej modelu OSI. W najprostszej postaci długość sekwencji roamingu obliczam korzystając z wzoru tr = tw + ts + tu+p , 24 (2.1) gdzie tw oznacza czas wyzwalania, ts czas sondowania łącza, a tu+p sumaryczny czas podłączenia i uwierzytelniania. Czas sekwencji roamingu tr jest sumą czasów trwania jej poszczególnych kroków. Z punktu widzenia stacji mobilnej najbardziej niekorzystnym okresem pracy jest etap sondowania łącza ts . Etap sondowania łącza wiąże się z całkowitą utratą łączności z jakimkolwiek punktem dostępowym. W trakcie wyzwalania sekwencji roamingu można założyć, że mimo utraty pewnej liczy ramek typu Beacon możliwe jest przekazanie poprawnej ramki danych (nawet jeśli nie zostanie ona prawidłowo potwierdzona). Etap uwierzytelniania i podłączenia tu+p jest już częścią komunikacji z nowym punktem dostępowym, gdzie istnieje szansa zaszycia pewnych istotnych danych. Czas wyzwalania tw opisuje interwał między wystąpieniem pierwszych przesłanek o spadku jakości połączenia i uruchomieniem procedury sondowania łącza. Warto zwrócić uwagę, że spadek jakości łącza nie oznacza natychmiastowej utraty komunikacji. Czas wyzwalania jest buforem zapobiegającym podejmowaniu decyzji o roamingu w skutek jednorazowych błędów pomiaru lub transmisji. Większość algorytmów wyzwalania wykorzystuje metodę zliczania negatywnych przesłanek z zerowaniem licznika w przypadku pozytywnej odpowiedzi. Przekroczenie limitu licznika powoduje uruchomienie procedury sondowania łącza. Oczywiście decyzja o negatywnej przesłance zapada w skutek niedoczasu, którego wartość można potraktować jako okres testowania jakości łącza Tt . Korzystając z limitu licznika N można wyprowadzić wzór tw = N ∗ Tt (2.2) będący rozwinięciem składnika wyzwalania w równaniu 2.1. Czas sondowania łącza ts opisuje interwał między decyzją o zerwaniu połączenia i odnalezieniem nowego punktu dostępowego. Należy wyprowadzić wzór dla sondowania aktywnego i pasywnego. Zgodnie z przeprowadzoną analizą czas sondowania aktywnego posiada dwa niedoczasy: – Niedoczas minChannelTime, – Niedoczas maxChannelTime. Czas oczekiwania na każdym kanale zależy od zdarzenia odebrania ramki typu ProbeRsp, więc wzór na czas sondowania ma postać sumy ts = K X rk ∗ maxChannelT ime + (1 − rk ) ∗ minChannelT ime, (2.3) k=1 gdzie K to liczba kanałów zlecona do sondowania, k to aktualnie sondowany kanał, rk ∈ {0, 1} oznacza zdarzenie odebrania ramki ProbeRsp na kanale k. W przypadku sondowania pasywnego wzór upraszcza się do postaci ts = K ∗ maxChannelT ime. (2.4) Wyprowadzenie równania czasu podłączenia i uwierzytelnienia tu+p jest bardziej skomplikowane. W przypadku sekwencji roamingu zakończonej powodzeniem granicami interwału 25 czasu tu są zdarzenia wysłania oraz odebrania ramek protokołu IEEE802.11. Do równania wchodzą dodatkowe składniki związane z bezprzewodową transmisją danych. Procedury uwierzytelniania oraz podłączania można uprościć do pewnej liczby porozumień. Opóźnienie zjawiska porozumienia dwu-etapowego (ang. 2-way handshake) można sprowadzić do sumy czasów udanego nadania ramki ze stacji wiodącej oraz odpowiedzi stacji odpytywanej. Opóźnienie transmisji ramki opisuję wzorem ttx = E+1 X tmedium + E ∗ Tout , k (2.5) k=1 gdzie E oznacza liczbę błędów ramki, tmedium oznacza opóźnienie dostępu do medium k transmisji przy k-tej próbie nadawania oraz Tout oznacza wartość niedoczasu dla oczekiwania na ramki odpowiedzi danego porozumienia. Decyzja o błędzie ramki wymaga oczekiwania przez czas Tout dla każdego z błędów. Przy nadawaniu każdej ramki stacja musi uzyskać dostęp do medium. Należy pamiętać o ostatniej ramce nadanej z powodzeniem. Podobnie jak we wcześniejszych równaniach pojawia się składnik E ∗Tout , który opisuje wystąpienie pewnej liczby niedoczasów. Trudności sprawia fakt, iż rozpoczęcie procedury odliczania czasu Tout wymaga udanego dostępu do medium transmisji związanego z próbą nadania ramki. Zgodnie z fundamentalnymi cechami MAC protokołu IEEE802.11 można stwierdzić, że czas dostępu do medium jest niedeterministyczny. Stacja odpytywana odpowiada jedynie pojedynczym potwierdzeniem co skutkuje dodaniem składnika dostępu do medium tmedium we wzorze na rx opóźnienie porozumienia dwu-etapowego t2−way = E+1 X tmedium + E ∗ Tout + tmedium . k rx (2.6) k=1 Zakładając najprostszą postać uwierzytelniania, opóźnienie uwierzytelniania i podłączenia jest sumą tu+p = tu + tp , (2.7) gdzie tu = E+1 X auth tmedium + E ∗ Tout + tmedium k rx (2.8) assoc tmedium + E ∗ Tout + tmedium . k rx (2.9) k=1 oraz tp = E+1 X k=1 auth oraz T assoc to niedoczasy dla procedury uwierzytelniania i podłączenia. Stałe Tout out 2.3.3 Ilość sekwencji roamingu w ramach scenariusza doświadczalnego Ocena uwarunkowań czasowych pojedynczej sekwencji roamingu nie jest wystarczająca do analizy zachowania mobilnej stacji klienckiej. Miara efektywności roamingu powinna być wzbogacona o możliwość porównania scenariuszy doświadczalnych. Scenariusz doświadczalny może zawierać dowolną ilość sekwencji roamingu. Należy ustalić, czy z przyjętego w pracy punktu widzenia zwiększanie częstotliwości roamingu jest zjawiskiem negatywnym. 26 Wpływ częstotliwości roamingu na całościową efektywność zjawiska Rysunek 2.9: Przykładowy scenariusz doświadczalny. Proponuję rozważenie przykładowego, uproszczonego scenariusza doświadczalnego Rys. 2.9. Pionowa linia oznacza obszar, w którym siła sygnału punktów dostępowych jest równa. Białe punkty zaznaczają przybliżone miejsca wyzwalania procedury roamingu (dodatkowo oznaczone literą odpowiadającą metodzie wyzwalania). Przedstawione w rozdziale 2.2.1 metody wyzwalania mają bardzo zbliżone właściwości i potencjał do zwracania identycznej liczby wyzwoleń dla ustalonego scenariusza doświadczalnego. Na potrzeby pracy zakładam istnienie hipotetycznej metody wyzwalania. Hipotetyczna metoda podejmuje decyzję o wyzwalaniu na podstawie uaktualnianej tablicy mocy punktów dostępowych będących w zasięgu. Hipotetyczną metodę nazywam dalej wyzwalaniem przez sondowanie. Przykładowy scenariusz roamingu jest uproszczony i nie wymaga dalszego precyzowania metody wyzwalania przez sondowanie. W przykładzie Rys. 2.9 wykorzystuję następujące metody wyzwalania roamingu: – Przypadek A: Wyzwalanie w reakcji na utratę ramek typu Beacon (zachowanie standardowe), – Przypadek B: Wyzwalanie przez sondowanie (metoda hipotetyczna). Zakładam, że algorytm wyboru punktu dostępowego wybiera punkt o większej sile sygnału. Procedura sondowania łącza zostaje zakończona przed ponownym wyzwoleniem. Nawet jeśli procedura wyzwalania przez sondowanie oferuje znaczne zwiększenie efektywności sekwencji roamingu, to w przykładowym scenariuszu doświadczalnym owocuje ona trzykrotnym wyzwoleniem. Kierując się intuicją można wnioskować, że zmiana punktu dostępowego była potrzebna jedynie w przypadku A. Idąc dalej tropem minimalizacji całkowitego 27 czasu spędzonego na procedurze roamingu można zasugerować sumowanie opóźnień poszczególnych sekwencji roamingu. Podejście to ma wadę, która polega na zatarciu informacji o ilości wyzwoleń. Łatwo wyobrazić sobie, że duża liczba wyzwoleń z małym opóźnieniem sekwencji roamingu może być bardzo efektywna biorąc pod uwagę wybrane programy komunikacyjne działające w wyższych warstwach modelu OSI. 2.3.4 Efektywność roamingu stacji klienckiej Ostatecznie, proponuję zaakceptowanie dwoistej natury oceny efektywności roamingu stacji klienckiej. Kierując się dwoistą miarą efektywności wyróżniam następujące przypadki graniczne: – Roaming efektywny: minimalne opóźnienie sekwencji roamingu oraz minimalna ilość wyzwoleń, – Przypadek pośredni: minimalna ilość wyzwoleń lub minimalne opóźnienie, – Roaming nieefektywny: opóźnienie sekwencji roamingu oraz liczba wyzwoleń nie są minimalne. n (3, 2) 2 d 3 (0, 0) t Rysunek 2.10: Miara efektywności roamingu. Miarę efektywności roamingu można przedstawić w postaci układu współrzędnych Rys. 2.10 przy pomocy dwu osi liczbowych: – Oś n odpowiada liczbie wyzwoleń sekwencji roamingu w ramach scenariusza doświadczalnego, – Oś t odpowiada sumarycznemu czasowi sekwencji roamingu w ramach scenariusza doświadczalnego. Kierując się ustalonymi przypadkami granicznymi staje się oczywiste, że punkty znajdujące się bliżej centrum układu współrzędnych Rys. 2.10 odpowiadają scenariuszom bardziej efektywnym. Odległość d od centrum jest miarą efektywności roamingu, która nie zaciera 28 informacji o ilość wyzwoleń oraz umożliwia prostą graficzną reprezentację i porównanie scenariuszy doświadczalnych. Efektywność roamingu przykładu Rys. 2.10 można opisać wzorem d= q (n − n0 )2 + (t − t0 )2 . (2.10) Punkt (n0 , t0 ) to środek układu, więc efektywność roamingu wynosi d= p n2 − t 2 = √ 4+9= 29 √ 13 ≈ 3.6. (2.11) Rozdział 3 Projekt procedury interfejsów równoległych W niniejszym rozdziale wprowadzam definicję pojęcia interfejsów równoległych. Definicja bazuje na pomyśle przedstawionym skrótowo w rozdziale wprowadzającym 1. Korzystając z przesłanek szczegółowej analizy procedury roamingu zawartych w rozdziale 2 tworzę projekt rozwiązania opartego o metodę interfejsów równoległych. Celem rozwiązania jest poprawa efektywności roamingu stacji klienckiej w zestawieniu z metodami ujętymi w rozdziale 2. Terminologia projektu abstrahuje od naleciałości związanych z docelowym środowiskiem implementacji. W celu uogólnienia opisu wykorzystuję pojęcia pochodzące z tekstu standardu IEEE802.11. W szczególności, posługuję się nazwami poleceń opisujących komunikację między poszczególnymi warstwami protokołu IEEE802.11. Warstwy te stanowią abstrakcję elementów znanych z dziedziny architektury komputerów, do których można zaliczyć: – Sterowniki urządzeń bezprzewodowych certyfikowanych znakiem Wi-Fi, – Oprogramowanie typu firmware, – Aplikacje przestrzeni użytkownika. 30 3.1 Stos protokołu IEEE802.11 Poniższy diagram Rys. 3.1 przedstawia stos protokołu IEEE802.11. Warstwa łącza danych MAC MLME SAP SAP SME Warstwa fizyczna PHY PLME SAP Rysunek 3.1: Stos protokołu IEEE802.11. Standard definiuje działanie protokołu IEEE802.11 posługując się opisem działań i usług udostępnianych przez warstwy: – MAC (ang. media access control ): odpowiada warstwie łącza danych modelu OSI, – PHY (ang. physical ): odpowiada warstwie fizycznej modelu OSI. Warstwy MAC oraz PHY posiadają wbudowane jednostki zarządzające ME (ang. management entity): – MLME (ang. MAC layer management entity): jednostka zarządzająca działaniem warstwy MAC, – PLME (ang. physical layer management entity): jednostka zarządzająca działaniem warstwy PHY. Standard wyróżnia dodatkową jednostkę zarządzającą SME (ang. system management entity). Jednostka SME rezyduje poza modelem OSI odzwierciedlając docelowy system komputerowy wykorzystujący usługi warstw MAC oraz PHY. Usługi reprezentowane są w postaci interfejsów SAP (ang. service access point) modelu OSI. Tekst standardu zakłada, iż jednostka SME powinna wykorzystywać interfejs SAP udostępniany przez MLME. Zarówno MLME oraz PLME udostępniają interfejsy SAP. Standard nalega na implementację warstwową, w której SAP jednostki PLME wykorzystywany jest jedynie z pomocą SAP warstwy MLME. Standard nie definiuje SAP jednostki SME, gdyż jest ona uogólnieniem wielozadaniowego systemu komputerowego. 3.2 Definicja pojęcia interfejsów równoległych Interfejsami równoległymi nazywam dwa lub więcej stosów protokołu IEEE802.11, których warstwy są zależne od ustalonego poziomu. Zależność warstw może polegać na zestawieniu komunikacji skrośnej lub wspólnej warstwie nadrzędnej. W pierwszym przypadku możliwa 31 jest rzeczywista równoległość, w drugim należałoby użyć określenia współbieżność. Niezależność na poziomie sprzętowym pozwala obejść niektóre ograniczenia fizyczne. W szczególności, każda dodatkowa antena pozwala systemowi działać jednocześnie na dodatkowej częstotliwości medium transmisyjnego. 3.3 Projekt metody wyzwalania przez sondowanie Moim celem jest opracowanie metody poprawy efektywności roamingu z zastosowaniem definicji interfejsów równoległych. Procedura sekwencji roamingu opisana w rozdziale 2.2 odbywa się z udziałem jednego stosu protokołu IEEE802.11 znajdującego się na urządzeniu z pojedynczym interfejsem NIC. Problem sprowadza się do wyboru etapu sekwencji roamingu, którego wykonanie przez dodatkowy interfejs bezprzewodowy miałoby potencjał poprawy całościowej miary efektywności roamingu stacji klienckiej. Łatwo zauważyć, że cała procedura roamingu polega na wymuszeniu zerwania połączenia z aktualnym punktem dostępowym w celu zwolnienia zasobów interfejsu bezprzewodowego. Połączenie musi zostać zerwane, gdyż etap sondowania łącza wymaga kolejnych zmian częstotliwości pracy karty radiowej. Oczywiście, pojedynczy interfejs bezprzewodowy nie może pracować na wielu częstotliwościach pasma jednocześnie. Wnioskując, przeniesienie ciężaru procedury sondowania łącza na osobny interfejs mogłoby doprowadzić do sytuacji, w której połączenie zostaje zerwane jedynie w celu wykonania etapu uwierzytelniania i podłączenia do nowego punktu dostępowego. W tym przypadku byłoby możliwe wyzwolenie sekwencji roamingu przez wyniki sondowania łącza prowadzonego przez równoległy interfejs. 3.3.1 Decyzje projektowe Wstępne decyzje projektowe formułuję w postaci rozwinięcia wymagań: – W1: Rozwiązanie wykorzystuje dwa stosy protokołu IEEE802.11, – W1a: Stos sondujący odpowiada za nieustanne przeprowadzanie etapu sondowania łącza, – W1b: Stos połączeniowy odpowiada za etapy uwierzytelniania i podłączenia oraz służy wymianie ramek typu Data, – W2: Stosy protokołów IEEE802.11 są odseparowane w sensie modelu OSI posiadając wspólną jednostkę SME, – W3: Jednostka SME podejmuje decyzje o zerwaniu i rozpoczęciu stanu uwierzytelnienia oraz podłączenia, – W4: Jednostka SME podejmuje decyzje na bazie wyników sondowania łącza w postaci listy punktów dostępowych, 32 – W5: Stosy protokołów IEEE802.11 sterowane są wiadomościami interfejsu SAP jednostki MLME. Wiadomości interfejsu SAP jednostki MLME, których używam w projekcie zawarłem w Tab. 3.1. Tablica 3.1: Wiadomości interfejsu SAP jednostki MLME. Skrót Nazwa Opis MlmeScanReq MLME-SCAN.request Zlecenie etapu sondowania łącza. MlmeScanCon MLME-SCAN.confirm Zwrócenie wyników sondowania łącza. MlmeAuthReq MLME-AUTHENTICATE.request Zlecenie porozumienia wstępnego uwierzytelnienia. MlmeAuthCon MLME-AUTHENTICATE.confirm Zwrócenie wyniku porozumienia wstępnego uwierzytelnienia. MlmeDeauthReq MLME-DEAUTHENTICATE.request Zlecenie zerwania uwierzytelnienia stacji. MlmeDeauthCon MLME-DEAUTHENTICATE.confirm Zwórcenie wyniku zerwania uwierzytelnienia stacji. MlmeAssocReq MLME-ASSOCIATE.request Zlecenie podłączenia do punktu dostępowego. MlmeAssocCon MLME-ASSOCIATE.confirm Zwrócenie wyniku podłączenia do punktu dostępowego. MlmeDisassocReq MLME-DISASSOCIATE.request Zlecenie zerwania połączenia z punktem dostępowym. MlmeDisassocCon MLME-DISASSOCIATE.confirm 3.3.2 Zwrócenie wyniku zerwania połączenia z punktem dostępowym. Projekt jednostki zarządzającej SME Jednostki zarządzające sprowadzam do klas obiektów o określonym interfejsie. Zakładam, iż jednostki zarządzające MLME istnieją w postaci komponentów zgodnych ze standardem IEEE802.11. Moim celem jest wykonanie projektu jednostki SME, która sterowałaby zachowaniem niższych warstw w sposób umożliwiający działanie wyzwalania przez sondowanie. Na bazie decyzji projektowych opracowuję następującą listę odpowiedzialności SME : 33 – O1: Wysyłanie wiadomości typu request z Tab. 3.1, – O2: Odbieranie wiadomości typu confirm z Tab. 3.1, – O3: Wykonywanie algorytmu wyboru punktu dostępowego z listy punktów dostępowych. Łatwo zauważyć, że zachowanie jednostki SME zależy od odpowiedzi MLME na wiadomości request. Jedyną odpowiedzialnością, którą warto wyróżnić na etapie projektu analitycznego jest algorytm wyboru punktu dostępowego. Algorytm wyboru punktu dostępowego sprowadzam do wywołania metody ChooseAP. Projekt interakcji między jednostkami zarządzającymi wymaga specyfikacji zachowań jakich oczekuje się od danego stosu protokołu IEEE802.11. W przypadku wyzwalania przez sondowanie należy rozpatrzyć zachowanie dwu stosów. Na etapie projektu analitycznego niniejszego rozwiązania przydatnym narzędziem jest diagram interakcji między jednostkami zarządzającymi Rys. 3.2. Diagram przedstawia sytuację, w której wynik wywołania procedury ChooseAP powoduje wyzwolenie sterowania jednostką MLME-Conn. Celem sterowania jest rozwiązanie istniejących połączeń interfejsu oraz rozpoczęcie etapu podłączenia i uwierzytelnienia w nowym punkcie dostępowym. Zachowanie stosu IEEE802.11 odpowiedzialnego za sondowanie łącza Stos odpowiedzialny za sondowanie łącza znajduje się pod kontrolą jednostki zarządzającej, którą będę dalej nazywał MLME-Scan. Jednostka MLME-Scan powinna być pobudzana do okresowego wykonywania procedury sondowania łącza. Po zakończeniu procedury SME otrzymuje listę punktów dostępowych. Lista punktów dostępowych jest parametrem wejściowym metody ChooseAP wywoływanej bezpośrednio po otrzymaniu wyników sondowania łącza. Jeśli wybrany punkt dostępowy jest inny niż aktualny, należy rozpocząć sekwencję roamingu. W przeciwnym przypadku procedura sondowania łącza powinna być zlecona ponownie. Zachowanie stosu IEEE802.11 odpowiedzialnego za połączenie Stos odpowiedzialny za połączenie znajduje się pod kontrolą jednostki zarządzającej, którą będę dalej nazywał MLME-Conn. Stos ten odpowiedzialny jest za wymianę danych z resztą modelu OSI oraz przeprowadzanie procedury podłączenia i uwierzytelnienia z punktem dostępowym. Jednostka SME nigdy nie zleca jednostce MLME-Conn wykonania procedury sondowania łącza. Jednostka MLME-Conn kontrolowana jest tylko, gdy wyniki metody ChooseAP wymuszają zmianę aktualnego punktu dostępowego. Jednostka SME zleca rozwiązanie połączenia z aktualnym punktem dostępowym i wykorzystuje wynik metody ChooseAP do zlecenia procedury podłączenia i uwierzytelnienia. 34 MLME Sondujący SME MLME Połączeniowy Pętla sondowania łącza: MlmeScanReq MlmeScanCon ChooseAP Poniższa procedura jest wykonywana, jeśli wybrano punkt dostępowy inny niż aktualny. Jeśli stacja jest w stanie uwierzytelnienia, należy go rozwiązać. MlmeDeauthReq MlmeDeauthCon Jeśli stacja jest podłączona, należy zerwać połączenie. MlmeDisassocReq MlmeDisassocCon Należy rozpocząć etap uwierzytelnienia ... MlmeAuthReq MlmeAuthCon ... oraz podłączenia do nowego punktu dostępowego. MlmeAssocReq MlmeAssocCon Rysunek 3.2: Interakcja jednostek zarządzających. 35 Rozdział 4 Implementacja modeli interfejsów równoległych w strukturach INET Niniejszy rozdział opisuje implementację rozwiązania interfejsów równoległych. Implementacja bazuje na projekcie wyzwalania przez sondowanie przedstawionym w rozdziale 3. Zgodnie z celem pracy, środowiskiem implementacji rozwiązania są struktury INET. Struktury INET zawierają zestaw modeli przeznaczonych do symulacji działania sieci komunikacyjnych. Decyzja o wyborze struktur INET w implementacji rozwiązania zapadła, ze względu na następujące zalety: – Licencja typu open-source umożliwiająca łatwe modyfikacje kodu, – Udokumentowaną zgodność z opartym o środowisko Eclipse symulatorem OMNet++, – Udokumentowaną zdolność modeli standardu IEEE802.11 do przeprowadzenia sekwencji roamingu, – Bogatym zestawem modeli wyższych warstw OSI pozwalającym na szeroki zakres symulacji wpływu zjawiska roamingu w standardzie IEEE802.11. Docelowym środowiskiem uruchomieniowym jest symylator OMNet++. Rozdział tłumaczy decyzje implementacyjne związane z umiejscowieniem rozwiązania w strukturach modeli INET. Za kluczowe uważam utrzymanie świadomości czytelnika co do wpływu implementacji modelu na działanie rzeczywistego odpowiednika rozwiązania. 4.1 Struktura modeli INET Decyzja projektowa dotycząca traktowania jednostek MLME jako istniejących komponentów posiadających zdefiniowany interfejs SAP wymusza zastosowanie gotowego zestawu modeli zgodnych ze standardem IEEE802.11. Konsekwencje implementacyjne takiego podejścia oceniam analizując stos protokołu IEEE802.11 z punktu widzenia rzeczywistej architektury systemów komputerowych. Tab. 4.1 przedstawia warstwy rzeczywistej architektury 36 systemu, które mają potencjał przejęcia funkcjonalności określonych poziomów stosu protokołu IEEE802.11. Tablica 4.1: Architektura warstwowa protokołu IEEE802.11. Standard IEEE802.11 System komputerowy SME Aplikacja przestrzeni użytkownika (np. NetworkManager w dystrybucjach systemu Linux ) MAC, MLME Sterownik urządzenia bezprzewodowego i jego interfejs PHY, PLME Firware urządzenia bezprzewodowego i jego interfejs Kolejnym krokiem jest dopasowanie modeli INET będących odpowiednikami przedstawionych poziomów architektury warstwowej. Modele są w tym przypadku zestawem klas w sensie języka C++. W strukturach INET pliki źródłowe klas mogą tworzyć moduły będące podmiotami relacji połączenia lub zawierania się. Moduły są podstawowym budulcem warstwowej architektury modeli INET. Do opisu relacji oraz parametrów modułów służą pliki NED (ang. network description file). Parametryzacja plików NED odbywa się z pomocą dodatkowego pliku tekstowego w formacie INI. Za realizację stosu protokołu IEEE802.11 odpowiada moduł Ieee80211Nic Rys. 4.1. Moduł Ieee80211Nic modeluje elementy interfejsu bezprzewodowej karty sieciowej od fizycznej anteny po SAP udostępniany warstwie stosu OSI. agent Rysunek 4.1: Moduł Ieee80211Nic. 37 Element radio odpowiada modułowi Radio modelującemu błędy, spadek mocy sygnału oraz siłę anteny. Element mac odpowiada modułowi Ieee80211Mac modelującemu warstwę dostępu do łącza danych. Element mgmt zajmuje się reakcją na ramki zarządzające i odpowiada określonemu modułowi w zależności od trybu pracy urządzenia: – Ieee80211MgmtSTA - tryb stacji klienckiej, – Ieee80211MgmtAP - tryb punktu dostępowego. Element agent odpowiada modułowi Ieee80211AgentSTA i jest konieczny wyłącznie do prawidłowego działania modułu Ieee80211MgmtSTA. Moduł Ieee80211AgentSTA odpowiada za odpowiednie wykorzystanie usług mgmt. Łatwo zauważyć pewne podobieństwo w odpowiedzialnościach poszczególnych modułów i podmienić kolumnę system komputerowy Tab. 4.1 kolumną odpowiadającą strukturom modeli INET Tab. 4.2. Tablica 4.2: Architektura warstwowa protokołu IEEE802.11. 4.2 Standard IEEE802.11 INET SME Ieee80211AgentSTA MAC, MLME Ieee80211Mac, Ieee80211MgmtSTA PHY, PLME Radio, Ieee80211Radio Implementacja rozwiązania wyzwalania przez sondowanie W celu opisu implementacji rozwiązania stosuję podejście zstępujące (ang. top-down approach), które ułatwia przedstawienie procesu realizacji na tle struktur modeli symulacyjnych oraz plików konfiguracyjnych. Zmiany wprowadzane w strukturach INET ograniczają się do modułu stacji klienckiej WirelessHost Rys. 4.2. Moduł ten reprezentuje fizyczne urządzenie posiadające interfejsy NIC oraz komponenty symulujące zachowanie wyższych warstw modelu OSI. Interfejsy NIC mają postać tablic i stanowią kanały wymiany wiadomości z pozostałą częścią symulowanej sieci. Moduł WirelessHost modeluje zachowanie warstwy sieciowej. Warstwa transportowa reprezentowana jest przez moduły implementujące protokół UDP, TCP oraz SCTP. Moduły warstwy transportowej pozwalają na bezpośrednie podłączenie generatorów wiadomości symulujących zachowanie odpowiednich aplikacji. Interesującym z punktu widzenia wprowadzanych zmian jest element wlan[numRadios] reprezentujący zestaw interfejsów NIC komunikacji bezprzewodowej. Wszystkie przykładowe symulacje z udziałem modułu WirelessHost korzystają z pojedynczego interfejsu Ieee80211Nic. 38 WirelessHost Wyższe warstwy modelu OSI Interfejsy NIC Ieee80211Nic wlan[numRadios] Rysunek 4.2: Moduł WirelessHost. W celu inspekcji definicji elementu wlan[numRadios] odwołuję się do listingu 4.1 przedstawiającego fragment pliku NED klasy bazowej NodeBase. Definicja elementu wlan[numRadios] jest parametryczna. Elementem tablicy wlan[numRadios] może być dowolny moduł implementujący interfejs IWirelessNic. Brak specyfikacji w pliku konfiguracyjnym oznacza użycie modułu Ieee80211Nic. Właściwość @display definiuje metadane związane z wyświetlaniem elementu na diagramach symulatora OMNet++. Listing 4.1: Fragment pliku NodeBase.ned 1 3 wlan [ numRadios ] : <d e f a u l t ( ” I e e e 8 0 2 1 1 N i c ”)> l i k e I W i r e l e s s N i c { parameters : @ d i s p l a y ( ”p =216 ,406 , row , 6 0 ; q=queue ” ) ; } Realizacja interfejsów równoległych opiera się o implementację dodatkowych modułów NIC : – Ieee80211ScanNic: stos sondujący protokołu IEEE802.11, – Ieee80211CommNic: stos połączeniowy protokołu IEEE802.11. Przygotowane w ten sposób moduły można wykorzystać przy konfiguracji WirelessHost używając wzorca typename. Przedstawiony listing 4.2 pliku INI demonstruje konfigurację stacji klienckiej host wykorzystującej przygotowane interfejsy równoległe. Należy pamiętać o prawidłowej inicjalizacji parametru numRadios odpowiadającego za rozmiar tablicy interfejsów bezprzewodowych wlan[numRadios]. Listing 4.2: Konfiguracja interfejsów NIC modułu WirelessHost 2 ∗ ∗ . h o s t . numRadios = 2 ∗ ∗ . h o s t . wlan [ 0 ] . typename = ” I e e e 8 0 2 1 1 S c a n N i c ” ∗ ∗ . h o s t . wlan [ 1 ] . typename = ” Ieee80211CommNic ” 39 Zgodnie z projektem interfejsy równoległe powinny posiadać wspólną jednostkę SME. Na Tab. 4.2 jednostce SME odpowiada moduł Ieee80211AgentSTA. W przypadku modułu Ieee80211MgmtSTA element agent jest niezbędny ze względu na sterowanie logiką zachowania stosu stacji klienckiej. Kluczową częścią implementacji jest hierarchia klas reprezentujących moduły typu agent. Instancja wybranej klasy z hierarchii modułów typu agent zostaje wybrana do sterowania interfejsem NIC, który zostaje włączony do stacji klienckiej host zgodnie ze schematem przedstawionym na listingu 4.2. Implementacja pary rozdzielnych modułów agent pozwala na wprowadzenie pewnej abstrakcji w jednostce SME. Z punktu widzenia rzeczywistej architektury rozdzielne moduły agent mogą być procesami oraz wątkami pojedynczego systemu komputerowego lub nawet rezydować na różnych maszynach. Komunikaty uznaję za aspekt systemu komputerowego wykraczający poza zakres modeli symulacyjnych. W celu zestawienia komunikacji stosuję udostępniany przez symulator OMNet++ mechanizm sygnałów. Mechanizm sygnałów jest pomocniczym narzędziem środowiska symulacyjnego i nie wpływa na wyniki pomiarów. Hierarchię klas modułów typu agent stworzoną na potrzeby tej pracy przedstawia schemat Rys. 4.3. Klasa bazowa Ieee80211AgentBaseSTA zawiera wszystkie wspólne części implementacji klas Ieee80211AgentCommSTA oraz Ieee80211AgentScanSTA. Klasa bazowa służy porządkowaniu kodu oraz implementacji metod pomocniczych. Klasa Ieee80211AgentCommSTA steruje zachowaniem stosu Ieee80211CommNic. Klasa Ieee80211AgentScanSTA steruje zachowaniem stosu Ieee80211ScanNic. Klasa Ieee80211AgentScanHystSTA dziedziczy bezpośrednio po klasie Ieee80211AgentScanSTA. Poszerzam logikę metody chooseBSS odpowiedzialnej za wybór najlepszego punktu dostępowego z listy dostępnych. Celem poszerzenia jest wprowadzenie mechanizmu histerezy w procesie wyboru punktu dostępowego. Nowa metoda jest ściśle dedykowana do zastosowania w rozwiązaniu prezentowanym w niniejszej pracy. Dodatkowo, przedstawiam tabelę z odpowiednikami wiadomości interfejsów SAP w strukturze INET. Przedstawione nazwy odpowiadają klasom w sensie języka C++. Klasy te modelują wiadomości interfejsu SAP. Tab. 4.3 służy do implementacji projektu sekwencji komunikacji między jednostkami zarządzającymi w strukturze INET. 40 Ieee80211AgentBaseSTA Ieee80211AgentConnSTA Ieee80211AgentScanSTA sendAuthenticateRequest(...) sendAssociateRequest(...) processAuthenticateConfirm(...) processAssociateConfirm(...) sendScanRequest(...) processScanConfirm(...) chooseBSS(...) Ieee80211AgentScanHystSTA sendScanRequest(...) processScanConfirm(...) chooseBSS(...) Rysunek 4.3: Hierarchia klas modułów typu agent. Tablica 4.3: Odpowiedniki wiadomości SAP-MLME w strukturze INET. SAP-MLME INET MLME-SCAN.request Ieee80211Prim ScanRequest MLME-SCAN.confirm Ieee80211Prim ScanConfirm MLME-AUTHENTICATE.request Ieee80211Prim AuthenticateRequest MLME-AUTHENTICATE.confirm Ieee80211Prim AuthenticateConfirm MLME-DEAUTHENTICATE.request Ieee80211Prim DeauthenticateRequest MLME-DEAUTHENTICATE.confirm Ieee80211Prim DeauthenticateConfirm MLME-ASSOCIATE.request Ieee80211Prim AssociateRequest MLME-ASSOCIATE.confirm Ieee80211Prim AssociateConfirm MLME-DISASSOCIATE.request Ieee80211Prim DisassociateRequest MLME-DISASSOCIATE.confirm Ieee80211Prim DisassociateConfirm 41 4.2.1 Niezbędne modyfikacje modułu Ieee80211MgmtSTA Moduł Ieee80211MgmtSTA posiada pewne ograniczenia, które nie pozwalają na spełnienie wymagań projektowych. Podczas implementacji spotkałem się z następującymi problemami: – Moduł Ieee80211MgmtSTA nie pozwala na podłączenie i uwierzytelnienie w punkcie dostępowym, który nie został wcześniej odnaleziony na etapie sondowania, – Moduł Ieee80211MgmtSTA generuje rozgłoszeniowe komunikaty, które nie specyfikują nadawcy, – Moduł Ieee80211MgmtSTA rozwiązuje połączenie z punktem dostępowym jedynie poprzez rozpoczęcie procedury sondowania łącza. Modyfikacje na poziomie MLME odpowiadają zmianom sterowników urządzeń interfejsów bezprzewodowych. Należy zwrócić uwagę, iż powyższe ograniczenia dotyczą modeli symulacyjnych i nie muszą odzwierciedlać niuansów implementacji rzeczywistych sterowników. W celu umożliwienia realizacji wymagań projektowych dokonałem modyfikacji modułu Ieee80211MgmtSTA. Skrośna aktualizacja listy punktów dostępowych Zestawiłem skrośny kanał komunikacji między modułem Ieee80211AgentScanSTA oraz modułem Ieee80211MgmtSTA podlegającym kontroli jednostki Ieee80211AgentCommSTA. Kanał komunikacji ma postać sygnału apList. Listing 4.3 przedstawia definicję oraz rejestrację sygnału apList. Zmienna apListSignal jest statycznym polem klasy Ieee80211AgentScanSTA. Nadanie wartości SIMGIGNAL NULL jest konieczne, gdyż zmienna apListSignal jest polem statycznym klasy, a właściwa rejestracja sygnału ma miejsce dopiero w trakcie inicjalizacji. Inicjalizacja jest procesem wieloetapowym i zależy od innych modułów środowiska. Nazwa apList jest identyfikatorem ID sygnału używanym w procesie subskrypcji. Listing 4.3: Definicja i rejestracja sygnału apList. 1 3 s i m s i g n a l t Ieee80211AgentScanSTA : : a p L i s t S i g n a l = SIMSIGNAL NULL ; /∗ . . . ∗/ apListSignal = r e g i s t e r S i g n a l (” apList ” ) ; Emisja sygnału apList przedstawiona na listingu 4.4 ma miejsce po zakończeniu procedury sondowania łącza. Wiadomość typu Ieee80211Prim ScanConfirm zawiera listę punktów dostępowych. Wiadomość jest przekazywana z modułu Ieee80211MgmtSTA podlegającego kontroli jednostki Ieee80211AgentScanSTA, która zleciła sondowanie łącza. Wiadomość typu Ieee80211Prim ScanConfirm jest rzutowana do klasy bazowej cObject w celu przesłania razem z sygnałem apList. 42 Listing 4.4: Emisja sygnału apList. 1 3 5 void Ieee80211AgentScanSTA : : processScanConfirm ( Ieee80211Prim ScanConfirm ∗ resp ) { /∗ ∗@hary : Emit d i s c o v e r e d AP l i s t t o Ieee80211AgentConnSTA MGMT l a y e r ∗/ emit ( a p L i s t S i g n a l , ( c O b j e c t ∗ ) r e s p ) ; /∗ . . . ∗/ Utworzyłem dodatkowy parametr konfiguracyjny pliku Ieee80211MgmtSTA.ned o nazwie acceptApList. Listing 4.5 przedstawia definicję parametru acceptApList typu całkowitego. Jeśli parametr nie jest użyty w pliku INI to inicjalizowany jest wartością zero. Listing 4.5: Parametr acceptApList. int acceptApList = default ( 0 ) ; Listing 4.6 przedstawia fragment pliku konfiguracyjnego INI odpowiedzialny za nadanie parametrowi acceptApList wartości różnej od zera. W tym przypadku konfiguracja wymusi na module Ieee80211MgmtSTA podlegającym kontroli jednostki Ieee80211AgentCommSTA (zgodnie z definicją 4.2) subskrybcję sygnału apList. Listing 4.6: Nadanie wartości parametrowi acceptApList. 1 ∗ ∗ . h o s t . wlan [ 1 ] . mgmt . a c c e p t A p L i s t = 1 Nadanie wartości różnej od zera powoduje, że moduł Ieee80211MgmtSTA sunskrybuje sygnał apList. Listing 4.7 przedstawia fragment kodu odpowiedzialnego za subskrypcję sygnału apList. Konieczna jest subskrypcja w module będącym u szczytu hierarchii, gdyż sygnał przekazywany jest skrośnie. Listing 4.7: Subskrypcja sygnału apList. 1 3 5 7 /∗ ∗@hary : C o n f i g u r e MGMT t o a c c e p t AP l i s t c r o s s −update ∗/ void Ieee80211MgmtSTA : : a c c e p t A p L i s t S i g n a l ( ) { s i m u l a t i o n . getSystemModule()−> s u b s c r i b e ( ” a p L i s t ” , t h i s ) ; } /∗ . . . ∗/ i f ( ( i n t ) par ( ” a c c e p t A p L i s t ” ) != 0 ) acceptApListSignal ( ) ; W reakcji na otrzymanie sygnału apList moduł Ieee80211MgmtSTA czyści lokalną listę punktów dostępowych i używa zawartości wiadomości typu Ieee80211Prim ScanConfirm do wypełnienia nowej listy symulując zakończenie etapu sondowania łącza. Listing 4.8 przedstawia kod źródłowy metody receiveSignal odpowiedzialnej za aktualizację listy punktów dostępowych. Makro Enter Method Silent() wskazuje, iż dana metoda może być wołana z poziomu innych modułów oraz, że jej wywołanie nie będzie animowane w GUI symulatora. Niezbędne jest rzutowanie obiektu otrzymanego razem z sygnałem apList na typ Ieee80211Prim ScanConfirm. Obiekt klasy Ieee80211Prim ScanConfirm posiada metodę 43 getBssListArraySize(), której używam do określenia zasięgu iteracji po liście punktów dostępowych. Zmienna apList jest polem klasy Ieee80211MgmtSTA zawierającym listę obiektów typu APInfo. Klasa APInfo reprezentuje informacje o punkcie dostępowym odnalezionym na etapie sondowania łącza. Wykorzystując metodę getBssList(...) sięgam po kolejne obiekty typu Ieee80211Prim BssDescription. Pola obiektów typu Ieee80211Prim BssDescription służą mi do uzupełniania kolejnych instacji klasy ApInfo. Listing 4.8: Skrośna aktualizacja listy punktów dostępowych 1 3 /∗ ∗@hary : Manage s i g n a l s ∗/ void Ieee80211MgmtSTA : : r e c e i v e S i g n a l ( cComponent∗ s o u r c e , s i m s i g n a l t s i g n a l I D , c O b j e c t ∗ o b j ) { 5 Enter Method Silent ( ) ; 7 APInfo ∗ ap ; clearAPList ( ) ; 9 Ieee80211Prim ScanConfirm ∗ resp = ( Ieee80211Prim ScanConfirm ∗) obj ; 11 for ( i n t i =0; i <( i n t ) r e s p −>g e t B s s L i s t A r r a y S i z e ( ) ; i ++) { a p L i s t . push back ( APInfo ( ) ) ; ap = &a p L i s t . back ( ) ; 13 15 I e e e 8 0 2 1 1 P r i m B S S D e s c r i p t i o n& b s s D e s c = r e s p −>g e t B s s L i s t ( i ) ; ap−>c h a n n e l = b s s D e s c . getChannelNumber ( ) ; ap−>a d d r e s s = b s s D e s c . getBSSID ( ) ; ap−>s s i d = b s s D e s c . getSSID ( ) ; ap−>b e a c o n I n t e r v a l = b s s D e s c . g e t B e a c o n I n t e r v a l ( ) ; ap−>rxPower = b s s D e s c . getRxPower ( ) ; 17 19 21 } 23 } Powiązanie modułów agent oraz mgmt identyfikatorem ID Dodałem dodatkowe parametry konfiguracyjne do plików NED: – Plik Ieee80211MgmtSTA.ned : parametr mgmtID, – Plik Ieee80211AgentBaseSTA.ned : parametr agentID. Skojarzenie modułów należących do tego samego stosu protokołu IEEE802.11 odbywa się poprzez nadanie odpowienich wartości korzystając z pliku INI. Listing 4.9 przedstawia kontynuację konfiguracji 4.2. Moduły znajdujące się na tym samym stosie powinny mieć równe wartości parametrów mgmtID oraz agentID. 44 Listing 4.9: Identyfikacja modułów agent oraz mgmt. 1 3 ∗ ∗ . h o s t . wlan [ 0 ] . mgmt . mgmtID = ∗ ∗ . h o s t . wlan [ 0 ] . a g e n t . agentID ∗ ∗ . h o s t . wlan [ 1 ] . mgmt . mgmtID = ∗ ∗ . h o s t . wlan [ 1 ] . a g e n t . agentID 0 = 0 1 = 1 Wartości identyfikatorów wykorzystuję w kodzie modułów do oznaczania wiadomości rozgłoszeniowych. Listing 4.10 przedstawia wysłanie wiadomości o utraceniu ustalonej ilości ramek typu Beacon. Łatwo zauważyć, iż twórcy kodu INET są w trakcie implementacji oznaczania wiadomości rozgłoszeniowych. Wiadomość zostaje wysłana z modułu Ieee80211MgmtSTA i opatrzona odpowiednim identyfikatorem mgmtID. Metoda par(...) służy do opakowania wartości parametru mgmtID w obiekt typu cPar. Listing 4.10: Wysyłanie oznaczonej wiadomości rozgłoszeniowej NF L2 BEACON LOST. 2 /∗ ∗@hary : Use ID from INI f o r MGMT d i f f e r e n t i a t i o n ∗/ nb−>f i r e C h a n g e N o t i f i c a t i o n (NF L2 BEACON LOST , &par ( ”mgmtID” ) ) ; //XXX u s e I n t e r f a c e E n t r y a s d e t a i l , e t c . . . Odebranie wiadomości rozgłoszeniowej w module agent wymaga dodatkowo porównania jej identyfikatora z wartością agentID. Listing 4.11 przedstawia różnicowanie odebranych wiadomości na podstawie identyfikatorów. Makro Enter Method Silent() wskazuje, iż dana metoda może być wołana z poziomu innych modułów oraz, że jej wywołanie nie będzie animowane w GUI symulatora. Niezbędne jest rzutowanie wartości details na wkaźnik do obiektu typu cPar. Wyłuskanie wskaźnika powoduje zwrócenie wartości o prawidłowym typie. Listing 4.11: Rozróżnienie wiadomości rozgłoszeniowej według identyfikatora ID. 2 void Ieee80211AgentScanSTA : : r e c e i v e C h a n g e N o t i f i c a t i o n ( i n t c a t e g o r y , const c O b j e c t ∗ d e t a i l s ) { 4 Enter Method Silent ( ) ; 6 i f ( c a t e g o r y == NF L2 BEACON LOST) { /∗ ∗@hary : Added MGMT d i f f e r e n t i a t i o n f o r multi −i n t e r f a c e modules ∗/ i f ( d e t a i l s != NULL) { i n t mgmtID = ∗ ( ( cPar ∗ ) d e t a i l s ) ; i f (mgmtID == agentID ) { /∗ . . . ∗/ 8 10 Rozwiązanie połączenia z punktem dostępowym w skutek żądania uwierzytelnienia Niezbędne jest zerwanie połączenia modułu Ieee80211MgmtSTA przed kontynuacją uwierzytelniania. Listing 4.12 przedstawia wywołanie metody disassociate() w ramach odbierania wiadomości Ieee80211Prim AuthenticateRequest. Metoda disassociate() wprowadza moduł Ieee80211MgmtSTA w stan umożliwiający kontynuację procesu uwierzytelniania i podłączania do innego punktu dostępowego. 45 Listing 4.12: Zerwanie połączenia modułu Ieee80211MgmtSTA w skutek zlecenia uwierzytelniania. 1 3 5 7 void Ieee80211MgmtSTA : : processAuthenticateCommand ( I e e e 8 0 2 1 1 P r i m A u t h e n t i c a t e R e q u e s t ∗ c t r l ) { /∗ ∗@hary : MGMT l e v e l d i s s a s o c i a t i o n − b e c a u s e we a r e not s c a n n i n g ∗/ if ( isAssociated ) disassociate (); /∗ . . . ∗/ 4.2.2 Implementacja modułu Ieee80211AgentScanSTA Moduł Ieee80211AgentScanSTA ma następujące odpowiedzialności: – Wysyłanie żądania rozpoczęcia sondowania łącza, – Odbieranie wyników sondowania łącza, – Wybór punktu dostępowego z listy punktów dostępowych, – Wymuszanie etapu podłączenia i uwierzytelniania. Pierwsze żądanie sondowania łącza wysyłane jest po czasie równym wartości parametru startingTime. Jeśli parametr ten nie jest użyty w pliku INI to pierwsze żądanie wysyłane jest po losowym czasie o rozkładzie jednostajnym w przedziale (0, maxChannelT ime). Listing 4.13 przedstawia fragment metody initialize(...) odpowiedzialnej za wstępną inicjalizację parametrów modułu. Metoda scheduleAt(...) służy do wysłania wiadomości zwrotnej (ang. self-message) po wyznaczonym czasie. Konstruktor wiadomości typu cMessage korzysta z argumentów odpowiadających nazwie oraz rodzajowi komunikatu. Listing 4.13: Ustalanie czasu uruchomienia procedury sondowania łącza. 1 3 5 i f ( par ( ” s t a r t i n g T i m e ” ) . d o u b l e V a l u e () >0) s c h e d u l e A t ( simTime ()+ par ( ” s t a r t i n g T i m e ” ) . d o u b l e V a l u e ( ) , new cMessage ( ” s t a r t U p ” , MK STARTUP ) ) ; else s c h e d u l e A t ( simTime ()+ u ni for m ( 0 , maxChannelTime ) , new cMessage ( ” s t a r t U p ” , MK STARTUP ) ) ; Listing 4.14 przedstawia odebranie wiadomości MK STARTUP w tym samym module. Metoda handleTimer(...) wywoływana jest przez przeciążoną metodę handleMessage(...). Metoda handleMessage(...) wywoływana jest każdorazowo, gdy moduł otrzymuje wiadomość. Metoda handleTimer(...) jest w tym przypadku wywoływana tylko dla wiadomości zwrotnych. 46 Listing 4.14: Ustalanie czasu uruchomienia procedury sondowania łącza. 2 4 6 void Ieee80211AgentScanSTA : : handleTimer ( cMessage ∗msg ) { i f ( msg−>getKind ()==MK STARTUP) { EV << ” S t a r t i n g up\n” ; sendScanRequest ( ) ; /∗ . . . ∗/ Metoda sendScanRequest() polega na utworzeniu instancji klasy Ieee80211Prim ScanRequest i wysłaniu jej do modułu Ieee80211MgmtSTA. Wysłanie wiadomości Ieee80211Prim ScanRequest inicjalizuje pętle sondowania łącza. Zakończywszy sondowanie łącza moduł Ieee80211MgmtSTA odpowiada wiadomością Ieee80211Prim ScanConfirm. Symulator ponownie wykorzystuje przeciążoną metodę modułu handleMessage(...). Przepływ sterowania zostaje przekierowany do metody processScanConfirm(...). Listing 4.15 obrazuje ponowne zlecenie procedury sondowania łącza. Metoda chooseBSS zawiera algorytm wyboru punktu dostępowego z listy punktów dostępowych otrzymanych w wyniku sondowania. Zastosowano algorytm dostępny w źródłach projektu INET owocujący zwróceniem punktu dostępowego o najwyższej sile sygnału. Wynikiem jest indeks, który pozwala pobrać opis punktu dostępowego z pomocą metody getBssList(...). Klasa Ieee80211Prim BSSDescription opakowuje informacje o wybranym punkcie dostępowym. Zamiast kontynuacji sekwencji roamingu moduł Ieee80211AgentScanSTA zapamiętuje wybrany punkt dostępowy jako aktualnie najlepszy w zmiennej bestAP. Aktualnie najlepszy punkt dostępowy bestAP przekazywany jest modułowi Ieee80211AgentCommSTA z pomocą sygnału forceAuth. Po emisji sygnału forceAuth moduł kontynuuje wykonanie pętli sondowania łącza. Listing 4.15: Kontynuacja pętli sondowania łącza. 1 3 5 7 void Ieee80211AgentScanSTA : : p r o c e s s S c a n C o n f i r m ( I e e e 8 0 2 1 1 P r i m S c a n C o n f i r m ∗ r e s p ) { /∗ . . . ∗/ b s s I n d e x = chooseBSS ( r e s p ) ; /∗ . . . ∗/ I e e e 8 0 2 1 1 P r i m B S S D e s c r i p t i o n& b s s D e s c = r e s p −>g e t B s s L i s t ( b s s I n d e x ) ; EV << ” Chosen AP a d d r e s s=” << b s s D e s c . getBSSID ( ) << ” from l i s t , s t a r t i n g a u t h e n t i c a t i o n \n” ; 9 /∗ ∗@hary : I m m i d i a t e l y f o r c e a u t h e n t i c a t e t o b e t t e r AP∗/ // s e n d A u t h e n t i c a t e R e q u e s t ( b s s D e s c . getBSSID ( ) ) ; bestAP = b s s D e s c . getBSSID ( ) ; emit ( f o r c e A u t h S i g n a l , ( c O b j e c t ∗)(& bestAP ) ) ; /∗ ∗@hary : Continue s c a n n i n g ∗/ sendScanRequest ( ) ; 11 13 15 } 47 4.2.3 Implementacja modułu Ieee80211AgentCommSTA Moduł Ieee80211AgentCommSTA ma następujące odpowiedzialności: – Podłączenie i uwierzytelnienie w punkcie dostępowym, – Wymiana ramek typu Data zgodnie z modelem OSI. Na etapie inicjalizacji moduł Ieee80211AgentCommSTA subskrybuje sygnał forceAuth. Listing 4.16 przedstawia subskrybcję sygnału forceAuth w systemowym module nadrzędnym. Subskrypcja musi być dokonana w module będącym u szczytu hierarchi, gdyż sygnał przekazywany jest skrośnie. Listing 4.16: Subskrybcja sygnału forceAuth. s i m u l a t i o n . getSystemModule()−> s u b s c r i b e ( ” f o r c e A u t h ” , t h i s ) ; Klasa modułu Ieee80211AgentCommSTA wykorzystuje dwie zmienne typu MACAddress do śledzenia wykorzystywanych punktów dostępowych: – Zmienna prevAP zawiera adres poprzedniego punktu dostępowego, – Zmienna currAP zawiera adres aktualnego punktu dostępowego. Klasa MACAddress reprezentuje adres MAC interfejsu NIC. Zmienna typu MACAddress może przybierać wartość UNSCPECIFIED ADDRESS, która oznacza brak adresu. Użycie wartości UNSPECIFIED ADDRESS pomaga w określeniu stanu modułu Ieee80211AgentCommSTA. Odebranie sygnału forceAuth owocuje wywołaniem metody receiveSignal(...) przedstawionej na listingu 4.17. Makro Enter Method Silent() wskazuje, iż dana metoda może być wołana z poziomu innych modułów oraz, że jej wywołanie nie będzie animowane w GUI symulatora. Niezbędne jest rzutowanie otrzymanego razem z sygnałem obiektu na wskaźnik klasy MACAddress. Wskaźnik zostaje wyłuskany w celu otrzymania adresu MAC wybranego w module Ieee80211AgentScanSTA punktu dostępowego. Metoda isUnspecified() wskazuje, czy istnieje aktualny punkt dostępowy. Jeśli moduł Ieee80211AgentCommSTA nie wykorzystuje żadnego punktu dostępowego lub zmienna bestAP zawiera inny adres niż aktualnie używany, należy rozpocząć procedurę uwierzytelniania i podłączenia w nowym punkcie dostępowym. Wywołanie metody sendAuthenticateRequest(...) powoduje wysłanie wiaW odpowiedzi na wiadomość domości Ieee80211Prim AuthenticateRequest. Ieee80211Prim AuthenticateConfirm o pozytywnym rezultacie wysyłana jest wiadomość Ieee80211Prim AssociateRequest. Odebranie wiadomości Ieee80211Prim AssociateConfirm o pozytywnym rezultacie świadczy o powodzeniu próby podłączenia i uwierzytelnienia w nowym punkcie dostępowym. 48 Listing 4.17: Odebranie sygnału forceAuth. 1 void Ieee80211AgentCommSTA : : r e c e i v e S i g n a l ( cComponent∗ s o u r c e , s i m s i g n a l t signalID , cObject ∗ obj ) { 3 Enter Method Silent ( ) ; 5 MACAddress bestAP = ∗ ( ( MACAddress ∗ ) o b j ) ; 7 /∗ ∗ @hary : A u t h e n t i c a t e t o new AP i f t h e r e i s no c u r r e n t AP ∗ o r b e t t e r AP i s not c u r r e n t AP ∗/ i f ( currAP . i s U n s p e c i f i e d ( ) | | ! currAP . e q u a l s ( bestAP ) ) { currAP = bestAP ; nb−>f i r e C h a n g e N o t i f i c a t i o n (NF L2 DISASSOCIATED , m y If a ce ) ; s e n d A u t h e n t i c a t e R e q u e s t ( bestAP ) ; } 9 11 13 15 } Oczywiście, rezultat może być negatywny na dowolnym etapie. W przypadku negatywnego rezultatu moduł Ieee80211AgentCommSTA nie inicjalizuje procedury sondowania łącza, lecz oczekuje na kolejny sygnał forceAuth. Listing 4.18 obrazuje nadanie zmiennej currAP wartości UNSPECIFIED ADDRESS co powoduje wprowadzenie modułu w stan oczekiwania. Listing 4.18: Wprowadzenie modułu Ieee80211AgentCommSTA w stan oczekiwania na sygnał forceAuth. 2 4 /∗ ∗@hary : Do not s t a r t s c a n n i n g − l e t go o f t h i s AP and ∗ w a i t f o r a n o t h e r s i g n a l from Ieee80211AgentScanSTA ∗/ currAP = currAP . UNSPECIFIED ADDRESS ; 4.2.4 Implementacja modułu Ieee80211AgentScanHystSTA Odpowiedzialnością modułu Ieee80211AgentScanHystSTA jest wybór nowego punktu dostępowego z listy dostępnych wykorzystując mechanizm histerezy. Metoda chooseBSS(...) otrzymuje na wejściu instancję klasy Ieee80211Prim ScanConfirm zawierającą listę punktów dostępowych. Metoda zwraca liczbę całkowitą będącą indeksem wybranego punktu dostępowego na otrzymanej liście. Algorytm rozpoczyna odnalezieniem na liście punktu dostępowego o największej mocy nadawania. Listing 4.19 przedstawia pętlę przeglądającą. Metoda getBssListArraySize() służy za warunek końcowy przeglądania. Metoda getBssList(...) klasy Ieee80211Prim ScanConfirm zwraca instancję klasy Ieee80211Prim BSSDescription reprezentującą punkt dostępowy na liście. Przy każdym wykonaniu pętla wykorzystuje metodę getRxPower() w celu wybrania indeksu odpowiadającego punktowi o największej sile sygnału. 49 Listing 4.19: Odnalezienie punktu dostępowego o największej sile sygnału. 2 4 6 int bestIndex = 0; for ( i n t i =0; i <( i n t ) r e s p −>g e t B s s L i s t A r r a y S i z e ( ) ; i ++) { i f ( r e s p −>g e t B s s L i s t ( i ) . getRxPower ( ) > r e s p −>g e t B s s L i s t ( b e s t I n d e x ) . getRxPower ( ) ) { bestIndex = i ; } } W kolejnym kroku algorytm sprawdza, czy stacja jest podłączona do dowolnego punktu dostępowego. Jeśli stacja nie ma połączenia to mechanizm histerezy zostaje pominięty i priorytetem staje się związanie z odnalezionym punktem dostępowym. Listing 4.20 wykorzystuje wartość pola lastBest klasy Ieee80211Prim BSSDescription w celu sprawdzenia podłączenia do punktu dostępowego. Pole lastBest reprezentuje ostatnio wybrany punkt dostępowy. Metoda getBSSID() zwraca obiekt typu MACAddres. Obiekt MACAddrss o wartości UNSPECIFIED ADDRESS oznacza, że ostatnio nie znaleziono żadnego punktu dostępowego. Algorytm zapamiętuje instancję znalezionego punktu dostępowego w postaci obiektu klasy Ieee80211Prim BSSDescription. Indeks najlepszego punktu dostępowego zwracany jest natychmiast w celu nawiązania połączenia. Listing 4.20: Wybór punktu dostępowego z pominięciem histerezy. 1 3 5 /∗ I f s t a t i o n i s not c o n n e c t e d o v e r r i d e h y s t e r e s i s ∗/ i f ( l a s t B e s t . getBSSID ( ) . i s U n s p e c i f i e d ( ) ) { l a s t B e s t = r e s p −>g e t B s s L i s t ( b e s t I n d e x ) ; return b e s t I n d e x ; } W celu realizacji histerezy algorytm sprawdza, czy adres odnalezionego punktu dostępowego różni się od ostatnio wybranego. Listing 4.21 przedstawia wykorzystanie metody getBSSID() w celu zwrócenia i porównania instancji klasy MACAddress pochodzących z ostatnio wybranego punktu dostępowego oraz aktualnie najlepszego. Różnica w adresach owocuje wyzerowaniem licznika histerezy hystCount. Metoda emit(...) służy do emisji sygnału statystycznego, który nie ma wpływu na przebieg symulacji. Metoda zwraca wartość ujemną wymuszając kontynuację procesu sondowania łącza. Listing 4.21: Restart histerezy przy odnalezieniu nowego punktu dostępowego. 1 3 5 /∗ I f top AP changed − r e s t a r t h y s t e r e s i s ∗/ i f ( l a s t B e s t . getBSSID ( ) != r e s p −>g e t B s s L i s t ( b e s t I n d e x ) . getBSSID ( ) ) { l a s t B e s t = r e s p −>g e t B s s L i s t ( b e s t I n d e x ) ; hystCount = 0 ; emit ( r o a m i n g T r i g g e r I n i t S i g n a l , 0 ) ; return −1; 7 } 50 Listing 4.22 przedstawia ostatni krok algorytmu. Jeśli licznik histerezy hystCount dorównał wartość konfigurowalnej hystThreshold następuje restart histerezy oraz metoda zwraca aktualnie odnaleziony punkt dostępowy jako najlepszy wybrany. Wartość hystThreshold jest konfigurowalna przy pomocy pliku INI. Jeśli licznik histerezy hystCount jest mniejszy od wartości progowej to jest on zwiększany oraz zwracana jest wartość ujemna wymuszająca kontynuację procesu sondowania łącza. Listing 4.22: Zakończenie histerezy. 2 i f ( hystCount < h y s t T h r e s h o l d ) { hystCount++; return −1; 4 6 8 } else { hystCount = 0 ; return b e s t I n d e x ; } 51 Rozdział 5 Scenariusze doświadczalne dla modeli symulacyjnych Niniejszy rozdział opisuje scenariusze doświadczalne przygotowane pod kątem badania efektywności roamingu stacji klienckiej. Głównym celem scenariuszy jest generacja wyników wystarczających do przeprowadzenia analizy porównawczej dla metody wyzwalania przez sondowanie oraz standardowej procedury roamingu. Posługuję się terminologią zdefiniowaną w rozdziale 2.3.1. Rozpoczynam od opisu metodyki przygotowania scenariuszy wykorzystującej narzędzia udostępniane przez środowisko symulacyjne OMNet++. W dalszej części opisuję środowisko doświadczalne będące podstawą dla każdego z eksperymentów. Przedstawiam opis bazowych parametrów wejściowych oraz prezentuję sposób dziedziczenia konfiguracji przez konkretne scenariusze. 5.1 Tworzenie scenariuszy doświadczalnych w środowisku OMNet++ Doświadczenie w sensie środowiska OMNet++ składa się z definicji sieci oraz pliku konfiguracyjnego. Sieć doświadczalna definiowana jest z pomocą plików NED (ang. network description). Pliki NED opisują relacje między modułami oraz udostępniają dostępne parametry konfiguracyjne. Relacje między modułami reprezentują połączenia sieciowe. Parametry zdefiniowane przy pomocy nazwy w pliku NED są w pełni konfigurowalne z poziomu pliku typu INI. Plik typu INI pozwala na stosowanie dodatkowej składni wspomagającej proces organizacji scenariuszy doświadczalnych. Składnia pliku INI pozwala na definiowanie list wartości parametrów generujących dodatkowe przebiegi oraz tworzenie hierarchii dziedziczenia parametrów wejściowych. Łańcuch dziedziczenia sekcji konfiguracyjnych Scenariusze doświadczalne zostały przygotowane z wykorzystaniem mechanizmu dziedziczenia wbudowanego w składnie pliku INI. Listing 5.1 przedstawia przykładowe sekcje 52 konfiguracyjne. Nazwy konfiguracji wszystkich przygotowanych scenariuszy doświadczalnych poprzedzone są przedrostkiem Ex w celu odróżnienia od konfiguracji pośrednich. Konfiguracje pośrednie dziedziczą po konfiguracji bazowej i tworzą zestawy umożliwiające konstrukcję przejrzystych scenariuszy docelowych. W celu odnalezienia wartości danego parametru symulator przeszukuje hierarchię konfiguracji w kolejności: ExLinearMobilityIntersecting, LinearMobility, ApCoverageIntersecting, General. Listing 5.1: Łańcuch dziedziczenia sekcji konfiguracyjnych. 2 4 6 8 [ General ] ... [ Config ApCoverageIntersecting ] ... [ Config LinearMobility ] ... [ Config ExLinearMobilityIntersecting ] extends = LinearMobility , ApCoverageIntersecting Generacja liczb pseudolosowych Symulacje przedstawione w tym rozdziale korzystają z wbudowanego w środowisko OMNet++ generatora liczb pseudolosowych na bazie algorytmu Mersenne Twister. Dokumentacja symulatora [11] ustala, iż długość cyklu generatora wynosi 219937 . Wejściowym ziarnem (ang. seed ) generatora jest numer przebiegu symulacji. Metodyka eksperyment-pomiar-replikacja Identyfikacja danego scenariusza symulacyjnego opiera się na trzech wartościach: – Eksperyment: Nazwa zestawu parametrów wejściowych z pliku INI, – Pomiar : Aktualne wartość parametrów z list generujących przebiegi, – Replikacja: Numer przebiegu odpowiadającego ziarnu generatora liczb pseudolosowych. Nazwy scenariuszy w niniejszym rozdziale nie będą zawierać członu odpowiadającego replikacji. Ewentualne dodatkowe przebiegi generowane przez listy parametrów są opisywane w ramach danej nazwy scenariusza. Składnia dziedziczenia konfiguracji dostępna w pliku INI pozwala na tworzenie kolejnych środowisk symulacyjnych na podstawie sieci bazowej opisanej plikiem NED. 53 5.2 Sieć bazowa scenariuszy symulacyjnych Najbardziej nadrzędny plik NED opisuje sieć bazową symulacji. Schemat graficzny pliku sieci bazowej BasicRoaming.ned przedstawiony jest na diagramie Rys. 5.1. Rysunek 5.1: Sieć bazowa BasicRoaming. Graficzna reprezentacja sieci tworzona jest automatycznie przez środowisko OMNet++ na bazie pliku NED. Listing 5.2 przedstawia definicję sieci BasicRoaming w pliku BasicRoaming.ned. Właściwość @display służy jedynie umiejscowieniu modułów na graficznej reprezentacji oraz określeniu rozmiaru środowiska roboczego symulacji. Umiejscowienie modułów jest nadpisywane w zależności od konfiguracji scenariusza doświadczalnego. Definicja sieci bazowej określa ilość i rodzaj stacji, połączenia komunikacyjne oraz pewne aspekty architektury wyższych warstw modelu OSI. Sieć bazowa zawiera trzy stacje. Stacje ap1 oraz ap2 to moduły typu AccessPoint symulujące zachowanie punktów dostępowych. Mobilna stacja kliencka host odpowiada modułowi WirelessHost opisywanemu w rozdziale dotyczącym implementacji rozwiązania wyzwalania przez sondowanie 4.2. Abstrakcyjny moduł ChannelControl reprezentuje medium transmisyjne. Moduł ChannelControl określa wzajemną widoczność modułów korzystających z bezprzewodowych interfejsów NIC. Abstrakcyjny moduł IPv4NetworkConfigurator odpowiada za tworzenie topologii sieci w sensie protokołu IP na bazie zawartości modułów obecnych w sieci bazowej. 54 Listing 5.2: Definicja sieci BasicRoaming. 2 4 6 8 10 12 14 16 18 20 network BasicRoaming { parameters : @ d i s p l a y ( ”bgb =1500 ,1500 ” ) ; submodules : host : WirelessHost { @ d i s p l a y ( ”p =107 ,301; r = , ,#707070 ” ) ; } ap1 : A c c e s s P o i n t { @ d i s p l a y ( ”p =50 ,300; r = , ,#707070 ” ) ; } ap2 : A c c e s s P o i n t { @ d i s p l a y ( ”p =550 ,300; r = , ,#707070 ” ) ; } c h a n n e l C o n t r o l : ChannelControl { @ d i s p l a y ( ”p=80 ,22 ” ) ; } c o n f i g u r a t o r : IPv4NetworkConfigurator { @ d i s p l a y ( ”p=235 ,23 ” ) ; } } Sekcja General pliku konfiguracyjnego INI przeznaczona jest dla parametrów wejściowych sieci bazowej. Sekcja ta jest najbardziej rozległa, gdyż konfiguruje w sposób explicite wiele wybranych parametrów, które określają ogólny stan sieci. Zmiany w podzbiorach parametrów sieci bazowej generują czytelne scenariusze potomne. Dokonałem podziału parametrów sekcji General na podzbiory związane z konfiguracją określonych aspektów sieci bazowej. Nazwy parametrów wykorzystują składnię sumulatora OMNet++ dla plików INI. W szczególności, symbol * odpowiada ciągowi znaków z wyłączeniem znaku kropki (.), który daje dostęp do parametrów danego modułu. Symbol ** odpowiada dowolnemu ciągowi znaków. Należy pamiętać, iż brak parametru w pliku INI oznacza, że nie został on skonfigurowany. Nieskonfigurowane parametry inicjalizowane są wartościami typu default. Wartości typu default określane są na poziomie składni plików NED. Konfigurację parametrów sekcji General podzieliłem na następujące zestawy: – Parametry wejściowe obszaru roboczego i przebiegu symulacji, – Parametry wejściowe punktów dostępowych ap1 oraz ap2, – Parametry wejściowe związane z transmisją ramek typu Data, – Parametry wejściowe anten kart radiowych, – Parametry wejściowe mobilnej stacji klienckiej, – Parametry wejściowe modułów typu agent, – Parametry wejściowe medium transmisji. 55 Parametry wejściowe obszaru roboczego i przebiegu symulacji Tab. 5.1 zawiera parametry związane z przebiegiem symulacji oraz definicję obszaru roboczego. Dziennik zdarzeń w postaci pliku tekstowego elog zawiera stemple czasowe. Stemple czasowe zdarzeń są niezbędne w procesie automatycznej analizy interwałów między wybranymi zdarzeniami. Udostępniany przez symulator OMNet++ widok sekwencji zdarzeń nie nadaje się do wsadowych obliczeń na interwałach czasowych. Makro EV jest wykorzystywane jak strumień w sensie języka C++. Generacja zdarzeń typu debug odbywa się z pomocą operatora «. Tablica 5.1: Parametry konfiguracyjne sieci bazowej - symulacja i obszar roboczy Parametr Wartość Komentarz network BasicRoaming Definicja sieci. record-eventlog true Symulacja będzie generować dziennik zdarzeń elog. repeat 10 Ilość możliwych przebiegów symulacji. sim-time-limit 120s Czas trwania przebiegu symulacji. **.module-eventlog-recording true Każdy moduł symulacji będzie generować zdarzenia. **.debug true Możliwość generowania zdarzeń z pomocą makra EV. **.coreDebug false Brak zdarzeń z modułów odpowiedzialnych za pracę symulatora. **.constraintAreaMinX 0m Początek obszaru roboczego względem osi X układu odniesienia. **.constraintAreaMinY 0m Początek obszaru roboczego względem osi Y układu odniesienia. **.constraintAreaMaxX 1500m Koniec obszaru roboczego względem osi X układu odniesienia. **.constraintAreaMaxY 1500m Koniec obszaru roboczego względem osi Y układu odniesienia. 56 Parametry wejściowe punktów dostępowych ap1 oraz ap2 Tab. 5.2 demonstruje konfigurację punktów dostępowych będących częścią środowiska doświadczalnego. Wstępnie tworzone są dwie infrastruktury BSS pracujące na rozdzielnych częstotliwościach i oferujące uwierzytelnianie w trybie open-system. Tablica 5.2: Parametry konfiguracyjne sieci bazowej - punkty dostępowe. Parametr Wartość Komentarz **.ap1.wlan[*].mac.address 00:00:00:00:00:01 Adres MAC punktu dostępowego ap1. **.ap2.wlan[*].mac.address 00:00:00:00:00:02 Adres MAC punktu dostępowego ap2. **.ap1.wlan[*].mgmt.ssid AP1 Identyfikator SSID infrastruktury punktu dostępowego ap1. **.ap2.wlan[*].mgmt.ssid AP2 Identyfikator SSID infrastruktury punktu dostępowego ap2. **.ap*.wlan[*].mgmt.beaconInterval 100ms Interwał ramek typu Beacon punktu dostępowego ap1 i punktu dostępowego ap2. **.ap1.wlan[*].radio.channelNumber 2 Numer kanału pracy kart radiowych punktu dostępowego ap1. **.ap2.wlan[*].radio.channelNumber 3 Numer kanału pracy kart radiowych punktu dostępowego ap2. **.wlan[*].mgmt.numAuthSteps Dla wszystkich stacji liczba kroków uwierzytelniania odpowiada procedurze open-system. 2 57 Parametry wejściowe związane z transmisją ramek typu Data Tab. 5.3 przedstawia parametry związane z transmisją ramek typu Data. Tablica 5.3: Parametry konfiguracyjne sieci bazowej - transmisja danych. Parametr Wartość Komentarz **.wlan*.bitrate 54Mbps Wstępna przepływność dla protokołu wymiany danych. **.mgmt.frameCapacity 10 Rozmiar kolejki komunikatów w jednostce mgmt. **.mac.maxQueueSize 14 Maksymalny rozmiar kolejki komunikatów w jednostce mac. **.mac.rtsThresholdBytes 4000B Progowy rozmiar pakietu wyzwalający procedurę RTS/CTS. **.wlan[*].mac.retryLimit 7 Ilość podejść do retransmisji ramek potwierdzanych o długości mniejszej od rtsTreshold. Parametry wejściowe anten kart radiowych Tab. 5.4 przedstawia parametry charakteryzujące anteny kart interfejsów bezprzewodowych. Symulator używa parametrów thermalNoise, sensitivity, pathLossAlpha oraz transmitterPower do wstępnej klasyfikacji ramki. Jeśli ramka jest prawidłowa to dodatkowo używany jest parametr snirTreshold, który decyduje, czy SNR danej ramki pozwala na prawidłowy odczyt. Tablica 5.4: Parametry konfiguracyjne sieci bazowej - antena karty radiowej. Parametr Wartość Komentarz **.radio.transmitterPower 2.0mW Moc anteny karty radiowej. **.radio.thermalNoise -110dBm Wstępna wartość bazowe zaszumienie medium transmisyjnego. **.radio.sensitivity -85dBm Czułość odbiornika karty radiowej. **.radio.pathLossAlpha 2 Spadek mocy sygnału nadajnika karty radiowej. **.radio.snirThreshold 4dB Próg wartości SNR poniżej, którego odebrana ramka nie może zostać odkodowana. 58 Parametry wejściowe mobilnej stacji klienckiej Tab. 5.5 przedstawia konfigurację mobilnej stacji klienckiej. Położenie stacji zależy od właściwości @display. Zgodnie z niniejszą konfiguracją stacja porusza się ruchem prostoliniowym zgodnie z kierunkiem osi X układu odniesienia. Prędkość stacji wynosi 20 [m/s]. Większość parametrów stacji klienckiej jest przeznaczona do nadpisania przez scenariusze potomne. Tablica 5.5: Parametry konfiguracyjne sieci bazowej - mobilna stacja kliencka. Parametr Wartość Komentarz **.host.wlan[*].radio.channelNumber 0 Wstępny numer kanału pracy kart radiowych stacji klienckiej. **.mac.address auto Automatyczna generacja brakujących adresów MAC. **.mobility.initFromDisplayString true Wstępne położenie stacji na bazie diagramu symulacji GUI. **.host*.mobilityType LinearMobility Stacja kliencka porusza się ruchem prostoliniowym. **.host*.mobility.speed 20mps Stacja kliencka porusza się z prędkością 20 metrów na sekundę. **.host*.mobility.angle 0 Stacja kliencka porusza się w kierunku osi X układu odniesienia. **.host*.mobility.acceleration 0 Stacja kliencka nie posiada przyspieszenia. **.host*.mobility.updateInterval 100ms Interwał odświeżania położenia stacji klienckiej. 59 Parametry wejściowe modułów typu agent Tab. 5.6 przedstawia konfigurację parametrów wykorzystywanych przez moduły typu agent. Moduły agent są odpowiedzialne za proces sondowanie łącza, uwierzytelniania oraz podłączenia do punktu dostępowego. Przypisanie parametrowi channelsToScan wartości pustej oznacza wszystkie częstotliwości dostępne w definicji medium transmisyjnego. Parametry minChannelTime oraz maxChannelTime zostały opisane w rozdziale dotyczącym szczegółowej analizy roamingu 2. Tablica 5.6: Parametry konfiguracyjne sieci bazowej - moduły typu agent. Parametr Wartość Komentarz **.wlan[*].agent.activeScan true Wszystkie moduły typu agent używają procedury sondowania aktywnego. **.wlan[*].agent.channelsToScan Procedura sondowania łącza bada wszystkie kanały dostępne w medium transmisyjnym. **.wlan[*].agent.probeDelay 0.1s Interwał wysyłania typu ProbeReq. **.wlan[*].agent.minChannelTime 0.15s Ujęty w IEEE802.11 ChannelTime. **.wlan[*].agent.maxChannelTime 0.3s Ujęty w standardzie IEEE802.11 czas maxChannelTime. **.wlan[*].agent.authenticationTimeout 5s Niedoczas dla procedury uwierzytelniania w punkcie dostępowym. **.wlan[*].agent.associationTimeout 5s Niedoczas dla procedury podłączania do punktu dostępowego. 60 ramek standardzie czas min- Parametry wejściowe medium transmisji Tab. 5.7 zawiera parametry modułu ChannelControl. Niniejsze parametry określają wstępną widoczność stacji. Wstępna widoczność bazuje na podanych wartościach granicznych i jest pierwszym krokiem w stronę poprawnego przesłania wiadomości. Tablica 5.7: Parametry konfiguracyjne sieci bazowej - medium transmisji. Parametr Wartość Komentarz *.channelControl.carrierFrequency 2.4GHz Pasmo pracy medium transmisyjnego. *.channelControl.pMax 2.0mW Maksymalna moc nadawania w medium transmisyjnym. *.channelControl.sat -110dBm Próg zaszumienia medium transmisyjnego. *.channelControl.alpha 2 Górne ograniczenie współczynnika spadku mocy sygnału dla anten. *.channelControl.numChannels 5 Liczba dostępnych częstotliwości pracy w medium transmisyjnym. 61 5.3 Konfiguracje pośrednie Konfiguracje pośrednie dziedziczą po konfiguracji sieci bazowej, ale nie są podawane na wejściu przebiegów symulacyjnych. Nadpisują one wąskie grupy parametrów w celu wywołania określonego zjawiska. Konfiguracje pośrednie stanowią budulec docelowych scenariuszy doświadczalnych. Konfiguracja ApCoverageIntersecting Celem konfiguracji przedstawionej na listingu 5.3 jest zmiana położenia punktów dostępowych ap1 oraz ap2. Zmiana położenia ma na celu wywołanie zjawiska nakładania się obszarów zasięgu sygnału anten kart radiowych. Parametr initFromDisplayString musi zostać zanegowany w celu nadpisania wstępnego położenia punktów dostępowych. Listing 5.3: Konfiguracja ApCoverageIntersecting. 1 3 5 7 9 [ Config ApCoverageIntersecting ] ∗ ∗ . ap1 . m o b i l i t y . i n i t F r o m D i s p l a y S t r i n g = f a l s e ∗ ∗ . ap2 . m o b i l i t y . i n i t F r o m D i s p l a y S t r i n g = f a l s e ∗ ∗ . ap1 . m o b i l i t y . i n i t i a l X = 600m ∗ ∗ . ap1 . m o b i l i t y . i n i t i a l Y = 750m ∗ ∗ . ap1 . m o b i l i t y . i n i t i a l Z = 0m ∗ ∗ . ap2 . m o b i l i t y . i n i t i a l X = 900m ∗ ∗ . ap2 . m o b i l i t y . i n i t i a l Y = 750m ∗ ∗ . ap2 . m o b i l i t y . i n i t i a l Z = 0m Konfiguracja ApCoverageSeparate Szablon konfiguracji jest analogiczny do przykładu 5.3. W tym przypadku celem jest utworzenie infrastruktur BSS o nienakładających się obszarach zasięgu mocy sygnału. Konfiguracja ApCoverageBoundary Szablon konfiguracji jest analogiczny do przykładu 5.3. W tym przypadku celem jest utworzenie infrastruktur BSS o stykając się obszarach zasięgu mocy sygnału. Konfiguracja CircleMobility Konfiguracja przedstawiona na listingu 5.4 dotyczy mobilnej stacji klienckiej. Celem jest wprowadzenie stacji klienckiej w ruch po okręgu z zadanymi parametrami. Zanegowanie parametru initFromDisplayString jest niezbędne do nadpisania współrzędnych sieci bazowej. Nadanie parametrowi mobilityType wartości CircleMoblity umożliwia dalszy opis ruchu z pomocą: – współrzędnych środka okręgu cx, cy oraz cz, – promienia okręgu r, 62 – prędkości stacji speed, – początkowego położenia stacji startAngle, – interwału aktualizacji położenia stacji updateInterval. Listing 5.4: Konfiguracja CircleMoblity. 1 3 5 7 9 [ Config C i r c l e M o b i l i t y ] ∗∗. host . mobility . initFromDisplayString = f a l s e ∗ ∗ . host ∗ . mobilityType = ” C i r c l e M o b i l i t y ” ∗ ∗ . h o s t . m o b i l i t y . cx = 600m ∗ ∗ . h o s t . m o b i l i t y . cy = 750m ∗ ∗ . h o s t . m o b i l i t y . c z = 0m ∗ ∗ . h o s t . m o b i l i t y . r = 180m ∗ ∗ . h o s t ∗ . m o b i l i t y . s p e e d = 20mps ∗ ∗ . h o s t ∗ . m o b i l i t y . s t a r t A n g l e = 180 deg ∗ ∗ . h o s t ∗ . m o b i l i t y . u p d a t e I n t e r v a l = 100ms Konfiguracja LinearMobility Ruch prostoliniowy jest elementem konfiguracji sieci bazowej. Jedynym zadaniem sekcji LinearMobility jest nadanie stacji klienckiej prawidłowego położenia poprzez zanegowanie parametru initFromDisplayString oraz nadanie parametrom initialX, initialY, initialZ pożądanych wartości. Konfiguracja DualInterface Sposób konfiguracji przedstawiony jest na listingu 5.5. Konfiguracja pozwala na użycie interfejsów Ieee80211ScanNic oraz Ieee80211CommNic wytworzonych w ramach niniejszej pracy. Konfiguracja sieci bazowej korzysta z pojedynczego interfejsu klasy Ieee80211Nic. Zwiększenie wartości parametru numRadios udostępnia dodatkowe interfejsy NIC, których typ można określić z pomocą wzorca typename. Parametry mgmtID oraz agentID służą związaniu modułów w celu filtrowania wiadomości rozgłoszeniowych. Listing 5.5: Konfiguracja DualInterface. 2 4 6 8 [ Config DualInterface ] ∗ ∗ . h o s t . numRadios = 2 ∗ ∗ . h o s t . wlan [ 0 ] . typename = ” I e e e 8 0 2 1 1 S c a n N i c ” ∗ ∗ . h o s t . wlan [ 0 ] . mgmt . mgmtID = 0 ∗ ∗ . h o s t . wlan [ 0 ] . a g e n t . agentID = 0 ∗ ∗ . h o s t . wlan [ 1 ] . typename = ” Ieee80211CommNic ” ∗ ∗ . h o s t . wlan [ 1 ] . mgmt . mgmtID = 1 ∗ ∗ . h o s t . wlan [ 1 ] . a g e n t . agentID = 1 63 Konfiguracja DualInterfaceHyst Szablon konfiguracji jest analogiczny do przykładu przedstawionego na listingu 5.5. W celu wykorzystania przygotowanego interfejsu Ieee80211ScanHystNic wykorzystano wzorzec typename 5.6. Listing 5.6: Fragment konfiguracji DualInterfaceHyst. ∗ ∗ . h o s t . wlan [ 0 ] . typename = ” I e e e 8 0 2 1 1 S c a n H y s t N i c ” 5.4 Docelowe scenariusze doświadczalne Sekcje konfiguracji pliku INI, których nazwy poprzedzone są przedrostkiem Ex opisują scenariusze docelowe. Scenariusze docelowe przeznaczone są do bezpośredniej parametryzacji przebiegów symulacyjnych. Sekcje konfiguracyjne scenariuszy docelowych wykorzystują składnię extends w celu konstrukcji pożądanego zestawu zjawisk na bazie scenariuszy pośrednich. Scenariusz ExCircleMobilityDualInterfaceIntersecting Diagram 5.2 przedstawia widok scenariusza po uruchomieniu w graficznym środowisku przebiegu symulacji. Obszary zasięgu sygnału punktów dostępowych ap1 oraz ap2 nakładają się. Mobilna stacja kliencka porusza się ruchem po okręgu wokół punktu dostępowego ap1. Podczas ruchu w obszarze nakładania się wpływu punktów dostępowych stacja kliencka zbliża się do punktu dostępowego ap2. W chwili zbliżenia stacja jest nadal w zasięgu punktu dostępowego ap1. Celem scenariusza jest zbadanie ilości wyzwoleń sekwencji roamingu. Stacja kliencka korzysta z rozwiązania wyzwalania przez sondowanie utworzonego w ramach niniejszej pracy. Algorytm wyboru najlepszego punktu dostępowego z listy dostępnych pozbawiony jest mechanizmu histerezy. Scenariusz dziedziczy po konfiguracjach pośrednich DualInterface, CircleMobility, ApCoverageIntersecting. Rysunek 5.2: Scenariusz ExCircleMobilityDualInterfaceIntersecting. 64 Scenariusz ExCircleMobilityDualInterfaceHystIntersecting Szablon doświadczenia jest analogiczny do scenariusza ExCircleMobilityDualInterfaceIntersecting 5.4. Celem scenariusza jest zbadanie ilości wyzwoleń sekwencji roamingu przy wykorzystaniu algorytmu wyboru najlepszego punktu dostępowego implementującego mechanizm histerezy. Scenariusz dziedziczy po konfiguracjach pośrednich DualInterfaceHyst, CircleMobility, ApCoverageIntersecting. Scenariusz ExCircleMobilityIntersecting Szablon doświadczenia jest analogiczny do scenariusza ExCircleMobilityDualInterfaceIntersecting 5.4. Stacja kliencka korzysta ze standardowego pojedynczego interfejsu Ieee80211Nic. Celem scenariusza jest porównanie ilości wyzwoleń sekwencji roamingu w zestawieniu z metodą wyzwalania przez sondowanie. Scenariusz dziedziczy po konfiguracjach pośrednich CircleMobility, ApCoverageIntersecting. Scenariusz ExLinearMobilityDualInterfaceIntersecting Diagram 5.3 przedstawia widok przebiegu symulacji ExLinearMobilityDualInterfaceIntersecting. W niniejszym przypadku mobilna stacja kliencka porusza się ruchem prostoliniowym przecinając dwukrotnie obszar zasięgu sygnału punktów dostępowych ap1 oraz ap2. Celem scenariusza jest zbadanie efektywności roamingu z wykorzystaniem wyzwalania przez sondowanie w przypadku stacji, która podczas sekwencji roamingu nie opuszcza obszaru wpływu przynajmniej jednego z punktów dostępowych. Obszary zasięgu sygnały punktów dostępowych ap1 oraz ap2 nakładają się. Scenariusz dziedziczy po konfiguracjach pośrednich DualInterface, LinearMobility, ApCoverageIntersecting. Rysunek 5.3: Scenariusz ExLinearMobilityDualInterfaceIntersecting. 65 Scenariusz ExLinearMobilityDualInterfaceHystIntersecting Szablon doświadczenia jest analogiczny do scenariusza ExLinearMobilityDualInterfaceIntersecting 5.4. Algorytm wyboru najlepszego punktu dostępowego z listy dostępnych wykorzystuje mechanizm histerezy. Celem scenariusza jest ocena wpływu mechanizmu histerezy w module Ieee80211ScanHystNic na efektywność roamingu w porównaniu do modułu Ieee80211ScanNic. Scenariusz dziedziczy po konfiguracjach pośrednich DualInterfaceHyst, LinearMobility, ApCoverageIntersecting. Scenariusz ExLinearMobilityIntersecting Szablon doświadczenia jest analogiczny do scenariusza ExLinearMobilityDualInterfaceIntersecting 5.4. W tym przypadku stacja kliencka korzysta ze standardowego pojedynczego interfejsu Ieee80211Nic. Scenariusz dziedziczy po konfiguracjach pośrednich LinearMobility, ApCoverageIntersecting. Scenariusz ExLinearMobilityDualInterfaceSeparate Obszary zasięgu sygnału punktów dostępowych ap1 oraz ap2 są rozłączne. Celem scenariusza jest zbadanie zachowania metody wyzwalania przez sondowanie w sytuacji chwilowego braku jakichkolwiek punktów dostępowych. Scenariusz dziedziczy po konfiguracjach pośrednich DualInterface, LinearMobility, ApCoverageSeparate. Scenariusz ExLinearMobilitySeparate Szablon doświadczenia jest analogiczny do scenariusza ExLinearMobilityDualInterfaceSeparate 5.4. W tym przypadku stacja kliencka korzysta ze standardowego pojedynczego interfejsu Ieee80211Nic. Scenariusz dziedziczy po konfiguracjach pośrednich LinearMobility, ApCoverageSeparate. Scenariusz ExLinearMobilityDualInterfaceBoundary W przypadku niniejszego scenariusza obszary zasięgu sygnału punktów dostępowych ap1 oraz ap2 stykają się. Celem scenariusza jest zbadanie zachowania metody wyzwalania przez sondowanie w sytuacji, gdy stacja kliencka przekracza nienakładające się obszary wpływu punktów dostępowych. Scenariusz dziedziczy po konfiguracjach pośrednich DualInterface, LinearMobility, ApCoverageBoundary. Scenariusz ExLinearMobilityBoundary Szablon doświadczenia jest analogiczny do scenariusza ExLinearMobilityDualInterfaceBoundary 5.4. W tym przypadku stacja kliencka korzysta ze standardowego pojedynczego interfejsu Ieee80211Nic. Scenariusz dziedziczy po konfiguracjach pośrednich LinearMobility, ApCoverageBoundary. 66 Rozdział 6 Analiza porównawcza wyników symulacji Niniejszy rozdział dotyczy wyników przebiegów symulacyjnych dla scenariuszy doświadczalnych. Opisuję w nim metodologię obliczania efektywności roamingu na podstawie plików wynikowych generowanych przez środowisko symulacyjne OMNet++. Przedstawiam zgromadzone wyniki pomiarów dla scenariuszy opisanych w rozdziale 5.4. Przeprowadzam zbiorczą analizę porównawczą wyników oceniając efektywność roamingu stacji klienckiej korzystającej z metody wyzwalania przez sondowanie. Ostatecznie porównuję wyniki symulacyjne z rzeczywistymi pomiarami opóźnień ramek sekwencji roamingu. Pomiary rzeczywiste pochodzą z pracy Pomiar opóźnień ramek standardu 802.11 - narzędzie hop-sniffer [7]. Porównanie z wynikami rzeczywistymi ma na celu próbę oszacowania realnych korzyści wynikających z zastosowania rozwiązania interfejsów równoległych. 6.1 Metodologia analizy porównawczej Środowisko OMNet++ udostępnia zestaw narzędzi służących organizacji i prezentacji wybranych aspektów symulacji. Z punktu widzenia niniejszej pracy najbardziej istotna byłaby możliwość pomiaru i gromadzenia interwałów czasowych między wybranymi zdarzeniami. Zdarzenia generowane przez modele symulacyjne zapisywane są do pliku elog pełniącego rolę dziennika zdarzeń (ang. event log). Każde zdarzenie opatrzone jest stemplem czasowym. Jeśli chodzi o symulator w wersji 4.3.1 to jedynym sposobem prezentacji zawartości pliku elog jest widok sekwencji zdarzeń. Widok sekwencji zdarzeń stanowi graficzną reprezentację komunikatów wymienianych podczas przebiegu symulacyjnego. Przydatność graficznej reprezentacji komunikatów na etapie tworzenia i dostrajania modeli nie przenosi się na ostateczną metodykę gromadzenia wyników. Ze względu na potrzebę wsadowego przetwarzania plików elog wytworzyłem narzędzie elog-parser. Narzędzie elog-parser pozwala na gromadzenie wyników kolejnych przebiegów symulacji w postaci możliwych interwałów czasowych między wybranymi zdarzeniami. 67 W celu pełnej automatyzacji procesu gromadzenia wyników wytworzyłem skrypt run experiments. Zadaniem skryptu run experiments jest uruchomienie wybranych przebiegów zadanych scenariuszy docelowych z pomocą narzędzi linii poleceń symulatora OMNet++. Skrypt wykorzystuje narzędzie elog-parser w celu gromadzenia wyników symulacji. 6.1.1 Narzędzie elog-parser Aplikacja elog-parser ma postać skryptu w języku Python. Główną funkcjonalnością skryptu jest obliczanie interwałów czasowych między wszystkimi permutacjami, kombinacjami lub iloczynem zadanych typów wiadomości. Specyfikacja wiadomości ma postać pliku XML. Listing 6.1 przedstawia plik konfiguracyjny. Aplikacja udostępnia metody specyfikacji wiadomości w trybie msg oraz custom. Listing 6.1: Plik konfiguracyjny aplikacji elog-parser. 1 3 5 7 9 11 13 15 17 19 21 23 25 <?xml v e r s i o n=” 1 . 0 ”?> <i n t e r v a l > <!−− <module name=” h o s t ” type=” i n e t . nodes . i n e t . W i r e l e s s H o s t ” c l a s s=”cCompoundModule”> <module name=” wlan [ 1 ] ” type=” i n e t . l i n k l a y e r . i e e e 8 0 2 1 1 . Ieee80211CommNic ” c l a s s=”cCompoundModule”> <module name=”mgmt” type=” i n e t . l i n k l a y e r . i e e e 8 0 2 1 1 . mgmt . Ieee80211MgmtSTA” c l a s s=”Ieee80211MgmtSTA”> <msg c l a s s=” I e e e 8 0 2 1 1 P r i m A u t h e n t i c a t e R e q u e s t ”/> </module> <module name=” a g e n t ” type=” i n e t . l i n k l a y e r . i e e e 8 0 2 1 1 . mgmt . Ieee80211AgentCommSTA” c l a s s=”Ieee80211AgentCommSTA”> <msg c l a s s=” I e e e 8 0 2 1 1 P r i m A s s o c i a t e C o n f i r m ”/> </module> </module> </module> −−> <custom c t x=” r o a m i n g T r i g g e r I n i t ”/> <custom c t x=” r o a m i n g T r i g g e r ”/> <custom c t x=” r o a m i n g S u c c e s s ”/> </ i n t e r v a l > Element typu msg służy do opisywania zdarzeń generowanych przez moduły INET. Element typu msg powinien być umieszczony w drzewiastej strukturze elementów typu module. Atrybuty name, type oraz class służą odnalezieniu danego modułu w pliku elog. Zastosowanie struktury drzewiastej jest następstwem hierarchicznej struktury modułów symulacyjnych w 68 środowisku OMNet++. Aplikacja wykorzystuje numery pid (ang. parent identification number ) do odnalezienia właściwej gałęzi modułów, gdyż pojedyncze elementy module nie są unikalne. Numery id modułów wykorzystywane są do filtrowania wiadomości. Do jednoznacznego określenia wiadomości wystarcza atrybut class zawierający nazwę klasy modułu. Element typu custom służy do odnajdywania zdarzeń generowanych specjalnie na użytek aplikacji elog-parser. Listing 6.2 przedstawia użycie makra EV w postaci strumienia do generacji zdarzenia typu CUSTOM. Zdarzenie powinno mieć postać CUSTOM ctx kontekst zdarzenia t aktualny czas symulacji c nazwa modułu generatora id identyfikator modułu generatora. Zdarzenie w tej postaci zostanie wykryte przez aplikację elog-parser korzystając z atrybutu ctx. Listing 6.2: Użycie makra EV do generacji zdarzeń typu CUSTOM. 2 4 EV << ”CUSTOM c t x r o a m i n g T r i g g e r ” << ” t ” << s i m u l a t i o n . getSimTime ( ) . s t r ( ) << ” c ” << t h i s −>getClassName ( ) << ” i d ” << t h i s −>g e t I d ( ) << ” \n” ; 6.1.2 Skrypt run experiments Skrypt przeznaczony jest dla powłoki Bash. Listing 6.3 przedstawia dwie główne listy skryptu. Dla każdej konfiguracji z listy CONFS uruchamiane są przebiegi z listy RUNS. Skrypt wykorzystuje komendę symulatora OMNet++ o nazwie opp run do uruchamiania kolejnych przebiegów. Wynikowe dane w postaci plików elog przekazywane są na wejście aplikacji elog-parser, którego konfigurację przedstawia listing 6.1. Aplikacja elog-parser znajduje w plikach dziennika zdarzeń wszystkie wystąpienia wiadomości roamingTriggerInit, roamingTrigger oraz roamingSuccess. Dla stempli czasowych odnalezionych zdarzeń aplikacja znajduje możliwe kombinacje i oblicza ich interwały. Listing 6.3: Fragment skryptu run experiment. 1 3 5 7 9 11 13 RUNS=(1) CONFS=( \ ExCircleMobilityDualInterfaceIntersecting \ ExCircleMobilityDualInterfaceHystIntersecting \ ExCircleMobilityIntersecting \ ExLinearMobilityDualInterfaceIntersecting \ ExLinearMobilityDualInterfaceHystIntersecting \ ExLinearMobilityIntersecting \ ExLinearMobilityDualInterfaceSeparate \ ExLinearMobilitySeparate \ ExLinearMobilityDualInterfaceBoundary \ ExLinearMobilityBoundary \ ) 69 6.2 Wyniki dla scenariuszy symulacyjnych Wyniki badań efektywności roamingu dla przygotowanych scenariuszy doświadczalnych przedstawione są w postaci tabel generowanych przez aplikację elog-parser. Kolumna kontekst nr 1 zawiera nazwę wiadomości jaka rozpoczyna znaleziony interwał. Kolumna kontekst nr 2 zawiera nazwę wiadomości, która zamyka znaleziony interwał. Kolumna interwał zawiera obliczoną różnicę między stemplami czasowymi zdarzeń. Jednostka czasu 1[sim t] odpowiada 1000[TU] (ang. time unit), czyli około 1[s]. Zmiana numeru przebiegu w ramach pojedynczego scenariusza powoduje wahania na piątym miejscu po przecinku wartości z kolumny interwał. Ze względu na fakt, iż wahania dotyczą ułamkowej części milisekundy podjąłem decyzję o porzuceniu metody uśredniania wyników z przebiegów, gdyż nie wpłynęłaby na wartość prezentowanych rezultatów. Nazwy kontekstów wiadomości pochodzą z pliku konfiguracyjnego aplikacji elog-parser 6.1. Wiadomości typu CUSTOM generowane są przez przygotowaną w ramach niniejszej pracy hierarchię modułów typu agent. Znaczenie wiadomości jest następujące: – roamingTriggerInit: Wystąpienie przesłanek o spadku jakości łącza – roamingTrigger : Wyzwolenia sekwencji roamingu, – roamingSuccess: Zakończenie etapu podłączania. Poszczególne wiersze tablic z wynikami scenariuszy doświadczalnych odpowiadają interwałowi odnalezionemu w pliku elog. W szczególności, liczba odnalezionych interwałów między zdarzeniami roamingTrigger oraz roamingSuccess odpowiada liczbie wyzwoleń procedury roamingu w ramach scenariusza doświadczalnego. Należy pamiętać, iż metoda wyzwalania przez sondowanie usuwa z sekwencji roamingu etap sondowania łącza. W rezultacie wyzwolenie sekwencji roamingu powoduje natychmiastowe przejście do etapu uwierzytelnienia i podłączenia w nowym punkcie dostępowym. Scenariusz ExCircleMobilityDualInterfaceIntersecting Tab. 6.1 przedstawia wynikowe interwały czasowe. Ze względu na brak mechanizmu histerezy w algorytmie wyboru punktu dostępowego sekwencja roamingu wyzwalana jest w skutek zbliżenia się do punktu dostępowego ap2. Czasy pojedynczych sekwencji roamingu są w tym przypadku bardzo niskie. Wyniki scenariusza ExCircleMobilityIntersecting 6.2 wskazują, iż niniejszy przypadek owocuje znacznie mniejszą efektywnością roamingu ze względu na ilość wyzwoleń. 70 Tablica 6.1: Wyniki scenariusza ExCircleMobilityDualInterfaceIntersecting. Kontekst nr 1 [nazwa] Kontekst nr 2 [nazwa] Interwał [sim t] roamingTrigger roamingTrigger roamingTrigger roamingTrigger roamingTrigger roamingSuccess roamingSuccess roamingSuccess roamingSuccess roamingSuccess 0.001091401660 0.001082258076 0.001073401660 0.001063945060 0.001055401660 Scenariusz ExCircleMobilityDualInterfaceHystIntersecting Tab. 6.2 przedstawia wynikowe interwały czasowe. Wiadomość roamingTriggerInit generowana jest przy restarcie mechanizmu histerezy. Pierwszą obserwacją są wyjątkowo długie czasy wyzwalania sekwencji roamingu. Czas wyzwalania w przypadku interfejsu Ieee80211Nic wynosi M AX BEACON S M ISSED ∗ beaconInterval, czyli 3.5 ∗ 100 = 350[ms]. Interwał długości 5-6[s] odpowiada wywołaniu procedury sondowania łącza hystT hreshold + 2 razy. Na wywołania sondowania łącza składa się restart histerezy, odliczanie oraz wyzwolenie roamingu. Wartości typu default parametru hystThreshold równa 2 nie jest wystarczająca do eliminacji wyzwoleń w przypadku stopnia nakładania się obszarów zasięgu sygnału punktów dostępowych równego około 41 . Wartość parametru hystThreshold, która zapewnia całkowitą eliminację sekwencji roamingu wynosi 5. Tablica 6.2: Wyniki scenariusza ExCircleMobilityDualInterfaceHystIntersecting. Kontekst nr 1 [nazwa] Kontekst nr 2 [nazwa] Interwał [sim t] roamingTriggerInit roamingTriggerInit roamingTriggerInit roamingTriggerInit roamingTriggerInit roamingTriggerInit roamingTriggerInit roamingTriggerInit roamingTrigger roamingTrigger roamingTrigger roamingTrigger roamingTrigger roamingTrigger roamingTrigger roamingTrigger roamingTrigger roamingSuccess roamingSuccess roamingSuccess roamingSuccess roamingSuccess roamingSuccess roamingSuccess roamingSuccess roamingSuccess 6.000000000000 5.400000000000 6.000000000000 5.400000000000 6.001081664850 5.401055401660 6.001054767280 5.401091401660 0.001091401660 0.001081664852 0.001055401660 0.001054767280 0.001091401660 Scenariusz ExCircleMobilityIntersecting Uruchomienie niniejszego scenariusza nie zaowocowało wystąpieniem sekwencji roamingu. Stacja nigdy nie opuszcza zasięgu punktu dostępowego ap1. Roamingu w przypadku interfejsu 71 Ieee80211Nic wyzwalany jest przez utratę kolejnych ramek typu Beacon. Stacja kliencka nie odnotowuje utraty ramek typu Beacon, więc sekwencja nigdy nie jest wyzwalana. Scenariusz ExLinearMobilityDualInterfaceIntersecting Tab. 6.3 przedstawia wynikowe interwały czasowe. W tym przypadku porównanie z wynikami ExLinearMobilityIntersecting 6.5 wypada na korzyść metody wyzwalania przez sondowanie. W obydwu przypadkach następuje potrójne wyzwolenie sekwencji roamingu. W przypadku metody wyzwalania przez sondowanie roaming rozpoczyna się jeszcze w obszarze nakładania się zasięgu sygnału punktów dostępowych. Tablica 6.3: Wyniki scenariusza ExLinearMobilityDualInterfaceIntersecting. Kontekst nr 1 [nazwa] Kontekst nr 2 [nazwa] Interwał [sim t] roamingTrigger roamingTrigger roamingTrigger roamingSuccess roamingSuccess roamingSuccess 0.001064828620 0.001054494364 0.001045414308 Scenariusz ExLinearMobilityDualInterfaceHystIntersecting Tab. 6.4 przedstawia wynikowe interwały czasowe. Zastosowanie mechanizmu histerezy w algorytmie wyboru punktu dostępowego powoduje opóźnienie wyzwolenia sekwencji roamingu o interwał czasu między wiadomościami roamingTriggerInit oraz roamingTrigger. Scenariusz daje pozytywne rezultaty, o ile wartość parametru hystThreshold jest na tyle niska, że wyzwolenie zachodzi jeszcze w obszarze nakładania się sygnału punktów dostępowych. Tablica 6.4: Wyniki scenariusza ExLinearMobilityDualInterfaceHystIntersecting. Kontekst nr 1 [nazwa] Kontekst nr 2 [nazwa] Interwał [sim t] roamingTriggerInit roamingTriggerInit roamingTriggerInit roamingTriggerInit roamingTrigger roamingTrigger roamingTrigger roamingTrigger roamingTrigger roamingSuccess roamingSuccess roamingSuccess roamingSuccess roamingSuccess 5.400000000000 5.400000000000 5.401080053370 5.401044160110 0.001064828620 0.001080053368 0.001044160108 Scenariusz ExLinearMobilityIntersecting Tab. 6.5 przedstawia wynikowe interwały czasowe. Długość sekwencji roamingu wynosi w tym przypadku około 1.4 + 0.35 = 1.75[s]. Wiersz tabeli z wyjątkowo długim interwałem sekwencji roamingu odpowiada sytuacji, w której stacja zawraca poza zasięgiem jakiegokolwiek punktu dostępowego. Jest to również scenariusz doświadczalny mający potencjał bezpośredniego porównania z wynikami rzeczywistych pomiarów zawartymi w pracy [7]. 72 Tablica 6.5: Wyniki scenariusza ExLinearMobilityIntersecting. Kontekst nr 1 [nazwa] Kontekst nr 2 [nazwa] roamingTrigger roamingTrigger roamingTrigger roamingSuccess roamingSuccess roamingSuccess Interwał [sim t] 1.401035213480 36.551136855300 1.401089213480 Wynik rzeczywistej sekwencji roamingu z pominięciem etapu wyzwalania wynosi około 55[ms]. Ogromna różnica wynika z czasu trwania etapu sondowania łącza. Konkretnie, modele INET zalecają parametryzację modułu typu agent wartościami minChannelT ime = 0.15[s] oraz maxChannelT ime = 0.3[s]. Są to wartości bardzo wysokie zważywszy na fakt, iż producenci urządzeń komunikacji bezprzewodowej zalecają wartości minChannelT ime = 0.02[s] oraz maxChannelT ime = 0.04[s]. Bardziej agresywne metodyki sondowania zalecają nawet wartości na poziomie minChannelT ime = 0.007[s] oraz maxChannelT ime = 0.015[s]. Zastosowanie bardziej agresywnej parametryzacji modeli INET owocuje wynikami przedstawionymi w Tab. 6.6. Łatwo zauważyć, że wyniki na poziomie około 49[ms] są bardzo zbliżone do wartości rzeczywistych pomiarów pochodzących z pracy [7]. Tablica 6.6: Wyniki scenariusza ExLinearMobilityIntersecting dla agresywnej parametryzacji sodnowania łącza. Kontekst nr 1 [nazwa] Kontekst nr 2 [nazwa] roamingTrigger roamingTrigger roamingTrigger roamingSuccess roamingSuccess roamingSuccess Interwał [sim t] 0.049071587072 34.817065309000 0.049071587072 Parametryzacja tego typu nie jest jednak stosowana w niniejszych przebiegach symulacyjnych. Zastosowanie agresywanej parametryzacji powoduje częściowe lub, w zależności od agresywności parametryzacji, całkowite gubienie ramek typu ProbeResp przy większej liczbie punktów dostępowych. Zebranie wyników 6.6 jest możliwe, gdyż stacja kliencka przeprowadza procedurę sondowania łącza będąc w zasięgu pojedynczego punktu dostępowego ap2. Zebrane w ten sposób interwały czasowe są wartościowe, gdyż pozwalają szacować, że wyniki symulacji mają potencjał odzwierciedlania rzeczywistych pomiarów. Scenariusz ExLinearMobilityDualInterfaceSeparate Tab. 6.5 przedstawia wynikowe interwały czasowe. W tym przypadku roaming polega jedynie na nawiązaniu połączenia z odnalezionym punktem dostępowym, gdyż obszary zasięgu sygnału punktów dostępowych są rozłączne. Należy pamiętać, iż wiadomość roamingTrigger generowana jest przez wyniki sondowania łącza. Informacja o czasie jaki stacja spędziła poza zasięgiem punktów dostępowych jest zatarta. 73 Tablica 6.7: Wyniki scenariusza ExLinearMobilityDualInterfaceSeparate. Kontekst nr 1 [nazwa] Kontekst nr 2 [nazwa] Interwał [sim t] roamingTrigger roamingTrigger roamingTrigger roamingSuccess roamingSuccess roamingSuccess 0.001090094088 0.001064881992 0.001028908676 Scenariusz ExLinearMobilitySeparate Tab. 6.8 przedstawia wynikowe interwały czasowe. Należy pamiętać, iż wiadomość roamingTrigger generowana jest w skutek utraty ramek typu Beacon. Na czas sekwencji roamingu składa się również interwał czasu spędzony poza zasięgiem punktów dostępowych. Tablica 6.8: Wyniki scenariusza ExLinearMobilitySeparate. Kontekst nr 1 [nazwa] Kontekst nr 2 [nazwa] roamingTrigger roamingTrigger roamingSuccess roamingSuccess Interwał [sim t] 26.551064828600 26.401073882000 Scenariusz ExLinearMobilityDualInterfaceBoundary Tab. 6.9 przedstawia wynikowe interwały czasowe. Wyniki są analogiczne do scenariusza ExLinearMobilityDualInterfaceIntersecting 6.3. Tablica 6.9: Wyniki scenariusza ExLinearMobilityDualInterfaceBoundary. Kontekst nr 1 [nazwa] Kontekst nr 2 [nazwa] Interwał [sim t] roamingTrigger roamingTrigger roamingTrigger roamingSuccess roamingSuccess roamingSuccess 0.001091241548 0.001065068788 0.001073988732 Scenariusz ExLinearMobilityBoundary Tab. 6.10 przedstawia wynikowe interwały czasowe. Wyniki są analogiczne do scenariusza ExLinearMobilityIntersecting 6.3. Wiersz tabeli z długim czasem sekwencji roamingu związany jest z zawracaniem stacji klienckiej poza obszarem zasięgu sygnału punktu dostępowego. Tablica 6.10: Wyniki scenariusza ExLinearMobilityBoundary. Kontekst nr 1 [nazwa] Kontekst nr 2 [nazwa] roamingTrigger roamingTrigger roamingTrigger roamingSuccess roamingSuccess roamingSuccess 74 Interwał [sim t] 1.401073881990 26.551109855300 1.401046881990 Rozdział 7 Podsumowanie oceny rozwiązania Na końcową ocenę metody wyzwalania przez sondowanie składają się wnioski z analizy porównawczej wyników zawartych w rozdziale 6 oraz najważniejsze przesłanki z procesu wieloaspektowej analizy, projektowania oraz implementacji rozwiązania. Bazując na wynikach z symulacji scenariuszy doświadczalnych przedstawiam sytuacje zwiększające efektywność roamingu stacji klienckiej. Nakreślam przypadki, w których metoda wyzwalania przez sondowanie daje gorsze wyniki oraz wskazuję możliwe poprawki. Ostatecznie, określam dalsze kierunki rozwoju badań w stronę rzeczywistej implementacji rozwiązań bazujących na definicji interfejsów równoległych. 7.1 Wnioski na temat wyników analizy porównawczej Wyniki scenariuszy symulacyjnych pokazują, iż etap sondowania łącza jest najdłuższym interwałem czasowym sekwencji roamingu. Zastosowanie interfejsów równoległych w postaci metody wyzwalania przez sondowanie pozwoliło na zauważalne odciążenie procedury roamingu. Najbardziej pozytywne rezultaty osiągnięto w przypadku ruchu prostoliniowego przecinającego nakładające się obszary zasięgu punktów dostępowych. Scenariusz doświadczalny ExLinearMobilityDualInterfaceIntersecting wykazał przyspieszenie sekwencji z około 1.75[s] do pomijalnego czasu około 1[ms]. W tym przypadku czas sekwencji roamingu dla metody wyzwalania przez sondowanie nie bierze pod uwagę etapu wyzwalania. Metoda wyzwalania przez sondowanie rozpoczyna sekwencję roamingu jeszcze w zasięgu połączenia punktu dostępowego co powoduje całkowitą niwelację wpływu interwału wyzwalania na całościową efektywność roamingu. Uogólniając, metoda wyzwalania przez sondowanie daje bardzo dobre rezultaty w sytuacji, gdy możliwe jest wyzwolenie roamingu jeszcze w zasięgu poprzedniego punktu dostępowego. Przedwczesne porzucanie aktualnego punktu dostępowego ma swoje wady. Stacja przemieszczająca się na skraju obszarów wpływu dwóch punktów dostępowych będzie nieustannie przełączała się między nimi ze względu na brak mechanizmu histerezy w algorytmie wyboru najlepszego punktu dostępowego z listy dostępnych. Wyniki symulacyjne z wykorzystaniem konfiguracji pośredniej DualInterfaceHyst wykazują, że użycie wyników sondowania 75 łącza do implementacji histerezy może być problematyczne. Problemy wynikają z wyjątkowo długiego interwału czasowego jakiego wymaga procedura sondowania aktywnego. Mechanizm histerezy, który pomaga powstrzymać niepotrzebne wyzwolenia sekwencji roamingu w scenariuszu ExCircleMobilityDualInterfaceHystIntersecting może spowodować znaczne opóźnienie sekwencji roamingu w scenariuszu ExLinearMobilityDualInterfaceHystIntersecting. Należy jednak zwrócić uwagę, iż skuteczność sondowania łącza jako mechanizmu histerezy zależy od progu histerezy histThreshold. Przyjmuję, że stopień nakładania się obszarów zasięgu punktów dostępowych w przypadku scenariusza ExCircleMobilityDualInterfaceHystIntersecting jest na tyle duży, że wyzwolenie roamingu nie jest zjawiskiem całkowicie negatywnym. Zawyżone wartości parametrów minChannelTime oraz maxChannelTime sugerowane przez modele INET pozwalają przypuszczać, że w realnym zastosowaniu proces sondowania byłby bardziej efektywny. Zakładam, że realne rozwiązanie z dobrze dobranym progiem hystThreshold nie byłoby obarczone negatywnymi aspektami mechanizmu histerezy nawet przy dużych prędkościach stacji klienckiej. 7.2 Wnioski z procesu analizy, projektowania i implementacji rozwiązania Tekst standardu IEEE802.11 nie wymusza ścisłej sekwencji roamingu, lecz udostępnia opis niezbędnych usług warstw modelu OSI. Udostępnianie usług w postaci poleceń interfejsu SAP daje pewną swobodę co do projektowania i implementacji procedur zarządzania stosem protokołu IEEE802.11. Wnioskując, implementacja rozwiązań z wykorzystaniem interfejsów równoległych nie wymaga ingerencji w implementację stosu protokołu IEEE802.11, lecz odpowiedniego wykorzystania usług każdego z dostępnych interfejsów SAP. Architektura warstwowa stosu protokołu IEEE802.11 jest spójna na przestrzeni: – Jednostek funkcjonalnych standardu IEEE802.11, – Modułów w hierarchii modeli projektu INET, – Rzeczywistych elementów architektury komputerów. Oznacza to, iż projekt metody wyzwalania przez sondowanie opisany z pomocą pojęć standardu IEEE802.11 może być łatwo rozszerzony do projektu symulacyjnego oraz implementacyjnego. Proces rozszerzania funkcjonalności modeli INET o metodę wyzwalania przez sondowanie ujawnił możliwe problemy rzeczywistej implementacji. W szczególności, implementacja stosu protokołu IEEE802.11 może zawierać pewne założenia co do kolejności wywoływania komend interfejsu SAP. Założenia co do kolejności wywoływania komend mogą utrudnić podział zadań między komponenty NIC. W rzeczywistej implementacji opisane ograniczenia mogą oznaczać konieczność modyfikacji takich elementów stosu jak sterownik urządzenia lub oprogramowanie typu firmware. 76 7.3 Kierunki rozwoju Niniejsza praca zawiera wiele przesłanek, które wskazują, iż wykorzystanie interfejsów równoległych jest możliwe oraz opłacalne z punktu widzenia efektywności roamingu mobilnej stacji klienckiej. Następujące fakty przemawiają za kierunkiem rozwoju rzeczywistej implementacji metody wyzwalania przez sondowanie: – Szeroki wybór maszyn umożliwiających zastosowanie wielu komponentów NIC, – Odzwierciedlenie interfejsu SAP jednostki zarządzającej w rzeczywistych implementacjach (np. interfejs netlink lub ioctl w systemach Linux ), – Możliwość wykorzystania niektórych rozdziałów pracy w postaci wzorca do implementacji, – Pozytywne wyniki stworzonych modeli symulacyjnych. Komendy interfejsu SAP 4.3 użyte w projekcie implementacyjnym modeli symulacyjnych można łatwo przełożyć na polecenia wykorzystywane przez niektóre narzędzia przestrzeni użytkownika w systemach Linux. W systemach Linux sterowanie urządzeniami standardu IEEE802.11 odbywa się z udziałem opartego na mechanizmie gniazd (ang. sockets) interfejsu netlink lub opartego na mechanizmie wywołań systemowych interfejsu ioctl. Polecenia interfejsu netlink odpowiadają komendom SAP 4.3. Dobre wyniki dla scenariusza ExLinearMobilityDualInterfaceIntersecting potwierdzają potencjalną skuteczność w zastosowaniach WAVE (ang. wireless access in vehicular environments). Środowisko scenariusza ExLinearMobilityDualInterfaceIntersecting można przedstawić w postaci wycinka rzeczywistej infrastruktury. Prostoliniowy ruch stacji klienckiej odpowiada jezdni przecinającej obszary zasięgu kolejnych punktów dostępowych. Obszary zasięgu nakładają się w celu podtrzymania komunikacji. Niniejsza praca wykazuje korzyści płynące z zwielokrotnienia komponentów NIC, które mają potencjał wykraczania poza zagadnienie efektywności roamingu stacji klienckiej. Rozwiązanie interfejsów równoległych może być z powodzeniem zastosowane do przekraczania fizycznych ograniczeń urządzeń komunikacyjnych z pomocą logiki wyższych warstw systemu komputerowego. 77 Bibliografia [1] Joe Bardwell. The Truth About 802.11 Signal And Noise Metrics. Connect802 Corporation, 2004. [2] Joe Bardwell. Converting Signal Strength Percentage to dBm Values. WildPackets, Inc., październik 2002. [3] Michael Bredel and Martin Bergner. On The Accuracy of IEEE 802.11g Wireless LAN Simulations Using OMNeT++. OMNeT++ 2009 Workshop, 2009. [4] German Castignani, Nicolas Montavont, Andres Arcia-Moret, Mohamed Oularbi, and Sebastien Houcke. IEEE 802.11 Scanning Algorithms: Cross-Layer Experiments. TELECOM Bretagne, 20 październik 2011. [5] Cisco. Voice over Wireless LAN 4.1 Design Guide. http://www.cisco.com/en/US/ docs/solutions/Enterprise/Mobility/vowlan/41dg/vowlan_ch5.html, 18 styczeń 2010. [6] Projekt open-source. INET framework. http://inet.omnetpp.org/. [7] M. Harasimczuk. Pomiar opóźnień ramek standardu 802.11 - narzędzie hop-sniffer. Praca inżynierska, Wydział Elektroniki i Technik Informacyjnych Politechniki Warszawskiej, 2012. [8] IEEE. Standard IEEE802.11-2012. download/802.11-2012.pdf. http://standards.ieee.org/getieee802/ [9] Glenn Judd and Peter Steenkiste. Fixing 802.11 Access Point Selection. Carnegie Mellon University, 2002. [10] Open source wiki. OMNet++ Wiki. http://www.omnetpp.org/pmwiki/. [11] Andras Varga. OMNet++ User Manual Version 4.3.1. Andras Varga and OpenSim Ltd., 2011. 78 Dodatek A Załączniki A.1 Odtworzenie środowiska symulacyjnego. Odtwarzanie środowiska symulacyjnego opisywane jest z perspektywy zestawu narzędzi dostępnych w dystrybucji Ubuntu systemu operacyjnego Linux. Zawartość płyty CD Płyta CD zawiera katalog Projekt, w którym znajdują się pliki źródłowe niezbędne do uruchomienia środowiska symulacyjnego. Ścieżki podawane w dalszej części tego załącznika zakładają, iż katalog Projekt jest katalogiem bieżącym stosując notację ./. Katalog ./omnetpp-4.3.1-src.tgz zawiera pliki źródłowe środowiska symulacyjnego OMNet++ w wersji wykorzystywanej w badaniach. Katalog ./inet.tar.gz zawiera zmodyfikowane źródła projektu INET. Źródła przeznaczone są do kompilacji w dystrybucjach opartych o system operacyjny Linux. Katalog Projekt powinien być przekopiowany na nośnik umożliwiający zapis. Katalogi ./inet.tar.gz oraz ./omnetpp-4.3.1-src.tgz powinny zostać rozpakowane z użyciem komendy tar z opcjami -zxvf. Kompilacja i instalacja symulatora OMNet++ Należy wejść który zainstaluje do prawidłowego przedstawione na do katalogu ./omnetpp-4.3.1 i wywołać skrypt sudo ./install-packages, wszystkie wymagane paczki. Skrypt instaluje również paczki potrzebne działania aplikacji elog-parser.py. Następnie, należy wykonać polecenia listingu A.1. Listing A.1: Polecenia inicjalizacji środowiska kompilacji. 1 . setenv echo ” e x p o r t PATH=$PATH:$HOME/omnetpp − 4 . 3 . 1 / b i n ” >> ˜ / . b a s h r c Należy zamknąć i ponownie uruchomić terminal. Po ponownym wejściu do katalogu ./omnetpp-4.3.1 należy wywołać skrypt ./configure. Skrypt sprawdza obecność niezbędnych 79 paczek w systemie. Należy zwrócić uwagę na ostatnie linijki wypisane na standardowe wyjście. Zgodnie z instrukcją należy dodać reguły export dwóch podanych na standardowym wyjściu ścieżek do pliku ˜/.profile oraz wylogować się. Po ponownym zalogowaniu należy wejść do katalogu ./omnetpp-4.3.1 i wywołać skrypt ./configure zwracając uwagę na potwierdzenie obecności wymaganych ścieżek, którego przykład przedstawia listing A.2. Listing A.2: Fragment standardowego wyjścia skryptu ./configure Your PATH c o n t a i n s /home/ hary / S t u d i a / Symulator /omnetpp − 4 . 3 . 1 / b i n . Good ! 2 TCL LIBRARY i s s e t . Good ! W kolejnym kroku można rozpocząć kompilację wydając polecenie make. Po zakończeniu kompilacji i instalacji symulator można uruchomić komendą omnetpp. Kompilacja źródeł projektu INET Należy uruchomić symulator OMNet++ pozostawiając standardową ścieżkę do katalogu roboczego ./omnetpp-4.3.1/samples. Należy załadować projekt INET do środowiska wybierając kolejno File, Import, General, Existing Projects Into Workspace oraz Next. Należy odnaleźć rozpakowany katalog ze źródłami projektu INET, dodać go i zakończyć wybierając opcję Finish. W celu kompilacji należy wybrać kolejno menu rozwijane Project oraz pozycję Build All. Po zakończeniu kompilacji można rozpocząć uruchamianie symulacji. W widoku Project Explorer należy odnaleźć plik ./inet/simulations/roaming/basic/omnetpp.ini i zaznaczyć go. Opcja Run z rozwijanego menu Run pozwala na uruchomienie graficznego interfejsu przebiegu symulacji. Pierwszym otwartym oknem jest okno wyboru scenariusza doświadczalnego oraz numeru przebiegu. Wybór opcji OK powoduje otwarcie widoku obszaru roboczego. Przycisk RUN uruchamia symulację scenariusza doświadczalnego. Wsadowe uruchamianie scenariuszy doświadczalnych Należy wejść do katalogu ./inet/simulations/roaming/basic. W katalogu znajdują się pliki niezbędne do uruchomienia symulacji: – omnetpp.ini : Plik z konfiguracją parametrów opisujących scenariusze doświadczalne, – conf.xml : Plik konfiguracyjny programu elog-parser.py, – elog-parser.py: Skrypt programu elog-parser, – run experiments: Skrypt uruchamiający wybrane scenariusze doświadczalne oraz przekierowujący wyniki działania programu elog-parser na standardowe wyjście. Proces symulacji uruchamia się wywołaniem skryptu ./run experiments. Należy pamiętać o wcześniejszej instalacji wymaganych paczek. 80