본문 바로가기
네트워크 (LAN,WAN)

iperf 이용한 네트워크 성능 측정 (대량 트래픽 발생)

by 날으는물고기 2011. 3. 7.

iperf 이용한 네트워크 성능 측정 (대량 트래픽 발생)

728x90

클라이언트와 서버간의 네트워크 대역폭을 체크하는 프로그램이다.
UDP로 체크하면 패킷 유실사항을 확인할 수 있다.



Iperf는 프리웨어로, 많은 종류의 운영체제(윈도우, 솔라리스, Irix, 리눅스, FreeBSD, MacOS 등)를 지원한다. Iperf는 별도의 설치과정이 필요 없으며 사용방법이 간단하다. 또한 여러 종류의 방법(MTU, 윈도우 사이즈, 프로토콜 변경 등)으로 테스트가 가능하며, IPv6나 멀티캐스트와 같은 신기술을 지원한다. Iperf의 옵션은 다음과 같다.

 

  -v(version) : 버전 확인

  -h(help) : 도움말

  -p(port number) : 포트 번호(디폴트 5001)

  -u(udp) : TCP 대신 UDP 사용(디폴트 TCP)

  -w(window size) : TCP 윈도우 사이즈(디폴트 8Kbyte)

  -M(MTU) : Maximum Transfer Unit

  -V : IPv6

  -c(client) : 클라이언트 모드

  -b(bandwidth) : UDP에서 대역폭 지정(디폴트 1Mbps)

  -t(time) : 측정시간(디폴트 10초)

  -s(server) : 서버 모드

  -D(Daemon) : 윈도우 서비스에 등록(서버만 해당)

  -R(Remove) : 윈도우 서비스에서 제거(서버만 해당)

 

Iperf의 사용 예는 다음과 같다.

 

서버모드

·TCP 성능을 측정하기 위한 서버 실행

C:\> iperf -s

------------------------------------------------------------

Server listening on TCP port 5001

TCP window size: 8.00 KByte (default)

------------------------------------------------------------

 

·윈도우 사이즈를 100Kbyte로 설정

C:\>iperf -s -w 100k

------------------------------------------------------------

Server listening on TCP port 5001

TCP window size:  100 KByte

------------------------------------------------------------

 

·UDP 성능을 측정하기 위한 서버 실행

C:\>iperf -s -u

------------------------------------------------------------

Server listening on UDP port 5001

Receiving 1470 byte datagrams

UDP buffer size: 8.00 KByte (default)

------------------------------------------------------------

 

·윈도우 서비스에 등록 실행

C:\>iperf -s -D

------------------------------------------------------------

Server listening on TCP port 5001

TCP window size: 8.00 KByte (default)

------------------------------------------------------------

IPerf Service started.

 

·윈도우 서비스에서 제거

C:\>iperf -s -R

------------------------------------------------------------

Server listening on TCP port 5001

TCP window size: 8.00 KByte (default)

------------------------------------------------------------

Stopping IPerf Service.

IPerf Service stopped.

IPerf Service removed.

IPerf Service is removed.

 

클라이언트 모드

아무런 조건이 없는 경우(디폴트) 프로토콜은 tcp, 포트번호는 5001, 윈도우 사이즈는 8Kbyte, 시간은 10초이다.

 

·디폴트 값으로 성능 측정

C:\> iperf -c 192.168.10.100

------------------------------------------------------------

Client connecting to 192.168.10.100, TCP port 5001

TCP window size: 8.00 KByte (default)

------------------------------------------------------------

[884] local 192.168.20.100 port 1036 connected with 192.168.10.100 port 5001

[ ID] Interval       Transfer     Bandwidth

[884]  0.0-10.0 sec   113 MBytes  94.5 Mbits/sec

 

·1초 간격으로 결과 측정

C:\>iperf -c 192.168.20.200 -i 1

------------------------------------------------------------

Client connecting to 192.168.20.200, TCP port 5001

TCP window size: 8.00 KByte (default)

------------------------------------------------------------

[884] local 192.168.20.100 port 2515 connected with 192.168.20.200 port 5001

[ ID] Interval       Transfer     Bandwidth

[884]  0.0- 1.0 sec  11.3 MBytes  94.4 Mbits/sec

[884]  1.0- 2.0 sec  11.2 MBytes  94.2 Mbits/sec

[884]  2.0- 3.0 sec  11.3 MBytes  94.4 Mbits/sec

[884]  3.0- 4.0 sec  11.2 MBytes  94.2 Mbits/sec

[884]  4.0- 5.0 sec  11.1 MBytes  93.5 Mbits/sec

[884]  5.0- 6.0 sec  8.23 MBytes  69.0 Mbits/sec

[884]  6.0- 7.0 sec  11.2 MBytes  94.2 Mbits/sec

[884]  7.0- 8.0 sec  11.3 MBytes  94.4 Mbits/sec

[884]  8.0- 9.0 sec  11.3 MBytes  94.4 Mbits/sec

[884]  9.0-10.0 sec  11.2 MBytes  94.2 Mbits/sec

[884]  0.0-10.0 sec   109 MBytes  91.6 Mbits/sec

 

·윈도우 사이즈 변경 후 측정

C:\> iperf -w 100k -c 192.168.10.100

------------------------------------------------------------

Client connecting to 192.168.10.100, TCP port 5001

TCP window size:  100 KByte

------------------------------------------------------------

[884] local 192.168.20.100 port 1048 connected with 192.168.10.100 port 5001

[ ID] Interval       Transfer     Bandwidth

[884]  0.0-10.0 sec   113 MBytes  94.9 Mbits/sec

 

·시간을 100초로 지정 후 측정

C:\> iperf -t 100 -c 192.168.10.100

------------------------------------------------------------

Client connecting to 192.168.10.100, TCP port 5001

TCP window size: 8.00 KByte (default)

------------------------------------------------------------

[884] local 192.168.20.100 port 1051 connected with 192.168.10.100 port 5001

[ ID] Interval       Transfer     Bandwidth

[884]  0.0-100.0 sec  1.10 GBytes  94.6 Mbits/sec

 

·동시에 5개의 세션으로 측정

C:\>iperf -c 192.168.20.200 -P 5

------------------------------------------------------------

Client connecting to 192.168.20.200, TCP port 5001

TCP window size: 8.00 KByte (default)

------------------------------------------------------------

[884] local 192.168.20.100 port 2731 connected with 192.168.20.200 port 5001

[868] local 192.168.20.100 port 2732 connected with 192.168.20.200 port 5001

[852] local 192.168.20.100 port 2733 connected with 192.168.20.200 port 5001

[836] local 192.168.20.100 port 2734 connected with 192.168.20.200 port 5001

[820] local 192.168.20.100 port 2735 connected with 192.168.20.200 port 5001

[ ID] Interval       Transfer     Bandwidth

[884]  0.0-10.0 sec  25.2 MBytes  21.1 Mbits/sec

[820]  0.0-10.0 sec  20.9 MBytes  17.5 Mbits/sec

[868]  0.0-10.0 sec  17.9 MBytes  15.0 Mbits/sec

[836]  0.0-10.0 sec  23.5 MBytes  19.7 Mbits/sec

[852]  0.0-10.0 sec  24.7 MBytes  20.7 Mbits/sec

[SUM]  0.0-10.0 sec   112 MBytes  94.0 Mbits/sec

 

리눅스에서 IPv6이고 포트 번호를 30000으로 변경

[ipv6@localhost Iperf]$ ./iperf -V -p 30000 -c 2001:220:802::5678

------------------------------------------------------------

Client connecting to 2001:220:802::5678, TCP port 30000

TCP window size: 85.3 KByte (default)

------------------------------------------------------------

[  3] local 2001:220:806::1234 port 39491 connected with 2001:220:802::5678 port 30000

[ ID] Interval       Transfer     Bandwidth

[  3]  0.0-10.0 sec  94.1 MBytes  78.9 Mbits/sec

 

Iperf의 사용 시 주의할 점이 있는데, 다음과 같다.

서버/클라이언트의 프로토콜이 틀릴 경우

·서버는 tcp/5001인데 클라이언트에서 udp/5001인 경우

C:\>iperf -c 192.168.20.200 -u

------------------------------------------------------------

Client connecting to 192.168.20.200, UDP port 5001

Sending 1470 byte datagrams

UDP buffer size: 8.00 KByte (default)

------------------------------------------------------------

[884] local 192.168.20.100 port 2487 connected with 192.168.20.200 port 5001

[ ID] Interval       Transfer     Bandwidth

[884]  0.0-10.0 sec  1.25 MBytes  1.05 Mbits/sec

read failed: Connection reset by peer

 

·서버는 udp/5001인데 클라이언트에서 tcp/5001인 경우

C:\>iperf -c 192.168.20.200

connect failed: Connection refused

클라이언트 모드에서 IP 주소의 위치

IP 주소는 반드시 -c 뒤에 나와야 한다.

 

·정상

C:\>iperf -u -c 192.168.20.200

------------------------------------------------------------

Client connecting to 192.168.20.200, UDP port 5001

Sending 1470 byte datagrams

UDP buffer size: 8.00 KByte (default)

------------------------------------------------------------

[884] local 192.168.20.100 port 2494 connected with 192.168.20.200 port 5001

[ ID] Interval       Transfer     Bandwidth

[884]  0.0-10.0 sec  1.25 MBytes  1.05 Mbits/sec

[884] Server Report:

[884]  0.0-10.0 sec  1.25 MBytes  1.05 Mbits/sec  3.363 ms    0/  893 (0%)

[884] Sent 893 datagrams

 

·정상

C:\>iperf -c 192.168.20.200 -u

------------------------------------------------------------

Client connecting to 192.168.20.200, UDP port 5001

Sending 1470 byte datagrams

UDP buffer size: 8.00 KByte (default)

------------------------------------------------------------

[884] local 192.168.20.100 port 2496 connected with 192.168.20.200 port 5001

[ ID] Interval       Transfer     Bandwidth

[884]  0.0-10.0 sec  1.25 MBytes  1.05 Mbits/sec

[884] Server Report:

[884]  0.0-10.0 sec  1.25 MBytes  1.05 Mbits/sec  3.380 ms    0/  893 (0%)

[884] Sent 893 datagrams

 

·비정상

C:\>iperf -c -u 192.168.20.200

iperf: ignoring extra argument -- 192.168.20.200

error: 알려진 호스트가 없습니다.

UDP 성능 측정에서 주의할 점

TCP와 달리 UDP에서는 몇 가지 주의해야 될 사항이 있다.

 

·기본 대역폭이 1Mbps 기준으로 동작할 때

C:\> iperf -u -c 192.168.20.200

------------------------------------------------------------

Client connecting to 192.168.20.200, UDP port 5001

Sending 1470 byte datagrams

UDP buffer size: 8.00 KByte (default)

------------------------------------------------------------

[884] local 192.168.10.100 port 2498 connected with 192.168.20.200 port 5001

[ ID] Interval       Transfer     Bandwidth

[884]  0.0-10.0 sec  1.25 MBytes  1.05 Mbits/sec

[884] Server Report:

[884]  0.0-10.0 sec  1.20 MBytes  1.01 Mbits/sec  3.685 ms   34/  893 (3.8%)

[884] Sent 893 datagrams

따라서 -b 옵션을 이용해 적절한 대역폭을 지정한 후 측정하는 것이 바람직하다.

 

C:\>iperf -c 192.168.20.200 -u -b 10M

------------------------------------------------------------

Client connecting to 192.168.20.200, UDP port 5001

Sending 1470 byte datagrams

UDP buffer size: 8.00 KByte (default)

------------------------------------------------------------

[884] local 192.168.20.100 port 1855 connected with 192.168.20.200 port 5001

[ ID] Interval       Transfer     Bandwidth

[884]  0.0-10.0 sec  11.9 MBytes  9.97 Mbits/sec

[884] Server Report:

[884]  0.0-10.0 sec  11.9 MBytes  9.98 Mbits/sec  1.377 ms    1/ 8493 (0.012%)

[884] Sent 8493 datagrams

 

·지터와 패킷 손실율 등을 알 수 있다.

클라이언트가 UDP를 이용하면, 서버에서 지터, 손실율 등이 나타나게 된다.

 C:\>iperf -s -u

------------------------------------------------------------

 Server listening on UDP port 5001

 Receiving 1470 byte datagrams

 UDP buffer size: 8.00 KByte (default)

 ------------------------------------------------------------

 [900] local 192.168.10.100 port 5001 connected with 192.168.10.200 port 1058

 [ ID] Interval       Transfer     Bandwidth       Jitter   Lost/Total Datagrams

 [900]  0.0- 5.4 sec   686 KBytes  1.05 Mbits/sec  6.996 ms    0/  478 (0%)

 [900] local 192.168.10.100 port 5001 connected with 192.168.10.200 port 1059

 [ ID] Interval       Transfer     Bandwidth       Jitter   Lost/Total Datagrams

 [900]  0.0- 5.0 sec   632 KBytes  1.04 Mbits/sec  8.044 ms    0/  440 (0%)

 [900] local 192.168.10.100 port 5001 connected with 192.168.10.200 port 1060

 [ ID] Interval       Transfer     Bandwidth       Jitter   Lost/Total Datagrams

 [900]  0.0- 1.0 sec   129 KBytes  1.04 Mbits/sec  7.028 ms    0/   90 (0%)



다운로드 : http://sourceforge.net/projects/iperf/


출처 : [TipTipTip!] Iperf를 이용한 네트워크 성능 측정

728x90

댓글3