IDPF ネットワーク インターフェースの使用


C3 や X4 などのマシンシリーズで利用可能なベアメタル インスタンスは、標準化されたマルチベンダー PCIe ネットワーク データプレーン関数デバイスである Infrastructure Data Plane Function(IDPF)を使用します。IDPF は物理デバイスです。IDPF ドライバは、Linux オペレーティング システム(OS)イメージのカーネルに含まれています。

始める前に

  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。

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

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      詳細については、Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。

IDPF でサポートされている機能

gVNIC と同様に、IDPF では次の機能がサポートされています。

IDPF ネットワーク インターフェースの制限事項

IDPF ネットワーク インターフェースを使用する場合は、次の制限事項に注意してください。

  • インスタンスでは、単一の NIC のみがサポートされます。複数の NIC を含むコンピューティング インスタンスを作成することはできません。
  • IDPF を使用するインスタンスで Tier_1 ネットワーキングを有効にする場合は、デフォルトの MTU サイズ(1,460 バイト)を使用して、ネットワーク帯域幅を最大化します。
  • IDPF がサポートするのは、NIC ごとに 16 個の受信キューと送信キュー(RX / TX)を持つデフォルトのキュー割り当てのみです。
  • ベアメタル インスタンスで DPDK を使用する場合、DPDK は IDPF を物理 NIC のドライバとして置き換えます。DPDK アプリケーションは、TAP インターフェースなどを使用して、パケットをカーネルに転送する必要があります。

ベアメタル インスタンスでの IDPF の使用の概要

IDPF を使用するベアメタル インスタンスを作成する手順は次のとおりです。

  1. IDPF をサポートする公開 OS イメージを選択するか、IDPF を使用するようにタグ付けされたカスタム OS イメージを作成します。
  2. 公開 OS イメージまたはカスタム OS イメージを使用して、ベアメタル インスタンスを作成します。インスタンスの作成時に、IDPF を使用するようにネットワーク インターフェースを構成します。
  3. IDPF が有効になっていることを確認します。

オペレーティング システムのサポート

Compute Engine では、IDPF は、サポートされている公開 OS イメージの数が限られています。

IDPF でサポートされているオペレーティング システムについては、オペレーティング システムの [インターフェース] タブをご覧ください。

サポートされていないオペレーティング システムでの使用

IDPF をサポートしていない OS イメージの場合は、オペレーティング システムの販売業者に IDPF ドライバの追加について確認してください。

IDPF を含むオペレーティング システム イメージを取得したら、カスタマイズされたオペレーティング システムを含むブート可能な仮想ディスクをインポートします。その後、カスタム OS イメージを使用して、そのオペレーティング システムで IDPF を使用するベアメタル インスタンスを作成できます。ベアメタル インスタンスで使用するカスタム OS イメージの作成の詳細については、このページの IDPF をサポートするカスタム OS イメージを作成するをご覧ください。

IDPF をサポートするカスタム OS イメージを作成する

ベアメタル インスタンスに Google Cloud で提供されているものとは異なる OS イメージやバージョンが必要な場合は、Google Cloud CLI または REST を使用して OS イメージを作成できます。カスタム OS イメージの作成の詳細とベスト プラクティスについては、カスタム OS イメージを作成するをご覧ください。

gcloud

Google Cloud 提供のイメージまたはインポートした OS イメージからカスタム イメージを作成する場合は、OS イメージに 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 をサポートする特定の OS イメージ。例: sles-15-sp4-sap-v20240208-x86-64

    イメージ ファミリーの最新の OS イメージを使用する場合は、--source-image フラグを --source-image-family フラグに置き換え、その値を IDPF をサポートするイメージ ファミリーに設定します。例: --source-image-family=sles-15-sp4-sap

  • SOURCE_IMAGE_PROJECT: ソース OS イメージまたはイメージ ファミリーを含むプロジェクトの名前。

    Compute Engine sles-15-sp5-sap イメージ ファミリーの最新の OS イメージを使用して SUSE Linux Enterprise Server(SLES)OS イメージを作成するには、次のコマンドを実行します。

    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 をサポートする OS イメージまたはイメージ ファミリーを選択します。詳細については、オペレーティング システムの詳細をご覧ください。

  2. 前の手順で選択した OS イメージまたはイメージ ファミリーを使用して、OS イメージを作成し、この OS イメージに IDPF をタグ付けします。OS イメージを作成するには、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: 使用する特定の OS イメージまたはイメージ ファミリーの URI。

      例:

      • 特定の OS イメージ: "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 はそのファミリー内のサポート対象の最新の OS イメージから VM を作成します。イメージ ファミリーを使用するタイミングについて詳しくは、イメージ ファミリーのベスト プラクティスをご覧ください。

IDPF をサポートするベアメタル インスタンスを作成する

ベアメタル インスタンスは、IDPF をサポートする公開 OS イメージのいずれか、または IDPF をサポートするカスタム OS イメージを作成するの手順で作成したカスタム OS イメージ、を使用して作成できます。

公開 OS イメージを使用してベアメタル インスタンスを作成する

IDPF をサポートする公開 OS イメージを使用してベアメタル インスタンスを作成するには、ベアメタル インスタンスを作成するの手順を行います。

カスタム OS イメージを使用してベアメタル インスタンスを作成する

IDPF をサポートする公開 OS イメージを使用していない場合は、まず IDPF をサポートするカスタム OS イメージを作成する必要があります。次に、そのカスタム OS イメージで、Google Cloud CLI または REST を使用してベアメタル インスタンスを作成します。

gcloud

  1. gcloud compute instances create コマンドを使用して、ベアメタル インスタンスを作成します。ブートディスク イメージには、先ほど作成したカスタム OS イメージを指定します。ネットワーク インターフェースについては、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: 以前に作成したカスタム OS イメージ。
    • YOUR_IMAGE_PROJECT: カスタム OS イメージを含むプロジェクトの名前。
  2. 省略可: Compute Engine によってインスタンスが作成され、nicTypeIDPF に設定されていることを確認します。

    gcloud compute instances describe INSTANCE_NAME \
       --zone=ZONE
    

    次のように置き換えます。

    • INSTANCE_NAME: インスタンスの名前。
    • ZONE: インスタンスを作成したゾーン。

    プロジェクト my-project-12345 にある my-sles15sp5-metal-os という名前のカスタマイズされた SLES 15 SP5 for SAP OS イメージを使用して、ゾーン eu-west4-b にベアメタル インスタンスを作成するには、次のコマンドを実行します。

    gcloud compute instances create test-x4-metal-custom-os \
        --zone=eu-west4-b \
        --machine-type=x4-megamem-1440-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 メソッドを使用して、ベアメタル インスタンスを作成します。

  • ブートディスク イメージには、先ほど作成したカスタム OS イメージを指定します。
  • ネットワーク インターフェースについては、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: このインスタンスのネットワーク リソースの URL。ネットワークもサブネットワークも指定しない場合、デフォルトのネットワーク global/networks/default が使用されます。
  • SUBNET_NAME: サブネットの名前。ネットワークは指定したサブネットから推測されます。このフィールドは省略できます。
  • YOUR_IMAGE_PROJECT: OS イメージを含むプロジェクトの名前。
  • IMAGE_NAME: 前の手順で作成したカスタム OS イメージの名前。

IDPF が有効になっていることを確認する

lshw ツールを使用すると、ベアメタル インスタンスのハードウェア構成に関する詳細情報を抽出できます。

Linux インスタンスに lshw ツールをインストールするには、ゲスト OS に 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

次のステップ