İki kutu arasındaki ağ hızını nasıl test edersiniz?


168

Evimde kurulu bir gigabit ağı ve birkaç Ubuntu tabanlı kutu var. Tam bir meraktan iki kutu arasındaki hızı kontrol etmek istiyorum. Hız ya da herhangi bir şeyle ilgili herhangi bir sorun yaşamıyorum, bu gerçekten merak ediyorum sadece içimdeki inek. Artı, belki de sonuçlar iyileştirme için yer olup olmadığını veya yanlış yapılandırılmış bir şey olduğumu bana bildirir.

Peki Ubuntu kutuları arasındaki ağ hızını doğru bir şekilde nasıl test ediyorsunuz?

Yanıtlar:


272

Kullandığım iperf. Bir uçta sunucu modunda çalıştırmanız ve ağın diğer tarafındaki başka bir bilgisayardan bağlanmanız için bir istemci sunucu düzenlemesidir.

İki makineden biri çalışıyor:

sudo apt-get install iperf

iperfMakinelerden birinde bir sunucu başlatırız :

iperf -s

Sonra diğer bilgisayarda, iperfistemci olarak bağlanmayı söyle :

iperf -c <address of other computer>

İstemci makinesinde şöyle bir şey görürsünüz:

oli@bert:~$ 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

Elbette, sunucu makinede bir güvenlik duvarı kullanıyorsanız, 5001 numaralı bağlantı noktasında bağlantılara izin vermeniz veya bağlantı noktasını -pbayrakla değiştirmeniz gerekir .


Bu ncşekilde eğimli iseniz düz eski (netcat) ile hemen hemen aynı şeyi yapabilirsiniz . Sunucu makinesinde:

nc -vvlnp 12345 >/dev/null

Ve müşteri tünelin ddüzerinden bir gigabaytlık sıfırları çıkarabilir nc.

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

Demod olarak:

$ 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

Oradaki zamanlama tarafından verilir, ddancak yalnızca borunun alacağı kadar hızlı bir şekilde çıkabileceği kadar doğru olmalıdır. Bundan memnun değilseniz, her şeyi bir timeçağrıya sarabilirsiniz .

Unutmayın ki sonuç mega bayt, bir saniyede bir mega bit elde etmek için 8 ile çarpın . Yukarıdaki demo 944mbps'de çalışıyor.


Adam sorularıma cevapların var! Görünüşe göre ağım sizin kurulmadığı gibi sizin de sadece 714 MByte ve 598 Mbits / sn bant genişliğinde aktarılıyor. Dunno gelecekte buna bakabilir. Teşekkürler.
Jacob Schoen

Adalet, diğer kutu sadece bir anahtar (ve 20meters cat5e) uzakta ve hiçbir tıkanıklık yoktur. 600mbps hala oldukça hızlı.
Oli

Bu harika, ancak sunucuya kök erişimim yok.
Geoff

-P 10. deneyin. Tek bağlantı sonucum jschoens'e benzer, ancak 3+ paralel bağlantıyla, sürekli olarak 920Mbps.
wujj123456

1
@ CMCDragonkai Muhtemelen size ait olmayan kaynakları test etmemelisiniz. Bant genişliği ağır testlerinin kısa vadeli istikrar üzerinde bir etkisi olabilir.
Oli

22

Oli'nin iperf için önerdiği gibi. Sadece birkaç nokta eklemek istiyorum:

  1. Platformlar arasında test yapılmasını sağlayan windows istemcileri de vardır.
  2. -t <seconds>test uzunluğunu değiştirir. eşzamanlı bağlantı sayısını değiştirir. Örneğin, 10 bağlantıyı 30 saniye boyunca birlikte test eder ve 10 ayrı bağlantı hızı ile birlikte toplu sonuçlar verir.-P <n>iperf -c [target IP] -P 10 -t 30
  3. Suya ihtiyacın yok. İkili dosyayı http://iperf.fr/ adresinden indirebilirsiniz . İşe yaramalı. Şununla indirin wget, çalıştırılabilir hale getirin chmodve doğrudan ikili dosyayı çalıştırabilirsiniz. Mükemmel çalışıyor.

Varsayılan ayarları kullanarak, tek bağlantı hızının biraz dalgalandığını öğrendim. Ancak, 3+ paralel bağlantıyla, sonuçlar gigabayt anahtarımda daha tutarlı. (sürekli olarak 910-920 Mbps'de)


8

Bu komut dosyasını kullanarak , makinenizle uzaktaki bir ana bilgisayar arasındaki bağlantı hızını kolayca test edebilirsiniz. Kullanma örneği:

$ scp-speed-test.sh user@remote_host 80000
  • user@remote_host Hedef ana sunucunuz (bu ana bilgisayara ssh erişiminizin olması gerekir)
  • 80000Uzak ana bilgisayara alınacak olan test dosyasının (kbs cinsinden) yaklaşık büyüklüğüdür. Zorunlu argüman değildir.

4
Bu, daha düşük bir tabakadaki bir testten daha düşük olacak olan SCP uygulamasının hızını test ediyor gibi görünmektedir. Örneğin, nc L4 kullanır. Elbette, SCP'nin hızına daha fazla önem veriyorsanız, bu harika.
sudo

1
Sorunları var: Bu komut dosyası diske bir dosya yazar ve okur - ram'dan daha yavaş, bu nedenle yapay bir yavaşlama olabilir. Ayrıca sadece sıfır gönderir, eğer sıkıştırılırlarsa bu büyük bir yapay hızlanmadır. Eğer sahte veri istiyorsan, kullanmayın /dev/random(engelleyebilir) ya daurandom (bağlantı önerildiği söylenemez ) onlar da çok yavaş olabilirler, bunun yerine dm-crypt kullanın (Bkz. Cryptsetup SSS 2.19 Crypto- sınıf rastgelelik? ) belki ram bir dosya ile.
Xen2050

4

Ethernet LAN'ınızı daha düşük bir seviyede test etmek istiyorsanız, ücretsiz bir Linux CLI Ethernet test aracı olan Etherate'i kullanabilirsiniz:

https://github.com/jwbensley/Etherate

Karışıma iPerf (ki çok iyi!) Gibi araçlar IP ve TCP veya UDP üzerinden gelir. Etherate, Ethernet / OSI katman 2 üzerinde doğrudan test eder.


2

Aşağıdaki komut ek paketler gerektirmez, SSH erişimi gerektirir:

ssh username@myserver.example.com 'dd if=/dev/zero bs=1GB count=3 2>/dev/null' | dd of=/dev/null status=progress

Örnek çıktı:

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

Komut, uzak sunucudaki stdout'a sıfırlarla dolu bir 3GB (1000 ^ 3 baytlık) boş bir dosya yazdırır; bu, SSH aracılığıyla yerel sunucunun stdout'una basılır (aktarılır) ve yerel olarak yönlendirilir /dev/null(yani yoksayılır). Test sırasında testin ilerlemesini bile görebilirsiniz.

Kesinlikle diğer araçlar kadar kesin değil, ancak kullanım durumum, ağ hızının ek paketler yüklemeden sorun olup olmadığını test etmek istediğim bir yedekleme işleminde hata ayıklamaktı.


1

İki ana bilgisayar arasında bant genişliği kıyaslama yapmak için başka güzel komut satırı araçları da vardır:

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
Bunlar birbirinden ve iperf'ten nasıl farklı? Aynı mı çalışıyorlar, ne yapıyorlar? nuttcp Debian'da ve görünüşe göre "nuttcp, Nntcp'ye dayanıyor. Bu sırayla, Silicon Graphics’in (SGI )’nın orijinal ttcp’sindeki bir geliştirme tarafından, Aralık 1984’ten önce bir süre BRL’de Mike Muuss tarafından yazılmış. DARPA'nın ilk BSD Unix sürümünde hangi sürümün yer alacağına karar vermesine yardımcı olmak için UC Berkeley ve BBN tarafından sunulan TCP yığınları. ”
Xen2050

0

En iyi cevabımdaki yorumumda belirttiğim gibi, bu çözüm yeterince iyi değil çünkü müşteri / sunucu optimize edilmemiş olabilir ... her bir hızı sıkmak

çözümüm:

iki tarafa bir ramdisk yapın (bu nedenle, depolama hızıyla sınırlı değilsiniz ve onları tmpfs değil ramps ile yapmanızı öneririm, bu yüzden takas yapmayacaklar ... sadece en az 512M boş hafıza bırakmamaya dikkat edin sistem için giga ethernet'iniz varsa bu GEREKLİDİR, bu hızda bile SSD'ler işleri yavaşlatabilir) sunucuya apache yükleyin, ardından ramdisk'e bir link oluşturun, ramdisk üzerinde birkaç büyük dosya oluşturun (100M-1G, bunları / dev / random veya dd den elinizde bazı şeyler varsa) daha sonra istemci tarafına gidin ve gelişmiş bir indirme programı ile onları indirin (ayrıca o tarafta ramdisk) lftp

peki, fark, iperf ve 9.5M / s netcat tarafından bildirilen 75 mbps'den büyüktü.

için 11.18M / sn benim çözeltisiyle:

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

9,5M * 8 = 76 mbps; 75
Mbps'ye

-4

Bilgisayarınızı ilk kutuya, diğer kutuyu ilk kutuya takın. Sonra bilgisayarınızdan ilk kutuya ping işlemi yapın, sonucu diğer kutuya ping atın ve çıkarma işlemini yapın.


10
Bu, hızın yalnızca bir kısmı olan ağ gecikmesini gösterir. Örneğin, telefonumun 3G bağlantısının çok büyük gecikme süresi var (100-300ms), ancak yine de 5mbps veri hacmini yönetebiliyor.
Oli

Hız istedi, ancak verim istedi, benim hatam değil.
Nyamiou Galeanthrope

1
Gecikme, reaksiyon zamanıdır, hız değildir.
wullxz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.