ENA Express로 EC2 인스턴스 간 네트워크 성능 향상
ENA Express는 AWS Scalable Reliable Datagram(SRD) 기술로 구동됩니다. SRD는 동적 라우팅을 사용하여 스루풋을 늘리고 테일 지연 시간을 최소화하는 고성능 네트워크 전송 프로토콜입니다. ENA Express를 사용하면 동일한 가용 영역에 있는 두 EC2 인스턴스 간에 통신할 수 있습니다.
ENA Express의 이점
-
가용 영역 내에서 단일 흐름에 사용할 수 있는 최대 대역폭을 5Gbps에서 25Gbps로 집계 인스턴스 제한까지 늘립니다.
-
특히 네트워크 부하가 높은 기간 동안, EC2 인스턴스 간 네트워크 트래픽의 테일 지연 시간을 줄입니다.
-
혼잡한 네트워크 경로를 감지하고 피합니다.
-
수신 측의 패킷 재정렬 작업이나 필요한 대부분의 재전송 작업과 같은 일부 작업을 네트워크 계층에서 직접 처리합니다. 따라서 애플리케이션 계층을 다른 작업에 사용할 수 있습니다.
참고
-
애플리케이션이 초당 많은 양의 패킷을 송수신하고 대부분의 시간, 특히 네트워크에 정체가 없는 기간 동안 지연 시간을 최적화해야 하는 경우 향상된 네트워킹이 네트워크에 더 적합할 수 있습니다.
-
ENA Express 트래픽은 로컬 영역의 서브넷 간에 전송할 수 없습니다.
인스턴스에서 네트워크 인터페이스 연결에 대해 ENA Express를 활성화하면, 전송 인스턴스가 수신 인스턴스와의 통신을 시작하고 SRD는 ENA Express가 전송 인스턴스와 수신 인스턴스 모두에서 작동하는지 감지합니다. ENA Express가 작동 중인 경우 통신에 SRD 전송이 사용될 수 있습니다. ENA Express가 작동하지 않는 경우 통신이 표준 ENA 전송으로 폴백됩니다.
네트워크 트래픽이 적은 시간 동안 패킷이 ENA Express를 사용하면 패킷 지연 시간(수십 마이크로초)이 약간 증가할 수 있습니다. 이 시간 동안 특정 네트워크 성능 특성을 우선시하는 애플리케이션은 ENA Express를 통해 다음과 같은 이점을 얻을 수 있습니다.
-
프로세스는 동일한 가용 영역 내 5Gbps~25Gbps의 늘어난 최대 단일 흐름 대역폭부터 최대 집계 인스턴스 제한까지 이점을 누릴 수 있습니다. 예를 들어, 특정 인스턴스 유형이 최대 12.5Gbps를 지원하는 경우 단일 흐름 대역폭도 12.5Gbps로 제한됩니다.
-
더 오래 실행되는 프로세스의 경우 네트워크 정체 기간 동안 테일 지연 시간이 감소해야 합니다.
-
네트워크 응답 시간에 대해 보다 원활하고 표준적인 배포에 따른 이점이 있습니다.
주제
ENA Express의 작동 방식
ENA Express는 AWS Scalable Reliable Datagram(SRD) 기술로 구동됩니다. 각 네트워크 흐름의 패킷을 서로 다른 AWS 네트워크 경로에 분산하고, 혼잡 징후가 감지되면 분포를 동적으로 조정합니다. 또한 수신 측에서 패킷 재정렬을 관리합니다.
ENA Express가 의도한 대로 네트워크 트래픽을 관리하려면, 전송 및 수신 인스턴스와 해당 인스턴스 간 통신이 다음 요구 사항을 모두 충족해야 합니다.
-
전송 인스턴스 유형과 수신 인스턴스 유형이 모두 지원되어야 합니다. 자세한 내용은 ENA Express를 지원하는 인스턴스 유형 표를 참조하세요.
-
전송 인스턴스와 수신 인스턴스 모두에 ENA Express가 구성되어 있어야 합니다. 구성에 차이가 있는 경우, 트래픽이 표준 ENA 전송으로 기본 설정되는 상황이 발생할 수 있습니다. 다음 시나리오는 이 경우에 어떤 일이 발생하는지 보여줍니다.
시나리오: 구성의 차이
Instance ENA Express가 활성화됨 UDP가 ENA Express 사용 인스턴스 1 예 예 인스턴스 2 예 아니요 이 경우 두 인스턴스 모두에 ENA Express가 활성화되어 있으므로 두 인스턴스 간의 TCP 트래픽에 ENA Express를 사용할 수 있습니다. 하지만 인스턴스 중 하나는 UDP 트래픽에 ENA Express를 사용하지 않으므로, UDP를 통한 이 두 인스턴스 간의 통신에는 표준 ENA 전송이 사용됩니다.
-
전송 인스턴스와 수신 인스턴스가 동일한 가용 영역에서 실행되어야 합니다.
-
인스턴스 간 네트워크 경로에 미들웨어 박스가 포함되지 않아야 합니다. ENA Express는 현재 미들웨어 박스를 지원하지 않습니다.
-
(Linux 인스턴스만 해당) 대역폭의 잠재력을 최대한 활용하려면 드라이버 버전 2.2.9 이상을 사용하세요.
-
(Linux 인스턴스만 해당) 지표를 생성하려면 드라이버 버전 2.8 이상을 사용합니다.
요구 사항이 하나라도 충족되지 않을 경우, 인스턴스는 표준 TCP/UDP 프로토콜을 사용하지만 SRD 없이 통신합니다.
인스턴스 네트워크 드라이버가 최적의 성능을 발휘하도록 구성되었는지 확인하려면, ENA 드라이버에 대한 권장 모범 사례를 검토하세요. 이러한 모범 사례는 ENA Express에도 적용됩니다. 자세한 내용은 GitHub 웹 사이트에서 ENA Linux Driver Best Practices and Performance Optimization Guide
참고
Amazon EC2는 인스턴스와 연결(attachment)로서 해당 인스턴스에 연결된 네트워크 인터페이스 간의 관계를 참조합니다. ENA Express 설정이 이 연결에 적용됩니다. 네트워크 인터페이스가 인스턴스에서 분리되면, 이 연결은 더 이상 존재하지 않으며 해당 연결에 적용된 ENA Express 설정도 더 이상 적용되지 않습니다. 네트워크 인터페이스가 남아 있을 수 있지만, 인스턴스가 종료될 때도 마찬가지입니다.
전송 인스턴스와 수신 인스턴스 모두에서 네트워크 인터페이스 연결에 대해 ENA Express를 활성화한 후에는 ENA Express 지표를 사용하여 인스턴스에서 SRD 기술이 제공하는 성능 개선의 이점을 최대한 활용할 수 있습니다. ENA Express 지표에 대한 자세한 내용은 ENA Express의 지표 섹션을 참조하세요.
ENA Express를 지원하는 인스턴스 유형
다음 탭에서는 ENA Express를 지원하는 인스턴스 유형을 보여줍니다.
Linux Windows 인스턴스의 사전 조건
ENA Express가 효과적으로 작동할 수 있도록 하려면 다음과 같이 Linux 인스턴스 설정을 업데이트하세요.
-
인스턴스에서 점보 프레임을 사용하는 경우, 다음 명령을 실행하여 최대 전송 단위(MTU)를
8900
으로 설정합니다.[ec2-user ~]$
sudo ip link set dev
eth0
mtu8900
-
다음과 같이 수신기(Rx) 링 크기를 늘립니다.
[ec2-user ~]$
ethtool -G
device
rx 8192 -
ENA Express 대역폭을 최대화하려면 다음과 같이 TCP 대기열 제한을 구성합니다.
-
TCP 작은 대기열 제한을 1MB 이상으로 설정합니다. 이렇게 하면 소켓에서 전송을 위해 대기열에 등록되는 데이터 양이 증가합니다.
sudo sh -c 'echo
1048576
> /proc/sys/net/ipv4/tcp_limit_output_bytes' -
eth 디바이스에서 바이트 대기열 제한이 Linux 배포에 대해 활성화되어 있는 경우 비활성화합니다. 이렇게 하면 장치 대기열에 전송을 위해 등록되는 데이터가 증가합니다.
sudo sh -c 'for txq in /sys/class/net/
eth0
/queues/tx-*; do echo max > ${txq}/byte_queue_limits/limit_min; done'참고
Amazon Linux 배포용 ENA 드라이버는 기본적으로 바이트 대기열 제한을 비활성화합니다.
-
Linux 인스턴스의 ENA Express 설정에 대한 성능 튜닝
최적의 ENA Express 성능을 위해 Linux 인스턴스 구성을 확인하려면 Amazon GitHub 리포지토리에서 사용 가능한 다음 스크립트를 실행할 수 있습니다.
https://github.com/amzn/amzn-ec2-ena-utilities/blob/main/ena-express/check-ena-express-settings.sh
이 스크립트는 일련의 테스트를 실행하고 권장 및 필수 구성 변경을 모두 제안합니다.