Bovenstaande zin is een veel gehoorde kreet richting netwerkbeheerders. Soms ligt het aan de apparatuur (bedraad of draadloos aangesloten?), soms aan de gebruiker zelf en soms inderdaad aan het (wifi) netwerk. Maar hoe achterhaal je nu of het inderdaad aan het netwerk ligt? In dit artikel gaan we dieper in op één van de mogelijke aanvliegroutes hiervoor: de performancetest.

Bandbreedte vs doorvoersnelheid

Laten we het allereerst hebben over het verschil tussen bandbreedte en doorvoersnelheid. De term bandbreedte geeft aan wat de theoretische snelheid van data is op het netwerk, terwijl doorvoersnelheid de werkelijke snelheid van gegevensoverdracht is.  Wat we dus eigenlijk willen weten, is de doorvoersnelheid.

Let’s test!

Nu zijn er verschillende mogelijkheden om de doorvoersnelheid vast te stellen: het huren van een setje dure performancetesters voor een week levert je gegarandeerd een mooi document met bijbehorende pie-charts op. Maar het kan ook simpeler, sneller en goedkoper!

Op internet zijn diverse tests beschikbaar waarvan de bekendste waarschijnlijk de Ookla speedtest is. Snel en simpel: ga in je webbrowser naar de Ookla website, klik op “Start” en je doorvoersnelheid voor zowel up- als download verschijnt binnen enkele seconden op je scherm.

Er is natuurlijk helemaal niks mis met deze tool als je vanaf je werkplek even snel de snelheid van je huidige verbinding naar het internet wil testen. Maar wat als je nu eens uitgebreider wil testen, bijvoorbeeld de doorvoersnelheid of Qos (Quality of Service) van je lokale netwerk of wil testen met UDP in plaats van TCP?

Zwitsers zakmes

Een tool die in de virtuele gereedschapskist niet mag ontbreken is iperf3, het Zwitserse zakmes onder de performance testers. Iperf3 is een doorontwikkeling van iperf en iperf2 en is klein (+/- 4 MB), cross-platform (Windows, Linux, MAC en zelfs Android), is CLI-based en dient te worden opgestart vanaf een terminal of command prompt. Iperf3 zelf kent 2 modi, te weten client of server waarbij vanuit de client de performance test moet worden gestart, eventueel aangevuld met diverse testparameters.

Er zijn behoorlijk wat mogelijke parameters en het gaat te ver om deze in dit artikel te benoemen maar een aantal handige zijn hieronder uitgeschreven:

  • -s                            : start iperf als ‘server’
  • -c <IP adres>     : start iperf als ‘client’ en verbind naar het IP adres van de iperf server
  • -u                           : gebruik UDP ipv TCP
  • -p <poort>         : specificeer hier een TCP/UDP poort indien deze afwijkt van de standaard poort 5201
  • -t <sec>                : aantal seconden, standaard 10.
  • -w <size>            : specificeer de window size
  • -P <# streams> : aantal gelijktijdige streams
  • -R                           : omgekeerde test: server zendt, client ontvangt
  • — dscp                  : geef DSCP waarde mee (geen Windows!)
  • -h                           : help, geeft alle mogelijke parameters weer

 

Laten we eens een test uitvoeren op een lokaal gerouteerd netwerk.

Allereerst is het zaak de iperf-server te starten.

Aan de serverzijde:

$ iperf3 -s
———————————————————–
Server listening on 5201
———————————————————–

 

Om daarna aan de clientzijde de performance-test te starten:

$ iperf3 -c 192.168.1.132
Connecting to host 192.168.1.132, port 5201
[  4] local 192.168.1.46 port 61708 connected to 192.168.1.132 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  19.9 MBytes   167 Mbits/sec
[  4]   1.00-2.00   sec  18.2 MBytes   153 Mbits/sec
[  4]   2.00-3.00   sec  18.2 MBytes   153 Mbits/sec
[  4]   3.00-4.00   sec  17.9 MBytes   150 Mbits/sec
[  4]   4.00-5.00   sec  19.0 MBytes   159 Mbits/sec
[  4]   5.00-6.00   sec  18.1 MBytes   152 Mbits/sec
[  4]   6.00-7.00   sec  17.9 MBytes   150 Mbits/sec
[  4]   7.00-8.00   sec  18.1 MBytes   152 Mbits/sec
[  4]   8.00-9.00   sec  18.5 MBytes   155 Mbits/sec
[  4]   9.00-10.00  sec  18.2 MBytes   153 Mbits/sec
– – – – – – – – – – – – – – – – – – – – – – – – –
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-10.00  sec   184 MBytes   154 Mbits/sec         sender
[  4]   0.00-10.00  sec   184 MBytes   154 Mbits/sec         receiver

 

In bovenstaand resultaat heeft het netwerk tussen de server en client een doorvoersnelheid van gemiddeld 154 Mbits/sec over een duur van 10 seconden.

Spelen we hier wat mee en zetten we nu een test op met 3 parallelle streams (-p 3) gedurende 4 seconden (-t 4) met een window-size van 16k (-w 16k) dan ziet dit er als volgt uit:

$ iperf3 -c 192.168.1.132 -P3 -w 16k -t 4
Connecting to host 192.168.1.46, port 5201
[  4] local 192.168.1.46 port 61892 connected to 192.168.1.132 port 5201
[  6] local 192.168.1.46 port 61893 connected to 192.168.1.132 port 5201
[  8] local 192.168.1.46 port 61894 connected to 192.168.1.132 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  6.25 MBytes  52.4 Mbits/sec
[  6]   0.00-1.00   sec  6.64 MBytes  55.7 Mbits/sec
[  8]   0.00-1.00   sec  6.25 MBytes  52.4 Mbits/sec
[SUM]   0.00-1.00   sec  19.1 MBytes   161 Mbits/sec
– – – – – – – – – – – – – – – – – – – – – – – – –
[  4]   1.00-2.00   sec  6.34 MBytes  53.2 Mbits/sec
[  6]   1.00-2.00   sec  6.08 MBytes  51.0 Mbits/sec
[  8]   1.00-2.00   sec  5.56 MBytes  46.7 Mbits/sec
[SUM]   1.00-2.00   sec  18.0 MBytes   151 Mbits/sec
– – – – – – – – – – – – – – – – – – – – – – – – –
[  4]   2.00-3.00   sec  5.84 MBytes  49.0 Mbits/sec
[  6]   2.00-3.00   sec  6.05 MBytes  50.7 Mbits/sec
[  8]   2.00-3.00   sec  5.92 MBytes  49.7 Mbits/sec
[SUM]   2.00-3.00   sec  17.8 MBytes   149 Mbits/sec
– – – – – – – – – – – – – – – – – – – – – – – – –
[  4]   3.00-4.01   sec  6.73 MBytes  56.2 Mbits/sec
[  6]   3.00-4.01   sec  5.75 MBytes  48.0 Mbits/sec
[  8]   3.00-4.01   sec  6.05 MBytes  50.5 Mbits/sec
[SUM]   3.00-4.01   sec  18.5 MBytes   155 Mbits/sec
– – – – – – – – – – – – – – – – – – – – – – – – –
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-4.01   sec  25.2 MBytes  52.7 Mbits/sec            sender
[  4]   0.00-4.01   sec  25.2 MBytes  52.7 Mbits/sec            receiver
[  6]   0.00-4.01   sec  24.5 MBytes  51.3 Mbits/sec            sender
[  6]   0.00-4.01   sec  24.5 MBytes  51.3 Mbits/sec            receiver
[  8]   0.00-4.01   sec  23.8 MBytes  49.8 Mbits/sec            sender
[  8]   0.00-4.01   sec  23.8 MBytes  49.7 Mbits/sec            receiver
[SUM]   0.00-4.01   sec  73.5 MBytes   154 Mbits/sec            sender
[SUM]   0.00-4.01   sec  73.4 MBytes   154 Mbits/sec            receiver

 

Voegen we uiteindelijk ook nog de optie –dscp EF toe aan de client dan zal al het verkeer ook gemarkeerd worden met de DSCP waarde EF:

Omdat iperf zowel een client- als een server-zijde nodig heeft, is dit goed te doen op een netwerk waar je zelf (fysiek) toegang toe hebt. Maar is het ook mogelijk om er met iperf achter te komen wat je doorvoersnelheid richting het internet is?

Jazeker! Er zijn op het internet een aantal publieke iperf3 servers beschikbaar waar je over specifieke poorten een performancetest kan uitvoeren. Je kan deze terugvinden op https://iperf.fr/iperf-servers.php inclusief de TCP/UDP poorten die hiervoor ‘open’ staan.

Als we een test richting één van deze publieke servers uitvoeren dan lijkt dit initieel wat tegen te vallen:

$ iperf3 -c ping.online.net -p 5208
Connecting to host ping.online.net, port 5208
[  4] local 192.168.1.46 port 51005 connected to 62.210.18.40 port 5208
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.01   sec  2.00 MBytes  16.6 Mbits/sec
— output omwille van leesbaarheid verwijderd —
[  4]   9.01-10.0   sec  1.38 MBytes  11.6 Mbits/sec
– – – – – – – – – – – – – – – – – – – – – – – – –
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-10.00  sec  16.8 MBytes  14.0 Mbits/sec           sender
[  4]   0.00-10.00  sec  16.5 MBytes  13.9 Mbits/sec           receiver

 

Verhogen we echter het aantal tegelijktijdige streams naar bijvoorbeeld 6 dan is het resultaat al meer in lijn met de eerder door Ookla gemeten uploadsnelheid:

C:\iPerf>iperf3 -c ping.online.net -p 5208 -P 6
Connecting to host ping.online.net, port 5209
— output omwille van leesbaarheid verwijderd —
[SUM]   0.00-10.00  sec  59.4 MBytes  49.8 Mbits/sec            sender
[SUM]   0.00-10.00  sec  58.4 MBytes  49.0 Mbits/sec            receiver

 

Bovenstaande voorbeelden zijn overigens nog maar een fractie van wat mogelijk is met iperf3.

Hulp nodig?

Axians kan uw netwerk onderwerpen aan verschillende performance en netwerktests, deze tests vervolgens analyseren en eventuele bottlenecks in overleg met u aanpakken. Neem contact met ons op via info.nl@axians.com of door te bellen naar +31 88 988 96 00 of natuurlijk direct met uw Client Manager.

Referentiepagina’s: