Większość ludzi sprawdza przepustowość sieci poprzez transfer pliku. Metoda ta oczywiście nie jest doskonała. Wynik może być zaniżony poprzez opóźnienia przy czytaniu z niego, lub pisaniu do niego, czyli opóźnienia stricte dyskowe.

Jednym z lepszych sposobów na pomiar przepustowości jest użycie narzędzia, które nazywa się iperf.

Jak to działa?

Iperf uruchamiany jest w dwóch trybach: serwer i klient. Głownie, chodzi o to, że klient jest tym, który wysyła dane do serwera. Zobaczmy w takim razie, jak to działa i na początek przeanalizujemy polecenie iperf -s na serwerze:

Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------

Oznacza to, że pomiar wykonywany będzie przez protokół TCP a nasz gospodarz nasłuchuje domyślnie na porcie 5001. Uruchommy teraz klienta za pomocą polecenia iperf -c server_ip:

------------------------------------------------------------
Client connecting to 192.168.0.8, TCP port 5001
TCP window size: 63.0 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.0.7 port 64583 connected with 192.168.0.8 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 15.6 MBytes 13.1 Mbits/sec

Zobaczmy też wynik po stronie serwera:

[ 4] local 192.168.0.8 port 5001 connected with 192.168.0.7 port 64583
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.1 sec 15.6 MBytes 13.0 Mbits/sec

No tak, ale dla osób, które widzą Iperfa pierwszy raz to tylko zlepek literek. Co tak naprawdę się stało?

  • serwer nasłuchuje na porcie 5001 (maszyna z Linuxem) oknem TCP o rozmiarze 85.3 KB
  • klient (Windows 7) rozpoczął transmisję do portu 5001 (port docelowy), ale z portu źródłowego 64583 przy użyciu protokoły TCP o rozmiarze okna 63 KB
  • transmisja zainicjowana przez klienta trwała 10 sekund, zostało przeniesionych 15,6 MB danych, więc średnia przepustowość wynosi 13.1 Mbit/s
  • wartość zmierzona przez serwer to 10,1 sekundy, w której przeniesiono tę samą ilość danych, co wcześniej, a więc przepustowości jest równa 13,0 Mbit/s

Analizując powyższe wyniki możemy zauważyć pewne rozbieżności. W czym one się pokazują? Oba hosty używają zupełnie różnych systemów operacyjnych (jeden Linuxa, a drugi Windows). Różnią się także wielkości okien TCP dla tych systemów, co implikuje na różne wyniki. Zobaczmy, czy uda nam się coś na to zaradzić. Ipert jest mocno zaawansowanym narzędziem więc na pewno będzie miał w zapasie jakieś ciekawe sztuczki, aby pozbyć się takiego problemu.

Rozmiar okna TCP

Chwilkę wcześniej odkryliśmy, że dla różnych systemów operacyjnych wielkość okna TCP jest różna. Możemy na iperfie wymusić użycie oczekiwanej wartości. Służy do tego opcja -w. Zobaczmy, jak wygląda całość takiej regułki:

dla klienta:

------------------------------------------------------------
Client connecting to 192.168.0.8, TCP port 5001
TCP window size: 85.3 KByte
------------------------------------------------------------
[ 3] local 192.168.0.7 port 65078 connected with 192.168.0.8 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.1 sec 22.9 MBytes 19.1 Mbits/sec

dla serwera:

[ 4] local 192.168.0.8 port 5001 connected with 192.168.0.7 port 65078
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.1 sec 22.9 MBytes 19.0 Mbits/sec

Oczywiście, od razu zauważamy, że nasze wyniki są bardziej realne w tym momencie i lepsze. Czy to wszystko? Gdyby trak było Iperf nie byłby tak fajnym narzędziem. Ma on jeszcze dużo opcji, które będziemy poznawać. To tylko wierzchołek góry lodowej. W następnej części spotkań z Iperfem pokaże Wam kolejne sztuczki.



Następny artykułZnaki, które resetują iOS