Pro měření rychlosti internetových přípojek jsou veřejné servery jako Ookla, Cloudflare Speed Test nebo CESNET speedtest zpravidla dostatečné. Jiná situace ovšem nastává, když stojíme před úkolem změřit propustnost lokální sítě. Protože internetová přípojky bývá obvykle pomalejší než lokální síť. Pro tyto scénáře se nabízí několik způsobů měření. My si ukážeme jak na to s open source softwarem iperf a LibreSpeed. Mimochodem, druhý jmenovaný je používán právě pro CESNET speedtest.
iperf3
Unixový iperf běží nepřekvapivě v příkazovém řádku. Do Debianu jej nainstalujeme obligátním sudo apt install iperf3, do macOS brew install iperf3, ale najdeme jej samozřejmě také v jiných distribucích. Za zmínku stojí, že macOS verze neukazuje v klientském módu Retr (Retransmissions), ať je zbytečně nehledáte. Serverovou stranu spustíme jednoduše přes iperf3 -s. Jednodušší to být nemůže.
Klientskou stranu spustíme neméně snadno přes příklad pro IP adresu iperf serveru 192.168.1.100:
$ iperf3 -c 192.168.1.100
Connecting to host 192.168.1.100, port 5201
[ 5] local 192.168.1.00 port 40922 connected to 192.168.1.100 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 284 MBytes 2.38 Gbits/sec 0 1.50 MBytes
[ 5] 1.00-2.00 sec 281 MBytes 2.36 Gbits/sec 0 1.62 MBytes
[ 5] 2.00-3.00 sec 281 MBytes 2.36 Gbits/sec 0 1.62 MBytes
[ 5] 3.00-4.00 sec 281 MBytes 2.35 Gbits/sec 0 1.62 MBytes
[ 5] 4.00-5.00 sec 280 MBytes 2.35 Gbits/sec 0 1.62 MBytes
[ 5] 5.00-6.00 sec 281 MBytes 2.35 Gbits/sec 0 1.62 MBytes
[ 5] 6.00-7.00 sec 280 MBytes 2.35 Gbits/sec 0 1.62 MBytes
[ 5] 7.00-8.00 sec 280 MBytes 2.35 Gbits/sec 0 1.62 MBytes
[ 5] 8.00-9.00 sec 281 MBytes 2.36 Gbits/sec 0 1.62 MBytes
[ 5] 9.00-10.00 sec 280 MBytes 2.35 Gbits/sec 0 1.62 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 2.74 GBytes 2.36 Gbits/sec 0 sender
[ 5] 0.00-10.00 sec 2.74 GBytes 2.35 Gbits/sec receiver
Abychom předešli rozčarování, před spuštěním speedtestu bychom si měli zkontrolovat linkovou rychlost síťověk. Na macOS přes ifconfig en0 | grep media. Na Linuxu například přes ethtool enp2s0 | grep Speed. Označení síťvých rozhranní se samozřejmě liší případ od případu. Za zmínku stojí i některé přepínač, např. -P 4 spustí 4 paralelní připojení. Přepínač -t 30 spustí test po dobu 30 sekund na místo defaultních 10 sekund. Přepínač -R prohodí testovací strany.
Doplňme, že pro rychlosti nad 10 Gbit/s už bychom ke spolehlivosti potřebovali přímý přístup do paměti RDMA a upravený tooling.
LibreSpeed
Na scénu přichází měřící open source projekt LibreSpeed, ke kterému se připojujeme běžným webovým browserem. Tedy, můžeme se k serveru připojit i přes speedtest-cli, ale základem je v obou případech LibreSpeed server.
Nejsnadnější spuštění je přes Docker Compose:
services:
librespeed:
image: ghcr.io/librespeed/speedtest:latest-alpine
container_name: librespeed
restart: always
environment:
- MODE=standalone
ports:
- '8080:8080'
Případně můžeme použít Golang verzi image: minimages/librespeed-speedtest-go. Existují i další implementace. Do browseru pak stačí zadat http://IP:8080. Protože měření budeme používat pro lokální síť a přenášené informace nejsou citlivého charakteru, není třeba před LibreSpeed předřazovat reverzní proxy. Pokud tak přesto učiníme, je třeba zapnout na reverzní proxy pouze protokol HTTP/1, jinak můžou být rychlosti v testech zkreslené.
Automatizace s MySpeed
Pro hračičky lze doplnit, že LibreSpeed lze kompbinovat s open source automatizovanou analytikou MySpeed, který podporuje backendy LibreSpeed, Ookla a Cloudflare.