Network performance

From RARForge
Revision as of 00:44, 16 March 2013 by Robertr (talk | contribs) (→‎Examples)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search


Linux[edit]

Iperf[edit]

Server[edit]

<source lang=bash enclose=div>

  1. TCP

]# iperf -s </source> <source lang=bash enclose=div>

  1. UDP

]# iperf -s -u </source>

Client[edit]

<source lang=bash enclose=div>

  1. TCP

]# iperf -c [server ip] </source> <source lang=bash enclose=div>

  1. UDP
  2. you must include -b to set the bandwith of the link. Defaul is 1mbps

]# iperf -c [server ip] -b 1000M </source>



Examples[edit]

<source lang=bash enclose=div>

  1. SERVER (10.69.1.254)

]# iperf -s


Server listening on TCP port 5001 TCP window size: 85.3 KByte (default)


</source> <source lang=bash enclose=div>

  1. CLIENT

]# iperf -c 10.69.1.254


Client connecting to 10.69.1.254, TCP port 5001 TCP window size: 23.2 KByte (default)


[ 3] local 10.69.1.250 port 34117 connected with 10.69.1.254 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 1.10 GBytes 941 Mbits/sec </source>


<source lang=bash enclose=div>

  1. SERVER (10.69.1.254)

]# iperf -s -u


Server listening on UDP port 5001 Receiving 1470 byte datagrams UDP buffer size: 224 KByte (default)


</source> <source lang=bash enclose=div>

  1. CLIENT
  2. iperf -u -c 10.69.1.254 -t 10 -b 1000M

Client connecting to 10.69.1.254, UDP port 5001 Sending 1470 byte datagrams UDP buffer size: 224 KByte (default)


[ 3] local 10.69.1.250 port 60912 connected with 10.69.1.254 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 972 MBytes 815 Mbits/sec [ 3] Sent 693385 datagrams </source>




Bonding Example (2 gigabit)[edit]

'LACP 802.1ad' (mode=4)
linux - ifcfg-bond0: BONDING_OPTS="miimon=100 mode=4 lacp_rate=1 xmit_hash_policy=1"
  • Open 4 terminals
    • two connected to server host (hopstore)
    • two connected to client host (blindpig)

Results[edit]


Same Client IP / Server Port[edit]

  • set server to listen on port 5001
  • the other two terminal (on client)
    • connect to port 5001 at the same time

Expected This *should only achieve 1gbps - obviously this will for sure because I only have the client plugged in at gigabit

<source>

  1. CLIENT 1

root@blindpig:~# iperf -c 10.69.1.254 -p 5001


Client connecting to 10.69.1.254, TCP port 5001 TCP window size: 23.2 KByte (default)


[ 3] local 10.69.1.250 port 50731 connected with 10.69.1.254 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 613 MBytes 514 Mbits/sec </source> <source>

  1. CLIENT 2

root@blindpig:~# iperf -c 10.69.1.254 -p 5001


Client connecting to 10.69.1.254, TCP port 5001 TCP window size: 23.2 KByte (default)


[ 3] local 10.69.1.250 port 50732 connected with 10.69.1.254 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 589 MBytes 494 Mbits/sec </source> <source>

  1. SERVER

[root@hopstore foo]# iperf -s -p 5001


Server listening on TCP port 5001 TCP window size: 85.3 KByte (default)


[ 6] local 10.69.1.254 port 5001 connected with 10.69.1.250 port 50731 [ 4] local 10.69.1.254 port 5001 connected with 10.69.1.250 port 50732 [ 6] 0.0-10.1 sec 613 MBytes 511 Mbits/sec [ 4] 0.0-10.7 sec 589 MBytes 460 Mbits/sec [SUM] 0.0-10.7 sec 1.17 GBytes 939 Mbits/sec </source>




Same Client IP / DIFFERENT Server Port[edit]

  • set server to listen on port 5001
  • set server to listen on port 6001
  • the other two terminalS (on client)
    • connect CLIENT 1 to port 5001 (at the same time)
    • connect CLIENT 1 to port 6001 (at the same time)

Expected This *should achieve 2gbps - obviously this will NOT ( I need to plug a client in bonded first)

  • TO Test SOON



Different Client IP / SAME Server Port[edit]

  • set server to listen on port 5001
  • the other two terminal (on client)
    • connect CLIENT 1 to port 5001
    • connect CLIENT 2 to port 5001

Expected 2gbps Total (1gbps per client). It does, both clients could get ~940mbps

<source>

  1. CLIENT 1

root@blindpig:~# iperf -c 10.69.1.254 -p 5001


Client connecting to 10.69.1.254, TCP port 5001 TCP window size: 23.2 KByte (default)


[ 3] local 10.69.1.250 port 50762 connected with 10.69.1.254 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 1.10 GBytes 940 Mbits/sec </source> <source>

  1. CLIENT 2

root@bigeye:~# iperf -c 10.69.1.254 -p 5001


Client connecting to 10.69.1.254, TCP port 5001 TCP window size: 23.2 KByte (default)


[ 3] local 10.69.1.253 port 56929 connected with 10.69.1.254 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 1.10 GBytes 941 Mbits/sec </source> <source>

  1. SERVER1

[root@hopstore foo]# iperf -s -p 5001


Server listening on TCP port 5001 TCP window size: 85.3 KByte (default)


[ 4] local 10.69.1.254 port 5001 connected with 10.69.1.253 port 56929 [ 5] local 10.69.1.254 port 5001 connected with 10.69.1.250 port 50762 [ ID] Interval Transfer Bandwidth [ 4] 0.0-10.0 sec 1.10 GBytes 939 Mbits/sec [ 5] 0.0-10.0 sec 1.10 GBytes 938 Mbits/sec </source>



Different Client IP / DIFFERENT Server Port[edit]

  • set server to listen on port 5001 and 6001
  • the other two terminal (on client)
    • connect CLIENT 1 to port 5001
    • connect CLIENT 2 to port 6001

Expected 2gbps Total (1gbps per client). It does, both clients could get ~940mbps

<source>

  1. CLIENT 1

root@blindpig:~# iperf -c 10.69.1.254 -p 5001


Client connecting to 10.69.1.254, TCP port 5001 TCP window size: 23.2 KByte (default)


[ 3] local 10.69.1.250 port 50748 connected with 10.69.1.254 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 1.10 GBytes 941 Mbits/sec </source> <source>

  1. CLIENT 2

root@bigeye:~# iperf -c 10.69.1.254 -p 6001


Client connecting to 10.69.1.254, TCP port 6001 TCP window size: 23.2 KByte (default)


[ 3] local 10.69.1.253 port 34171 connected with 10.69.1.254 port 6001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 1.10 GBytes 941 Mbits/sec </source> <source>

  1. SERVER1

[root@hopstore foo]# iperf -s -p 5001


Server listening on TCP port 5001 TCP window size: 85.3 KByte (default)


[ 4] local 10.69.1.254 port 5001 connected with 10.69.1.250 port 50748 [ ID] Interval Transfer Bandwidth [ 4] 0.0-10.0 sec 1.10 GBytes 938 Mbits/sec </source> <source>

  1. SERVER2

[root@hopstore ~]# iperf -s -p 6001


Server listening on TCP port 6001 TCP window size: 85.3 KByte (default)


[ 4] local 10.69.1.254 port 6001 connected with 10.69.1.253 port 34171 [ ID] Interval Transfer Bandwidth [ 4] 0.0-10.0 sec 1.10 GBytes 939 Mbits/sec </source>



Addition Info[edit]


  • Iperf client only runs one thread. To get a better real world result, set the client to run with more threads. This can be used in UDP or TCP mode. As you notice above, I was only able to achieve 815mbps with udp testing. Enable 20 threads at 100mbps, I can now achieve 954mpbs.

<source lang=bash enclose=div>

    1. set 10 threads
  1. ] iperf -c 10.69.1.250 -P 10
  2. iperf -u -c 10.69.1.254 -t 10 -b 100M -P 20

Client connecting to 10.69.1.254, UDP port 5001 Sending 1470 byte datagrams UDP buffer size: 224 KByte (default)


[ 22] local 10.69.1.250 port 54270 connected with 10.69.1.254 port 5001 [ 3] local 10.69.1.250 port 43703 connected with 10.69.1.254 port 5001 [ 6] local 10.69.1.250 port 41342 connected with 10.69.1.254 port 5001 [ 5] local 10.69.1.250 port 47863 connected with 10.69.1.254 port 5001 [ 4] local 10.69.1.250 port 45683 connected with 10.69.1.254 port 5001 [ 7] local 10.69.1.250 port 53533 connected with 10.69.1.254 port 5001 [ 10] local 10.69.1.250 port 58435 connected with 10.69.1.254 port 5001 [ 8] local 10.69.1.250 port 34540 connected with 10.69.1.254 port 5001 [ 9] local 10.69.1.250 port 51102 connected with 10.69.1.254 port 5001 [ 11] local 10.69.1.250 port 52498 connected with 10.69.1.254 port 5001 [ 12] local 10.69.1.250 port 42381 connected with 10.69.1.254 port 5001 [ 15] local 10.69.1.250 port 57701 connected with 10.69.1.254 port 5001 [ 13] local 10.69.1.250 port 60505 connected with 10.69.1.254 port 5001 [ 14] local 10.69.1.250 port 33364 connected with 10.69.1.254 port 5001 [ 16] local 10.69.1.250 port 36105 connected with 10.69.1.254 port 5001 [ 17] local 10.69.1.250 port 37829 connected with 10.69.1.254 port 5001 [ 18] local 10.69.1.250 port 43117 connected with 10.69.1.254 port 5001 [ 19] local 10.69.1.250 port 54920 connected with 10.69.1.254 port 5001 [ 20] local 10.69.1.250 port 38253 connected with 10.69.1.254 port 5001 [ 21] local 10.69.1.250 port 48120 connected with 10.69.1.254 port 5001 [ ID] Interval Transfer Bandwidth [ 6] 0.0-10.0 sec 56.9 MBytes 47.7 Mbits/sec [ 6] Sent 40575 datagrams [ 9] 0.0-10.0 sec 57.0 MBytes 47.8 Mbits/sec [ 9] Sent 40672 datagrams [ 15] 0.0-10.0 sec 57.1 MBytes 47.9 Mbits/sec [ 15] Sent 40729 datagrams [ 14] 0.0-10.0 sec 56.8 MBytes 47.7 Mbits/sec [ 14] Sent 40550 datagrams [ 17] 0.0-10.0 sec 57.1 MBytes 47.9 Mbits/sec [ 17] Sent 40730 datagrams [ 19] 0.0-10.0 sec 56.9 MBytes 47.8 Mbits/sec [ 19] Sent 40618 datagrams [ 20] 0.0-10.0 sec 56.7 MBytes 47.6 Mbits/sec [ 20] Sent 40457 datagrams [ 5] 0.0-10.0 sec 57.1 MBytes 47.8 Mbits/sec [ 5] Sent 40695 datagrams [ 4] 0.0-10.0 sec 57.1 MBytes 47.9 Mbits/sec [ 4] Sent 40750 datagrams [ 10] 0.0-10.0 sec 57.1 MBytes 47.8 Mbits/sec [ 10] Sent 40724 datagrams [ 18] 0.0-10.0 sec 56.9 MBytes 47.7 Mbits/sec [ 18] Sent 40570 datagrams [ 21] 0.0-10.0 sec 57.0 MBytes 47.8 Mbits/sec [ 21] Sent 40680 datagrams [ 22] 0.0-10.0 sec 57.0 MBytes 47.7 Mbits/sec [ 22] Sent 40653 datagrams [ 3] 0.0-10.0 sec 57.0 MBytes 47.7 Mbits/sec [ 3] Sent 40638 datagrams [ 7] 0.0-10.0 sec 57.0 MBytes 47.7 Mbits/sec [ 7] Sent 40627 datagrams [ 8] 0.0-10.0 sec 56.9 MBytes 47.7 Mbits/sec [ 8] Sent 40622 datagrams [ 11] 0.0-10.0 sec 57.0 MBytes 47.7 Mbits/sec [ 11] Sent 40651 datagrams [ 12] 0.0-10.0 sec 57.1 MBytes 47.9 Mbits/sec [ 12] Sent 40766 datagrams [ 13] 0.0-10.0 sec 56.9 MBytes 47.6 Mbits/sec [ 13] Sent 40571 datagrams [ 16] 0.0-10.0 sec 56.9 MBytes 47.7 Mbits/sec [ 16] Sent 40595 datagrams [SUM] 0.0-10.0 sec 1.11 GBytes 954 Mbits/sec </source>