使用 IDPF 网络接口

机器系列(例如 C3 和 X4)提供的 Bare Metal 实例使用基础设施数据平面函数 (IDPF),这是一种标准化的多供应商 PCIe 网络数据平面函数设备。IDPF 是一种实体设备。IDPF 驱动程序包含在 Linux 操作系统 (OS) 映像的内核中。

准备工作

  • 如果您尚未设置身份验证,请进行设置。身份验证用于验证您的身份,以便访问 Google Cloud 服务和 API。如需从本地开发环境运行代码或示例,您可以通过选择以下选项之一向 Compute Engine 进行身份验证:

    Select the tab for how you plan to use the samples on this page:

    gcloud

    1. 安装 Google Cloud CLI。 安装完成后,运行以下命令来初始化 Google Cloud CLI:

      gcloud init

      如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。

    2. Set a default region and zone.

    REST

    如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭证。

      安装 Google Cloud CLI。 安装完成后,运行以下命令来初始化 Google Cloud CLI:

      gcloud init

      如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。

    如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。

IDPF 支持的功能

与 gVNIC 类似,IDPF 支持以下功能:

IDPF 网络接口的限制

使用 IDPF 网络接口时,请注意以下限制:

  • 实例只支持一个网卡。不能创建具有多个网卡的计算实例。
  • IDPF 只支持默认队列分配,每个 NIC 有 16 个接收和发送队列 (RX/TX)。
  • 如果您将 DPDK 用于裸金属实例,则 DPDK 会替换 IDPF 作为物理 NIC 的驱动程序。DPDK 应用必须将数据包转发到内核,例如通过 TAP 接口转发。

概览:将 IDPF 用于裸金属实例

如需创建使用 IDPF 的裸金属实例,请完成以下步骤:

  1. 选择一个支持 IDPF 的公共操作系统映像,或创建一个标记为使用 IDPF 的自定义操作系统映像。
  2. 使用公共或自定义操作系统映像创建裸金属实例。在创建实例期间,将网络接口配置为使用 IDPF。
  3. 验证 IDPF 是否已启用。

操作系统支持

在 Compute Engine 上,IDPF 适用于数量有限的受支持公共操作系统映像。

如需了解 IDPF 支持哪些操作系统,请参阅操作系统的接口标签页。

在不支持的操作系统上使用

对于不支持 IDPF 的操作系统映像,请与操作系统发行方联系,以了解如何添加 IDPF 驱动程序。

获取包含 IDPF 的操作系统映像后,导入包含自定义操作系统的可启动虚拟磁盘。然后,您可以使用自定义操作系统映像创建在该操作系统上使用 IDPF 的裸金属实例。如需详细了解如何创建用于 Bare Metal 实例的自定义操作系统映像,请参阅本页面上的创建支持 IDPF 的自定义操作系统映像。

创建支持 IDPF 的自定义操作系统映像

如果您需要为裸金属实例使用与 Google Cloud提供的不同的操作系统映像或版本,可以使用 Google Cloud CLI 或 REST 创建操作系统映像。如需了解创建自定义操作系统映像的详细信息和最佳实践,请参阅创建自定义操作系统映像。

gcloud

创建自定义映像时,无论是通过 Google Cloud 提供的映像还是通过导入的操作系统映像,您都必须使用 IDPF 标记操作系统映像。如以下示例所示运行 gcloud compute images create 命令:

gcloud compute images create IMAGE_NAME \
    --source-image=SOURCE_IMAGE \
    --source-image-project=SOURCE_IMAGE_PROJECT \
    --guest-os-features=IDPF

请替换以下内容:

  • IMAGE_NAME:自定义映像的名称。
  • SOURCE_IMAGE:支持 IDPF 的特定操作系统映像,例如:sles-15-sp4-sap-v20240208-x86-64。

    如果您要使用映像系列中的最新操作系统映像,请将 --source-image 标志替换为 --source-image-family 标志,并将其值设置为支持 IDPF 的映像系列,例如 --source-image-family=sles-15-sp4-sap。

  • SOURCE_IMAGE_PROJECT:包含来源操作系统映像或映像系列的项目的名称。

    示例

    如需使用 Compute Engine sles-15-sp5-sap 映像系列中的最新操作系统映像创建 SUSE Linux Enterprise Server (SLES) 操作系统映像,请运行以下命令:

    gcloud compute images create my-sles15sp5-metal-os \
      --source-image-family=sles-15-sp5-sap \
      --source-image-project=suse-sap-cloud \
      --guest-os-features=IDPF
    

    如需详细了解何时使用映像系列,请参阅映像系列最佳实践。

REST

  1. 选择支持 IDPF 的操作系统映像或映像系列。如需了解详情,请参阅操作系统详细信息。

  2. 使用上一步中所选操作系统映像或映像系列创建操作系统映像并使用 IDPF 标记此操作系统映像。如需创建操作系统映像,请使用 images.insert 方法。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images
    {
     "name":"IMAGE_NAME",
     "sourceImage":"SOURCE_IMAGE_URI",
     "guestOsFeatures":[
      {
         "type":"IDPF"
       }
     ]
    }
    

    请替换以下内容:

    • IMAGE_NAME:您要创建的自定义映像的名称。
    • SOURCE_IMAGE_URI:您要使用的特定操作系统映像或映像系列的 URI。

      例如:

      • 特定操作系统映像:"sourceImage": "projects/suse-sap-cloud/global/images/sles-15-sp5-sap-v20240427-x86-64"
      • 映像系列:"sourceImage": "projects/suse-sap-cloud/global/images/family/sles-15-sp5-sap"

      指定映像系列时,Compute Engine 会根据该系列中最新的未弃用操作系统映像创建虚拟机。如需详细了解何时使用映像系列,请参阅映像系列最佳实践。

创建支持 IDPF 的裸金属实例

如需创建裸金属实例,您可以使用支持 IDPF 的公共操作系统映像之一,也可以使用按照创建支持 IDPF 的自定义操作系统映像中的步骤创建的自定义操作系统映像。

使用公共操作系统映像创建裸金属实例

如需使用支持 IDPF 的公共操作系统映像创建裸金属实例,请按照创建裸金属实例中的说明操作。

使用自定义操作系统映像创建裸金属实例

如果您没有使用支持 IDPF 的公共操作系统映像,则必须先创建支持 IDPF 的自定义操作系统映像。然后,您可以通过该自定义操作系统映像,使用 Google Cloud CLI 或 REST 创建裸金属实例。

gcloud

  1. 使用 gcloud compute instances create 命令创建裸金属实例。对于启动磁盘映像,请指定您之前创建的自定义操作系统映像。对于网络接口,请将 nic-type 标志的值设置为 IDPF。

    gcloud compute instances create INSTANCE_NAME \
        --zone=ZONE \
        --image=IMAGE_NAME \
        --image-project=YOUR_IMAGE_PROJECT \
        --network-interface=nic-type=IDPF
    

    请替换以下内容:

    • INSTANCE_NAME:新实例的名称。
    • ZONE:要在其中创建实例的可用区。
    • IMAGE_NAME:之前创建的自定义操作系统映像。
    • YOUR_IMAGE_PROJECT:包含自定义操作系统映像的项目的名称。
  2. 可选:验证 Compute Engine 是否已创建实例并且 nicType 设置为 IDPF。

    gcloud compute instances describe INSTANCE_NAME \
       --zone=ZONE
    

    请替换以下内容:

    • INSTANCE_NAME:实例的名称。
    • ZONE:您在其中创建实例的可用区。

    示例

    如需使用项目 my-project-12345 中名为 my-sles15sp5-metal-os 的自定义 SLES 15 SP5 for SAP 操作系统映像在可用区 eu-west4-b 中创建裸金属实例,请运行以下命令:

    gcloud compute instances create test-x4-metal-custom-os \
        --zone=eu-west4-b \
        --machine-type=x4-1440-24t-metal \
        --image=my-sles15sp5-metal-os \
        --image-project=my-project-12345 \
        --network-interface=nic-type=IDPF
    

    需要考虑的事项

    --network-interface 标志具有如下所示的子级标志:

    • --address:为实例分配 IP 地址
    • --network:接口将属于的网络
    • --network-tier:接口的网络层级
    • --subnet:接口将属于的子网。如果还指定了 --network,则子网必须是指定网络的一部分。
    • --private-network-ip:指定要分配给实例的 RFC 1918 IP。

    如需查看完整列表,请参阅 --network-interface 标志。

REST

使用 instances.insert 方法创建裸金属实例。

  • 对于启动磁盘映像,请指定您之前创建的自定义操作系统映像。
  • 对于网络接口,请将 nicType 字段的值设置为 IDPF。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  "name":"INSTANCE_NAME",
  "networkInterfaces":[
    {
      "nicType":"IDPF",
      "network":"NETWORK",
      "subnet":"SUBNET_NAME"
    }
  ],
  "disks":[
    {
      "initializeParams":{
        "sourceImage":"projects/YOUR_IMAGE_PROJECT/global/images/IMAGE_NAME"
      },
      "boot":true
    }
  ]
}

请替换以下内容:

  • PROJECT_ID:要在其中创建实例的项目的 ID。
  • ZONE:要在其中创建实例的可用区。
  • INSTANCE_NAME:新实例的名称。
  • NETWORK:此实例的网络资源网址。如果网络或子网都未指定,则使用默认网络 global/networks/default。
  • SUBNET_NAME:子网的名称。网络是根据指定的子网推断出来的。这是一个可选字段。
  • YOUR_IMAGE_PROJECT:包含操作系统映像的项目的名称。
  • IMAGE_NAME:上一步中创建的自定义操作系统映像的名称。

验证 IDPF 是否已启用

您可以使用 lshw 工具提取有关 Bare Metal 实例硬件配置的详细信息。

如需在 Linux 实例上安装 lshw 工具,请打开与客机操作系统的 SSH 连接,然后运行以下命令:

sudo apt-get install lshw -y

如需确定实例是否正在使用 IDPF 网络接口,请运行以下命令:

sudo lshw -class network

下面展示了输出示例:

*-network
       description: Ethernet interface
       product: Intel Corporation
       vendor: Intel Corporation
       physical id: 0
       bus info: pci@0000:05:00.0
       logical name: enp5s0f0
       version: 11
       serial: 42:01:0a:96:00:02
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi msix pciexpress bus_master cap_list ethernet physical
       configuration: autonegotiation=off broadcast=yes driver=idpf driverversion=6.5.0-1023-gcp duplex=full ip=10.150.0.2 latency=0 link=yes multicast=yes
       resources: iomemory:21ff0-21fef iomemory:21ff0-21fef irq:16 memory:21ffe0000000-21ffefffffff memory:21fff2000000-21fff203ffff

后续步骤