Hem > Guider, Linux, Mac, Teknik > Guide: Testa nätverkshastigheten med Iperf

Guide: Testa nätverkshastigheten med Iperf

IpefPå senare tid har jag haft många frågor kring nätverk. Många av frågorna är relaterad till prestanda och varför man inte får ut den hastighet som man förväntar sig. Speciellt när det kommer till trådlösa nätverk. För mig är det en självklarhet att om man använder trådlöst nätverk och inte sitter med fri sikt till routern eller access-punkten så tappar man prestanda, speciellt om man har tjocka väggar eller liknande hinder i vägen. Men jag har alltid haft svårt att visa det med fakta för en vanlig datoranvändare. Visst finns Bredbandskollen, men den mäter bara hastigheten på till och från Internet men inte inom ett lokalt nätverk. Program som NetSpot som hjälper att skapa riktigt fina kartor över hur bra mottagning och signalstyrka påverkas beroende var man är i bostaden, kontoret eller byggnaden . Men tittar bara på signalstyrka och inte den faktiska nätverkshastigheten i megabit per sekund.  Iperf är ett flexibelt verktyg för att mäta prestanda för ett LAN. Verktyget används genom terminalen och presenteras i textform. Med hjälp av grafiska gränssnitt så som Jperf kan man generera grafer som bättre illustrerar presstandarden.

I denna guide kommer jag gå igenom hur man installerar och använder sig av Iperf för Mac OS X och Linux. Iperf finns även för Windows, men det är inget som jag går igenom denna guide. Dock finns det mycket matnyttig information att sätta in sig i även för Windowsanvändare.

Hur fungerar Iperf ?

Iperf bygger på server och klient konceptet, vilket innebär för att göra en mätning inom ett lokalt nätverk krävs minst två datorer. Den ena datorn agerar som server och lyssnar kommandon som ges av en klient. Klienten skickar paket till servern som tar emot och mäter tiden. När den har hämtat klart filen skicka den tillbaka resultatet till klienten samt gör ett eget test mot klienten. När testet är klart beräknar den hastigheten genom att titta på hur stora paket som skickades samt hur lång tid det tog att skicka dem. Resultatet presenteras på klientdatorn.

Iperf har ett antal testlägen och inställningar som gör att man kan simulera ett nätverk med många användare eller om bittorrent används. Detta görs genom att sätta upp allt från en till tusentals samtidiga anslutningar som antingen sker till eller från servern eller åt båda håll på samma gång. Mätningar kan göras med både TCP och UDP trafik och servern kan även logga testresultaten från klienterna och kan användas av exempelvis en nätverksadministratör för utvärdering.

Bäst av allt, förutom det är öppen källkod och gratis att använda, det inte är någon separat mjukvara för klient och server, båda delarna finns inbyggd från början i samma program. Detta gör att alla datorer med iperf installerat kan agera både som klient och server, växling mellan dessa två roller kan ske på ett ögonblick.

Hur bör tester utföras?

Det beror lite på vad man vill testa, men generellt bör servern vara ansluten med en nätverkskabel för att kunna utesluta de många felkällor och potentiella flaskhalsar som ett trådlöst kan ha. Dock är detta inget krav och görs testet i syfte att se hur prestanda påverkas vid kommunikation mellan två trådlösa datorer kan man skippa nätverkskabeln. Datorn bör även ha hyfsad med prestanda för att kunna utesluta flaskhalsar. Med andra ord så är exempelvis Raspbery PI inte det bästa valet som iperf server om man ska testa ett gigiabit nätverk, eftersom den bara har en nätverkskort som enbart klarar 10/100 mbits. Klientdatorn har inga speciella krav.

En god sed är om det är möjligt ta ut ett referensvärde innan man börjar testa. Mäter man exempelvis ett trådlöst nätverk kan man köra ett test den trådade delen av nätverket för att delvis jämföra om resultatet som man kommer få är rimligt samt för att kolla om inte nätverket i sig utgör en flaskhals för den trådlösa delen. Upprepa varje test ett bestämt antal gånger och räkna ut ett genomsnitt av det resultat man får ut för att få så rättvis bild som möjligt.

Installation

Börja med att installera Iperf på valfri dator. Som jag nämnde ovan så är det server och klient del inbyggt i programmet och alla datorer som har Iperf installerat kan när som helst bli server eller klient.

Linux

För om man använder sig av pakethanterare så är installationen en barnlek. För Ubuntu och andra operativsystem som har APT som pakethanterare kör man följande i en terminal:

sudo apt-get install iperf

Finns inte paketet eller vill istället kompilera koden själv, se instruktioner för Mac.

Mac OS X

Sitter man på Mac öppnar man upp en terminal genom att gå till Program -> Verktygsprogram -> Terminal eller sök efter Terminal i spotlight. Har man Homebrew installerat kan man köra följande:

brew install iperf

Har man inte Homebrew installerat (rekommenderas) eller på annat inte kan installera iperf via en pakethanterare så kan man enkelt kompilera från källkoden själv. Börja med att ladda ned senaste versionen från iperfs webbplats. Kör därefter följande i terminalen (glöm inte trycka enter för sista kommandot).

cd ~/Downlaod
tar xvfz iperf-*.tgz
cd iperf-*
./configure
make
sudo make install

Kommer det en uppmaning om att fylla i ett lösenord, använd samma lösenord som för kontot. Kontot måste ha administratörsrättigheter. Om du inte får någon feedback när du skriver lösenordet genom exempelvis en stjärna dyker upp istället för tecknet så är detta fullt normalt. När du har skrivit klart lösenordet bekräftar du genom att trycka enter.

Testa iperf lokalt på datorn

Innan vi börjar med skarpa tester kollar vi först om iperf fungerar. I detta test behövs bara en dator eftersom vi bara gör ett lokalt test. Börja med att starta servern i ett terminalfönster:
iperf -s

Server öppnar upp som standard port 5001 för att kunna ta emot tester från klienten. När du ser meddelande om ”TCP window size”, prova att köra följande i ett nytt terminalfönster eller tabb.

iperf -c localhost

Resultatet bör se ut något i stil med följande i klientfönstret.

iperf_-c_localhost

Så här ser man också den fortlöpande loggen som servern gör

iperf_-s

Skarpt test

Nu ska vi utföra ett skarpt test och för detta krävs att vi har en annan fysisk dator än klienten som ska agera server. Detta kan vara vilken dator som helst som har iperf installerat. Innan du startar iperf i sitt server-läge, ta reda på den lokala ip-adressen till servern. Du kan använda kommandot ifconfig i terminalen eller gå in i operativsystemets nätverksinställnings för att få fram ip-numret. I mitt fall körs servern på en dator med ip-adressen 192.168.1.10.

Det kommando som jag brukar köra med när jag gör inledande tester är följande:

iperf -c server.ip -i 1 -t 10

Kommandot i beståndsdelar:

  • -c server.ip – Vilken server som testen ska köras mot
  • -i 1 – I vilket intervall i sekunder som delresultat ska visas. 1 betyder varje sekund, 3 är var tredje sekund.
  • -t 10 – Hur lång tid som testet ska köras i sekunder. I detta fall, 10 sekunder

När kommandot körs bör det se ut något i stil med följande (testet utfördes på ett trådat gigabitnätverk):

iperf -c 192.168.1.10 -P 1 -i 1 -t 10

Notera att sista raden summerar testet genom att räkna ut totalt hur mycket data har skickas samt en genomsnittshastighet för testet. Var uppmärksam på att Ipref automatisk väljer passande enhet för resultatet. I förra testet angav den resultatet i gigabit per sekund och nu megabit per sekund. Detta är bekvämt, dock kan det vara lätt hänt att man misstolkar eftersom ett deltest anger 100 kilobit per sekund och ett annat för 54 magabit per sekund. För att vara på den säkra sidan kan man om man vill förutbestämma ett format genom att ange –f i anropet. Se manualen för ipref med hjälp av man för vidare information.

Test med flera uppkopplingar

För att bättre simulera flera datorer använder ett nätverk samtidigt finns det ett antal test att göra detta. Exemplen nedan är resultat från när jag provade mitt trådlösa nätverk. Delvis vill jag få med lite siffror från ett trådlöst nätverk och dels att jag fann resultatet från dessa tester mer intressant.

Dualtest

Vill man ha ett resultat för både ner- och uppladdning sker samtidigt kan ställa köra iperf i dualtest. Allt man behöver göra är att lägga till –d i kommandot:

iperf -c server.ip -P 1 -t 10 -d

Iperf dualtest

I detta exempel är 72.9 Mbits/sec nedladdningshastigheten och 46.9 Mbits/sec uppladdningshastigheten. Det är inte helt enkelt se detta i första anblicken, men knepet är att titta i ID-kolumnen. Varje unikt ID står för en egen uppkoppling, tittar vi exempelvis på ID 5 så är det en uppkoppling från klientdatorn med port 50686 till servern med port 5001. Eftersom vi vet sedan innan att den som har port 5001, om man inte ändrat porten, som är servern. Data laddas alltid hem från servern i dualtest och klienten beräknar hastigheten. Tittar man på ID 6 ser man att nu är det ombytta roller, nu är det servern som laddar hem från klienten. Detta är alltså testet för att mäta uppladdningshastigheten.

Tradeoff

Tradeoff påminner mycket om dualtest. Den stora skillnaden är att istället den gör upp- och nedladdnings testet samtidigt kör den ett test i taget.  När nedladdningstestet är klart stängs uppkopplingen ned och uppladdningstestet påbörjas. För att köra i tradeoff, lägger man till -r till kommandot i stil med följande:

iperf -c server.ip -P 1 -t 10 -r

Flera samtidiga anslutningar

För att bättre kunna simulera trafikerat nätverk eller trorrent nedladdningar kan man använda justera värdet för -P. Siffran anger antalet parallella trådar som öppnas mellan servern och klienten. I alla tester vi har kört hittills har vi bara kört en tråd, men genom att öka siffran från 1 till exempelvis 10, 100 eller 1000 anslutningar kan vi sätta ett högre tryck på nätverket. Ett exempel med 10 anslutningar:

iperf -c 192.168.1.10 -P 10 -t 10

iperf_-c_192.168.1.10_-P_10_-t_10

Det man ska titta på är sista raden med summeringen. 124 mbit per sekund  för ett trådlöst nätverk är ett okej resultat. Vill man få mer verklighetstroget resultat kan man köra i dualtest som vi gick igenom tidigare.

  1. Inga kommentarer än.
  1. Inga trackbacks än.