메뉴 닫기

iperf 를 이용한 네트워크 성능 측정

iperf-client-server

* 이미지 출처 : http://6.ggpht.com/

 

1. iperf 개요

iperf 는 클라이언트와 서버간의 네트워크 대역폭을 체크하는 프로그램이다.

iperf 는 프리웨어로, 윈도우, 리눅스, FreeBSD, 솔라리스, Irix, MacOS 등 다양한 운영체제를 지원한다.

iperf 는 간편한 설치로 사용방법이 간단하다.  

2. iperf 주요 특징

– 여러 종류의 방법 (MTU, 윈도우 사이즈, 프로토콜 변경 등) 테스트가 가능하다.
– IPv6 멀티캐스트와 같은 신기술을 지원한다.
– UDP 로 체크하면 패킷 유실사항을 확인할 수 있다.

3. iperf 설치 (리눅스)

– 프로그램 소스 다운로드
$ wget http://sourceforge.net/projects/iperf/files/iperf-2.0.5.tar.gz/download
명령으로 다운로드 받는다.

– 압축 풀기 & 디렉토리 들어가기
$ tar xvzf iperf-2.0.5.tar.gz 
$ cd iperf-2.0.5

– iperf 소스 설치
$ ./configure
$ make && make install

– CentOS 의 경우 yum 패키지 명령으로 설치할 수도 있다.  (yum 을 이용한 다운로드나 설치가 안되는 경우 소스를 받아 설치한다.)
$ yum -y install iperf

– 서버 설정
서버 측에서는 5001번 TCP 포트를 열어두고 iperf -s 를 실행해서 클라이언트의 요청을 기다린다.

– 클라이언트 설정
iperf -c server_ip 를 실행해서 두 개의 iperf 가 통신하면서 네트워크 대역폭 (bandwidth) 를 측정하게 된다.

4. 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)
-f (format) : 리포트에 출력할 포멧값 (k : Kbits, m : Mbits, K : KBytes, M : Mbytes)
-c (client) : 클라이언트 모드
-b (bandwidth) : UDP 에서 대역폭 지정 (기본값 : 1Mbps)
-t (time) : 측정시간 (기본값 : 10초)
-d (dualtest) : 동시에 양방향 테스트
-r (tradeoff) : 개별적 양방향 테스트 
-s (server) : 서버 모드 
-D (Daemon) : 윈도우/리눅스 서비스에 등록 (서버만 해당)
-R (Remove) : 윈도우/리눅스 서비스에서 제거 (서버만 해당)

5. 서버 모드 

– TCP 성능을 측정하기 위한 서버 모드 실행
$ iperf -s
————————————————————
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
————————————————————

– 윈도우 사이즈를 100Kbyte 로 설정
$ iperf -s -w 100k
————————————————————
Server listening on TCP port 5001
TCP window size: 200 KByte (WARNING: requested 100 KByte)
————————————————————

– UDP 성능을 측정하기 위한 서버 모드 실행 
$ iperf -s -u
————————————————————
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size: 126 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.

6. 클라이언트 모드

아무 조건이 없는 경우 각 기본값은 프로토콜 : TCP, 포트번호 : 5001, 윈도우 사이즈 : 16Kbyte, 시간 : 10초 이다.

– 기본값으로 성능 측정
$ iperf -c 192.168.0.20

————————————————————
Client connecting to 192.168.0.20, TCP port 5001
TCP window size: 16.0 KByte (default)
————————————————————
[ 3] local 192.168.0.10 port 40424 connected with 192.168.0.20 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 445 MBytes 372 Mbits/sec

– 1초 간격으로 측정 결과값 출력
$ iperf -c 192.168.0.20 -i 1

————————————————————
Client connecting to 192.168.0.20, TCP port 5001
TCP window size: 16.0 KByte (default)
————————————————————
[ 3] local 192.168.0.10 port 40427 connected with 192.168.0.20 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 1.0 sec 45.2 MBytes 380 Mbits/sec
[ 3] 1.0- 2.0 sec 40.8 MBytes 342 Mbits/sec
[ 3] 2.0- 3.0 sec 41.6 MBytes 349 Mbits/sec
[ 3] 3.0- 4.0 sec 30.8 MBytes 258 Mbits/sec
[ 3] 4.0- 5.0 sec 25.2 MBytes 212 Mbits/sec
[ 3] 5.0- 6.0 sec 26.1 MBytes 219 Mbits/sec
[ 3] 6.0- 7.0 sec 28.5 MBytes 239 Mbits/sec
[ 3] 7.0- 8.0 sec 25.8 MBytes 216 Mbits/sec
[ 3] 8.0- 9.0 sec 25.6 MBytes 215 Mbits/sec
[ 3] 9.0-10.0 sec 26.4 MBytes 221 Mbits/sec
[ 3] 0.0-10.0 sec 316 MBytes 265 Mbits/sec

– 윈도우 사이즈 변경 후 측정
$ iperf -w 100k -c 192.168.0.20

————————————————————
Client connecting to 192.168.0.20, TCP port 5001
TCP window size: 200 KByte (WARNING: requested 100 KByte)
————————————————————
[ 3] local 192.168.0.10 port 40440 connected with 192.168.0.20 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 410 MBytes 344 Mbits/sec

– 시간을 100초로 지정 후 측정
$ iperf -t 100 -c 192.168.0.20

————————————————————
Client connecting to 192.168.0.20, TCP port 5001
TCP window size: 16.0 KByte (default)
————————————————————
[ 3] local 192.168.0.10 port 40441 connected with 192.168.0.20 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-100.0 sec 3.78 GBytes 325 Mbits/sec

– 동시에 5개의 세션으로 측정
$ iperf -c 192.168.0.20 -P 5

————————————————————
Client connecting to 192.168.0.20, TCP port 5001
TCP window size: 16.0 KByte (default)
————————————————————
[ 7] local 192.168.0.10 port 40448 connected with 192.168.0.20 port 5001
[ 3] local 192.168.0.10 port 40444 connected with 192.168.0.20 port 5001
[ 5] local 192.168.0.10 port 40446 connected with 192.168.0.20 port 5001
[ 4] local 192.168.0.10 port 40445 connected with 192.168.0.20 port 5001
[ 6] local 192.168.0.10 port 40447 connected with 192.168.0.20 port 5001
[ ID] Interval Transfer Bandwidth
[ 5] 0.0-10.0 sec 330 MBytes 276 Mbits/sec
[ 6] 0.0-10.0 sec 142 MBytes 119 Mbits/sec
[ 7] 0.0-10.0 sec 55.1 MBytes 46.1 Mbits/sec
[ 3] 0.0-10.0 sec 308 MBytes 258 Mbits/sec
[ 4] 0.0-10.0 sec 182 MBytes 152 Mbits/sec
[SUM] 0.0-10.0 sec 1016 MBytes 850 Mbits/sec

* ID 5번값 : 클라이언트 > 서버 세션 1 측정값 (업로드)
* ID 6번값 : 클라이언트 > 서버 세션 2 측정값 (업로드)
* ID 7번값 : 클라이언트 > 서버 세션 3 측정값 (업로드)
* ID 3번값 : 클라이언트 > 서버 세션 4 측정값 (업로드)
* ID 4번값 : 클라이언트 > 서버 세션 5 측정값 (업로드)
* ID SUM 값 : 클라이언트 > 서버 전체 측정값 (업로드) 

iperf-mode-d
* 이미지 출처 : http://www.yangchenyun.com/

– 동시에 양방향 측정 
$ iperf -c 192.168.0.20 -d

————————————————————
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
————————————————————
————————————————————
Client connecting to 192.168.0.20, TCP port 5001
TCP window size: 373 KByte (default)
————————————————————
[ 5] local 192.168.0.10 port 40449 connected with 192.168.0.20 port 5001
[ 4] local 192.168.0.10 port 5001 connected with 192.168.0.20 port 37474
[ ID] Interval Transfer Bandwidth
[ 5] 0.0-10.0 sec 314 MBytes 263 Mbits/sec
[ 4] 0.0-10.0 sec 373 MBytes 311 Mbits/sec

** ID 5번 값 : 클라이언트 > 서버 측정값  (업로드)
** ID 4번 값 : 클라이언트 < 서버 측정값  (다운로드)

iperf-mode-r
* 이미지 출처 : http://www.yangchenyun.com/

– 개별적으로 양방향 측정 
$ iperf -c 192.168.0.20 -r

————————————————————
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
————————————————————
————————————————————
Client connecting to 192.168.0.20, TCP port 5001
TCP window size: 369 KByte (default)
————————————————————
[ 5] local 192.168.0.10 port 40455 connected with 192.168.0.20 port 5001
Waiting for server threads to complete. Interrupt again to force quit.
[ ID] Interval Transfer Bandwidth
[ 5] 0.0-10.0 sec 441 MBytes 369 Mbits/sec

*** ID 5번 값 : 클라이언트 > 서버 측정값  (업로드)

– 네트워크 환경이 IPv6 이고, 포트번호를 30000 으로 변경하고자 할 때
$ iperf -V -p 30000 -c 2001:220:567:1234

– 클라이언트 모드 옵션 사용 예 1

$ iperf -c 192.168.0.20 -w 300k -f m -t 30 -i 1

-c 아이피 : 192.168.0.20 서버측 대상으로
-w 300k : 윈도우 사이즈는 300Kbyte 로 한다.
-f m : 출력할 리포트 포멧은 Mbits 단위로 한다.
-t 30 : 데이터를 보내는 시간 30초
-i 1 : 데이터를 보내는 시간동안 1초 간격으로 전송 

————————————————————
Client connecting to 192.168.0.20, TCP port 5001
TCP window size: 0.25 MByte (WARNING: requested 0.29 MByte)
————————————————————
[ 3] local 192.168.0.10 port 40438 connected with 192.168.0.20 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 1.0 sec 33.0 MBytes 277 Mbits/sec
[ 3] 1.0- 2.0 sec 33.9 MBytes 284 Mbits/sec
[ 3] 2.0- 3.0 sec 30.2 MBytes 254 Mbits/sec
[ 3] 3.0- 4.0 sec 37.1 MBytes 311 Mbits/sec
[ 3] 4.0- 5.0 sec 25.8 MBytes 216 Mbits/sec
[ 3] 5.0- 6.0 sec 30.5 MBytes 256 Mbits/sec
[ 3] 6.0- 7.0 sec 25.6 MBytes 215 Mbits/sec
[ 3] 7.0- 8.0 sec 26.6 MBytes 223 Mbits/sec
[ 3] 8.0- 9.0 sec 26.2 MBytes 220 Mbits/sec
[ 3] 9.0-10.0 sec 33.0 MBytes 277 Mbits/sec
[ 3] 10.0-11.0 sec 32.2 MBytes 271 Mbits/sec
[ 3] 11.0-12.0 sec 31.2 MBytes 262 Mbits/sec
[ 3] 12.0-13.0 sec 38.0 MBytes 319 Mbits/sec
[ 3] 13.0-14.0 sec 32.6 MBytes 274 Mbits/sec
[ 3] 14.0-15.0 sec 27.9 MBytes 234 Mbits/sec
[ 3] 15.0-16.0 sec 23.2 MBytes 195 Mbits/sec
[ 3] 16.0-17.0 sec 19.1 MBytes 160 Mbits/sec
[ 3] 17.0-18.0 sec 24.6 MBytes 207 Mbits/sec
[ 3] 18.0-19.0 sec 20.0 MBytes 168 Mbits/sec
[ 3] 19.0-20.0 sec 18.6 MBytes 156 Mbits/sec
[ 3] 20.0-21.0 sec 22.2 MBytes 187 Mbits/sec
[ 3] 21.0-22.0 sec 22.2 MBytes 187 Mbits/sec
[ 3] 22.0-23.0 sec 25.8 MBytes 216 Mbits/sec
[ 3] 23.0-24.0 sec 25.5 MBytes 214 Mbits/sec
[ 3] 24.0-25.0 sec 27.2 MBytes 229 Mbits/sec
[ 3] 25.0-26.0 sec 26.2 MBytes 220 Mbits/sec
[ 3] 26.0-27.0 sec 24.5 MBytes 206 Mbits/sec
[ 3] 27.0-28.0 sec 26.1 MBytes 219 Mbits/sec
[ 3] 28.0-29.0 sec 20.9 MBytes 175 Mbits/sec
[ 3] 29.0-30.0 sec 23.8 MBytes 199 Mbits/sec
[ 3] 0.0-30.0 sec 814 MBytes 228 Mbits/sec

*** ID 3번 값 : 클라이언트 > 서버 측정값  (업로드) 0 ~ 30초간 1초 간격 리포트 
*** 마지막 라인은 전체 송신 데이터 양 / 평균값

– 클라이언트 모드 옵션 사용 예 2

$ iperf -c 192.168.0.20 -t 50 -i 5 -P 5 -r

-c 아이피 : 192.168.0.20 서버측 대상으로
-t 50 : 데이터를 보내는 시간 50초
-i 5 : 데이터를 보내는 시간동안 5초 간격으로 전송 
-P 5 : 동시 5개 세션 값을 보냄 
-r : 양방향 테스트 

————————————————————
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
————————————————————
————————————————————
Client connecting to 192.168.0.20, TCP port 5001
TCP window size: 16.0 KByte (default)
————————————————————
[ 3] local 192.168.0.10 port 40429 connected with 192.168.0.20 port 5001
[ 5] local 192.168.0.10 port 40431 connected with 192.168.0.20 port 5001
[ 8] local 192.168.0.10 port 40432 connected with 192.168.0.20 port 5001
[ 9] local 192.168.0.10 port 40433 connected with 192.168.0.20 port 5001
[ 4] local 192.168.0.10 port 40430 connected with 192.168.0.20 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 5.0 sec 86.6 MBytes 145 Mbits/sec
[ 9] 0.0- 5.0 sec 140 MBytes 236 Mbits/sec
[ 4] 0.0- 5.0 sec 115 MBytes 193 Mbits/sec
[ 8] 0.0- 5.0 sec 95.8 MBytes 161 Mbits/sec
[ 5] 0.0- 5.0 sec 57.6 MBytes 96.7 Mbits/sec
[SUM] 0.0- 5.0 sec 496 MBytes 831 Mbits/sec
[ 9] 5.0-10.0 sec 145 MBytes 243 Mbits/sec
[ 8] 5.0-10.0 sec 79.5 MBytes 133 Mbits/sec
[ 4] 5.0-10.0 sec 135 MBytes 226 Mbits/sec
[ 5] 5.0-10.0 sec 74.4 MBytes 125 Mbits/sec
[ 3] 5.0-10.0 sec 85.2 MBytes 143 Mbits/sec
[SUM] 5.0-10.0 sec 519 MBytes 870 Mbits/sec
[ 8] 10.0-15.0 sec 71.1 MBytes 119 Mbits/sec
[ 4] 10.0-15.0 sec 132 MBytes 221 Mbits/sec
[ 9] 10.0-15.0 sec 130 MBytes 218 Mbits/sec
[ 5] 10.0-15.0 sec 60.8 MBytes 102 Mbits/sec
[ 3] 10.0-15.0 sec 57.9 MBytes 97.1 Mbits/sec
[SUM] 10.0-15.0 sec 451 MBytes 757 Mbits/sec
[ 4] 15.0-20.0 sec 119 MBytes 199 Mbits/sec
[ 3] 15.0-20.0 sec 70.5 MBytes 118 Mbits/sec
[ 9] 15.0-20.0 sec 130 MBytes 218 Mbits/sec
[ 5] 15.0-20.0 sec 63.2 MBytes 106 Mbits/sec
[ 8] 15.0-20.0 sec 124 MBytes 207 Mbits/sec
[SUM] 15.0-20.0 sec 506 MBytes 849 Mbits/sec
[ 3] 20.0-25.0 sec 96.0 MBytes 161 Mbits/sec
[ 5] 20.0-25.0 sec 62.5 MBytes 105 Mbits/sec
[ 4] 20.0-25.0 sec 126 MBytes 212 Mbits/sec
[ 8] 20.0-25.0 sec 41.0 MBytes 68.8 Mbits/sec
[ 9] 20.0-25.0 sec 50.6 MBytes 84.9 Mbits/sec
[SUM] 20.0-25.0 sec 376 MBytes 631 Mbits/sec
[ 8] 25.0-30.0 sec 56.2 MBytes 94.4 Mbits/sec
[ 3] 25.0-30.0 sec 97.0 MBytes 163 Mbits/sec
[ 5] 25.0-30.0 sec 116 MBytes 194 Mbits/sec
[ 4] 25.0-30.0 sec 148 MBytes 249 Mbits/sec
[ 9] 25.0-30.0 sec 52.6 MBytes 88.3 Mbits/sec
[SUM] 25.0-30.0 sec 470 MBytes 789 Mbits/sec
[ 5] 30.0-35.0 sec 140 MBytes 234 Mbits/sec
[ 8] 30.0-35.0 sec 162 MBytes 271 Mbits/sec
[ 3] 30.0-35.0 sec 89.6 MBytes 150 Mbits/sec
[ 9] 30.0-35.0 sec 69.8 MBytes 117 Mbits/sec
[ 4] 30.0-35.0 sec 86.5 MBytes 145 Mbits/sec
[SUM] 30.0-35.0 sec 547 MBytes 918 Mbits/sec
[ 8] 35.0-40.0 sec 143 MBytes 240 Mbits/sec
[ 5] 35.0-40.0 sec 130 MBytes 217 Mbits/sec
[ 4] 35.0-40.0 sec 62.0 MBytes 104 Mbits/sec
[ 3] 35.0-40.0 sec 88.6 MBytes 149 Mbits/sec
[ 9] 35.0-40.0 sec 89.2 MBytes 150 Mbits/sec
[SUM] 35.0-40.0 sec 513 MBytes 860 Mbits/sec
[ 3] 40.0-45.0 sec 71.8 MBytes 120 Mbits/sec
[ 8] 40.0-45.0 sec 167 MBytes 280 Mbits/sec
[ 4] 40.0-45.0 sec 71.4 MBytes 120 Mbits/sec
[ 9] 40.0-45.0 sec 61.5 MBytes 103 Mbits/sec
[ 5] 40.0-45.0 sec 94.1 MBytes 158 Mbits/sec
[SUM] 40.0-45.0 sec 465 MBytes 781 Mbits/sec
Waiting for server threads to complete. Interrupt again to force quit.
[ 4] 45.0-50.0 sec 106 MBytes 177 Mbits/sec
[ 4] 0.0-50.0 sec 1.07 GBytes 185 Mbits/sec
[ 8] 45.0-50.0 sec 174 MBytes 292 Mbits/sec
[ 8] 0.0-50.0 sec 1.09 GBytes 187 Mbits/sec
[ 3] 45.0-50.0 sec 116 MBytes 195 Mbits/sec
[ 3] 0.0-50.1 sec 860 MBytes 144 Mbits/sec
[ 5] 45.0-50.0 sec 77.5 MBytes 130 Mbits/sec
[ 5] 0.0-50.1 sec 875 MBytes 147 Mbits/sec
[ 9] 45.0-50.0 sec 68.4 MBytes 115 Mbits/sec
[SUM] 45.0-50.0 sec 542 MBytes 909 Mbits/sec
[ 9] 0.0-50.1 sec 937 MBytes 157 Mbits/sec
[SUM] 0.0-50.1 sec 4.77 GBytes 818 Mbits/sec

*** ID x번 값 : 클라이언트 > 서버 측정값  (업로드) — 5초 간격, 세션 1~5번에 대한 
*** SUM 값 : 클라이언트 > 서버 측정값  (업로드) — 5초 간격에 대한 전체 송신 데이터 양 / 평균값
*** 마지막 라인은 전체 송신 데이터 양 / 평균값

 

 

 [polldaddy rating=”7739789″]

 

Subscribe
Notify of
guest
1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
1
0
Would love your thoughts, please comment.x
()
x