通过 Intel 82599 VF 接口实现增强联网 - Amazon Elastic Compute Cloud

通过 Intel 82599 VF 接口实现增强联网

对于基于 Xen 的实例,Intel 82599 虚拟功能(VF)接口会提供增强的联网功能。该接口使用 Intel ixgbevf 驱动程序。

下列选项卡展示了如何验证为实例操作系统安装的网络适配器驱动程序。

Linux
Linux 网络接口驱动程序

使用以下命令验证是否在特定接口上使用了该模块(替代要检查的接口名称)。如果您使用单个接口(默认设置),则为 eth0。如果操作系统支持可预测的网络名称,这可以是 ens5 等名称。

在以下示例中,ixgbevf 模块未加载,因为列出的驱动程序是 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

在此示例中,已加载 ixgbevf 模块。此实例正确配置了增强联网。

[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
Windows 网络适配器

要验证是否已安装驱动程序,请连接到您的实例并打开设备管理器。您应该会在网络适配器下看到列出的 Intel(R) 82599 Virtual Function

为增强联网准备好实例

要使用 Intel 82599 VF 接口准备增强联网,请按如下方式设置您的实例:

  • 验证实例类型是否为以下类型之一:C3、C4、D2、I2、M4(不包括 m4.16xlarge)和 R3。

  • 确保实例具有 Internet 连接。

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

  • Linux 实例:从使用 Linux 内核版本 2.6.32 或更高版本的 HVM AMI 启动实例。最新的 Amazon Linux HVM AMI 安装有增强联网所需的模块,并已设置所需的属性。因此,如果使用最新 Amazon Linux HVM AMI 启动由 Amazon EBS 提供支持且支持增强联网的实例,则已为您的实例启用增强联网。

    警告

    仅 HVM 实例支持增强联网。使用半虚拟化实例启用增强联网会让该实例无法访问。在模块或模块版本不正确的情况下设置此属性还可能导致您的实例不可访问。

  • Windows 实例:从 64 位 HVM AMI 启动实例。您不能对 Windows Server 2008 启用增强联网。已针对 Windows Server 2012 R2 和 Windows Server 2016 及更高版本的 AMI 启用了增强联网功能。Windows Server 2012 R2 包含 Intel 驱动程序 1.0.15.3,我们建议您使用 Pnputil.exe 实用工具将该驱动程序升级到最新版本。

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

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

验证 sriovNetSupport 属性是否已设置。

实例属性 (sriovNetSupport)

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

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

    aws ec2 describe-instance-attribute --instance-id instance_id --attribute sriovNetSupport
  • Get-EC2InstanceAttribute (AWS Tools for Windows PowerShell)

    Get-EC2InstanceAttribute -InstanceId instance-id -Attribute sriovNetSupport
映像属性 (sriovNetSupport)

要检查 AMI 是否设置了增强联网 sriovNetSupport 属性,请使用以下任一命令。如果设置了该属性,则值为 simple

  • describe-images (AWS CLI)

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

    (Get-EC2Image -ImageId ami-id).SriovNetSupport

在实例上启用增强联网

您使用的过程取决于实例的操作系统。

警告

增强联网属性启用之后将无法禁用。

最新的 Amazon Linux HVM AMI 安装有增强联网所需的 ixgbevf 模块,并已设置所需的 sriovNetSupport 属性。因此,如果使用最新的 Amazon Linux HVM AMI 启动实例类型,则已为您的实例启用增强联网。有关更多信息,请参阅测试是否启用了增强联网功能

如果您使用较旧的 Amazon Linux AMI 启动了实例,并且实例尚未启用增强联网,请通过以下步骤启用增强联网。

启用增强联网
  1. 连接到您的 实例。

  2. 从实例运行以下命令以使用最新内核和内核模块 (包括 ixgbevf) 更新实例:

    [ec2-user ~]$ sudo yum update
  3. 使用 Amazon EC2 控制台或以下任一命令从您的本地计算机重启实例:reboot-instances(AWS CLI)、Restart-EC2Instance(AWS Tools for Windows PowerShell)。

  4. 再次连接到您的实例,并使用ixgbevf中的 modinfo ixgbevf 命令验证 测试是否启用了增强联网功能 模块是否已安装并具有推荐的最低版本。

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

    [实例存储支持的实例] 您无法停止实例来修改属性。请跳到下一步。

  6. 使用以下任一命令从本地电脑启用增强联网属性:

    AWS CLI

    modify-instance-attribute (AWS CLI)

    aws ec2 modify-instance-attribute --instance-id instance_id --sriov-net-support simple
    PowerShell

    Edit-EC2InstanceAttribute (AWS Tools for Windows PowerShell)

    Edit-EC2InstanceAttribute -InstanceId instance_id -SriovNetSupport "simple"
  7. (可选) 从实例创建 AMI,如 中所述创建 Amazon EBS-backed AMI 该 AMI 从实例继承增强联网属性。因此,您可以使用此 AMI 启动默认情况下启用了增强联网功能的其他实例。

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

  9. 连接到您的实例,并使用ixgbevf中的 ethtool -i ethn 命令验证是否在网络接口上安装并加载了 测试是否启用了增强联网功能 模块。

启用增强联网(由实例存储支持的实例)

按照上述过程操作,直到您停止实例的步骤。按照创建实例存储支持的 AMI中所述创建新 AMI,确保在注册 AMI 时启用增强联网属性。

AWS CLI

register-image (AWS CLI/AWS CloudShell)

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

Register-EC2Image (AWS Tools for Windows PowerShell)

Register-EC2Image -SriovNetSupport "simple" ...

在开始之前,在您的实例上检查是否已启用增强联网

Quick Start Ubuntu HVM AMI 包含实现增强联网所需的驱动程序。如果您的 ixgbevf 版本早于 2.16.4,则可以安装 linux-aws 内核程序包以获取最新增强的联网功能驱动程序。

以下过程提供了在 Ubuntu 实例上编译 ixgbevf 模块的一般步骤。

安装 linux-aws 内核程序包
  1. 连接到您的 实例。

  2. 更新包缓存和包。

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

    如果在更新过程中系统提示您安装 grub,请使用 /dev/xvda 安装 grub,然后选择保留当前版本的 /boot/grub/menu.lst

在开始之前,在您的实例上检查是否已启用增强联网。最新 Quick Start HVM AMI 包含实现增强联网所需的驱动程序,因此您无需执行其他步骤。

下面的过程提供了在 Amazon Linux 或 Ubuntu 之外的 Linux 发行版上启用 Intel 82599 VF 接口增强联网所需的一般步骤。有关更多信息 (如命令的详细语法、文件位置或包和工具支持),请参阅您的 Linux 发行版的特定文档。

对 Linux 启用增强联网
  1. 连接到您的 实例。

  2. 从 Sourceforge 上的 ixgbevfhttps://sourceforge.net/projects/e1000/files/%20stable/ 位置在实例上下载 ixgbevf 模块的源代码。

    早于 2.16.4 的 ixgbevf 版本 (包括版本 2.14.2) 在某些 Linux 发行版 (包括某些 Ubuntu 版本) 上构建不正确。

  3. 在实例上编译并安装 ixgbevf 模块。

    警告

    如果您为当前内核编译 ixgbevf 模块,然后升级内核而不为新内核重新构建驱动程序,则系统会在下次重新启动时恢复为特定于发行版的 ixgbevf 模块。这可能会在特定于发行版的版本与增强联网不兼容时使您的系统无法访问。

  4. 运行 sudo depmod 命令以更新模块依赖项。

  5. 在实例上更新 initramfs 以确保在启动时加载新模块。

  6. 确定您的系统是否默认使用可预测的网络接口名称。使用 systemdudev 版本 197 或更高版本的系统可以重命名以太网设备,它们不保证单个网络接口将命名为 eth0。此行为可能导致连接到实例时出现问题。要获取更多信息并查看其他配置选项,请参阅 freedesktop.org 网站上的可预测的网络接口名称

    1. 您可以使用以下命令在基于 RPM 的系统上检查 systemdudev 版本:

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

      在以上 Red Hat Enterprise Linux 7 示例中,systemd 版本是 208,因此必须禁用可预测的网络接口名称。

    2. 通过将 net.ifnames=0 选项添加到 GRUB_CMDLINE_LINUX 中的 /etc/default/grub 行,可禁用可预测的网络接口名称。

      [ec2-user ~]$ sudo sed -i '/^GRUB\_CMDLINE\_LINUX/s/\"$/\ net\.ifnames\=0\"/' /etc/default/grub
    3. 重新构建 grub 配置文件。

      [ec2-user ~]$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  7. [由 EBS 支持的实例] 使用 Amazon EC2 控制台或以下任一命令从您的本地计算机停止实例:stop-instances(AWS CLI/AWS CloudShell)、Stop-EC2Instance(AWS Tools for Windows PowerShell)。如果您的实例由 AWS OpsWorks 管理,则应在 AWS OpsWorks 控制台中停止该实例,以便使实例状态保持同步。

    [实例存储支持的实例] 您无法停止实例来修改属性。请跳到下一步。

  8. 使用以下任一命令从本地电脑启用增强联网属性:

    AWS CLI

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

    aws ec2 modify-instance-attribute --instance-id instance_id --sriov-net-support simple
    PowerShell

    Edit-EC2InstanceAttribute (AWS Tools for Windows PowerShell)

    Edit-EC2InstanceAttribute -InstanceId instance_id -SriovNetSupport "simple"
  9. (可选) 从实例创建 AMI,如 中所述创建 Amazon EBS-backed AMI 该 AMI 从实例继承增强联网属性。因此,您可以使用此 AMI 启动默认情况下启用了增强联网功能的其他实例。

    如果您的实例操作系统包含 /etc/udev/rules.d/70-persistent-net.rules 文件,则必须在创建 AMI 之前将其删除。此文件包含原始实例的以太网适配器 MAC 地址。如果其他实例使用此文件启动,操作系统将找不到设备,eth0 会失败,从而导致启动问题。此文件将在下次启动过程中重新生成,从 AMI 启动的任意实例都会创建这个文件的自有版本。

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

  11. (可选) 连接到实例并确认已安装模块。

启用增强联网(由实例存储支持的实例)

按照上述过程操作,直到您停止实例的步骤。按照创建实例存储支持的 AMI中所述创建新 AMI,确保在注册 AMI 时启用增强联网属性。

AWS CLI

register-image (AWS CLI/AWS CloudShell)

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

Register-EC2Image (AWS Tools for Windows PowerShell)

Register-EC2Image -SriovNetSupport "simple" ...

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

重要

要查看 Windows AMI 的最近驱动程序更新,请参阅《AWS Windows AMI 参考》中的 Windows AMI version history

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

  2. [Windows Server 2016 及更高版本] 运行以下 EC2 Launch PowerShell 脚本,以便在安装此驱动程序后配置实例。

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

    当您启用初始化实例 EC2 Launch 脚本时,管理员密码将重置。您可以修改配置文件,通过在初始化任务的设置中指定禁用管理员密码重置来禁用它。

  3. 从实例中,为操作系统下载 Intel 网络适配器驱动程序:

    • Windows Server 2022

      访问下载页面并下载 Wired_driver_version_x64.zip

    • Windows Server 2019(包括服务器版本 1809 及更高版本*)

      访问下载页面并下载 Wired_driver_version_x64.zip

    • Windows Server 2016(包括服务器版本 1803 及更低版本*)

      访问下载页面并下载 Wired_driver_version_x64.zip

    • Windows Server 2012 R2

      访问下载页面并下载 Wired_driver_version_x64.zip

    • Windows Server 2012

      访问下载页面并下载 Wired_driver_version_x64.zip

    • Windows Server 2008 R2

      访问下载页面并下载 PROWinx64Legacy.exe

    * “Intel 驱动程序和软件”页面上未明确说明服务器版本 1803 及更低版本和 1809 及更高版本。

  4. 为操作系统安装 Intel 网络适配器驱动程序。

    • Windows Server 2008 R2

      1. Downloads (下载) 文件夹中,找到 PROWinx64Legacy.exe 文件,并将其重命名为 PROWinx64Legacy.zip

      2. 提取 PROWinx64Legacy.zip 文件内容。

      3. 打开命令行,转到提取的文件夹,然后运行以下命令,以使用 pnputil 实用工具在驱动程序存储中添加和安装 INF 文件。

        C:\> pnputil -a PROXGB\Winx64\NDIS62\vxn62x64.inf
    • Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows Server 2012 R2 和 Windows Server 2012

      1. Downloads (下载) 文件夹中,提取 Wired_driver_version_x64.zip 文件内容。

      2. 在提取的文件夹中,找到 Wired_driver_version_x64.exe 文件,并将其重命名为 Wired_driver_version_x64.zip

      3. 提取 Wired_driver_version_x64.zip 文件内容。

      4. 打开命令行,转到提取的文件夹,然后运行以下命令之一,以使用 pnputil 实用工具在驱动程序存储中添加和安装 INF 文件。

        • Windows Server 2022

          C:\> pnputil -i -a PROXGB\Winx64\WS2022\vxs.inf
        • Windows Server 2019

          C:\> pnputil -i -a PROXGB\Winx64\NDIS68\vxn68x64.inf
        • Windows Server 2016

          C:\> pnputil -i -a PROXGB\Winx64\NDIS65\vxn65x64.inf
        • Windows Server 2012 R2

          C:\> pnputil -i -a PROXGB\Winx64\NDIS64\vxn64x64.inf
        • Windows Server 2012

          C:\> pnputil -i -a PROXGB\Winx64\NDIS63\vxn63x64.inf
  5. 使用以下任一命令从本地电脑启用增强联网属性:

    AWS CLI

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

    aws ec2 modify-instance-attribute --instance-id instance_id --sriov-net-support simple
    PowerShell

    Edit-EC2InstanceAttribute (AWS Tools for Windows PowerShell)

    Edit-EC2InstanceAttribute -InstanceId instance_id -SriovNetSupport "simple"
  6. (可选) 从实例创建 AMI,如 中所述创建 Amazon EBS-backed AMI 该 AMI 从实例继承增强联网属性。因此,您可以使用此 AMI 启动默认情况下启用了增强联网功能的其他实例。

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

对连接问题进行故障排除

如果您在启用增强联网期间丢失连接,则 ixgbevf 模块可能与内核不兼容。请尝试安装用于您的实例的 Linux 发行版所附带的 ixgbevf 模块版本。

如果您为半虚拟化实例或 AMI 启用增强网络,则这可能会使您的实例无法访问。

有关更多信息,请参阅如何在 EC2 实例上启用和配置增强联网?