메뉴 닫기

iperf3 설치 및 네트워크 성능 테스트

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. 공신력 출처


1. iperf3 설치

★ 테스트 환경(Ubuntu 24.04 1대)

# sudo apt update
# sudo apt install -y iperf3
  • 설명: 네트워크 대역폭 및 성능 측정을 위한 iperf3 도구 설치

  • 권한: root 또는 sudo 권한 필요

-> 설치 후 자동 실행 설정 유무 확인 = yes 선택


2. 서버 IP 주소 확인

# ip addr show
  • 서버에서 사용할 네트워크 인터페이스 IP를 확인합니다.

  • 테스트 시 클라이언트 접속 주소로 사용됩니다.


3. iperf3 서버 모드 실행

# iperf3 -s
  • 기본 포트(5201)로 서버 실행, 클라이언트 연결 대기

  • 포그라운드에서 실행되며, 종료하려면 Ctrl+C 입력


4. 클라이언트 모드에서 서버로 테스트 실행

# iperf3 -c <서버_IP> -t 10
  • <서버_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. 테스트 결과 확인 및 해석

클라이언트 터미널 출력 예시:

Connecting to host 서버 IP, port 5201 [ 5] local 서버 IP port 41820 connected to 서버 IP port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-10.00 sec 18.2 GBytes 15.7 Gbits/sec 0 sender [ 5] 0.00-10.00 sec 18.2 GBytes 15.7 Gbits/sec receiver iperf Done.
  • Transfer: 10초간 전송된 총 데이터 용량 (18.2GB)

  • Bitrate: 초당 평균 데이터 전송 속도 (15.7Gbps)

  • Retr: 재전송 횟수, 0이면 패킷 손실 없음

  • Cwnd: TCP 혼잡 제어 윈도우 크기 (전송 효율에 영향)


6. 서버 프로세스 종료

  • 서버를 백그라운드에서 실행한 경우 PID를 확인 후 종료:

 
# kill <서버_PID>
  • 포그라운드 실행 시 Ctrl+C로 종료 가능

  • 종료 실패 메시지는 서버가 이미 종료된 경우 무시해도 됨


7. iperf3 테스트 자동화 스크립트 예제

  • 설명:

    • 서버를 백그라운드로 실행 후 클라이언트 테스트 수행

    • 테스트 종료 후 서버 프로세스 종료 시도

    • 로그는 /tmp/iperf3_server.log에 저장

  • 스크립트 사용법:

    1. 서버 IP 부분(iperf3 -c 서버 IP -t 10)을 실제 환경에 맞게 수정

    2. 실행 권한 부여: chmod +x iperf3_local_nic_test.sh

    3. 실행: ./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 설치 및 네트워크 테스트 글을 마무리하겠습니다.

감사합니다.

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x