AWS Site-to-Site VPN에서 데이터 전송이 느립니다. 전송 속도를 높이고 싶습니다.
간략한 설명
다음과 같은 일반적인 네트워크 문제로 인해 Site-to-Site VPN 연결에서 전송 속도가 느려집니다.
- 저성능 라우팅
- 경로에 있는 낮은 최대 전송 단위(MTU)
- 낮은 대역폭 터널로 인한 TCP/UDP 처리량 문제
- 데이터 전송을 제한하는 게이트웨이 디바이스
- 과포화 상태인 VPN 터널
다음과 같은 일반적인 시스템 또는 애플리케이션 문제로 인해 전송 속도가 느려지기도 합니다.
- 애플리케이션 엔드포인트 리소스 할당량
- 데이터 전송에 단일 TCP 스트림을 사용하는 애플리케이션 엔드포인트
해결 방법
Site-to-Site VPN의 낮은 전송 속도 문제를 해결하려면 다음 작업을 수행하십시오.
저성능 라우팅 확인
먼저 Linux MTR 도구를 설치합니다. 대부분의 Linux 배포판에는 MTR이 사전 설치되어 있습니다. 배포판의 소프트웨어 패키지 관리자에서 도구를 다운로드할 수도 있습니다.
-
Amazon Linux용 MTR을 설치하려면 다음 명령을 실행합니다.
sudo yum install mtr
-
Ubuntu용 MTR을 설치하려면 다음 명령을 실행합니다.
sudo apt-get install mtr-tiny
그런 다음 온프레미스 엔드포인트에서 MTR을 사용하여 다음 명령을 실행합니다.
mtr -T -nrz example_IP
참고: example_IP를 AWS 터널의 퍼블릭 IP 주소로 바꾸십시오.
MTR 출력에는 경로를 따라 있는 인터넷 서비스 제공업체(ISP)의 Autonomous System Number(ASN)가 포함됩니다. 출력을 검토하여 트래픽이 고객 게이트웨이 디바이스에서 AWS로 직접 경로를 따라 흐르는지 확인하십시오.
필요한 경우 MTR 출력을 사용하여 인터넷 지연 시간을 확인하십시오.
경로를 따라 MTU 확인
경로에서 가장 낮은 MTU를 확인합니다.
-
Linux의 경우 다음 명령을 실행합니다.
ping example_IP -M do -s 1460
-
Windows의 경우 다음 명령을 실행합니다.
ping example_IP -l 1460 -f
참고: example_IP를 대상의 IP 주소로, 1460을 바이트 단위의 최대 세그먼트 크기로 바꾸십시오.
"packet needs to be fragmented but DF set"라는 메시지가 표시되면 MSS 크기를 1 낮추고 명령을 다시 실행합니다. 성공적인 ping이 출력될 때까지 테스트를 반복합니다.
TCP/UDP 처리량 문제 해결
사전 요구 사항: iPerf3 도구를 설치해야 합니다. iPerf 3을 설치하려면 iPerf 웹사이트에서 iPerf 바이너리 다운로드를 참조하십시오.
서버와 클라이언트에서 UDP 대역폭 기능을 테스트합니다.
참고: example_IP를 서버의 프라이빗 IP 주소로 바꾸십시오.
VPN과 연결된 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 사용할 수 있는 대역폭 크레딧이 있는지 확인합니다. 대역폭 크레딧이 없으면 더 큰 인스턴스를 만든 다음 다시 테스트합니다.
서버와 클라이언트의 TCP 처리량을 테스트합니다.
참고: example_IP를 서버의 프라이빗 IP 주소로 바꾸십시오.
인스턴스 크기를 늘릴 때 소스 및 대상 메모리 버퍼를 테스트하려면 다양한 TCP 수신 창 크기를 테스트하십시오.
고객 게이트웨이 장치가 데이터 전송을 허용하는지 확인
고객 게이트웨이 디바이스에서 패킷 캡처(PCAP)를 수행합니다. PCAP에서 고객 게이트웨이 디바이스에서 지연 시간이 길거나 패킷 손실이 발생하는 경우 디바이스 구성 설정을 확인하십시오. 이 정보를 사용하여 고객 게이트웨이가 데이터 전송 속도를 조절하고 있는지 확인할 수 있습니다. 문제를 해결하려면 장치의 공급업체 설명서를 확인하거나 해당 장치의 공급업체 지원팀에 문의하십시오.
VPN 터널이 과포화되지 않았는지 확인
각 Site-to-Site VPN 터널의 최대 대역폭은 초당 1.25기가비트(Gbps) 입니다. 터널의 처리량이 할당량을 초과하지 않는지 확인하려면 다음 단계를 완료하십시오.
- Amazon CloudWatch 콘솔을 엽니다.
- Site-to-Site VPN 메트릭을 선택합니다.
- TunnelDataIn 및 TunnelDataOut을 선택합니다.
- 통계에서 합계를 선택한 다음 기간으로 5분을 선택합니다.
- 터널의 처리량을 Gbps 단위로 계산하려면 다음 방정식을 사용합니다.
(((m1+m2)/300)*8)/1,000,000,000
참고: 이 방정식에서 m1을 TunnelDataIn의 가장 큰 값으로, m2를 TunnelDataOut의 가장 큰 값으로 바꾸십시오.
- 처리량이 1.2Gbps 이상인지 확인합니다. 처리량이 1.2Gbps 이상인 경우, 동일 비용의 다중 경로 라우팅(ECMP)을 지원하는 Border Gateway Protocol(BGP) 터널 2개와 AWS Transit Gateway 전송 게이트웨이를 시작합니다.
애플리케이션 엔드포인트가 리소스 할당량을 초과하는지 확인
고객 게이트웨이 디바이스에서 데이터가 VPN 터널을 통해 흐를 때 Wireshark(Windows용) 또는 tcdump(Linux용)를 사용하여 PCAP를 가져옵니다.
중요: 데이터 전송을 시작하기 전에 PCAP를 시작하십시오. 소스 및 대상 최종 호스트와 온프레미스 고객 게이트웨이에서 동시에 PCAP를 사용하는 것이 모범 사례입니다.
PCAP 출력에서 지연 및 패킷 재전송을 검토합니다. 최종 호스트에서 예상치 못한 지연 시간이나 패킷 재전송이 발생하는 경우 고객 게이트웨이 디바이스의 공급업체 지원 부서에 문의하십시오.
추가 TCP 스트림 테스트
다음 단계를 완료하십시오.
- 애플리케이션에서 사용하는 TCP 스트림 수를 테스트합니다.
서버에서 다음 명령을 실행합니다.
iperf3 -s
클라이언트에서 다음 명령을 실행합니다.
sudo iperf3 -c example_IP -P 10 -t 30
참고: example_IP를 서버의 프라이빗 IP 주소로 바꾸십시오. 위 클라이언트 명령은 10개의 병렬 TCP 스트림을 테스트합니다.
- 병렬 TCP 스트림이 많을수록 데이터 전송이 향상되는지 확인하려면 더 많은 TCP 스트림을 사용하여 테스트를 반복합니다. 예:
sudo iperf3 -c example_IP -P 30 -t 30
참고: 위 명령은 30개의 TCP 스트림을 테스트합니다.
- 테스트에 스트림을 추가할 때 처리량이 증가하면 소프트웨어 공급업체 지원 부서에 연락하여 애플리케이션에 TCP 스트림을 추가하십시오.
관련 정보
Amazon EC2 인스턴스의 향상된 네트워킹
AWS VPN FAQ