Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
Jak można zauważyć z sąsiedniego wątku przyciska mnie termin pracy magisterskiej dlatego próbuję ratować się tutaj na forum.
Uruchamiam iperf w trybie UDP za pomocą poniższych poleceń:
# iperf -s -u -f k -i 1 # iperf -c 192.168.0.105 -u -b 68.8k -l 172 -t 60 -f k -i 1 -P 10 -F g711-glos.wav
Parametr "-P" jest różny w zależności od badania.
Przykładowy wynik wyświetlony na serwerze dla "-P 1":
[ 3] local 192.168.0.105 port 5001 connected with 192.168.0.100 port 36324 [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 0.0- 1.0 sec 8.40 KBytes 68.8 Kbits/sec 0.783 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 1.0- 2.0 sec 8.40 KBytes 68.8 Kbits/sec 0.367 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 2.0- 3.0 sec 8.23 KBytes 67.4 Kbits/sec 0.140 ms 0/ 49 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 3.0- 4.0 sec 8.57 KBytes 70.2 Kbits/sec 0.181 ms 0/ 51 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 4.0- 5.0 sec 8.40 KBytes 68.8 Kbits/sec 0.240 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 5.0- 6.0 sec 8.40 KBytes 68.8 Kbits/sec 0.158 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 6.0- 7.0 sec 8.06 KBytes 66.0 Kbits/sec 0.232 ms 2/ 50 (4%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 7.0- 8.0 sec 8.40 KBytes 68.8 Kbits/sec 0.433 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 8.0- 9.0 sec 8.40 KBytes 68.8 Kbits/sec 0.413 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 9.0-10.0 sec 8.40 KBytes 68.8 Kbits/sec 0.284 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 10.0-11.0 sec 8.40 KBytes 68.8 Kbits/sec 0.151 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 11.0-12.0 sec 8.40 KBytes 68.8 Kbits/sec 0.163 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 12.0-13.0 sec 8.40 KBytes 68.8 Kbits/sec 0.177 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 13.0-14.0 sec 8.40 KBytes 68.8 Kbits/sec 0.130 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 14.0-15.0 sec 8.40 KBytes 68.8 Kbits/sec 0.221 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 15.0-16.0 sec 8.40 KBytes 68.8 Kbits/sec 0.351 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 16.0-17.0 sec 8.40 KBytes 68.8 Kbits/sec 0.221 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 17.0-18.0 sec 8.40 KBytes 68.8 Kbits/sec 0.279 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 18.0-19.0 sec 8.40 KBytes 68.8 Kbits/sec 0.298 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 19.0-20.0 sec 8.40 KBytes 68.8 Kbits/sec 0.325 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 20.0-21.0 sec 8.40 KBytes 68.8 Kbits/sec 0.197 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 21.0-22.0 sec 7.73 KBytes 63.3 Kbits/sec 2.109 ms 3/ 49 (6.1%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 22.0-23.0 sec 8.57 KBytes 70.2 Kbits/sec 1.175 ms 0/ 51 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 23.0-24.0 sec 8.23 KBytes 67.4 Kbits/sec 1.114 ms 0/ 49 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 24.0-25.0 sec 8.57 KBytes 70.2 Kbits/sec 0.634 ms 0/ 51 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 25.0-26.0 sec 8.40 KBytes 68.8 Kbits/sec 0.182 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 26.0-27.0 sec 8.40 KBytes 68.8 Kbits/sec 0.137 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 27.0-28.0 sec 8.40 KBytes 68.8 Kbits/sec 0.222 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 28.0-29.0 sec 8.40 KBytes 68.8 Kbits/sec 0.549 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 29.0-30.0 sec 8.06 KBytes 66.0 Kbits/sec 0.389 ms 2/ 50 (4%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 30.0-31.0 sec 8.23 KBytes 67.4 Kbits/sec 0.579 ms 1/ 50 (2%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 31.0-32.0 sec 8.23 KBytes 67.4 Kbits/sec 0.936 ms 1/ 50 (2%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 32.0-33.0 sec 7.73 KBytes 63.3 Kbits/sec 0.261 ms 4/ 50 (8%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 33.0-34.0 sec 8.40 KBytes 68.8 Kbits/sec 0.381 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 34.0-35.0 sec 8.06 KBytes 66.0 Kbits/sec 0.512 ms 2/ 50 (4%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 35.0-36.0 sec 8.40 KBytes 68.8 Kbits/sec 0.420 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 36.0-37.0 sec 7.73 KBytes 63.3 Kbits/sec 0.464 ms 4/ 50 (8%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 37.0-38.0 sec 8.40 KBytes 68.8 Kbits/sec 0.310 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 38.0-39.0 sec 7.89 KBytes 64.7 Kbits/sec 0.501 ms 3/ 50 (6%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 39.0-40.0 sec 8.40 KBytes 68.8 Kbits/sec 0.311 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 40.0-41.0 sec 8.40 KBytes 68.8 Kbits/sec 0.370 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 41.0-42.0 sec 8.40 KBytes 68.8 Kbits/sec 0.800 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 42.0-43.0 sec 8.40 KBytes 68.8 Kbits/sec 0.491 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 43.0-44.0 sec 8.23 KBytes 67.4 Kbits/sec 0.576 ms 1/ 50 (2%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 44.0-45.0 sec 8.40 KBytes 68.8 Kbits/sec 0.365 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 45.0-46.0 sec 8.40 KBytes 68.8 Kbits/sec 0.353 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 46.0-47.0 sec 8.40 KBytes 68.8 Kbits/sec 0.654 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 47.0-48.0 sec 8.40 KBytes 68.8 Kbits/sec 1.528 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 48.0-49.0 sec 8.06 KBytes 66.0 Kbits/sec 1.596 ms 1/ 49 (2%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 49.0-50.0 sec 8.57 KBytes 70.2 Kbits/sec 0.831 ms 0/ 51 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 50.0-51.0 sec 8.40 KBytes 68.8 Kbits/sec 0.627 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 51.0-52.0 sec 8.40 KBytes 68.8 Kbits/sec 0.516 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 52.0-53.0 sec 8.06 KBytes 66.0 Kbits/sec 0.664 ms 2/ 50 (4%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 53.0-54.0 sec 8.23 KBytes 67.4 Kbits/sec 0.492 ms 0/ 49 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 54.0-55.0 sec 8.57 KBytes 70.2 Kbits/sec 0.210 ms 0/ 51 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 55.0-56.0 sec 8.23 KBytes 67.4 Kbits/sec 0.233 ms 1/ 50 (2%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 56.0-57.0 sec 8.40 KBytes 68.8 Kbits/sec 0.284 ms 0/ 50 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 57.0-58.0 sec 8.06 KBytes 66.0 Kbits/sec 1.415 ms 2/ 50 (4%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 58.0-59.0 sec 8.23 KBytes 67.4 Kbits/sec 0.188 ms 0/ 49 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 59.0-60.0 sec 8.57 KBytes 70.2 Kbits/sec 0.197 ms 0/ 51 (0%) [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 0.0-60.0 sec 499 KBytes 68.1 Kbits/sec 0.256 ms 29/ 3001 (0.97%)
Podsumowanie (0.0-60.0 sec) pokazuje wynik jitter równy 0.256 ms, lecz średnia z wyników poszczególnych sekund obliczona za pomocą arkusza kalkulacyjnego wynosi 0.487 ms dla powyższego przykładu. Jaki jest tego powód? Po przeprowadzeniu wielu badań zauważyłem, że jitter z podsumowania jest zazwyczaj bardzo podobny do tego z ostatniego interwału (59-60 sec). Czasami też jitter z podsumowania odstaje, podobnie jak czasami odstają wyniki pojedynczych interwałów. Wygląda on na wynik kolejnego badania przeprowadzonego po 60 sekundzie, nie jak średnia wszystkich wyników. Będę wdzięczny za wszelką pomoc.
Offline
To co jest pokazywane to nie jest średnia. Pewnie dlatego nie jest równe średniej ;]
Offline
Zatem czy to jest pojedynczo zmierzony jitter czy też wynik dla przedziału czasu 0-60 mierzony nie jako średnia tylko w inny sposób? Na ile jest to pewna informacja?
Zrobiłem już skrypt uśredniający czasy jitter dla każdego kanału na podstawie jednosekundowych interwałów z maksymalnie 999 równoległych połączeń. Bardzo proszę o potwierdzenie, że średnie wyciągnięte na podstawie jednosekundowych interwałów dadzą obraz średniego jitter'a. Skrypt podrzucę dopiero po obronie w obawie o system antyplagiatowy.
Offline
No jest to pewnie jitter dla przedziału 0-60. Tu masz jak liczyć jitter i jego srednią: http://nms.lcs.mit.edu/~hari/papers/CS294/paper/node5.html .
Offline
Nie bardzo rozumiem co masz na myśli mówiąc, że jest to jitter dla przedziału 0-60. Z tego co rozumiem, to jitter mierzony jest na podstawie dwóch kolejno wysłanych ramek. W ciągu sekundy wywołany przeze mnie iperf wysyła 50 ramek, czyli teoretycznie w idealnych warunkach, gdzie nie ma opóźnień było by 50 pomiarów jitter na sekundę. Idąc dalej tym tropem, wydaje mi się, że średni jitter dla przedziału 0-1 sec to średnia z tych 50 wyników. Czyli dla przedziału 0-60 sec powinna to być średnia z 50*60=3000 czasów jitter. Jeżeli by tak było a wyniki wskazywane co sekundę obliczane byłyby na podstawie wspomnianych 50 pomiarów to powinno się zgadzać to co wskazał mi arkusz kalkulacyjny z tym co wskazał na końcu iperf.
Teraz jakoś przeczuwam, że te jittery z poszczególnych sekund to jednokrotne pomiary. Czyli jeżeli byłoby to prawdą to w trakcie testu pomiar jitter wykonany był 60 razy na początku każdego interwału czasowego + ten dodatkowy raz przy podsumowaniu. Wydaje mi się tak z tego względu, że jeżeli byłyby to średnie czasy jitter w przedziałach jednosekundowych dla wszystkich wysłanych ramek to wyniki każdej z sekund byłyby bardziej zbliżone do siebie. Ale są to tylko moje przypuszczenia.
Być może jest zupełnie inaczej a ja mam problem ze zrozumieniem tego. Wyjaśnij jak możesz co według Ciebie kryje się pod tym jitterem dla przedziału 0-60.
Offline
Powiem szczerze, że nie jestem zaznajomiony z tym tematem, właśnie go poznaje. I na logikę wydaje mi się, co miało by sens, że tak:
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 3] 0.0- 1.0 sec 8.40 KBytes 68.8 Kbits/sec 0.783 ms 0/ 50 (0%)
oznacza wysłanie 50 ramek, jitter jest średnim odchyleniem pomiędzy czasami wysyłania i odbioru kolejnych ramek. Tu masz średnie odchylenie dla 50 ramek, czyli średnia z 49 odchyleń. Zawszę będzie jedno odchylenie mniej bo ostatniej ramki nie ma już z czym porównać.
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 3] 0.0-60.0 sec 499 KBytes 68.1 Kbits/sec 0.256 ms 29/ 3001 (0.97%)
Tu masz średnie odchylenie z 3001 ramek więc jest 3000 odchyleń do średniej. I tak masz średnią z 60*49 = 2940 odchyleń i z 3000 co nie może być sobie równe. I pewnie stąd ta różnica.
Ostatnio edytowany przez kamikaze (2011-10-02 01:06:29)
Offline
Niestety to nie może być powodem ponieważ nie ma reguły na to jaka różnica jest pomiędzy wynikami wyliczonymi na podstawie jednosekundowych interwałów a wynikiem z podsumowania. Zauważyłem tylko, że sąsiednie wyniki (wliczając podsumowanie jako 61 wynik) są zazwyczaj do siebie podobne. Czasami (rzadko) widziałem też pojedynczy wyraźny odskok wyniku podsumowania od reszty co wskazuje na podobieństwo zachowania tego wyniku do wyników z poszczególnych sekund. Z tych dwóch powodów mam przypuszczenia o pojedynczym sprawdzaniu dla jednego interwału (łącznie z 61).
Offline
Widzę, że zaglądałeś także na listę mailingową iperf-users. Przejrzałem tam kilka wpisów dotyczących liczenia jitter przez iperf i ludzie piszą, że liczy je trochę inaczej i sugerują użycie innych narzędzi.
http://sourceforge.net/mailarchive/message.php?msg_id=19148837
a tu wyjaśnienie czemu tak się dzieje:
http://sourceforge.net/mailarchive/message.php?msg_id=19147732
O jitter w RTP, trochę się inaczej liczy, jest jakieś stałe dzielenie przez 16, to może tworzyć dodatkowe różnice:
http://toncar.cz/Tutorials/VoIP/VoIP_Basics_Jitter.html
Offline
Wielkie dzięki za pomoc i za te linki, których nie udało mi się wcześniej wygrzebać. Wygląda na to, że się myliłem co do tego czym jest jitter. Teraz rozumiem to tak, że ta różnica między dwoma pakietami to tylko wskaźnik dla jittera a sam jitter jest statystyczną wariancją wykorzystującą ten wskaźnik. Dzięki takiemu obliczaniu nie pojawia się zaszumienie wyników i aby ugiąć linię wykresu jitter potrzeba dosyć dużo tych wskaźników sąsiadujących ze sobą mających wartość bezwzględną różną od aktualnej linii wykresu jitter. Mam nadzieję, że tym razem się nie mylę. Fajnie, że iperf opiera się o badanie jittera na podstawie algorytmu z protokołu RTP bo robię prace o VoIP'ie więc wyniki jitter symulacji będą wiarygodne. Wygląda więc na to, że wyniki podawane w interwałach jednosekundowych dotyczą jittera aktualnego w momencie raportowania.
Nasuwa mi się tylko spostrzeżenie, że jeżeli tym razem idę dobrym tropem to tak obliczany jitter byłby fajny i przydatny do adaptacji jitter bufora, ale wynik taki nie gwarantowałby poprawnej oceny jakości transmisji w przypadku kiedy wyglądałoby to tak, że jitter wynosiłby powiedzmy około 15 ms, bufor adaptowałby się na 30 ms a wskaźniki przeplatałyby się wartościami z zakresu 1-15 ms ze wskaźnikami z zakresu 31-40 ms. Oczywiście tych 31-40 ms byłoby odpowiednio mniej, tak, żeby jitter wynosił te 15 ms ale i tak mogłoby ich być stosunkowo dużo biorąc pod uwagę, że nie mieściłyby się w buforze i nie trafiłyby do słuchawki odbiorcy. Powiedzmy, że taka różnorodność wyników wskaźników wynikałaby z jakiegoś okresowego obciążania komputera/urządzenia odbierającego lub wysyłającego. W takiej sytuacji pomimo, że zawinił jitter, to jego wyniki nie wskazałby na to (mieściłby się w buforze). Być może się zagalopowałem trochę a taka sytuacja jest dosyć nieprawdopodobna.
Nie jestem tylko pewny co do tego jittera z podsumowania ale wydaje mi się, że jest to ostatnio zmierzony jitter, czyli wynik tej wariancji dla sumy wszystkich wysłanych pakietów (który tak naprawde odzwierciedla tylko sytuację w ostatnich milisekundach). Nazywając to w ten sposób możnaby powiedzieć, że jitter przedziału 44-45 jest wynikiem wariancji dla sumy pakietów od 0-45 bo wynik liczony początku od 44ej sekundy (J0)=0) byłby nonsensem i patrząc na kod źródłowy (http://www.hackchina.com/r/178997/iperf-1.7.0-_-src … UDP.cpp__html) widzę, że badanie wywołuję pętlę z funkcji InitTransfer(), która ma w sobie wypluwanie raportów :
// periodically report bandwidths ReportPeriodicBW_Jitter_Loss( errorCnt, outofOrder, datagramID );
Dlatego też sądzę, że funkcja obliczająca jitter:
transit = mPacketTime.subSec( sentTime ); if ( lastTransit != 0.0 ) { deltaTransit = transit - lastTransit; if ( deltaTransit < 0.0 ) { deltaTransit = -deltaTransit; } mJitter += (1.0/16.0) * (deltaTransit - mJitter); } lastTransit = transit;
pobiera zmienną lastTransit z poprzedniej iteracji pętli, no a pętla ta jest wywoływana dla całego badania (np. 0-60) i wyświetla raporty zgodnie z wyborem interwału czasowego. Nie wykonuje się ona zatem od nowa dla każdego interwału co mogłoby sprawić, że liczenie zaczynałoby się od zera w każdym interwale.
Jeżeli wszystko jest ok w tym co piszę to w pracy wykorzystam średnie z jednosekundowych interwałów i nazwę to jako "średnia arytmetyczna czasów jitter poszczególnych sekund" co da obraz tego, jak duży jitter pojawiał się średnio co sekundę co ma sens dla połączeń VoIP.
Offline
Strony: 1