====== Network: iPerf ====== {{ :narzedzia:jperf-2.0.2.zip |}} {{ :narzedzia:iperf3.18_64.zip |}} **iperf3** to otwarto-źródłowe narzędzie do testowania wydajności sieci (przepustowości łącza). Pozwala mierzyć maksymalną prędkość transmisji danych między dwoma punktami oraz dodatkowe parametry sieciowe (np. opóźnienie, wariacje opóźnienia, utratę pakietów). Działa w architekturze klient-serwer – na jednym hoście uruchamiany jest serwer (nasłuchujący), a na drugim klient inicjujący połączenie. iperf3 obsługuje zarówno protokół TCP, jak i UDP (lub nawet SCTP), a także IPv4 i IPv6. Jest dostępny na różnych systemach (Linux, Windows, VMware itp.) i zwykle instalowany z menedżera pakietów (np. ''%%apt%%'', ''%%yum%%''). ===== Zasada działania ===== * **Architektura klient-serwer:** iperf3 wymaga uruchomienia instancji w trybie serwera (''%%-s%%'') na jednej maszynie i w trybie klienta (''%%-c %%'') na drugiej. Klient nawiązuje połączenie TCP do serwera (domyślnie na port 5201) i wysyła strumień danych, który serwer przyjmuje i mierzy. Test jest jednokierunkowy – domyślnie to klient wysyła dane do serwera. W trybie UDP (z opcją ''%%-u%%'') klient wysyła pakiety UDP z zadaną przepustowością (pomiar może uwzględniać utratę pakietów i zmienność opóźnienia). Przełącznik ''%%-R%%'' lub ''%%--reverse%%'' odwraca kierunek transmisji: połączenie i tak inicjuje klient, ale to serwer przesyła dane do klienta. * **Pojedyncze połączenie:** Serwer iperf3 akceptuje tylko jedno połączenie od razu (w przeciwieństwie do iperf2). Po zakończeniu testu serwer można ponownie połączyć, ewentualnie wielokrotnie uruchamiając serwer ponownie. * **Protokół TCP vs UDP:** W trybie TCP narzędzie mierzy przepustowość z uwzględnieniem kontroli przepływu i retransmisji (korzysta z buforów TCP), natomiast w trybie UDP wysyła pakiety bez potwierdzeń i może zadać maksymalną przepustowość za pomocą ''%%-b %%''. Domyślnie przy UDP ''%%iperf3%%'' ustawia 1 Mbit/s, a przy TCP brak limitu (test trwa domyślnie 10 s). * **Inne uwagi:** Można określić czas testu (''%%-t%%''), liczbę równoległych strumieni (''%%-P%%''), lub format wyjściowy (''%%--json%%''). Serwer i klient powinny użyć tych samych wartości portu (''%%-p%%''). Dodatkowo przydatne są flagi ''%%-4%%''/''%%-6%%'', by wymusić IPv4 lub IPv6. ===== Najważniejsze opcje (parametry) ===== * **''%%-s%%'', ''%%--server%%''** – uruchamia iperf3 w trybie **serwera** nasłuchującego. Serwer nasłuchuje na porcie domyślnym 5201 (można zmienić z ''%%-p%%''). W trybie serwera program akceptuje jedno połączenie od klienta. * **''%%-c %%'', ''%%--client %%''** – uruchamia tryb **klienta**, łącząc się do wskazanego serwera. Parametr ''%%%%'' podaje adres IP lub nazwę serwera iperf3, do którego klient wysyła dane. * **''%%-t %%'', ''%%--time %%''** – długość trwania testu w sekundach. Domyślnie test trwa 10 s; opcja ''%%-t%%'' pozwala zmienić czas trwania. * **''%%-p %%'', ''%%--port %%''** – port TCP/UDP, na którym serwer nasłuchuje i do którego klient się łączy. Domyślnie jest to 5201. Użyte, gdy potrzebujemy niestandardowego portu (np. z powodu ograniczeń sieci). * **''%%-u%%'', ''%%--udp%%''** – włącza test w trybie **UDP** zamiast TCP. W trybie UDP można dodatkowo określić przepustowość pakietów przez opcję ''%%-b%%''. * **''%%-b %%'', ''%%--bandwidth %%''** – celowana przepustowość do transmisji. Format ''%%%%'' to np. ''%%100M%%'' dla 100 megabitów/s. Przy UDP ta wartość oznacza szybkość wysyłania pakietów (domyślnie 1Mbit/s), a przy TCP może ograniczać strumień (domyślnie “nieograniczony”). * **''%%-J%%'', ''%%--json%%''** – wynik testu wyświetlany w formacie JSON (przydatne do dalszej analizy). * **''%%--logfile %%''** – zapisuje wynik testu do wskazanego pliku, zamiast (lub obok) wyświetlania na ekranie. * **''%%-R%%'', ''%%--reverse%%''** – tryb **odwrócony**: klient inicjuje połączenie do serwera, ale to serwer wysyła dane do klienta. Pozwala zmierzyć prędkość ściągania (download), zachowując tę samą ścieżkę połączenia. * **''%%-V%%'', ''%%--verbose%%''** – szczegółowe informacje diagnostyczne o teście (opcjonalnie).