VPN 연결에서 낮은 대역폭 문제는 어떻게 해결합니까?

최종 업데이트 날짜: 2022년 7월 6일

VPN 연결에서 대역폭이 낮습니다. 문제가 Amazon Virtual Private Cloud(Amazon VPC) 내부에서 일어나는 것이 아님을 확인하려면 어떤 테스트를 실행해야 합니까?

해결 방법

테스트를 위해 Linux를 실행하는 EC2 인스턴스 두 개 시작하기

성능 테스트를 시작하기 전에 동일한 VPC에 있는 두 개 이상의 가용 영역에서 Amazon Elastic Compute Cloud(Amazon EC2) Linux 인스턴스를 시작합니다. 이 인스턴스를 네트워크 성능 테스트에 사용합니다. 인스턴스가 Linux용으로 향상된 네트워킹을 지원하는지 확인합니다.

참고: 동일한 배치 그룹에 공존하지 않는 인스턴스 또는 점보 프레임을 지원하지 않는 인스턴스 간에 네트워크 테스트를 수행하는 경우 Linux 인스턴스에서 MTU를 확인 및 설정합니다.

그런 다음 SSH를 통해 인스턴스에 연결할 수 있는지 확인합니다. 마지막으로, iperf3에서 사용하는 포트를 통해 통신을 허용하도록 인스턴스에서 사용하는 보안 그룹을 구성합니다. TCP 성능 테스트용 기본 포트는 5201입니다.

참고: -p를 사용하여 iperf3가 원하는 포트를 사용하도록 구성할 수 있습니다.

두 인스턴스에 모두 iperf3 네트워크 벤치마크 도구를 설치합니다.

터미널 세션을 사용해 Linux 인스턴스에 연결한 다음, iperf3을 설치합니다.

RHEL 기반 Linux 호스트에 iperf3을 설치하려면 다음을 따르십시오.

$ sudo yum install iperf3

Debian/Ubuntu 호스트에 iperf3 설치 방법:

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install git gcc make
$ git clone https://github.com/esnet/iperf3
$ cd iperf3
$ ./configure
$ sudo make
$ sudo make install
# optionally run "make clean" to free up disk space
# by removing artifacts in the build tree.
$ sudo make clean
$ sudo ldconfig

그런 다음, 다음 명령을 실행하여 인스턴스 한 개를 기본 포트에서 수신할 서버로 구성합니다.

$ sudo iperf3 -s -V

iperf3을 사용하여 네트워크 테스트 실행하기

온프레미스 호스트를 클라이언트로 구성한 다음 사용자 인스턴스에 대해 다음 테스트 중 한 가지 이상을 실행합니다.

다음 명령의 출력은 TCP 연결당 창 크기가 커지는 병렬 스트림 20개의 결과를 표시합니다.

sudo iperf3 -c <Private/public IP of instance> -P 20 -w 128K -V
sudo iperf3 -c <Private/public IP of instance> -P 20 -w 512K -V
sudo iperf3 -c <Private/public IP of instance> -P 20 -w 1024K -V

다음 명령의 출력은 대역폭 용량 증가 결과와, UDP 연결당 30초의 시간 프레임을 표시합니다.

iperf3 -c <Private/public IP of EC2 instance> -u -b 200M -t 30
iperf3 -c <Private/public IP of EC2 instance> -u -b 500M -t 30
iperf3 -c <Private/public IP of EC2 instance> -u -b 1G -t 30

EC2 인스턴스의 프라이빗 IP 주소와 온프레미스 호스트 간 iperf3 테스트를 쌍방향으로 실행하여 VPN 연결의 네트워크 처리량을 벤치마킹합니다. 그런 다음 인스턴스의 두 퍼블릭 IP 주소 사이 간에 이러한 테스트를 실행하여 인터넷을 통한 처리량을 벤치마킹합니다.

참고: 
-w 옵션은 창 크기를 나타냅니다.
이 크기는 양쪽의 커널 파라미터 net.core.rmem_max 및 net.core.wmem_max보다 작아야 합니다.
시스템 빌드에 따라 rmem_max 또는 wmem_max는 기본적으로 512KB보다 작을 수 있습니다.
기본적으로 512KB보다 작으면 iperf 테스트 전에 양쪽의 rmem_max 및 wmem_max를 늘립니다.

예:
현재 rmrm_max 및 wmem_max 값을 확인합니다.

$ sudo sysctl net.core.rmem_max 
net.core.rmem_max = 212992
$ sudo sysctl net.core.wmem_max 
net.core.wmem_max = 212992

창 크기를 2,048KB로 늘립니다.

$ sudo sysctl -w net.core.rmem_max=2097152
$ sudo sysctl -w net.core.wmem_max=2097152