Enable enhanced networking with the Elastic Network Adapter (ENA) on your EC2 instances - Amazon Elastic Compute Cloud

Enable enhanced networking with the Elastic Network Adapter (ENA) on your EC2 instances

Amazon EC2 provides enhanced networking capabilities through the Elastic Network Adapter (ENA). To use enhanced networking, you must install the required ENA module and enable ENA support.

Requirements

To prepare for enhanced networking using the ENA, set up your instance as follows:

  • Launch an instance built on the AWS Nitro System.

  • Ensure that the instance has internet connectivity.

  • If you have important data on the instance that you want to preserve, you should back that data up now by creating an AMI from your instance. Updating kernels and kernel modules, as well as enabling the enaSupport attribute, might render incompatible instances or operating systems unreachable. If you have a recent backup, your data will still be retained if this happens.

  • Linux instances – Launch the instance using a supported version of the Linux kernel and a supported distribution, so that ENA enhanced networking is enabled for your instance automatically. For more information, see ENA Linux Kernel Driver Release Notes.

  • Windows instances – If the instance is running Windows Server 2008 R2 SP1, ensure that is has the SHA-2 code signing support update.

  • Use AWS CloudShell from the AWS Management Console, or install and configure the AWS CLI or the AWS Tools for Windows PowerShell on any computer you choose, preferably your local desktop or laptop. For more information, see Access Amazon EC2 or the AWS CloudShell User Guide. Enhanced networking cannot be managed from the Amazon EC2 console.

Enhanced networking performance

The following documentation provides a summary of the network performance for the instance types that support ENA enhanced networking:

Linux AMIs with the required module

The following AMIs include the required ENA module and have ENA support enabled:

  • AL2023

  • Amazon Linux 2

  • Amazon Linux AMI 2018.03 and later

  • Ubuntu 14.04 or later with linux-aws kernel

    Note

    AWS Graviton-based instance types require Ubuntu 18.04 or later with linux-aws kernel

  • Red Hat Enterprise Linux 7.4 or later

  • SUSE Linux Enterprise Server 12 SP2 or later

  • CentOS 7.4.1708 or later

  • FreeBSD 11.1 or later

  • Debian GNU/Linux 9 or later

To test whether enhanced networking is already enabled, verify that the ena module is installed on your instance and that the enaSupport attribute is set. If so, then the command ethtool -i ethn should show that the module is in use on the network interface.

Kernel module (ena)

To verify that the ena module is installed, use the modinfo command as shown in the following example.

[ec2-user ~]$ modinfo ena filename: /lib/modules/4.14.33-59.37.amzn2.x86_64/kernel/drivers/amazon/net/ena/ena.ko version: 1.5.0g license: GPL description: Elastic Network Adapter (ENA) author: Amazon.com, Inc. or its affiliates srcversion: 692C7C68B8A9001CB3F31D0 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: retpoline: Y intree: Y name: ena ...

In the Amazon Linux instance, the ena module is installed.

ubuntu:~$ modinfo ena ERROR: modinfo: could not find module ena

In the Ubuntu instance, the module is not installed, so you must first install it. For more information, see Ubuntu.

Test whether enhanced networking is enabled

You can test whether enhanced networking is enabled in your instances or your AMIs.

Instance attribute

To check whether an instance has the enhanced networking enaSupport attribute set, use one of the following commands. If the attribute is set, the response is true.

  • describe-instances (AWS CLI/AWS CloudShell)

    aws ec2 describe-instances --instance-ids instance_id --query "Reservations[].Instances[].EnaSupport"
  • Get-EC2Instance (Tools for Windows PowerShell)

    (Get-EC2Instance -InstanceId instance-id).Instances.EnaSupport
Image attribute

To check whether an AMI has the enhanced networking enaSupport attribute set, use one of the following commands. If the attribute is set, the response is true.

  • describe-images (AWS CLI/AWS CloudShell)

    aws ec2 describe-images --image-id ami_id --query "Images[].EnaSupport"
  • Get-EC2Image (Tools for Windows PowerShell)

    (Get-EC2Image -ImageId ami_id).EnaSupport
Linux network interface driver

Use the following command to verify that the ena module is being used on a particular interface, substituting the interface name that you want to check. If you are using a single interface (default), it this is eth0. If the operating system supports predictable network names, this could be a name like ens5.

In the following example, the ena module is not loaded, because the listed driver is 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

In this example, the ena module is loaded and at the minimum recommended version. This instance has enhanced networking properly configured.

[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

Enable enhanced networking on your instance

The procedure that you use depends on the operating system of the instance.

Amazon Linux 2 and the latest versions of the Amazon Linux AMI include the module required for enhanced networking with ENA installed and have ENA support enabled. Therefore, if you launch an instance with an HVM version of Amazon Linux on a supported instance type, enhanced networking is already enabled for your instance. For more information, see Test whether enhanced networking is enabled.

If you launched your instance using an older Amazon Linux AMI and it does not have enhanced networking enabled already, use the following procedure to enable enhanced networking.

To enable enhanced networking on Amazon Linux AMI
  1. Connect to your instance.

  2. From the instance, run the following command to update your instance with the newest kernel and kernel modules, including ena:

    [ec2-user ~]$ sudo yum update
  3. From your local computer, reboot your instance using the Amazon EC2 console or one of the following commands: reboot-instances (AWS CLI), Restart-EC2Instance (AWS Tools for Windows PowerShell).

  4. Connect to your instance again and verify that the ena module is installed and at the minimum recommended version using the modinfo ena command from Test whether enhanced networking is enabled.

  5. [EBS-backed instance] From your local computer, stop the instance using the Amazon EC2 console or one of the following commands: stop-instances (AWS CLI), Stop-EC2Instance (AWS Tools for Windows PowerShell). If your instance is managed by AWS OpsWorks, you should stop the instance in the AWS OpsWorks console so that the instance state remains in sync.

    [Instance store-backed instance] You can't stop the instance to modify the attribute. Instead, proceed to this procedure: To enable enhanced networking on Amazon Linux AMI (instance store-backed instances).

  6. From your local computer, enable the enhanced networking attribute using one of the following commands:

  7. (Optional) Create an AMI from the instance, as described in Create an Amazon EBS-backed AMI. The AMI inherits the enhanced networking enaSupport attribute from the instance. Therefore, you can use this AMI to launch another instance with enhanced networking enabled by default.

  8. From your local computer, start the instance using the Amazon EC2 console or one of the following commands: start-instances (AWS CLI), Start-EC2Instance (AWS Tools for Windows PowerShell). If your instance is managed by AWS OpsWorks, you should start the instance in the AWS OpsWorks console so that the instance state remains in sync.

  9. Connect to your instance and verify that the ena module is installed and loaded on your network interface using the ethtool -i ethn command from Test whether enhanced networking is enabled.

    If you are unable to connect to your instance after enabling enhanced networking, see Troubleshoot the Elastic Network Adapter on Linux.

To enable enhanced networking on Amazon Linux AMI (instance store-backed instances)

Follow the previous procedure until the step where you stop the instance. Create a new AMI as described in Create an instance store-backed Linux AMI, making sure to enable the enhanced networking attribute when you register the AMI.

  • register-image (AWS CLI)

    aws ec2 register-image --ena-support ...
  • Register-EC2Image (AWS Tools for Windows PowerShell)

    Register-EC2Image -EnaSupport $true ...

The latest Ubuntu HVM AMIs include the module required for enhanced networking with ENA installed and have ENA support enabled. Therefore, if you launch an instance with the latest Ubuntu HVM AMI on a supported instance type, enhanced networking is already enabled for your instance. For more information, see Test whether enhanced networking is enabled.

If you launched your instance using an older AMI and it does not have enhanced networking enabled already, you can install the linux-aws kernel package to get the latest enhanced networking drivers and update the required attribute.

To install the linux-aws kernel package (Ubuntu 16.04 or later)

Ubuntu 16.04 and 18.04 ship with the Ubuntu custom kernel (linux-aws kernel package). To use a different kernel, contact AWS Support.

To install the linux-aws kernel package (Ubuntu Trusty 14.04)
  1. Connect to your instance.

  2. Update the package cache and packages.

    ubuntu:~$ sudo apt-get update && sudo apt-get upgrade -y linux-aws
    Important

    If during the update process you are prompted to install grub, use /dev/xvda to install grub onto, and then choose to keep the current version of /boot/grub/menu.lst.

  3. [EBS-backed instance] From your local computer, stop the instance using the Amazon EC2 console or one of the following commands: stop-instances (AWS CLI), Stop-EC2Instance (AWS Tools for Windows PowerShell). If your instance is managed by AWS OpsWorks, you should stop the instance in the AWS OpsWorks console so that the instance state remains in sync.

    [Instance store-backed instance] You can't stop the instance to modify the attribute. Instead, proceed to this procedure: To enable enhanced networking on Ubuntu (instance store-backed instances).

  4. From your local computer, enable the enhanced networking attribute using one of the following commands:

  5. (Optional) Create an AMI from the instance, as described in Create an Amazon EBS-backed AMI. The AMI inherits the enhanced networking enaSupport attribute from the instance. Therefore, you can use this AMI to launch another instance with enhanced networking enabled by default.

  6. From your local computer, start the instance using the Amazon EC2 console or one of the following commands: start-instances (AWS CLI), Start-EC2Instance (AWS Tools for Windows PowerShell). If your instance is managed by AWS OpsWorks, you should start the instance in the AWS OpsWorks console so that the instance state remains in sync.

To enable enhanced networking on Ubuntu (instance store-backed instances)

Follow the previous procedure until the step where you stop the instance. Create a new AMI as described in Create an instance store-backed Linux AMI, making sure to enable the enhanced networking attribute when you register the AMI.

  • register-image (AWS CLI)

    aws ec2 register-image --ena-support ...
  • Register-EC2Image (AWS Tools for Windows PowerShell)

    Register-EC2Image -EnaSupport $true ...

The latest AMIs for Red Hat Enterprise Linux, SUSE Linux Enterprise Server, and CentOS include the module required for enhanced networking with ENA and have ENA support enabled. Therefore, if you launch an instance with the latest AMI on a supported instance type, enhanced networking is already enabled for your instance. For more information, see Test whether enhanced networking is enabled.

The following procedure provides the general steps for enabling enhanced networking on a Linux distribution other than Amazon Linux AMI or Ubuntu. For more information, such as detailed syntax for commands, file locations, or package and tool support, see the documentation for your Linux distribution.

To enable enhanced networking on Linux
  1. Connect to your instance.

  2. Clone the source code for the ena module on your instance from GitHub at https://github.com/amzn/amzn-drivers. (SUSE Linux Enterprise Server 12 SP2 and later include ENA 2.02 by default, so you are not required to download and compile the ENA driver. For SUSE Linux Enterprise Server 12 SP2 and later, you should file a request to add the driver version you want to the stock kernel).

    git clone https://github.com/amzn/amzn-drivers
  3. Compile and install the ena module on your instance. These steps depend on the Linux distribution. For more information about compiling the module on Red Hat Enterprise Linux, see How do I install the latest ENS driver for enhanced network support on an Amazon EC2 instance that runs RHEL?

  4. Run the sudo depmod command to update module dependencies.

  5. Update initramfs on your instance to ensure that the new module loads at boot time. For example, if your distribution supports dracut, you can use the following command.

    dracut -f -v
  6. Determine if your system uses predictable network interface names by default. Systems that use systemd or udev versions 197 or greater can rename Ethernet devices and they do not guarantee that a single network interface will be named eth0. This behavior can cause problems connecting to your instance. For more information and to see other configuration options, see Predictable Network Interface Names on the freedesktop.org website.

    1. You can check the systemd or udev versions on RPM-based systems with the following command.

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

      In the above Red Hat Enterprise Linux 7 example, the systemd version is 208, so predictable network interface names must be disabled.

    2. Disable predictable network interface names by adding the net.ifnames=0 option to the GRUB_CMDLINE_LINUX line in /etc/default/grub.

      sudo sed -i '/^GRUB\_CMDLINE\_LINUX/s/\"$/\ net\.ifnames\=0\"/' /etc/default/grub
    3. Rebuild the grub configuration file.

      sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  7. [EBS-backed instance] From your local computer, stop the instance using the Amazon EC2 console or one of the following commands: stop-instances (AWS CLI), Stop-EC2Instance (AWS Tools for Windows PowerShell). If your instance is managed by AWS OpsWorks, you should stop the instance in the AWS OpsWorks console so that the instance state remains in sync.

    [Instance store-backed instance] You can't stop the instance to modify the attribute. Instead, proceed to this procedure: To enable enhanced networking on Linux (instance store–backed instances).

  8. From your local computer, enable the enhanced networking enaSupport attribute using one of the following commands:

  9. (Optional) Create an AMI from the instance, as described in Create an Amazon EBS-backed AMI. The AMI inherits the enhanced networking enaSupport attribute from the instance. Therefore, you can use this AMI to launch another instance with enhanced networking enabled by default.

    If your instance operating system contains an /etc/udev/rules.d/70-persistent-net.rules file, you must delete it before creating the AMI. This file contains the MAC address for the Ethernet adapter of the original instance. If another instance boots with this file, the operating system will be unable to find the device and eth0 might fail, causing boot issues. This file is regenerated at the next boot cycle, and any instances launched from the AMI create their own version of the file.

  10. From your local computer, start the instance using the Amazon EC2 console or one of the following commands: start-instances (AWS CLI), Start-EC2Instance (AWS Tools for Windows PowerShell). If your instance is managed by AWS OpsWorks, you should start the instance in the AWS OpsWorks console so that the instance state remains in sync.

  11. (Optional) Connect to your instance and verify that the module is installed.

    If you are unable to connect to your instance after enabling enhanced networking, see Troubleshoot the Elastic Network Adapter on Linux.

To enable enhanced networking on Linux (instance store–backed instances)

Follow the previous procedure until the step where you stop the instance. Create a new AMI as described in Create an instance store-backed Linux AMI, making sure to enable the enhanced networking attribute when you register the AMI.

This method is for testing and feedback purposes only. It is not intended for use with production deployments. For production deployments, see Ubuntu.

Important

Using DKMS voids the support agreement for your subscription. It should not be used for production deployments.

To enable enhanced networking with ENA on Ubuntu (EBS-backed instances)
  1. Follow steps 1 and 2 in Ubuntu.

  2. Install the build-essential packages to compile the kernel module and the dkms package so that your ena module is rebuilt every time your kernel is updated.

    ubuntu:~$ sudo apt-get install -y build-essential dkms
  3. Clone the source for the ena module on your instance from GitHub at https://github.com/amzn/amzn-drivers.

    ubuntu:~$ git clone https://github.com/amzn/amzn-drivers
  4. Move the amzn-drivers package to the /usr/src/ directory so DKMS can find it and build it for each kernel update. Append the version number (you can find the current version number in the release notes) of the source code to the directory name. For example, version 1.0.0 is shown in the following example.

    ubuntu:~$ sudo mv amzn-drivers /usr/src/amzn-drivers-1.0.0
  5. Create the DKMS configuration file with the following values, substituting your version of ena.

    Create the file.

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

    Edit the file and add the following values.

    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"
  6. Add, build, and install the ena module on your instance using DKMS.

    Add the module to DKMS.

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

    Build the module using the dkms command.

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

    Install the module using dkms.

    ubuntu:~$ sudo dkms install -m amzn-drivers -v 1.0.0
  7. Rebuild initramfs so the correct module is loaded at boot time.

    ubuntu:~$ sudo update-initramfs -u -k all
  8. Verify that the ena module is installed using the modinfo ena command from Test whether enhanced networking is enabled.

    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)
  9. Continue with Step 3 in Ubuntu.

If you launched your instance and it does not have enhanced networking enabled already, you must download and install the required network adapter driver on your instance, and then set the enaSupport instance attribute to activate enhanced networking. You can only enable this attribute on supported instance types and only if the ENA driver is installed. For more information, see Enhanced networking support.

To enable enhanced networking
  1. Connect to your instance and log in as the local administrator.

  2. [Windows Server 2016 and 2019 only] Run the following EC2Launch PowerShell script to configure the instance after the driver is installed.

    PS C:\> C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -Schedule
  3. From the instance, install the driver as follows:

    1. Download the latest driver to the instance.

    2. Extract the zip archive.

    3. Install the driver by running the install.ps1 PowerShell script.

      Note

      If you get an execution policy error, set the policy to Unrestricted (by default it is set to Restricted or RemoteSigned). In a command line, run Set-ExecutionPolicy -ExecutionPolicy Unrestricted, and then run the install.ps1 PowerShell script again.

  4. From your local computer, stop the instance using the Amazon EC2 console or one of the following commands: stop-instances (AWS CLI/AWS CloudShell), Stop-EC2Instance (AWS Tools for Windows PowerShell). If your instance is managed by AWS OpsWorks, you should stop the instance in the AWS OpsWorks console so that the instance state remains in sync.

  5. Enable ENA support on your instance as follows:

    1. From your local computer, check the EC2 instance ENA support attribute on your instance by running one of the following commands. If the attribute is not enabled, the output will be "[]" or blank. EnaSupport is set to false by default.

      • describe-instances (AWS CLI/AWS CloudShell)

        aws ec2 describe-instances --instance-ids instance_id --query "Reservations[].Instances[].EnaSupport"
      • Get-EC2Instance (Tools for Windows PowerShell)

        (Get-EC2Instance -InstanceId instance-id).Instances.EnaSupport
    2. To enable ENA support, run one of the following commands:

      • modify-instance-attribute (AWS CLI/AWS CloudShell)

        aws ec2 modify-instance-attribute --instance-id instance_id --ena-support
      • Edit-EC2InstanceAttribute (AWS Tools for Windows PowerShell)

        Edit-EC2InstanceAttribute -InstanceId instance_id -EnaSupport $true

      If you encounter problems when you restart the instance, you can also disable ENA support using one of the following commands:

      • modify-instance-attribute (AWS CLI/AWS CloudShell)

        aws ec2 modify-instance-attribute --instance-id instance_id --no-ena-support
      • Edit-EC2InstanceAttribute (AWS Tools for Windows PowerShell)

        Edit-EC2InstanceAttribute -InstanceId instance_id -EnaSupport $false
    3. Verify that the attribute has been set to true using describe-instances or Get-EC2Instance as shown previously. You should now see the following output:

      [ true ]
  6. From your local computer, start the instance using the Amazon EC2 console or one of the following commands: start-instances (AWS CLI/AWS CloudShell), Start-EC2Instance (AWS Tools for Windows PowerShell). If your instance is managed by AWS OpsWorks, you should start the instance using the AWS OpsWorks console so that the instance state remains in sync.

  7. On the instance, validate that the ENA driver is installed and enabled as follows:

    1. Right-click the network icon and choose Open Network and Sharing Center.

    2. Choose the Ethernet adapter (for example, Ethernet 2).

    3. Choose Details. For Network Connection Details, check that Description is Amazon Elastic Network Adapter.

  8. (Optional) Create an AMI from the instance. The AMI inherits the enaSupport attribute from the instance. Therefore, you can use this AMI to launch another instance with ENA enabled by default.

Driver release notes

For information about the versions of the Linux ENA driver, see the ENA Linux kernel driver release notes.

Windows AMIs include the Amazon ENA driver to enable enhanced networking.

The following table shows the corresponding ENA driver version to download for each Windows Server version.

Windows Server version ENA driver version

Windows Server 2022

2.4.0 and later

Windows Server 2019

latest

Windows Server 2016 latest
Windows Server 2012 R2 2.6.0 and earlier
Windows Server 2012 2.6.0 and earlier
Windows Server 2008 R2 2.2.3 and earlier

The following table summarizes the changes for each release.

Driver version Details Release date

2.7.0

New Features

  • Removed support for Windows Server 2012 (Windows 8) and Windows Server 2012 R2 (Windows 8.1). These operating system versions have reached the end of support from AWS. Driver install will fail on Windows Server 2012 and earlier.

  • Added support for offloading IPv6 Tx checksum calculation to the device.

  • Added wide Low Latency Queuing (LLQ) support. This is dynamically enabled based on device recommendation. You can override this setting with the new "WideLLQ" registry key.

  • Added reporting for packet drops resulting from Rx overrun, which indicates insufficient space in the Rx ring for incoming packets.

  • Added support for suboptimal configuration notifications from the device. See event ID 59000 in the Windows event viewer.

Bug Fixes

  • Avoid unnecessary device reset caused by Tx packets with headers that exceed the maximum Low Latency Queuing (LLQ) header size.

May 1, 2024

2.6.0

New Features

  • Adds the following network performance metrics for instance types that support ENA Express.

    • ena_srd_mode

    • ena_srd_tx_pkts

    • ena_srd_eligible_tx_pkts

    • ena_srd_rx_pkts

    • ena_srd_resource_utilization

  • Adds conntrack_allowance_available network performance metric for Nitro based instance types.

  • Adds new adapter reset reason due to detection of RX data corruption.

  • Updates driver logging infrastructure.

Bug Fixes

  • Prevents adapter reset in the event that CPU starvation causes a network performance metrics update to fail.

  • Prevents false detection of an interruption to the device heartbeat.

  • Fixes driver installation script to support downgrade operation.

  • Fixes the receive error count statistic.

June 20, 2023

2.5.0

Announcement

ENA Windows driver version 2.5.0 has been rolled back due to failure to initialize on the Windows domain controller. Windows Client and Windows Server are unaffected.

February 17, 2023

2.4.0

New Features

  • Adds support for Windows Server 2022.

  • Removes support for Windows Server 2008 R2.

  • Sets Low Latency Queuing (LLQ) to always on to improve performance on sixth generation Amazon EC2 instances.

Bug Fix

  • Fixes a failure to publish network performance metrics to the Performance Counters for Windows (PCW) system.

  • Fixes a memory leak during the registry key reading operation.

  • Prevents an infinite reset loop in the event of an unrecoverable error during the adapter reset process.

April 28, 2022

2.2.4

Announcement

ENA Windows driver version 2.2.4 has been rolled back due to potential performance degradation on the sixth generation EC2 instances. We recommend that you downgrade the driver, using one of the following methods:

  • Install the previous version
    1. Download the previous version package from the link in this table (version 2.2.3).

    2. Run the install.ps1 PowerShell installation script.

    For more details for pre- and post-installation steps see Enable enhanced networking on Windows.

    Use Amazon EC2 Systems Manager for a bulk update
    • Perform a bulk update via SSM document AWS-ConfigureAWSPackage, with the following parameters:

      • Name: AwsEnaNetworkDriver

      • Version: 2.2.3

October 26, 2021

2.2.3

New Feature

  • Adds support for new Nitro cards with up to 400 Gbps instance networking.

Bug Fix

  • Fixes race condition between system time change and system time query by the ENA driver, which causes false-positive detection of HW unresponsiveness.

Windows ENA driver version 2.2.3 is the final version that supports Windows Server 2008 R2. Currently available instance types that use ENA will continue to be supported on Windows Server 2008 R2, and the drivers are available by download. No future instance types will support Windows Server 2008 R2, and you cannot launch, import, or migrate Windows Server 2008 R2 images to future instance types.

March 25, 2021

2.2.2

New Feature

  • Adds support to query network adapter performance metrics with CloudWatch and the Performance Counters for Windows consumers.

Bug Fix

  • Fixes performance issues on bare metal instances.

December 21, 2020

2.2.1

New Feature

  • Adds a method to allow the host to query the Elastic Network Adapter for network performance metrics.

October 1, 2020

2.2.0

New Features

  • Adds support for next generation hardware types.

  • Improves instance start time after resuming from stop-hibernate, and eliminates false positive ENA error messages.

Performance Optimizations

  • Optimizes processing of inbound traffic.

  • Improves shared memory management in low resource environment.

Bug Fix

  • Avoids system crash upon ENA device removal in rare scenario where driver fails to reset.

August 12, 2020

2.1.5

Bug Fix

  • Fixes occasional network adapter initialization failure on bare metal instances.

June 23, 2020

2.1.4

Bug Fixes

  • Prevent connectivity issues caused by corrupted LSO packet metadata arriving from the network stack.

  • Prevent system crash caused by a rare race condition that results in accessing an already released packet memory.

November 25, 2019

2.1.2

New Feature

  • Added support for vendor ID report to allow OS to generate MAC-based UUIDs.

Bug Fixes

  • Improved DHCP network configuration performance during initialization.

  • Properly calculate L4 checksum on inbound IPv6 traffic when the maximum transmission unit (MTU) exceeds 4K.

  • General improvements to driver stability and minor bug fixes.

November 4, 2019

2.1.1

Bug Fixes
  • Prevent drops of highly fragmented TCP LSO packets arriving from operating system.

  • Properly handle Encapsulating Security Payload (ESP) protocol within the IPSec in IPv6 networks.

September 16, 2019

2.1.0

ENA Windows driver v2.1 introduces new ENA device capabilities, provides a performance boost, adds new features, and includes multiple stability improvements.
  • New features

    • Use standardized Windows registry key for Jumbo frames configuration.

    • Allow VLAN ID setting via the ENA driver properties GUI.

    • Improved Recovery flows

      • Improved failure identification mechanism.

      • Added support for tunable recovery parameters.

    • Support up to 32 I/O queues for newer EC2 instances that have more than 8 vCPUs.

    • ~90% reduction of driver memory footprint.

  • Performance optimizations

    • Reduced transmit path latency.

    • Support for receive checksum offload.

    • Performance optimization for heavily loaded system (optimized usage of locking mechanisms).

    • Further enhancements to reduce CPU utilization and improve system responsiveness under load.

  • Bug Fixes

    • Fix crash due to invalid parsing of non-contiguous Tx headers.

    • Fix driver v1.5 crash during the elastic network interface detach on Bare Metal instances.

    • Fix LSO pseudo-header checksum calculation error over IPv6.

    • Fix potential memory resource leak upon initialization failure.

    • Disable TCP/UDP checksum offload for IPv4 fragments.

    • Fix for VLAN configuration. VLAN was incorrectly disabled when only VLAN priority should have been disabled.

    • Enable correct parsing of custom driver messages by the event viewer.

    • Fix failure to initialize driver due to invalid timestamp handling.

    • Fix race condition between data processing and ENA device disabling.

July 1, 2019

1.5.0

  • Improved stability and performance fixes.

  • Receive Buffers can now be configured up to a value of 8192 in Advanced Properties of the ENA NIC.

  • Default Receive Buffers of 1k.

October 4, 2018

1.2.3

Includes reliability fixes and unifies support for Windows Server 2008 R2 through Windows Server 2016.

February 13, 2018

1.0.8

The initial release. Included in AMIs for Windows Server 2008 R2, Windows Server 2012 RTM, Windows Server 2012 R2, and Windows Server 2016.

July 2016

Amazon SNS can notify you when new versions of EC2 Windows Drivers are released. Use the following procedure to subscribe to these notifications.

To subscribe to EC2 notifications
  1. Open the Amazon SNS console at https://console.aws.amazon.com/sns/v3/home.

  2. In the navigation bar, change the Region to US East (N. Virginia), if necessary. You must select this Region because the SNS notifications that you are subscribing to are in this Region.

  3. In the navigation pane, choose Subscriptions.

  4. Choose Create subscription.

  5. In the Create subscription dialog box, do the following:

    1. For TopicARN, copy the following Amazon Resource Name (ARN):

      arn:aws:sns:us-east-1:801119661308:ec2-windows-drivers

    2. For Protocol, choose Email.

    3. For Endpoint, enter an email address that you can use to receive the notifications.

    4. Choose Create subscription.

  6. You'll receive a confirmation email. Open the email and follow the directions to complete your subscription.

Whenever new EC2 Windows drivers are released, we send notifications to subscribers. If you no longer want to receive these notifications, use the following procedure to unsubscribe.

To unsubscribe from Amazon EC2 Windows driver notification
  1. Open the Amazon SNS console at https://console.aws.amazon.com/sns/v3/home.

  2. In the navigation pane, choose Subscriptions.

  3. Select the check box for the subscription and then choose Actions, Delete subscriptions. When prompted for confirmation, choose Delete.