2023. 6. 10. 17:25ㆍ🔴 ETC/Network
iperf 란?
서버 & 클라라이언트 간 네트워크 속도를 테스트 할 수 있는 툴이다.
네트워크 처리량을 측정할 수 있으며 옵션을 주어 TCP, UDP 모두 테스트가 가능하다.
아래와 같이 다양한 옵션들이 있어서 원하는 환경으로 맞춰서 테스트할 수 있다.
iperf3 옵션
GENERAL OPTIONS | |
-p, --port n | 리슨하는 서버 포트를 지정하거나 connect 하려는 포트를 설정합니다. (기본값 5201) |
-f, --format | [kmKM] 출력 포멧: Kbits, Mbits, KBytes, MBytes |
-i, --interval n | n 초마다 결과를 출력합니다. 기본값을 1초이고 0을 사용하면 매 주기 리포트를 끕니다. |
-F, --file name | 클라이언트 : 랜덤 데이터를 전송하지 않고, 특정 파일을 전송합니다. 서버 : 받은 데이터를 버리지 않고, 네트워크에서 데이터를 읽어서 해당 파일에 씁니다. |
-A, --affinity n/n,m | 설정이 가능하면 CPU affinity를 설정합니다 (linux only) 서버 클라이언트 모두 affinity를 설정할수 있습니다. |
-V, --verbose | 로그를 더 자세히 출력합니다. |
-J, --json | JSON format으로 결과를 출력합니다. |
-d, --debug | 디버깅 정보를 출력합니다. |
-v, --version | 버전정보를 보여줍니다. |
-h, --help | 사용법을 출력합니다. |
SERVER SPECIFIC OPTIONS |
|
-s, --server | 서버 모드로 실행합니다. |
-D, --daemon | 데몬모드로 서버를 실행합니다. |
-1, --one-off | 클라이언트가 한번 접속하고 처리한후 서버를 종료합니다. |
CLIENT SPECIFIC OPTIONS |
|
-c, --client host | 서버에 접속하기 위에 클라이언트 모드로 실행합니다. |
-u, --udp | UDP를 사용합니다. |
-b, --bandwidth n[KM] | 대역폭을 n bits/sec로 설정합니다. (UDP의 경우는 기본값은 1Mbit/sec이고, TCP는 unlimited 입니다.) |
-t, --time n | 전송 시간을 설정합니다. (기본값 10 초) |
-n, --bytes n[KM] | 전송할 바이트를 설정합니다. (-t 대신 사용합니다.) |
-k, --blockcount n[KM] | 전송할 블럭(packets)수를 설정합니다. (-t, -n 대신 사용합니다.) |
-l, --length n[KM] | 버퍼 읽고 쓰는 크기를 설정합니다. (TCP 기본값 128KB, UDP 기본값 8KB) |
-P, --parallel n | 몇개의 커넥션을 연결할지 설정합니다. |
-R, --reverse | 리버스 모드로 동작합니다. (서버는 데이터를 전송하고 클라이언트는 수신합니다) |
-w, --window n[KM] | 소켓버퍼 사이즈를 설정합니다. (이 데이터는 서버로 전송되고 같은값을 사용하게 됩니다) |
-B, --bind n[KM] |
특정 interface를 바인드 하거나 멀티캐스트 어드레스를 사용합니다. |
-M, --set-mss n |
TCP Maximum segment size를 설정합니다. |
-N, --no-delay |
Nagle's Algorithm을 끕니다. set TCP no delay, disabling Nagle's Algorithm |
-4, --version4 |
IPv4 를 사용합니다. |
-6, --version6 |
IPv6 를 사용합니다. |
-C, --linux-congestion algo |
TCP congestion control 알고리즘을 지정할수 있습니다. (linux only) |
iperf3 설치
로컬(Mac)에 iperf 설치
brew install iperf3
VPC내 VM(ubuntu)에 iperf 설치
sudo apt-get install iperf3
VPC peering 구성
아래와 같이 3개의 VPC를 NCP의 VPC Peering을 통해 연결했다.
더 자세한 내용은 :
2023.06.10 - [🔴 WEB지식/Network] - NCP에서 VPC Peering 구축하기
iperf3 로 네트워크 속도 테스트
테스트 instance 스펙
- s2-g2-s50(vCPU 2EA, Memory 8GB, [SSD]Disk 50GB)
- mtu 8950
1. 로컬 ➡️ VPC
VPC : 서버 실행, 리스닝 모드
iperf3 -s -f M
로컬 : 클라이언트 실행
iperf3 -c 101.79.8.10 -p 5201 -4 -b 0 -f M -w 410K
iperf3은 옵션을 주지 않으면 기본적으로 TCP로 트래픽을 전송한다.
아래와 같은 옵션을 주었다 :
-4 옵션 ) IPv4,
-b 0 옵션 ) 최대 bandwidth테스트
-f M옵션 ) 처리량 MBytes단위
-w 410K ) TCP window size를 가장 큰 값으로 적용 (iperf3에서 지원하는 최대 TCP window size)
총 3번 시도 :
3번 테스트 모두 다른 결과가 나왔는데, 이는 l3 라우트(인터넷)를 타면 경로에따라 성능이 달라질 수 있기 때문이라고 판단된다.
2. VPC ➡️ VPC
VPC간 테스트는 3가지 다른 환경에서 진행했다.
1) 로컬과 동일
iperf3 -c 10.0.0.6 -p 5201 -4 -b 0 -f M -w 410K
2) 리버스 모드 (서버는 데이터 전송, 클라이언트는 수신)
iperf3 -c 10.0.0.6 -p 5201 -4 -b 0 -f M -w 410K -R
3) UDP 테스트
iperf3 -c 10.0.0.6 -p 5201 -4 -b 0 -f M -w 410K -u
+ 추후 다른 조건으로 테스트 실행 (iperf3대신 iperf...)
2023.06.12 - [🔴 WEB지식/Network] - 네트워크 스루풋 측정 (feat. iperf3 말고 iperf..)
PS. mbits(메가 비트), mbytes(메가 바이트) 차이
Mb/s (Mbps) = Mega bit per second, 초당 비트
MB/s = Mega Byte per second, 초당 바이트
Mega = 100만
하드디스크에서의 논리는 1MByte = 1,000 / 1KByte = 1,000,000 Byte
컴퓨터에서 사용되는 단위는 8Bit = 1Byte로 사용되고 있음
이러한 차이 때문에 Mbps로 bit단위로 속도를 나타낼 수 있다.
Mbps를 Byte단위로 나타내기 위해서는 간단하게 8로 나누어주면 된다.
ex. 1000Mbps = 1000 / 8 -> 125MB/s
PS. Bitrate(전송속도), Bandwidth(대역폭) 차이
in 네트워크
- 전송속도 : 초당 전송되는 현재 비트의 평균 속도
- 대역폭 : 초당 전송될 수 있는 최대량
'🔴 ETC > Network' 카테고리의 다른 글
[DVA-C02] AWS Certified Developer Associate 자격증 후기 (0) | 2023.08.06 |
---|---|
네트워크 스루풋 측정 (feat. iperf3 말고 iperf..) (0) | 2023.06.12 |
NCP에서 VPC Peering 구축하기 (2) | 2023.06.10 |
[Network] 책 정리 : 모두의 네트워크 (2) (0) | 2022.08.21 |
[Network] 책 정리 : 모두의 네트워크 (1) (1) | 2022.08.04 |