iperf3 설치 및 네트워크 성능 테스트
1. iperf3 개요
iperf3는 네트워크 성능을 측정하기 위한 오픈소스 도구입니다.
TCP, UDP 프로토콜을 통해 네트워크 대역폭(throughput), 지연(latency), 패킷 손실률 등을 테스트할 수 있습니다.
-
공식 프로젝트 사이트: https://iperf.fr/
-
개발 및 유지: ESnet (Energy Sciences Network), 미국 에너지부 산하 연구기관이 개발 및 관리
2. 주요 기능
기능 | 설명 |
---|---|
TCP 대역폭 측정 | TCP 프로토콜 기반 네트워크 전송 속도 측정 |
UDP 테스트 | UDP를 이용한 패킷 손실률, 지터(jitter) 측정 |
멀티스레드 지원 | 여러 스트림을 동시에 실행해 성능 테스트 가능 |
IPv4 / IPv6 지원 | 최신 인터넷 프로토콜 버전 모두 지원 |
JSON 출력 지원 | 테스트 결과를 JSON 형식으로 출력하여 자동화 및 분석에 용이 |
클라이언트/서버 모드 | 네트워크 연결 테스트를 위한 서버/클라이언트 역할 수행 |
3. iperf3 사용 목적
-
네트워크 대역폭 용량 파악
-
네트워크 장애 및 성능 저하 원인 진단
-
네트워크 장비(스위치, 라우터) 성능 테스트
-
서비스 환경의 네트워크 품질 검증
-
다양한 네트워크 환경에서 TCP, UDP 성능 비교
4. 작동 원리
iperf3는 두 대 이상의 컴퓨터 간에 TCP 또는 UDP 연결을 설정합니다.
한쪽은 서버 모드로 대기하며, 다른 쪽은 클라이언트로 연결해 데이터를 송수신하며 성능을 측정합니다.
-
서버 모드:
iperf3 -s
명령어로 실행, 포트 5201 기본 대기 -
클라이언트 모드:
iperf3 -c <서버_IP>
명령어로 접속 및 테스트 수행
데이터 전송 동안 초당 전송 속도, 전송된 바이트 수, 재전송 횟수 등 다양한 정보를 출력합니다.
5. 대표 명령어 및 옵션
명령어 | 설명 |
---|---|
iperf3 -s |
서버 모드 시작 (포트 5201 대기) |
iperf3 -c <서버_IP> |
클라이언트 모드로 서버에 접속 후 테스트 수행 |
iperf3 -t <초> |
테스트 시간 지정 (기본 10초) |
iperf3 -p <포트번호> |
포트 번호 지정 |
iperf3 -u |
UDP 테스트 모드 활성화 |
iperf3 -b <속도> |
UDP 전송 시 목표 대역폭 지정 (예: 100M, 1G) |
iperf3 --json |
결과를 JSON 형식으로 출력 |
6. 테스트 결과 주요 항목
-
Transfer: 테스트 동안 전송된 데이터 총량
-
Bitrate: 초당 데이터 전송 속도 (bps 단위)
-
Retr: TCP 재전송 횟수 (0에 가까울수록 네트워크 상태 양호)
-
Jitter: UDP 테스트에서 패킷 지연 변화량 (작을수록 안정적)
-
Lost/Total Datagrams: UDP 테스트 시 손실된 패킷 수와 총 전송 패킷 수
7. 공신력 출처
-
ESnet 공식 iperf3 프로젝트:
https://software.es.net/iperf/ -
RFC 및 네트워크 관련 학술자료 내 iperf3 활용 사례 다수 존재
1. iperf3 설치
★ 테스트 환경(Ubuntu 24.04 1대)
-
설명: 네트워크 대역폭 및 성능 측정을 위한 iperf3 도구 설치
-
권한: root 또는 sudo 권한 필요
-> 설치 후 자동 실행 설정 유무 확인 = yes 선택
2. 서버 IP 주소 확인
-
서버에서 사용할 네트워크 인터페이스 IP를 확인합니다.
-
테스트 시 클라이언트 접속 주소로 사용됩니다.
3. iperf3 서버 모드 실행
-
기본 포트(5201)로 서버 실행, 클라이언트 연결 대기
-
포그라운드에서 실행되며, 종료하려면 Ctrl+C 입력
4. 클라이언트 모드에서 서버로 테스트 실행
-
<서버_IP>
: 2번에서 확인한 IP 주소 사용 -
-t 10
: 10초간 테스트 수행
> 주요 항목 설명
항목 | 설명 |
---|---|
Connecting to host 서버 IP, port 5201 |
서버(서버 IP )의 iperf3 기본 포트 5201에 클라이언트가 연결 중임을 나타냄 |
[ 5] local 서버 IP port 43828 connected to 서버 IP port 5201 |
클라이언트의 로컬 IP/포트와 서버의 IP/포트 연결 정보 |
Interval |
측정 구간(초 단위) |
Transfer |
해당 구간 동안 전송된 데이터 크기 (단위: Bytes, KBytes, MBytes, GBytes) |
Bitrate |
전송 속도 (초당 비트 수, Gbits/sec, Mbits/sec 단위) |
Retr |
TCP 재전송 횟수 (네트워크 품질 저하 시 증가) |
Cwnd |
TCP 혼잡 윈도우 크기 (Cwnd, 송신 버퍼 크기; 네트워크 상태에 따라 동적으로 변함) |
> 결과 해석
-
초기 1초 구간 (0.00-1.00초)
2.23 GBytes 데이터 전송, 약 19.1 Gbits/sec 속도로 매우 빠른 전송 성능 확인됨.
재전송(Retr) 0, 혼잡 윈도우 1.06 MBytes로 안정적인 네트워크 상태 추정. -
2초 이후 구간들 (1.00초 이후)
전송량과 전송 속도가 급격히 감소하며 간헐적으로 매우 낮은 대역폭을 보임(수 Mbits/sec 수준).
이는 네트워크 혼잡, 서버 부하, 클라이언트 자원 제한, 혹은 NIC loopback 특성 등에 의한 영향일 수 있음. -
종합 구간(0.00-10.90초)
총 21.8 GBytes 전송, 평균 17.2 Gbits/sec 속도 기록.
재전송 0으로 네트워크 무결성 문제 없음.
종합 의견
-
평균 17.2 Gbits/sec 속도로 매우 높은 성능을 보여주나, 일부 구간에서 전송 속도 변동이 큼.
-
무손실(재전송 0) 상태로 안정적 전송이 이루어지고 있음.
-
변동 원인에 대한 추가 분석 필요(서버 리소스, 네트워크 상태, 테스트 환경 등).
5. 테스트 결과 확인 및 해석
클라이언트 터미널 출력 예시:
-
Transfer: 10초간 전송된 총 데이터 용량 (18.2GB)
-
Bitrate: 초당 평균 데이터 전송 속도 (15.7Gbps)
-
Retr: 재전송 횟수, 0이면 패킷 손실 없음
-
Cwnd: TCP 혼잡 제어 윈도우 크기 (전송 효율에 영향)
6. 서버 프로세스 종료
-
서버를 백그라운드에서 실행한 경우 PID를 확인 후 종료:
-
포그라운드 실행 시 Ctrl+C로 종료 가능
-
종료 실패 메시지는 서버가 이미 종료된 경우 무시해도 됨
7. iperf3 테스트 자동화 스크립트 예제
-
설명:
-
서버를 백그라운드로 실행 후 클라이언트 테스트 수행
-
테스트 종료 후 서버 프로세스 종료 시도
-
로그는
/tmp/iperf3_server.log
에 저장
-
-
스크립트 사용법:
-
서버 IP 부분(
iperf3 -c 서버 IP -t 10
)을 실제 환경에 맞게 수정 -
실행 권한 부여:
chmod +x iperf3_local_nic_test.sh
-
실행:
./iperf3_local_nic_test.sh
-
▶ 스크립트 실행 결과값 해석
각 항목별 해석
구간(Interval) | 전송량(Transfer) | 전송속도(Bitrate) | 재전송(Retr) | 혼잡윈도우(Cwnd) | 해석 |
---|---|---|---|---|---|
0.00-1.00초 | 1.77 GBytes | 15.2 Gbits/sec | 0 | 1.31 MBytes | 초반에 매우 높은 전송속도 기록, 네트워크 상태 양호 |
1.00-5.98초 | 0 Bytes | 0.00 bits/sec | 0 | 1.31 MBytes | 5초 가까이 데이터 전송이 전혀 없음, 네트워크 정체 또는 테스트 오류 가능성 |
5.98-5.98초 | 256 KBytes | 4.59 Gbits/sec | 0 | 1.31 MBytes | 아주 짧은 구간에서 데이터 전송이 갑작스레 발생 |
5.98-6.92초 | 768 KBytes | 6.73 Mbits/sec | 0 | 1.31 MBytes | 전송속도가 급격히 낮아짐, 네트워크 또는 테스트 환경 불안정 징후 |
6.95-7.23초 | 0 Bytes | 0.00 bits/sec | 0 | 2.00 MBytes | 데이터 전송 없음, 간헐적인 전송 장애 추정 |
7.23-8.00초 | 1.39 GBytes | 15.5 Gbits/sec | 0 | 4.50 MBytes | 전송 재개, 매우 높은 전송속도 회복 |
8.00-9.00초 | 1.77 GBytes | 15.3 Gbits/sec | 0 | 4.50 MBytes | 안정적 전송 지속 |
9.00-10.00초 | 1.68 GBytes | 14.4 Gbits/sec | 0 | 4.50 MBytes | 약간 낮은 속도지만 여전히 고속 전송 유지 |
종합 해석
-
테스트 전체 구간 10초 동안 총 18.1 GBytes 전송, 평균 약 15.6 Gbits/sec 속도 기록.
-
TCP 재전송 횟수 0으로 네트워크 무결성은 양호함.
-
그러나 1초부터 5.98초까지 약 5초간 데이터 전송이 전혀 없는 구간이 존재, 이는 네트워크 일시 정체 또는 스크립트/환경 문제로 인한 데이터 전송 지연으로 보임.
-
전송 속도는 구간별 편차가 크며, 특히 중간 구간에 0 전송 및 매우 낮은 속도(수 Mbits/sec)가 관찰됨.
-
이후 7초 이후로는 다시 안정적이고 고속 전송이 이루어짐.
-
서버 종료 시 PID 종료 실패 메시지는 서버 프로세스가 이미 종료된 상태여서 나타난 것으로 기능적 문제 아님.
참고 및 권장 조치
-
데이터 전송 중단 구간(1~6초) 원인 분석 필요 (서버 스크립트, 네트워크 상태, NIC 설정 등).
-
테스트 환경 재구성 혹은 반복 테스트로 안정성 확인 권장.
-
네트워크 품질, CPU 및 메모리 부하, I/O 상태도 함께 점검 필요.
8. 요약 및 참고 사항
-
iperf3는 단일 서버 내에서도 loopback IP를 이용해 성능 테스트 가능하나, 실제 네트워크 환경에서는 서로 다른 서버 간 테스트 권장
-
테스트 시 방화벽 설정, 포트 개방 여부 확인 필수
-
재전송(Retr)이 0에 가까울수록 네트워크 품질 양호
-
Bitrate는 서버와 클라이언트 네트워크 인터페이스, 시스템 성능에 따라 다름
이상으로 Ubuntu 24 기반 iperf3 설치 및 네트워크 테스트 글을 마무리하겠습니다.
감사합니다.