Network performance

From RARForge
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.


Linux

Iperf

Server

<source lang=bash enclose=div>

  1. TCP

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

  1. UDP

]# iperf -s -u </source>

Client

<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

<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)

'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


Same Client IP / Server Port

  • 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

  • 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

  • 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

  • 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


  • 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>