

# Redes mejoradas en instancias de Amazon EC2
<a name="enhanced-networking"></a>

Las redes mejoradas utilizan la virtualización de E/S de raíz única (SR-IOV) para ofrecer funcionalidades de redes de alto rendimiento en los tipos de instancias soportados. SR-IOV es un método de virtualización de dispositivos que ofrece un mayor rendimiento de E/S y una menor utilización de CPU en comparación con las interfaces de red virtualizadas tradicionales. Las redes mejoradas proporcionan un mayor ancho de banda, un rendimiento superior de paquetes por segundo (PPS) y menores latencias entre instancias de manera constante. El uso de las redes mejoradas no supone ningún cargo adicional.

Para obtener más información sobre la velocidad de red admitida para cada tipo de instancia, consulte los [Tipos de instancia de Amazon EC2](https://aws.amazon.com/ec2/instance-types/).

Puede habilitar redes mejoradas mediante uno de los siguientes mecanismos:

**Elastic Network Adapter (ENA)**  
Elastic Network Adapter (ENA) admite velocidades de red de hasta 100 Gbps en los tipos de instancias admitidos.  
Todas las [instancias basadas en Nitro](instance-types.md#instance-hypervisor-type) usan ENA para obtener redes mejoradas. Además, las siguientes instancias basadas en Xen admiten ENA: H1, I3, G3, `m4.16xlarge`, P2, P3, P3dn y R4.  
Para obtener más información, consulte [Habilitar redes mejoradas con ENA en las instancias de EC2](enhanced-networking-ena.md).

**Interfaz de Intel 82599 Virtual Function (VF)**  
La interfaz de Intel 82599 Virtual Function admite velocidades de red de hasta 10 Gbps en los tipos de instancias soportados.  
Los siguientes tipos de instancia utilizan la interfaz Intel 82599 VF para redes mejoradas: C3, C4, D2, I2, M4 (excepto m4.16xlarge) y R3.  
Para obtener más información, consulte [Redes mejoradas con la interfaz de Intel 82599 VF](sriov-networking.md).

**Topics**
+ [Elastic Network Adapter (ENA)](enhanced-networking-ena.md)
+ [ENA Express](ena-express.md)
+ [Intel 82599 VF](sriov-networking.md)
+ [Monitorear el rendimiento de la red](monitoring-network-performance-ena.md)
+ [Mejorar la latencia de red en Linux](ena-improve-network-latency-linux.md)
+ [Consideraciones sobre el rendimiento de Nitro](ena-nitro-perf.md)
+ [Optimizar el rendimiento de la red en Windows](enhanced-networking-os.md)

# Habilitar redes mejoradas con ENA en las instancias de EC2
<a name="enhanced-networking-ena"></a>

Amazon EC2 proporciona funcionalidades de redes mejoradas a través del Elastic Network Adapter (ENA). Para utilizar la red mejorada, debe utilizar una AMI que incluya el controlador ENA requerido o instalarla manualmente. A continuación, puede habilitar la compatibilidad con ENA en la instancia.

Para revisar las notas de la versión o las instrucciones de instalación de un controlador ENA, consulte la pestaña correspondiente a la plataforma del sistema operativo de su instancia.

------
#### [ Linux ]

Puede revisar la siguiente documentación en GitHub:
+ Revise las [notas de lanzamiento del controlador del kernel de Linux ENA](https://github.com/amzn/amzn-drivers/blob/master/kernel/linux/ena/RELEASENOTES.md) en GitHub.
+ Para obtener información general sobre el controlador del kernel de Linux ENA que incluye las instrucciones de instalación, consulte [controlador del kernel de Linux para la familia del Elastic Network Adapter (ENA)](https://github.com/amzn/amzn-drivers/blob/master/kernel/linux/ena/README.rst) en GitHub.

------
#### [ Windows ]

Puede revisar la siguiente documentación en la sección **Administrar los controladores de dispositivos** de esta guía:
+ [Seguimiento del lanzamiento de la versión del controlador de Windows de ENA](ena-driver-releases-windows.md).
+ [Instalar el controlador ENA en instancias de Windows de EC2](ena-adapter-driver-install-upgrade-win.md).

------

Para las instancias basadas en Nitro, las capacidades de red mejoradas varían según la versión de Nitro que implemente el tipo de instancia.

Para revisar las especificaciones de red de la instancia, elija el enlace de la familia de instancia para el tipo de instancia. Si no está seguro de qué familia de instancia se aplica, consulte las [convenciones de nomenclatura](https://docs.aws.amazon.com/ec2/latest/instancetypes/instance-type-names.html) en la guía de *tipos de instancia de Amazon EC2*.
+ [Especificaciones de red para instancias de computación acelerada](https://docs.aws.amazon.com/ec2/latest/instancetypes/ac.html#ac_network)
+ [Especificaciones de red para instancias optimizadas para la computación](https://docs.aws.amazon.com/ec2/latest/instancetypes/co.html#co_network)
+ [Especificaciones de red para instancias de uso general](https://docs.aws.amazon.com/ec2/latest/instancetypes/gp.html#gp_network)
+ [Especificaciones de red para instancias de computación de alto rendimiento](https://docs.aws.amazon.com/ec2/latest/instancetypes/hpc.html#hpc_network)
+ [Especificaciones de red para instancias optimizadas para memoria](https://docs.aws.amazon.com/ec2/latest/instancetypes/mo.html#mo_network)
+ [Especificaciones de red para instancias optimizadas para el almacenamiento](https://docs.aws.amazon.com/ec2/latest/instancetypes/so.html#so_network)

**Topics**
+ [Requisitos previos para las redes mejoradas con ENA](#ena-requirements)
+ [Probar si las redes mejoradas están habilitadas](test-enhanced-networking-ena.md)
+ [Habilitar redes mejoradas en la instancia](enabling_enhanced_networking.md)
+ [Colas de ENA](ena-queues.md)
+ [Solución de problemas del controlador del kernel de ENA en Linux](troubleshooting-ena.md)
+ [Solución de problemas del controlador Elastic Network Adapter para Windows](troubleshoot-ena-driver.md)

## Requisitos previos para las redes mejoradas con ENA
<a name="ena-requirements"></a>

Para prepararse para las redes mejoradas con ENA, configure la instancia de la siguiente manera:
+ Lance una [instancia basada en Nitro](instance-types.md#instance-hypervisor-type).
+ Asegúrese de que la instancia tenga conexión a Internet.
+ Si tiene datos importantes en la instancia que desea conservar, debería realizar ahora una copia de seguridad de esos datos creando una AMI desde la instancia. La actualización del controlador del kernel de ENA y la habilitación del atributo `enaSupport` puede hacer que las instancias o sistemas operativos incompatibles sean inaccesibles. Si tiene una copia de seguridad reciente y esto ocurre, los datos se conservarán.
+ **Instancias de Linux**: lance una instancia con una versión del kernel de Linux y una distribución admitidas, de manera que la red mejorada de ENA esté habilitada de forma automática para su instancia. Para obtener más información, consulte [ENA Linux Kernel Driver Release Notes](https://github.com/amzn/amzn-drivers/blob/master/kernel/linux/ena/RELEASENOTES.md).
+ **Instancias de Windows**: si la instancia ejecuta Windows Server 2008 R2 SP1, asegúrese de que tiene la [actualización de compatibilidad con firma de código SHA-2](https://support.microsoft.com/en-us/help/4474419/sha-2-code-signing-support-update).
+ Utilice [AWS CloudShell](https://console.aws.amazon.com/cloudshell) en la Consola de administración de AWS, o bien instale y configure la [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) o las [AWS Tools for Windows PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/) en cualquier computadora que elija, preferentemente en su equipo de escritorio o portátil local. Para obtener más información, consulte [Acceder a Amazon EC2](concepts.md#access-ec2) o la [Guía del usuario de AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html). Las redes mejoradas no se pueden administrar desde la consola de Amazon EC2.

# Probar si las redes mejoradas están habilitadas
<a name="test-enhanced-networking-ena"></a>

Puede probar si las redes mejoradas están habilitadas en las instancias o AMI.

**Atributo de instancia**  
Compruebe el valor del atributo `enaSupport` de la instancia.

------
#### [ AWS CLI ]

Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html).

```
aws ec2 describe-instances \
    --instance-ids i-1234567890abcdef0 \
    --query "Reservations[].Instances[].EnaSupport"
```

Si la red mejorada está habilitada, el resultado es el siguiente.

```
[
    true
]
```

------
#### [ PowerShell ]

Utilice el cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html).

```
(Get-EC2Instance -InstanceId i-1234567890abcdef0).Instances.EnaSupport
```

Si la red mejorada está habilitada, el resultado es el siguiente.

```
True
```

------

**Atributo de imagen**  
Compruebe el valor del atributo `enaSupport` de la imagen.

------
#### [ AWS CLI ]

Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html).

```
aws ec2 describe-images \
    --image-id ami-0abcdef1234567890 \
    --query "Images[].EnaSupport"
```

Si la red mejorada está habilitada, el resultado es el siguiente.

```
[
    true
]
```

------
#### [ PowerShell ]

Utilice el cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html).

```
(Get-EC2Image -ImageId ami-0abcdef1234567890).EnaSupport
```

Si la red mejorada está habilitada, el resultado es el siguiente.

```
True
```

------

**Controlador de la interfaz de red de Linux**  
Utilice el siguiente comando para verificar que el controlador del kernel de `ena` se está utilizando en una interfaz en particular, sustituyendo el nombre de la interfaz que quiere comprobar. Si utiliza una sola interfaz (predeterminada), esta será `eth0`. Si su distribución de Linux admite nombres de red predecibles, podría ser un nombre como `ens5`. Para obtener más información, expanda la sección de RHEL, SUSE y CentOS en [Habilitar redes mejoradas en la instancia](enabling_enhanced_networking.md).

En el siguiente ejemplo, el controlador del kernel de `ena` no está cargado, ya que el controlador indicado es `vif`.

```
[ec2-user ~]$ ethtool -i eth0
driver: vif
version:
firmware-version:
bus-info: vif-0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no
```

En este ejemplo, el controlador del kernel de `ena` está cargado y tiene la versión mínima recomendada. Esta instancia tiene las redes mejoradas configuradas correctamente.

```
[ec2-user ~]$ ethtool -i eth0
driver: ena
version: 1.5.0g
firmware-version:
expansion-rom-version:
bus-info: 0000:00:05.0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no
```

# Habilitar redes mejoradas en la instancia
<a name="enabling_enhanced_networking"></a>

El procedimiento que utiliza depende del sistema operativo de la instancia.

## Amazon Linux
<a name="enable-enhanced-networking-ena-AL"></a>

Las AMI para Amazon Linux incluyen el controlador del kernel requerido para redes mejoradas con ENA instalado y tienen habilitada la compatibilidad con ENA. Por lo tanto, si inicia una instancia con una versión HVM de Amazon Linux en un tipo de instancia admitido, las redes mejoradas ya están habilitadas para su instancia. Para obtener más información, consulte [Probar si las redes mejoradas están habilitadas](test-enhanced-networking-ena.md).

## Ubuntu
<a name="enhanced-networking-ena-ubuntu"></a>

Las últimas AMI de Ubuntu HVM incluyen el controlador del kernel requerido para redes mejoradas con ENA instalado y tienen habilitada la compatibilidad con ENA. Por lo tanto, si inicia una instancia con la AMI HVM de Ubuntu más reciente en un tipo de instancia admitido, las redes mejoradas ya están habilitadas para su instancia. Para obtener más información, consulte [Probar si las redes mejoradas están habilitadas](test-enhanced-networking-ena.md). 

Si ha iniciado la instancia utilizando una AMI más antigua que no tiene habilitada aún la conexión en red mejorada, puede instalar el paquete del kernel `linux-aws` para obtener los controladores de red mejorada más recientes y actualizar el atributo necesario.

**Para instalar el paquete del kernel de `linux-aws` (Ubuntu 16.04 o versiones posteriores)**  
Ubuntu 16.04 y 18.04 se distribuyen con el kernel personalizado de Ubuntu (paquete del kernel de `linux-aws`). Para usar un kernel diferente, contacte con [Soporte](https://console.aws.amazon.com/support).<a name="ubuntu-enhanced-networking-ena-procedure"></a>

**Para instalar el paquete del kernel de `linux-aws` (Ubuntu Trusty 14.04)**

1. <a name="ubuntu-enhanced-networking-ena-start-step"></a>Conéctese a la instancia.

1. Actualice la caché del paquete y los paquetes.

   ```
   ubuntu:~$ sudo apt-get update && sudo apt-get upgrade -y linux-aws
   ```
**importante**  
Si, durante el proceso de actualización, se le pide que instale `grub`, use `/dev/xvda` para instalar `grub` y luego elija conservar la versión actual de `/boot/grub/menu.lst`.

1. [instancia basada en EBS] Desde el equipo local, detenga la instancia mediante la consola de Amazon EC2 o uno de los siguientes comandos: [https://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html) (AWS CLI) o [https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2Instance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2Instance.html) (AWS Tools for Windows PowerShell).

   [Instancia respaldada por el almacén de instancias] No puede detener la instancia para modificar el atributo. En lugar de ello, vaya a este procedimiento: [Para habilitar las redes mejoradas en Ubuntu (instancias con respaldo en el almacén de instancias)](#enhanced-networking-ena-instance-store-ubuntu).

1. En el equipo local, habilite el atributo de redes mejoradas con uno de los siguientes comandos:
   + [https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html) (AWS CLI)

     ```
     aws ec2 modify-instance-attribute --instance-id i-1234567890abcdef0 --ena-support
     ```
   + [https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html) (Herramientas para Windows PowerShell)

     ```
     Edit-EC2InstanceAttribute -InstanceId i-1234567890abcdef0 -EnaSupport $true
     ```

1. (Opcional) Cree una AMI desde la instancia, tal y como se explica en [Creación de una AMI basada en Amazon EBS](creating-an-ami-ebs.md). La AMI hereda el atributo de redes mejoradas `enaSupport` de la instancia. Por lo tanto, puede utilizar esta AMI para iniciar otra instancia con las redes mejoradas habilitadas de manera predeterminada.

1. Desde el equipo local, inicie la instancia mediante la consola de Amazon EC2 o uno de los siguientes comandos: [https://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html) (AWS CLI) o [https://docs.aws.amazon.com/powershell/latest/reference/items/Start-EC2Instance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Start-EC2Instance.html) (AWS Tools for Windows PowerShell).<a name="enhanced-networking-ena-instance-store-ubuntu"></a>

**Para habilitar las redes mejoradas en Ubuntu (instancias con respaldo en el almacén de instancias)**

Siga el procedimiento anterior hasta el paso en el que detiene la instancia. Cree una nueva AMI tal como se describe en [Creación de una AMI basada en Amazon S3](creating-an-ami-instance-store.md), asegurándose de habilitar el atributo de redes mejoradas cuando registre la AMI.
+ [https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) (AWS CLI)

  ```
  aws ec2 register-image --ena-support ...
  ```
+ [https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html) (AWS Tools for Windows PowerShell)

  ```
  Register-EC2Image -EnaSupport $true ...
  ```

## RHEL, SUSE, CentOS
<a name="enhanced-networking-ena-linux"></a>

Las últimas AMI de Red Hat Enterprise Linux, SUSE Linux Enterprise Server y CentOS incluyen el controlador del kernel requerido para redes mejoradas con ENA y tienen habilitada la compatibilidad con ENA. Por lo tanto, si inicia una instancia con la AMI más reciente en un tipo de instancia admitido, la conexión en red mejorada ya está habilitada para su instancia. Para obtener más información, consulte [Probar si las redes mejoradas están habilitadas](test-enhanced-networking-ena.md).

En el siguiente procedimiento, se proporcionan los pasos para habilitar la conexión en red mejorada con ENA en una distribución de Linux distinta de Amazon Linux AMI o Ubuntu. Para obtener más información, como la sintaxis detallada de los comandos, las ubicaciones de los archivos o la compatibilidad con paquetes y herramientas, consulte la documentación de su distribución de Linux.

**Para habilitar las redes mejoradas en Linux**

1. <a name="other-linux-enhanced-networking-ena-start-step"></a>Conéctese a la instancia.

1. Clone el código fuente para el controlador del kernel de `ena` en la instancia desde GitHub en [https://github.com/amzn/amzn-drivers](https://github.com/amzn/amzn-drivers). (SUSE Linux Enterprise Server 12 SP2 y versiones posteriores incluyen ENA 2.02 de forma predeterminada, por lo que no es necesario descargar ni compilar el controlador de ENA. Para SUSE Linux Enterprise Server 12 SP2 y versiones posteriores, debe tramitar una solicitud para agregar la versión del controlador que desee al kernel existente). 

   ```
   git clone https://github.com/amzn/amzn-drivers
   ```

1. Compile e instale el controlador del kernel de `ena` en la instancia. Estos pasos dependen de la distribución Linux. Para obtener más información sobre la compilación del controlador del kernel en Red Hat Enterprise Linux, consulte [¿Cómo puedo instalar el controlador ENS más reciente para el soporte de redes mejoradas en una instancia de Amazon EC2 que ejecuta RHEL?](https://repost.aws/knowledge-center/install-ena-driver-rhel-ec2)

1. Ejecute el comando **sudo depmod** para actualizar las dependencias del controlador del kernel.

1. <a name="other-linux-enhanced-networking-ena-stop-step"></a>Actualice `initramfs` en la instancia para asegurarse de que el nuevo controlador del kernel se cargue en el momento del arranque. Por ejemplo, si su distribución admite **dracut**, puede utilizar el comando siguiente.

   ```
   dracut -f -v
   ```

1. <a name="predictable-network-names-ena"></a>Determine si el sistema utiliza de manera predeterminada nombres de interfaz de red predecibles. Los sistemas que utilizan las versiones 197 o posteriores de **systemd** o **udev** pueden cambiar el nombre de los dispositivos Ethernet y no garantizan que haya una sola interfaz de red denominada `eth0`. Este comportamiento puede producir problemas al conectarse a la instancia. Para obtener más información y para ver otras opciones de configuración, consulte [Predictable Network Interface Names](https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/) en el sitio web de freedesktop.org.

   1. Puede utilizar el siguiente comando para comprobar las versiones de **systemd** o **udev** en los sistemas basados en RPM.

      ```
      rpm -qa | grep -e '^systemd-[0-9]\+\|^udev-[0-9]\+'
      systemd-208-11.el7_0.2.x86_64
      ```

      En el ejemplo anterior de Red Hat Enterprise Linux 7, la versión de **systemd** es la 208, por lo que se deben deshabilitar los nombres de interfaz de red predecibles.

   1. Para deshabilitar los nombres de interfaz de red predecibles, añada la opción `net.ifnames=0` a la línea `GRUB_CMDLINE_LINUX` en `/etc/default/grub`.

      ```
      sudo sed -i '/^GRUB\_CMDLINE\_LINUX/s/\"$/\ net\.ifnames\=0\"/' /etc/default/grub
      ```

   1. Vuelva a compilar el archivo de configuración de Grub.

      ```
      sudo grub2-mkconfig -o /boot/grub2/grub.cfg
      ```

1. [instancia basada en EBS] Desde su equipo local, detenga la instancia mediante la consola de Amazon EC2 o uno de los siguientes comandos: [https://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html) (AWS CLI), [https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2Instance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2Instance.html) (AWS Tools for Windows PowerShell).

   [Instancia respaldada por el almacén de instancias] No puede detener la instancia para modificar el atributo. En lugar de ello, vaya a este procedimiento: [Para habilitar las redes mejoradas en Linux (instancias respaldadas por el almacén de instancias)](#other-linux-enhanced-networking-ena-instance-store).

1. En el equipo local, habilite el atributo `enaSupport` de redes mejoradas con uno de los siguientes comandos:
   + [https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html) (AWS CLI)

     ```
     aws ec2 modify-instance-attribute --instance-id i-1234567890abcdef0 --ena-support
     ```
   + [https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html) (Herramientas para Windows PowerShell)

     ```
     Edit-EC2InstanceAttribute -InstanceId i-1234567890abcdef0 -EnaSupport $true
     ```

1. (Opcional) Cree una AMI desde la instancia, tal y como se explica en [Creación de una AMI basada en Amazon EBS](creating-an-ami-ebs.md). La AMI hereda el atributo de redes mejoradas `enaSupport` de la instancia. Por lo tanto, puede utilizar esta AMI para iniciar otra instancia con las redes mejoradas habilitadas de manera predeterminada.

   Si el sistema operativo de la instancia contiene un archivo `/etc/udev/rules.d/70-persistent-net.rules`, debe eliminarlo antes de crear la AMI. Este archivo contiene la dirección MAC del adaptador Ethernet de la instancia original. Si otra instancia arranca con este archivo, el sistema operativo no será capaz de encontrar el dispositivo y `eth0` producirá un error, lo que causará problemas de arranque. Este archivo se regenera en el siguiente ciclo de arranque y todas las instancias que se inician desde la AMI crean su propia versión del archivo.

1. Desde el equipo local, inicie la instancia mediante la consola de Amazon EC2 o uno de los siguientes comandos: [https://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html) (AWS CLI) o [https://docs.aws.amazon.com/powershell/latest/reference/items/Start-EC2Instance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Start-EC2Instance.html) (AWS Tools for Windows PowerShell).

1. (Opcional) Conéctese a la instancia y compruebe si el controlador del kernel está instalado.

   Si no puede conectarse a la instancia después de habilitar las redes mejoradas, consulte [Solución de problemas del controlador del kernel de ENA en Linux](troubleshooting-ena.md).<a name="other-linux-enhanced-networking-ena-instance-store"></a>

**Para habilitar las redes mejoradas en Linux (instancias respaldadas por el almacén de instancias)**

Siga el procedimiento anterior hasta el paso en el que detiene la instancia. Cree una nueva AMI tal como se describe en [Creación de una AMI basada en Amazon S3](creating-an-ami-instance-store.md), asegurándose de habilitar el atributo de redes mejoradas cuando registre la AMI.
+ [https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) (AWS CLI)

  ```
  aws ec2 register-image --ena-support ...
  ```
+ [https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html) (AWS Tools for Windows PowerShell)

  ```
  Register-EC2Image -EnaSupport ...
  ```

## Ubuntu con DKMS
<a name="enhanced-networking-ena-ubuntu-dkms"></a>

Este método sirve únicamente para realizar pruebas y enviar comentarios. No se ha concebido para su uso en implementaciones de producción. Para las implementaciones de producción, consulte [Ubuntu](#enhanced-networking-ena-ubuntu).

**importante**  
El uso de DKMS invalida el acuerdo de soporte técnico de su suscripción. No se debe usar para implementaciones de producción.

**Para habilitar las redes mejoradas con ENA en Ubuntu (instancias con respaldo de EBS)**

1. Siga los pasos 1 y 2 de [Ubuntu](#enhanced-networking-ena-ubuntu).

1. Instale los paquetes `build-essential` para compilar el controlador del kernel y el paquete `dkms` para volver a compilar el controlador del kernel de `ena` cada vez que se actualice el kernel.

   ```
   ubuntu:~$ sudo apt-get install -y build-essential dkms
   ```

1. Clone la fuente del controlador del kernel de `ena` en la instancia desde GitHub en [https://github.com/amzn/amzn-drivers](https://github.com/amzn/amzn-drivers).

   ```
   ubuntu:~$ git clone https://github.com/amzn/amzn-drivers
   ```

1. Mueva el paquete `amzn-drivers` al directorio `/usr/src/` para que DKMS pueda encontrarlo y compilarlo en cada actualización del kernel. Añada el número de versión (lo encontrará en las notas de la versión) del código fuente al nombre del directorio. Por ejemplo, en el ejemplo siguiente se muestra la versión `1.0.0`.

   ```
   ubuntu:~$ sudo mv amzn-drivers /usr/src/amzn-drivers-1.0.0
   ```

1. Cree el archivo de configuración DKMS con los siguientes valores, sustituyendo su versión de `ena`.

   Cree el archivo.

   ```
   ubuntu:~$ sudo touch /usr/src/amzn-drivers-1.0.0/dkms.conf
   ```

   Edite el archivo y añada los valores siguientes.

   ```
   ubuntu:~$ sudo vim /usr/src/amzn-drivers-1.0.0/dkms.conf
   PACKAGE_NAME="ena"
   PACKAGE_VERSION="1.0.0"
   CLEAN="make -C kernel/linux/ena clean"
   MAKE="make -C kernel/linux/ena/ BUILD_KERNEL=${kernelver}"
   BUILT_MODULE_NAME[0]="ena"
   BUILT_MODULE_LOCATION="kernel/linux/ena"
   DEST_MODULE_LOCATION[0]="/updates"
   DEST_MODULE_NAME[0]="ena"
   AUTOINSTALL="yes"
   ```

1. Añada, compile e instale el controlador del kernel de `ena` en su instancia mediante DKMS.

   Añada el controlador del kernel a DKMS.

   ```
   ubuntu:~$ sudo dkms add -m amzn-drivers -v 1.0.0
   ```

   Cree el controlador del kernel mediante el comando **dkms**.

   ```
   ubuntu:~$ sudo dkms build -m amzn-drivers -v 1.0.0
   ```

   Instale el controlador del kernel mediante **dkms**.

   ```
   ubuntu:~$ sudo dkms install -m amzn-drivers -v 1.0.0
   ```

1. Vuelva a compilar `initramfs` para que el controlador del kernel correcto se cargue en el momento del arranque.

   ```
   ubuntu:~$ sudo update-initramfs -u -k all
   ```

1. Compruebe si el controlador del kernel de `ena` está instalado mediante el comando modinfo ena desde [Probar si las redes mejoradas están habilitadas](test-enhanced-networking-ena.md).

   ```
   ubuntu:~$ modinfo ena
   filename:	   /lib/modules/3.13.0-74-generic/updates/dkms/ena.ko
   version:		1.0.0
   license:		GPL
   description:	Elastic Network Adapter (ENA)
   author:		 Amazon.com, Inc. or its affiliates
   srcversion:	 9693C876C54CA64AE48F0CA
   alias:		  pci:v00001D0Fd0000EC21sv*sd*bc*sc*i*
   alias:		  pci:v00001D0Fd0000EC20sv*sd*bc*sc*i*
   alias:		  pci:v00001D0Fd00001EC2sv*sd*bc*sc*i*
   alias:		  pci:v00001D0Fd00000EC2sv*sd*bc*sc*i*
   depends:
   vermagic:	   3.13.0-74-generic SMP mod_unload modversions
   parm:		   debug:Debug level (0=none,...,16=all) (int)
   parm:		   push_mode:Descriptor / header push mode (0=automatic,1=disable,3=enable)
   		  0 - Automatically choose according to device capability (default)
   		  1 - Don't push anything to device memory
   		  3 - Push descriptors and header buffer to device memory (int)
   parm:		   enable_wd:Enable keepalive watchdog (0=disable,1=enable,default=1) (int)
   parm:		   enable_missing_tx_detection:Enable missing Tx completions. (default=1) (int)
   parm:		   numa_node_override_array:Numa node override map
   (array of int)
   parm:		   numa_node_override:Enable/Disable numa node override (0=disable)
   (int)
   ```

1. Continúe con el paso 3 de [Ubuntu](#enhanced-networking-ena-ubuntu). 

## Habilitar redes mejoradas en Windows
<a name="enable-enhanced-networking-ena-windows"></a>

Si ha iniciado su instancia y no tiene habilitadas aún las redes mejoradas, debe descargar e instalar el controlador del adaptador de red requerido en la instancia y luego establecer el atributo de la instancia `enaSupport` para activar las redes mejoradas.

**Para habilitar las redes mejoradas**

1. Conéctese a la instancia e inicie sesión como administrador local.

1. [Windows Server 2016 y 2019 únicamente] Ejecute el siguiente script de PowerShell de EC2Launch para configurar la instancia después de instalar el controlador.

   ```
   PS C:\> C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -Schedule
   ```

1. En la instancia, instale el controlador de la siguiente manera:

   1. [Descargue](https://s3.amazonaws.com/ec2-windows-drivers-downloads/ENA/Latest/AwsEnaNetworkDriver.zip) el controlador más reciente en la instancia.

   1. Extraiga el archivo zip.

   1. Instale el controlador ejecutando el script de PowerShell `install.ps1`.
**nota**  
Si recibe un error de política de ejecución, establezca la política en `Unrestricted` (el valor predeterminado es `Restricted` o `RemoteSigned`). En una línea de comandos, ejecute `Set-ExecutionPolicy -ExecutionPolicy Unrestricted` y, a continuación, ejecute de nuevo el script `install.ps1` de PowerShell.

1. Desde el equipo local, detenga la instancia mediante la consola de Amazon EC2 o uno de los siguientes comandos: [https://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html) (AWS CLI) o [https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2Instance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2Instance.html) (AWS Tools for Windows PowerShell).

1. Habilite el soporte de ENA en la instancia del modo siguiente:

   1. En el equipo local, compruebe el atributo de soporte de ENA de la instancia de EC2 en la instancia ejecutando uno de los siguientes comandos. Si el atributo no está habilitado, la salida será "[]" o estará en blanco. `EnaSupport` está establecido en `false` de forma predeterminada.
      + [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) (AWS CLI)

        ```
        aws ec2 describe-instances --instance-ids i-1234567890abcdef0 --query "Reservations[].Instances[].EnaSupport"
        ```
      + [https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html) (Herramientas para Windows PowerShell)

        ```
        (Get-EC2Instance -InstanceId i-1234567890abcdef0).Instances.EnaSupport
        ```

   1. Para habilitar el soporte de ENA, ejecute uno de los siguientes comandos:
      + [https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html) (AWS CLI)

        ```
        aws ec2 modify-instance-attribute --instance-id i-1234567890abcdef0 --ena-support
        ```
      + [https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html) (AWS Tools for Windows PowerShell)

        ```
        Edit-EC2InstanceAttribute -InstanceId i-1234567890abcdef0 -EnaSupport $true
        ```

      Si tiene problemas al reiniciar la instancia, también puede deshabilitar el soporte de ENA con uno de los siguientes comandos:
      + [https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html) (AWS CLI)

        ```
        aws ec2 modify-instance-attribute --instance-id i-1234567890abcdef0 --no-ena-support
        ```
      + [https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html) (AWS Tools for Windows PowerShell)

        ```
        Edit-EC2InstanceAttribute -InstanceId i-1234567890abcdef0 -EnaSupport $false
        ```

   1. Verifique que el atributo se ha establecido en `true` usando **describe-instances** o **Get-EC2Instance** como se ha explicado antes. Entonces, debe ver la salida siguiente:

      ```
      [
      	true
      ]
      ```

1. Desde el equipo local, inicie la instancia mediante la consola de Amazon EC2 o uno de los siguientes comandos: [https://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html) (AWS CLI) o [https://docs.aws.amazon.com/powershell/latest/reference/items/Start-EC2Instance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Start-EC2Instance.html) (AWS Tools for Windows PowerShell).

1. En la instancia, confirme que el controlador de ENA esté instalado y habilitado del modo siguiente:

   1. Haga clic con el botón derecho en el icono de red y elija **Abrir el centro de redes y recursos compartidos**.

   1. Elija el adaptador Ethernet (por ejemplo, **Ethernet 2**).

   1. Elija **Detalles**. En **Detalles de la conexión de red**, compruebe que **Descripción** tiene el valor **Amazon Elastic Network Adapter**.

1. (Opcional) Cree una AMI a partir de la instancia. La AMI hereda el atributo `enaSupport` de la instancia. Por lo tanto, puede utilizar esta AMI para iniciar otra instancia con ENA habilitado de manera predeterminada.

# Colas de ENA
<a name="ena-queues"></a>

Las colas de ENA se asignan a las interfaces de red con límites estáticos predeterminados según el tipo y el tamaño de la instancia. En los tipos de instancias compatibles, puede asignar estas colas de forma dinámica entre las interfaces de red elásticas (ENI). Aunque el recuento total de colas por instancia depende de su tipo y tamaño, puede configurar varias ENI con colas de ENA hasta alcanzar el número máximo de colas para la ENI y la instancia.

La asignación flexible de colas de ENA optimiza la distribución de los recursos y permite la máxima utilización de la vCPU. Las cargas de trabajo de alto rendimiento de red suelen necesitar varias colas de ENA. Para afinar el rendimiento de la red y los paquetes por segundo (PPS), configure el número de colas según las necesidades específicas de carga de trabajo. Por ejemplo, las aplicaciones con un uso intensivo de la red pueden necesitar más colas en comparación con las aplicaciones con un uso intensivo de la CPU.

**Topics**
+ [Instancias compatibles](#supported-instances)
+ [Modificación del número de colas](#modify)

## Instancias compatibles
<a name="supported-instances"></a>

Las siguientes instancias son compatibles con la asignación dinámica de varias colas de ENA.

### Fin general
<a name="supported-instances-ena-queues-gp"></a>


| Tipo de instancia | Colas de ENA predeterminadas por interfaz | Número máximo de colas ENA por interfaz | Número máximo de colas ENA por instancia | 
| --- | --- | --- | --- | 
| M6i | 
| m6i.large | 2 | 2. | 6 | 
| m6i.xlarge | 4 | 4 | 16 | 
| m6i.2xlarge | 8 | 8 | 32 | 
| m6i.4xlarge | 8 | 16 | 64 | 
| m6i.8xlarge | 8 | 32 | 64 | 
| m6i.12xlarge | 8 | 32 | 64 | 
| m6i.16xlarge | 8 | 32 | 120 | 
| m6i.24xlarge | 8 | 32 | 120 | 
| m6i.32xlarge | 8 | 32 | 120 | 
| M6id | 
| m6id.large | 2 | 2. | 6 | 
| m6id.xlarge | 4 | 4 | 16 | 
| m6id.2xlarge | 8 | 8 | 32 | 
| m6id.4xlarge | 8 | 16 | 64 | 
| m6id.8xlarge | 8 | 32 | 64 | 
| m6id.12xlarge | 8 | 32 | 64 | 
| m6id.16xlarge | 8 | 32 | 120 | 
| m6id.24xlarge | 8 | 32 | 120 | 
| m6id.32xlarge | 8 | 32 | 120 | 
| M6idn | 
| m6idn.large | 2 | 2. | 6 | 
| m6idn.xlarge | 4 | 4 | 16 | 
| m6idn.2xlarge | 8 | 8 | 32 | 
| m6idn.4xlarge | 8 | 16 | 64 | 
| m6idn.8xlarge | 16 | 32 | 128 | 
| m6idn.12xlarge | 16 | 32 | 128 | 
| m6idn.16xlarge | 16 | 32 | 240 | 
| m6idn.24xlarge | 32 | 32 | 480 | 
| m6idn.32xlarge | 32 | 32 | 512 \$1 | 
| M6in | 
| m6in.large | 2 | 2. | 6 | 
| m6in.xlarge | 4 | 4 | 16 | 
| m6in.2xlarge | 8 | 8 | 32 | 
| m6in.4xlarge | 8 | 16 | 64 | 
| m6in.8xlarge | 16 | 32 | 128 | 
| m6in.12xlarge | 16 | 32 | 128 | 
| m6in.16xlarge | 16 | 32 | 240 | 
| m6in.24xlarge | 32 | 32 | 480 | 
| m6in.32xlarge | 32 | 32 | 512 \$1 | 
| M8a | 
| m8a.medium | 1 | 1 | 3 | 
| m8a.large | 2 | 2. | 6 | 
| m8a.xlarge | 4 | 4 | 16 | 
| m8a.2xlarge | 8 | 8 | 32 | 
| m8a.4xlarge | 8 | 16 | 64 | 
| m8a.8xlarge | 8 | 32 | 128 | 
| m8a.12xlarge | 16 | 64 | 192 | 
| m8a.16xlarge | 16 | 64 | 256 | 
| m8a.24xlarge | 16 | 128 | 384 | 
| m8a.48xlarge | 32 | 128 | 768 | 
| m8a.metal-24xl | 16 | 128 | 384 | 
| m8a.metal-48xl | 32 | 128 | 768 | 
| M8azn | 
| m8azn.medium | 1 | 1 | 3 | 
| m8azn.large | 2 | 2. | 8 | 
| m8azn.xlarge | 4 | 4 | 16 | 
| m8azn.3xlarge | 4 | 16 | 48 | 
| m8azn.6xlarge | 8 | 32 | 96 | 
| m8azn.12xlarge | 8 | 64 | 192 | 
| m8azn.24xlarge | 16 | 128 | 384 | 
| m8azn.metal-12xl | 8 | 64 | 192 | 
| m8azn.metal-24xl | 16 | 128 | 384 | 
| M8gb | 
| m8gb.medium | 1 | 1 | 2 | 
| m8gb.large | 2 | 2. | 6 | 
| m8gb.xlarge | 4 | 4 | 16 | 
| m8gb.2xlarge | 8 | 8 | 32 | 
| m8gb.4xlarge | 8 | 16 | 64 | 
| m8gb.8xlarge | 8 | 32 | 128 | 
| m8gb.12xlarge | 16 | 64 | 192 | 
| m8gb.16xlarge | 16 | 64 | 256 | 
| m8gb.24xlarge | 16 | 128 | 384 | 
| m8gb.48xlarge | 32 | 128 | 768 \$1 | 
| m8gb.metal-24xl | 32 | 128 | 768 | 
| m8gb.metal-48xl | 32 | 128 | 768 \$1 | 
| M8gn | 
| m8gn.medium | 1 | 1 | 2 | 
| m8gn.large | 2 | 2. | 6 | 
| m8gn.xlarge | 4 | 4 | 16 | 
| m8gn.2xlarge | 8 | 8 | 32 | 
| m8gn.4xlarge | 8 | 16 | 64 | 
| m8gn.8xlarge | 8 | 32 | 128 | 
| m8gn.12xlarge | 16 | 64 | 192 | 
| m8gn.16xlarge | 16 | 64 | 256 | 
| m8gn.24xlarge | 16 | 128 | 384 | 
| m8gn.48xlarge | 32 | 128 | 768 \$1 | 
| m8gn.metal-24xl | 32 | 128 | 768 | 
| m8gn.metal-48xl | 32 | 128 | 768 \$1 | 
| M8i | 
| m8i.large | 2 | 2. | 6 | 
| m8i.xlarge | 4 | 4 | 16 | 
| m8i.2xlarge | 8 | 8 | 32 | 
| m8i.4xlarge | 8 | 16 | 64 | 
| m8i.8xlarge | 8 | 32 | 128 | 
| m8i.12xlarge | 16 | 64 | 192 | 
| m8i.16xlarge | 16 | 64 | 256 | 
| m8i.24xlarge | 16 | 128 | 384 | 
| m8i.32xlarge | 16 | 128 | 512 | 
| m8i.48xlarge | 32 | 128 | 768 | 
| m8i.96xlarge | 32 | 128 | 1536 | 
| m8i.metal-48xl | 32 | 128 | 768 | 
| m8i.metal-96xl | 32 | 128 | 1536 | 
| M8id | 
| m8id.large | 2 | 2. | 6 | 
| m8id.xlarge | 4 | 4 | 16 | 
| m8id.2xlarge | 8 | 8 | 32 | 
| m8id.4xlarge | 8 | 16 | 64 | 
| m8id.8xlarge | 8 | 32 | 128 | 
| m8id.12xlarge | 16 | 64 | 192 | 
| m8id.16xlarge | 16 | 64 | 256 | 
| m8id.24xlarge | 16 | 128 | 384 | 
| m8id.32xlarge | 16 | 128 | 512 | 
| m8id.48xlarge | 32 | 128 | 768 | 
| m8id.96xlarge | 32 | 128 | 1536 | 
| m8id.metal-48xl | 32 | 128 | 768 | 
| m8id.metal-96xl | 32 | 128 | 1536 | 
| M8i-flex | 
| m8i-flex.large | 1 | 1 | 3 | 
| m8i-flex.xlarge | 2 | 2. | 8 | 
| m8i-flex.2xlarge | 4 | 4 | 16 | 
| m8i-flex.4xlarge | 4 | 8 | 32 | 
| m8i-flex.8xlarge | 4 | 16 | 64 | 
| m8i-flex.12xlarge | 8 | 32 | 96 | 
| m8i-flex.16xlarge | 8 | 32 | 128 | 

**nota**  
\$1 Estos tipos de instancia cuentan con varias tarjetas de red. Otros tipos de instancia cuentan con una sola tarjeta de red. Para obtener más información, consulte [Tarjetas de red](using-eni.md#network-cards). 

### Optimizada para computación
<a name="supported-instances-ena-queues-co"></a>


| Tipo de instancia | Colas de ENA predeterminadas por interfaz | Número máximo de colas ENA por interfaz | Número máximo de colas ENA por instancia | 
| --- | --- | --- | --- | 
| C6i | 
| c6i.large | 2 | 2. | 6 | 
| c6i.xlarge | 4 | 4 | 16 | 
| c6i.2xlarge | 8 | 8 | 32 | 
| c6i.4xlarge | 8 | 16 | 64 | 
| c6i.8xlarge | 8 | 32 | 64 | 
| c6i.12xlarge | 8 | 32 | 64 | 
| c6i.16xlarge | 8 | 32 | 120 | 
| c6i.24xlarge | 8 | 32 | 120 | 
| c6i.32xlarge | 8 | 32 | 120 | 
| C6id | 
| c6id.large | 2 | 2. | 6 | 
| c6id.xlarge | 4 | 4 | 16 | 
| c6id.2xlarge | 8 | 8 | 32 | 
| c6id.4xlarge | 8 | 16 | 64 | 
| c6id.8xlarge | 8 | 32 | 64 | 
| c6id.12xlarge | 8 | 32 | 64 | 
| c6id.16xlarge | 8 | 32 | 120 | 
| c6id.24xlarge | 8 | 32 | 120 | 
| c6id.32xlarge | 8 | 32 | 120 | 
| C6in | 
| c6in.large | 2 | 2. | 6 | 
| c6in.xlarge | 4 | 4 | 16 | 
| c6in.2xlarge | 8 | 8 | 32 | 
| c6in.4xlarge | 8 | 16 | 64 | 
| c6in.8xlarge | 16 | 32 | 128 | 
| c6in.12xlarge | 16 | 32 | 128 | 
| c6in.16xlarge | 16 | 32 | 240 | 
| c6in.24xlarge | 32 | 32 | 480 | 
| c6in.32xlarge | 32 | 32 | 512 \$1 | 
| C8a | 
| c8a.medium | 1 | 1 | 3 | 
| c8a.large | 2 | 2. | 6 | 
| c8a.xlarge | 4 | 4 | 16 | 
| c8a.2xlarge | 8 | 8 | 32 | 
| c8a.4xlarge | 8 | 16 | 64 | 
| c8a.8xlarge | 8 | 32 | 128 | 
| c8a.12xlarge | 16 | 64 | 192 | 
| c8a.16xlarge | 16 | 64 | 256 | 
| c8a.24xlarge | 16 | 128 | 384 | 
| c8a.48xlarge | 32 | 128 | 768 | 
| c8a.metal-24xl | 16 | 128 | 384 | 
| c8a.metal-48xl | 32 | 128 | 768 | 
| C8gb | 
| c8gb.medium | 1 | 1 | 2 | 
| c8gb.large | 2 | 2. | 6 | 
| c8gb.xlarge | 4 | 4 | 16 | 
| c8gb.2xlarge | 8 | 8 | 32 | 
| c8gb.4xlarge | 8 | 16 | 64 | 
| c8gb.8xlarge | 8 | 32 | 128 | 
| c8gb.12xlarge | 16 | 64 | 192 | 
| c8gb.16xlarge | 16 | 64 | 256 | 
| c8gb.24xlarge | 16 | 128 | 384 | 
| c8gb.48xlarge | 32 | 128 | 768 \$1 | 
| c8gb.metal-24xl | 32 | 128 | 768 | 
| c8gb.metal-48xl | 32 | 128 | 768 \$1 | 
| C8gn | 
| c8gn.medium | 1 | 1 | 2 | 
| c8gn.large | 2 | 2. | 6 | 
| c8gn.xlarge | 4 | 4 | 16 | 
| c8gn.2xlarge | 8 | 8 | 32 | 
| c8gn.4xlarge | 8 | 16 | 64 | 
| c8gn.8xlarge | 8 | 32 | 128 | 
| c8gn.12xlarge | 16 | 64 | 192 | 
| c8gn.16xlarge | 16 | 64 | 256 | 
| c8gn.24xlarge | 16 | 128 | 384 | 
| c8gn.48xlarge | 32 | 128 | 768 \$1 | 
| c8gn.metal-24xl | 32 | 128 | 768 | 
| c8gn.metal-48xl | 32 | 128 | 768 \$1 | 
| C8i | 
| c8i.large | 2 | 2. | 6 | 
| c8i.xlarge | 4 | 4 | 16 | 
| c8i.2xlarge | 8 | 8 | 32 | 
| c8i.4xlarge | 8 | 16 | 64 | 
| c8i.8xlarge | 8 | 32 | 128 | 
| c8i.12xlarge | 16 | 64 | 192 | 
| c8i.16xlarge | 16 | 64 | 256 | 
| c8i.24xlarge | 16 | 128 | 384 | 
| c8i.32xlarge | 16 | 128 | 512 | 
| c8i.48xlarge | 32 | 128 | 768 | 
| c8i.96xlarge | 32 | 128 | 1536 | 
| c8i.metal-48xl | 32 | 128 | 768 | 
| c8i.metal-96xl | 32 | 128 | 1536 | 
| C8id | 
| c8id.large | 2 | 2. | 6 | 
| c8id.xlarge | 4 | 4 | 16 | 
| c8id.2xlarge | 8 | 8 | 32 | 
| c8id.4xlarge | 8 | 16 | 64 | 
| c8id.8xlarge | 8 | 32 | 128 | 
| c8id.12xlarge | 16 | 64 | 192 | 
| c8id.16xlarge | 16 | 64 | 256 | 
| c8id.24xlarge | 16 | 128 | 384 | 
| c8id.32xlarge | 16 | 128 | 512 | 
| c8id.48xlarge | 32 | 128 | 768 | 
| c8id.96xlarge | 32 | 128 | 1536 | 
| c8id.metal-48xl | 32 | 128 | 768 | 
| c8id.metal-96xl | 32 | 128 | 1536 | 
| C8i-flex | 
| c8i-flex.large | 1 | 1 | 3 | 
| c8i-flex.xlarge | 2 | 2. | 8 | 
| c8i-flex.2xlarge | 4 | 4 | 16 | 
| c8i-flex.4xlarge | 4 | 8 | 32 | 
| c8i-flex.8xlarge | 4 | 16 | 64 | 
| c8i-flex.12xlarge | 8 | 32 | 96 | 
| c8i-flex.16xlarge | 8 | 32 | 128 | 

**nota**  
\$1 Estos tipos de instancia cuentan con varias tarjetas de red. Otros tipos de instancia cuentan con una sola tarjeta de red. Para obtener más información, consulte [Tarjetas de red](using-eni.md#network-cards). 

### Optimizada para memoria
<a name="supported-instances-ena-queues-mo"></a>


| Tipo de instancia | Colas de ENA predeterminadas por interfaz | Número máximo de colas ENA por interfaz | Número máximo de colas ENA por instancia | 
| --- | --- | --- | --- | 
| R6i | 
| r6i.large | 2 | 2. | 6 | 
| r6i.xlarge | 4 | 4 | 16 | 
| r6i.2xlarge | 8 | 8 | 32 | 
| r6i.4xlarge | 8 | 16 | 64 | 
| r6i.8xlarge | 8 | 32 | 64 | 
| r6i.12xlarge | 8 | 32 | 64 | 
| r6i.16xlarge | 8 | 32 | 120 | 
| r6i.24xlarge | 8 | 32 | 120 | 
| r6i.32xlarge | 8 | 32 | 120 | 
| R6id | 
| r6id.large | 2 | 2. | 6 | 
| r6id.xlarge | 4 | 4 | 16 | 
| r6id.2xlarge | 8 | 8 | 32 | 
| r6id.4xlarge | 8 | 16 | 64 | 
| r6id.8xlarge | 8 | 32 | 64 | 
| r6id.12xlarge | 8 | 32 | 64 | 
| r6id.16xlarge | 8 | 32 | 120 | 
| r6id.24xlarge | 8 | 32 | 120 | 
| r6id.32xlarge | 8 | 32 | 120 | 
| R6idn | 
| r6idn.large | 2 | 2. | 6 | 
| r6idn.xlarge | 4 | 4 | 16 | 
| r6idn.2xlarge | 8 | 8 | 32 | 
| r6idn.4xlarge | 8 | 16 | 64 | 
| r6idn.8xlarge | 16 | 32 | 128 | 
| r6idn.12xlarge | 16 | 32 | 128 | 
| r6idn.16xlarge | 16 | 32 | 240 | 
| r6idn.24xlarge | 32 | 32 | 480 | 
| r6idn.32xlarge | 32 | 32 | 512 \$1 | 
| R6in | 
| r6in.large | 2 | 2. | 6 | 
| r6in.xlarge | 4 | 4 | 16 | 
| r6in.2xlarge | 8 | 8 | 32 | 
| r6in.4xlarge | 8 | 16 | 64 | 
| r6in.8xlarge | 16 | 32 | 128 | 
| r6in.12xlarge | 16 | 32 | 128 | 
| r6in.16xlarge | 16 | 32 | 240 | 
| r6in.24xlarge | 32 | 32 | 480 | 
| r6in.32xlarge | 32 | 32 | 512 \$1 | 
| R8a | 
| r8a.medium | 1 | 1 | 3 | 
| r8a.large | 2 | 2. | 6 | 
| r8a.xlarge | 4 | 4 | 16 | 
| r8a.2xlarge | 8 | 8 | 32 | 
| r8a.4xlarge | 8 | 16 | 64 | 
| r8a.8xlarge | 8 | 32 | 128 | 
| r8a.12xlarge | 16 | 64 | 192 | 
| r8a.16xlarge | 16 | 64 | 256 | 
| r8a.24xlarge | 16 | 128 | 384 | 
| r8a.48xlarge | 32 | 128 | 768 | 
| r8a.metal-24xl | 16 | 128 | 384 | 
| r8a.metal-48xl | 32 | 128 | 768 | 
| R8gb | 
| r8gb.medium | 1 | 1 | 2 | 
| r8gb.large | 2 | 2. | 6 | 
| r8gb.xlarge | 4 | 4 | 16 | 
| r8gb.2xlarge | 8 | 8 | 32 | 
| r8gb.4xlarge | 8 | 16 | 64 | 
| r8gb.8xlarge | 8 | 32 | 128 | 
| r8gb.12xlarge | 16 | 64 | 192 | 
| r8gb.16xlarge | 16 | 64 | 256 | 
| r8gb.24xlarge | 16 | 128 | 384 | 
| r8gb.48xlarge | 32 | 128 | 768 \$1 | 
| r8gb.metal-24xl | 32 | 128 | 768 | 
| r8gb.metal-48xl | 32 | 128 | 768 \$1 | 
| R8gn | 
| r8gn.medium | 1 | 1 | 2 | 
| r8gn.large | 2 | 2. | 6 | 
| r8gn.xlarge | 4 | 4 | 16 | 
| r8gn.2xlarge | 8 | 8 | 32 | 
| r8gn.4xlarge | 8 | 16 | 64 | 
| r8gn.8xlarge | 8 | 32 | 128 | 
| r8gn.12xlarge | 16 | 64 | 192 | 
| r8gn.16xlarge | 16 | 64 | 256 | 
| r8gn.24xlarge | 16 | 128 | 384 | 
| r8gn.48xlarge | 32 | 128 | 768 \$1 | 
| r8gn.metal-24xl | 32 | 128 | 768 | 
| r8gn.metal-48xl | 32 | 128 | 768 \$1 | 
| R8i | 
| r8i.large | 2 | 2. | 6 | 
| r8i.xlarge | 4 | 4 | 16 | 
| r8i.2xlarge | 8 | 8 | 32 | 
| r8i.4xlarge | 8 | 16 | 64 | 
| r8i.8xlarge | 8 | 32 | 128 | 
| r8i.12xlarge | 16 | 64 | 192 | 
| r8i.16xlarge | 16 | 64 | 256 | 
| r8i.24xlarge | 16 | 128 | 384 | 
| r8i.32xlarge | 16 | 128 | 512 | 
| r8i.48xlarge | 32 | 128 | 768 | 
| r8i.96xlarge | 32 | 128 | 1536 | 
| r8i.metal-48xl | 32 | 128 | 768 | 
| r8i.metal-96xl | 32 | 128 | 1536 | 
| R8id | 
| r8id.large | 2 | 2. | 6 | 
| r8id.xlarge | 4 | 4 | 16 | 
| r8id.2xlarge | 8 | 8 | 32 | 
| r8id.4xlarge | 8 | 16 | 64 | 
| r8id.8xlarge | 8 | 32 | 128 | 
| r8id.12xlarge | 16 | 64 | 192 | 
| r8id.16xlarge | 16 | 64 | 256 | 
| r8id.24xlarge | 16 | 128 | 384 | 
| r8id.32xlarge | 16 | 128 | 512 | 
| r8id.48xlarge | 32 | 128 | 768 | 
| r8id.96xlarge | 32 | 128 | 1536 | 
| r8id.metal-48xl | 32 | 128 | 768 | 
| r8id.metal-96xl | 32 | 128 | 1536 | 
| R8i-flex | 
| r8i-flex.large | 1 | 1 | 3 | 
| r8i-flex.xlarge | 2 | 2. | 8 | 
| r8i-flex.2xlarge | 4 | 4 | 16 | 
| r8i-flex.4xlarge | 4 | 8 | 32 | 
| r8i-flex.8xlarge | 4 | 16 | 64 | 
| r8i-flex.12xlarge | 8 | 32 | 96 | 
| r8i-flex.16xlarge | 8 | 32 | 128 | 
| X8aedz | 
| x8aedz.large | 2 | 2. | 8 | 
| x8aedz.xlarge | 4 | 4 | 16 | 
| x8aedz.3xlarge | 4 | 16 | 48 | 
| x8aedz.6xlarge | 8 | 32 | 96 | 
| x8aedz.12xlarge | 8 | 64 | 192 | 
| x8aedz.24xlarge | 16 | 128 | 384 | 
| x8aedz.metal-12xl | 8 | 64 | 192 | 
| x8aedz.metal-24xl | 16 | 128 | 384 | 
| X8i | 
| x8i.large | 2 | 2. | 6 | 
| x8i.xlarge | 4 | 4 | 16 | 
| x8i.2xlarge | 8 | 8 | 32 | 
| x8i.4xlarge | 8 | 16 | 64 | 
| x8i.8xlarge | 8 | 32 | 128 | 
| x8i.12xlarge | 16 | 64 | 192 | 
| x8i.16xlarge | 16 | 64 | 256 | 
| x8i.24xlarge | 16 | 128 | 384 | 
| x8i.32xlarge | 16 | 128 | 512 | 
| x8i.48xlarge | 32 | 128 | 768 | 
| x8i.64xlarge | 32 | 128 | 1024 | 
| x8i.96xlarge | 32 | 128 | 1536 | 
| x8i.metal-48xl | 32 | 128 | 768 | 
| x8i.metal-96xl | 32 | 128 | 1536 | 

**nota**  
\$1 Estos tipos de instancia cuentan con varias tarjetas de red. Otros tipos de instancia cuentan con una sola tarjeta de red. Para obtener más información, consulte [Tarjetas de red](using-eni.md#network-cards). 

## Modificación del número de colas
<a name="modify"></a>

Puede modificar el número de colas de ENA con Consola de administración de AWS o AWS CLI. En la Consola de administración de AWS, la configuración de las colas de ENA está disponible en los ajustes de cada **interfaz de red**.

Para modificar el número de colas de ENA desde la AWS CLI, use uno de los siguientes comandos. Antes de modificar el número de colas, use el siguiente comando para comprobar la cantidad actual de colas.

```
aws ec2 describe-instances --instance-id i-1234567890abcdef0
```

**nota**  
La instancia debe detenerse antes de modificar el número de colas de ENA.
El valor de las colas de ENA debe ser una potencia de 2, como 1, 2, 4, 8, 16, 32, etc.
El número de colas asignadas a una sola ENI no puede superar el número de vCPU disponibles en la instancia.

`[attach-network-interface](https://docs.aws.amazon.com/cli/latest/reference/ec2/attach-network-interface.html)`

En el siguiente ejemplo, se configuran 32 colas de ENA en una ENI.

```
aws ec2 attach-network-interface \
  --network-interface-id eni-001aa1bb223cdd4e4 \
  --instance-id i-1234567890abcdef0 \
  --device-index 1 \
  --ena-queue-count 32
```

`[run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html)`

En el siguiente ejemplo, se configuran 2 colas de ENA en cada una de las 3 ENI.

```
aws ec2 run-instances \
  --image-id ami-12ab3c30 \
  --instance-type c6i.large \
  --min-count 1 \
  --max-count 1 \
  --network-interfaces \
    "[{\"DeviceIndex\":0,\"SubnetId\":\"subnet-123456789012a345a\",\"EnaQueueCount\":2},
      {\"DeviceIndex\":1,\"SubnetId\":\"subnet-123456789012a345a\",\"EnaQueueCount\":2},
      {\"DeviceIndex\":2,\"SubnetId\":\"subnet-123456789012a345a\",\"EnaQueueCount\":2}]"
```

`[modify-network-interface-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-network-interface-attribute.html)`

En el siguiente ejemplo, se configuran 32 colas de ENA en una ENI.

```
aws ec2 modify-network-interface-attribute \
--network-interface-id eni-1234567890abcdef0 \
--attachment AttachmentId=eni-attach-12345678,EnaQueueCount=32
```

En el siguiente ejemplo, la cantidad de ENA se restablece al valor predeterminado.

```
aws ec2 modify-network-interface-attribute \
--network-interface-id eni-1234567890abcdef0 \
--attachment AttachmentId=eni-attach-12345678,DefaultEnaQueueCount=true
```

# Solución de problemas del controlador del kernel de ENA en Linux
<a name="troubleshooting-ena"></a>

Elastic Network Adapter (ENA) se ha diseñado para mejorar la salud del sistema operativo y reducir la posibilidad de interrupción a largo plazo debido a errores o a comportamientos de hardware inesperados. La arquitectura ENA mantiene los errores de la unidad o el dispositivo lo más transparente posible para el sistema. En este tema se proporciona información sobre cómo solucionar problemas de ENA.

Si no puede conectarse a la instancia, comience por la sección [Solucionar problemas de conectividad](#ena-connectivity-issues).

Si experimenta una degradación del rendimiento después de migrar a un tipo de instancia de sexta generación, consulte el artículo [What do I need to do before I migrate my EC2 instance to a sixth generation instance to make sure that I get maximum network performance?](https://repost.aws/knowledge-center/migrate-to-gen6-ec2-instance)

Si puede conectarse a la instancia, puede recopilar la información de diagnóstico usando la detección de errores y los mecanismos de recuperación que se abordan en secciones posteriores dentro de este tema.

**Topics**
+ [Solucionar problemas de conectividad](#ena-connectivity-issues)
+ [Mecanismo Keep-alive](#ena-keep-alive)
+ [Registrar tiempo de espera de lectura](#register-read-timeout-ena)
+ [Statistics](#statistics-ena)
+ [Registros de errores de controlador en syslog](#driver-error-logs-ena)
+ [Notificaciones de configuración subóptimas](#ts-ena-sub-opt-config-notification)

## Solucionar problemas de conectividad
<a name="ena-connectivity-issues"></a>

Si pierde la conexión mientras habilita la red mejorada, puede ser que el módulo `ena` sea incompatible con el kernel en ejecución de la instancia. Esto puede ocurrir si instala el módulo para una versión de kernel específica (sin **dkms** o con un archivo **dkms.conf** incorrectamente configurado) y después se actualiza el kernel de la instancia. Si el kernel de la instancia que está cargado al arrancar no tiene un módulo `ena` correctamente instalado, la instancia no reconocerá el adaptador de red y la instancia no será alcanzable.

Habilitar las redes mejoradas para una instancia o AMI de PV también puede hacer que la instancia no sea alcanzable.

Si la instancia no es alcanzable después de habilitar las redes mejoradas con ENA, puede deshabilitar el atributo `enaSupport` de la instancia y volverá al adaptador de red.

**Para inhabilitar las redes mejoradas con ENA (instancias respaldadas por EBS)**

1. En el equipo local, detenga la instancia mediante la consola de Amazon EC2, el comando [stop-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html) (AWS CLI) o el cmdlet [Stop-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2Instance.html) (Herramientas de AWS para PowerShell).

1. Desde el equipo local, deshabilite el atributo de red mejorada mediante el comando [modify-instance-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html) con la opción `--no-ena-support` o el cmdlet [Edit-EC2InstanceAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html) con el parámetro `-EnaSupport $false`.

1. En el equipo local, inicie la instancia mediante la consola de Amazon EC2, el comando [start-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html) o el cmdlet [Start-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Start-EC2Instance.html).

1. (Opcional) Conéctese a la instancia e intente reinstalar el módulo `ena` con la versión de kernel actual siguiendo los pasos de [Habilitar redes mejoradas con ENA en las instancias de EC2](enhanced-networking-ena.md).<a name="disable-enhanced-networking-ena-instance-store"></a>

**Para deshabilitar las redes mejoradas con ENA (instancias con respaldo en el almacenamiento de la instancia)**

1. Cree una nueva AMI como se describe en [Creación de una AMI basada en Amazon S3](creating-an-ami-instance-store.md).

1. Al registrar la AMI, asegúrese de incluir la opción `--no-ena-support` en el comando [stop-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html) (AWS CLI) o el parámetro `-EnaSupport $false` en el cmdlet [Register-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html).

## Mecanismo Keep-alive
<a name="ena-keep-alive"></a>

El dispositivo ENA publica eventos keep-alive a intervalos establecidos (por lo general una vez por segundo). El controlador de ENA implementa un mecanismo watchdog para detectar la presencia de estos mensajes keep-alive. Si hay uno o varios mensajes, el watchdog se rearma; de lo contrario, el controlador concluye que el dispositivo experimentó un error y hace lo siguiente:
+ Vuelca las estadísticas actuales en el syslog
+ Restablece el dispositivo ENA
+ Restablece el estado del controlador ENA

El procedimiento anterior puede dar lugar a cierta pérdida de tráfico durante un breve periodo (las conexiones TCP deberían poder recuperarse), pero no debería afectar al usuario en nada más.

El dispositivo ENA también puede solicitar indirectamente un procedimiento de restablecimiento de dispositivos, no enviando una notificación keep-alive, por ejemplo, si el dispositivo de ENA llega a un estado desconocido después de cargar una configuración irrecuperable.

El siguiente es un ejemplo del procedimiento de restablecimiento:

```
[18509.800135] ena 0000:00:07.0 eth1: Keep alive watchdog timeout. // The watchdog process initiates a reset
[18509.815244] ena 0000:00:07.0 eth1: Trigger reset is on		
[18509.825589] ena 0000:00:07.0 eth1: tx_timeout: 0 // The driver logs the current statistics
[18509.834253] ena 0000:00:07.0 eth1: io_suspend: 0
[18509.842674] ena 0000:00:07.0 eth1: io_resume: 0
[18509.850275] ena 0000:00:07.0 eth1: wd_expired: 1
[18509.857855] ena 0000:00:07.0 eth1: interface_up: 1
[18509.865415] ena 0000:00:07.0 eth1: interface_down: 0
[18509.873468] ena 0000:00:07.0 eth1: admin_q_pause: 0
[18509.881075] ena 0000:00:07.0 eth1: queue_0_tx_cnt: 0
[18509.888629] ena 0000:00:07.0 eth1: queue_0_tx_bytes: 0
[18509.895286] ena 0000:00:07.0 eth1: queue_0_tx_queue_stop: 0
.......
........
[18511.280972] ena 0000:00:07.0 eth1: free uncompleted tx skb qid 3 idx 0x7 // At the end of the down process, the driver discards incomplete packets.
[18511.420112] [ENA_COM: ena_com_validate_version] ena device version: 0.10 //The driver begins its up process
[18511.420119] [ENA_COM: ena_com_validate_version] ena controller version: 0.0.1 implementation version 1
[18511.420127] [ENA_COM: ena_com_admin_init] ena_defs : Version:[b9692e8] Build date [Wed Apr  6 09:54:21 IDT 2016]
[18512.252108] ena 0000:00:07.0: Device watchdog is Enabled
[18512.674877] ena 0000:00:07.0: irq 46 for MSI/MSI-X
[18512.674933] ena 0000:00:07.0: irq 47 for MSI/MSI-X
[18512.674990] ena 0000:00:07.0: irq 48 for MSI/MSI-X
[18512.675037] ena 0000:00:07.0: irq 49 for MSI/MSI-X
[18512.675085] ena 0000:00:07.0: irq 50 for MSI/MSI-X
[18512.675141] ena 0000:00:07.0: irq 51 for MSI/MSI-X
[18512.675188] ena 0000:00:07.0: irq 52 for MSI/MSI-X
[18512.675233] ena 0000:00:07.0: irq 53 for MSI/MSI-X
[18512.675279] ena 0000:00:07.0: irq 54 for MSI/MSI-X
[18512.772641] [ENA_COM: ena_com_set_hash_function] Feature 10 isn't supported
[18512.772647] [ENA_COM: ena_com_set_hash_ctrl] Feature 18 isn't supported
[18512.775945] ena 0000:00:07.0: Device reset completed successfully // The reset process is complete
```

## Registrar tiempo de espera de lectura
<a name="register-read-timeout-ena"></a>

La arquitectura de ENA sugiere un uso limitado de operaciones de lectura I/O mapeadas a la memoria, MMIO. El controlador del dispositivo de ENA tiene acceso a los registros de MMIO solo durante el procedimiento de inicialización. 

Si los logs del controlador (disponibles en el resultado de **dmesg**) indican errores en las operaciones de lectura, puede ser debido a un controlador incompatible o compilado incorrectamente, un dispositivo de hardware ocupado o un error de hardware.

Las entradas de registro intermitentes que indican errores en operaciones de lectura no deben considerarse un problema, el controlador volverá a intentarlas en este caso. Sin embargo, una secuencia de entradas de registro que contenga errores de lectura indica un problema de controlador o de hardware.

A continuación se ofrece un ejemplo de una entrada de registro de controlador que indica un error en una operación de lectura debido a un tiempo de espera:

```
[ 47.113698] [ENA_COM: ena_com_reg_bar_read32] reading reg failed for timeout. expected: req id[1] offset[88] actual: req id[57006] offset[0] 
[ 47.333715] [ENA_COM: ena_com_reg_bar_read32] reading reg failed for timeout. expected: req id[2] offset[8] actual: req id[57007] offset[0] 
[ 47.346221] [ENA_COM: ena_com_dev_reset] Reg read32 timeout occurred
```

## Statistics
<a name="statistics-ena"></a>

Si experimente problemas de latencia o rendimiento de red insuficiente, recupere las estadísticas del dispositivo y examínelas. Estas estadísticas se obtienen mediante **ethtool**, como se muestra abajo:

```
[ec2-user ~]$ ethtool -S ethN
NIC statistics:
	tx_timeout: 0
	suspend: 0
	resume: 0
	wd_expired: 0
	interface_up: 1
	interface_down: 0
	admin_q_pause: 0
	bw_in_allowance_exceeded: 0
	bw_out_allowance_exceeded: 0
	pps_allowance_exceeded: 0
	conntrack_allowance_available: 450878
	conntrack_allowance_exceeded: 0
	linklocal_allowance_exceeded: 0
	queue_0_tx_cnt: 4329
	queue_0_tx_bytes: 1075749
	queue_0_tx_queue_stop: 0
	...
```

Los parámetros de resultado del siguiente comando se describen a continuación:

`tx_timeout`: *N*  
El número de veces que se activó el watchdog Netdev.

`suspend`: *N*  
El número de veces que el controlador realizó una operación de suspensión.

`resume`: *N*  
El número de veces que el controlador realizó una operación de reanudación.

`wd_expired`: *N*  
El número de veces que el controlador no recibió el evento keep-alive en los tres segundos anteriores.

`interface_up`: *N*  
El número de veces que se activó la interfaz de ENA.

`interface_down`: *N*  
El número de veces que se desactivó la interfaz de ENA.

`admin_q_pause`: *N*  
El número de veces que la cola de administración no se encontró en un estado de ejecución.

`bw_in_allowance_exceeded`: *N*  
El número de paquetes formados en cola o eliminados el ancho de banda agregado entrante superó el máximo de la instancia.

`bw_out_allowance_exceeded`: *N*  
El número de paquetes en cola o eliminados porque el ancho de banda agregado saliente superó el máximo de la instancia.

`pps_allowance_exceeded`: *N*  
El número de paquetes en cola o eliminados porque el PPS bidireccional superó el máximo de la instancia. \$1

`conntrack_allowance_available`: *N*  
La cantidad de conexiones rastreadas que puede establecer la instancia antes de alcanzar el límite de conexiones rastreadas de ese tipo de instancia. Solo disponible para instancias basadas en Nitro. No compatibles con instancias de FreeBSD ni con entornos de DPDK.

`conntrack_allowance_exceeded`: *N*  
El número de paquetes eliminados porque el seguimiento de conexiones superó el máximo de la instancia y no se pudieron establecer nuevas conexiones. Esto puede provocar la pérdida de paquetes para el tráfico hacia o desde la instancia.

`linklocal_allowance_exceeded`: *N*  
El número de paquetes eliminados porque el PPS del tráfico a los servicios proxy locales superó el máximo para la interfaz de red. Esto afecta al tráfico del servicio DNS de Amazon, el servicio de metadatos de instancias y el Servicio de sincronización temporal de Amazon, pero no afecta al tráfico de los solucionadores DNS personalizados.

`queue_N_tx_cnt`: *N*  
El número de paquetes transmitidos para esta cola.

`queue_N_tx_bytes`: *N*  
El número de bytes transmitidos para esta cola.

`queue_N_tx_queue_stop`: *N*  
El número de veces que la cola *N* se llenó y se paró.

`queue_N_tx_queue_wakeup`: *N*  
El número de veces que la cola *N* se reanudó después de pararse.

`queue_N_tx_dma_mapping_err`: *N*  
Cuenta de errores de acceso directo a memoria. Si este valor no es 0, significa que los recursos del sistema están bajos.

`queue_N_tx_linearize`: *N*  
El número de veces que se intentó la linearización SKB para esta cola.

`queue_N_tx_linearize_failed`: *N*  
El número de veces que la linearización SKB para esta cola dio error.

`queue_N_tx_napi_comp`: *N*  
El número de veces que el controlador `napi` llamó a `napi_complete` para esta cola.

`queue_N_tx_tx_poll`: *N*  
El número de veces que el controlador `napi` se programó para esta cola.

`queue_N_tx_doorbells`: *N*  
El número de timbres de transmisión para esta cola.

`queue_N_tx_prepare_ctx_err`: *N*  
El número de veces que `ena_com_prepare_tx` dio error para esta cola.

`queue_N_tx_bad_req_id`: *N*  
`req_id` no válido para esta cola. El `req_id` válido es cero, menos `queue_size`, menos 1. 

`queue_N_tx_llq_buffer_copy`: *N*  
El número de paquetes cuyo tamaño de encabezados es mayor que la entrada llq para esta cola.

`queue_N_tx_missed_tx`: *N*  
El número de paquetes que quedaron incompletos para esta cola.

`queue_N_tx_unmask_interrupt`: *N*  
El número de veces que se desenmascaró la interrupción de tx para esta cola.

`queue_N_rx_cnt`: *N*  
El número de paquetes que se recibió para esta cola.

`queue_N_rx_bytes`: *N*  
El número de bytes que se recibió para esta cola.

`queue_N_rx_rx_copybreak_pkt`: *N*  
El número de veces que la cola rx recibió un paquete cuyo tamaño es menor que el del paquete rx\$1copybreak para esta cola.

`queue_N_rx_csum_good`: *N*  
El número de veces que la cola rx recibió un paquete en el que se verificó la suma de comprobación y era correcta para esta cola.

`queue_N_rx_refil_partial`: *N*  
El número de veces que el controlador no logró rellenar la porción vacía de la cola rx con los búferes para esta cola. Si este valor no es 0, indica que los recursos de memoria están bajos.

`queue_N_rx_bad_csum`: *N*  
El número de veces que la cola `rx` tuvo una suma de comprobación incorrecta para esta cola (solo si se admite la descarga de la suma de comprobación de rx).

`queue_N_rx_page_alloc_fail`: *N*  
El número de veces que la asignación de página para esta cola dio error. Si este valor no es 0, indica que los recursos de memoria están bajos.

`queue_N_rx_skb_alloc_fail`: *N*  
El número de veces que la asignación de SKB para esta cola dio error. Si este valor no es 0, indica que los recursos del sistema están bajos.

`queue_N_rx_dma_mapping_err`: *N*  
Cuenta de errores de acceso directo a memoria. Si este valor no es 0, significa que los recursos del sistema están bajos.

`queue_N_rx_bad_desc_num`: *N*  
Demasiados búferes por paquete. Si este valor no es 0, indica el uso de búferes muy pequeños.

`queue_N_rx_bad_req_id`: *N*  
El req\$1id para esta cola no es válido. El req\$1id válido es de [0, queue\$1size - 1].

`queue_N_rx_empty_rx_ring`: *N*  
El número de veces que la cola rx estuvo vacía para esta cola.

`queue_N_rx_csum_unchecked`: *N*  
El número de veces que la cola rx recibió un paquete cuya suma de comprobación no se verificó para esta cola.

`queue_N_rx_xdp_aborted`: *N*  
El número de veces que un paquete XDP se clasificó como XDP\$1ABORT.

`queue_N_rx_xdp_drop`: *N*  
El número de veces que un paquete XDP se clasificó como XDP\$1DROP.

`queue_N_rx_xdp_pass`: *N*  
El número de veces que un paquete XDP se clasificó como XDP\$1PASS.

`queue_N_rx_xdp_tx`: *N*  
El número de veces que un paquete XDP se clasificó como XDP\$1TX.

`queue_N_rx_xdp_invalid`: *N*  
El número de veces que el código devuelto XDP para el paquete no era válido.

`queue_N_rx_xdp_redirect`: *N*  
El número de veces que un paquete XDP se clasificó como XDP\$1REDIRECT.

`queue_N_xdp_tx_cnt`: *N*  
El número de paquetes transmitidos para esta cola.

`queue_N_xdp_tx_bytes`: *N*  
El número de bytes transmitidos para esta cola.

`queue_N_xdp_tx_queue_stop`: *N*  
El número de veces que esta cola se llenó y se detuvo.

`queue_N_xdp_tx_queue_wakeup`: *N*  
El número de veces que esta cola se reanudó después de detenerse.

`queue_N_xdp_tx_dma_mapping_err`: *N*  
Cuenta de errores de acceso directo a memoria. Si este valor no es 0, significa que los recursos del sistema están bajos.

`queue_N_xdp_tx_linearize`: *N*  
El número de veces que se intentó la linealización del búfer XDP para esta cola.

`queue_N_xdp_tx_linearize_failed`: *N*  
El número de veces que se produjo un error en la linealización del búfer XDP para esta cola.

`queue_N_xdp_tx_napi_comp`: *N*  
El número de veces que el controlador napi llamó napi\$1complete para esta cola.

`queue_N_xdp_tx_tx_poll`: *N*  
El número de veces que se programó el controlador napi para esta cola.

`queue_N_xdp_tx_doorbells`: *N*  
El número de timbres de transmisión para esta cola.

`queue_N_xdp_tx_prepare_ctx_err`: *N*  
El número de veces que ena\$1com\$1prepare\$1tx dio error para esta cola. Este valor debe ser siempre cero; si no es así, consulte los logs del controlador.

`queue_N_xdp_tx_bad_req_id`: *N*  
El req\$1id para esta cola no es válido. El req\$1id válido es de [0, queue\$1size - 1].

`queue_N_xdp_tx_llq_buffer_copy`: *N*  
El número de paquetes cuyos encabezados se copiaron usando la copia del búfer llq para esta cola.

`queue_N_xdp_tx_missed_tx`: *N*  
El número de veces que una entrada de cola tx perdió un tiempo de espera de finalización para esta cola.

`queue_N_xdp_tx_unmask_interrupt`: *N*  
El número de veces que se desenmascaró la interrupción de tx para esta cola.

`ena_admin_q_aborted_cmd`: *N*  
El número total de comandos admin que se anularon. Esto sucede, por lo general, durante el procedimiento de autorrecuperación.

`ena_admin_q_submitted_cmd`: *N*  
El número de timbres de cola admin.

`ena_admin_q_completed_cmd`: *N*  
El número de finalizaciones de la cola admin.

`ena_admin_q_out_of_space`: *N*  
El número de veces que el controlador intentó enviar un nuevo comando admin, pero la cola estaba llena.

`ena_admin_q_no_completion`: *N*  
El número de veces que el controlador no logró una finalización admin para un comando.

## Registros de errores de controlador en syslog
<a name="driver-error-logs-ena"></a>

El controlador de ENA escribe mensajes de registro en **syslog** durante el arranque del sistema. Puede examinarlo para buscar errores si está experimentando problemas. A continuación puede ver un ejemplo de información registrada por el controlador de ENA en **syslog** durante el arranque del sistema, junto con algunas anotaciones para mensajes seleccionados.

```
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  478.416939] [ENA_COM: ena_com_validate_version] ena device version: 0.10
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  478.420915] [ENA_COM: ena_com_validate_version] ena controller version: 0.0.1 implementation version 1
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  479.256831] ena 0000:00:03.0: Device watchdog is Enabled
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  479.672947] ena 0000:00:03.0: creating 8 io queues. queue size: 1024
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  479.680885] [ENA_COM: ena_com_init_interrupt_moderation] Feature 20 isn't supported  // Interrupt moderation is not supported by the device
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  479.691609] [ENA_COM: ena_com_get_feature_ex] Feature 10 isn't supported // RSS HASH function configuration is not supported by the device
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  479.694583] [ENA_COM: ena_com_get_feature_ex] Feature 18 isn't supported //RSS HASH input source configuration is not supported by the device 
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  479.697433] [ENA_COM: ena_com_set_host_attributes] Set host attribute isn't supported
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  479.701064] ena 0000:00:03.0 (unnamed net_device) (uninitialized): Cannot set host attributes
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  479.704917] ena 0000:00:03.0: Elastic Network Adapter (ENA) found at mem f3000000, mac addr 02:8a:3c:1e:13:b5 Queues 8
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  480.805037] EXT4-fs (xvda1): re-mounted. Opts: (null)
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  481.025842] NET: Registered protocol family 10
```

**¿Qué tipo de errores se puede omitir?**  
Las advertencias siguientes que aparecen en el registro de errores del sistema se puede omitir para ENA:

La configuración de atributos de host no es compatible  
Los atributos de host no se admiten con este dispositivo.

Error al asignar un búfer para la cola de recepción (rx queue)  
Este en un error recuperable que indica que podría haber habido una presión de memoria cuando se produjo.

La característica *X* no es compatible  
La característica mencionada no es compatible con ENA. Entre los valores posibles para *X* se incluyen:  
+ 10: la configuración de la función Hash de RSS no es compatible con este dispositivo.
+ 12: la configuración de la tabla de indirección de RSS no es compatible con este dispositivo.
+ 18: la configuración de la entrada de Hash de RSS no es compatible con este dispositivo.
+ 20: la moderación de interrupciones no es compatible con este dispositivo.
+ 27: el controlador del Elastic Network Adapter no admite sondear las capacidades de Ethernet desde snmpd.

La configuración de AENQ ha fallado  
El ENA no es compatible con la configuración AENQ.

Intentando configurar eventos de AENQ no compatibles  
Este error indica que se está intentando establecer un grupo de eventos de AENQ no admitido por ENA.

## Notificaciones de configuración subóptimas
<a name="ts-ena-sub-opt-config-notification"></a>

El dispositivo ENA detecta ajustes de configuración subóptimos en el controlador que usted puede cambiar. El dispositivo notifica al controlador ENA y registra una advertencia en la consola. En el ejemplo siguiente se muestra el formato del mensaje de advertencia.

```
Sub-optimal configuration notification code: 1. Refer to AWS ENA documentation for additional details and mitigation options.
```

La siguiente lista muestra los detalles del código de la notificación y las acciones recomendadas en caso de que la configuración no sea óptima.
+ **Código 1: no se recomienda el uso de ENA Express con una configuración de LLQ amplio**

  El ENI de ENA Express está configurado con un LLQ amplio. Esta configuración no es óptima y podría afectar al rendimiento de ENA Express. Le recomendamos que desactive la configuración de LLQ amplio cuando utilice los ENI de ENA Express de la siguiente manera.

  ```
  sudo rmmod ena && sudo modprobe ena force_large_llq_header=0
  ```

  Para obtener más información sobre la configuración óptima de ENA Express, consulte [Mejorar el rendimiento de la red entre las instancias de EC2 con ENA Express](ena-express.md).
+ **Código 2: no se recomienda la ENI de ENA Express con una profundidad de cola de Tx inferior a la óptima**

  La ENI de ENA Express está configurada con una profundidad de cola de Tx inferior a la óptima. Esta configuración podría afectar al rendimiento de ENA Express. Le recomendamos que amplíe todas las colas de Tx al valor máximo para la interfaz de red cuando utilice las ENI de ENA Express de la siguiente manera.

  Puede ejecutar los siguientes comandos **ethtool** para ajustar el tamaño de LLQ. Para obtener más información sobre cómo controlar, consultar y habilitar Wide-LLQ, consulte el tema [Large Low-Latency Queue (Large LLQ)](https://github.com/amzn/amzn-drivers/tree/master/kernel/linux/ena#large-low-latency-queue-large-llq) del controlador del kernel de Linux para la documentación ENA en el *repositorio de GitHub de Amazon Drivers.*

  ```
  ethtool -g interface
  ```

  Defina sus colas de Tx a la profundidad máxima:

  ```
  ethtool -G interface tx depth
  ```

  Para obtener más información sobre la configuración óptima de ENA Express, consulte [Mejorar el rendimiento de la red entre las instancias de EC2 con ENA Express](ena-express.md).
+ **Código 3: ENA con un tamaño LLQ normal y un tráfico de paquetes de Tx que supera el tamaño máximo de encabezado admitido**

  De forma predeterminada, ENA LLQ admite un tamaño de encabezado de paquete Tx de hasta 96 bytes. Si el tamaño del encabezado del paquete es superior a 96 bytes, el paquete se descarta. Para mitigar este problema, le recomendamos que habilite Wide-LLQ, que aumenta el tamaño del encabezado de paquete Tx admitido hasta un máximo de 224 bytes.

  Sin embargo, al activar Wide-LLQ, el tamaño máximo del anillo Tx se reduce de 1000 a 512 entradas. Wide-LLQ está activado de forma predeterminada para todos los tipos de instancias de Nitro v4 y posteriores.
  + Los tipos de instancias de Nitro v4 tienen un tamaño de anillo Tx Wide-LLQ máximo predeterminado de 512 entradas, que no se puede cambiar.
  + Los tipos de instancias de Nitro v5 tienen un tamaño de anillo Tx Wide-LLQ predeterminado de 512 entradas, que puede aumentar hasta 1000 entradas.

  Puede ejecutar los siguientes comandos **ethtool** para ajustar el tamaño de LLQ. Para obtener más información sobre cómo controlar, consultar y habilitar Wide-LLQ, consulte el tema [Large Low-Latency Queue (Large LLQ)](https://github.com/amzn/amzn-drivers/tree/master/kernel/linux/ena#large-low-latency-queue-large-llq) del controlador del kernel de Linux para la documentación ENA en el *repositorio de GitHub de Amazon Drivers.*

  Encuentre la profundidad máxima para sus colas de Tx:

  ```
  ethtool -g interface
  ```

  Defina sus colas de Tx a la profundidad máxima:

  ```
  ethtool -G interface tx depth
  ```

# Solución de problemas del controlador Elastic Network Adapter para Windows
<a name="troubleshoot-ena-driver"></a>

El Elastic Network Adapter (ENA) está diseñado para mejorar el estado del sistema operativo y reducir el comportamiento inesperado del hardware o los errores que pueden interrumpir el funcionamiento de su instancia de Windows. La arquitectura ENA mantiene los errores de la unidad o el dispositivo lo más transparente posible para el sistema operativo.

## Recopilar información de diagnóstico de la instancia
<a name="ts-ena-drv-collect-diagnostics"></a>

Los pasos para abrir las herramientas del sistema operativo (SO) Windows varían según la versión del SO instalada en la instancia. En las siguientes secciones, utilizamos el diálogo **Ejecutar** para abrir las herramientas, que funciona igual en todas las versiones del sistema operativo. Sin embargo, puede acceder a estas herramientas utilizando el método que prefiera.

**Acceso al cuadro de diálogo Ejecutar**
+ Uso de la combinación de teclas del logotipo de Windows: `Windows` \$1 `R`
+ Utilizar la barra de búsqueda:
  + Escriba `run` en la barra de búsqueda.
  + Seleccione la aplicación **Ejecutar** de los resultados de la búsqueda.

Algunos pasos requieren el menú de contexto para acceder a las propiedades o acciones sensibles al contexto. Hay varias formas de hacerlo, según su versión y el hardware de su sistema operativo.

**Accede al menú de contexto**
+ Con el ratón: haga clic con el botón derecho en un elemento para abrir su menú de contexto.
+ Uso del teclado:
  + En función de la versión del sistema operativo, utilice `Shift` \$1 `F10`, o bien `Ctrl` \$1 `Shift` \$1 `F10`.
  + Si tiene la tecla de contexto en el teclado (tres líneas horizontales en un cuadro), seleccione el elemento que desee y, a continuación, presione la tecla de contexto.

Si puede conectarse a su instancia, utilice las siguientes técnicas para recopilar información de diagnóstico para solucionar problemas.

### Verificar el estado del dispositivo ENA
<a name="ts-ena-diagnostics-device-mgr"></a>

Para verificar el estado del controlador de Windows ENA mediante el administrador de dispositivos de Windows, siga estos pasos:

1. Abra el icono **Ejecutar** mediante alguno de los métodos descritos en la sección anterior.

1. Para abrir el administrador de dispositivos de Windows, ingrese `devmgmt.msc` en el cuadro **Run** (Ejecutar).

1. Seleccione **Aceptar**. Se abre la ventana del administrador de dispositivos.

1. Seleccione la flecha a la izquierda de **Adaptadores de red** para ampliar la lista.

1. Elija el nombre o abra el menú de contexto de **Amazon Elastic Network Adapter** y luego seleccione **Propiedades**. Se abre el cuadro de diálogo **Propiedades del adaptador de red elástico de Amazon**.

1. Compruebe que el mensaje de la pestaña **General** diga “Este dispositivo funciona correctamente”.

### Investigar mensajes de eventos del controlador
<a name="ts-ena-diagnostics-event-log"></a>

Para revisar los registros de eventos del controlador de Windows ENA mediante el lector de eventos de Windows, siga estos pasos:

1. Abra el icono **Run** (Ejecutar) mediante alguno de los métodos descritos en la sección anterior.

1. Para abrir el lector de eventos de Windows, ingrese `eventvwr.msc` en el cuadro **Ejecutar**.

1. Seleccione **Aceptar**. Se abrirá la ventana del lector de eventos.

1. Amplíe el menú **Registros de Windows** y, a continuación, elija **Sistema**.

1. En **Acciones**, en el panel superior derecho, elija **Filtrar registro actual**. Se muestra el cuadro de diálogo de filtrado.

1. En el cuadro **Orígenes de eventos**, ingrese `ena`. Esto limita los resultados a los eventos generados por el controlador de Windows ENA.

1. Seleccione **OK**. Muestra los resultados del registro de eventos filtrados en las secciones de detalles de la ventana.

1. Para obtener más detalles, seleccione un mensaje de evento de la lista.

En el siguiente ejemplo, se muestra un evento de controlador ENA en la lista de eventos del sistema del lector de eventos de Windows:

![\[Ejemplo: evento de controlador ENA que se muestra en la lista de mensajes del sistema del lector de eventos de Windows.\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/images/ena-event-viewer-example.png)


#### Resumen de mensajes de evento
<a name="ts-ena-diagnostics-event-messages"></a>

En la tabla siguiente, se muestran los mensajes de eventos que genera el controlador de Windows ENA.


**Input**  

| ID de evento | Descripción del evento del controlador ENA | Tipo | 
| --- | --- | --- | 
| 5001 | El hardware no tiene recursos | Error | 
| 5002 | El adaptador ha detectado un error de hardware | Error | 
| 5005 | Se ha agotado el tiempo de espera del adaptador en el funcionamiento del NDIS que no se completó oportunamente | Error | 
| 5032 | El adaptador no ha podido restablecer el dispositivo | Error | 
| 5200 | Se ha inicializado el adaptador | Informativo | 
| 5201 | Se ha detenido el adaptador | Informativo | 
| 5202 | Se ha pausado el adaptador | Informativo | 
| 5203 | Se ha reiniciado el adaptador | Informativo | 
| 5204 | El adaptador se ha apagado | Informativo | 
| 5205 | Se ha restablecido el adaptador | Error | 
| 5206 | El adaptador ha sido eliminado sorpresivamente | Error | 
| 5208 | Error en la rutina de inicialización del adaptador | Error | 
| 5210 | El adaptador ha encontrado y recuperado correctamente un problema interno | Error | 

### Revisar las métricas de rendimiento
<a name="ts-ena-diagnostics-perf-metrics"></a>

El controlador ENA de Windows publica métricas de rendimiento de la red desde las instancias en las que están habilitadas. Puede ver y habilitar métricas en la instancia mediante la aplicación nativa Performance Monitor (Monitor de rendimiento). Para obtener más información acerca de las métricas que produce el controlador ENA para Windows, consulte [Supervisar el rendimiento de la red para ajustes ENA en la instancia de EC2](monitoring-network-performance-ena.md).

En los casos en que las métricas de ENA están habilitadas y el agente de Amazon CloudWatch está instalado, CloudWatch recopila las métricas asociadas a los contadores del Monitor de rendimiento de Windows, así como algunas métricas avanzadas para ENA. Estas métricas se recopilan además de las métricas habilitadas de forma predeterminada en las instancias de EC2. Para obtener más información acerca de las métricas, consulte [Métricas recopiladas por el agente de CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/metrics-collected-by-CloudWatch-agent.html) en la *Guía del usuario de Amazon CloudWatch*.

**nota**  
Las métricas de rendimiento están disponibles para las versiones 2.4.0 y posteriores del controlador de ENA (también para la versión 2.2.3). La versión 2.2.4 del controlador de ENA se revirtió debido a la posible disminución del rendimiento en las instancias de EC2 de sexta generación. Le recomendamos que actualice a la versión actual del controlador para asegurarse de tener las últimas actualizaciones.

Algunas de las formas en las que puede utilizar las métricas de rendimiento incluyen:
+ Solucione problemas de rendimiento de instancias.
+ Elija el tamaño de instancia adecuado para una carga de trabajo.
+ Planifique de forma proactiva las actividades de escalado.
+ Aplicaciones de referencia para determinar si maximizan el rendimiento disponible en una instancia.

**Frecuencia de actualización**  
De forma predeterminada, el controlador actualiza las métricas mediante un intervalo de 1 segundo. Sin embargo, la aplicación que recupera las métricas podría utilizar un intervalo diferente para las encuestas. Puede cambiar el intervalo de actualización en el Administrador de dispositivos mediante las propiedades avanzadas del controlador.

Para cambiar el intervalo de actualización de métricas del controlador de Windows ENA, siga estos pasos:

1. Abra el icono **Run** (Ejecutar) mediante alguno de los métodos descritos en la sección anterior.

1. Para abrir el administrador de dispositivos de Windows, ingrese `devmgmt.msc` en el cuadro **Run** (Ejecutar).

1. Seleccione **Aceptar**. Se abre la ventana del administrador de dispositivos.

1. Seleccione la flecha a la izquierda de **Adaptadores de red** para ampliar la lista.

1. Elija el nombre o abra el menú de contexto de **Amazon Elastic Network Adapter** y luego seleccione **Propiedades**. Se abre el cuadro de diálogo **Propiedades del adaptador de red elástico de Amazon**.

1. Abra la pestaña **Avanzado** en la ventana emergente.

1. Desde la lista **Propiedades**, elija **Intervalo de actualización de métricas** para cambiar el valor.

1. Elija **Aceptar** cuando haya terminado.

## Investigar notificaciones de configuración subóptimas
<a name="ts-ena-win-sub-opt-config-notification"></a>

El dispositivo ENA detecta ajustes de configuración subóptimos en el controlador que usted puede cambiar. El dispositivo notifica al controlador ENA y registra una notificación de evento. Revisar los eventos subóptimos en el Visor de eventos de Windows

1. Abra el icono **Run** (Ejecutar) mediante alguno de los métodos descritos en la sección anterior.

1. Para abrir el lector de eventos de Windows, ingrese `eventvwr.msc` en el cuadro **Ejecutar**.

1. Seleccione **Aceptar**. Se abrirá la ventana del lector de eventos.

1. Amplíe el menú **Registros de Windows** y, a continuación, elija **Sistema**.

1. En **Acciones**, en el panel superior derecho, elija **Filtrar registro actual**. Se muestra el cuadro de diálogo de filtrado.

1. En el cuadro **Orígenes de eventos**, ingrese `ena`. Esto limita los resultados a los eventos generados por el controlador de Windows ENA.

1. Seleccione **Aceptar**. Muestra los resultados del registro de eventos filtrados en las secciones de detalles de la ventana.

Los eventos con `59000` ID le notifican los resultados de configuración que no son óptimos. Haga clic con el botón derecho en un evento y seleccione **Propiedades del evento** para abrir una vista detallada o **Panel de vista previa** en el menú **Ver** para ver el mismo detalle.

![\[Ejemplo: ID de evento de sistema 59000 que se muestra en el panel de vista previa del lector de eventos de Windows.\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/images/ena-sub-opt-event-general.png)


Abra la pestaña **Detalles** para ver el código del evento. En la sección **Datos binarios: en palabras**, la última palabra es el código.

![\[Ejemplo: La última palabra de la sección de datos binarios aparece resaltada.\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/images/ena-sub-opt-event-detail.png)


La siguiente lista muestra los detalles del código de la notificación y las acciones recomendadas en caso de que la configuración no sea óptima.
+ **Código `1`: no se recomienda el uso de ENA Express con una configuración de LLQ amplio**

  El ENI de ENA Express está configurado con un LLQ amplio. Esta configuración no es óptima y podría afectar al rendimiento de ENA Express. Le recomendamos que desactive la configuración de LLQ amplio cuando utilice los ENI de ENA Express de la siguiente manera.

  1. Para abrir el administrador de dispositivos de Windows, ingrese `devmgmt.msc` en el cuadro **Ejecutar**.

  1. Seleccione **Aceptar**. Se abre la ventana del administrador de dispositivos.

  1. Seleccione la flecha a la izquierda de **Adaptadores de red** para ampliar la lista.

  1. Abra las propiedades del dispositivo para `Amazon Elastic Network Adapter`.

  1. Desde ahí, abra la pestaña **Avanzado** para realizar los cambios.

  1. Seleccione la propiedad **LLQ Header Size Policy** y establezca su valor en `Normal (128 Bytes)`.

  1. Elija **Aceptar** para guardar los cambios.
+ **Código `2`: no se recomienda la ENI de ENA Express con una profundidad de cola de Tx inferior a la óptima**

  La ENI de ENA Express está configurada con una profundidad de cola de Tx inferior a la óptima. Esta configuración podría afectar al rendimiento de ENA Express. Le recomendamos que amplíe todas las colas de Tx al valor máximo para la interfaz de red cuando utilice las ENI de ENA Express de la siguiente manera.

  Siga estos pasos para aumentar las colas de Tx a la profundidad máxima:

  1. Para abrir el administrador de dispositivos de Windows, ingrese `devmgmt.msc` en el cuadro **Ejecutar**.

  1. Seleccione **Aceptar**. Se abre la ventana del administrador de dispositivos.

  1. Seleccione la flecha a la izquierda de **Adaptadores de red** para ampliar la lista.

  1. Abra las propiedades del dispositivo para `Amazon Elastic Network Adapter`.

  1. Desde ahí, abra la pestaña **Avanzado** para realizar los cambios.

  1. Seleccione la propiedad **Transmitir búferes** y establezca su valor en el máximo admitido.

  1. Elija **Aceptar** para guardar los cambios.

## Restablecimiento del adaptador ENA
<a name="ts-ena-drv-reset"></a>

El proceso de restablecimiento se inicia cuando el controlador de Windows ENA detecta un error en un adaptador y marca el adaptador como incorrecto. El controlador no puede restablecerse por sí mismo, por lo que depende del sistema operativo para verificar el estado del adaptador y llamar al identificador de restablecimiento del controlador de Windows ENA. El proceso de restablecimiento podría dar lugar a un breve periodo en el que se produce una pérdida de tráfico. Sin embargo, las conexiones TCP deberían poder recuperarse.

El adaptador ENA también puede solicitar indirectamente un procedimiento de restablecimiento del dispositivo, al no enviar una notificación de mantenimiento. Por ejemplo, si el adaptador ENA llega a un estado desconocido después de cargar una configuración irrecuperable, podría dejar de enviar notificaciones persistentes.

**Causas comunes para restablecer el adaptador ENA**
+ Faltan mensajes persistentes

  El adaptador ENA publica eventos persistentes a intervalos establecidos (por lo general una vez por segundo). El controlador de Windows ENA implementa un mecanismo watchdog para verificar periódicamente la presencia de estos mensajes persistentes. Si detecta uno o más mensajes nuevos desde la última vez que lo verificó, registra un resultado satisfactorio. De lo contrario, el controlador concluye que el dispositivo ha sufrido un error e inicia una secuencia de restablecimiento.
+ Los paquetes están atascados en las colas de transmisión

  El adaptador ENA verifica que los paquetes fluyan a través de las colas de transmisión según lo esperado. El controlador de Windows ENA detecta si los paquetes se atascan e inicia una secuencia de restablecimiento si esto sucede.
+ Tiempo de espera de lectura para los registros de E/S asignadas para memoria (MMIO)

  A fin de limitar las operaciones de lectura de E/S asignadas para memoria (MMIO), el controlador de Windows ENA accede a los registros MMIO solo durante los procesos de inicialización y restablecimiento. Si el controlador detecta un tiempo de espera, se lleva a cabo una de las siguientes acciones, según el proceso que se esté ejecutando:
  + Si se detecta un tiempo de espera durante la inicialización, el flujo falla, lo que hace que el controlador muestre un signo de exclamación amarillo junto al adaptador ENA en el Administrador de dispositivos de Windows.
  + Si se detecta un tiempo de espera durante el restablecimiento, el flujo falla. A continuación, el sistema operativo inicia una eliminación sorpresa del adaptador ENA y lo recupera al detener e iniciar el adaptador que se eliminó. Para obtener más información sobre la eliminación sorpresa de una tarjeta de interfaz de red (NIC), consulte [Manejo de la eliminación sorpresa de una NIC](https://learn.microsoft.com/en-us/windows-hardware/drivers/network/handling-the-surprise-removal-of-a-nic) en la documentación para el *Desarrollador de hardware de Microsoft Windows*.

## Escenarios de solución de problemas
<a name="ts-ena-drv-scenarios"></a>

Los siguientes escenarios pueden ayudarlo a solucionar problemas que pudieran surgir con el controlador de Windows ENA. Le recomendamos que comience con la actualización del controlador ENA, si no tiene la última versión. Para encontrar el controlador más reciente para la versión del sistema operativo Windows, consulte [Seguimiento del lanzamiento de la versión del controlador de Windows de ENA](ena-driver-releases-windows.md).

### Versión inesperada del controlador ENA instalado
<a name="ts-ena-drv-sc-unexpected-vsn"></a>

#### Descripción
<a name="ts-ena-drv-sc-unexpected-vsn-descr"></a>

Tras seguir los pasos para instalar una versión específica del controlador ENA, el Administrador de dispositivos de Windows muestra que Windows ha instalado una versión diferente del controlador ENA.

#### Causa
<a name="ts-ena-drv-sc-unexpected-vsn-cause"></a>

Al ejecutar la instalación de un paquete de controladores, Windows clasifica todos los paquetes de controladores válidos para el dispositivo determinado en el [almacén de controladores](https://learn.microsoft.com/en-us/windows-hardware/drivers/install/driver-store) local antes de que comience. A continuación, seleccione el paquete con el valor de clasificación más bajo como el que mejor coincide. Puede ser diferente del paquete que pretendía instalar. Para obtener más información sobre el proceso de selección de paquetes de controladores de dispositivos, consulte [Cómo selecciona Windows un paquete de controladores para un dispositivo](https://learn.microsoft.com/en-us/windows-hardware/drivers/install/how-windows-selects-a-driver-for-a-device) en el *sitio web de documentación de Microsoft*.

#### Solución
<a name="ts-ena-drv-sc-unexpected-vsn-solution"></a>

Para asegurarse de que Windows instale la versión del paquete de controladores que haya elegido, puede eliminar los paquetes de controladores de menor rango de la Tienda de controladores con la herramienta de línea de comandos [PNPUtil](https://learn.microsoft.com/en-us/windows-hardware/drivers/devtest/pnputil).

Para actualizar el controlador ENA, siga estos pasos:

1. Conéctese a la instancia e inicie sesión como administrador local.

1. Abra la ventana de propiedades del Administrador de dispositivos, tal como se describe en la sección [Verificar el estado del dispositivo ENA](#ts-ena-diagnostics-device-mgr). Se abre la pestaña **General** de la ventana **Propiedades del adaptador de red elástico de Amazon**.

1. Abra la pestaña **Controlador**.

1. Elija **Actualizar controlador**. Se abre el cuadro de diálogo **Actualizar el software del controlador: adaptador de red elástico de Amazon**.

   1. En la página **¿Cómo desea buscar el software de controlador?**, elija **Buscar software de controlador en el equipo**.

   1. En la página **Buscar el software del controlador en su ordenador**, seleccione **Déjame elegir de la lista de controladores de dispositivos de mi equipo**, que se encuentra debajo de la barra de búsqueda.

   1. En la página **Seleccionar el controlador de dispositivo que desea instalar para este equipo**, elija **Tener disco...**.

   1. En la ventana **Instalar desde disco**, seleccione **Examinar...** , junto a la ubicación del archivo en el menú desplegable.

   1. Navegue hasta la ubicación en la que descargó el paquete de controladores ENA de destino. Seleccione el archivo nombrado `ena.inf` y elija **Abrir**.

   1. Para iniciar la instalación, seleccione **Aceptar** y, a continuación, seleccione **Siguiente**.

1. Si el instalador no reinicia automáticamente la instancia, ejecute el cmdlet de PowerShell **Restart-Computer**.

   ```
   PS C:\> Restart-Computer
   ```

### Advertencia de dispositivo para el controlador ENA
<a name="ts-ena-drv-sc-device-warn"></a>

#### Descripción
<a name="ts-ena-drv-sc-device-warn-descr"></a>

El icono del adaptador ENA en la sección **Adaptadores de red** del Administrador de dispositivos muestra un signo de advertencia (un triángulo amarillo con un signo de exclamación en su interior).

En el siguiente ejemplo, se muestra un adaptador ENA con el icono de advertencia del Administrador de dispositivos de Windows:

![\[Ejemplo: adaptador ENA con el icono de advertencia del Administrador de dispositivos de Windows.\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/images/ena-adapter-device-mgr-warn.png)


#### Causa
<a name="ts-ena-drv-sc-device-warn-cause"></a>

Esta advertencia de dispositivo suele deberse a problemas de entorno, que pueden requerir más investigación y, a menudo, requerir un proceso de eliminación para determinar la causa subyacente. Para obtener una lista completa de los errores de dispositivo, consulte [Mensajes de error del Administrador de dispositivos](https://learn.microsoft.com/en-us/windows-hardware/drivers/install/device-manager-error-messages) en la documentación de Microsoft.

#### Solución
<a name="ts-ena-drv-sc-device-warn-solution"></a>

La solución para la advertencia de este dispositivo depende de la causa raíz. El proceso de eliminación descrito aquí incluye algunos pasos básicos para ayudar a identificar y resolver los problemas más comunes que podrían tener una solución sencilla. Se requiere un análisis de causa raíz adicional cuando estos pasos no resuelven el problema.

Siga estos pasos para ayudar a identificar y resolver problemas comunes:

1. 

**Detener e iniciar el dispositivo**

   Abra la ventana de propiedades del Administrador de dispositivos, tal como se describe en la sección [Verificar el estado del dispositivo ENA](#ts-ena-diagnostics-device-mgr). Se abre la pestaña **General** de la ventana **Propiedades de Amazon Elastic Network Adapter**, donde **Estado del dispositivo** muestra el código de error y un mensaje breve.

   1. Abra la pestaña **Driver** (Controlador).

   1. Elija **Desactivar dispositivo** y responda **Sí** al mensaje de advertencia que aparecerá.

   1. Elija **Habilitar dispositivo**.

1. 

**Detenga e inicie la instancia de EC2**

   Si el adaptador sigue mostrando el icono de advertencia en el Administrador de dispositivos, el siguiente paso es detener e iniciar la instancia de EC2. Esto vuelve a iniciar la instancia en un hardware diferente en la mayoría de los casos.

1. 

**Investigar el posible problema de los recursos de instancia**

   Si ha detenido e iniciado la instancia de EC2 y el problema continúa, esto podría indicar un problema de recursos en la instancia, como memoria insuficiente.

### Tiempo de espera de conexión con el restablecimiento del adaptador (códigos de error 5007, 5205)
<a name="ts-ena-drv-sc-conn"></a>

#### Descripción
<a name="ts-ena-drv-sc-conn-descr"></a>

El lector de eventos Windows muestra el tiempo de espera del adaptador y los eventos de restablecimiento que se producen en conjunto para los adaptadores ENA. Los mensajes se parecen a los siguientes ejemplos:
+ **ID de evento 5007**: Amazon Elastic Network Adapter: se ha agotado el tiempo de espera durante una operación.
+ **ID de evento 5205**: Amazon Elastic Network Adapter: se ha iniciado el restablecimiento del adaptador.

Reestablecer el adaptador provoca una interrupción mínima del tráfico. Incluso cuando haya varios reinicios, sería inusual que provocaran cualquier interrupción grave de la red.

#### Causa
<a name="ts-ena-drv-sc-conn-cause"></a>

Esta secuencia de eventos indica que el controlador de Windows ENA inició un restablecimiento de un adaptador ENA que no respondía. Sin embargo, el mecanismo que utiliza el controlador de dispositivo para detectar este problema está sujeto a falsos positivos como resultado de la falta de CPU 0.

#### Solución
<a name="ts-ena-drv-sc-conn-solution"></a>

Si esta combinación de errores se produce con frecuencia, verifique las asignaciones de recursos para ver dónde pueden resultar útiles hacer ajustes.

1. Abra el icono **Run** (Ejecutar) mediante alguno de los métodos descritos en la sección anterior.

1. Para abrir el Monitor de recursos de Windows, ingrese `resmon` en el cuadro **Ejecutar**.

1. Seleccione **Aceptar**. Se abre la ventana del Monitor de recursos.

1. Abra la pestaña **CPU**. Los gráficos de uso por CPU se muestran en el lado derecho de la ventana del Monitor de recursos.

1. Verifique los niveles de uso de la CPU 0 para ver si son demasiado altos.

Recomendamos configurar RSS a fin de excluir la CPU 0 para el adaptador ENA en tipos de instancias más grandes (más de 16 vCPU). Para los tipos de instancias más pequeños, la configuración de RSS podría mejorar la experiencia. Sin embargo, dado que hay menos núcleos disponibles, es necesario realizar pruebas para garantizar que la restricción de los núcleos de CPU no afecte negativamente al rendimiento.

Utilice el comando **Set-NetAdapterRss** a fin de configurar RSS para el adaptador ENA, tal y como se muestra en el ejemplo siguiente.

```
Set-NetAdapterRss -name (Get-NetAdapter | Where-Object {$_.InterfaceDescription -like "*Elastic*"}).Name -Baseprocessorgroup 0 -BaseProcessorNumber 1
```

### La migración a una infraestructura de instancias de sexta generación afecta al rendimiento o la conexión
<a name="ts-ena-drv-6gen-instance-perf"></a>

#### Descripción
<a name="ts-ena-drv-6gen-instance-perf-descr"></a>

Si migra a una instancia de EC2 de sexta generación, es posible que experimente una reducción en el rendimiento o errores en los datos adjuntos de ENA si no ha actualizado la versión del controlador de Windows ENA.

#### Causa
<a name="ts-ena-drv-6gen-instance-perf-cause"></a>

Los tipos de instancias de EC2 de sexta generación requieren la siguiente versión mínima del controlador de ENA para Windows, según el sistema operativo (SO) de la instancia.


**Versión mínima**  

| Versión de Windows Server | Versión del controlador ENA | 
| --- | --- | 
|  Windows Server 2008 R2  |  2.2.3 o 2.4.0  | 
|  Windows Server 2012 y versiones posteriores  |  2.2.3 y versiones posteriores  | 
|  Estación de trabajo Windows  |  2.2.3 y versiones posteriores  | 

#### Solución
<a name="ts-ena-drv-6gen-instance-perf-solution"></a>

Antes de actualizar a una instancia de EC2 de sexta generación, asegúrese de que la AMI desde la que inicie tenga controladores compatibles según el SO de la instancia, como se muestra en la tabla anterior. Para obtener más información, consulte [¿Qué debo hacer antes de migrar mi instancia de EC2 a una instancia de sexta generación para asegurarme de obtener el máximo rendimiento de la red?](https://repost.aws/knowledge-center/migrate-to-gen6-ec2-instance) en el *Centro de conocimiento de AWS re:Post*.

### Rendimiento inferior al óptimo de la interfaz de red elástica
<a name="ts-ena-drv-interface-perf"></a>

#### Descripción
<a name="ts-ena-drv-interface-perf-descr"></a>

La interfaz ENA no tiene el rendimiento esperado.

#### Causa
<a name="ts-ena-drv-interface-perf-cause"></a>

El análisis de causa raíz de los problemas de rendimiento es un proceso de eliminación. Hay demasiadas variables involucradas para identificar una causa común.

#### Solución
<a name="ts-ena-drv-interface-perf-solution"></a>

El primer paso del análisis de causa raíz es revisar la información de diagnóstico de la instancia que no funciona según lo esperado, con el fin de determinar si hay errores que podrían estar causando el problema. Para obtener más información, consulte la sección [Recopilar información de diagnóstico de la instancia](#ts-ena-drv-collect-diagnostics).

Para conseguir el máximo rendimiento de red en instancias con redes mejoradas, es posible que necesite modificar la configuración predeterminada del sistema operativo. Otras optimizaciones (como activar la descarga de la suma de comprobación y habilitar RSS, por ejemplo) ya están en marcha en las AMI oficiales de Windows de forma predeterminada. Para obtener otras optimizaciones que puede aplicar al adaptador ENA, consulte los ajustes de rendimiento que se muestran en [Ajustes de rendimiento del adaptador ENA](#ts-ena-drv-perf-adj).

Le recomendamos que proceda con precaución y limite los ajustes de propiedades del dispositivo a los que se enumeran en esta sección, o a los cambios específicos recomendados por el equipo de soporte de AWS.

Para cambiar las propiedades del adaptador ENA, siga estos pasos:

1. Abra el icono **Run** (Ejecutar) mediante alguno de los métodos descritos en la sección anterior.

1. Para abrir el administrador de dispositivos de Windows, ingrese `devmgmt.msc` en el cuadro **Run** (Ejecutar).

1. Seleccione **Aceptar**. Se abre la ventana del administrador de dispositivos.

1. Seleccione la flecha a la izquierda de **Adaptadores de red** para ampliar la lista.

1. Elija el nombre o abra el menú de contexto de **Amazon Elastic Network Adapter** y luego seleccione **Propiedades**. Se abre el cuadro de diálogo **Propiedades del adaptador de red elástico de Amazon**.

1. Para realizar los cambios, abra la pestaña **Avanzado**.

1. Cuando haya terminado, elija **Aceptar** para guardar los cambios.

El siguiente ejemplo, se muestra una propiedad del adaptador ENA en el Administrador de dispositivo de Windows:

![\[Ejemplo: propiedad del adaptador ENA en el Administrador de dispositivo de Windows.\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/images/ena-adapter-device-mgr-property.png)


##### Ajustes de rendimiento del adaptador ENA
<a name="ts-ena-drv-perf-adj"></a>

La tabla siguiente incluye propiedades que se pueden ajustar para mejorar el rendimiento de la interfaz ENA.


**Input**  

| Propiedad | Descripción | Predeterminado | Ajuste | 
| --- | --- | --- | --- | 
|  Búferes de recepción  |  Controla el número de entradas de las colas de recepción de software.  |  1024  |  Se puede aumentar hasta un máximo de 8192.  | 
|  Escala lateral de recepción (RSS)  |  Permite la distribución eficiente del procesamiento de recepción de red en varias CPU de sistemas multiprocesador.  |  Habilitado  |  Puede distribuir la carga entre varios procesadores. Para obtener más información, consulte [Optimizar el rendimiento de la red en instancias de Windows de EC2](enhanced-networking-os.md).  | 
|  Número máximo de colas RSS  |  Establece el número máximo de colas RSS permitidas cuando `RSS` está habilitado.  |  32  |  El número de colas RSS se determina durante la inicialización del controlador e incluye las siguientes limitaciones (entre otras): [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/troubleshoot-ena-driver.html) Puede establecer el valor del 1 al 32, según los límites de generación de hardware y instancia. Para obtener más información, consulte [Optimizar el rendimiento de la red en instancias de Windows de EC2](enhanced-networking-os.md).  | 
|  Paquete gigante  |  Permite el uso de tramas ethernet gigantes (más de 1500 bytes de carga útil).  |  Deshabilitado (limita la carga útil a 1500 bytes o menos)  |  El valor se puede configurar en `9015`, que se traduce en 9001 bytes de carga útil. Esta es la carga útil máxima para tramas ethernet gigantes. Consulte [Consideraciones para utilizar tramas ethernet gigantes](#ts-ena-drv-jumbo-frames).  | 

##### Consideraciones para utilizar tramas ethernet gigantes
<a name="ts-ena-drv-jumbo-frames"></a>

Las tramas gigantes permiten más de 1500 bytes de datos al aumentar el tamaño de la carga por paquete, lo que aumenta el porcentaje del paquete que no supone una sobrecarga del paquete. De este modo, se necesitan menos paquetes para enviar la misma cantidad de datos utilizables. Sin embargo, el tráfico está limitado a una MTU máxima de 1500 en los siguientes casos:
+ Tráfico fuera de una región de AWS determinada para EC2 Classic.
+ Tráfico fuera de una única VPC.
+ Tráfico a través de un emparejamiento de VPC entre regiones.
+ Tráfico a través de conexiones de VPN.
+ Tráfico a través de una puerta de enlace de Internet.

**nota**  
Los paquetes de más de 1500 bytes están fragmentados. Si tiene el indicador `Don't Fragment` establecido en el encabezado IP, estos paquetes se eliminan.  
Las tramas gigantes se deben utilizar con precaución para el tráfico vinculado a Internet o cualquier tráfico que provenga de una VPC. Los paquetes son fragmentados por sistemas intermedios, lo que ralentiza el tráfico. Para utilizar tramas gigantes dentro de una VPC sin afectar al tráfico saliente que proviene de la VPC, prueba una de las siguientes opciones:  
Configure el tamaño de la MTU por ruta.
Utilice varias interfaces de red con distintos tamaños de MTU y rutas diferentes.

**Casos de uso recomendados para tramas gigantes**  
Las tramas gigantes pueden ser útiles para el tráfico dentro de las VPC y entre ellas. Recomendamos utilizar tramas gigantes para los siguientes casos de uso:
+ En el caso de las instancias que se colocan dentro de un grupo con ubicación en clúster, las tramas gigantes ayudan a obtener el máximo rendimiento de red posible. Para obtener más información, consulte [Grupos de ubicación para instancias de Amazon EC2](placement-groups.md).
+ Puede utilizar tramas gigantes para el tráfico entre las VPC y las redes locales a través de Direct Connect. Para obtener más información sobre el uso de Direct Connect y la verificación de la capacidad de tramas jumbo, consulte [MTU para interfaces virtuales privadas o interfaces virtuales de tránsito](https://docs.aws.amazon.com/directconnect/latest/UserGuide/WorkingWithVirtualInterfaces.html#set-jumbo-frames-vif.html) en la *Guía del usuario de Direct Connect*.
+ Para obtener más información acerca de los tamaños de MTU admitidos para puertas de enlace de tránsito, consulte [Cuotas para sus puertas de enlace de tránsito](https://docs.aws.amazon.com/vpc/latest/tgw/transit-gateway-quotas.html#mtu-quota) en *Puertas de enlace de tránsito de Amazon VPC*.

# Mejorar el rendimiento de la red entre las instancias de EC2 con ENA Express
<a name="ena-express"></a>

ENA Express funciona con la tecnología Scalable Reliable Datagram (SRD) de AWS. SRD es un protocolo de transporte de red de alto rendimiento que utiliza el enrutamiento dinámico para aumentar el rendimiento y minimizar la latencia de cola. Con ENA Express, puede establecer comunicación entre dos instancias de EC2 en la misma zona de disponibilidad.

**Ventajas de ENA Express**
+ Aumenta el ancho de banda máximo que puede utilizar un único flujo de 5 Gbps hasta 25 Gbps en la zona de disponibilidad, hasta el límite de instancias agregado.
+ Reduce la latencia final del tráfico de red entre instancias de EC2, especialmente durante periodos de alta carga de red.
+ Detecta y evita las rutas de red sobrecargadas.
+ Gestiona algunas tareas directamente en la capa de red, como la reordenación de paquetes en el extremo receptor y la mayoría de las retransmisiones necesarias. Esto libera la capa de aplicación para otras tareas.

**nota**  
Si su aplicación envía o recibe un gran volumen de paquetes por segundo y necesita optimizar la latencia la mayor parte del tiempo, especialmente durante los períodos en los que no hay congestión en la red, [Redes mejoradas](enhanced-networking.md) podría ser una mejor opción para su red.
El tráfico de ENA Express no puede enviarse en una zona local.

Después de habilitar ENA Express para el adjunto de interfaz de red en una instancia, la instancia de envío inicia la comunicación con la instancia de recepción y el SRD detecta si ENA Express funciona tanto en la instancia de envío como en la de recepción. Si ENA Express funciona, la comunicación puede utilizar la transmisión de SRD. Si ENA Express no funciona, la comunicación vuelve a la transmisión ENA estándar.

Durante los periodos en los que el tráfico de red sea bajo, es posible que observe un ligero aumento en la latencia de los paquetes (decenas de microsegundos) cuando el paquete utilice ENA Express. Durante esos momentos, las aplicaciones que priorizan características específicas de rendimiento de la red pueden beneficiarse de ENA Express de la siguiente manera:
+ Los procesos se pueden beneficiar del aumento del ancho de banda máximo de flujo único de 5 Gbps hasta 25 Gbps dentro de la misma zona de disponibilidad, hasta el límite de instancias agregado. Por ejemplo, si un tipo de instancia específico admite hasta 12,5 Gbps, el ancho de banda de flujo único también está limitado a 12,5 Gbps.
+ Los procesos que se ejecutan durante más tiempo deberían experimentar una latencia de cola reducida durante los períodos de congestión de la red.
+ Los procesos pueden beneficiarse de una distribución más uniforme y estándar de los tiempos de respuesta de la red.

**Topics**
+ [Cómo funciona ENA Express](#ena-express-how-it-works)
+ [Tipos de instancia compatibles con ENA Express](#ena-express-supported-instance-types)
+ [Requisitos previos para instancias de Linux](#ena-express-prereq-linux)
+ [Ajuste el rendimiento de la configuración de ENA Express en la instancia de Linux](#ena-express-tune)
+ [Revise los ajustes de ENA Express para su instancia de EC2](ena-express-list-view.md)
+ [Configurar los ajustes de ENA Express para su instancia de EC2](ena-express-configure.md)

## Cómo funciona ENA Express
<a name="ena-express-how-it-works"></a>

ENA Express funciona con la tecnología Scalable Reliable Datagram (SRD) de AWS. Distribuye los paquetes para cada flujo de red a través de diferentes rutas de red de AWS y ajusta dinámicamente la distribución cuando detecta indicios de congestión. También gestiona la reordenación de paquetes en el extremo receptor.

Para garantizar que ENA Express pueda gestionar el tráfico de red según lo previsto, las instancias emisoras y receptoras, y la comunicación entre dichas instancias deben cumplir todos los requisitos siguientes:
+ Se admiten los tipos de instancia de envío y recepción. Para obtener más información, consulte la tabla [Tipos de instancia compatibles con ENA Express](#ena-express-supported-instance-types).
+ Tanto las instancias de envío como las de recepción deben tener configurado ENA Express. Si hay diferencias en la configuración, puede encontrarse con situaciones en las que el tráfico adopte por defecto la transmisión ENA estándar. El siguiente escenario muestra lo que puede ocurrir.

  **Escenario: diferencias en la configuración**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/ena-express.html)

  En este caso, el tráfico TCP entre las dos instancias puede utilizar ENA Express, ya que ambas instancias lo habilitaron. Sin embargo, dado que una de las instancias no utiliza ENA Express para el tráfico de UDP, la comunicación entre estas dos instancias a través de UDP utiliza la transmisión ENA estándar.
+ Las instancias de envío y recepción deben ejecutarse en la misma zona de disponibilidad.
+ La ruta de red entre las instancias no debe incluir cajas de middleware. ENA Express no admite actualmente cajas de middleware.
+ (Solo instancias de Linux) Para aprovechar todo el potencial del ancho de banda, utilice la versión 2.2.9 o superior del controlador.
+ (Solo instancias de Linux) Para generar métricas, utilice la versión 2.8 o superior del controlador.

Si no se cumple algún requisito, las instancias utilizan el protocolo TCP/UDP estándar, pero sin SRD para comunicarse.

Para asegurarse de que el controlador de red de su instancia está configurado para un rendimiento óptimo, revise las prácticas recomendadas para los controladores ENA. Estas prácticas recomendadas también se aplican a ENA Express. Para obtener más información, consulte [Guía sobre la optimización de rendimiento y las prácticas recomendadas para el controlador ENA de Linux](https://github.com/amzn/amzn-drivers/blob/master/kernel/linux/ena/ENA_Linux_Best_Practices.rst) en el sitio web de GitHub.

**nota**  
Amazon EC2 se refiere a la relación entre una instancia y una interfaz de red conectada a ella como un *adjunto*. La configuración de ENA Express se aplica al adjunto. Si la interfaz de red se desvincula de la instancia, el adjunto deja de existir y la configuración de ENA Express que se le aplicaba deja de estar vigente. Lo mismo ocurre cuando se finaliza una instancia, aunque la interfaz de red permanezca.

Después de habilitar ENA Express para los adjuntos de interfaz de red tanto en la instancia de envío como en la de recepción, puede utilizar las métricas de ENA Express para asegurarse de que sus instancias aprovechen al máximo las mejoras de rendimiento que proporciona la tecnología SRD. Para obtener más información sobre las métricas de ENA Express, consulte [Métricas para ENA Express](monitoring-network-performance-ena.md#network-performance-metrics-ena-express).

## Tipos de instancia compatibles con ENA Express
<a name="ena-express-supported-instance-types"></a>

Los siguientes tipos de instancia son compatibles con ENA Express.

------
#### [ General purpose ]


| Tipo de instancia | Arquitectura | 
| --- | --- | 
| m6a.12xlarge | x86\$164 | 
| m6a.16xlarge | x86\$164 | 
| m6a.24xlarge | x86\$164 | 
| m6a.32xlarge | x86\$164 | 
| m6a.48xlarge | x86\$164 | 
| m6a.metal | x86\$164 | 
| m6i.8xlarge | x86\$164 | 
| m6i.12xlarge | x86\$164 | 
| m6i.16xlarge | x86\$164 | 
| m6i.24xlarge | x86\$164 | 
| m6i.32xlarge | x86\$164 | 
| m6i.metal | x86\$164 | 
| m6id.8xlarge | x86\$164 | 
| m6id.12xlarge | x86\$164 | 
| m6id.16xlarge | x86\$164 | 
| m6id.24xlarge | x86\$164 | 
| m6id.32xlarge | x86\$164 | 
| m6id.metal | x86\$164 | 
| m6idn.8xlarge | x86\$164 | 
| m6idn.12xlarge | x86\$164 | 
| m6idn.16xlarge | x86\$164 | 
| m6idn.24xlarge | x86\$164 | 
| m6idn.32xlarge | x86\$164 | 
| m6idn.metal | x86\$164 | 
| m6in.8xlarge | x86\$164 | 
| m6in.12xlarge | x86\$164 | 
| m6in.16xlarge | x86\$164 | 
| m6in.24xlarge | x86\$164 | 
| m6in.32xlarge | x86\$164 | 
| m6in.metal | x86\$164 | 
| m7a.12xlarge | x86\$164 | 
| m7a.16xlarge | x86\$164 | 
| m7a.24xlarge | x86\$164 | 
| m7a.32xlarge | x86\$164 | 
| m7a.48xlarge | x86\$164 | 
| m7a.metal-48xl | x86\$164 | 
| m7g.12xlarge | arm64 | 
| m7g.16xlarge | arm64 | 
| m7g.metal | arm64 | 
| m7gd.12xlarge | arm64 | 
| m7gd.16xlarge | arm64 | 
| m7gd.metal | arm64 | 
| m7i.12xlarge | x86\$164 | 
| m7i.16xlarge | x86\$164 | 
| m7i.24xlarge | x86\$164 | 
| m7i.48xlarge | x86\$164 | 
| m7i.metal-24xl | x86\$164 | 
| m7i.metal-48xl | x86\$164 | 
| m8a.16xlarge | x86\$164 | 
| m8a.24xlarge | x86\$164 | 
| m8a.48xlarge | x86\$164 | 
| m8a.metal-24xl | x86\$164 | 
| m8a.metal-48xl | x86\$164 | 
| m8azn.12xlarge | x86\$164 | 
| m8azn.24xlarge | x86\$164 | 
| m8azn.metal-12xl | x86\$164 | 
| m8azn.metal-24xl | x86\$164 | 
| m8g.12xlarge | arm64 | 
| m8g.16xlarge | arm64 | 
| m8g.24xlarge | arm64 | 
| m8g.48xlarge | arm64 | 
| m8g.metal-24xl | arm64 | 
| m8g.metal-48xl | arm64 | 
| m8gb.8xlarge | arm64 | 
| m8gb.12xlarge | arm64 | 
| m8gb.16xlarge | arm64 | 
| m8gb.24xlarge | arm64 | 
| m8gb.48xlarge | arm64 | 
| m8gb.metal-24xl | arm64 | 
| m8gb.metal-48xl | arm64 | 
| m8gd.12xlarge | arm64 | 
| m8gd.16xlarge | arm64 | 
| m8gd.24xlarge | arm64 | 
| m8gd.48xlarge | arm64 | 
| m8gd.metal-24xl | arm64 | 
| m8gd.metal-48xl | arm64 | 
| m8gn.8xlarge | arm64 | 
| m8gn.12xlarge | arm64 | 
| m8gn.16xlarge | arm64 | 
| m8gn.24xlarge | arm64 | 
| m8gn.48xlarge | arm64 | 
| m8gn.metal-24xl | arm64 | 
| m8gn.metal-48xl | arm64 | 
| m8i.24xlarge | x86\$164 | 
| m8i.32xlarge | x86\$164 | 
| m8i.48xlarge | x86\$164 | 
| m8i.96xlarge | x86\$164 | 
| m8i.metal-48xl | x86\$164 | 
| m8i.metal-96xl | x86\$164 | 
| m8id.24xlarge | x86\$164 | 
| m8id.32xlarge | x86\$164 | 
| m8id.48xlarge | x86\$164 | 
| m8id.96xlarge | x86\$164 | 
| m8id.metal-48xl | x86\$164 | 
| m8id.metal-96xl | x86\$164 | 

------
#### [ Compute optimized ]


| Tipo de instancia | Arquitectura | 
| --- | --- | 
| c6a.12xlarge | x86\$164 | 
| c6a.16xlarge | x86\$164 | 
| c6a.24xlarge | x86\$164 | 
| c6a.32xlarge | x86\$164 | 
| c6a.48xlarge | x86\$164 | 
| c6a.metal | x86\$164 | 
| c6gn.4xlarge | arm64 | 
| c6gn.8xlarge | arm64 | 
| c6gn.12xlarge | arm64 | 
| c6gn.16xlarge | arm64 | 
| c6i.8xlarge | x86\$164 | 
| c6i.12xlarge | x86\$164 | 
| c6i.16xlarge | x86\$164 | 
| c6i.24xlarge | x86\$164 | 
| c6i.32xlarge | x86\$164 | 
| c6i.metal | x86\$164 | 
| c6id.8xlarge | x86\$164 | 
| c6id.12xlarge | x86\$164 | 
| c6id.16xlarge | x86\$164 | 
| c6id.24xlarge | x86\$164 | 
| c6id.32xlarge | x86\$164 | 
| c6id.metal | x86\$164 | 
| c6in.8xlarge | x86\$164 | 
| c6in.12xlarge | x86\$164 | 
| c6in.16xlarge | x86\$164 | 
| c6in.24xlarge | x86\$164 | 
| c6in.32xlarge | x86\$164 | 
| c6in.metal | x86\$164 | 
| c7a.12xlarge | x86\$164 | 
| c7a.16xlarge | x86\$164 | 
| c7a.24xlarge | x86\$164 | 
| c7a.32xlarge | x86\$164 | 
| c7a.48xlarge | x86\$164 | 
| c7a.metal-48xl | x86\$164 | 
| c7g.12xlarge | arm64 | 
| c7g.16xlarge | arm64 | 
| c7g.metal | arm64 | 
| c7gd.12xlarge | arm64 | 
| c7gd.16xlarge | arm64 | 
| c7gd.metal | arm64 | 
| c7gn.4xlarge | arm64 | 
| c7gn.8xlarge | arm64 | 
| c7gn.12xlarge | arm64 | 
| c7gn.16xlarge | arm64 | 
| c7gn.metal | arm64 | 
| c7i.12xlarge | x86\$164 | 
| c7i.16xlarge | x86\$164 | 
| c7i.24xlarge | x86\$164 | 
| c7i.48xlarge | x86\$164 | 
| c7i.metal-24xl | x86\$164 | 
| c7i.metal-48xl | x86\$164 | 
| c8a.16xlarge | x86\$164 | 
| c8a.24xlarge | x86\$164 | 
| c8a.48xlarge | x86\$164 | 
| c8a.metal-24xl | x86\$164 | 
| c8a.metal-48xl | x86\$164 | 
| c8g.12xlarge | arm64 | 
| c8g.16xlarge | arm64 | 
| c8g.24xlarge | arm64 | 
| c8g.48xlarge | arm64 | 
| c8g.metal-24xl | arm64 | 
| c8g.metal-48xl | arm64 | 
| c8gb.8xlarge | arm64 | 
| c8gb.12xlarge | arm64 | 
| c8gb.16xlarge | arm64 | 
| c8gb.24xlarge | arm64 | 
| c8gb.48xlarge | arm64 | 
| c8gb.metal-24xl | arm64 | 
| c8gb.metal-48xl | arm64 | 
| c8gd.12xlarge | arm64 | 
| c8gd.16xlarge | arm64 | 
| c8gd.24xlarge | arm64 | 
| c8gd.48xlarge | arm64 | 
| c8gd.metal-24xl | arm64 | 
| c8gd.metal-48xl | arm64 | 
| c8gn.8xlarge | arm64 | 
| c8gn.12xlarge | arm64 | 
| c8gn.16xlarge | arm64 | 
| c8gn.24xlarge | arm64 | 
| c8gn.48xlarge | arm64 | 
| c8gn.metal-24xl | arm64 | 
| c8gn.metal-48xl | arm64 | 
| c8i.24xlarge | x86\$164 | 
| c8i.32xlarge | x86\$164 | 
| c8i.48xlarge | x86\$164 | 
| c8i.96xlarge | x86\$164 | 
| c8i.metal-48xl | x86\$164 | 
| c8i.metal-96xl | x86\$164 | 
| c8id.24xlarge | x86\$164 | 
| c8id.32xlarge | x86\$164 | 
| c8id.48xlarge | x86\$164 | 
| c8id.96xlarge | x86\$164 | 
| c8id.metal-48xl | x86\$164 | 
| c8id.metal-96xl | x86\$164 | 

------
#### [ Memory optimized ]


| Tipo de instancia | Arquitectura | 
| --- | --- | 
| r6a.12xlarge | x86\$164 | 
| r6a.16xlarge | x86\$164 | 
| r6a.24xlarge | x86\$164 | 
| r6a.32xlarge | x86\$164 | 
| r6a.48xlarge | x86\$164 | 
| r6a.metal | x86\$164 | 
| r6i.8xlarge | x86\$164 | 
| r6i.12xlarge | x86\$164 | 
| r6i.16xlarge | x86\$164 | 
| r6i.24xlarge | x86\$164 | 
| r6i.32xlarge | x86\$164 | 
| r6i.metal | x86\$164 | 
| r6id.8xlarge | x86\$164 | 
| r6id.12xlarge | x86\$164 | 
| r6id.16xlarge | x86\$164 | 
| r6id.24xlarge | x86\$164 | 
| r6id.32xlarge | x86\$164 | 
| r6id.metal | x86\$164 | 
| r6idn.8xlarge | x86\$164 | 
| r6idn.12xlarge | x86\$164 | 
| r6idn.16xlarge | x86\$164 | 
| r6idn.24xlarge | x86\$164 | 
| r6idn.32xlarge | x86\$164 | 
| r6idn.metal | x86\$164 | 
| r6in.8xlarge | x86\$164 | 
| r6in.12xlarge | x86\$164 | 
| r6in.16xlarge | x86\$164 | 
| r6in.24xlarge | x86\$164 | 
| r6in.32xlarge | x86\$164 | 
| r6in.metal | x86\$164 | 
| r7a.12xlarge | x86\$164 | 
| r7a.16xlarge | x86\$164 | 
| r7a.24xlarge | x86\$164 | 
| r7a.32xlarge | x86\$164 | 
| r7a.48xlarge | x86\$164 | 
| r7a.metal-48xl | x86\$164 | 
| r7g.12xlarge | arm64 | 
| r7g.16xlarge | arm64 | 
| r7g.metal | arm64 | 
| r7gd.12xlarge | arm64 | 
| r7gd.16xlarge | arm64 | 
| r7gd.metal | arm64 | 
| r7i.12xlarge | x86\$164 | 
| r7i.16xlarge | x86\$164 | 
| r7i.24xlarge | x86\$164 | 
| r7i.48xlarge | x86\$164 | 
| r7i.metal-24xl | x86\$164 | 
| r7i.metal-48xl | x86\$164 | 
| r7iz.8xlarge | x86\$164 | 
| r7iz.12xlarge | x86\$164 | 
| r7iz.16xlarge | x86\$164 | 
| r7iz.32xlarge | x86\$164 | 
| r7iz.metal-16xl | x86\$164 | 
| r7iz.metal-32xl | x86\$164 | 
| r8a.16xlarge | x86\$164 | 
| r8a.24xlarge | x86\$164 | 
| r8a.48xlarge | x86\$164 | 
| r8a.metal-24xl | x86\$164 | 
| r8a.metal-48xl | x86\$164 | 
| r8g.12xlarge | arm64 | 
| r8g.16xlarge | arm64 | 
| r8g.24xlarge | arm64 | 
| r8g.48xlarge | arm64 | 
| r8g.metal-24xl | arm64 | 
| r8g.metal-48xl | arm64 | 
| r8gb.8xlarge | arm64 | 
| r8gb.12xlarge | arm64 | 
| r8gb.16xlarge | arm64 | 
| r8gb.24xlarge | arm64 | 
| r8gb.48xlarge | arm64 | 
| r8gb.metal-24xl | arm64 | 
| r8gb.metal-48xl | arm64 | 
| r8gd.12xlarge | arm64 | 
| r8gd.16xlarge | arm64 | 
| r8gd.24xlarge | arm64 | 
| r8gd.48xlarge | arm64 | 
| r8gd.metal-24xl | arm64 | 
| r8gd.metal-48xl | arm64 | 
| r8gn.8xlarge | arm64 | 
| r8gn.12xlarge | arm64 | 
| r8gn.16xlarge | arm64 | 
| r8gn.24xlarge | arm64 | 
| r8gn.48xlarge | arm64 | 
| r8gn.metal-24xl | arm64 | 
| r8gn.metal-48xl | arm64 | 
| r8i.24xlarge | x86\$164 | 
| r8i.32xlarge | x86\$164 | 
| r8i.48xlarge | x86\$164 | 
| r8i.96xlarge | x86\$164 | 
| r8i.metal-48xl | x86\$164 | 
| r8i.metal-96xl | x86\$164 | 
| r8id.24xlarge | x86\$164 | 
| r8id.32xlarge | x86\$164 | 
| r8id.48xlarge | x86\$164 | 
| r8id.96xlarge | x86\$164 | 
| r8id.metal-48xl | x86\$164 | 
| r8id.metal-96xl | x86\$164 | 
| u7i-6tb.112xlarge | x86\$164 | 
| u7i-8tb.112xlarge | x86\$164 | 
| u7i-12tb.224xlarge | x86\$164 | 
| u7in-16tb.224xlarge | x86\$164 | 
| u7in-24tb.224xlarge | x86\$164 | 
| u7in-32tb.224xlarge | x86\$164 | 
| u7inh-32tb.480xlarge | x86\$164 | 
| x2idn.16xlarge | x86\$164 | 
| x2idn.24xlarge | x86\$164 | 
| x2idn.32xlarge | x86\$164 | 
| x2idn.metal | x86\$164 | 
| x2iedn.8xlarge | x86\$164 | 
| x2iedn.16xlarge | x86\$164 | 
| x2iedn.24xlarge | x86\$164 | 
| x2iedn.32xlarge | x86\$164 | 
| x2iedn.metal | x86\$164 | 
| x8g.12xlarge | arm64 | 
| x8g.16xlarge | arm64 | 
| x8g.24xlarge | arm64 | 
| x8g.48xlarge | arm64 | 
| x8g.metal-24xl | arm64 | 
| x8g.metal-48xl | arm64 | 
| x8aedz.24xlarge | x86\$164 | 
| x8aedz.metal-24xl | x86\$164 | 
| x8i.24xlarge | x86\$164 | 
| x8i.32xlarge | x86\$164 | 
| x8i.48xlarge | x86\$164 | 
| x8i.64xlarge | x86\$164 | 
| x8i.96xlarge | x86\$164 | 
| x8i.metal-48xl | x86\$164 | 
| x8i.metal-96xl | x86\$164 | 

------
#### [ Accelerated computing ]


| Tipo de instancia | Arquitectura | 
| --- | --- | 
| g6.48xlarge | x86\$164 | 
| g6e.12xlarge | x86\$164 | 
| g6e.24xlarge | x86\$164 | 
| g6e.48xlarge | x86\$164 | 
| g7e.12xlarge | x86\$164 | 
| g7e.24xlarge | x86\$164 | 
| g7e.48xlarge | x86\$164 | 
| p5.4xlarge | x86\$164 | 
| p5.48xlarge | x86\$164 | 
| p5e.48xlarge | x86\$164 | 
| p5en.48xlarge | x86\$164 | 
| p6-b200.48xlarge | x86\$164 | 
| p6-b300.48xlarge | x86\$164 | 

------
#### [ Storage optimized ]


| Tipo de instancia | Arquitectura | 
| --- | --- | 
| i4g.4xlarge | arm64 | 
| i4g.8xlarge | arm64 | 
| i4g.16xlarge | arm64 | 
| i4i.8xlarge | x86\$164 | 
| i4i.12xlarge | x86\$164 | 
| i4i.16xlarge | x86\$164 | 
| i4i.24xlarge | x86\$164 | 
| i4i.32xlarge | x86\$164 | 
| i4i.metal | x86\$164 | 
| i7i.12xlarge | x86\$164 | 
| i7i.16xlarge | x86\$164 | 
| i7i.24xlarge | x86\$164 | 
| i7i.48xlarge | x86\$164 | 
| i7i.metal-24xl | x86\$164 | 
| i7i.metal-48xl | x86\$164 | 
| i7ie.12xlarge | x86\$164 | 
| i7ie.18xlarge | x86\$164 | 
| i7ie.24xlarge | x86\$164 | 
| i7ie.48xlarge | x86\$164 | 
| i7ie.metal-24xl | x86\$164 | 
| i7ie.metal-48xl | x86\$164 | 
| i8g.12xlarge | arm64 | 
| i8g.16xlarge | arm64 | 
| i8g.24xlarge | arm64 | 
| i8g.48xlarge | arm64 | 
| i8g.metal-24xl | arm64 | 
| i8g.metal-48xl | arm64 | 
| i8ge.12xlarge | arm64 | 
| i8ge.18xlarge | arm64 | 
| i8ge.24xlarge | arm64 | 
| i8ge.48xlarge | arm64 | 
| i8ge.metal-24xl | arm64 | 
| i8ge.metal-48xl | arm64 | 
| im4gn.4xlarge | arm64 | 
| im4gn.8xlarge | arm64 | 
| im4gn.16xlarge | arm64 | 

------

## Requisitos previos para instancias de Linux
<a name="ena-express-prereq-linux"></a>

Para asegurarse de que ENA Express puede funcionar eficazmente, actualice la configuración de la instancia de Linux de la siguiente manera.
+ Si la instancia usa marcos gigantes, ejecute el siguiente comando para establecer su unidad de transmisión máxima (MTU) en `8900`.

  ```
  [ec2-user ~]$ sudo ip link set dev eth0 mtu 8900
  ```
+ Aumente el tamaño del anillo del receptor (Rx), como se indica a continuación:

  ```
  [ec2-user ~]$ ethtool -G device rx 8192
  ```
+ Para maximizar el ancho de banda de ENA Express, configure los límites de cola de TCP de la siguiente manera:

  1. Establezca el límite de colas pequeñas de TCP en 1 MB o más. Esto aumenta la cantidad de datos que están en cola para su transmisión en un socket.

     ```
     sudo sh -c 'echo 1048576 > /proc/sys/net/ipv4/tcp_limit_output_bytes'
     ```

  1. Deshabilite los límites de cola de bytes en el dispositivo eth si están habilitados para su distribución de Linux. Esto aumenta los datos en cola que se van a transmitir en la cola del dispositivo.

     ```
     sudo sh -c 'for txq in /sys/class/net/eth0/queues/tx-*; do echo max > ${txq}/byte_queue_limits/limit_min; done'
     ```
**nota**  
El controlador ENA de la distribución de Amazon Linux desactiva los límites de cola de bytes de forma predeterminada.
+ Para minimizar la latencia del tráfico TCP en ENA Express, puede deshabilitar la función de agrupación automática de paquetes de TCP. Esto podría provocar un leve aumento en la sobrecarga de paquetes:

  ```
  sudo bash -c 'echo 0 > /proc/sys/net/ipv4/tcp_autocorking'
  ```

## Ajuste el rendimiento de la configuración de ENA Express en la instancia de Linux
<a name="ena-express-tune"></a>

A fin de comprobar la configuración de la instancia de Linux para un rendimiento óptimo de ENA Express, puede ejecutar el siguiente script que está disponible en el repositorio de Amazon GitHub:

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

El script ejecuta una serie de pruebas y sugiere cambios de configuración, tanto recomendados como necesarios.

# Revise los ajustes de ENA Express para su instancia de EC2
<a name="ena-express-list-view"></a>

Puede comprobar la configuración de ENA Express por instancia o por interfaz de red. Para actualizar la configuración de ENA Express, consulte [Configurar los ajustes de ENA Express para su instancia de EC2](ena-express-configure.md).

------
#### [ Console ]

**Para ver la configuración de ENA Express para una interfaz de red**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación izquierdo, elija **Network Interfaces** (Interfaces de red).

1. Seleccione una interfaz de red para ver los detalles de esa instancia. Puede elegir el enlace **ID de interfaz de red** para abrir la página de detalles o puede seleccionar la casilla de la parte izquierda de la lista para ver los detalles en el panel correspondiente, en la parte inferior de la página.

1. En la sección de **Vinculaicón de la interfaz de red** de la pestaña **Detalles** o la página de detalles, revise la configuración de **ENA Express** y **UDP de ENA Express**.

**Para ver la configuración de ENA Express para una instancia**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación izquierdo, elija **instancias**.

1. Seleccione una instancia para ver sus detalles. Puede elegir el enlace **ID de instancia** para abrir la página de detalles o puede seleccionar la casilla de la parte izquierda de la lista para ver los detalles en el panel correspondiente, en la parte inferior de la página.

1. En la sección **Interfaces de red** de la pestaña **Redes**, desplácese hacia la derecha para revisar la configuración de **ENA Express** y **UDP de ENA Express**.

------
#### [ AWS CLI ]

**Para obtener la configuración de ENA Express de una instancia**  
Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/describe-instances.html](https://docs.aws.amazon.com/cli/latest/reference/describe-instances.html). Este ejemplo de comando devuelve una lista de las configuraciones de ENA Express para las interfaces de red asociadas a cada una de las instancias en ejecución especificadas por el parámetro `--instance-ids`.

```
aws ec2 describe-instances \
    --instance-ids i-1234567890abcdef0 i-0598c7d356eba48d7 \
    --query 'Reservations[*].Instances[*].[InstanceId, NetworkInterfaces[*].Attachment.EnaSrdSpecification]'
```

A continuación, se muestra un ejemplo del resultado.

```
[
    [
        [
            "i-1234567890abcdef0",
            [
                {
                    "EnaSrdEnabled": true,
                    "EnaSrdUdpSpecification": {
                        "EnaSrdUdpEnabled": false
                    }
                }
            ]
        ]
    ],
    [
        [
            "i-0598c7d356eba48d7",
            [
            {
                    "EnaSrdEnabled": true,
                    "EnaSrdUdpSpecification": {
                        "EnaSrdUdpEnabled": false
                    }
                }
            ]
        ]
    ]
]
```

**Para obtener la configuración de ENA Express para una interfaz de red**  
Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/describe-network-interfaces.html](https://docs.aws.amazon.com/cli/latest/reference/describe-network-interfaces.html).

```
aws ec2 describe-network-interfaces \
    --network-interface-ids eni-1234567890abcdef0 \
    --query NetworkInterfaces[].[NetworkInterfaceId,Attachment.EnaSrdSpecification]
```

A continuación, se muestra un ejemplo del resultado.

```
[
    [
        "eni-1234567890abcdef0",
        {
            "EnaSrdEnabled": true,
            "EnaSrdUdpSpecification": {
                "EnaSrdUdpEnabled": false
            }
        }
    ]
]
```

------
#### [ PowerShell ]

**Para obtener la configuración de ENA Express para una interfaz de red**  
Utilice el cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2NetworkInterface.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2NetworkInterface.html).

```
Get-EC2NetworkInterface `
    -NetworkInterfaceId eni-1234567890abcdef0 | `
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 } }
```

A continuación, se muestra un ejemplo del resultado.

```
Association         : 
NetworkInterfaceId  : eni-0d1234e5f6a78901b
OwnerId             : 111122223333
AttachTime          : 6/11/2022 1:13:11 AM
AttachmentId        : eni-attach-0d1234e5f6a78901b
DeleteOnTermination : True
NetworkCardIndex    : 0
InstanceId          : i-1234567890abcdef0
InstanceOwnerId     : 111122223333
Status              : attached
EnaSrdEnabled       : True
EnaSrdUdpEnabled    : False
```

------

# Configurar los ajustes de ENA Express para su instancia de EC2
<a name="ena-express-configure"></a>

Puede configurar ENA Express para los tipos de instancia de EC2 compatibles sin necesidad de instalar ningún software adicional. Para obtener más información, consulte [Tipos de instancia compatibles con ENA Express](ena-express.md#ena-express-supported-instance-types).

------
#### [ Console ]

**Para administrar ENA Express para una interfaz de red**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación izquierdo, elija **Network Interfaces** (Interfaces de red).

1. Seleccione una interfaz de red que esté adjunta a una instancia. Puede elegir el enlace **ID de interfaz de red** para abrir la página de detalles o puede seleccionar la casilla de la parte izquierda de la lista.

1. Elija **Administrar ENA Express** en el menú **Acción** de la parte superior derecha de la página. Se abre el cuadro de diálogo **Administrar ENA Express**, en el que se muestran el ID de la interfaz de red seleccionada y la configuración actual.

   Si la interfaz de red que seleccionó no está adjunta a una instancia, esta acción no aparece en el menú.

1. Para usar **ENA Express**, seleccione la casilla **Habilitar**.

1. Cuando ENA Express está habilitado, puede configurar los ajustes de UDP. Para usar **UDP de ENA Express**, seleccione la casilla **Habilitar**.

1. Elija **Guardar** para guardar las opciones de configuración.

**Para administrar ENA Express para una instancia**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación izquierdo, elija **instancias**.

1. Seleccione la instancia que desea administrar. Puede elegir el **ID de instancia** para abrir la página de detalles o puede seleccionar la casilla de la parte izquierda de la lista.

1. Seleccione la **interfaz de red** que desea configurar para su instancia.

1. Elija **Manage ENA Express** (Administrar ENA Express) en el menú **Action** (Acción) de la parte superior derecha de la página.

1. Para configurar ENA Express para una interfaz de red adjunta a la instancia, selecciónela en la lista **Interfaz de red**.

1. Para utilizar **ENA Express** para la asociación de la interfaz de red seleccionada, elija la casilla **Habilitar**.

1. Cuando ENA Express está habilitado, puede configurar los ajustes de UDP. Para usar **UDP de ENA Express**, seleccione la casilla **Habilitar**.

1. Elija **Guardar** para guardar las opciones de configuración.

**Para configurar ENA Express al conectar una interfaz de red**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación izquierdo, elija **Network Interfaces** (Interfaces de red).

1. Seleccione una interfaz de red que no esté adjunta a una instancia (el valor de **Estado** es **Disponible**). Puede elegir el enlace **Network interface ID** (ID de interfaz de red) para abrir la página de detalles o puede seleccionar la casilla de la parte izquierda de la lista.

1. Seleccione la **instancia** a la que se adjuntará.

1. Para usar **ENA Express** después de asociar la interfaz de red a la instancia, seleccione la casilla **Habilitar**.

1. Cuando ENA Express está habilitado, puede configurar los ajustes de UDP. Para usar **UDP de ENA Express**, seleccione la casilla **Habilitar**.

1. Para conectar la interfaz de red a la instancia y guardar la configuración de ENA Express, elija **Adjuntar**.

------
#### [ AWS CLI ]

**Para configurar ENA Express al conectar una interfaz de red**  
Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/;attach-network-interface.html](https://docs.aws.amazon.com/cli/latest/reference/;attach-network-interface.html), como se muestra en los siguientes ejemplos.

**Ejemplo 1: usar ENA Express para el tráfico TCP, pero no para el tráfico UDP**  
En este ejemplo se configura `EnaSrdEnabled` como `true`, y permite que `EnaSrdUdpEnabled` se establezca de forma predeterminada en `false`.

```
aws ec2 attach-network-interface \
    --network-interface-id eni-1234567890abcdef0 \
    --instance-id i-1234567890abcdef0 \
    --device-index 1 \
    --ena-srd-specification 'EnaSrdEnabled=true'
```

**Ejemplo 2: usar ENA Express tanto para el tráfico TCP como para el tráfico UDP**  
En este ejemplo se configura `EnaSrdEnabled` y `EnaSrdUdpEnabled` como `true`.

```
aws ec2 attach-network-interface \
    --network-interface-id eni-1234567890abcdef0 \
    --instance-id i-1234567890abcdef0 \
    --device-index 1 \
    --ena-srd-specification 'EnaSrdEnabled=true,EnaSrdUdpSpecification={EnaSrdUdpEnabled=true}'
```

**Para actualizar la configuración de ENA Express de una interfaz de red adjunta**  
Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/modify-network-interface-attribute.html](https://docs.aws.amazon.com/cli/latest/reference/modify-network-interface-attribute.html), como se muestra en los siguientes ejemplos.

**Ejemplo 1: usar ENA Express para el tráfico TCP, pero no para el tráfico UDP**  
En este ejemplo se configura `EnaSrdEnabled` como `true`, y se permite que `EnaSrdUdpEnabled` sea la forma predeterminada para `false` si nunca se configuró previamente.

```
aws ec2 modify-network-interface-attribute \
    --network-interface-id eni-1234567890abcdef0 \
    --ena-srd-specification 'EnaSrdEnabled=true'
```

**Ejemplo 2: usar ENA Express tanto para el tráfico TCP como para el tráfico UDP**  
En este ejemplo se configura `EnaSrdEnabled` y `EnaSrdUdpEnabled` como `true`.

```
aws ec2 modify-network-interface-attribute \
    --network-interface-id eni-1234567890abcdef0 \
    --ena-srd-specification 'EnaSrdEnabled=true,EnaSrdUdpSpecification={EnaSrdUdpEnabled=true}'
```

**Ejemplo 3: dejar de usar ENA Express para el tráfico UDP**  
En este ejemplo se configura `EnaSrdUdpEnabled` como `false`.

```
aws ec2 modify-network-interface-attribute \
    --network-interface-id eni-1234567890abcdef0 \
    --ena-srd-specification 'EnaSrdUdpSpecification={EnaSrdUdpEnabled=false}'
```

------
#### [ PowerShell ]

**Para configurar ENA Express al conectar una interfaz de red**  
Utilice cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/Add-EC2NetworkInterface.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Add-EC2NetworkInterface.html) como se muestra en los siguientes ejemplos.

**Ejemplo 1: usar ENA Express para el tráfico TCP, pero no para el tráfico UDP**  
En este ejemplo se configura `EnaSrdEnabled` como `true`, y permite que `EnaSrdUdpEnabled` se establezca de forma predeterminada en `false`.

```
Add-EC2NetworkInterface `
    -NetworkInterfaceId eni-1234567890abcdef0 `
    -InstanceId i-1234567890abcdef0 `
    -DeviceIndex 1 `
    -EnaSrdSpecification_EnaSrdEnabled $true
```

**Ejemplo 2: usar ENA Express tanto para el tráfico TCP como para el tráfico UDP**  
En este ejemplo se configura `EnaSrdEnabled` y `EnaSrdUdpEnabled` como `true`.

```
Add-EC2NetworkInterface `
    -NetworkInterfaceId eni-1234567890abcdef0 `
    -InstanceId i-1234567890abcdef0 `
    -DeviceIndex 1 `
    -EnaSrdSpecification_EnaSrdEnabled $true `
    -EnaSrdUdpSpecification_EnaSrdUdpEnabled $true
```

**Para configurar ENA Express para el adjunto de interfaz de red**  
Utilice cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2NetworkInterfaceAttribute.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2NetworkInterfaceAttribute.html) como se muestra en los siguientes ejemplos.

**Ejemplo 1: usar ENA Express para el tráfico TCP, pero no para el tráfico UDP**  
En este ejemplo se configura `EnaSrdEnabled` como `true`, y se permite que `EnaSrdUdpEnabled` sea la forma predeterminada para `false` si nunca se configuró previamente.

```
Edit-EC2NetworkInterfaceAttribute `
    -NetworkInterfaceId eni-1234567890abcdef0 `
    -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
```

**Ejemplo 2: usar ENA Express tanto para el tráfico TCP como para el tráfico UDP**  
En este ejemplo se configura `EnaSrdEnabled` y `EnaSrdUdpEnabled` como `true`.

```
Edit-EC2NetworkInterfaceAttribute `
    -NetworkInterfaceId eni-1234567890abcdef0 `
    -EnaSrdSpecification_EnaSrdEnabled $true `
    -EnaSrdSpecification_EnaSrdUdpSpecification_EnaSrdUdpEnabled $true ;
Get-EC2NetworkInterface -NetworkInterfaceId eni-1234567890abcdef0 | `
Select-Object `
    NetworkInterfaceId, 
    @{Name = 'EnaSrdEnabled'; Expression = { $_.Attachment.EnaSrdSpecification.EnaSrdEnabled }}, 
    @{Name = 'EnaSrdUdpEnabled'; Expression = { $_.Attachment.EnaSrdSpecification.EnaSrdUdpSpecification.EnaSrdUdpEnabled }} | `
Format-List
```

**Ejemplo 3: dejar de usar ENA Express para el tráfico UDP**  
En este ejemplo se configura `EnaSrdUdpEnabled` como `false`.

```
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
```

------

## Configuración de ENA Express en la inicialización
<a name="ena-express-configure-on-launch"></a>

Puede utilizar uno de los siguientes métodos para configurar ENA Express directamente cuando inicie una instancia. Los enlaces especificados lo remiten a las instrucciones de Consola de administración de AWS para estos métodos.
+ **Asistente de inicialización de instancias:** puede configurar ENA Express en la inicialización de instancias con el asistente de inicialización de instancias. Para obtener información, consulte **Configuración de red avanzada** en el [Configuración de red](ec2-instance-launch-parameters.md#liw-network-settings) para el asistente de inicialización de instancias.
+ **Plantilla de inicialización:** puede configurar ENA Express en la inicialización cuando utiliza una plantilla de inicialización. Para obtener más información, consulte la página [Creación de una plantilla de inicialización de Amazon EC2](create-launch-template.md) y, a continuación, amplíe la sección **Configuración de red** y revise la **Configuración de red avanzada**.

# Redes mejoradas con la interfaz de Intel 82599 VF
<a name="sriov-networking"></a>

Para las [instancia basadas en Xen](instance-types.md#instance-hypervisor-type), la interfaz Intel 82599 Virtual Function (VF) proporciona capacidades de redes mejoradas. La interfaz utiliza el controlador Intel `ixgbevf`.

En las siguientes pestañas se muestra cómo comprobar el controlador del adaptador de red que está instalado en el sistema operativo de la instancia.

------
#### [ Linux ]

**Controlador de la interfaz de red de Linux**  
Utilice el siguiente comando para verificar si el módulo se está utilizando en una interfaz en particular, sustituyendo el nombre de la interfaz que quiere comprobar. Si utiliza una sola interfaz (predeterminada), esta será `eth0`. Si el sistema operativo admite [nombres de red predecibles](#predictable-network-names-sriov), podría ser un nombre como `ens5`.

En el ejemplo siguiente, el módulo `ixgbevf` no está cargado, ya que el controlador indicado es `vif`.

```
[ec2-user ~]$ ethtool -i eth0
driver: vif
version:
firmware-version:
bus-info: vif-0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no
```

En este caso, el módulo `ixgbevf` está cargado. Esta instancia tiene las redes mejoradas configuradas correctamente.

```
[ec2-user ~]$ ethtool -i eth0
driver: ixgbevf
version: 4.0.3
firmware-version: N/A
bus-info: 0000:00:03.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: no
supports-register-dump: yes
supports-priv-flags: no
```

------
#### [ Windows ]

**Adaptador de red de Windows**  
Para comprobar si el controlador está instalado, conéctese a la instancia y abra Device Manager. Debería ver `Intel(R) 82599 Virtual Function` listado debajo de **Adaptadores de red**.

------

**Topics**
+ [Prepare su instancia para redes mejoradas.](#ixgbevf-requirements)
+ [Probar si las redes mejoradas están habilitadas](#test-enhanced-networking)
+ [Habilitar redes mejoradas en la instancia](#enable-enhanced-networking)
+ [Solucionar problemas de conectividad](#enhanced-networking-troubleshooting)

## Prepare su instancia para redes mejoradas.
<a name="ixgbevf-requirements"></a>

Para prepararse para las redes mejoradas con la interfaz Intel 82599 VF, configure su instancia de la siguiente manera:
+ Compruebe que el tipo de instancia es uno de los siguientes: C3, C4, D2, I2, M4 (excepto `m4.16xlarge`) y R3.
+ Asegúrese de que la instancia tenga conexión a Internet.
+ Si tiene datos importantes en la instancia que desea conservar, debería realizar ahora una copia de seguridad de esos datos creando una AMI desde la instancia. La actualización del kernel y los módulos del kernel, además de habilitar el atributo `sriovNetSupport`, puede hacer que las instancias o sistemas operativos incompatibles sean inaccesibles. Si tiene una copia de seguridad reciente y esto ocurre, los datos se conservarán.
+ **Instancias de Linux**: lance la instancia desde una AMI HVM utilizando la versión de kernel de Linux 2.6.32 o posterior. Las AMI HVM de Amazon Linux más recientes tienen instaladas los módulos necesarios para las redes mejoradas y tienen establecidos los atributos necesarios. Por lo tanto, si inicia una instancia que admite redes mejoradas con respaldo de Amazon EBS utilizando una AMI HVM de Amazon Linux actual, las redes mejoradas ya están habilitadas para la instancia.
**aviso**  
Las redes mejoradas solo se admiten para instancias HVM. Si habilita las redes mejoradas con una instancia PV, podrían ser inaccesibles. Si establece este atributo sin el módulo o la versión del módulo adecuada, la instancia también podría ser inaccesible.
+ **Instancias de Windows**: lance la instancia desde una AMI HVM de 64 bits. No se pueden habilitar las redes mejoradas en Windows Server 2008. Las redes mejoradas ya están habilitadas para las AMI de Windows Server 2012 R2 o Windows Server 2016 y versiones posteriores. Windows Server 2012 R2 incluye el controlador Intel 1.0.15.3 y recomendamos actualizar ese controlador a la versión más reciente con la utilidad Pnputil.exe.
+ Utilice [AWS CloudShell](https://console.aws.amazon.com/cloudshell) en la Consola de administración de AWS, o bien instale y configure la [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) o las [AWS Tools for Windows PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/) en cualquier computadora que elija, preferentemente en su equipo de escritorio o portátil local. Para obtener más información, consulte [Acceder a Amazon EC2](concepts.md#access-ec2) o la [Guía del usuario de AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html). Las redes mejoradas no se pueden administrar desde la consola de Amazon EC2.

## Probar si las redes mejoradas están habilitadas
<a name="test-enhanced-networking"></a>

Compruebe que el atributo `sriovNetSupport` esté establecido en la instancia o en la imagen.

------
#### [ AWS CLI ]

**Comprobación del atributo de instancia (sriovNetSupport)**  
Use el siguiente comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-attribute.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-attribute.html). Si se configuró el atributo, el valor es `simple`.

```
aws ec2 describe-instance-attribute \
    --instance-id i-1234567890abcdef0 \
    --attribute sriovNetSupport
```

**Comprobación del atributo de imagen (sriovNetSupport)**  
Use el siguiente comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html). Si se configuró el atributo, el valor es `simple`.

```
aws ec2 describe-images \
    --image-id ami-0abcdef1234567890 \
    --query "Images[].SriovNetSupport"
```

------
#### [ PowerShell ]

**Comprobación del atributo de instancia (sriovNetSupport)**  
Utilice el cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceAttribute.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceAttribute.html). Si se configuró el atributo, el valor es `simple`.

```
Get-EC2InstanceAttribute `
    -InstanceId i-1234567890abcdef0 `
    -Attribute sriovNetSupport
```

**Comprobación del atributo de imagen (sriovNetSupport)**  
Use el siguiente comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html). Si se configuró el atributo, el valor es `simple`.

```
(Get-EC2Image -ImageId ami-0abcdef1234567890).SriovNetSupport
```

------

## Habilitar redes mejoradas en la instancia
<a name="enable-enhanced-networking"></a>

El procedimiento que utiliza depende del sistema operativo de la instancia.

**aviso**  
No hay ninguna forma de deshabilitar el atributo de redes mejoradas después de habilitarlo.

### Amazon Linux
<a name="enable-amazon-linux"></a>

Las AMI HVM de Amazon Linux más recientes tienen instalado el módulo `ixgbevf` necesario para las redes mejoradas y tienen establecido el atributo `sriovNetSupport` que se necesita. Por lo tanto, si inicia un tipo de instancia utilizando una AMI HVM de Amazon Linux actual, las redes mejoradas ya están habilitadas para la instancia. Para obtener más información, consulte [Probar si las redes mejoradas están habilitadas](#test-enhanced-networking).

Si ha iniciado la instancia utilizando una AMI de Amazon Linux más antigua y no tiene habilitadas aún las redes mejoradas, utilice el siguiente procedimiento para habilitarlas.

**Para habilitar las redes mejoradas**

1. <a name="amazon-linux-enhanced-networking-start-step"></a>Conéctese a la instancia.

1. Desde la instancia, ejecute el siguiente comando para actualizarla con el kernel y los módulos de kernel más recientes, incluido `ixgbevf`:

   ```
   [ec2-user ~]$ sudo yum update
   ```

1. Desde el equipo local, reinicie la instancia mediante la consola de Amazon EC2 o uno de los siguientes comandos: [https://docs.aws.amazon.com/cli/latest/reference/ec2/reboot-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/reboot-instances.html) (AWS CLI) o [https://docs.aws.amazon.com/powershell/latest/reference/items/Restart-EC2Instance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Restart-EC2Instance.html) (AWS Tools for Windows PowerShell).

1. <a name="amazon-linux-enhanced-networking-stop-step"></a>Conéctese de nuevo a la instancia y compruebe si el módulo `ixgbevf` está instalado y si tiene la versión mínima recomendada utilizando el comando **modinfo ixgbevf** de [Probar si las redes mejoradas están habilitadas](#test-enhanced-networking).

1. [instancia basada en EBS] Desde el equipo local, detenga la instancia mediante la consola de Amazon EC2 o uno de los siguientes comandos: [https://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html) (AWS CLI) o [https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2Instance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2Instance.html) (AWS Tools for Windows PowerShell).

   [Instancia respaldada por el almacén de instancias] No puede detener la instancia para modificar el atributo. En su lugar, pase directamente al siguiente procedimiento.

1. En el equipo local, habilite el atributo de redes mejoradas con uno de los siguientes comandos:

------
#### [ AWS CLI ]

   Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html) como se indica a continuación.

   ```
   aws ec2 modify-instance-attribute \
       --instance-id i-1234567890abcdef0 \
       --sriov-net-support simple
   ```

------
#### [ PowerShell ]

   Utilice el cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html) de la siguiente manera.

   ```
   Edit-EC2InstanceAttribute `
       -InstanceId i-1234567890abcdef0 `
       -SriovNetSupport "simple"
   ```

------

1. (Opcional) Cree una AMI desde la instancia, tal y como se explica en [Creación de una AMI basada en Amazon EBS](creating-an-ami-ebs.md). La AMI hereda el atributo de redes mejoradas de la instancia. Por lo tanto, puede utilizar esta AMI para iniciar otra instancia con las redes mejoradas habilitadas de manera predeterminada.

1. Desde el equipo local, inicie la instancia mediante la consola de Amazon EC2 o uno de los siguientes comandos: [https://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html) (AWS CLI) o [https://docs.aws.amazon.com/powershell/latest/reference/items/Start-EC2Instance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Start-EC2Instance.html) (AWS Tools for Windows PowerShell).

1. Conéctese a la instancia y compruebe que el módulo `ixgbevf` está instalado y cargado en la interfaz de red utilizando el comando **ethtool -i eth*n*** command de [Probar si las redes mejoradas están habilitadas](#test-enhanced-networking).

**Para habilitar las redes mejoradas (instancias con respaldo en el almacén de instancias)**  
Siga el procedimiento anterior hasta el paso en el que detiene la instancia. Cree una nueva AMI tal como se describe en [Creación de una AMI basada en Amazon S3](creating-an-ami-instance-store.md), asegurándose de habilitar el atributo de redes mejoradas cuando registre la AMI.

------
#### [ AWS CLI ]

Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) como se indica a continuación.

```
aws ec2 register-image --sriov-net-support simple ...
```

------
#### [ PowerShell ]

Utilice [https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html) de la siguiente manera.

```
Register-EC2Image -SriovNetSupport "simple" ...
```

------

### Ubuntu
<a name="enhanced-networking-ubuntu"></a>

Antes de comenzar, [compruebe si las redes mejoradas ya están habilitadas](#test-enhanced-networking) en la instancia.

Las AMI HVM de Ubuntu de inicio rápido incluyen los controladores necesarios para las redes mejoradas. Si tiene una versión de `ixgbevf` anterior a 2.16.4, puede instalar el paquete del kernel de `linux-aws` para obtener los controladores de redes mejoradas más recientes.

En el siguiente procedimiento, se proporcionan los pasos generales para compilar el módulo `ixgbevf` en una instancia de Ubuntu.<a name="ubuntu-enhanced-networking-procedure"></a>

**Para instalar el paquete de kernel de `linux-aws`**

1. <a name="ubuntu-enhanced-networking-start-step"></a>Conéctese a la instancia.

1. Actualice la caché del paquete y los paquetes.

   ```
   ubuntu:~$ sudo apt-get update && sudo apt-get upgrade -y linux-aws
   ```
**importante**  
Si, durante el proceso de actualización, se le pide que instale `grub`, use `/dev/xvda` para instalar `grub` y luego elija conservar la versión actual de `/boot/grub/menu.lst`.

### Otras distribuciones de Linux
<a name="enhanced-networking-linux"></a>

Antes de comenzar, [compruebe si las redes mejoradas ya están habilitadas](#test-enhanced-networking) en la instancia. Las últimas versiones de las AMI HVM de Ubuntu de inicio rápido incluyen los controladores necesarios para las redes mejoradas, por lo que no es necesario realizar pasos adicionales. 

En el siguiente procedimiento, se proporcionan los pasos generales que debe realizar para habilitar las redes mejoradas con la interfaz Intel 82599 VF en una distribución de Linux que no sea Amazon Linux o Ubuntu. Para obtener más información, como la sintaxis detallada de los comandos, las ubicaciones de los archivos o el soporte de paquetes y herramientas, consulte la documentación específica de su distribución de Linux.

**Para habilitar las redes mejoradas en Linux**

1. <a name="other-linux-enhanced-networking-start-step"></a>Conéctese a la instancia.

1. Descargue el código fuente para el módulo `ixgbevf` de su instancia desde Sourceforge en [https://sourceforge.net/projects/e1000/files/ixgbevf%20stable/](https://sourceforge.net/projects/e1000/files/ixgbevf%20stable/).

   Las versiones de `ixgbevf` anteriores a la 2.16.4, incluida la versión 2.14.2, no se compilan correctamente en algunas distribuciones de Linux, incluidas determinadas versiones de Ubuntu.

1. Compile e instale el módulo `ixgbevf` en la instancia.
**aviso**  
Si compila el módulo `ixgbevf` para el kernel actual y luego lo actualiza sin volver a compilar el controlador del nuevo kernel, es posible que el sistema vuelva al módulo `ixgbevf` específico de la distribución en el siguiente rearranque. Esto podría hacer que el sistema fuera inaccesible si la versión específica de la distribución es incompatible con las redes mejoradas.

1. Ejecute el comando **sudo depmod** para actualizar las dependencias de módulos.

1. <a name="other-linux-enhanced-networking-stop-step"></a>Actualice `initramfs` en la instancia para asegurarse de que el nuevo módulo se carga en el momento del arranque.

1. <a name="predictable-network-names-sriov"></a>Determine si el sistema utiliza de manera predeterminada nombres de interfaz de red predecibles. Los sistemas que utilizan las versiones 197 o posteriores de **systemd** o **udev** pueden cambiar el nombre de los dispositivos Ethernet y no garantizan que haya una sola interfaz de red denominada `eth0`. Este comportamiento puede producir problemas al conectarse a la instancia. Para obtener más información y para ver otras opciones de configuración, consulte [Predictable Network Interface Names](https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/) en el sitio web de freedesktop.org.

   1. Puede utilizar el siguiente comando para comprobar las versiones de **systemd** o **udev** en los sistemas basados en RPM:

      ```
      [ec2-user ~]$ rpm -qa | grep -e '^systemd-[0-9]\+\|^udev-[0-9]\+'
      				systemd-208-11.el7_0.2.x86_64
      ```

      En el ejemplo anterior de Red Hat Enterprise Linux 7, la versión de **systemd** es la 208, por lo que se deben deshabilitar los nombres de interfaz de red predecibles.

   1. Para deshabilitar los nombres de interfaz de red predecibles, añada la opción `net.ifnames=0` a la línea `GRUB_CMDLINE_LINUX` en `/etc/default/grub`.

      ```
      [ec2-user ~]$ sudo sed -i '/^GRUB\_CMDLINE\_LINUX/s/\"$/\ net\.ifnames\=0\"/' /etc/default/grub
      ```

   1. Vuelva a compilar el archivo de configuración de Grub.

      ```
      [ec2-user ~]$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
      ```

1. [Instancia basada en EBS] Desde el equipo local, detenga la instancia mediante la consola de Amazon EC2 o uno de los siguientes comandos: [stop-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html) (AWS CLI) o [https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2Instance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2Instance.html) (AWS Tools for Windows PowerShell).

   [Instancia respaldada por el almacén de instancias] No puede detener la instancia para modificar el atributo. En su lugar, pase directamente al siguiente procedimiento.

1. En el equipo local, habilite el atributo de redes mejoradas con uno de los siguientes comandos:

------
#### [ AWS CLI ]

   Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html) como se indica a continuación.

   ```
   aws ec2 modify-instance-attribute \
       --instance-id i-1234567890abcdef0 -\
       -sriov-net-support simple
   ```

------
#### [ PowerShell ]

   Utilice el cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html) de la siguiente manera.

   ```
   Edit-EC2InstanceAttribute `
       -InstanceId i-1234567890abcdef0 `
       -SriovNetSupport "simple"
   ```

------

1. (Opcional) Cree una AMI desde la instancia, tal y como se explica en [Creación de una AMI basada en Amazon EBS](creating-an-ami-ebs.md). La AMI hereda el atributo de redes mejoradas de la instancia. Por lo tanto, puede utilizar esta AMI para iniciar otra instancia con las redes mejoradas habilitadas de manera predeterminada.

   Si el sistema operativo de la instancia contiene un archivo `/etc/udev/rules.d/70-persistent-net.rules`, debe eliminarlo antes de crear la AMI. Este archivo contiene la dirección MAC del adaptador Ethernet de la instancia original. Si otra instancia arranca con este archivo, el sistema operativo no será capaz de encontrar el dispositivo y `eth0` producirá un error, lo que causará problemas de arranque. Este archivo se regenera en el siguiente ciclo de arranque y todas las instancias que se inician desde la AMI crean su propia versión del archivo.

1. Desde el equipo local, inicie la instancia mediante la consola de Amazon EC2 o uno de los siguientes comandos: [https://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html) (AWS CLI) o [https://docs.aws.amazon.com/powershell/latest/reference/items/Start-EC2Instance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Start-EC2Instance.html) (AWS Tools for Windows PowerShell).

1. (Opcional) Conéctese a la instancia y compruebe si el módulo está instalado.

**Para habilitar las redes mejoradas (instancias con respaldo en el almacén de instancias)**  
Siga el procedimiento anterior hasta el paso en el que detiene la instancia. Cree una nueva AMI tal como se describe en [Creación de una AMI basada en Amazon S3](creating-an-ami-instance-store.md), asegurándose de habilitar el atributo de redes mejoradas cuando registre la AMI.

------
#### [ AWS CLI ]

Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) como se indica a continuación.

```
aws ec2 register-image --sriov-net-support simple ...
```

------
#### [ PowerShell ]

Utilice [https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html) de la siguiente manera.

```
Register-EC2Image -SriovNetSupport "simple" ...
```

------

### Windows
<a name="enable-windows"></a>

Si ha iniciado su instancia y no tiene habilitadas aún las redes mejoradas, debe descargar e instalar el controlador del adaptador de red requerido en la instancia y luego establecer el atributo de la instancia `sriovNetSupport` para activar las redes mejoradas. Solo puede habilitar este atributo en tipos de instancias admitidos. Para obtener más información, consulte [Redes mejoradas en instancias de Amazon EC2](enhanced-networking.md).

**importante**  
Para ver las actualizaciones de controladores más recientes en las AMI de Windows, consulte el [historial de versiones de la AMI de Windows](https://docs.aws.amazon.com/ec2/latest/windows-ami-reference/ec2-windows-ami-version-history.html) en la *Referencia de las AMI de Windows de AWS*.

**Para habilitar las redes mejoradas**

1. <a name="amazon-linux-enhanced-networking-start-step"></a>Conéctese a la instancia e inicie sesión como administrador local.

1. [Windows Server 2016 y versiones posteriores] Ejecute el siguiente script de PowerShell de EC2Launch para configurar la instancia después de instalar el controlador.

   ```
   PS C:\> C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -Schedule
   ```
**importante**  
La contraseña del administrador se restablecerá cuando habilite el script de inicialización EC2Launch de la instancia. Puede modificar el archivo de configuración para deshabilitar el restablecimiento de la contraseña del administrador especificándolo en la configuración de las tareas de inicialización.

1. Desde la instancia, descargue el controlador del adaptador de red Intel para su sistema operativo:
   + **Windows Server 2022**

     Visite la [página de descarga](https://www.intel.com/content/www/us/en/download/706171/intel-network-adapter-driver-for-windows-server-2022.html) y descargue `Wired_driver_version_x64.zip`.
   + **Windows Server 2019** incluida para versión de Server 1809 y posteriores\$1

     Visite la [página de descarga](https://www.intel.com/content/www/us/en/download/19372/intel-network-adapter-driver-for-windows-server-2019.html) y descargue `Wired_driver_version_x64.zip`.
   + **Windows Server 2016** incluida para versión de Server 1803 y anteriores\$1

     Visite la [página de descarga](https://www.intel.com/content/www/us/en/download/18737/intel-network-adapter-driver-for-windows-server-2016.html) y descargue `Wired_driver_version_x64.zip`.
   + **Windows Server 2012 R2**

     Visite la [página de descarga](https://www.intel.com/content/www/us/en/download/17480/intel-network-adapter-driver-for-windows-server-2012-r2.html) y descargue `Wired_driver_version_x64.zip`.
   + **Windows Server 2012**

     Visite la [página de descarga](https://www.intel.com/content/www/us/en/download/16789/intel-network-adapter-driver-for-windows-server-2012.html) y descargue `Wired_driver_version_x64.zip`.
   + **Windows Server 2008 R2**

     Visite la [página de descarga](https://www.intel.com/content/www/us/en/download/15590/intel-network-adapter-driver-for-windows-7-final-release.html) y descargue `PROWinx64Legacy.exe`.

   \$1Las versiones de Server 1803 y anteriores, así como 1809 y posteriores no se tratan específicamente en las páginas de software y controladores de Intel.

1. Instale el controlador del adaptador de red Intel para su sistema operativo.
   + **Windows Server 2008 R2**

     1. En la carpeta **Descargas**, busque el archivo `PROWinx64Legacy.exe` y cámbiele el nombre a `PROWinx64Legacy.zip`.

     1. Extraiga el contenido del archivo `PROWinx64Legacy.zip`.

     1. Abra la línea de comandos, vaya a la carpeta que extrajo y ejecute el siguiente comando para utilizar la utilidad `pnputil` para agregar e instalar el archivo INF en el almacén de controladores.

        ```
        C:\> pnputil -a PROXGB\Winx64\NDIS62\vxn62x64.inf
        ```
   + **Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2 y Windows Server 2012**

     1. En la carpeta **Descargas**, extraiga el contenido del archivo `Wired_driver_version_x64.zip`.

     1. Abra la línea de comandos, vaya a la carpeta que extrajo y ejecute uno de los siguientes comandos para utilizar la utilidad `pnputil` para agregar e instalar el archivo INF en el almacén de controladores.
        + Windows Server 2022

          ```
          pnputil -i -a PROXGB\Winx64\NDIS68\vxn68x64.inf
          ```
        + Windows Server 2019

          ```
          pnputil -i -a PROXGB\Winx64\NDIS68\vxn68x64.inf
          ```
        + Windows Server 2016

          ```
          pnputil -i -a PROXGB\Winx64\NDIS65\vxn65x64.inf
          ```
        + Windows Server 2012 R2

          ```
          pnputil -i -a PROXGB\Winx64\NDIS64\vxn64x64.inf
          ```
        + Windows Server 2012

          ```
          pnputil -i -a PROXGB\Winx64\NDIS63\vxn63x64.inf
          ```

1. En el equipo local, habilite el atributo de redes mejoradas con uno de los siguientes comandos:

------
#### [ AWS CLI ]

   Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html) como se indica a continuación.

   ```
   aws ec2 modify-instance-attribute \
       --instance-id i-1234567890abcdef0 \
       --sriov-net-support simple
   ```

------
#### [ PowerShell ]

   Utilice el cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html) de la siguiente manera.

   ```
   Edit-EC2InstanceAttribute `
       -InstanceId i-1234567890abcdef0 `
       -SriovNetSupport "simple"
   ```

------

1. (Opcional) Cree una AMI desde la instancia, tal y como se explica en [Creación de una AMI basada en Amazon EBS](creating-an-ami-ebs.md). La AMI hereda el atributo de redes mejoradas de la instancia. Por lo tanto, puede utilizar esta AMI para iniciar otra instancia con las redes mejoradas habilitadas de manera predeterminada.

1. Desde el equipo local, inicie la instancia mediante la consola de Amazon EC2 o uno de los siguientes comandos: [https://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html) (AWS CLI) o [https://docs.aws.amazon.com/powershell/latest/reference/items/Start-EC2Instance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Start-EC2Instance.html) (AWS Tools for Windows PowerShell).

## Solucionar problemas de conectividad
<a name="enhanced-networking-troubleshooting"></a>

Si pierde la conexión mientras habilita las redes mejoradas, puede ser que el módulo `ixgbevf` sea incompatible con el kernel. Pruebe a instalar la versión del módulo `ixgbevf` que se incluye con la distribución de Linux de la instancia.

Si habilita las redes mejoradas para una instancia o AMI PV, la instancia podría ser inaccesible.

Para obtener más información, consulte [How do I turn on and configure enhanced networking on my EC2 instances?](https://repost.aws/knowledge-center/enable-configure-enhanced-networking)

# Supervisar el rendimiento de la red para ajustes ENA en la instancia de EC2
<a name="monitoring-network-performance-ena"></a>

El controlador de Elastic Network Adapter (ENA) publica métricas de rendimiento de la red desde las instancias en las que están habilitadas. Puede utilizar estas métricas para solucionar problemas de rendimiento de instancias, elegir el tamaño de instancia adecuado para una carga de trabajo, planificar actividades de escalado de forma proactiva y comparar las aplicaciones a fin de determinar si maximizan el rendimiento disponible en una instancia.

Amazon EC2 define los máximos de red en el nivel de instancia para garantizar una experiencia de redes de alta calidad, incluido un rendimiento de red constante en todos los tamaños de instancia. AWS proporciona máximos de lo siguiente para cada instancia:
+ **Capacidad de ancho de banda**: cada instancia de EC2 tiene un ancho de banda máximo para el tráfico entrante y saliente agregado, según el tamaño y el tipo de instancias. Algunas instancias utilizan un mecanismo de créditos de E/S de red para asignar el ancho de banda de la red en función del uso de ancho de banda medio. Amazon EC2 también tiene un ancho de banda máximo para el tráfico hacia Direct Connect e Internet. Para obtener más información, consulte [Ancho de banda de red de instancias de Amazon EC2](ec2-instance-network-bandwidth.md).
+ **Rendimiento de paquete por segundo (PPS)**: cada instancia de EC2 tiene un rendimiento de PPS máximo, según el tamaño y el tipo de instancias.
+ **Conexiones rastreadas**: el grupo de seguridad realiza el seguimiento de cada conexión establecida para asegurarse de que los paquetes devueltos se entreguen como se espera. Existe un número máximo de conexiones que se pueden rastrear por instancia. Para obtener más información, consulte [Seguimiento de conexiones del grupo de seguridad de Amazon EC2](security-group-connection-tracking.md)
+ El **acceso al servicio de enlace local**: Amazon EC2 proporciona un PPS máximo por interfaz de red para el tráfico a servicios de proxy local como el servicio de DNS de Amazon, el servicio de metadatos de instancia y el Servicio de sincronización temporal de Amazon.

Cuando el tráfico de red de una instancia supera un máximo, AWS da forma al tráfico que supera el máximo al poner en cola y, a continuación, soltar paquetes de red. Puede monitorear cuando el tráfico supera un máximo mediante las métricas de rendimiento de la red. Estas métricas informan, en tiempo real, el impacto en el tráfico de red y los posibles problemas de rendimiento de la red.

**Topics**
+ [Requisitos](#network-performance-metrics-requirements)
+ [Métricas para el controlador de ENA](#network-performance-metrics)
+ [Ver las métricas de rendimiento de la red de la instancia de](#view-network-performance-metrics)
+ [Métricas para ENA Express](#network-performance-metrics-ena-express)
+ [Métricas de rendimiento de la red con el controlador de DPDK para ENA](#network-performance-metrics-dpdk)
+ [Métricas en instancias que ejecutan FreeBSD](#network-performance-metrics-freebsd)

## Requisitos
<a name="network-performance-metrics-requirements"></a>

**Instancias de Linux**
+ Instale el controlador de ENA de versión 2.2.10 o posterior. Para verificar la versión instalada, utilice el comando **ethtool**. En el siguiente ejemplo, la versión cumple el requisito mínimo.

  ```
  [ec2-user ~]$ ethtool -i eth0 | grep version
  version: 2.2.10
  ```

  Para actualizar el controlador de ENA, consulte [Red mejorada](enhanced-networking-ena.md).
+ Para importar estas métricas a Amazon CloudWatch, instale el agente CloudWatch. Para obtener más información, consulte [Recopilar métricas de rendimiento de la red](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-network-performance.html) en *Guía del usuario de Amazon CloudWatch*.
+ Para que tenga compatibilidad con la métrica `conntrack_allowance_available`, instale la versión 2.8.1 o posterior del controlador ENA.
+ Para anular el límite de PPS del fragmento de salida de 1024, instale el controlador ENA versión 2.13.3 o posterior.

**instancias de Windows**
+ Instale el controlador de ENA de versión 2.2.2 o posterior. Para verificar la versión instalada, utilice el administrador de dispositivos de la siguiente manera.

  1. Abra el administrador de dispositivos mediante la ejecución de `devmgmt.msc`.

  1. Expanda **Adaptadores de red**.

  1. Elija **Amazon Elastic Network Adapter**, **Propiedades**.

  1. En la pestaña **Controlador**, busque **Versión del controlador**.

  Para actualizar el controlador de ENA, consulte [Red mejorada](enhanced-networking-ena.md).
+ Para importar estas métricas a Amazon CloudWatch, instale el agente CloudWatch. Para obtener más información, consulte [Recopilar métricas avanzadas de red](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-network-performance.html) en *Guía del usuario de Amazon CloudWatch*.

## Métricas para el controlador de ENA
<a name="network-performance-metrics"></a>

El controlador de ENA entrega las siguientes métricas a la instancia en tiempo real. Proporcionan el número acumulado de paquetes en cola o eliminado en cada interfaz de red desde el último restablecimiento del controlador.


| Métrica | Descripción | Compatible con | 
| --- | --- | --- | 
| bw\$1in\$1allowance\$1exceeded |  El número de paquetes formados en cola o eliminados el ancho de banda agregado entrante superó el máximo de la instancia.  | Todos los tipos de instancias | 
| bw\$1out\$1allowance\$1exceeded |  El número de paquetes en cola o eliminados porque el ancho de banda agregado saliente superó el máximo de la instancia.  | Todos los tipos de instancias | 
| conntrack\$1allowance\$1exceeded |  El número de paquetes eliminados porque el seguimiento de conexiones superó el máximo de la instancia y no se pudieron establecer nuevas conexiones. Esto puede provocar la pérdida de paquetes para el tráfico hacia o desde la instancia.  | Todos los tipos de instancias | 
| conntrack\$1allowance\$1available | La cantidad de conexiones rastreadas que puede establecer la instancia antes de alcanzar el límite de conexiones rastreadas de ese tipo de instancia. | Solo en [instancias basadas en Nitro](instance-types.md#instance-hypervisor-type)  | 
| linklocal\$1allowance\$1exceeded |  El número de paquetes eliminados porque el PPS del tráfico a los servicios proxy locales superó el máximo para la interfaz de red. Esto afecta al tráfico del servicio DNS de Amazon, el servicio de metadatos de instancias y el Servicio de sincronización temporal de Amazon, pero no afecta al tráfico de los solucinadores de DNS personalizados.  | Todos los tipos de instancias | 
| pps\$1allowance\$1exceeded |  El número de paquetes en cola o eliminados porque el PPS bidireccional superó el máximo de la instancia. \$1  | Todos los tipos de instancias | 

\$1 Dependiendo de la configuración del modo proxy de fragmentos para el controlador ENA Linux v2.13.3 o posterior, este límite también puede incluir las caídas de fragmentos de salida que superen los 1024 PPS para la interfaz de red. Si el modo proxy de fragmentos está habilitado para el controlador de Linux, las caídas de fragmentos de salida evitan el límite de 1024 PPS que se aplica normalmente y se cuentan dentro de las asignaciones de PPS estándar. El modo proxy de fragmentos está deshabilitado de forma predeterminada.

## Ver las métricas de rendimiento de la red de la instancia de
<a name="view-network-performance-metrics"></a>

El procedimiento que utiliza depende del sistema operativo de la instancia.

### Instancias de Linux
<a name="view-network-performance-metrics-linux"></a>

Puede publicar métricas en sus herramientas favoritas para visualizar los datos de métricas. Por ejemplo, puede publicar las métricas en Amazon CloudWatch mediante el agente de CloudWatch. El agente permite seleccionar métricas individuales y controlar la publicación.

También puede utilizar **ethtool** para recuperar las métricas de cada interfaz de red, como eth0, de la siguiente manera.

```
[ec2-user ~]$ ethtool -S eth0
     bw_in_allowance_exceeded: 0
     bw_out_allowance_exceeded: 0
     pps_allowance_exceeded: 0
     conntrack_allowance_exceeded: 0
     linklocal_allowance_exceeded: 0
     conntrack_allowance_available: 136812
```

### instancias de Windows
<a name="view-network-performance-metrics-windows"></a>

Puede ver las métricas con cualquier consumidor de contadores de rendimiento de Windows. Los datos se pueden analizar de acuerdo con el manifiesto EnaPerfCounters. Este es un archivo XML que define el proveedor de contador de rendimiento y sus conjuntos de contadores.

**Instalación del manifiesto**

Si ha iniciado la instancia con una AMI que contiene el controlador de ENA 2.2.2 o posterior o utilizado el script de instalación en el paquete de controladores para el controlador de ENA 2.2.2, el manifiesto ya está instalado. Para instalar el manifiesto manualmente, siga los pasos siguientes:

1. Elimine el manifiesto existente mediante el siguiente comando:

   ```
   unlodctr /m:EnaPerfCounters.man
   ```

1. Copie el archivo del manifiesto, `EnaPerfCounters.man`, del paquete de instalación del controlador a `%SystemRoot%\System32\drivers`.

1. Instale el nuevo manifiesto mediante el siguiente comando:

   ```
   lodctr /m:EnaPerfCounters.man
   ```

**Para ver métricas mediante el Monitor de rendimiento**

1. Abra el Monitor de rendimiento.

1. Presione Ctrl\$1N para agregar nuevos contadores.

1. Elija **Configuración de paquetes de ENA** en la lista.

1. Seleccione las instancias que desea monitorear y elija **Agregar**.

1. Seleccione **OK**.

## Métricas para ENA Express
<a name="network-performance-metrics-ena-express"></a>

ENA Express funciona con la tecnología Scalable Reliable Datagram (SRD) de AWS. SRD es un protocolo de transporte de red de alto rendimiento que utiliza el enrutamiento dinámico para aumentar el rendimiento y minimizar la latencia de cola. Si ha habilitado ENA Express para los adjuntos de interfaz de red tanto en la instancia de envío como en la de recepción, puede utilizar las métricas de ENA Express para asegurarse de que sus instancias aprovechen al máximo las mejoras de rendimiento que proporciona la tecnología SRD. Por ejemplo:
+ Evalúe sus recursos para asegurarse de que tengan capacidad suficiente para establecer más conexiones de SRD.
+ Identifique dónde hay posibles problemas que impidan que los paquetes salientes aptos utilicen SRD.
+ Calcule el porcentaje de tráfico saliente que usa SRD para la instancia.
+ Calcule el porcentaje de tráfico entrante que usa SRD para la instancia.

**nota**  
Para generar métricas, utilice la versión 2.8 o superior del controlador.

Para ver una lista de las métricas para su instancia de Linux que se filtran para ENA Express, ejecute el comando **ethtool** para su interfaz de red (que aquí se muestra como `eth0`). Tome nota del valor de la métrica `ena_srd_mode`.

```
[ec2-user ~]$ ethtool -S eth0 | grep ena_srd
NIC statistics:
	ena_srd_mode: 1
	ena_srd_tx_pkts: 0
	ena_srd_eligible_tx_pkts: 0
	ena_srd_rx_pkts: 0
	ena_srd_resource_utilization: 0
```

Las siguientes métricas están disponibles para todas las instancias que tienen habilitada ENA Express.

**ena\$1srd\$1mode**  
Se describen qué características de ENA Express están habilitadas. Los valores son los siguientes:  
+ `0` = ENA Express desactivado, UDP desactivado
+ `1` = ENA Express activado, UDP desactivado
+ `2` = ENA Express desactivado, UDP activado
**nota**  
Esto solo ocurre cuando ENA Express se habilitó originalmente y UDP se configuró para usarlo. El valor anterior se retiene para el tráfico UDP.
+ `3` = ENA Express activado, UDP activado

**ena\$1srd\$1eligible\$1tx\$1pkts**  
El número de red de la siguiente manera:  
+ Se admiten los tipos de instancia de envío y recepción. Para obtener más información, consulte la tabla [Tipos de instancia compatibles con ENA Express](ena-express.md#ena-express-supported-instance-types).
+ Tanto las instancias de envío como las de recepción deben tener configurado ENA Express.
+ Las instancias de envío y recepción deben ejecutarse en la misma zona de disponibilidad.
+ La ruta de red entre las instancias no debe incluir cajas de middleware. ENA Express no admite actualmente cajas de middleware.
La métrica de elegibilidad de ENA Express abarca los requisitos de origen y destino, y la red entre los dos puntos de conexión. Los paquetes aptos aún pueden ser descalificados tras su recuento. Por ejemplo, si un paquete apto supera el límite de la unidad de transmisión máxima (MTU), vuelve a la transmisión ENA estándar, aunque el paquete se sigue mostrando como apto en el contador.

**ena\$1srd\$1tx\$1pkts**  
El número de paquetes SRD transmitidos en un periodo determinado.

**ena\$1srd\$1rx\$1pkts**  
El número de paquetes SRD recibidos en un periodo determinado.

**ena\$1srd\$1resource\$1utilization**  
El porcentaje de uso máximo de memoria permitido para conexiones SRD simultáneas que ha consumido la instancia.

Para confirmar si la transmisión de paquetes utiliza SRD, puede comparar el número de paquetes que cumplen los requisitos (métrica `ena_srd_eligible_tx_pkts`) con el número de paquetes SRD transmitidos (métrica `ena_srd_tx_pkts`) durante un periodo de tiempo determinado.

**Tráfico de salida (paquetes salientes)**  
Para asegurarse de que su tráfico de salida utiliza SRD como se espera, compare el número de paquetes SRD aptos (`ena_srd_eligible_tx_pkts`) con el número de paquetes SRD enviados (`ena_srd_tx_pkts`) durante un periodo de tiempo determinado.

Las diferencias significativas entre el número de paquetes aptos y el número de paquetes SRD enviados suelen deberse a problemas de utilización de recursos. Cuando la tarjeta de red conectada a la instancia agota sus recursos máximos, o si los paquetes superan el límite de MTU, los paquetes aptos no pueden transmitirse a través de SRD y deben volver a la transmisión ENA estándar. Los paquetes también pueden experimentar esto durante migraciones en directo o actualizaciones de servidores en directo. Se requiere una solución de problemas adicionales para determinar la causa raíz.

**nota**  
Puede ignorar las pequeñas diferencias ocasionales entre el número de paquetes aptos y el número de paquetes de SRD. Esto puede ocurrir cuando su instancia establece una conexión con otra instancia para el tráfico SRD, por ejemplo.

Para averiguar qué porcentaje de su tráfico de salida total durante un periodo de tiempo determinado utiliza SRD, compare el número de paquetes SRD enviados (`ena_srd_tx_pkts`) con el número total de paquetes enviados para la instancia (`NetworkPacketOut`) durante ese tiempo.

**Tráfico de entrada (paquetes entrantes)**  
Para saber qué porcentaje del tráfico de entrada utiliza SRD, compare el número de paquetes SRD recibidos (`ena_srd_rx_pkts`) durante un periodo de tiempo determinado con el número total de paquetes recibidos para la instancia (`NetworkPacketIn`) durante ese tiempo.

**Uso de los recursos**  
El uso de los recursos se basa en el número de conexiones SRD simultáneas que una única instancia puede mantener en un momento determinado. La métrica de uso de recursos (`ena_srd_resource_utilization`) hace un seguimiento del uso actual de la instancia. A medida que la utilización se acerque al 100 %, es de esperar que se produzcan problemas de rendimiento. ENA Express retrocede de la transmisión SRD a la transmisión ENA estándar y aumenta la posibilidad de que se pierdan paquetes. Un alto uso de recursos es un indicio de que llegó el momento de escalar horizontalmente la instancia para mejorar el rendimiento de la red.

**nota**  
Cuando el tráfico de red de una instancia supera un máximo, AWS da forma al tráfico que supera el máximo al poner en cola y, a continuación, soltar paquetes de red.

**Persistencia**  
Las métricas de entrada y salida se acumulan mientras ENA Express está habilitado para la instancia. Las métricas dejan de acumularse si ENA Express está desactivado, pero persisten mientras la instancia sigue en ejecución. Las métricas se reinician si la instancia se reinicia o se finaliza, o si la interfaz de red se desvincula de la instancia.

## Métricas de rendimiento de la red con el controlador de DPDK para ENA
<a name="network-performance-metrics-dpdk"></a>

El controlador de ENA, versión 2.2.0 y posterior, admite informes de métricas de red. DPDK 20.11 incluye el controlador de ENA 2.2.0 y es la primera versión de DPDK que admite esta característica.

El controlador DPDK v25.03 o posterior admite el modo proxy de fragmentos. Si el modo proxy de fragmentos está habilitado para el controlador de DPDK, las caídas de fragmentos de salida evitan el límite de 1024 PPS que se aplica normalmente y se cuentan dentro de las asignaciones de PPS estándar. El modo proxy de fragmentos está deshabilitado de forma predeterminada.

Puede utilizar una aplicación de ejemplo para ver las estadísticas de DPDK. Para comenzar una versión interactiva de la aplicación de ejemplo, ejecute el siguiente comando.

```
./app/dpdk-testpmd -- -i
```

Dentro de esta sesión interactiva, puede escribir un comando para recuperar estadísticas extendidas de un puerto. El siguiente comando de ejemplo recupera las estadísticas del puerto 0.

```
show port xstats 0
```

A continuación se muestra un ejemplo de una sesión interactiva con la aplicación de ejemplo de DPDK.

```
[root@ip-192.0.2.0 build]# ./app/dpdk-testpmd -- -i
        EAL: Detected 4 lcore(s)
        EAL: Detected 1 NUMA nodes
        EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
        EAL: Selected IOVA mode 'PA'
        EAL: Probing VFIO support...
        EAL:   Invalid NUMA socket, default to 0
        EAL:   Invalid NUMA socket, default to 0
        EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0
(socket 0)
        EAL: No legacy callbacks, legacy socket not created
        Interactive-mode selected
    
        Port 0: link state change event
        testpmd: create a new mbuf pool <mb_pool_0>: n=171456,
size=2176, socket=0
        testpmd: preferred mempool ops selected: ring_mp_mc
    
        Warning! port-topology=paired and odd forward ports number, the
last port will pair with itself.
    
        Configuring Port 0 (socket 0)
        Port 0: 02:C7:17:A2:60:B1
        Checking link statuses...
        Done
        Error during enabling promiscuous mode for port 0: Operation
not supported - ignore
        testpmd> show port xstats 0
        ###### NIC extended statistics for port 0
        rx_good_packets: 0
        tx_good_packets: 0
        rx_good_bytes: 0
        tx_good_bytes: 0
        rx_missed_errors: 0
        rx_errors: 0
        tx_errors: 0
        rx_mbuf_allocation_errors: 0
        rx_q0_packets: 0
        rx_q0_bytes: 0
        rx_q0_errors: 0
        tx_q0_packets: 0
        tx_q0_bytes: 0
        wd_expired: 0
        dev_start: 1
        dev_stop: 0
        tx_drops: 0
        bw_in_allowance_exceeded: 0
        bw_out_allowance_exceeded: 0
        pps_allowance_exceeded: 0
        conntrack_allowance_exceeded: 0
        linklocal_allowance_exceeded: 0
        rx_q0_cnt: 0
        rx_q0_bytes: 0
        rx_q0_refill_partial: 0
        rx_q0_bad_csum: 0
        rx_q0_mbuf_alloc_fail: 0
        rx_q0_bad_desc_num: 0
        rx_q0_bad_req_id: 0
        tx_q0_cnt: 0
        tx_q0_bytes: 0
        tx_q0_prepare_ctx_err: 0
        tx_q0_linearize: 0
        tx_q0_linearize_failed: 0
        tx_q0_tx_poll: 0
        tx_q0_doorbells: 0
        tx_q0_bad_req_id: 0
        tx_q0_available_desc: 1023
        testpmd>
```

Para obtener más información acerca de la aplicación de ejemplo y su uso a fin de recuperar estadísticas ampliadas. consulte la [Guía del usuario de la aplicación de Testpmd](https://doc.dpdk.org/guides/testpmd_app_ug/) en la documentación de DPDK.

## Métricas en instancias que ejecutan FreeBSD
<a name="network-performance-metrics-freebsd"></a>

A partir de la versión 2.3.0, el controlador FreeBSD de ENA admite la recopilación de métricas de rendimiento de la red en instancias que ejecutan FreeBSD. Para habilitar la recopilación de métricas de FreeBSD, ingrese el siguiente comando y establezca el *intervalo* en un valor entre 1 y 3600. Esto especifica la frecuencia, en segundos, para recopilar métricas de FreeBSD.

```
sysctl dev.ena.network_interface.eni_metrics.sample_interval=interval
```

Por ejemplo, el siguiente comando configura el controlador para recopilar métricas de FreeBSD en la interfaz de red 1 cada 10 segundos:

```
sysctl dev.ena.1.eni_metrics.sample_interval=10
```

Para desactivar la recopilación de métricas de FreeBSD, puede ejecutar el comando anterior y especificar `0` como el *intervalo*.

Después de habilitar la recopilación de métricas de FreeBSD, puede recuperar el último conjunto de métricas recopiladas mediante la ejecución del siguiente comando.

```
sysctl dev.ena.network_interface.eni_metrics
```

# Mejorar la latencia de red para instancias de EC2 basadas en Linux
<a name="ena-improve-network-latency-linux"></a>

La latencia de la red es la cantidad de tiempo que tarda un paquete de datos en viajar desde su origen hasta su destino. Las aplicaciones que envían datos a través de la red dependen de las respuestas oportunas para ofrecer una experiencia de usuario positiva. La alta latencia de la red puede provocar varios problemas, como los siguientes:
+ Tiempos de carga lentos para páginas web
+ Retraso en la transmisión de video
+ Problemas para acceder a los recursos en línea

En esta sección se describen los pasos que puede seguir para mejorar la latencia de red en las instancias de Amazon EC2 que se ejecutan en Linux. Para lograr una latencia óptima, siga estos pasos para configurar los ajustes de la instancia, el núcleo y el controlador ENA. Para obtener más información sobre configuración, consulte la [Guía de prácticas recomendadas del controlador Linux ENA y optimización del rendimiento](https://github.com/amzn/amzn-drivers/blob/master/kernel/linux/ena/ENA_Linux_Best_Practices.rst) en GitHub.

**nota**  
Los pasos y la configuración pueden variar ligeramente según el hardware de red específico, la AMI desde la que lanzó la instancia y el caso de uso de la aplicación. Antes de realizar cualquier cambio, pruebe y supervise minuciosamente el rendimiento de la red para asegurarse de obtener los resultados deseados.

## Reducir la cantidad de saltos de red para los paquetes de datos
<a name="ena-latency-reduce-hops"></a>

Cada salto que realiza un paquete de datos al moverse de un router a otro aumenta la latencia de la red. Por lo general, el tráfico debe realizar varios saltos para llegar a su destino. Hay dos formas de reducir los saltos de red en sus instancias de Amazon EC2, de la siguiente manera:
+ **Grupo con ubicación en clúster**: al especificar un [grupo con ubicación en clúster](placement-strategies.md#placement-groups-cluster), Amazon EC2 inicia instancias que se encuentran cerca unas de otras, físicamente dentro de la misma zona de disponibilidad (AZ) con un mayor número de paquetes. La proximidad física de las instancias del grupo les permite aprovechar la conectividad de alta velocidad, lo que se traduce en una latencia baja y un alto rendimiento de flujo único.
+ **Host dedicado**: un [host dedicado](dedicated-hosts-overview.md) también es un servidor físico dedicado para su uso. Con un host dedicado, puede iniciar sus instancias para que se ejecuten en el mismo servidor físico. La comunicación entre instancias que se ejecutan en el mismo host dedicado puede realizarse sin saltos adicionales.

## Cómo la configuración del kernel de Linux afecta la latencia
<a name="ena-latency-kernel-config"></a>

La configuración del kernel de Linux puede aumentar o disminuir la latencia de la red. Para lograr sus objetivos de optimización de la latencia, es importante ajustar la configuración del kernel de Linux de acuerdo con los requisitos específicos de su carga de trabajo.

Hay muchas opciones de configuración para el kernel de Linux que pueden ayudar a reducir la latencia de la red. Las opciones más importantes son las siguientes.
+ **Habilitar el modo de sondeo ocupado**: el modo de sondeo ocupado reduce la latencia en la ruta de recepción de la red. Al habilitar el modo de sondeo ocupado, el código de la capa de conexión puede sondear directamente la cola de recepción de un dispositivo de red. La desventaja del sondeo ocupado es el mayor uso de la CPU en el host, que se debe a la búsqueda de nuevos datos en un bucle muy estricto. Hay dos ajustes globales que controlan el número de microsegundos en que se esperan los paquetes de todas las interfaces.

     
`busy_read`  
Un tiempo de espera de sondeo ocupado de baja latencia para lecturas de sockets. Controla la cantidad de microsegundos que se esperan a que la capa de sockets lea los paquetes de la cola del dispositivo. Para habilitar la característica de forma global con el comando **sysctl**, la organización del kernel de Linux recomienda un valor de 50 microsegundos. Para obtener más información, consulte [busy\$1read](https://www.kernel.org/doc/html/v5.19/admin-guide/sysctl/net.html?highlight=busy_read) en la *Guía del usuario y del administrador del kernel de Linux*.  

  ```
  [ec2-user ~]$ sudo sysctl -w net.core.busy_read=50
  ```  
`busy_poll`  
Un tiempo de espera de sondeo ocupado de baja latencia para sondear y seleccionar. Controla la cantidad de microsegundos que se esperan a que se produzcan eventos. El valor recomendado está comprendido entre 50 y 100 microsegundos, según la cantidad de sockets que esté sondeando. Cuantos más sockets agregue, mayor será el número.  

  ```
  [ec2-user ~]$ sudo sysctl -w net.core.busy_poll=50
  ```
+ **Configure los estados de suspensión de CPU (estados C)**: los estados C controlan los niveles de suspensión en los que puede entrar un núcleo cuando está inactivo. Puede que desee controlar los estados C para ajustar el sistema en cuanto a latencia, en lugar del rendimiento. En los estados C más profundos, la CPU está esencialmente “suspendida” y no puede responder a las solicitudes hasta que se active y vuelva a un estado operativo. Hacer que los núcleos pasen al estado de suspensión lleva tiempo y aunque un núcleo en suspensión ofrece más margen para que otro núcleo arranque a una frecuencia superior, el núcleo en suspensión tarda un tiempo en activarse y en funcionar.

  Por ejemplo, si un núcleo al que se asigna que administre un paquete de red interrumpe su suspensión, puede haber un retraso en el servicio que produzca una interrupción. Puede configurar el sistema para que no utilice estados C más profundos. Sin embargo, si bien esta configuración reduce la latencia de reacción del procesador, también reduce el margen disponible para que otros núcleos alcancen la frecuencia Turbo Boost.

  Para reducir la latencia de reacción del procesador, puede limitar los estados C más profundos. Para obtener más información, consulte [High performance and low latency by limiting deeper C-states](https://docs.aws.amazon.com/linux/al2/ug/processor_state_control.html#c-states) en la *Guía del usuario de Amazon Linux 2*.

## Interrumpir la moderación
<a name="ena-latency-interrupt-moderation"></a>

El controlador de red ENA permite la comunicación entre una instancia y una red. El controlador procesa los paquetes de red y los pasa a la pila de red o a la tarjeta Nitro. Cuando entra un paquete de red, la tarjeta Nitro genera una interrupción para que la CPU notifique un evento al software.

Interrumpir  
Una interrupción es una señal que un dispositivo o una aplicación envía al procesador. La interrupción indica al procesador que se ha producido un evento o se ha cumplido una condición que requiere atención inmediata. Las interrupciones pueden gestionar tareas urgentes, como recibir datos de una interfaz de red, gestionar eventos de hardware o atender solicitudes de otros dispositivos.

Interrumpir la moderación  
La moderación de interrupciones es una técnica que reduce la cantidad de interrupciones que genera un dispositivo al agregarlas o retrasarlas. El propósito de la moderación de interrupciones es mejorar el rendimiento del sistema al reducir la sobrecarga asociada a la gestión de un gran número de interrupciones. Demasiadas interrupciones aumentan el uso de la CPU, lo que afecta negativamente al rendimiento, mientras que muy pocas interrupciones aumentan la latencia.

Moderación dinámica de interrupciones  
La moderación dinámica de interrupciones es una forma mejorada de moderación de interrupciones que ajusta dinámicamente la frecuencia de interrupciones en función de la carga del sistema y los patrones de tráfico actuales. Su objetivo es lograr un equilibrio entre reducir la sobrecarga de interrupciones y los paquetes por segundo o ancho de banda.  
La moderación dinámica de interrupciones está habilitada de forma predeterminada en algunas AMI (aunque se puede habilitar o deshabilitar en todas las AMI).

Para minimizar la latencia de la red, puede ser necesario deshabililar la moderación de interrupciones. Sin embargo, esto también puede aumentar la sobrecarga del procesamiento de interrupciones. Es importante encontrar el equilibrio adecuado entre reducir la latencia y minimizar los gastos generales. Los comandos `ethtool` pueden ayudarle a configurar la moderación de interrupciones. De forma predeterminada, `rx-usecs` se establece en `20` y `tx-usecs` se establece en `64`.

Para obtener la configuración de moderación de interrupciones actual, utilice el siguiente comando.

```
[ec2-user ~]$ ethtool -c interface | egrep "rx-usecs:|tx-usecs:|Adaptive RX"
Adaptive RX: on  TX: off
rx-usecs: 20
tx-usecs: 64
```

Para deshabilitar la modificación de interrupciones y la moderación dinámica de interrupciones, utilice el siguiente comando.

```
[ec2-user ~]$ sudo ethtool -C interface adaptive-rx off rx-usecs 0 tx-usecs 0
```

# Consideraciones sobre el Nitro System para ajustar el rendimiento
<a name="ena-nitro-perf"></a>

El sistema Nitro es una recopilación de componentes de hardware y software integrados en AWS que permiten alcanzar un alto rendimiento, una gran disponibilidad y mucha seguridad. El sistema Nitro proporciona capacidades de tipo bare metal que eliminan la sobrecarga de la virtualización y admiten cargas de trabajo que requieren acceso completo al hardware del host. Para obtener más información, consulte [AWS Nitro System](https://aws.amazon.com/ec2/nitro/).

Todos los tipos de instancias de EC2 de la generación actual procesan paquetes de red en tarjetas Nitro de EC2. En este tema, se describe la gestión de paquetes de alto nivel en la tarjeta Nitro, los aspectos comunes de la arquitectura y la configuración de la red que afectan al rendimiento de la gestión de paquetes y las medidas que puede tomar para lograr el máximo rendimiento en sus instancias basadas en Nitro.

Las tarjetas Nitro gestionan todas las interfaces de entrada y salida (E/S), como aquellas necesarias para las Virtual Private Clouds (VPC). Para todos los componentes que envían o reciben información a través de la red, las tarjetas Nitro actúan como un dispositivo de computación autónomo para el tráfico de E/S que está físicamente separado de la placa principal del sistema en la que se ejecutan las cargas de trabajo de los clientes.

## Flujo de paquetes de red en las tarjetas Nitro
<a name="ena-nitro-perf-network-flow"></a>

Las instancias de EC2 integradas en el Nitro System tienen capacidades de aceleración de hardware que permiten un procesamiento de paquetes más rápido, medido en función de las tasas de rendimiento de paquetes por segundo (PPS). Cuando una tarjeta Nitro realiza la evaluación inicial de un flujo nuevo, guarda la misma información para todos los paquetes del flujo, como los grupos de seguridad, las listas de control de acceso y las entradas de la tabla de enrutamiento. Cuando procesa paquetes adicionales para el mismo flujo, puede usar la información guardada para reducir la sobrecarga de esos paquetes.

La velocidad de conexión se mide mediante la métrica de conexiones por segundo (CPS). Cada nueva conexión requiere una sobrecarga de procesamiento adicional que debe tenerse en cuenta en las estimaciones de la capacidad de carga de trabajo. Es importante tener en cuenta las métricas de CPS y PPS al diseñar las cargas de trabajo.

**Cómo se establece una conexión**  
Cuando se establece una conexión entre una instancia basada en Nitro y otro punto de conexión, la tarjeta Nitro evalúa el flujo total del primer paquete que se envía o recibe entre los dos puntos de conexión. En el caso de los paquetes subsiguientes del mismo flujo, no suele ser necesaria una reevaluación completa. Sin embargo, hay algunas excepciones. Para obtener más información sobre las excepciones, consulte [Paquetes que no utilizan aceleración del hardware](#ena-nitro-perf-exceptions).

Las siguientes propiedades definen los dos puntos de conexión y el flujo de paquetes entre ellos. Estas cinco propiedades juntas se conocen como flujo de 5 tuplas.
+ IP de origen
+ Puerto de origen
+ IP de destino
+ Puerto de destino
+ Protocolo de comunicación

La dirección del flujo de paquetes se conoce como *entrada* (entrante) y *salida* (saliente). Las siguientes descripciones de alto nivel resumen el flujo de paquetes de red de extremo a extremo.
+ **Entrada:** cuando una tarjeta Nitro gestiona un paquete de red entrante, lo evalúa comparándolo con las reglas de firewall y las listas de control de acceso vigentes. Realiza un seguimiento de la conexión, la mide y realiza otras acciones, según proceda. A continuación, reenvía el paquete a su destino en la CPU del host.
+ **Salida:** cuando una tarjeta Nitro gestiona un paquete de red saliente, busca el destino de la interfaz remota, evalúa varias funciones de la VPC, aplica límites de velocidad y realiza las demás acciones pertinentes. A continuación, reenvía el paquete a su siguiente destino de salto en la red.

## Diseñar la red para un rendimiento óptimo
<a name="ena-nitro-perf-overall-design"></a>

Para aprovechar las capacidades de rendimiento de su sistema Nitro, debe comprender cuáles son sus necesidades de procesamiento de red y cómo afectan esas necesidades a la carga de trabajo de sus recursos de Nitro. Luego, puede diseñar para lograr un rendimiento óptimo para su entorno de red. La configuración de la infraestructura y el diseño y la configuración de la carga de trabajo de las aplicaciones pueden afectar tanto al procesamiento de paquetes como a las velocidades de conexión. Por ejemplo, si su aplicación tiene una alta tasa de establecimiento de conexiones, como un servicio de DNS, un firewall o un router virtual, tendrá menos oportunidades de aprovechar la aceleración del hardware que solo se produce una vez establecida la conexión.

Puede configurar las aplicaciones y la infraestructura para agilizar las cargas de trabajo y mejorar el rendimiento de la red. Sin embargo, no todos los paquetes cumplen los requisitos para la aceleración. El sistema Nitro utiliza todo el flujo de la red para las nuevas conexiones y para los paquetes que no cumplen los requisitos para la aceleración.

El resto de esta sección se centrará en las consideraciones de diseño de las aplicaciones y la infraestructura para garantizar que los paquetes fluyan dentro de la ruta acelerada en la medida de lo posible.

### Consideraciones sobre el diseño de la red para el sistema Nitro
<a name="ena-nitro-perf-considerations"></a>

Al configurar el tráfico de red para la instancia, hay muchos aspectos que se deben tener en cuenta y que pueden afectar al rendimiento de los PPS. Una vez establecido un flujo, la mayoría de los paquetes que entran o salen con regularidad cumplen los requisitos para la aceleración. Sin embargo, existen excepciones para garantizar que los diseños de infraestructura y los flujos de paquetes sigan cumpliendo con los estándares de protocolo.

Para obtener el mejor rendimiento de su tarjeta Nitro, debe considerar detenidamente las ventajas y desventajas de los siguientes detalles de configuración para su infraestructura y sus aplicaciones.

#### Consideraciones sobre infraestructura
<a name="ena-nitro-perf-infra-considerations"></a>

La configuración de la infraestructura puede afectar al flujo de paquetes y a la eficiencia del procesamiento. La siguiente lista incluye algunas consideraciones importantes.

**Configuración de la interfaz de red con asimetría**  
Los grupos de seguridad utilizan el seguimiento de conexiones para rastrear información sobre el tráfico que fluye hacia y desde la instancia. El enrutamiento asimétrico, en el que el tráfico entra en una instancia a través de una interfaz de red y sale por una interfaz de red diferente, puede reducir el rendimiento máximo que puede alcanzar una instancia si se realiza un seguimiento de los flujos. Para obtener más información sobre el seguimiento de conexiones de grupos de seguridad, las conexiones no rastreadas y las conexiones rastreadas automáticamente, consulte [Seguimiento de conexiones del grupo de seguridad de Amazon EC2](security-group-connection-tracking.md).

**Controladores de red**  
Los controladores de red se actualizan y publican periódicamente. Si sus controladores están desactualizados, eso puede afectar significativamente el rendimiento. Mantenga sus controladores actualizados para asegurarse de tener los parches más recientes y poder aprovechar las mejoras de rendimiento, como la característica de ruta acelerada, que solo está disponible para la última generación de controladores. Los controladores anteriores no son compatibles con la característica de ruta acelerada.  
Para aprovechar la característica de ruta acelerada, le recomendamos que instale el controlador ENA más reciente en sus instancias.  
**Instancias de Linux**: controlador ENA para Linux 2.2.9 o posterior. Para instalar o actualizar el controlador ENA para Linux desde el repositorio de GitHub de Amazon Drivers, consulte la sección [Compilación de controladores](https://github.com/amzn/amzn-drivers/tree/master/kernel/linux/ena#driver-compilation) del archivo readme.  
**Instancias de Windows**: controlador ENA para Windows 2.0.0 o posterior. Para instalar o actualizar el controlador ENA para Windows, consulte [Instalar el controlador ENA en instancias de Windows de EC2](ena-adapter-driver-install-upgrade-win.md).

**Distancia entre los puntos de conexión**  
Una conexión entre dos instancias de la misma zona de disponibilidad puede procesar más paquetes por segundo que una conexión entre regiones debido a la creación de ventanas TCP en la capa de aplicación, lo que determina la cantidad de datos que pueden estar en movimiento en un momento dado. Las distancias largas entre las instancias aumentan la latencia y disminuyen la cantidad de paquetes que los puntos de conexión pueden procesar.

**Límite de cola de bytes (BQL)**  
BQL es una característica que limita el número de bytes que se pasan a la tarjeta Nitro para reducir las colas. BQL está desactivado de forma predeterminada en los controladores ENA, en los sistemas operativos Amazon Linux y en la mayoría de las distribuciones de Linux. Si tanto BQL como la anulación del proxy de fragmentos están habilitados, se pueden producir limitaciones de rendimiento al restringir el número de bytes que se pasan a Nitro antes de procesar todos los fragmentos.

#### Consideraciones sobre el diseño de la aplicación
<a name="ena-nitro-perf-app-design"></a>

Hay aspectos del diseño y la configuración de la aplicación que pueden afectar a la eficiencia del procesamiento. La siguiente lista incluye algunas consideraciones importantes.

**Tamaño del paquete**  
Los paquetes de mayor tamaño pueden aumentar el rendimiento de los datos que una instancia puede enviar y recibir en la red. Amazon EC2 admite tramas gigantes de 9001 bytes, pero otros servicios pueden imponer límites diferentes. Los tamaños de paquete más pequeños pueden aumentar la velocidad de procesamiento de los paquetes, pero esto puede reducir el ancho de banda máximo alcanzado cuando la cantidad de paquetes supera los límites de los PPS.  
Si el tamaño de un paquete supera la unidad máxima de transmisión (MTU) de un salto de red, un router situado a lo largo de la ruta podría fragmentarlo. Los fragmentos de paquetes resultantes se consideran excepciones y generalmente se procesan a la velocidad estándar (no acelerada). Esto puede provocar variaciones en su rendimiento. Sin embargo, puede anular el comportamiento estándar de los paquetes fragmentados salientes con la configuración del modo proxy de fragmentos. Para obtener más información, consulte [Maximización del rendimiento de la red en su Nitro system](#ena-nitro-perf-maximize). Le recomendamos que evalúe su topología al configurar la MTU.

**Compensaciones de protocolo**  
Los protocolos confiables como el TCP tienen más sobrecarga que los protocolos poco confiables como el UDP. La menor sobrecarga y el procesamiento de red simplificado del protocolo de transporte UDP pueden resultar en una tasa de PPS más alta, pero a expensas de una entrega de paquetes confiable. Si la entrega fiable de paquetes no es fundamental para su aplicación, el UDP podría ser una buena opción.

**Microrráfaga**  
La microrráfaga se produce cuando el tráfico supera las asignaciones durante breves períodos de tiempo, en lugar de distribuirse uniformemente. Esto suele ocurrir en una escala de microsegundos.  
Por ejemplo, supongamos que tiene una instancia que puede enviar hasta 10 Gbps y que su aplicación envía los 10 Gb completos en medio segundo. Esta microrráfaga supera los límites permitidos durante el primer medio segundo y no deja nada durante el resto del segundo. Aunque haya enviado 10 Gb en el período de 1 segundo, los límites en el primer medio segundo pueden provocar que los paquetes se pongan en cola o se descarten.  
Puede utilizar un programador de red, como Linux Traffic Control, para acelerar el rendimiento y evitar que los paquetes se queden en cola o se pierdan debido a la microráfaga.

**Número de flujos**  
Un flujo único está limitado a 5 Gbps, a menos que esté dentro de un grupo con ubicación en clústeres que admita hasta 10 Gbps, o si utiliza ENA Express, que admite hasta 25 Gbps.  
Del mismo modo, una tarjeta Nitro puede procesar más paquetes en varios flujos en lugar de utilizar un solo flujo. Para alcanzar la velocidad máxima de procesamiento de paquetes por instancia, recomendamos al menos 100 flujos en instancias con un ancho de banda agregado de 100 Gbps o superior. A medida que aumentan las capacidades de ancho de banda agregado, también aumenta la cantidad de flujos necesarios para alcanzar las tasas de procesamiento máximas. La evaluación comparativa lo ayudará a determinar qué configuración necesita para alcanzar las velocidades máximas en su red.

**Colas de Elastic Network Adapter (ENA)**  
Elastic Network Adapter (ENA) usa varias colas de recepción (Rx) y transmisión (Tx) (colas de ENA) para mejorar el rendimiento y la escalabilidad de la red en las instancias de EC2. Estas colas administran de forma eficiente el tráfico de red al equilibrar la carga de los datos enviados y recibidos entre las colas disponibles.  
Para obtener más información, consulte [Colas de ENA](ena-queues.md).

**Sobrecarga del procesamiento de características**  
Características como Traffic Mirroring y ENA Express pueden aumentar la sobrecarga del procesamiento, lo que puede reducir el rendimiento absoluto del procesamiento de paquetes. Puede limitar el uso de características o deshabilitarlas para aumentar las tasas de procesamiento de paquetes.

**Seguimiento de la conexión para mantener el estado**  
Sus grupos de seguridad utilizan el seguimiento de conexiones para almacenar información sobre el tráfico hacia y desde la instancia. El seguimiento de la conexión aplica reglas a cada flujo individual de tráfico de red para determinar si el tráfico se permite o se deniega. La tarjeta Nitro utiliza el seguimiento del flujo para mantener el estado del flujo. A medida que se apliquen más reglas de grupos de seguridad, será necesario trabajar más para evaluar el flujo.  
No se rastrean todos los flujos de tráfico de la red. Si se configura una regla de grupo de seguridad con [Conexiones sin seguimiento](security-group-connection-tracking.md#untracked-connections), no es necesario realizar ningún trabajo adicional, excepto en el caso de las conexiones, de las que se realiza un seguimiento automático para garantizar un enrutamiento simétrico cuando hay varias rutas de respuesta válidas.

#### Paquetes que no utilizan aceleración del hardware
<a name="ena-nitro-perf-exceptions"></a>

No todos los paquetes pueden aprovechar la aceleración del hardware. La gestión de estas excepciones implica una sobrecarga de procesamiento necesaria para garantizar el buen estado de los flujos de la red. Los flujos de red deben cumplir de manera confiable los estándares de protocolo, ajustarse a los cambios en el diseño de la VPC y enrutar los paquetes solo a los destinos permitidos. Sin embargo, la sobrecarga reduce el rendimiento.

**Fragmentos de paquetes**  
Como se menciona en **Consideraciones sobre la aplicación**, los fragmentos de paquetes que resultan de paquetes que superan la MTU de la red generalmente se gestionan como excepciones y no pueden aprovechar la aceleración del hardware. Sin embargo, puede evitar las limitaciones de los fragmentos de salida con el modo proxy de fragmentos, según la versión del controlador. Para obtener más información, consulte las acciones que puede realizar en la sección [Maximización del rendimiento de la red en su Nitro system](#ena-nitro-perf-maximize).

**Conexiones inactivas**  
Cuando una conexión no tiene actividad durante un tiempo, incluso si no ha alcanzado su límite de tiempo de espera, el sistema puede despriorizarla. Luego, si los datos llegan después de que se haya perdido la prioridad de la conexión, el sistema debe tratarlos como una excepción para poder volver a conectarse.  
Para administrar sus conexiones, puede usar los tiempos de espera del seguimiento de conexiones para cerrar las conexiones inactivas. También puede usar losparámetros Keepalive de TCP para mantener abiertas las conexiones inactivas. Para obtener más información, consulte [Tiempo de espera de seguimiento de conexiones inactivas](security-group-connection-tracking.md#connection-tracking-timeouts).

**Mutación en la VPC**  
Todas las actualizaciones de los grupos de seguridad, las tablas de enrutamiento y las listas de control de acceso deben volver a evaluarse en la ruta de procesamiento para garantizar que las entradas de ruta y las reglas de los grupos de seguridad se sigan aplicando según lo esperado.

**Flujos de ICMP**  
El Protocolo de mensajes de control de Internet (ICMP) es un protocolo de capa de red que los dispositivos de red utilizan para diagnosticar problemas de comunicación en la red. Estos paquetes siempre utilizan el flujo completo.

**Flujos asimétricos de L2**  
NitroV3 y las plataformas anteriores no utilizan la aceleración de hardware para el tráfico entre dos ENI de la misma subred cuando una ENI utiliza el router de puerta de enlace predeterminado y la otra no. Las plataformas NitroV4 y posteriores utilizan la aceleración de hardware en este escenario. Para un mejor rendimiento en plataformas NitroV3 o anteriores, asegúrese de que el router de puerta de enlace predeterminado sea el mismo para ambas ENI o que dichas ENI se encuentren en subredes diferentes.

## Maximización del rendimiento de la red en su Nitro system
<a name="ena-nitro-perf-maximize"></a>

Puede modificar la configuración de red para maximizar su rendimiento en el sistema Nitro.

**Topics**
+ [Consideraciones](#considerations)
+ [Ajuste del rendimiento de PPS](#tuning)
+ [Configuración de la asignación de colas de ENA](#max-perf-ena-queues)
+ [Monitoreo del rendimiento en las instancias de Linux](#monitoring)

### Consideraciones
<a name="considerations"></a>

Antes de tomar cualquier decisión de diseño o ajustar la configuración de red de la instancia, le recomendamos que siga los siguientes pasos para asegurarse de obtener el mejor resultado:

1. Conozca las ventajas y desventajas de las medidas que puede tomar para mejorar el rendimiento mediante una revisión de [Consideraciones sobre el diseño de la red para el sistema Nitro](#ena-nitro-perf-considerations).

   Para obtener más información sobre configuración de instancias y prácticas recomendadas para configurar su instancia en Linux, consulte [ENA Linux Driver Best Practices and Performance Optimization Guide](https://github.com/amzn/amzn-drivers/blob/master/kernel/linux/ena/ENA_Linux_Best_Practices.rst) en GitHub.

1. Compare sus cargas de trabajo con el recuento máximo de flujos activos para determinar una línea de base para el rendimiento de su aplicación. Con una línea de base de rendimiento, puede probar las variaciones en la configuración o el diseño de la aplicación para comprender qué consideraciones tendrán el mayor impacto, especialmente si planea escalarlas verticalmente u horizontalmente.

### Ajuste del rendimiento de PPS
<a name="tuning"></a>

La siguiente lista contiene las acciones que puede realizar para ajustar el rendimiento de los PPS, en función de las necesidades del sistema.
+ Reduzca la distancia física entre dos instancias. Si las instancias de envío y recepción se encuentran en la misma zona de disponibilidad o utilizan grupos con ubicación en clústeres, puede reducir la cantidad de saltos que debe realizar un paquete para viajar de un punto de conexión a otro.
+ Utilice [Conexiones sin seguimiento](security-group-connection-tracking.md#untracked-connections).
+ Use el protocolo UDP para el tráfico de red.
+ En el caso de las instancias de EC2 con un ancho de banda agregado de 100 Gbps o más, distribuya la carga de trabajo entre 100 o más flujos individuales para distribuir el trabajo de manera uniforme en la tarjeta Nitro.
+ Para superar el límite de PPS de fragmentos de salida en las instancias de EC2, puede habilitar el modo proxy de fragmentos (según la versión del controlador). Esta configuración permite evaluar los paquetes fragmentados en la ruta de procesamiento, superando así el límite de PPS de salida de 1024. Al cargar el controlador, ejecute uno de los siguientes comandos para habilitar o deshabilitar el modo de proxy de fragmentos:

  **Habilitar el modo de proxy de fragmentos**

  ```
  sudo insmod ena.ko enable_frag_bypass=1
  ```

  **Deshabilitar el modo de proxy de fragmentos**

  ```
  sudo insmod ena.ko enable_frag_bypass=0
  ```

### Configuración de la asignación de colas de ENA
<a name="max-perf-ena-queues"></a>

En los tipos de instancias compatibles, puede asignar estas colas de forma dinámica entre las interfaces de red elásticas (ENI). La asignación flexible de colas de ENA optimiza la distribución de los recursos y permite la máxima utilización de la vCPU. Las cargas de trabajo de alto rendimiento de red suelen necesitar varias colas de ENA. Para obtener más información, consulte [Colas de ENA](ena-queues.md).

### Monitoreo del rendimiento en las instancias de Linux
<a name="monitoring"></a>

Puede usar las métricas de Ethtool en las instancias de Linux para monitorear los indicadores de rendimiento de la red de las instancias, como el ancho de banda, la velocidad de paquetes y el seguimiento de la conexión. Para obtener más información, consulte [Supervisar el rendimiento de la red para ajustes ENA en la instancia de EC2](monitoring-network-performance-ena.md).

# Optimizar el rendimiento de la red en instancias de Windows de EC2
<a name="enhanced-networking-os"></a>

Para conseguir el máximo rendimiento de red en instancias de Windows con redes mejoradas, es posible que necesite modificar la configuración predeterminada del sistema operativo. Recomendamos los siguientes cambios de configuración para aplicaciones que requieren un alto rendimiento de red. Otras optimizaciones (como activar la descarga de suma de comprobación y habilitar RSS, por ejemplo) ya están configuradas en las AMI oficiales de Windows.

**nota**  
La descarga de la chimenea TCP debe deshabilitarse en la mayoría de los casos de uso, y no está disponible a partir de Windows Server 2016.

Además de estas optimizaciones de sistemas operativos, debe también tener en cuenta la unidad de transmisión máxima (MTU) de su tráfico de red, y ajustarla según su carga de trabajo y arquitectura de red. Para obtener más información, consulte [Unidad de transmisión máxima (MTU) de red de la instancia de EC2](network_mtu.md).

AWS suele medir latencias medias de ida y vuelta entre las instancias iniciadas en un grupo de ubicación en clúster de 50 us y latencias de cola de 200 us en el percentil 99,9. Si sus aplicaciones necesitan latencias bajas de forma continuada, le recomendamos que utilice la última versión de los controladores ENA en instancias basadas en Nitro de rendimiento fijo.

## Configurar la afinidad de CPU de escalado del lado de recepción
<a name="windows-rss-cpu-affinity"></a>

El escalado lateral de recepción (RSS, por sus siglas en inglés) se utiliza para distribuir la carga de la CPU de tráfico de red en varios procesadores. De forma predeterminada, las AMI de Windows oficiales de Amazon se configuran con el RSS habilitado. Las interfaces de red elásticas de ENA proporcionan hasta ocho colas de RSS. Al definir la afinidad de la CPU para las colas de RSS, así como para otros procesos del sistema, es posible distribuir la carga de la CPU en sistemas de varios núcleos, permitiendo que se procese más tráfico de red. En tipos de instancia con más de 16 vCPU, se recomienda utilizar el cmdlet de PowerShell `Set-NetAdapterRSS`, que excluye manualmente el procesador de arranque (procesador lógico 0 y 1 cuando hyper-threading está habilitada) desde la configuración RSS para todas las interfaces de red elásticas, con el fin de evitar la contención con diversos componentes del sistema.

Windows es compatible con hyper-threading y garantiza que las colas de RSS de una tarjeta de interfaz de red (NIC) única se coloque siempre en núcleos físicos distintos. Por lo tanto, a menos que esté desactivada la tecnología Hyper-Threading, para evitar completamente un conflicto con otras NIC, propague la configuración de RSS de cada NIC entre una gama de 16 procesadores lógicos. El cmdlet `Set-NetAdapterRss` le permite definir el rango por NIC de procesadores lógicos válidos definiendo los valores de BaseProcessorGroup, BaseProcessorNumber, MaxProcessingGroup, MaxProcessorNumber y NumaNode (opcional). Si no hay suficientes núcleos físicos para eliminar por completo la contención dentro del NIC, minimice los rangos de solapamiento o reduzca el número de procesadores lógicos en los rangos de interfaz de red elástica en función de la carga de trabajo de la interfaz (en otras palabras, una interfaz de red administrativa de bajo volumen podría no necesitar tantas colas de RSS asignadas). Además, como se ha indicado con anterioridad, diversos componentes deben ejecutarse en la CPU 0 y, por tanto, recomendamos excluirla de todas las configuraciones de RSS cuando se disponga de suficientes vCPU. 

Por ejemplo, cuando hay tres interfaces de red elásticas en una instancia de 72 vCPU con dos nodos NUMA con hyper-threading habilitada, los siguientes comandos propagan la carga de red entre las dos CPU sin solapamiento e impiden el uso del núcleo 0 por completo. 

```
Set-NetAdapterRss -Name NIC1 -BaseProcessorGroup 0 -BaseProcessorNumber 2 -MaxProcessorNumber 16 
Set-NetAdapterRss -Name NIC2 -BaseProcessorGroup 1 -BaseProcessorNumber 0 -MaxProcessorNumber 14 
Set-NetAdapterRss -Name NIC3 -BaseProcessorGroup 1 -BaseProcessorNumber 16 -MaxProcessorNumber 30
```

Tenga en cuenta que esta configuración es persistente para todos los adaptadores de red. Si una instancia se redimensiona a una con distinto número de vCPU, debe volver a evaluar la configuración de RSS para cada interfaz de red elástica habilitada. La documentación completa de Microsoft para el cmdlet se puede encontrar aquí: [Set-NetAdapterRss](https://learn.microsoft.com/en-us/powershell/module/netadapter/set-netadapterrss).

Nota especial para las cargas de trabajo de SQL: también se recomienda revisar la configuración de afinidad de subprocesos de E/S junto con la configuración de RSS de interfaz de red elástica para minimizar la contención de E/S y de red para las mismas CPU. Consulte [Configuración del servidor: máscara de afinidad](https://learn.microsoft.com/en-us/sql/database-engine/configure-windows/affinity-mask-server-configuration-option).