I want to prevent or resolve network performance issues that affect Amazon Elastic Compute Cloud (Amazon EC2) instances that are sixth generation and later.
Short description
Sixth generation and later Amazon EC2 instances require an updated driver for the Elastic Network Adapter (ENA). If you use older ENA drivers with these instances, then you will see suboptimal network performance. This suboptimal performance can include lower throughput and Packets Per Second (PPS) rates and higher latency. Significantly older drivers can result in failures for instance launch, elastic network interface attachment, or device initialization.
Note: C6g, M6g, and R6g instances don't require an updated driver for the ENA.
Resolution
Based on your use case, complete the following tasks.
Linux, FreeBSD, and DPDK
To install the appropriate ENA driver, complete the following steps:
-
Check the version of the ENA driver that's currently installed. If you use Amazon Linux or if you ever installed the ENA driver from the Amazon ENA GitHub repository, then run the following command:
modinfo ena
For other Linux distributions, and for those that run a kernel from upstream, to view the Operating System (OS) and kernel versions, run the following command:
cat /etc/os-release; uname -r
For FreeBSD, to view the OS and ENA driver versions, run the following command on a running Nitro instance:
cat /etc/os-release; dmesg | grep 'ena v[0-9]'
For Data Plane Development Kit (DPDK), to view its version, run the following command:
/<build_dir>/app/dpdk-proc-info -- --version
Note: Based on your use case, change the path in the preceding command.
-
To verify that your system meets minimum OS and software version requirements, use the command results and the following table. Later versions of the OS and the relevant software also meet the criteria. If your OS or software versions are older than required, then you must update the OS and software versions.
Environment | OS version | Software version |
---|
Linux ENA driver from GitHub | N/A | ENA driver 2.2.9g |
Red Hat Enterprise Linux (RHEL) | 8.3 | Kernel 4.18.0-240.1.1 |
SUSE Linux Enterprise Server (SLES) | SLES 12 SP4 | SLES 12 SP4: kernel 4.12.14-95.99.3, SLE 12 SP5: kernel 4.12.14-122.116.1, SLE 15: kernel 4.12.14-150000.150.92.2, SLE 15 SP1: kernel 4.12.14-150100.197.114.2, SLE 15 SP2: kernel 5.3.18-24.15.1 |
Ubuntu Server | 18.04.5 LTS | Kernel 5.4.0-1025-aws |
Upstream Linux kernel | N/A | Kernel 5.9.1 |
FreeBSD | 12 | ENA driver 2.3.1 |
DPDK | N/A | 20.11 |
Note: The following versions result in instance launch failures, elastic network interface attachment failures, or device initialization failures with sixth generation and later instances:
Linux ENA driver from GitHub: Earlier than 1.2.0g
FreeBSD: Earlier than 2.3.1
DPDK: Earlier than 18.11
Update the driver
Because the ENA driver is usually embedded into the kernel, it's a best practice to update your kernel to the latest version. If the OS version doesn't meet the criteria, then you must upgrade the OS to a supported version. Or, relaunch from a newer Amazon Machine Image (AMI). If you compile and install the Linux ENA driver from GitHub for RHEL and SLES, then your system might be unsupported. This unsupported system can limit or prevent your ability to receive support from Red Hat or SUSE.
For DPDK, update instructions can vary depending on whether DPDK was installed from a package or compiled from source. To update DPDK, refer to your DPDK application documentation for instructions.
Windows based operating systems
To check the version, install, or upgrade your ENA Windows driver, see Install the Elastic Network Adapter (ENA) driver. The minimal required ENA driver version to support the sixth generation and later instance types is v2.2.3. If the driver version is earlier than v2.2.0, then it leads to instance launch or elastic network interface attachment failures.
Related information
Improve network latency for Linux based Amazon EC2 instances
Troubleshoot the Elastic Network Adapter Windows driver