Aprimoramento do desempenho da rede com o ENA Express nas instâncias do EC2 - Amazon Elastic Compute Cloud

Aprimoramento do desempenho da rede com o ENA Express nas instâncias do EC2

O ENA Express conta com a tecnologia AWS Scalable Reliable Datagram (SRD). SRD é um protocolo de transporte de rede de alta performance que usa roteamento dinâmico para aumentar o throughput e minimizar a latência final. Com o ENA Express, é possível estabelecer a comunicação entre duas instâncias do EC2 na mesma zona de disponibilidade.

Benefícios do ENA Express
  • Aumenta a largura de banda máxima que um único fluxo pode usar de 5 Gbps para 25 Gbps na sub-rede, até o limite da instância agregado.

  • Reduz a latência final do tráfego de rede entre instâncias do EC2, especialmente durante períodos de grande carga na rede.

  • Detecta e evita caminhos de rede congestionados.

  • Executa algumas tarefas diretamente na camada da rede, como a reordenação de pacotes na extremidade receptora e a maioria das retransmissões necessárias. Isso libera a camada de aplicação para outros trabalhos.

nota

Se a aplicação enviar ou receber um grande volume de pacotes por segundo e precisar otimizar a latência a maioria das vezes, especialmente durante períodos em que não há congestionamento na rede, o Redes avançadas pode ser mais adequado para a sua rede.

Durante períodos em que o tráfego de rede é leve, você pode notar um ligeiro aumento na latência de pacote (dezenas de microssegundos) quando o pacote usa o ENA Express. Durante esses períodos, as aplicações que priorizam características específicas de performance de rede podem se beneficiar do ENA Express da seguinte forma:

  • Os processos podem se beneficiar do aumento da largura de banda máxima de um único fluxo de 5 Gbps para 25 Gbps na mesma zona de disponibilidade, até o limite da instância agregada. Por exemplo, se um tipo de instância específico for compatível com até 12,5 Gbps, a largura de banda de um único fluxo também será limitada a 12,5 Gbps.

  • Processos mais longos devem ter uma latência de cauda reduzida durante períodos de congestionamento da rede.

  • Os processos podem se beneficiar de uma distribuição mais suave e padrão dos tempos de resposta da rede.

Pré-requisitos para instâncias Linux

Para garantir que o ENA Express possa operar de forma eficaz, atualize as configurações da instância da maneira apresentada a seguir.

  • Se sua instância usar frames jumbo, execute o comando a seguir para definir a unidade máxima de transmissão (MTU) como 8900.

    [ec2-user ~]$ sudo ip link set dev eth0 mtu 8900
  • Aumente o tamanho do anel do receptor (Rx), da seguinte forma:

    [ec2-user ~]$ ethtool -G device rx 8192
  • Para maximizar a largura de banda do ENA Express, configure seus limites de fila TCP da seguinte forma:

    1. Defina o limite de fila pequena do TCP para 1 MB ou mais. Isso aumenta a quantidade de dados enfileirados para transmissão em um soquete.

      sudo sh -c 'echo 1048576 > /proc/sys/net/ipv4/tcp_limit_output_bytes'
    2. Desabilite os limites da fila de bytes no enésimo dispositivo se eles estiverem habilitados para sua distribuição Linux. Fazer isso aumenta os dados enfileirados para transmissão para a fila do dispositivo.

      sudo sh -c 'for txq in /sys/class/net/eth0/queues/tx-*; do echo max > ${txq}/byte_queue_limits/limit_min; done'
      nota

      O driver do ENA para a distribuição Amazon Linux desabilita os limites da fila de bytes por padrão.

Como o ENA Express funciona

O ENA Express conta com a tecnologia AWS Scalable Reliable Datagram (SRD). O mecanismo distribui pacotes para cada fluxo de rede em diferentes caminhos de rede da AWS e ajusta dinamicamente a distribuição quando detecta sinais de congestionamento. Ele também gerencia a reordenação de pacotes na extremidade receptora.

Para garantir que o ENA Express possa gerenciar o tráfego de rede conforme previsto, as instâncias de envio e recebimento e a comunicação entre elas devem atender a todos os seguintes requisitos:

  • Os tipos de instâncias de envio e de recebimento são compatíveis. Para obter mais informações, consulte a tabela Tipos de instâncias compatíveis com o ENA Express.

  • As instâncias de envio e de recebimento devem ter o ENA Express configurado. Se houver diferenças na configuração, você pode se deparar com situações em que o tráfego use a transmissão ENA padrão. O cenário a seguir mostra o que pode acontecer.

    Cenário: diferenças na configuração

    Instância ENA Express habilitado O UDP usa o ENA Express
    Instância 1 Sim Sim
    Instância 2 Sim Não

    Nesse caso, o tráfego TCP entre as duas instâncias pode usar o ENA Express, pois ambas as instâncias o habilitaram. No entanto, como uma das instâncias não usa o ENA Express para tráfego UDP, a comunicação entre essas duas instâncias por UDP usa a transmissão ENA padrão.

  • As instâncias de envio e recebimento devem ser executadas na mesma zona de disponibilidade.

  • O caminho da rede entre as instâncias não deve incluir caixas de middleware. No momento, o ENA Express não é compatível com caixas de middleware.

  • (Somente para instâncias do Linux) Para utilizar todo o potencial da largura de banda, use a versão 2.2.9 ou versões posteriores do driver.

  • (Somente para instâncias do Linux) Para produzir métricas, use a versão 2.8 ou versões posteriores do driver.

Se algum requisito não for atendido, as instâncias usarão o protocolo TCP/UDP padrão, mas sem o SRD para comunicação.

Para garantir que o driver de rede da instância esteja configurado para performance ideal, analise as melhores práticas recomendadas para drivers do ENA. Essas práticas recomendadas também se aplicam ao ENA Express. Para obter mais informações, consulte ENA Linux Driver Best Practices and Performance Optimization Guide (Guia de Práticas Recomendadas e Otimização de Performance do Driver) no GitHub.

nota

O Amazon EC2 se refere à relação entre uma instância e uma interface de rede que está anexada a ela como um anexo. As configurações do ENA Express se aplicam ao anexo. Se a interface de rede for separada da instância, o anexo deixará de existir e as configurações do ENA Express aplicadas a ele não estarão mais em vigor. O mesmo acontece quando uma instância é encerrada, mesmo que a interface de rede permaneça.

Tipos de instâncias compatíveis com o ENA Express

As guias a seguir mostram os tipos de instância compatíveis com o ENA Express.

General purpose
Tipo de instância Arquitetura
m6a.12xlarge x86_64
m6a.16xlarge x86_64
m6a.24xlarge x86_64
m6a.32xlarge x86_64
m6a.48xlarge x86_64
m6a.metal x86_64
m6i.8xlarge x86_64
m6i.12xlarge x86_64
m6i.16xlarge x86_64
m6i.24xlarge x86_64
m6i.32xlarge x86_64
m6i.metal x86_64
m6id.8xlarge x86_64
m6id.12xlarge x86_64
m6id.16xlarge x86_64
m6id.24xlarge x86_64
m6id.32xlarge x86_64
m6id.metal x86_64
m7g.12xlarge arm64
m7g.16xlarge arm64
m7g.metal arm64
m7gd.12xlarge arm64
m7gd.16xlarge arm64
m7gd.metal arm64
m7i.12xlarge x86_64
m7i.16xlarge x86_64
m7i.24xlarge x86_64
m7i.48xlarge x86_64
m7i.metal-24xl x86_64
m7i.metal-48xl x86_64
Compute optimized
Tipo de instância Arquitetura
c6a.12xlarge x86_64
c6a.16xlarge x86_64
c6a.24xlarge x86_64
c6a.32xlarge x86_64
c6a.48xlarge x86_64
c6a.metal x86_64
c6gn.16xlarge arm64
c6i.8xlarge x86_64
c6i.12xlarge x86_64
c6i.16xlarge x86_64
c6i.24xlarge x86_64
c6i.32xlarge x86_64
c6i.metal x86_64
c6id.8xlarge x86_64
c6id.12xlarge x86_64
c6id.16xlarge x86_64
c6id.24xlarge x86_64
c6id.32xlarge x86_64
c6id.metal x86_64
c7g.12xlarge arm64
c7g.16xlarge arm64
c7g.metal arm64
c7gd.12xlarge arm64
c7gd.16xlarge arm64
c7gd.metal arm64
c7i.12xlarge x86_64
c7i.16xlarge x86_64
c7i.24xlarge x86_64
c7i.48xlarge x86_64
c7i.metal-24xl x86_64
c7i.metal-48xl x86_64
Memory optimized
Tipo de instância Arquitetura
r6a.12xlarge x86_64
r6a.16xlarge x86_64
r6a.24xlarge x86_64
r6a.32xlarge x86_64
r6a.48xlarge x86_64
r6a.metal x86_64
r6i.8xlarge x86_64
r6i.12xlarge x86_64
r6i.16xlarge x86_64
r6i.24xlarge x86_64
r6i.32xlarge x86_64
r6i.metal x86_64
r6id.8xlarge x86_64
r6id.12xlarge x86_64
r6id.16xlarge x86_64
r6id.24xlarge x86_64
r6id.32xlarge x86_64
r6id.metal x86_64
r7g.12xlarge arm64
r7g.16xlarge arm64
r7g.metal arm64
r7gd.12xlarge arm64
r7gd.16xlarge arm64
r7gd.metal arm64
r7i.12xlarge x86_64
r7i.16xlarge x86_64
r7i.24xlarge x86_64
r7i.48xlarge x86_64
r7i.metal-24xl x86_64
r7i.metal-48xl x86_64
u7i-12tb.224xlarge x86_64
u7in-16tb.224xlarge x86_64
u7in-24tb.224xlarge x86_64
u7in-32tb.224xlarge x86_64
x2idn.16xlarge x86_64
x2idn.24xlarge x86_64
x2idn.32xlarge x86_64
x2idn.metal x86_64
x2iedn.8xlarge x86_64
x2iedn.16xlarge x86_64
x2iedn.24xlarge x86_64
x2iedn.32xlarge x86_64
x2iedn.metal x86_64
Accelerated computing
Tipo de instância Arquitetura
g6.48xlarge x86_64
Storage optimized
Tipo de instância Arquitetura
i4g.4xlarge arm64
i4g.8xlarge arm64
i4g.16xlarge arm64
i4i.8xlarge x86_64
i4i.12xlarge x86_64
i4i.16xlarge x86_64
i4i.24xlarge x86_64
i4i.32xlarge x86_64
i4i.metal x86_64
im4gn.4xlarge arm64
im4gn.8xlarge arm64
im4gn.16xlarge arm64

Listar e visualizar as configurações do ENA Express

Esta seção aborda como listar e visualizar as informações do ENA Express no AWS Management Console ou na AWS CLI. Para obter mais informações, escolha a guia que corresponda ao método que você usará.

Console

Essa guia explica como encontrar informações sobre as configurações atuais do ENA Express e como visualizar os tipos de instância compatíveis no AWS Management Console.

Visualizar os tipos de instância compatíveis
  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação à esquerda, escolha Instances (Instâncias).

  3. Selecione um tipo de instância para ver os detalhes dessa instância. Você pode escolher o link Instance type (Tipo de instância) para abrir a página de detalhes ou pode marcar a caixa de seleção no lado esquerdo da lista para ver os detalhes no painel de detalhes na parte inferior da página.

  4. Na guia Networking (Rede) ou nessa seção na página de detalhes, ENA Express support (Compatibilidade do ENA Express) mostra um valor verdadeiro ou falso para indicar se o tipo de instância é compatível com esse recurso.

Visualizar configurações na lista de interfaces de rede
  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, selecione Network Interfaces (Interfaces de rede).

  3. Selecione uma interface de rede para ver os detalhes dessa instância. Você pode escolher o link Network interface ID (ID da interface de rede) para abrir a página de detalhes ou pode marcar a caixa de seleção no lado esquerdo da lista para ver os detalhes no painel de detalhes na parte inferior da página.

  4. Na seção Network interface attachment (Anexo da interface de rede) na guia Details (Detalhes) ou na página de detalhes, revise as configurações do ENA Express e do UDP do ENA Express.

Visualizar configurações em instâncias
  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação à esquerda, escolha Instances (Instâncias).

  3. Selecione uma instância para ver os detalhes dessa instância. Você pode escolher o link Instance ID (ID da instância) para abrir a página de detalhes ou pode marcar a caixa de seleção no lado esquerdo da lista para ver os detalhes no painel de detalhes na parte inferior da página.

  4. Na seção Network interfaces (Interfaces de rede) na guia Networking (Rede), role para a direita para revisar as configurações do ENA Express e do UDP do ENA Express.

AWS CLI

Essa guia explica como encontrar informações sobre as configurações atuais do ENA Express e como visualizar os tipos de instância compatíveis no AWS CLI.

Descrever tipos de instância

Para obter informações sobre as configurações de um tipo de instância específico, execute o comando describe-instance-types na AWS CLI e substitua o tipo de instância da seguinte forma:

[ec2-user ~]$ aws ec2 describe-instance-types --instance-types m6i.metal { "InstanceTypes": [ { "InstanceType": "m6i.metal", "CurrentGeneration": true, ... }, "NetworkInfo": { ... "EnaSrdSupported": true }, ... } ] }
Descrever instâncias

Para obter informações sobre a configuração do ENA Express para instâncias especificadas, execute o comando describe-instances na AWS CLI conforme mostrado a seguir. Esse exemplo de comando retorna uma lista de configurações do ENA Express para as interfaces de rede associadas a cada uma das instâncias em execução especificadas pelo parâmetro --instance-ids.

[ec2-user ~]$ aws ec2 describe-instances --instance-ids i-1234567890abcdef0 i-0598c7d356eba48d7 --query 'Reservations[*].Instances[*].[InstanceId, NetworkInterfaces[*].Attachment.EnaSrdSpecification]'[ [ [ "i-1234567890abcdef0", [ { "EnaSrdEnabled": true, "EnaSrdUdpSpecification": { "EnaSrdUdpEnabled": false } } ] ] ], [ [ "i-0598c7d356eba48d7", [ { "EnaSrdEnabled": true, "EnaSrdUdpSpecification": { "EnaSrdUdpEnabled": false } } ] ] ] ]
Describe network interfaces

Para obter informações sobre as configurações do ENA Express para uma interface de rede, execute o comando describe-network-interfaces na AWS CLI da seguinte forma:

[ec2-user ~]$ aws ec2 describe-network-interfaces { "NetworkInterfaces": [ { "Association": { ....IPs, DNS... }, "Attachment": { "AttachTime": "2022-11-17T09:04:28+00:00", "AttachmentId": "eni-attach-0ab1c23456d78e9f0", "DeleteOnTermination": true, "DeviceIndex": 0, "NetworkCardIndex": 0, "InstanceId": "i-1234567890abcdef0", "InstanceOwnerId": "111122223333", "Status": "attached", "EnaSrdSpecification": { "EnaSrdEnabled": true, "EnaSrdUdpSpecification": { "EnaSrdUdpEnabled": true } } }, ... "NetworkInterfaceId": "eni-1234567890abcdef0", "OwnerId": "111122223333", ... } ] }
PowerShell

Esta guia explica como encontrar informações sobre as configurações atuais do ENA Express e como visualizar os tipos de instância compatíveis usando o PowerShell.

Descrever tipos de instância

Para obter informações sobre configurações de tipo de instância para uma instância específica, execute o comando Get-EC2InstanceType Cmdlet no Tools for PowerShell e substitua o tipo de instância da seguinte forma:

PS C:\> Get-EC2InstanceType -InstanceType m6i.metal | ` Select-Object ` InstanceType, CurrentGeneration, @{Name = 'EnaSrdSupported'; Expression = { $_.NetworkInfo.EnaSrdSupported } } | ` Format-List InstanceType : m6i.metal CurrentGeneration : True EnaSrdSupported : True

Se o ENA Express estiver habilitado um valor de True será devolvido.

Describe network interfaces

Para obter informações sobre as configurações do ENA Express para uma interface de rede, execute o comando Get-EC2NetworkInterface Cmdlet com o Tools for PowerShell da seguinte forma:

PS C:\> Get-EC2NetworkInterface -NetworkInterfaceId eni-0d1234e5f6a78901b | ` Select-Object ` Association, NetworkInterfaceId, OwnerId, @{Name = 'AttachTime'; Expression = { $_.Attachment.AttachTime } }, @{Name = 'AttachmentId'; Expression = { $_.Attachment.AttachmentId } }, @{Name = 'DeleteOnTermination'; Expression = { $_.Attachment.DeleteOnTermination } }, @{Name = 'NetworkCardIndex'; Expression = { $_.Attachment.NetworkCardIndex } }, @{Name = 'InstanceId'; Expression = { $_.Attachment.InstanceId } }, @{Name = 'InstanceOwnerId'; Expression = { $_.Attachment.InstanceOwnerId } }, @{Name = 'Status'; Expression = { $_.Attachment.Status } }, @{Name = 'EnaSrdEnabled'; Expression = { $_.Attachment.EnaSrdSpecification.EnaSrdEnabled } }, @{Name = 'EnaSrdUdpEnabled'; Expression = { $_.Attachment.EnaSrdSpecification.EnaSrdUdpSpecification.EnaSrdUdpEnabled } } Association : NetworkInterfaceId : eni-0d1234e5f6a78901b OwnerId : 111122223333 AttachTime : 6/11/2022 1:13:11 AM AttachmentId : eni-attach-0d1234e5f6a78901b DeleteOnTermination : True NetworkCardIndex : 0 InstanceId : i-0d1234e5f6a78901b InstanceOwnerId : 111122223333 Status : attached EnaSrdEnabled : True EnaSrdUdpEnabled : False

Definir as configurações do ENA Express

Você pode configurar o ENA Express para os tipos de instância do EC2 compatíveis sem precisar instalar qualquer software adicional.

Esta seção aborda como configurar o ENA Express no AWS Management Console ou na AWS CLI. Para obter mais informações, escolha a guia que corresponda ao método que você usará.

Console

Essa guia explica como gerenciar as configurações do ENA Express para interfaces de rede anexadas a uma instância.

Gerenciar o ENA Express na lista de interfaces de rede
  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, selecione Network Interfaces (Interfaces de rede).

  3. Selecione uma interface de rede que é anexada a uma instância. Você pode escolher o link Network interface ID (ID da interface de rede) para abrir a página de detalhes ou pode marcar a caixa de seleção no lado esquerdo da lista.

  4. Escolha Manage ENA Express (Gerenciar o ENA Express) no menu Action (Ação) no canto superior direito da página. Isso abre a caixa de diálogo Manage ENA Express (Gerenciar o ENA Express), com o ID da interface de rede selecionado e as configurações atuais exibidas.

    nota

    Se a interface de rede selecionada não estiver anexada a uma instância, essa ação não aparecerá no menu.

  5. Para usar o ENA Express, marque a caixa de seleção Enable (Habilitar).

  6. Quando o ENA Express está habilitado, você pode definir as configurações de UDP. Para usar o UDP do ENA Express, marque a caixa de seleção Enable (Habilitar).

  7. Para salvar suas configurações, escolha Save (Salvar).

Gerenciar o ENA Express na lista de instâncias
  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação à esquerda, escolha Instances (Instâncias).

  3. Selecione a instância que você quer gerenciar. Você pode escolher o link Instance ID (ID da instância) para abrir a página de detalhes ou pode marcar a caixa de seleção no lado esquerdo da lista.

  4. Selecione a Network interface (Interface de rede) a ser configurada para sua instância.

  5. Escolha Manage ENA Express (Gerenciar o ENA Express) no menu Action (Ação) no canto superior direito da página.

  6. Para configurar o ENA Express para uma interface de rede anexada à instância, selecione-a na lista Network interface (Interface de rede).

  7. Para usar o ENA Express para o anexo de interface de rede selecionado, marque a caixa de seleção Enable (Habilitar).

  8. Quando o ENA Express está habilitado, você pode definir as configurações de UDP. Para usar o UDP do ENA Express, marque a caixa de seleção Enable (Habilitar).

  9. Para salvar suas configurações, escolha Save (Salvar).

Configurar o ENA Express ao anexar uma interface de rede a uma instância do EC2
  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, selecione Network Interfaces (Interfaces de rede).

  3. Selecione uma interface que não esteja anexada a uma instância (o Status é Available [Disponível]). Você pode escolher o link Network interface ID (ID da interface de rede) para abrir a página de detalhes ou pode marcar a caixa de seleção no lado esquerdo da lista.

  4. Selecione a Instance (Instância) à qual você vai anexar.

  5. Para usar o ENA Express depois de anexar a interface de rede à instância, marque a caixa de seleção Enable (Habilitar).

  6. Quando o ENA Express está habilitado, você pode definir as configurações de UDP. Para usar o UDP do ENA Express, marque a caixa de seleção Enable (Habilitar).

  7. Para anexar a interface de rede à instância e salvar as configurações do ENA Express, escolha Attach (Anexar).

AWS CLI

Essa guia explica como definir as configurações do ENA Express na AWS CLI.

Configurar o ENA Express ao anexar uma interface de rede

Para configurar o ENA Express ao anexar uma interface de rede a uma instância, execute o comando attach-network-interface na AWS CLI, conforme mostrado nos seguintes exemplos:

Exemplo 1: usar o ENA Express para tráfego TCP, mas não para tráfego UDP

Neste exemplo, configuramos EnaSrdEnabled como true (verdadeiro) e permitimos que EnaSrdUdpEnabled assuma o padrão false (falso).

[ec2-user ~]$ aws ec2 attach-network-interface --network-interface-id eni-0123f4567890a1b23 --instance-id i-0f1a234b5cd67e890 --device-index 1 --ena-srd-specification 'EnaSrdEnabled=true' { "AttachmentId": "eni-attach-012c3d45e678f9012" }

Exemplo 2: usar o ENA Express para tráfego TCP e tráfego UDP

Neste exemplo, configuramos EnaSrdEnabled e EnaSrdUdpEnabled como true (verdadeiros).

[ec2-user ~]$ aws ec2 attach-network-interface --network-interface-id eni-0123f4567890a1b23 --instance-id i-0f1a234b5cd67e890 --device-index 1 --ena-srd-specification 'EnaSrdEnabled=true,EnaSrdUdpSpecification={EnaSrdUdpEnabled=true}' { "AttachmentId": "eni-attach-012c3d45e678f9012" }
Atualizar as configurações do ENA Express para o anexo da interface de rede

Para atualizar as configurações do ENA Express para uma interface de rede anexada a uma instância, execute o comando modify-network-interface-attribute na AWS CLI, conforme mostrado nos seguintes exemplos:

Exemplo 1: usar o ENA Express para tráfego TCP, mas não para tráfego UDP

Neste exemplo, configuramos EnaSrdEnabled como true (verdadeiro) e permitimos que EnaSrdUdpEnabled assuma o padrão de false (falso) se nunca tiver sido definido antes.

[ec2-user ~]$ aws ec2 modify-network-interface-attribute --network-interface-id eni-0123f4567890a1b23 --ena-srd-specification 'EnaSrdEnabled=true'

Exemplo 2: usar o ENA Express para tráfego TCP e tráfego UDP

Neste exemplo, configuramos EnaSrdEnabled e EnaSrdUdpEnabled como true (verdadeiros).

[ec2-user ~]$ aws ec2 modify-network-interface-attribute --network-interface-id eni-0123f4567890a1b23 --ena-srd-specification 'EnaSrdEnabled=true,EnaSrdUdpSpecification={EnaSrdUdpEnabled=true}'

Exemplo 3: parar de usar o ENA Express para tráfego UDP

Neste exemplo, configuramos EnaSrdUdpEnabled como false (falso).

[ec2-user ~]$ aws ec2 modify-network-interface-attribute --network-interface-id eni-0123f4567890a1b23 --ena-srd-specification 'EnaSrdUdpSpecification={EnaSrdUdpEnabled=false}'
PowerShell

Esta guia explica como definir as configurações do ENA Express usando o PowerShell.

Configurar o ENA Express ao anexar uma interface de rede

Para definir as configurações do ENA Express para uma interface de rede, execute o comando Add-EC2NetworkInterface Cmdlet com o Tools for PowerShell conforme mostrado nos seguintes exemplos:

Exemplo 1: usar o ENA Express para tráfego TCP, mas não para tráfego UDP

Neste exemplo, configuramos EnaSrdEnabled como true (verdadeiro) e permitimos que EnaSrdUdpEnabled assuma o padrão false (falso).

PS C:\> Add-EC2NetworkInterface ` -NetworkInterfaceId eni-0123f4567890a1b23 ` -InstanceId i-0f1a234b5cd67e890 ` -DeviceIndex 1 ` -EnaSrdSpecification_EnaSrdEnabled $true eni-attach-012c3d45e678f9012

Exemplo 2: usar o ENA Express para tráfego TCP e tráfego UDP

Neste exemplo, configuramos EnaSrdEnabled e EnaSrdUdpEnabled como true (verdadeiros).

PS C:\> Add-EC2NetworkInterface ` -NetworkInterfaceId eni-0123f4567890a1b23 ` -InstanceId i-0f1a234b5cd67e890 ` -DeviceIndex 1 ` -EnaSrdSpecification_EnaSrdEnabled $true ` -EnaSrdUdpSpecification_EnaSrdUdpEnabled $true eni-attach-012c3d45e678f9012
Atualizar as configurações do ENA Express para o anexo da interface de rede

Para atualizar as configurações do ENA Express para uma interface de rede anexada a uma instância, execute o comando Add-EC2NetworkInterface Cmdlet no Tools for PowerShell conforme mostrado nos seguintes exemplos:

Exemplo 1: usar o ENA Express para tráfego TCP, mas não para tráfego UDP

Neste exemplo, configuramos EnaSrdEnabled como true (verdadeiro) e permitimos que EnaSrdUdpEnabled assuma o padrão de false (falso) se nunca tiver sido definido antes.

PS C:\> Edit-EC2NetworkInterfaceAttribute ` -NetworkInterfaceId eni-0123f4567890a1b23 ` -EnaSrdSpecification_EnaSrdEnabled $true ; Get-EC2NetworkInterface -NetworkInterfaceId eni-0123f4567890a1b23 | ` Select-Object ` NetworkInterfaceId, @{Name = 'EnaSrdEnabled'; Expression = { $_.Attachment.EnaSrdSpecification.EnaSrdEnabled }}, @{Name = 'EnaSrdUdpEnabled'; Expression = { $_.Attachment.EnaSrdSpecification.EnaSrdUdpSpecification.EnaSrdUdpEnabled }} | ` Format-List NetworkInterfaceId : eni-0123f4567890a1b23 EnaSrdEnabled : True EnaSrdUdpEnabled : False

Exemplo 2: usar o ENA Express para tráfego TCP e tráfego UDP

Neste exemplo, configuramos EnaSrdEnabled e EnaSrdUdpEnabled como true (verdadeiros).

PS C:\> Edit-EC2NetworkInterfaceAttribute ` -NetworkInterfaceId eni-0123f4567890a1b23 ` -EnaSrdSpecification_EnaSrdEnabled $true ` -EnaSrdSpecification_EnaSrdUdpSpecification_EnaSrdUdpEnabled $true ; Get-EC2NetworkInterface -NetworkInterfaceId eni-0123f4567890a1b23 | ` Select-Object ` NetworkInterfaceId, @{Name = 'EnaSrdEnabled'; Expression = { $_.Attachment.EnaSrdSpecification.EnaSrdEnabled }}, @{Name = 'EnaSrdUdpEnabled'; Expression = { $_.Attachment.EnaSrdSpecification.EnaSrdUdpSpecification.EnaSrdUdpEnabled }} | ` Format-List NetworkInterfaceId : eni-0123f4567890a1b23 EnaSrdEnabled : True EnaSrdUdpEnabled : True

Exemplo 3: parar de usar o ENA Express para tráfego UDP

Neste exemplo, configuramos EnaSrdUdpEnabled como false (falso).

PS C:\> Edit-EC2NetworkInterfaceAttribute ` -NetworkInterfaceId eni-0123f4567890a1b23 ` -EnaSrdSpecification_EnaSrdUdpSpecification_EnaSrdUdpEnabled $false ; Get-EC2NetworkInterface -NetworkInterfaceId eni-0123f4567890a1b23 | ` Select-Object ` NetworkInterfaceId, @{Name = 'EnaSrdEnabled'; Expression = { $_.Attachment.EnaSrdSpecification.EnaSrdEnabled }}, @{Name = 'EnaSrdUdpEnabled'; Expression = { $_.Attachment.EnaSrdSpecification.EnaSrdUdpSpecification.EnaSrdUdpEnabled }} | ` Format-List NetworkInterfaceId : eni-0123f4567890a1b23 EnaSrdEnabled : True EnaSrdUdpEnabled : False

Configuração do ENA Express na inicialização

Você pode usar um dos métodos a seguir para configurar o ENA Express para uma AMI ao iniciar uma instância usando o AWS Management Console.

  • Você pode configurar o ENA Express para a AMI ao iniciar uma instância com o assistente de inicialização de instâncias. Para obter detalhes sobre a configuração, consulte Configuração avançada de rede nas Configurações de rede para o assistente de inicialização de instâncias.

  • Você pode configurar o ENA Express para sua AMI ao usar um modelo de inicialização. Para obter mais informações sobre a configuração do modelo de inicialização, consulte Configuração avançada de rede no Configurações de rede para modelos de inicialização.

Monitorar a performance do ENA Express

Depois de habilitar o ENA Express para as anexos de interface de rede na instância de envio e na instância de recebimento, você pode usar as métricas do ENA Express para ajudar a garantir que as instâncias aproveitem ao máximo as melhorias de performance que a tecnologia SRD oferece.

Para ver uma lista de métricas filtradas para o ENA Express, execute o seguinte comando ethtool para a interface de rede (mostrado aqui como eth0):

[ec2-user ~]$ ethtool -S eth0 | grep ena_srd NIC statistics: ena_srd_mode: 0 ena_srd_tx_pkts: 0 ena_srd_eligible_tx_pkts: 0 ena_srd_rx_pkts: 0 ena_srd_resource_utilization: 0
Verificar as configurações do ENA Express para uma instância

Para verificar as configurações atuais do ENA Express para o anexo de interface de rede na instância, execute o comando ethtool para listar as métricas do ENA Express e anote o valor da métrica ena_srd_mode. Os valores são os seguintes:

  • 0 = ENA Express desativado, UDP desativado

  • 1 = ENA Express ativado, UDP desativado

  • 2 = ENA Express desativado, UDP ativado

    nota

    Isso só acontece quando o ENA Express foi originalmente habilitado e o UDP foi configurado para usá-lo. O valor anterior é retido para tráfego UDP.

  • 3 = ENA Express ativado, UDP ativado

Depois de habilitar o ENA Express para a conexão da interface de rede em uma instância, a instância de envio inicia a comunicação com a instância de recebimento e o SRD detecta se o ENA Express está operando tanto na instância de envio quanto na instância de recebimento. Se o ENA Express estiver operando, a comunicação poderá usar transmissão SRD. Se o ENA Express não estiver operando, a comunicação retornará para a transmissão por ENA padrão. Para confirmar se a transmissão de pacotes está usando SRD, você pode comparar o número de pacotes elegíveis (métrica ena_srd_eligible_tx_pkts) com o número de pacotes por SRD transmitidos (métrica ena_srd_tx_pkts) durante um determinado período.

Você pode monitorar a utilização do recursos SRD usando a métrica ena_srd_resource_utilization. Se a instância estiver prestes a esgotar seus recursos de SRD, você saberá que está na hora de aumentar a escala da instância horizontalmente.

Para obter mais informações sobre as métricas do ENA Express, consulte Métricas do ENA Express.

Ajuste do desempenho para as configurações do ENA Express

Para verificar a configuração da sua instância Linux a fim de extrair a performance ideal do ENA Express, é possível executar o seguinte script que está disponível no repositório do Amazon GitHub:

https://github.com/amzn/amzn-ec2-ena-utilities/blob/main/ena-express/check-ena-express-settings.sh

O script executa uma série de testes e sugere as alterações de configuração recomendadas e necessárias.