在 Windows 实例上启用 Elastic Network Adapter (ENA) 增强联网 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Windows 实例上启用 Elastic Network Adapter (ENA) 增强联网

Amazon EC2 通过 Elastic Network Adapter (ENA) 提供增强联网功能。要使用增强型联网,您必须安装所需的 ENA 模块并启用 ENA 支持。

要求

要使用 ENA 准备增强联网,请按如下方式设置您的实例:

  • 启动基于 Nitro 系统的实例

  • 如果实例运行的是 Windows Server 2008 R2 SP1,请确保该实例具有 SHA-2 代码签名支持更新

  • 确保实例具有 Internet 连接。

  • 使用 Amazon Web Services Management Console 的 Amazon CloudShell,或者将 Amazon CLIAmazon Tools for Windows PowerShell 安装到您选择的任意电脑上(最好是本地台式机或笔记本电脑)并进行配置。有关的更多信息,请参阅 访问 Amazon EC2Amazon CloudShell 用户指南。不能从 Amazon EC2 控制台管理增强联网。

  • 如果您的实例上有重要的数据需要保留,则应立即从您的实例创建 AMI,来备份这些数据。更新内核和内核模块以及启用 enaSupport 属性可能会导致实例不兼容或无法访问操作系统。如果您有最新备份,则发生此情况时仍将保留数据。

增强联网性能

以下文档汇总了支持 ENA 增强联网的实例类型的网络性能:

测试是否启用了增强联网功能

若要测试是否已启用了增强联网,请确认实例上已安装 驱动程序且设置了 enaSupport 属性

实例属性 (enaSupport)

要检查实例是否设置了增强联网 enaSupport 属性,请使用以下任一命令。如果该属性已设置,则响应为 true。

  • describe-instances (Amazon CLI/Amazon CloudShell)

    aws ec2 describe-instances --instance-ids instance_id --query "Reservations[].Instances[].EnaSupport"
  • Get-EC2Instance(适用于 Windows PowerShell 的工具)

    (Get-EC2Instance -InstanceId instance-id).Instances.EnaSupport
映像属性(enaSupport)

要检查 AMI 是否设置了增强联网 enaSupport 属性,请使用以下任一命令。如果该属性已设置,则响应为 true。

  • describe-images (Amazon CLI/Amazon CloudShell)

    aws ec2 describe-images --image-id ami_id --query "Images[].EnaSupport"
  • Get-EC2Image(适用于 Windows PowerShell 的工具)

    (Get-EC2Image -ImageId ami_id).EnaSupport

在 Windows 上启用增强联网

如果您启动了您的实例且该实例未启用增强联网,则必须下载所需的网络适配器驱动程序并将其安装到您的实例上,然后设置 enaSupport 实例属性以激活增强联网。仅当安装了 ENA 驱动程序时,才能在受支持的实例类型上启用此属性。有关更多信息,请参阅增强联网支持

启用增强联网
  1. 连接到您的实例并以本地管理员身份登录。

  2. [仅限 Windows Server 2016 和 2019] 运行以下 EC2Launch PowerShell 脚本,以便在安装此驱动程序后配置实例。

    PS C:\> C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -Schedule
  3. 从实例安装驱动程序,如下所示:

    1. 将最新驱动程序下载到实例。

    2. 提取 zip 存档。

    3. 通过运行 install.ps1 PowerShell 脚本安装驱动程序。

      注意

      如果您收到了执行策略错误,请将策略设置为 Unrestricted(默认情况下设置为 RestrictedRemoteSigned)。在命令行中,运行 Set-ExecutionPolicy -ExecutionPolicy Unrestricted,然后再次运行 install.ps1 PowerShell 脚本。

  4. 使用 Amazon EC2 控制台或以下任一命令从您的本地计算机停止实例:stop-instances(Amazon CLI/Amazon CloudShell)、Stop-EC2Instance(Amazon Tools for Windows PowerShell)。如果您的实例由 Amazon OpsWorks 管理,则应在 Amazon OpsWorks 控制台中停止该实例,以便使实例状态保持同步。

  5. 在您的实例上启用 ENA 支持,如下所示:

    1. 在您的本地计算机上,通过运行以下命令之一来检查实例的 EC2 实例 ENA 支持属性。如果未启用属性,则输出将为“[]”或为空。默认情况下,EnaSupport 设置为 false

      • describe-instances (Amazon CLI/Amazon CloudShell)

        aws ec2 describe-instances --instance-ids instance_id --query "Reservations[].Instances[].EnaSupport"
      • Get-EC2Instance(适用于 Windows PowerShell 的工具)

        (Get-EC2Instance -InstanceId instance-id).Instances.EnaSupport
    2. 要启用 ENA 支持,请运行以下命令之一:

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

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

        Edit-EC2InstanceAttribute -InstanceId instance_id -EnaSupport $true

      如果在重新启动实例时遇到问题,也可以使用以下命令之一禁用 ENA 支持:

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

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

        Edit-EC2InstanceAttribute -InstanceId instance_id -EnaSupport $false
    3. 如前所示,使用 truedescribe-instances,验证属性是否已设置为 Get-EC2Instance。现在,您应看到以下输出:

      [ true ]
  6. 使用 Amazon EC2 控制台或以下任一命令从您的本地计算机启动实例:start-instances(Amazon CLI/Amazon CloudShell)、Start-EC2Instance(Amazon Tools for Windows PowerShell)。如果您的实例由 Amazon OpsWorks 管理,您应使用 Amazon OpsWorks 控制台启动该实例,以便实例状态保持同步。

  7. 在实例上,验证 ENA 驱动程序是否已如下所示安装并且启用:

    1. 右键单击网络图标,然后选择 Open Network and Sharing Center

    2. 选择以太网适配器 (例如 Ethernet 2)。

    3. 选择 Details。对于 Network Connection Details,检查 Description 是否为 Amazon Elastic Network Adapter

  8. (可选) 从实例创建 AMI。该 AMI 继承实例的 enaSupport 属性。因此,您可以使用该 AMI 来启动另一个默认启用 ENA 的实例。有关更多信息,请参阅创建自定义 Windows AMI

安装或升级弹性网络适配器(ENA)驱动程序

如果实例并非基于 Amazon 提供的最新 Windows 亚马逊机器映像(AMI)中的一种,请使用以下步骤在您的实例上安装当前 ENA 驱动程序。您应该在方便重启实例的时候执行该更新。如果安装脚本没有自动重启实例,我们建议您最后再重启实例。

如果您在实例运行期间使用实例存储卷来存储数据,则当您停止该实例时,该数据将被擦除。在停止实例之前,请首先确认您是否已将所需数据从实例存储卷复制到持久性存储,例如 Amazon EBS 或 Amazon S3。

先决条件

要安装或升级 ENA 驱动程序,Windows 实例必须满足以下先决条件:

  • 已安装 PowerShell 3.0 或更高版本

第 1 步:备份数据

我们建议您创建备份 AMI,以备在无法通过设备管理器回滚更改时使用。要使用 Amazon Web Services Management Console创建备份 AMI,请执行以下步骤:

  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择实例

  3. 选择需要升级驱动程序的实例,然后从实例状态菜单中选择停止实例

  4. 在实例停止后再次选择该实例。要创建备份,请从操作菜单中选择映像和模板,然后选择创建映像

  5. 要重启实例,请从实例状态菜单中选择启动实例

第 2 步:安装或升级 ENA 驱动程序

您可以使用 Amazon Systems Manager Distributor 或 PowerShell cmdlet 安装或升级 ENA 驱动程序。有关进一步的说明,请选择您要使用的方法对应的选项卡。

Systems Manager Distributor

您可以使用 Systems Manager Distributor 功能将程序包部署到 Systems Manager 托管式节点。使用 Systems Manager Distributor 时,您可以一次性安装 ENA 驱动程序包,也可以通过计划更新来安装。有关如何使用 Systems Manager Distributor 安装 ENA 驱动程序包 (AwsEnaNetworkDriver) 的更多信息,请参阅《Amazon Systems Manager 用户指南》中的 安装或更新程序包

PowerShell

本节介绍了如何在实例上使用 PowerShell cmdlet 下载和安装 ENA 驱动程序包。

选项 1:下载并解压缩最新版本
  1. 连接到您的实例并以本地管理员身份登录。

  2. 使用 invoke-webrequest cmdlet 下载最新驱动程序包:

    PS C:\> invoke-webrequest https://ec2-windows-drivers-downloads.s3.amazonaws.com/ENA/Latest/AwsEnaNetworkDriver.zip -outfile $env:USERPROFILE\AwsEnaNetworkDriver.zip
    注意

    您还可以在实例上通过浏览器窗口下载最新驱动程序包。

  3. 使用 expand-archive cmdlet 将您下载的 zip 存档文件提取到您的实例上:

    PS C:\> expand-archive $env:userprofile\AwsEnaNetworkDriver.zip -DestinationPath $env:userprofile\AwsEnaNetworkDriver
选项 2:下载并解压缩特定版本
  1. 连接到您的实例并以本地管理员身份登录。

  2. 利用 Amazon ENA 驱动程序版本 表中的版本链接下载所需特定版本的 ENA 驱动程序包。

  3. 将 zip 存档文件提取到您的实例。

使用 PowerShell 安装 ENA 驱动程序

无论您下载的是最新版本还是特定版本的驱动程序,安装步骤都一样。要安装 ENA 驱动程序,请按照以下步骤操作。

  1. 要安装驱动程序,请从实例上的 AwsEnaNetworkDriver 目录运行 install.ps1 PowerShell 脚本。如果出现错误,请确保您使用的是 PowerShell 3.0 或更高版本。

  2. 如果安装程序没有自动重启实例,请运行 Restart-Computer PowerShell cmdlet。

    PS C:\> Restart-Computer

第 3 步(可选):安装后验证 ENA 驱动程序版本

为确保已在实例上成功安装 ENA 驱动程序包,您可以按如下方式验证新版本:

  1. 连接到您的实例并以本地管理员身份登录。

  2. 要打开 Windows 设备管理器,请在 Run(运行)框中输入 devmgmt.msc

  3. 选择确定。这将打开 Device Manager(设备管理器)窗口。

  4. 选择 Network adapters(网络适配器)左侧的箭头以展开列表。

  5. 选择名称或打开 Amazon Elastic Network Adapter 的上下文菜单,然后选择 Properties(属性)。这将打开 Amazon 弹性网络适配器属性对话框。

    注意

    所有 ENA 适配器都使用相同的驱动程序。如果您有多个 ENA 适配器,选择其中任何一个即可更新所有 ENA 适配器的驱动程序。

  6. 要验证已安装的当前版本,请打开驱动程序选项卡,然后检查驱动程序版本。如果当前版本与您的目标版本不符,请参阅 对 Elastic Network Adapter (ENA) Windows 驱动程序进行问题排查

回滚 ENA 驱动程序安装

如果安装出现任何问题,则可能需要回滚驱动程序。按照以下步骤回滚在实例上安装的先前版本的 ENA 驱动程序。

  1. 连接到您的实例并以本地管理员身份登录。

  2. 要打开 Windows 设备管理器,请在 Run(运行)框中输入 devmgmt.msc

  3. 选择确定。这将打开 Device Manager(设备管理器)窗口。

  4. 选择 Network adapters(网络适配器)左侧的箭头以展开列表。

  5. 选择名称或打开 Amazon Elastic Network Adapter 的上下文菜单,然后选择 Properties(属性)。这将打开 Amazon 弹性网络适配器属性对话框。

    注意

    所有 ENA 适配器都使用相同的驱动程序。如果您有多个 ENA 适配器,选择其中任何一个即可更新所有 ENA 适配器的驱动程序。

  6. 要回滚驱动程序,请打开驱动程序选项卡,然后选择回滚驱动程序。这将打开驱动程序包回滚窗口。

    注意

    如果驱动程序选项卡未显示回滚驱动程序操作,或者该操作不可用,则表示实例上的驱动程序存储不包含之前安装的驱动程序包。要解决此问题,请参阅 诊断场景 并展开安装了意外的 ENA 驱动程序版本部分。有关设备驱动程序包选择过程的更多信息,请参阅《Microsoft 文档网站》上的 Windows 如何为设备选择驱动程序包

Amazon ENA 驱动程序版本

Windows AMI 包含 Amazon ENA 驱动程序,用于启用增强联网。

下表显示了要为每个 Windows Server 版本下载的相应 ENA 驱动程序版本。

Windows Server 版本 ENA 驱动程序版本

Windows Server 2022

2.4.0 及更高版本

Windows Server 2019

最新

Windows Server 2016 最新
Windows Server 2012 R2 2.6.0 及更早版本
Windows Server 2012 2.6.0 及更早版本
Windows Server 2008 R2 2.2.3 及更早版本

下表总结了每个版本的变更。

驱动程序版本 详细信息 发行日期

2.6.0

新功能

  • 为支持 ENA Express 的实例类型添加了以下网络性能指标。

    • ena_srd_mode

    • ena_srd_tx_pkts

    • ena_srd_eligible_tx_pkts

    • ena_srd_rx_pkts

    • ena_srd_resource_utilization

  • 为基于 Nitro 的实例类型添加了 conntrack_allowance_available 网络性能指标。

  • 添加了由于检测到 RX 数据损坏而导致的新适配器重置原因。

  • 更新了驱动程序日志记录基础设施。

错误修复

  • 防止在 CPU 不足导致网络性能指标更新失败时重置适配器。

  • 防止错误检测到设备检测信号中断。

  • 修复了驱动程序安装脚本,可支持降级操作。

  • 修复了接收错误计数统计数据。

2023 年 6 月 20 日

2.5.0

公告

由于无法在 Windows 域控制器上初始化,ENA Windows 驱动程序版本 2.5.0 已回滚。Windows 客户端和 Windows Server 不受影响。

2023 年 2 月 17 日

2.4.0

新功能

  • 添加了对 Windows Server 2022 的支持。

  • 删除了对 Windows Server 2008 R2 的支持。

  • 将低延迟队列 (LLQ) 设置为始终开启,以提高第六代 Amazon EC2 实例的性能。

错误修复

  • 修复了无法将网络性能指标发布到适用于 Windows 的性能计数器 (PCW) 系统的故障。

  • 修复了注册表项读取操作期间的内存泄漏问题。

  • 在适配器重置过程中,如果出现不可恢复的错误,可防止无限重置循环。

2022 年 4 月 28 日

2.2.4

公告

由于第六代 EC2 实例的潜在性能下降,ENA Windows 驱动程序版本 2.2.4 已回滚。建议您使用以下方法之一降级驱动程序:

  • 安装旧版本
    1. 从此表中的链接下载旧版本软件包(版本 2.2.3)。

    2. 运行 install.ps1 PowerShell 安装脚本。

    有关安装前和安装后步骤的详细信息,请参阅 在 Windows 上启用增强联网

    使用 Amazon EC2 Systems Manager 进行批量更新
    • 通过 SSM 文档 AWS-ConfigureAWSPackage 和如下参数执行批量更新:

      • Name(名称):AwsEnaNetworkDriver

      • Version(版本):2.2.3

2021 年 10 月 26 日

2.2.3

新功能

  • 增加了对新 Nitro 卡的支持,实例联网速度高达 400 Gbps。

错误修复

  • 修复了 ENA 驱动程序的系统时间更改和系统时间查询之间的竞争条件,这会导致硬件无响应的误报检测。

Windows ENA 驱动程序版本 2.2.3 是支持 Windows Server 2008 R2 的最终版本。Windows Server 2008 R2 将继续支持当前可用的使用 ENA 的实例类型,并且驱动程序可以通过下载获得。未来的实例类型不会支持 Windows Server 2008 R2,且您无法启动、导入或将 Windows Server 2008 R2 映像迁移到未来的实例类型。

2021 年 3 月 25 日

2.2.2

新功能

  • 添加了对使用 CloudWatch 和适用于 Windows 使用者的性能计数器查询网络适配器性能指标的支持。

错误修复

  • 修复了裸机实例的性能问题。

2020 年 12 月 21 日

2.2.1

新功能

  • 添加一种方法,以允许主机查询 Elastic Network Adapter 来获取网络性能指标。

2020 年 10 月 1 日

2.2.0

新功能

  • 添加了对下一代硬件类型的支持。

  • 提高了从停止休眠恢复后的实例启动时间,并消除误报 ENA 错误消息。

性能优化

  • 优化入站流量的处理。

  • 改进了低资源环境中的共享内存管理。

错误修复

  • 在驱动程序无法重置的极少数情况下,避免在移除 ENA 设备时系统崩溃。

2020 年 8 月 12 日

2.1.5

错误修复

  • 修复了裸机实例上偶尔出现的网络适配器初始化失败的问题。

2020 年 6 月 23 日

2.1.4

错误修复

  • 防止来自网络堆栈的损坏 LSO 数据包元数据导致的连接问题。

  • 防止由罕见的竞争情况导致的系统崩溃,这种情况导致访问已释放的数据包内存。

2019 年 11 月 25 日

2.1.2

新功能

  • 添加了对供应商 ID 报告的支持,以允许操作系统生成基于 MAC 的 UUID。

错误修复

  • 改进了初始化期间的 DHCP 网络配置性能。

  • 当最大传输单位 (MTU) 超过 4K 时,正确计算入站 IPv6 流量的 L4 校验和。

  • 驱动程序稳定性的一般改进和较小错误修复。

2019 年 11 月 4 日

2.1.1

错误修复
  • 防止丢弃从操作系统到达的高度分段的 TCP LSO 数据包。

  • 在 IPv6 网络中正确处理在 IPSec 内封装安全负载 (ESP) 协议。

2019 年 9 月 16 日

2.1.0

ENA Windows 驱动程序 2.1 版引入了新的 ENA 设备功能,提升了性能,添加了新的功能并包含多项稳定性改进。
  • 新功能

    • 在巨型帧配置中使用标准化的 Windows 注册表项。

    • 允许通过 ENA 驱动程序属性 GUI 配置 VLAN ID 设置。

    • 改进的恢复流程

      • 改进的故障识别机制。

      • 添加了对可调恢复参数的支持。

    • 对于具有超过 8 个 vCPU 的较新 EC2 实例,最多支持 32 个 I/O 队列。

    • 将驱动程序内存占用量减少约 90%。

  • 性能优化

    • 减少了传输路径延迟。

    • 支持接收校验和分载。

    • 优化负载较高的系统的性能(优化了锁定机制使用)。

    • 进一步增强以降低 CPU 利用率,并提高了具有较高负载的系统的响应速度。

  • 错误修复

    • 修复由于不连续 Tx 标头解析无效而导致崩溃的问题。

    • 修复在裸机实例上分离弹性网络接口期间驱动程序 1.5 版崩溃的问题。

    • 修复 IPv6 上的 LSO 伪标头校验和计算错误。

    • 修复在初始化失败时的潜在内存资源泄漏问题。

    • 禁用 IPv4 分段的 TCP/UDP 校验和分载。

    • 修复 VLAN 配置。在只应禁用 VLAN 优先级时,错误地禁用了 VLAN。

    • 使事件查看器能够正确解析自定义驱动程序消息。

    • 修复由于时间戳处理无效而无法初始化驱动程序的问题。

    • 修复数据处理和 ENA 设备禁用之间的争用情况。

2019 年 7 月 1 日

1.5.0

  • 改进了稳定性,修复了性能问题。

  • 接收缓冲区现在可在 ENA NIC 的“Advanced Properties (高级属性)”中配置为高达 8192 的值。

  • 默认接收缓冲区为 1k。

2018 年 10 月 4 日

1.2.3

包括可靠性修复,并且统一了对 Windows Server 2008 R2 到 Windows Server 2016 的支持。

2018 年 2 月 13 日

1.0.8

首次发布。包含在适用于 Windows Server 2008 R2、Windows Server 2012 RTM、Windows Server 2012 R2 和 Windows Server 2016 的 AMI 中。

2016 年 7 月

订阅 通知

Amazon SNS 可在 EC2 Windows 驱动程序的新版本发布时向您发送通知。使用以下过程订阅这些通知。

订阅 EC2 通知
  1. 通过以下网址打开 Amazon SNS 控制台:https://console.aws.amazon.com/sns/v3/home

  2. 如果需要,可在导航栏中将区域更改为美国东部(弗吉尼亚北部)。您必须选择此区域,因为您订阅的 SNS 通知是在此区域中创建的。

  3. 在导航窗格中,选择 Subscriptions

  4. 选择 Create subscription

  5. Create subscription 对话框中,执行以下操作:

    1. 对于 TopicARN,复制以下 Amazon Resource Name (ARN):

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

    2. 对于 Protocol,选择 Email

    3. 对于终端节点,输入可以用于接收通知的电子邮件地址。

    4. 选择 Create subscription

  6. 您将收到一封确认电子邮件。打开电子邮件,然后按照说明操作以完成订阅。

每当发布新的 EC2 Windows 驱动程序时,我们都会向订户发送通知。如果您不希望再收到这些通知,请通过以下步骤取消订阅。

从 Amazon EC2 Windows 驱动程序通知中取消订阅
  1. 通过以下网址打开 Amazon SNS 控制台:https://console.aws.amazon.com/sns/v3/home

  2. 在导航窗格中,选择 Subscriptions

  3. 选中订阅的复选框,然后依次选择 Actions (操作)Delete subscriptions (删除订阅)。当系统提示进行确认时,选择 Delete