iperf3는 실시간 네트워크 처리량을 측정할 수 있는 무료 오픈소스 크로스플랫폼 명령줄 도구입니다. IP 네트워크(IPv4 및 IPv6 지원)에서 달성 가능한 최대 대역폭을 테스트할 수 있는 가장 강력한 도구 중 하나로 꼽힙니다.
iperf를 활용하면 타이밍, 버퍼, 그리고 TCP, UDP, SCTP 같은 프로토콜과 관련된 다양한 파라미터를 세밀하게 조정할 수 있어 네트워크 성능 튜닝 작업에 매우 유용합니다.
iperf3, 왜 필요한가?
네트워크 성능을 극대화하려면 데이터를 주고받는 능력, 즉 처리량(throughput)과 지연 시간(latency)을 함께 개선해야 합니다. 하지만 본격적인 튜닝에 앞서 전체적인 네트워크 성능 통계를 수집하는 테스트를 먼저 수행해야 하며, 이 결과가 튜닝 방향을 잡아주는 기준이 됩니다.
측정 결과에는 초 단위 시간 간격, 전송된 데이터 양, 대역폭(전송 속도), 패킷 손실률 등 유용한 성능 지표가 포함됩니다. iperf3는 특정 경로에서 TCP 연결을 튜닝하는 데 주로 사용되며, 이번 가이드에서도 이 부분에 초점을 맞춥니다.
사전 준비 사항
- iperf3가 설치된, 네트워크로 연결된 컴퓨터 2대
리눅스에 iPerf3 설치하기
iperf3를 사용하기 전에 벤치마킹에 사용할 두 대의 머신 모두에 설치해야 합니다. 다행히 iperf3는 대부분의 주요 리눅스 배포판 공식 저장소에 포함되어 있어, 아래와 같이 패키지 관리자로 간단히 설치할 수 있습니다.
$ sudo apt install iperf3 [Debian, Ubuntu, Mint]
$ sudo yum install iperf3 [RHEL/CentOS/Fedora, Rocky/AlmaLinux]
$ sudo emerge -a net-misc/iperf [Gentoo Linux]
$ sudo apk add iperf3 [Alpine Linux]
$ sudo pacman -S iperf3 [Arch Linux]
$ sudo zypper install iperf3 [OpenSUSE]
두 머신에 설치가 완료되면 바로 네트워크 처리량 테스트를 시작할 수 있습니다.
두 리눅스 서버 간 네트워크 속도 테스트하기
먼저 서버 역할을 할 원격 머신에 접속한 뒤, -s 플래그로 iperf3를 서버 모드로 실행합니다. 기본적으로 5201번 포트에서 대기합니다.
-f 스위치를 사용하면 결과 보고 단위를 지정할 수 있습니다. k, m, g는 Kbit/s, Mbit/s, Gbit/s를, K, M, G는 KByte/s, MByte/s, GByte/s를 의미합니다.
$ iperf3 -s -f K
만약 5201번 포트를 다른 프로그램이 이미 사용 중이라면, -p 스위치로 다른 포트(예: 3000)를 지정할 수 있습니다.
$ iperf3 -s -p 3000
필요하다면 -D 플래그로 서버를 데몬 형태로 백그라운드에서 실행하고, 서버 메시지를 로그 파일에 기록할 수도 있습니다.
$ iperf3 -s -D > iperf3log
이제 클라이언트 역할을 할 로컬 머신(실제 벤치마킹이 진행되는 곳)에서 -c 플래그로 클라이언트 모드를 실행하고, 서버가 구동 중인 호스트를 IP 주소, 도메인 또는 호스트명으로 지정합니다.
$ iperf3 -c 192.168.10.1 -f K
약 18~20초 후 클라이언트가 자동으로 종료되며, 아래 화면처럼 벤치마크의 평균 처리량 결과가 출력됩니다.

결과를 보면 서버와 클라이언트의 측정값에 차이가 있는데, 어떤 테스트든 항상 iperf 클라이언트 머신에서 얻은 결과를 기준으로 삼는 것이 좋습니다.
고급 네트워크 처리량 테스트 수행하기
더 정밀한 테스트를 위해 활용할 수 있는 클라이언트 전용 옵션이 여러 가지 있습니다.
특정 시점에 네트워크에서 전송되는 데이터 양을 결정하는 핵심 요소 중 하나는 TCP 윈도우 크기입니다. TCP 연결 튜닝에서 매우 중요한 값으로, -w 플래그로 윈도우 크기 또는 소켓 버퍼 크기를 설정할 수 있습니다.
$ iperf3 -c 192.168.10.1 -f K -w 500K
역방향 모드, 즉 서버가 전송하고 클라이언트가 수신하는 방식으로 테스트하려면 -R 스위치를 추가합니다.
$ iperf3 -c 192.168.10.1 -f K -w 500K -R
양방향 테스트, 즉 두 방향의 대역폭을 동시에 측정하려면 -d 옵션을 사용합니다.
$ iperf3 -c 192.168.10.1 -f K -w 500K -d
클라이언트 출력에 서버 측 결과까지 함께 표시하고 싶다면 --get-server-output 옵션을 추가하세요.
$ iperf3 -c 192.168.10.1 -f K -w 500K -R --get-server-output

-P 옵션을 사용하면 동시에 실행되는 병렬 클라이언트 스트림 수(아래 예제에서는 2개)도 지정할 수 있습니다.
$ iperf3 -c 192.168.10.1 -f K -w 500K -P 2
더 많은 옵션이 궁금하다면 iperf3 매뉴얼 페이지를 참고하세요.
$ man iperf3
마무리
실제 네트워크 성능 튜닝에 착수하기 전에는 반드시 성능 테스트를 먼저 수행해 현재 상태를 파악해야 합니다. iperf3는 네트워크 처리량 테스트를 위한 강력하고 실용적인 도구이니, 서버 간 대역폭을 점검할 때 적극 활용해 보시기 바랍니다.
궁금한 점이나 공유하고 싶은 의견이 있다면 아래 댓글로 남겨주세요.