Using the IDPF network interface Stay organized with collections Save and categorize content based on your preferences.
Bare metal instances available with machine series such as C3 and X4 useInfrastructure Data Plane Function (IDPF),which is a standardized, multi-vendor PCIe network data plane function device.IDPF is a physical device. The IDPF driver is included in the kernel of Linuxoperating system (OS) images.
Before you begin
- If you haven't already, set upauthentication. Authentication verifies your identity for access to Google Cloud services and APIs. To run code or samples from a local development environment, you can authenticate to Compute Engine by selecting one of the following options:
Select the tab for how you plan to use the samples on this page:
gcloud
Install the Google Cloud CLI. After installation,initialize the Google Cloud CLI by running the following command:
gcloudinit
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
Note: If you installed the gcloud CLI previously, make sure you have the latest version by runninggcloud components update.- Set a default region and zone.
REST
To use the REST API samples on this page in a local development environment, you use the credentials you provide to the gcloud CLI.
Install the Google Cloud CLI. After installation,initialize the Google Cloud CLI by running the following command:
gcloudinit
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
Note: If you installed the gcloud CLI previously, make sure you have the latest version by runninggcloud components update.For more information, seeAuthenticate for using REST in the Google Cloud authentication documentation.
Supported features with IDPF
Similar to gVNIC, the following features are supported with IDPF:
- Per VM Tier_1 networking performance
- Large MTU support (Jumbo Frames)
- VPC network features:
- Cloud Next Generation Firewall
- Packet mirroring
- VPC Flow Logs
- IPv6 support
- VPC Network Peering
- Network Connectivity Center
Limitations of the IDPF network interface
When using the IDPF network interface, note the following limitations:
- Only a single NIC is supported for the instance. You can't create a computeinstance with multiple NICs.
- IDPF only supports the default queue allocation with 16Receive and transmit queues (RX/TX)per NIC.
- If you useDPDK with a bare metalinstance, DPDK replaces the IDPF as the driver for the physical NIC. The DPDKapplication must forward packets to the kernel, such as through aTAP interface.
Overview of using IDPF with bare metal instances
To create a bare metal instance that uses IDPF, complete the following steps:
- Choose apublic OS image thatsupports IDPF, or create a custom OS image that is tagged to use IDPF.
- Create a bare metal instance using the public or custom OS image. Duringinstance creation, configure the network interface to use IDPF.
- Verify that IDPF is enabled.
Operating system support
On Compute Engine, IDPF is available with a limited number ofsupported public OS images.
For information about which operating systems are supported with IDPF, see theInterfaces tab for anoperating system.
Use on non-supported operating systems
For OS images that don't support IDPF, check with the operating systemdistributor about including the IDPF driver.
After you get an operating system image that includes IDPF,import a bootable virtual diskthat contains the customized operating system. You can then use the custom OSimage to create bare metal instances that use IDPF on that operating system.For more information about creating a custom OS image for use with bare metalinstances, seeCreate a custom OS image that supports IDPF on thispage.
Create a custom OS image that supports IDPF
If you require a different OS image or version for your bare metal instancethan those provided by Google Cloud, you can create the OS image using eithertheGoogle Cloud CLI orREST. For detailedinformation and best practices for creating custom OS images, seeCreate custom OS images.
gcloud
When creating the custom image, either from a Google Cloud provided imageor an imported OS image, you must tag the OS image withIDPF. Use thegcloud compute images create commandas shown in the following example:
gcloud compute images createIMAGE_NAME \ --source-image=SOURCE_IMAGE \ --source-image-project=SOURCE_IMAGE_PROJECT \ --guest-os-features=IDPF
Replace the following:
IMAGE_NAME: a name for the custom image.SOURCE_IMAGE: a specific OS image thatsupports IDPF, for example:sles-15-sp4-sap-v20240208-x86-64.If you want to use the latest OS image in animage family, replace the
--source-imageflag with the--source-image-familyflag and setits value to an image family that supports IDPF, for example:--source-image-family=sles-15-sp4-sap.SOURCE_IMAGE_PROJECT: the name of the projectthat contains the source OS image or image family.Example
To create a SUSE Linux Enterprise Server (SLES) OS image using thelatest OS image from the Compute Engine
sles-15-sp5-sapimage family, run the following command: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
For more information about when to use image families, seeImage family best practices.
REST
Select an OS image or image family that supports IDPFFor more information, seeOperating system details.
Using the OS image or image family selected in the previous step, createan OS image and tag this OS image with
IDPF. To create the OS image,use theimages.insertmethod.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images{ "name":"IMAGE_NAME", "sourceImage":"SOURCE_IMAGE_URI", "guestOsFeatures":[ { "type":"IDPF" } ]}Replace the following:
IMAGE_NAME: a name for the custom image thatyou are creating.SOURCE_IMAGE_URI: the URI for the specificOS image or image family that you want to use.For example:
- Specific OS image:
"sourceImage": "projects/suse-sap-cloud/global/images/sles-15-sp5-sap-v20240427-x86-64" - Image family:
"sourceImage": "projects/suse-sap-cloud/global/images/family/sles-15-sp5-sap".
When you specify an image family, Compute Engine creates a VMfrom the most recent, non-deprecated OS image in that family. Formore information about when to use image families, seeImage family best practices.
- Specific OS image:
Create a bare metal instance with IDPF support
You can create a bare metal instance using one of thepublic OS images that supportsIDPF or using a custom OS image that you created using the steps inCreate a custom OS image that supports IDPF.
Create a bare metal instance using a public OS image
To create a bare metal instance using a public OS image that supports IDPF,follow the instructions atCreate a bare metal instance.
Create a bare metal instance using a custom OS image
If you aren't using a public OS image that supports IDPF, youmust firstcreate a custom OS image that supports IDPF.You then use that custom OS image to create a bare metal instance by usingtheGoogle Cloud CLI orREST.
gcloud
Create the bare metal instance by using the
gcloud compute instances createcommand.For the boot disk image, specify the custom OS image that you createdearlier. For the network interface, set the value of thenic-typeflagtoIDPF.gcloud compute instances createINSTANCE_NAME \ --zone=ZONE \ --image=IMAGE_NAME \ --image-project=YOUR_IMAGE_PROJECT \ --network-interface=nic-type=IDPF
Replace the following:
INSTANCE_NAME: a name for the new instance.ZONE: the zone to create the instance in.IMAGE_NAME: the custom OS image that wascreated previously.YOUR_IMAGE_PROJECT: the name of the projectthat contains the custom OS image.
Optional: Verify that Compute Engine created the instance and that the
nicTypeis set toIDPF.gcloud compute instances describeINSTANCE_NAME \ --zone=ZONE
Replace the following:
INSTANCE_NAME: the name of the instance.ZONE: the zone that you created the instance in.
Example
To create a bare metal instance in zone
eu-west4-busing a customizedSLES 15 SP5 for SAP OS image namedmy-sles15sp5-metal-osthat's inprojectmy-project-12345, run the following command:gcloud compute instances createtest-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
Things to consider
The
--network-interfaceflag has sub-level flags such as thefollowing:--address: Assign an IP address to the instance--network: The network the interface is to be a part of--network-tier: The network tier of the interface--subnet: The subnet that the interface is to be part of. If--networkis also specified, the subnet must be a part of the specified network.--private-network-ip: Specify the RFC 1918 IP to assign to theinstance.
For a full list see, the
Note: When enabling IDPF, if you need to set any of these sub-levelflags, you must specify these as a comma separated list to the--network-interfaceflag.--network-interfaceflag. For example,-network-interface=subnet=SUBNET_NAME,nic-type=IDPF.
REST
Create the bare metal instance by using theinstances.insert method.
- For the boot disk image, specify the custom OS image that you createdearlier.
- For the network interface, set the value of the
nicTypefield toIDPF.
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 } ]}Replace the following:
PROJECT_ID: the ID of the project to createthe instance in.ZONE: the zone to create the instance in.INSTANCE_NAME: a name for the new instance.NETWORK: the URL of the network resource forthis instance. If neither the network nor the subnetwork is specified,the default networkglobal/networks/defaultis used.SUBNET_NAME: name of the subnet. The networkis inferred from the specified subnet. This is an optional field.YOUR_IMAGE_PROJECT: the name of your projectthat contains the OS image.IMAGE_NAME: the name of the custom OS imagethat was created in the previous step.
Verify that IDPF is enabled
You can use thelshw tool to extract detailed information about thehardware configuration of the bare metal instance.
To install thelshw tool on your Linux instance, open an SSH connectionto the guest OS, and then run the following command:
sudo apt-get install lshw -y
To determine whether the instance is using the IDPF network interface, run thefollowing command:
sudo lshw -class network
The following shows an example of the output:
*-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=yesdriver=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
What's next
- Learn more aboutIDPF.
- Learn how toconnect to your instance.
- Learn aboutjumbo frames.
- Learn how tochange the MTU setting of a VPC network.
Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2026-02-19 UTC.