Computer >> 컴퓨터 >  >> 프로그래밍 >> Bash 프로그래밍

iPerf3 – 리눅스에서 정확한 네트워크 처리량과 속도 테스트하기

iperf3는 실시간 네트워크 처리량을 측정할 수 있는 무료 오픈소스 크로스플랫폼 명령줄 도구입니다. IP 네트워크(IPv4IPv6 지원)에서 달성 가능한 최대 대역폭을 테스트할 수 있는 가장 강력한 도구 중 하나로 꼽힙니다.

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초 후 클라이언트가 자동으로 종료되며, 아래 화면처럼 벤치마크의 평균 처리량 결과가 출력됩니다.

iPerf3 – 리눅스에서 정확한 네트워크 처리량과 속도 테스트하기

결과를 보면 서버와 클라이언트의 측정값에 차이가 있는데, 어떤 테스트든 항상 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
iPerf3 – 리눅스에서 정확한 네트워크 처리량과 속도 테스트하기

-P 옵션을 사용하면 동시에 실행되는 병렬 클라이언트 스트림 수(아래 예제에서는 2개)도 지정할 수 있습니다.

$ iperf3 -c 192.168.10.1 -f K -w 500K -P 2

더 많은 옵션이 궁금하다면 iperf3 매뉴얼 페이지를 참고하세요.

$ man iperf3

마무리

실제 네트워크 성능 튜닝에 착수하기 전에는 반드시 성능 테스트를 먼저 수행해 현재 상태를 파악해야 합니다. iperf3는 네트워크 처리량 테스트를 위한 강력하고 실용적인 도구이니, 서버 간 대역폭을 점검할 때 적극 활용해 보시기 바랍니다.

궁금한 점이나 공유하고 싶은 의견이 있다면 아래 댓글로 남겨주세요.