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