Naciśnij ESC, aby zamknąć

Jak wykonać test przepustowości na Raspberry Pi

Spis treści

Cześć!

W tym artykule przyjrzymy się bliżej iPerf, potężnemu narzędziu do pomiaru wydajności sieci.

Raspberry Pi, będący niedrogim i wszechstronnym komputerem jednopłytkowym, oferuje niezliczone możliwości dla entuzjastów technologii i profesjonalistów IT. Połączenie iPerf z Raspberry Pi otwiera nowe możliwości do eksploracji i optymalizacji sieci w domu lub małej firmie.

Czym jest iPerf?

iPerf to narzędzie do testowania przepustowości sieci, mierzące wydajność TCP i UDP. Jest programem open-source, dostępnym na Linux, Windows i MacOS. iPerf działa poprzez tworzenie danych, które są transmitowane między serwerem a klientem (również iPerf), pozwalając na analizę różnych parametrów sieci, takich jak prędkość przesyłania danych, utratę pakietów i opóźnienia. Jego prostota i elastyczność sprawiają, że jest on idealnym narzędziem do testowania sieci w różnych środowiskach, w tym na Raspberry Pi.

Użytkownicy mogą łatwo zainstalować i uruchomić iPerf na Raspberry Pi, wykorzystując jego możliwości do monitorowania i diagnozowania stanu sieciowego, co jest szczególnie przydatne w edukacji, projektach hobbystycznych oraz małych przedsiębiorstwach.

iPerf czy iPerf3?

Istnieją dwie wersje narzędzia do testowania przepustowości sieci: iPerf oraz jego nowsza wersja, iPerf3. Oto kluczowe różnice między nimi:

  • Rozwój i Wsparcie: iPerf (czasami nazywany iPerf2) to pierwotna wersja narzędzia. iPerf3 został napisany od podstaw i jest wspierany przez ESnet. iPerf3 nie jest kontynuacją iPerf2, lecz oddzielnym projektem.
  • Kompatybilność: iPerf3 nie jest wstecznie kompatybilny z iPerf2. Oznacza to, że serwer i klient używający iPerf3 nie będą mogli komunikować się z odpowiednikami używającymi iPerf2.
  • Funkcjonalność: iPerf3 oferuje pewne nowe funkcje oraz poprawki, których brakuje w iPerf2. Na przykład, iPerf3 ma lepszą obsługę raportowania wyników, pozwala na testowanie jednoczesnych wielu strumieni danych i oferuje bardziej szczegółową analizę.
  • Interfejs użytkownika i wyjście: iPerf3 ma nieco inny interfejs użytkownika i format wyjścia w porównaniu do iPerf2. Zmiany te mają na celu ułatwienie interpretacji wyników testów.
  • Obsługa protokołu: Oba narzędzia obsługują protokoły TCP i UDP, ale iPerf3 wprowadza lepsze zarządzanie i diagnostykę dla tych protokołów.

W praktyce, wybór między iPerf a iPerf3 zależy od konkretnych potrzeb użytkownika i wymagań środowiska testowego. iPerf3 jest często preferowany ze względu na swoje nowsze funkcje i lepsze wsparcie. Więcej informacji znajdziesz tutaj.

Przygotowanie

Zanim przystąpimy do sprawdzania przepustowości, warto odpowiednio przygotować nasze urządzenie – do stworzenia poradnika użyję Raspberry Pi w wersji 4B. Polecenia będziemy wydawać naszemu urządzeniu za pomocą SSH.

  • Obecnie możecie już skorzystać z dostępnego w sprzedaży Raspberry Pi 5, jednakże dostępność jego jest bardzo mała. Polecam skorzystać z rpilocator.com, aby zobaczyć gdzie możesz obecnie dostać w rozsądnej cenie urządzenie;
  • Na systemy operacyjne Microsoft Windows polecam PuTTY, z kolei na systemy operacyjne Apple MacOS polecam Termius.

Krok 1 – Zaktualizuj listę pakietów oraz wgraj aktualizacje

  • Uruchom Putty (Windows OS) lub Termius (MacOS), a następnie połącz się ze swoim urządzeniem,
  • Wprowadź poniższą komendę, aby zaktualizować listę pakietów oraz zainstalować dostępne aktualizacje:
sudo apt-get update && sudo apt-get upgrade -y

Krok 2 – Zainstaluj pakiet iPerf3

  • Wprowadź poniższą komendę, aby zainstalować pakiet do pomiaru przepustowości:
    • Pakiet musi zostać zainstalowany na urządzeniu pełniącym podczas pomiaru rolę serwera, jak i klienta.
sudo apt-get install iperf3 -y
  • Zaczekaj krótką chwilę, aż proces instalacji pakietu zostanie zakończony. Po pomyślnym zainstalowaniu, możesz przejść do kolejnej komendy, którą wykonasz w wierszu poleceń.
sudo apt-get install iperf3
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
  iperf3
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/28.4 kB of archives.
After this operation, 56.3 kB of additional disk space will be used.
Selecting previously unselected package iperf3.
(Reading database ... 76055 files and directories currently installed.)
Preparing to unpack .../iperf3_3.9-1+deb11u1_arm64.deb ...
Unpacking iperf3 (3.9-1+deb11u1) ...
Setting up iperf3 (3.9-1+deb11u1) ...
Processing triggers for man-db (2.9.4-2) ...
  • Aby sprawdzić wersję pakietu, wywołaj komendę:
iperf3 --version
  • Na moim przykładzie wygląda to następująco:
iperf 3.9 (cJSON 1.7.13)
Linux rec-rsp01 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr  3 17:24:16 BST 2023 aarch64
Optional features available: CPU affinity setting, IPv6 flow label, SCTP, TCP congestion algorithm setting, sendfile / zerocopy, socket pacing, authentication

Jak zmierzyć przepustowść za pomocą iPerf3 na Raspberry Pi

Serwer

  • Aby sprawdzić przepustowość między dwoma urządzeniami, na pierwszym Raspberry Pi które będzie pełniło rolę serwera, użyj poniższej komendy do uruchomienia aplikacji:
iperf3 -s -p 11111
  • Po wywołaniu nasłuchiwania na serwerze, otrzymasz komunikat:
iperf3 -s -p 11111
-----------------------------------------------------------
Server listening on 11111
-----------------------------------------------------------

Klient

  • Teraz na drugim Raspberry Pi, które pełnić będzie rolę klienta, użyj poniższej komendy do uruchomienia pomiaru:
iperf3 -c IP_DRUGIEGO_RASPBERRY_PI -p 11111
  • Po pomyślnym zestawieniu połączenia pomiędzy serwerem, a klientem – rozpocznie się pomiar. Rezultat powinien wyglądać podobnie jak poniżej:
Connecting to host XXX.XXX.XXX.XXX, port 11111
[  5] local XXX.XXX.XXX.XXX port 38668 connected to XXX.XXX.XXX.XXX port 11111
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   101 MBytes   851 Mbits/sec    0    573 KBytes       
[  5]   1.00-2.00   sec  93.3 MBytes   783 Mbits/sec    0    601 KBytes       
[  5]   2.00-3.00   sec  83.8 MBytes   703 Mbits/sec    0    826 KBytes       
[  5]   3.00-4.00   sec  97.5 MBytes   818 Mbits/sec    0    826 KBytes       
[  5]   4.00-5.00   sec  93.8 MBytes   786 Mbits/sec    0    872 KBytes       
[  5]   5.00-6.00   sec  97.5 MBytes   818 Mbits/sec    0   1004 KBytes       
[  5]   6.00-7.00   sec  95.0 MBytes   797 Mbits/sec    0   1.03 MBytes       
[  5]   7.00-8.00   sec  98.8 MBytes   827 Mbits/sec   29    812 KBytes       
[  5]   8.00-9.00   sec  85.0 MBytes   714 Mbits/sec    0    812 KBytes       
[  5]   9.00-10.00  sec   100 MBytes   839 Mbits/sec    0    812 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   946 MBytes   794 Mbits/sec   29             sender
[  5]   0.00-10.04  sec   943 MBytes   788 Mbits/sec                  receiver

iperf Done.

Zmiana warunku wyświetlania przepustowości

  • Możemy zmienić sposób wyświetlania rezultatów w kolumnie Bitrate korzystając z przełącznika –f – dostępne opcje: K (Kbps), M(Mbps), G (Gbps) oraz T (Tbps). Przykładowo dla wyniku pomiaru w Kbps – raport pomiaru wyjdzie następująco:
iperf3 -c XXX.XXX.XXX.XXX -p 11111 -f k
Connecting to host XXX.XXX.XXX.XXX, port 11111
[  5] local XXX.XXX.XXX.XXX port 38668 connected to XXX.XXX.XXX.XXX port 11111
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  89.2 MBytes  747852 Kbits/sec    0    503 KBytes       
[  5]   1.00-2.00   sec  91.7 MBytes  768921 Kbits/sec    0    559 KBytes       
[  5]   2.00-3.00   sec  99.6 MBytes  835087 Kbits/sec    0    745 KBytes       
[  5]   3.00-4.00   sec  93.8 MBytes  786487 Kbits/sec    0    783 KBytes       
[  5]   4.00-5.00   sec  95.0 MBytes  796908 Kbits/sec    0   1.08 MBytes       
[  5]   5.00-6.00   sec  92.5 MBytes  775914 Kbits/sec    0   1.08 MBytes       
[  5]   6.00-7.00   sec  92.5 MBytes  775956 Kbits/sec    0   1.13 MBytes       
[  5]   7.00-8.00   sec  91.2 MBytes  765473 Kbits/sec    0   1.13 MBytes       
[  5]   8.00-9.00   sec   102 MBytes  859814 Kbits/sec    0   1.13 MBytes       
[  5]   9.00-10.00  sec  91.2 MBytes  765477 Kbits/sec    0   1.13 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   939 MBytes  787789 Kbits/sec    0             sender
[  5]   0.00-10.04  sec   936 MBytes  782272 Kbits/sec                  receiver

iperf Done.

Filip Chochół

Filip Chochol runs two blogs: personal “chochol.io” and together with his girlfriend “Warsaw Travelers” about travel. He specializes in IT resource management and technical support, and has been active in the field of cyber security awareness for almost two years. A proponent of open-source technologies, he previously worked in the film and television industry in the camera division (2013-2021). After hours, he develops interests in smart homes and networking.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *


This site uses Akismet to reduce spam. Learn how your comment data is processed.