Archiv der Kategorie: linux

Netzwerk-Durchsatz messen mit iperf (OpenWrt router <-> Linux / Windows wlan)

Auf OpenWrt haben makefu und ich schon USB-over-wlanInstacam und one button realisiert und erst kürzlich einen workshop zum hardware hacking unseres Lieblings-OpenWrt Geräts wr703 (auch bekannt als minikrebs) gegeben. Ich habe OpenWrt auf einem TP-Link WDR4300 sowohl zu Hause – als auch neuestens in der Arbeit am Laufen und kann das Gerät nur wärmstens empfehlen.

Weil ich öfter zu faul bin ein Kabel zum Backup des Laptops auf ein NAS anzuschließen und es über wlan noch nicht so schnell geht wie ich das gerne hätte habe ich gerade eine Intel 633anhmw  N6300 wireless karte (half-size mini pci-express) mit angeblich 450 MBit besorgt und muss jetzt natürlich kurz den Durchsatzgewinn (hoffentlich!) gegenüber der aktuell eingesetzten Atheros AR928X messen.

Dazu verwende ich iperf wie folgt:

Installation von iperf auf der OpenWrt box:

# opkg install iperf

Starten des iperf Servers:

# iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------

Installation von iperf auf der Ubuntu Mühle:

$ sudo apt-get install iperf

Benchmark starten:

$ iperf -c

In diesem Falle die OpenWrt box

$ iperf -P5 -f M -c 192.168.1.1

^^ die Parameter findet man mit „iperf -h“ oder siehe weiter unten. Ergebnis von Qualcomm Atheros AR928X [168c:002a]:

[ 3] 0.0-10.1 sec 36.1 MBytes 3.59 MBytes/sec

Intel Corporation Centrino Ultimate-N 6300 [8086:422b] sucks ass

[ 5] 0.0-10.5 sec 4.50 MBytes 0.43 MBytes/sec

^^ na da habe ich mir ja was großartiges gegönnt …

Und der Gewinner ist: Centrino(R) Ultimate-N 6300 AGN – die alte Karte aus meinem Notebook, die ich in Nadia’s Windows Laptop gesteckt habe, damit Sie auch 5GHz hat 😉
Da fällt mir auch ein, warum ich die Atheros Karte gekauft habe … weil die Intel Karten nach meiner Erfahrung (2200gb 2915abg, 6300n, jetzt: 633anhmw) in Linux einfach immer nur Ärger machen. So auch in diesem Fall wieder.

[  3]  0.0-10.0 sec  88.4 MBytes  8.82 MBytes/sec

LAN ist besser … und wohl begrenzt durch IO auf dem OpenWrt Router … ich teste das gleich noch zum NAS

[ 3] 0.0-10.0 sec 316 MBytes 31.6 MBytes/sec

… und siehe da … zum NAS über den wdr4300

[ 3] 0.0-10.0 sec 1084 MBytes 108 MBytes/sec

Nachtrag: Mit Kernel 3.13. bin ich jetzt immerhin bei

[  3]  0.0-10.0 sec  74.2 MBytes  7.40 MBytes/sec

Nachtrag: Intel 7260 HMWB (702.11ac) (wartet noch auf den passenden AC wlan Router)

[  3]  0.0-10.0 sec  91.0 MBytes  9.06 MBytes/sec

Iperf Parameter:

$ iperf -h
Usage: iperf [-s|-c host] [options]
       iperf [-h|--help] [-v|--version]

Client/Server:
  -f, --format    [kmKM]   format to report: Kbits, Mbits, KBytes, MBytes
  -i, --interval  #        seconds between periodic bandwidth reports
  -l, --len       #[KM]    length of buffer to read or write (default 8 KB)
  -m, --print_mss          print TCP maximum segment size (MTU - TCP/IP header)
  -o, --output    <filename> output the report or error message to this specified file
  -p, --port      #        server port to listen on/connect to
  -u, --udp                use UDP rather than TCP
  -w, --window    #[KM]    TCP window size (socket buffer size)
  -B, --bind      <host>   bind to <host>, an interface or multicast address
  -C, --compatibility      for use with older versions does not sent extra msgs
  -M, --mss       #        set TCP maximum segment size (MTU - 40 bytes)
  -N, --nodelay            set TCP no delay, disabling Nagle's Algorithm
  -V, --IPv6Version        Set the domain to IPv6

Server specific:
  -s, --server             run in server mode
  -U, --single_udp         run in single threaded UDP mode
  -D, --daemon             run the server as a daemon

Client specific:
  -b, --bandwidth #[KM]    for UDP, bandwidth to send at in bits/sec
                           (default 1 Mbit/sec, implies -u)
  -c, --client    <host>   run in client mode, connecting to <host>
  -d, --dualtest           Do a bidirectional test simultaneously
  -n, --num       #[KM]    number of bytes to transmit (instead of -t)
  -r, --tradeoff           Do a bidirectional test individually
  -t, --time      #        time in seconds to transmit for (default 10 secs)
  -F, --fileinput <name>   input the data to be transmitted from a file
  -I, --stdin              input the data to be transmitted from stdin
  -L, --listenport #       port to receive bidirectional tests back on
  -P, --parallel  #        number of parallel client threads to run
  -T, --ttl       #        time-to-live, for multicast (default 1)
  -Z, --linux-congestion <algo>  set TCP congestion control algorithm (Linux only)

Miscellaneous:
  -x, --reportexclude [CDMSV]   exclude C(connection) D(data) M(multicast) S(settings) V(server) reports
  -y, --reportstyle C      report as a Comma-Separated Values
  -h, --help               print this message and quit
  -v, --version            print version information and quit

[KM] Indicates options that support a K or M suffix for kilo- or mega-

The TCP window size option can be set by the environment variable
TCP_WINDOW_SIZE. Most other options can be set by an environment variable
IPERF_<long option name>, such as IPERF_BANDWIDTH.

Report bugs to <iperf-users@lists.sourceforge.net>