Ruch sieciowy – pomiar i właściwości
Transkrypt
Ruch sieciowy – pomiar i właściwości
Ruch sieciowy – pomiar i właściwości Krzysztof Rusek 17 grudnia 2012 1 Opis ćwiczenia Celem ćwiczenia jest zapoznanie się ze sposobami pomiaru i analizy ruchu sieciowego oraz poznanie jego podstawowych cech. Wszystkie materiały do ćwiczenia są dostępne pod adresem http://pbz.kt.agh.edu.pl/~krusek/missiu/. Przed rozpoczęciem ćwiczenia zapoznać się z zwartością pliku README. 2 Pomiar ruchu W zastosowaniach nie wymagających dużej dokładności najlepszym narzędziem do pomiaru ruchu sieciowego jest Wireshark lub jego odpowiednik konsolowy tcpdump. Ślady ruchu sieciowego (traces) można też wygenerować korzystając z symulatora ns-3 lub pobrać z ogólnodostępnych repozytoriów w Internecie. Jednym z nich jest MAWI Working Group Traffic Archive dostępne na na stronie http://mawi.wide.ad.jp/mawi/ zawierające zapis ruchu pomiędzy Japonią a Stanami zjednoczonymi. Każdy ślad zawiera 15 min ruchu mierzonego codziennie o tej samej porze. 2.1 Ćwiczenie Wygenerować plik pcap z symulacji modyfikując przyklad star (examples/tcp/star.cc). Aby mieć cały ruch w jednym pliku pcap należy tak zmodyfikować przykład aby serwer tcp był w jednym z ramion zamiast w centrum. Najprościej jest to zrobić przenosząc serwer do węzła 0 a następnie zmodyfikować adresy i zakres pętli ustawiającej aplikacje. Dodatkowo należy zmodyfikować czas trwania symulacji tak aby mieć odpowiednio dużo danych pomiarowych. 3 Analiza zmierzonego ruchu Do analizy nalezy przygotowac dwa pliki pcap. Jeden z symulacji i jeden plik zawierajacy dane mawi. Najczęściej modeluje się ruch skierowany w jedna stronę, dlatego podczas 1 analizy należy zwrócić uwagę na kierunek pakietu. Nie dotyczy to danych MAWI, ponieważ określenie kierunku wymagałoby geolokalizacji adresów źródłowych i docelowych. W każdym innym przypadku dane można przefiltrować korzystając z programu tcpdump. 3.1 Import danych Zmierzone ślady ruchu można łatwo zamienić na plik tekstowy korzystając z polecenia1 tcpdump -tt -neq -r data.pcap -c 10000000 | awk ’LS=" "{print $1,substr($7, 1, length($7 -1))}’ | sed ’s/\./ /g’ , który wczytuje się do Matlaba funckją importfile: d=importfile(’data.txt’); c=[1,0;1e-6,0;0,1] d2=data*c; Rezultatem tego polecenia jest macierz dwukolumnowa zawierająca czas przyjścia pakietu oraz jego rozmiar. Ruch można opisywać na kilka sposobów. Najbardziej dokładny sposób opisu to podanie ciągu D = {(z1 , α1 ), (z2 , α2 ), . . . , (zM , αM )} (1) gdzie zi jest czasem pojawienia się i-tego pakietu a αi jest jego rozmiarem w bajtach. M jest liczbą zarejestrowanych pakietów. Czasami zamiast czasu pakietu podaje się odstęp czasu od poprzedniego. Pomiędzy tymi reprezentacjami można łatwo przechodzić korzystając z funkcji diff. 3.2 Ćwiczenie • Narysować wykres czasów przyjścia pakietów plot(d2(:,1)) dla zmierzonego ruchu (reprezentacja 1). • Narysować wykres odstępów pomiędzy pakietami dla zmierzonego ruchu. • plot(diff(d2(:,1))) • Dopasować strumień wykładniczy do zebranych danych • wygenerować strumień wykładniczy o wyznaczonych parametrach(exprnd) • Porównac histogramy odstepów pomiedzy pakietami dla różnych danych i strumienia wykładniczego 1 całość jest zapisana w pliku proc.sh 2 3.3 Ćwiczenie Wyznaczyć autokorelację odstępów pomiędzy pakietami dla wszystkich plików oraz syntetycznego strumienia wykładniczego. % niech dt zawiera odstępy [a,b]=xcov(dt,100000,’coeff’); semilogx(b,a) Obserwację powtórzyć dla długości pakietów. 4 4.1 Samopodobieństwo Wprowadzenie Wiele zjawisk ruchowych jest niezależnych od skali czasu na której się je obserwuje. Naturalnym narzędziem do opisu takich zjawisk są procesy samopodobne. Bez wnikania w matematyczne szczuły można powiedzieć, że reaizacje samopodobnego procesu X(t) oraz jego przeskalowanej wersji cH X( ct ) są statystycznie nierozróżnialne. Liczba c jest dowolną liczbą dodatnią, a parametr H ∈ ( 12 , 1) jest nazywany wykładnikiem Hursta. Im wykładnik Hursta jest bliższy 1 tym proces jest silniej samopodobny. Samopodobienstwo bada się korzystając z ruchu agregowanego. Dla procesu Xn , proces zagregogowany definiuje się następująco: Xn(m) = nm X 1 Xi . m i=(n−1)m+1 (2) W uproszczeniu proces agregowany to taki proces, którego każda wartość jest średnią m kolejnych wartości wartości procesu wyjściowego. Przykład x = (x1 , x2 , x3 , x4 , x5 , x6 ) x1 + x2 + x 3 x4 + x 5 + x6 , ) 3 3 Samopodobienstwo powoduje wolny spadek wariancji ruchu wraz ze wzrostem okna agregacji (m). Ten spadek można przybliżyć: x(3) = ( (m) V ar(Xt ) ∼ am2H−2 , m → ∞ (3) to równanie daje możliwość wyznaczenia wykładnika Hursta. Logarytmując (3) otrzymujemy: (m) log(V ar(Xt )) ∼ (2H − 2) log(m) + log(a), m → ∞. (4) 4.2 Ćwiczenie Wygenerować dwa szeregi czasowe przedstawiajace liczbę pakietów i ilość danych przesłanych w jednostce czasu. Obejrzeć wykresy ruchu na różnych poziomach agregacji. 3 4.3 Ćwiczenie Zbadać autokorelację i rozkład danych zagregowanych na różnych skalach czasu. 4.4 Ćwiczenie (m) Dla wczytanego ruchu (dane i pakiety) narysować zależność log(V ar(Xt )) od log(m). Wykres przybliżyć prostą i wyznaczyć współczynnik nachylenia. Znając współczynnik nachylenia wyznaczyć wartość wykładnika Hursta. 4.5 Ćwiczenie Wyznaczyć wykładnika Hursta korzystając ze statystyki RS: Dla danej obserwacji X = {Xn , n ∈ Z+ } o wartości średniej X̄(n) i variancji S 2 (n) statystyka R/S jest de finiowana następująco: R(n)/S(n) = 1 (max(0, W1 , W2 , ..., Wn ) − min(0, W1 , W2 , ..., Wn )) S(n) (5) gdzie: Wk = X1 + X2 + ... + Xk − k X̄: k = 1, 2, ..., n Wyrażenie Wk jest sumą różnic pomiędzy i-tą prubką i ∈ 1 . . . k i wartością średnią. Do wyznaczania wykładnika Hursta wykorzystuje się następującą właściwość statystyki R/S: log{E[R(n)/S(n)]} ∼ Hlog(n) + log(c) gdy: n → ∞ (6) Przedstawiając w logarytmicznym układzie współrzędnych zależność log{E[R(n)/S(n)]} od log(n) można wyznaczyć parametr Hursta dopasowując prostą do otrzymanych punktów(np metodą najmniejszych kwadratów). Korzystając z 6 parametr H otrzymujemy jako nachylenie dopasowanej prostej. Postępowanie: 1. Wektor próbek dzielimy na m wektorów każdy o długości n 2. Dla każdego podwektora wyznaczamy statystykę R/S. 3. Jako E[R(n)/S(n)] przyjmujemy wartość średnią z m statystyk wyznaczonych w poprzednim punkcie. 4. Powtarzamy punkty 1:4 zmieniając rozmiar bloku. 5. Najwygodniej przyjmować dane o długościach będących potęgami 2 4