iPerf3 Nedir?

https://iperf.fr/

iPerf3, IP ağlarında ulaşılabilir maksimum bant genişliğinin aktif ölçümleri için bir araçtır. Zamanlama, arabellekler ve protokoller (IPv4 ve IPv6 ile TCP, UDP, SCTP) ile ilgili çeşitli parametrelerin ayarlanmasını destekler. Her test için bant genişliği, kayıp ve diğer parametreleri bildirir. Bu, orijinal iPerf ile hiçbir kod paylaşmayan ve ayrıca geriye dönük uyumlu olmayan yeni bir uygulamadır. iPerf, orijinal olarak NLANR/DAST tarafından geliştirilmiştir . iPerf3 esas olarak ESnet / Lawrence Berkeley Ulusal Laboratuvarı tarafından geliştirilmiştir . Üç maddeli bir BSD lisansı altında yayınlandı .

iPerf özellikleri

  • TCP ve SCTP
    • Bant genişliğini ölçün
    • MSS/MTU boyutunu ve gözlemlenen okuma boyutlarını bildirin.
    • Soket arabellekleri aracılığıyla TCP pencere boyutu desteği.
  • UDP
    • İstemci, belirtilen bant genişliğinde UDP akışları oluşturabilir.
    • Paket kaybını ölçün
    • Geciktirme titreşimini ölçün
    • Çok noktaya yayın özelliği
  • İstemci ve sunucu aynı anda birden fazla bağlantıya sahip olabilir (-P seçeneği).
  • Sunucu, tek bir testten sonra çıkmak yerine birden çok bağlantıyı yönetir.
  • Aktarılacak veri miktarı (-n veya -k seçeneği) yerine belirli bir süre (-t seçeneği) için çalışabilir.
  • Belirli aralıklarla (-i seçeneği) periyodik, ara bant genişliği, titreşim ve kayıp raporları yazdırın.
  • Sunucuyu bir arka plan programı olarak çalıştırın (-D seçeneği)
  • Bağlantı katmanı sıkıştırmasının ulaşılabilir bant genişliğinizi nasıl etkilediğini test etmek için temsili akışları kullanın (-F seçeneği).
  • Bir sunucu aynı anda tek bir istemciyi (iPerf3) aynı anda birden çok istemciyi kabul eder (iPerf2)
  • Yeni: TCP yavaş başlatmayı yoksay (-O seçeneği).
  • Yeni: UDP ve (yeni) TCP (-b seçeneği) için hedef bant genişliğini ayarlayın.
  • Yeni: IPv6 akış etiketini ayarla (-L seçeneği)
  • Yeni: Tıkanıklık kontrol algoritmasını ayarlayın (-C seçeneği)
  • Yeni: TCP yerine SCTP kullanın (--sctp seçeneği)
  • Yeni: JSON formatında çıktı (-J seçeneği).
  • Yeni: Disk okuma testi (sunucu: iperf3 -s / istemci: iperf3 -c testhost -i1 -F dosya adı)
  • Yeni: Disk yazma testleri (sunucu: iperf3 -s -F dosya adı / istemci: iperf3 -c testhost -i1)

iPerf3'ü hangi sistemler çalıştırabilir?

Çapraz platform: Windows, Linux, Android, MacOS X, FreeBSD, OpenBSD, NetBSD, VxWorks, Solaris,...

Test sırasında iPerf’in, üretken uygulamaları ve kullanıcıları olumsuz yönde etkileyebilecek istemci ve sunucu arasındaki tüm mevcut iletişim kanalını kullandığını unutmamak önemlidir .

iPerf/3 Kurulumu

Aracı depodan rahatlıkla kurabilirsiniz.

DEBIAN DISTRO

Paket listesini güncelleyip, uygulamayı kuralım.

sudo apt update && sudo apt install -y iperf iperf3

RHEL DISTRO

RHEL tabanlı dağıtımlar üzerinde yapılan kurulumlarda epel reposu yüklenmelidir.

sudo yum install -y epel-release

Artık iperf3 depoda olduğuna göre uygulamayı kuralım.

sudo yum install -y iperf iperf3 

Linux için iperf3 sunucusu olarak kullanmak istiyorsanız, TCP / UDP bağlantı noktaları 5201’i firewalld’de (iptables), ufw güvenlik duvarlarından açmanız gerekir.

Eğer firewall açıksa ve ip tables kullanıyorsak  aşağıdaki komutlar ip ilgili porta izin vermelisiniz.

iptables -A INPUT -p tcp --dport 5201 -j ACCEPT 
service iptables save 
service iptables restart

iPerf/3 Kullanımı

Bu kılavuzda sunucular arasında ağ performans testleri gerçekleştirilecektir. Başlamadan önce bilmemiz gereken bir kaç önemli nokta var. İlk olarak eğer bir ağ üzerinde bir sorunu çözmek istiyorsanız, iki sunucu arasında en kısa yolu kullanmanız gerekmektedir. Yani, test sırasında arada bir modem, hub, router, switch, nic teaming var ise testler farklılık gösterecektir. Şimdi ben testleri en kısa yoldan yapmaya çalışacağım.

Testleri 2 ayrı fiziksel sunucu üzerindeki 2 ayrı sanal makinalar üzerinden gerçekleştireceğim. Yani sanal makinalar farklı fiziksel sunucular üzerindedir. Sunucu dağıtımı ubuntu olurken, istemci tarafından windows kullanacağım.

Test yapılacak tüm makinalarda iperf3 aracı yüklü olmalıdır.

İlk olarak ağ kartı hızlarına bakalım. Yaptığım testlerde arada hiç bir cihaz yok. Yani ağ kartlarının hızları aynı. Amacımda zaten adım adım gidip sorunu bulmak. Sunucuda sorun yok ise, aradaki cihazları (switch, router, nic teaming vs.) kontrol edip en son istemci tarafına bakalım. Artık ağ bant genişliğini kontrol edebiliriz.

Fiziksel cihazların ağ kartları 1G olup, sanallaştırma üzerinde nic teaming vardır.

Şimdi windows istemci makinamın ağ kartı hızına bakıyorum. Aşağıdaki görseldeki gibi 10.0Gbps olduğunu görüyoruz.

Şimdi sunucu tarafında ağ kartı hızına bakalım. İlk olarak ağ kartınızın adını öğrenmeniz gerekmektedir.

ip a 

Aşağıdaki görseldeki gibi 10000 Mbps yani 10.0Gbps olduğunu görüyoruz. Aradaki hızlar 10.0Gbps olduğu için testleri sağlıklı bir şekilde yapabiliriz. Unutmayın, sanal makinalardaki 10.0Gbps sanal bir yazılımdır. Çoğu sunucu çıkışları 1Gbps hızındadır.

Komut satırındaki ağ kartı isminizi sunucunuzdakine göre düzenleyiniz.

dmesg |grep eth0|grep -iw up 

Şimdi ise yazılımı nasıl kullanacağımıza yani syntax özetine bakalım.

Sunucu tarafı -s 
İstemci taraf -c 

iperf3 -s [options]
iperf3 -c server [options] 

TCP Veri Ölçümü

Bu, ikisi arasındaki bant genişliğini, gerçek bir ölçüm elde etmek için yeterince büyük olan 60 saniyelik bir sürede ölçmeniz daha sağlıklı olacaktır.

Belirli koşullar altında, büyük olasılıkla çoklu akışlı TCP davranışını kontrol etmek için TCP verimini test etmemiz gerekebilir. Varsayılan olarak, iPerf3 yalnızca istemciden sunucuya bant genişliğini ölçer, bu nedenle komutları çift yönlü verimi ölçmek için uygun şekilde yapılandırın .Bu gerekliyse aşağıdaki örnekleri referans olarak kullanabilirsiniz.

İlk olarak sunucu tarafında aşağıdaki komut satırını çalıştıralım. Aşağıda görüldüğü gibi server uygulamayı 5201 portu TCP bağlantı noktasında üzerinden dinlemeye başladı.

İstemcinin hedef sunucunun IP adresini bilmesi ve varsayılandan farklı bir bağlantı noktası kullanılıyorsa bağlantı noktası numarasını bilmesi gerekir .

5201’de dinleyen sunucu portu.

iperf3 -s 

Şimdi ise istemci tarafından aşağıdaki komut satırını çalıştıralım. Bu test 1 saniye boyunca 15 tane TCP akışı çalıştıracaktır. 

iperf3 -c your-server-ip -P 1 -t 15 

 Client sonuç çıktıları aşağıdaki gibidir. Resme baktığımız zaman;

  • İnterval: Veri aktarımı için geçen süreyi belirler. Bunu yukarıda zaten 15 olarak belirlemiştik.
  • Transfer: Bu, Iperf testi kullanılarak aktarılan toplam veri boyutunu gösterir. Test tamamlandıktan sonra tüm veriler temizlendi.
  • Bandwith: Verilerin Mbits/sec cinsinden aktarıldığı hız oranı.

Yani, client tarafından server’a yapılan istek sayesinde sender ve receiver tarafta 763 Mbits/sec bir bant genişliğine sahip olduğumuzu görüyoruz. Alınan 763 Mbit/sec hızı 8'e böldüğümüz dosya aktarım hızının'da 95,375 Mbit/sec olduğunu görebiliyoruz.

Araya farklı cihazlar ve fiziksel hatlar girdiğinde bu bant genişliği muhtemelen düşecektir.

Bu kısımda karıştırılan önemli bir konu var şimdi onu inceleyelim. 1 fiziksel sunucu üzerinde 2 ayrı sanal makinada aynı işlem yapıldığı zaman ağ kartları devreden çıkıp dosya gönderme işlemi yapılırken sunucu üzerindeki disk, cpu, ram gibi kaynaklar devreye girecektir. Yani dosya gönderimi yapılırken sunucu üzerindeki kaynakların yoğunluğuna göre transfer hızı kullanabildiği en yüksek hızı kullanacaktır.

Aynı işlemleri tekrar gerçekleştirdiğim zaman, aşağıdaki gibi bir çıktı alıyorum. Bandwidth (Band Genişiği) değerine baktığımız zaman 10G üstünde olduğunu görüyoruz. Sanal makinalar aynı sunucu üzerinde olduğu için artık olay network tarafından çıkıp diğer kaynakları kullanıma geçiyor. Sunucu performansına ve kaynaklarınıza göre bandwidth değeri değişiklik gösterecektir. Bizim aldığımız değerlere bakarak 30.2 Gbits/sec bandwidth hızı üzerinden saniyede 3,775 Mbits dosya transferi gönderimi gerçekleşecektir.

Hem upstream hem de downstream verimini kesinlikle ölçmek isteyeceksiniz . Bunu yapmak için komuta -bidir (yani iki yönlü) seçeneğini ekleyin. Önceki komutumuzu yukarı akış ve aşağı akış verimini aynı anda çalıştıracak şekilde değiştirmek için, istemcinin komut satırı penceresine aşağıdakini yazın:

 iperf3 -c your-server-ip -P 1 -t 15 -bidir

Ayrı ayrı veya aynı anda çalıştırılsın, çift yönlü sonuçlar hemen hemen aynı olmalıdır. Eşzamanlı çalıştırma sonuçları çift yönlü sonuçlardan önemli ölçüde düşükse, daha fazla araştırın ve kablo modeminiz veya yönlendiricinizle ilgili bir performans sorunu olup olmadığını belirleyin .

UDP Veri Ölçümü

Bu, ikisi arasındaki bant genişliğini, gerçek bir ölçüm elde etmek için yeterince büyük olan 60 saniyelik bir sürede ölçmeniz daha sağlıklı olacaktır.

iperf3, UDP veri akışları oluşturabilen ve bunları taşıyan bir ağın verimini ölçebilen, yaygın olarak kullanılan bir ağ test aracıdır.

Aşağıda görüldüğü gibi server uygulamayı 5201 portu UDP bağlantı noktasında üzerinden dinlemeye başladı.

İstemcinin hedef sunucunun IP adresini bilmesi ve varsayılandan farklı bir bağlantı noktası kullanılıyorsa bağlantı noktası numarasını bilmesi gerekir .

5201’de dinleyen sunucu portu.

iperf3 -s 

Client UDP performansını test etmek için, sunucu ip adresini yazarak, aşağıdaki komut satırını çalıştırın.

iperf3 -c your-server-ip -P 2 -t 15 1G -u

Bu sonuçlardan şunları çıkarabiliriz.

  • Paket kaybı
  • UDP trafiğine izin veriliyorsa
  • Jitter, ağ tıkanıklığı, uygun olmayan kuyruğa alma vb. nedenlerle alınan paketlerin gecikmesindeki değişimdir.

Hem upstream hem de downstream verimini kesinlikle ölçmek isteyeceksiniz . Bunu yapmak için komuta -bidir (yani iki yönlü) seçeneğini ekleyin. Önceki komutumuzu yukarı akış ve aşağı akış verimini aynı anda çalıştıracak şekilde değiştirmek için, istemcinin komut satırı penceresine aşağıdakini yazın:

iperf3 -c your-server-ip -P 2 -t 15 1G -u -bidir

Ayrı ayrı veya aynı anda çalıştırılsın, çift yönlü sonuçlar hemen hemen aynı olmalıdır. Eşzamanlı çalıştırma sonuçları çift yönlü sonuçlardan önemli ölçüde düşükse, daha fazla araştırın ve kablo modeminiz veya yönlendiricinizle ilgili bir performans sorunu olup olmadığını belirleyin.

Blog'a Dön