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.
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:
-
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'
-
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'
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.
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
Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.
-
No painel de navegação à esquerda, escolha Instances (Instâncias).
-
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.
-
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
Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.
-
No painel de navegação, selecione Network Interfaces (Interfaces de rede).
-
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.
-
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
Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.
-
No painel de navegação à esquerda, escolha Instances (Instâncias).
-
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.
-
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
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
Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.
-
No painel de navegação, selecione Network Interfaces (Interfaces de rede).
-
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.
-
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.
Se a interface de rede selecionada não estiver anexada a uma instância, essa ação não aparecerá no menu.
-
Para usar o ENA Express, marque a caixa de seleção Enable (Habilitar).
-
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).
-
Para salvar suas configurações, escolha Save (Salvar).
Gerenciar o ENA Express na lista de instâncias
Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.
-
No painel de navegação à esquerda, escolha Instances (Instâncias).
-
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.
-
Selecione a Network interface (Interface de rede) a ser configurada para sua instância.
-
Escolha Manage ENA Express (Gerenciar o ENA Express) no menu Action (Ação) no canto superior direito da página.
-
Para configurar o ENA Express para uma interface de rede anexada à instância, selecione-a na lista Network interface (Interface de rede).
-
Para usar o ENA Express para o anexo de interface de rede selecionado, marque a caixa de seleção Enable (Habilitar).
-
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).
-
Para salvar suas configurações, escolha Save (Salvar).
Configurar o ENA Express ao anexar uma interface de rede a uma instância do EC2
Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.
-
No painel de navegação, selecione Network Interfaces (Interfaces de rede).
-
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.
-
Selecione a Instance (Instância) à qual você vai anexar.
-
Para usar o ENA Express depois de anexar a interface de rede à instância, marque a caixa de seleção Enable (Habilitar).
-
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).
-
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
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
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.