프로필사진
iperf3을 사용하여 연결된 VPC간 네트워크 성능 테스트 (feat.NCP VPC Peering)

2023. 6. 10. 17:25🔴 ETC/Network

300x250

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 구축하기

 

NCP에서 VPC Peering 구축하기

VPC Peering 란? (VPC 간 사설 통신망 Peering) "인터넷 통신을 거치지 않고 비공인 IP를 통해서 내부 네트워크로 다른 VPC와 통신하도록 하는 기술" 즉, 2개 이상의 VPC를 연결하고 싶을 때 사용할 수 있다.

kkangdda.tistory.com

 


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번 시도 :

17.2 MB/s
13.6 MB/s
16.4 MB/s

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..)

 

네트워크 스루풋 측정 (feat. iperf3 말고 iperf..)

https://repost.aws/knowledge-center/network-throughput-benchmark-linux-ec2 Benchmark network throughput between EC2 Linux instances in the same VPC I want to measure the network bandwidth between Amazon Elastic Compute Cloud (Amazon EC2) Linux instances in

kkangdda.tistory.com


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 네트워크
- 전송속도 : 초당 전송되는 현재 비트의 평균 속도
- 대역폭 : 초당 전송될 수 있는 최대량

300x250