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/
출처 : [Tip! Tip! Tip!] Iperf를 이용한 네트워크 성능 측정
댓글