Ishita 씨가 인스턴스와
온프레미스 호스트 간의
문제 해결 방법을 설명합니다.

ishita_network_issue_vpc_onprem_ig

인터넷 게이트웨이를 통한 Amazon Elastic Compute Cloud(Amazon EC2) Linux 인스턴스와 온프레미스 간 연결에서 패킷 손실 또는 지연 문제가 발생합니다. 이러한 네트워크 성능 문제는 어떻게 해결합니까?

패킷 손실 또는 지연과 같은 네트워크 문제를 진단하려면 먼저 네트워크를 테스트하여 문제의 원인을 격리해야 합니다. 다음 단계에 따라 문제의 원인이 네트워크와 애플리케이션 중 어디에 있는지를 확인할 수 있습니다.

문제 해결을 시작하기 전에 다음을 확인하십시오.

  • 양쪽 엔드포인트(EC2 인스턴스와 온프레미스 호스트) 모두에 네트워크 유틸리티가 설치되어 있는지 확인합니다.
  • 향상된 네트워킹을 지원하는 EC2 인스턴스를 사용하고 최신 드라이버가 설치되어 있는지 확인합니다. 향상된 네트워킹은 낮은 CPU 사용률로 향상된 I/O를 제공하므로 성능 테스트를 실행할 때 인스턴스 수준의 문제를 방지할 수 있습니다. 향상된 네트워킹이 활성화되어 있지 않은 경우 인스턴스에서 향상된 네트워킹 활성화를 참조하십시오.
  • Linux 인스턴스에 연결하여 인스턴스에 액세스하고 EC2 인스턴스와 온프레미스 호스트 간에 엔드 투 엔드 연결이 있는지 확인합니다.

네트워크를 간편하게 테스트하고 문제를 해결할 수 있도록 다음 도구를 설치합니다.

  • AWSSupport-SetupIPMonitoringFromVPC는 패킷 손실, 지연 시간, MTR, tcptraceroute, tracepath 등의 네트워크 지표를 수집합니다.
  • MTR을 사용하여 ICMP 또는 TCP 패킷 손실과 지연 문제를 확인합니다.
  • traceroute를 사용하여 지연 시간 또는 라우팅 문제를 파악합니다.
  • Hping3를 사용하여 엔드 투 엔드 TCP 패킷 손실 및 지연 문제를 확인합니다.
  • Tcpdump를 사용하여 패킷 캡처 샘플을 분석합니다.

상향식으로 traceroute 또는 MTR 보고서의 홉을 검토합니다. 예를 들어 마지막 홉/대상의 손실을 확인한 후 다음 홉을 검토합니다. 마지막 홉까지 패킷 손실 또는 지연 문제가 계속될 경우 네트워크 또는 라우팅 문제가 발생한 것일 수 있습니다. 경로의 홉 하나에서만 패킷 손실/지연이 나타날 경우 해당 노드의 제어 플레인 속도 제한 관리에 문제가 있을 수 있습니다. 보고된 마지막 홉이 명령에 나와 있는 대상인지 확인합니다. 그렇지 않은 경우 제한적인 보안 그룹 때문에 문제가 발생했을 수 있습니다.

AWSSupport-SetupIPMonitoringFromVPC를 사용한 성능 테스트

이 내장 도구는 네트워크 문제를 해결하는 데 필요한 다양한 지표를 수집합니다. 자세한 내용은 Amazon VPC에서의 네트워크 연결에 대한 디버깅 도구를 참조하십시오.

MTR을 사용한 성능 테스트

Linux MTR 명령은 업데이트된 출력을 지속적으로 제공합니다. 이 출력은 네트워크 성능을 분석하는 데 사용할 수 있습니다. 이 진단 도구는 traceroute 유틸리티와 ping 유틸리티의 기능을 통합한 것입니다. 대부분의 Linux 배포판에는 traceroute 및 MTR이 이미 설치되어 있습니다. 하지만 배포판의 소프트웨어 패키지 관리자에서 다운로드할 수도 있습니다.

다음 명령을 실행하여 MTR을 설치합니다.

Amazon Linux:

sudo yum install mtr

Ubuntu:

sudo apt-get install mtr

MTR을 사용하여 네트워크의 성능을 테스트하려면 EC2 인스턴스와 온프레미스 호스트의 퍼블릭 IP 주소 간에 양방향으로 이 테스트를 실행합니다. 방향이 반전되면 TCP/IP 네트워크의 노드 간 경로가 바뀔 수 있습니다. 따라서 양방향의 MTR 결과를 얻는 것이 중요합니다. 대부분의 인터넷 장치는 ICMP 기반의 추적 요청을 낮은 우선 순위로 취급하기 때문에, ICMP 대신 TCP 기반의 추적을 사용할 수 있습니다.

패킷 손실을 검토합니다. 일반적으로 단일 홉의 패킷 손실은 문제가 되지 않습니다. 이 손실은 "ICMP time exceeded" 메시지가 손실되도록 하는 제어 플레인 정책 때문일 수 있습니다. 대상 홉에 이를 때까지 패킷 손실이 계속되거나 여러 홉에 걸쳐 패킷 손실이 나타날 경우에는 손실이 문제가 될 수 있습니다.

참고: 몇 개의 요청이 시간 초과되는 것은 흔한 현상입니다.

ICMP 기반 MTR:

mtr -n -c 200 <Public IP EC2 instance/on-premises host> --report

TCP 기반 MTR:

mtr -n -T -c 200 <Public IP EC2 instance/on-premises host> --report

-T 인수는 TCP 기반 MTR을 수행하고 --report 옵션은 MTR을 보고서 모드로 전환합니다. MTR은 -c 옵션을 사용하여 지정한 횟수의 주기 동안 실행됩니다. 통계 데이터를 인쇄하고 종료합니다.

참고: MTR의 일부 버전에서는 TCP를 사용할 경우 최종 홉 보고서의 값이 부정확하게 나타나는 알려진 문제가 있습니다.

traceroute를 사용한 성능 테스트

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

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

Amazon Linux:

sudo yum install traceroute

Ubuntu:

sudo apt-get install traceroute

참고: MTR 보고서를 실행한 경우에는 Traceroute가 필요 없습니다. MTR은 대상에 대한 지연 시간 및 패킷 손실 통계를 제공합니다.

포트 22 또는 테스트할 포트가 양방향으로 열려 있는지 확인합니다. traceroute로 네트워크 연결 문제를 해결할 때는 클라이언트에서 서버로, 이어서 다시 서버에서 클라이언트로 양쪽 방향에서 명령을 실행합니다. 방향이 반전되면 TCP/IP 네트워크의 노드 간 경로가 바뀔 수 있습니다. 대부분의 인터넷 장치는 ICMP 기반의 추적 요청을 낮은 우선 순위로 취급하기 때문에, ICMP 대신 TCP 기반의 추적을 사용합니다.

ICMP 기반 traceroute:

sudo traceroute <Public IP of EC2 instance/on-premises host>

TCP 기반 traceroute:

sudo traceroute -T -p 22 –n <Public IP of EC2 instance/on-premises host>

-T -p 22 -n 인수는 포트 22에서 TCP 기반 추적을 수행합니다.

hping3를 사용한 성능 테스트

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

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

Amazon Linux:

sudo yum --enablerepo=epel install hping3

Ubuntu:

sudo apt-get install hping3

다음 명령은 포트 0를 통해 50개의 TCP SYN 패킷을 전송합니다. hping3는 기본적으로 어떠한 TCP 플래그도 지정하지 않고 창 크기 64의 TCP 헤더를 대상 호스트의 포트 0으로 보냅니다.

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

다음 명령은 포트 0을 통해 50개의 TCP SYN 패킷을 전송합니다.

hping3 -S -c 50 -V <Public IP of EC2 instance/on-premises host> -p 22

참고: 포트 22 또는 테스트하는 포트가 열려 있는지 확인하십시오.

tcpdump를 사용한 패킷 캡처 샘플 테스트

패킷 손실/지연 문제를 진단할 때 EC2 인스턴스와 온프레미스 호스트의 패킷을 동시에 캡처하는 것이 좋습니다. 그렇게 하면 문제가 네트워킹 및 애플리케이션 계층에 격리됩니다. 다음 명령을 실행하여 tcpdump를 설치합니다.

Amazon Linux:

sudo yum install tcpdump

Ubuntu:

sudo apt-get install tcpdump

네트워크에서 패킷 손실이 확인되면 분석 및 문제 해결을 위해 네트워크 장치를 확인하는 방법에 대한 지침은 공급업체의 설명서를 참조하십시오. 멀티홈으로 구성된 경우 다른 ISP(인터넷 서비스 제공업체)를 사용하여 이 테스트를 수행한 후 결과를 서로 비교합니다.


페이지 내용이 도움이 되었습니까? | 아니요

AWS 지원 지식 센터로 돌아가기

도움이 필요하십니까? AWS 지원 센터를 방문하십시오.

게시 날짜: 2017-10-26

업데이트 날짜: 2019년 2월 14일