Amazon Web Services 한국 블로그

Amazon ENA Express – EC2에서 향상된 네트워크 지연 시간 및 흐름당 성능

AWS에서는 사용 가능한 모든 네트워크 대역폭과 네트워크 성능을 더욱 잘 활용할 수 있도록 지원하기 위해 최선을 다하고 있습니다. 지난 몇 년 동안 네트워크 대역폭은 초기 m1 인스턴스의 250Mbps에서 최신 m6in 인스턴스의 200Gbps로 증가했습니다. 원시 대역폭 뿐만 아니라 향상된 네트워킹, Elastic Network Adapter(ENA) 및 밀접하게 연결된 HPC 워크로드를 위한 Elastic Fabric Adapter(EFA)를 비롯한 고급 네트워킹 기능도 도입했습니다.

ENA Express 소개
오늘 AWS는 ENA Express를 출시합니다. 이미 Elastic Fabric Adapter를 지원하는 Scalable Reliable Datagram(SRD) 프로토콜을 기반으로 하는 ENA Express는 트래픽 흐름의 P99 지연 시간을 TCP 대비 최대 50%, P99.9 지연 시간을 최대 85%까지 줄이는 동시에 최대 단일 흐름 대역폭을 5Gbps에서 25Gbps로 늘립니다. 결론은 흐름당 대역폭이 훨씬 크고 변동성은 훨씬 적다는 것입니다.

신규 및 기존 ENA에서 ENA Express를 활성화하고 동일한 가용 영역에서 실행되는 c6gn 인스턴스 간의 TCP 및 UDP 트래픽에 대해 이 성능을 즉시 활용할 수 있습니다.

ENA Express 사용
한 쌍의 c6gn 인스턴스를 사용하여 ENA Express를 설정하고 테스트해 보겠습니다. 인스턴스를 시작한 후 AWS Management Console을 사용하여 두 인스턴스 모두에 대해 ENA Express를 활성화합니다. 각 ENI를 찾아 선택한 다음 작업(Actions) 메뉴에서 ENA Express 관리(Manage ENA Express)를 선택합니다.

ENA Express ENA Express UDP를 활성화하고 저장(Save)을 클릭합니다.

그런 다음 두 인스턴스 모두에서 최대 전송 단위(MTU)를 8900으로 설정합니다.

$ sudo /sbin/ifconfig eth0 mtu 8900

두 인스턴스 모두에 iperf3을 설치하고 서버 모드에서 첫 번째 도구를 시작합니다.

$ iperf3 -s
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------

그런 다음 두 번째 도구를 클라이언트 모드로 실행하고 결과를 관찰합니다.

$ iperf3 -c 10.0.178.46
Connecting to host 10.0.178.46, port 5201
[  4] local 10.0.187.74 port 35622 connected to 10.0.178.46 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  2.80 GBytes  24.1 Gbits/sec    0   1.43 MBytes
[  4]   1.00-2.00   sec  2.81 GBytes  24.1 Gbits/sec    0   1.43 MBytes
[  4]   2.00-3.00   sec  2.80 GBytes  24.1 Gbits/sec    0   1.43 MBytes
[  4]   3.00-4.00   sec  2.81 GBytes  24.1 Gbits/sec    0   1.43 MBytes
[  4]   4.00-5.00   sec  2.81 GBytes  24.1 Gbits/sec    0   1.43 MBytes
[  4]   5.00-6.00   sec  2.80 GBytes  24.1 Gbits/sec    0   1.43 MBytes
[  4]   6.00-7.00   sec  2.80 GBytes  24.1 Gbits/sec    0   1.43 MBytes
[  4]   7.00-8.00   sec  2.81 GBytes  24.1 Gbits/sec    0   1.43 MBytes
[  4]   8.00-9.00   sec  2.81 GBytes  24.1 Gbits/sec    0   1.43 MBytes
[  4]   9.00-10.00  sec  2.81 GBytes  24.1 Gbits/sec    0   1.43 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  28.0 GBytes  24.1 Gbits/sec    0             sender
[  4]   0.00-10.00  sec  28.0 GBytes  24.1 Gbits/sec                  receiver

ENA 드라이버는 SRD 사용을 확인하기 위해 검토할 수 있는 지표에 대해 보고합니다.

ethtool -S eth0 | grep ena_srd
     ena_srd_mode: 3
     ena_srd_tx_pkts: 25858313
     ena_srd_eligible_tx_pkts: 25858323
     ena_srd_rx_pkts: 2831267
     ena_srd_resource_utilization: 0

지표는 다음과 같이 작동합니다.

  • ena_srd_mode는 SRD가 TCP 및 UDP에 대해 활성화되었음을 나타냅니다.
  • ena_srd_tx_pkts는 SRD를 통해 전송된 패킷 수를 나타냅니다.
  • ena_srd_eligible_pkts는 SRD를 통해 전송할 수 있는 패킷 수를 나타냅니다. ENA-SRD가 연결의 양쪽 끝에서 활성화되고, 두 연결이 모두 동일한 가용 영역에 있으며, 패킷이 UDP 또는 TCP를 사용하는 경우 패킷을 SRD에 사용할 수 있습니다.
  • ena_srd_rx_pkts는 SRD를 통해 수신된 패킷 수를 나타냅니다.
  • ena_srd_resource_utilization은 할당된 Nitro 네트워크 카드 리소스 중 사용 중인 리소스의 백분율을 나타내며 열린 SRD 연결 수에 비례합니다. 이 값이 지속적으로 100%에 가까워지면 더 많은 인스턴스로 확장하거나 더 큰 인스턴스 크기로 확장하는 것이 좋을 수 있습니다.

알아야 할 사항
다음은 ENA Express와 SRD에 대해 알아야 할 몇 가지 사항입니다.

액세스 – 여기서는 Management Console을 사용하여 ENA Express를 활성화하고 테스트했지만 CLI, API, CloudFormation 및 CDK 지원도 제공됩니다.

폴백 – TCP 또는 UDP 패킷이 SRD를 통한 전송에 적합하지 않은 경우 일반적인 방식으로 간단히 전송됩니다.

UDP – SRD는 여러 네트워크 경로를 활용하여 해당 경로 전체에 패킷을 “스프레이”합니다. 이것은 패킷이 대체로 순서에 따라 도착할 것으로 기대하는 애플리케이션에는 문제가 될 수 있겠지만 ENA Express는 UDP 패킷을 전달하기 전에 순서를 다시 정리하여 애플리케이션의 부담을 덜어줍니다. UDP를 통해 자체 신뢰성 계층을 구축했거나 애플리케이션에 패킷이 순서대로 도착할 필요가 없는 경우 UDP가 아닌 TCP에만 ENA Express를 활성화할 수 있습니다.

인스턴스 유형 및 크기 – 이번 출시에는 16xlarge 크기의 c6gn 인스턴스에 대한 지원이 제공되며 추가 인스턴스 패밀리 및 크기에 대한 작업도 진행 중입니다.

리소스 활용 – 위에서 암시했듯이 ENA Express는 일부 Nitro Card 리소스를 사용하여 패킷을 처리합니다. 또한 이 프로세싱은 처리된 패킷당 수 마이크로초의 지연 시간을 추가하며, 특정 인스턴스가 초당 처리할 수 있는 최대 패킷 수에 작지만 측정 가능한 수준의 영향을 미칩니다. 패킷 속도가 높고 패킷 크기가 작은 상황에서는 ENA Express가 적절하지 않을 수 있습니다. 다른 모든 경우에는 간단히 SRD를 활성화하여 더 높은 흐름당 대역폭과 일관된 지연 시간을 이용할 수 있습니다.

가격 – ENA Express 이용에는 추가 요금이 부과되지 않습니다.

리전 – ENA Express는 모든 상용 AWS 리전에서 이용 가능합니다.

SRD에 대한 모든 것
SRD에 대해 긴 블로그 게시물을 작성할 수 있지만 제가 다른 분들보다 한발 늦었네요! 다음은 자세한 내용을 알아보는 데 도움이 되는 몇 가지 유용한 리소스입니다.

A Cloud-Optimized Transport for Elastic and Scalable HPC(탄력적이고 확장 가능한 HPC를 위한 클라우드 최적화 전송) – 이 백서에서는 TCP 기반 네트워크에서 HPC 트래픽을 실행하려고 할 때 발생하는 문제를 검토하고 변동성(지연 시간 이상치)이 확장 효율성에 중대한 영향을 미칠 수 있음을 설명하며 SRD에 대한 간략한 개요를 포함합니다.

Scalable Reliable Datagram(SRD)은 대규모 데이터 센터에 최적화되어 여러 경로에 걸친 로드 밸런싱을 제공하고 패킷 삭제 또는 링크 장애로부터 빠른 복구를 제공합니다. SRD는 일반 이더넷 스위치의 표준 ECMP 기능을 활용하여 제한적 기능을 우회합니다. 발신자는 패킷 캡슐화를 조작하여 ECMP 경로 선택을 제어합니다.

이 백서에는 흥미로운 세부 내용이 많이 있으니 꼭 읽어보시기 바랍니다!

In the Search for Performance, There’s More Than One Way to Build a Network(성능 향상을 위한 네트워크를 구축하는 방법은 여러 가지가 있습니다) – 이 2021년 블로그 게시물은 Elastic Fabric Adapter를 구축하기로 한 AWS의 결정을 살펴보고 패킷 손실이 전체 애플리케이션 성능에 미치는 영향을 보여주는 몇 가지 중요한 데이터(멋진 그래픽도 제공)를 포함합니다. SRD의 흥미로운 점 중 하나는 송신기와 수신기 간에 존재하는 여러 네트워크 경로의 가용성과 성능을 추적하고, 가능한 한 많은 대역폭을 활용하고 패킷 손실 시 신속하게 복구하기 위해 한 번에 최대 64개 경로에 패킷을 분산 시킨다는 것입니다.

Jeff;