it-swarm.dev

Jak otestujete rychlost sítě mezi dvěma boxy?

Mám doma gigabitovou síť a několik krabic založených na Ubuntu. Z úplné zvědavosti bych chtěl zkontrolovat rychlost mezi těmito dvěma boxy. Nemám žádné problémy s rychlostí nebo tak něco, je to opravdu jen geek ve mně, který je zvědavý. Navíc možná, že výsledky mi dají vědět, jestli existuje prostor pro zlepšení, nebo že mám něco nakonfigurovaného špatně.

Jak tedy správně otestujete rychlost sítě mezi boxy Ubuntu?

181
Jacob Schoen

Používám iperf. Jedná se o uspořádání klientského serveru v tom, že jej spouštíte v režimu serveru na jednom konci a připojujete se k němu z jiného počítače na druhé straně sítě.

Jeden z obou strojů běží:

Sudo apt-get install iperf

Na jednom ze strojů spustíme server iperf:

iperf -s

A na druhém počítači řekněte iperf, aby se připojil jako klient:

iperf -c <address of other computer>

Na klientském počítači uvidíte něco podobného:

[email protected]:~$ iperf -c tim
------------------------------------------------------------
Client connecting to tim, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.0.4 port 37248 connected with 192.168.0.5 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.04 GBytes    893 Mbits/sec

Samozřejmě, pokud používáte firewall na serverovém počítači, musíte povolit připojení na portu 5001 nebo změnit port pomocí příznaku -p.


Stejnou věc můžete udělat s prostým starým nc (netcat), pokud jste tak nakloněni. Na serveru:

nc -vvlnp 12345 >/dev/null

A klient může přepsat gigabajt nul skrz dd přes tunel nc.

dd if=/dev/zero bs=1M count=1K | nc -vvn 10.10.0.2 12345

Jako ukázka:

$ dd if=/dev/zero bs=1M count=1K | nc -vvn 10.10.0.2 12345
Connection to 10.10.0.2 12345 port [tcp/*] succeeded!
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 9.11995 s, 118 MB/s

Načasování tam je dáno dd, ale mělo by být dostatečně přesné, protože může vydávat výstup tak rychle, jak jej bude potrubí trvat. Pokud s tím nejste spokojeni, můžete celou věc zabalit do volání time.

Pamatujte, že výsledek je v mega bajtů, takže jej vynásobte 8, abyste dostali mega bity - za sekundu. Ukázka výše běží rychlostí 944 Mb/s.

295
Oli

Stejné jako doporučení Oli pro iperf. Stačí přidat několik bodů:

  1. Existují také klienti Windows, kteří umožňují testování napříč platformami.
  2. -t <seconds> mění délku testu. -P <n> mění počet současných připojení. Například, iperf -c [target IP] -P 10 -t 30 testuje 10 spojení společně po dobu 30 sekund a poskytuje agregované výsledky spolu s 10 samostatnými rychlostmi připojení.
  3. Nepotřebujete Sudo. Jednoduše si můžete stáhnout binární soubor na http://iperf.fr/ . Mělo by to fungovat. Stáhněte si ji pomocí wget, spustitelnou pomocí chmod a můžete přímo spustit binární. Funguje to perfektně.

Zjistil jsem, že při výchozím nastavení se rychlost jednoho připojení poměrně mění. S paralelním připojením 3+ jsou však výsledky na mém gigabajtovém přepínači konzistentnější. (trvale @ 910-920Mbps)

23
wujj123456

Pomocí tento skript můžete snadno otestovat rychlost připojení mezi vaším strojem a některým vzdáleným hostitelem. Příklad použití:

$ scp-speed-test.sh [email protected]_Host 80000
  • [email protected]_Host je váš cílový hostitel (k tomuto hostiteli musíte mít ssh-přístup)
  • 80000 je přibližná velikost testovacího souboru (v kbs), který bude přijat vzdálenému hostiteli. Není to povinný argument.
8
VeLKerr

Příkaz níže nevyžaduje další balíčky, ale přístup SSH:

ssh [email protected] 'dd if=/dev/zero bs=1GB count=3 2>/dev/null' | dd of=/dev/null status=progress

Příklad výstupu:

2992238080 bytes (3.0 GB) copied, 27.010250 s, 111 MB/s
5859375+0 records in
5859375+0 records out
3000000000 bytes (3.0 GB) copied, 27.1943 s, 110 MB/s

Příkaz vytiskne fiktivní soubor o velikosti 3 GB (1 000 ^ 3 bajtů) plný nul k vytištění na vzdáleném serveru, který je vytištěn (přenesen) přes SSH k vytištění místního serveru a poté místně přenesen do /dev/null (tj. ignorováno). Při provádění testu můžete dokonce vidět průběh testu.

Rozhodně ne tak přesný jako jiné nástroje, ale můj případ použití byl vyladit proces zálohování, kde jsem chtěl vyzkoušet, zda rychlost sítě byla problémem bez instalace dalších balíčků.

5
bm-bergmotte

Chcete-li otestovat svou ethernetovou LAN na nižší úrovni, můžete použít Etherate, což je bezplatný testovací nástroj Ethernet CLI Ethernet:

https://github.com/jwbensley/Etherate

Házení do mixu jako nástroje jako iPerf (které jsou velmi dobré!) Fungují přes IP a TCP nebo UDP.) Etherate testy přímo přes Ethernet/OSI vrstvu 2.

4
jwbensley

Existují také některé další pěkné nástroje příkazového řádku pro porovnávání šířky pásma mezi dvěma hostiteli:

nuttcp

server$ nuttcp -S
client$ nuttcp -v -v -i1 1.1.1.1 ;# 1.1.1.1 is server's address

nepim

 server$ nepim
 client$ nepim -d -c 1.1.1.1 ;# 1.1.1.1 is server's address

goben

 server$ goben
 client$ goben -hosts 1.1.1.1 ;# 1.1.1.1 is server's address
2
Everton

jak jsem ve svém komentáři zdůraznil, že řešení není dost dobré, protože klient/server není optimalizovaný až ... stlačení každý kousek rychlosti

moje řešení:

udělejte ramdisk na obou stranách (proto nejste omezeni rychlostí ukládání dat a doporučuji, abyste je vytvořili s ramfy, nikoli tmpfs, takže nepůjdou ve swapu ... jen buďte opatrní, abyste nezanechali alespoň 512M volné paměti pro systém je to požadováno, pokud máte giga ethernet, při této rychlosti mohou i SSD zpomalit) nainstalovat Apache na server, pak vytvořit odkaz na ramdisk, vytvořit několik velkých souborů na ramdisk (100M-1G, můžete je vytvořit pomocí dd z/dev/random nebo copy, pokud máte nějaké po ruce), pak jděte na stranu klienta a stáhněte je (také na té straně ramdisk) s pokročilým programem pro stahování, použil jsem lftp

ach, rozdíl byl hlavní, od 75 Mbps hlášených iperf a 9,5 M/s netcat

do 11,18M/s s mým řešením:

1591129421 bytes transferred in 136 seconds (11.18M/s)
0
THESorcerer