AWS VPN 연결의 패킷 손실 문제를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 5월 19일

AWS VPN(AWS 가상 프라이빗 네트워크) 연결에서 일정하거나 간헐적으로 패킷 손실이 발생하고 지연 시간이 길어집니다. 문제가 Amazon VPC(Amazon Virtual Private Cloud) 내부에서 발생하는 것이 아님을 확인하려면 어떤 테스트를 실행해야 합니까?

간략한 설명

패킷 손실 문제는 온프레미스 네트워크와 Amazon VPC 간의 AWS VPN 인터넷 트래픽 홉에 따라 다릅니다. 패킷 손실이 발생한 위치를 격리하고 확인하는 것이 좋습니다.

해결 방법

소스 및 대상 호스트에서 CPUUtilization, NetworkIn/NetworkOut, NetworkPacketsIn/NetworkPacketsOut과 같은 리소스 사용률 문제를 확인하여 네트워크 한도에 도달하지 않았는지 확인합니다.

MTR을 사용하여 ICMP 또는 TCP 패킷 손실 및 지연 시간 확인

MTR은 지속적으로 업데이트되는 출력을 제공하므로 시간 경과에 따른 네트워크 성능을 분석할 수 있습니다. MTR은 traceroute 기능과 ping 기능을 네트워크 진단 도구 하나로 통합한 것입니다.

ICMP 또는 TCP 패킷 손실과 지연 시간을 확인하기 위해 VPC의 EC2 인스턴스에 MTR 네트워크 도구를 설치합니다.

Amazon Linux:

sudo yum install mtr

Ubuntu:

sudo apt-get install mtr

Windows:

WinMTR을 다운로드하여 설치합니다.

참고: Windows OS의 경우 WinMTR은 TCP 기반 MTR을 지원하지 않습니다.

EC2 인스턴스 및 온프레미스 호스트의 프라이빗 IP 주소와 퍼블릭 IP 주소 간에 다음 테스트를 양방향으로 실행합니다. 방향이 반전되면 TCP/IP 네트워크의 노드 간 경로가 바뀔 수 있습니다. MTR 결과를 양방향으로 얻는 것이 좋습니다.

참고:

  • 보안 그룹 및 NACL 규칙이 원본 인스턴스의 ICMP 트래픽을 허용하는지 확인합니다.
  • 테스트 포트가 대상 인스턴스에서 열려 있는지, 보안 그룹 및 NACL 규칙이 프로토콜 및 포트의 원본으로부터의 트래픽을 허용하는지 확인합니다.

TCP 기반의 결과는 연결에 애플리케이션으로 인한 패킷 손실 또는 지연 시간이 있는지 확인해 줍니다. MTR 버전 0.85 이상에는 TCP 옵션이 있습니다.

프라이빗 IP EC2 인스턴스 온프레미스 호스트 보고서:

mtr -n -c 200

프라이빗 IP EC2 인스턴스 온프레미스 호스트 보고서:

mtr -n -T -c 200 -P 443 -m 60

퍼블릭 IP EC2 인스턴스 온프레미스 호스트 보고서:

mtr -n -c 200

퍼블릭 IP EC2 인스턴스 온프레미스 호스트 보고서:

mtr -n -T -c 200 -P 443 -m 60

traceroute를 사용하여 지연 시간 또는 라운지 문제 확인

Linux traceroute 유틸리티는 클라이언트 노드에서 대상 노드로의 경로를 식별합니다. 이 유틸리티는 각 라우터가 요청에 응답하는 시간을 밀리초 단위로 기록합니다. traceroute 유틸리티는 대상 주소에 도착할 때까지 각 홉에서 걸린 시간의 양을 계산합니다.

traceroute를 설치하려면 다음 명령을 실행합니다.

Amazon Linux:

sudo yum install traceroute

Ubuntu:

sudo apt-get install traceroute

EC2 인스턴스 및 온프레미스 호스트의 프라이빗 IP 주소 테스트:

Amazon Linux:

sudo traceroute
sudo traceroute -T -p 80

Windows:

tracert
tracetcp

참고: -T -p 80 -n 인수는 포트 80에서 TCP 기반의 추적을 실행합니다. 포트 80 또는 테스트 중인 포트가 양방향으로 열려 있는지 확인하세요.

대부분의 인터넷 장치는 ICMP 기반의 추적 요청을 낮은 우선 순위로 취급하기 때문에, ICMP 대신 TCP 기반의 추적을 지정하는 Linux traceroute 옵션이 유용합니다. 요청 중 일부가 시간 초과되는 경우가 많으므로, 경로의 마지막 홉이나 대상 주소에서 패킷 손실이 발생하는지 확인하세요. 여러 홉을 통한 패킷 손실은 문제를 나타낼 수 있습니다.

참고: traceroute 명령을 클라이언트에서 서버로 양방향으로 실행한 다음 서버에서 클라이언트로 다시 실행하는 것이 좋습니다.

Hping3를 사용하여 엔드 투 엔드 TCP 패킷 손실 및 지연 문제 확인

Hping3는 TCP 연결의 엔드 투 엔드 패킷 손실과 지연 시간을 측정하는 명령줄 지향 TCP/IP 패킷 어셈블러/분석기입니다. hping3는 ICMP 에코 요청 외에도 TCP, UDP 및 RAW-IP 프로토콜을 지원합니다. Hping3에는 커버링된 채널 간에 파일을 보낼 수 있는 traceroute 모드도 포함되어 있습니다. Hping3는 호스트를 스캔하고 침입 테스트를 지원하고 침입 탐지 시스템을 테스트하며 호스트 간에 파일을 전송하도록 설계되었습니다.

MTR과 traceroute는 홉당 지연 시간을 캡처합니다. 하지만 hping3는 패킷 손실 외에 TCP를 통한 최소/평균/최대 엔드 투 엔드 지연 시간까지 보여 줍니다. 다음 명령을 실행하여 hping3를 설치합니다.

Amazon Linux:

sudo yum --enablerepo=epel install hping3

Ubuntu:

sudo apt-get install hping3

다음 명령을 실행합니다.

hping3 -S -c 50 -V <Public IP of EC2 instance or on-premises host>
hping3 -S -c 50 -V <Private IP of EC2 instance or on-premises host>

참고: hping3는 기본적으로 tcp 플래그를 지정하지 않고 winsize 64의 TCP 헤더를 대상 호스트의 포트 0으로 보냅니다.

tcpdump 또는 Wireshark를 사용한 패킷 캡처 샘플

문제를 재현할 때 VPC의 EC2 인스턴스와 온프레미스 호스트 간에 동시 패킷 캡처를 수행하면 VPN 연결에 애플리케이션 문제 또는 네트워크 계층 문제가 있는지 파악하는 데 도움이 됩니다. Linux 인스턴스에 tcpdump를 설치하거나 Windows 인스턴스에 Wireshark를 설치하여 패킷 캡처를 수행할 수 있습니다.

Amazon Linux에 tcpdump를 설치합니다.

sudo yum install tcpdump

Ubuntu에 tcpdump를 설치합니다.

sudo apt-get install tcpdump

Windows OS에 Wireshark를 설치합니다.

Wireshark를 설치하고 패킷 캡처를 수행합니다.

ECN(명시적 정체 알림)

Windows 인스턴스에 연결하는 경우 ECN을 활성화하면 패킷 손실이나 성능 문제가 발생할 수 있습니다. ECN을 비활성화하여 성능을 개선하세요.

다음 명령을 실행하여 ECN 기능이 활성화되어 있는지 확인합니다.

netsh interface tcp show global

ECN 기능이 활성화된 경우 다음 명령을 실행하여 비활성화합니다.

netsh interface tcp set global ecncapability=disabled