ePrivacy and GPDR Cookie Consent by TermsFeed Generator

iPerf3: Nástroj na meranie kvality siete

Krátke predstavenie skvelého nástroja na meranie kvality siete.

iPerf3: Nástroj na meranie kvality siete
Photo by Marc-Olivier Jodoin / Unsplash

Pred nedávnom som potreboval otestovať kvalitu (odozvu, rýchlosť, straty) siete medzi dvoma datacentrami. Ako prvý nástroj, ktorý príde bežnému IŤákovi na um je ping. Pingáč, respektíve ICMP protokol, máva na sieťových zariadeniach nízku prioritu. Tým pádom s vysokou pravdepodobnosťou bude mať na výstupe vyššiu odozvu, než očakávame.

Aplikácie, ktoré prevádzkujem komunikujú TCP protokolom. Preto som sa v bezbrehých vodách internetu snažil nájsť nástroj, ktorý meria práve rýchlosť medzi dvoma TCP uzlami.

Moje požiadavky na nástroj sú minimálne: jednoduchá inštalácia, interface príkazovej riadky a štatistika merania na výstupe.

Google mi ako prvý takýto nástroj ponúkol netperf. Na tomto nástroji ma zaujalo niekoľko vecí:

  1. manuál sa zdá byť z roku 1995
  2. hláška "BE SURE TO READ THE MANUAL. EVEN THOUGH IT MAY BE OUTDATED"
  3. pred rokom nejaký dobrák z HPE odmazal medzery na konci riadkov
  4. na jednom z prepínačov sa najprv nastaví maximum a potom minimum, zvláštny mýšlienkový pochod autorov

Aj keď sa zdá byť nástroj použiteľný, odpor voči diletantizmu autora HPE mi bráni v otestovaní tohto nástroja.

Našťastie som následne narazil na iPerf3. Prakticky rovnaký nástroj, dostupný na všetkých platformách, aktívne vyvýjaný a s dobrou dokumentáciou. Rozhodol sa teda vyskúšať ho.

Prakticky

Inštalácia na strane servra a klienta je na debian systémoch rovnaká:

apt-get install iperf3

Spustenie servra, prepínačom -p nastavíme port, -s nastavíme server mód.

iperf3 -p 5000 -s

Spustenie klienta, prepínačom -c nastavíme adresu protistrany, -p port, -u UDP mód meria lag/jitter medzi uzlami.

iperf3 -c 10.20.20.20 -p 5000 -u

Na výstupe vidíme v pravidelných intervaloch pribúdať čiastkové štatistiky. V sumáre vidíme trvanie celého testu, množstvo prenesených dát, rýchlosť prenosu dát, jitter (lag) a stratené packety.

-----------------------------------------------------------
Server listening on 5000
-----------------------------------------------------------
Accepted connection from 10.10.10.10, port 37014
[  5] local 10.20.20.20 port 5000 connected to 10.10.10.10 port 35243
[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-1.00   sec   129 KBytes  1.05 Mbits/sec  0.041 ms  0/91 (0%)
[  5]   1.00-2.00   sec   127 KBytes  1.04 Mbits/sec  0.051 ms  0/90 (0%)
[  5]   2.00-3.00   sec   129 KBytes  1.05 Mbits/sec  0.064 ms  0/91 (0%)
[  5]   3.00-4.00   sec   127 KBytes  1.04 Mbits/sec  0.043 ms  0/90 (0%)
[  5]   4.00-5.00   sec   129 KBytes  1.05 Mbits/sec  0.038 ms  0/91 (0%)
[  5]   5.00-6.00   sec   129 KBytes  1.05 Mbits/sec  0.038 ms  0/91 (0%)
[  5]   6.00-7.00   sec   127 KBytes  1.04 Mbits/sec  0.048 ms  0/90 (0%)
[  5]   7.00-8.00   sec   129 KBytes  1.05 Mbits/sec  0.061 ms  0/91 (0%)
[  5]   8.00-9.00   sec   127 KBytes  1.04 Mbits/sec  0.033 ms  0/90 (0%)
[  5]   9.00-10.00  sec   129 KBytes  1.05 Mbits/sec  0.045 ms  0/91 (0%)
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-10.00  sec  1.25 MBytes  1.05 Mbits/sec  0.045 ms  0/906 (0%)  receiver

Navýstupe klienta máme viacmenej rovnaké informácie ako na servri.

Connecting to host 10.20.20.20, port 5000
[  5] local 10.10.10.10 port 35243 connected to 10.20.20.20 port 5000
[ ID] Interval           Transfer     Bitrate         Total Datagrams
[  5]   0.00-1.00   sec   129 KBytes  1.05 Mbits/sec  91
[  5]   1.00-2.00   sec   127 KBytes  1.04 Mbits/sec  90
[  5]   2.00-3.00   sec   129 KBytes  1.05 Mbits/sec  91
[  5]   3.00-4.00   sec   127 KBytes  1.04 Mbits/sec  90
[  5]   4.00-5.00   sec   129 KBytes  1.05 Mbits/sec  91
[  5]   5.00-6.00   sec   129 KBytes  1.05 Mbits/sec  91
[  5]   6.00-7.00   sec   127 KBytes  1.04 Mbits/sec  90
[  5]   7.00-8.00   sec   129 KBytes  1.05 Mbits/sec  91
[  5]   8.00-9.00   sec   127 KBytes  1.04 Mbits/sec  90
[  5]   9.00-10.00  sec   129 KBytes  1.05 Mbits/sec  91
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-10.00  sec  1.25 MBytes  1.05 Mbits/sec  0.000 ms  0/906 (0%)  sender
[  5]   0.00-10.00  sec  1.25 MBytes  1.05 Mbits/sec  0.045 ms  0/906 (0%)  receiver

Pre porovnanie výsledok ping príkazu vyzerá nejak takto. Keď sa pozrieme na priemerné namerané hodnoty lagu, tak ping je na tom horšie (342 vs 45 mikro sekúnd). V mojom prípade sa môže zdať, že až 7 krát. Nutné je však uvedomiť si, že sme kvôli tejto informácií boli nútení použiť UDP mód. TCP móde by som to odhadol na polovičnú hodnotu, teda TCP protokol je v tomto prípade 2 krát pomalší než UDP, respektíve 3 krát rýchlejší než ICMP.

ping 10.20.20.20
PING 10.20.20.20 (10.20.20.20) 56(84) bytes of data.
64 bytes from 10.20.20.20: icmp_seq=1 ttl=57 time=0.363 ms
64 bytes from 10.20.20.20: icmp_seq=2 ttl=57 time=0.444 ms
64 bytes from 10.20.20.20: icmp_seq=3 ttl=57 time=0.255 ms
64 bytes from 10.20.20.20: icmp_seq=4 ttl=57 time=0.365 ms
64 bytes from 10.20.20.20: icmp_seq=5 ttl=57 time=0.434 ms
64 bytes from 10.20.20.20: icmp_seq=6 ttl=57 time=0.322 ms
64 bytes from 10.20.20.20: icmp_seq=7 ttl=57 time=0.219 ms
64 bytes from 10.20.20.20: icmp_seq=8 ttl=57 time=0.249 ms
64 bytes from 10.20.20.20: icmp_seq=9 ttl=57 time=0.234 ms
64 bytes from 10.20.20.20: icmp_seq=10 ttl=57 time=0.538 ms
^C
--- 10.20.20.20 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 224ms
rtt min/avg/max/mdev = 0.219/0.342/0.538/0.101 ms

Záverom

iPerf3 sa zdá byť veľmi šikovným nástrojom. Má ďaleko viac možností, než som popísal v tomto jednoduchom prípade užitia. Napríklad umožňuje testovať reverzný tok smerom zo servra ku klientovi, obmedziť rýchlosť toku, nastaviť dĺžku testu atď...

Našiel som pár zaujímavých projektov, ktoré stavajú na tomto nástroji. Reprezentácia dát v grafoch. Prvý projekt je čerstvejší, no komplexnejší. Ten druhý vyzerá byť neudržovaný, na druhú stranu je to len jeden skript.

GitHub - nerdalert/cloud-bandwidth: Measure and Graph Network Bandwidth
Measure and Graph Network Bandwidth. Contribute to nerdalert/cloud-bandwidth development by creating an account on GitHub.
GitHub - hchiuzhuo/iperfPlotter
Contribute to hchiuzhuo/iperfPlotter development by creating an account on GitHub.

PingTools Network Utilities mi v telefóne nahradil SpeedTest od Ookly. iPerf3 je len jeden z mnohých mocných nástrojov, ktoré sú v tomto balíku obsiahnuté.

PingTools Network Utilities - Apps on Google Play
PingTools - a simple but powerful set of network utilities.