Google 虚拟 NIC (gVNIC) 是专为 Compute Engine 设计的虚拟网络接口。gVNIC 是基于 virtIO 的以太网驱动程序的替代方案。
作为接替 VirtIO 的下一代网络接口,gVNIC 取代了 VirtIO-Net,成为所有新机器类型(第 3 代及更高版本)在 Compute Engine 中唯一支持的网络接口。较新的机器系列和网络功能需要使用 gVNIC 而不是 VirtIO。将 gVNIC 作为新型 I/O 接口与 Compute Engine 虚拟机搭配使用具有以下优势:
- 提供更好的性能。
- 通过减少“相邻用户争用”问题来提高一致性。
- 引入 VirtIO 无法提供的新网络功能。
所有机器系列、机器类型和世代都支持 gVNIC,建议使用。
需要使用 gVNIC 才能实现以下最大带宽速度:
- 支持每个虚拟机 Tier_1 网络性能的虚拟机具有 50 到 200 Gbps 带宽
- 挂接了 GPU 的虚拟机具有 50 到 1,800 Gbps 带宽
对于机密虚拟机实例、第三代或更高版本的机器系列虚拟机以及在 Arm CPU 平台上运行的虚拟机,您必须使用 gVNIC 作为网络接口。
准备工作
- 如果您将 gVNIC 与 Windows Server 2022 或 Windows 11 虚拟机搭配使用,请将 gVNIC 驱动程序更新为 GooGet 软件包版本
1.0.0@45
或更高版本,以提高网络吞吐量。如需了解详情,请参阅已知问题。 -
设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以按如下方式向 Compute Engine 进行身份验证。
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- 操作系统映像不包含 gVNIC 驱动程序
- 操作系统映像没有最新 gVNIC 驱动程序版本
- 对于 Linux 虚拟机,请参阅 Linux 内核驱动程序 Compute Engine 虚拟以太网。
- 对于在 FreeBSD 上运行的虚拟机,请参阅 Compute Engine 虚拟以太网 FreeBSD 驱动程序。
- 对于 Windows 虚拟机,请参阅适用于 Compute Engine 虚拟以太网的 Windows 驱动程序。
- 不支持大型接收分流 (LRO)。对于使用 gVNIC 的虚拟机,系统会默认启用通用接收分流 (GRO)。
- Windows 11 或 Windows Server 2022 虚拟机不支持大型发送分流版本 2 (LSOV2)。gVNIC 驱动程序版本
1.0.0@45
及更高版本会停用 LSOV2。如需了解如何在 Microsoft Windows 上检查和更新虚拟机的 gVNIC 驱动程序,请参阅已知问题。 - 选择支持 gVNIC 的公共操作系统映像,或创建一个标记为使用 gVNIC 的自定义操作系统映像。
- 使用公共操作系统映像或自定义操作系统映像创建虚拟机。在创建虚拟机期间,将网络接口配置为使用 gVNIC。
- 验证是否已启用 gVNIC。
选择支持 gVNIC 的操作系统映像或映像系列。如需了解详情,请参阅操作系统详细信息。
使用上一步中所选操作系统映像或映像系列创建自定义操作系统映像并使用
GVNIC
标记此操作系统映像。如需创建自定义操作系统映像,请使用gcloud compute images create
命令。例如,以下命令会创建支持 gVNIC 且基于特定操作系统映像的自定义操作系统映像。gcloud compute images create IMAGE_NAME \ --source-image=SOURCE_IMAGE \ --source-image-project=SOURCE_IMAGE_PROJECT \ --guest-os-features=GVNIC
请替换以下内容:
IMAGE_NAME
:您要创建的映像的名称SOURCE_IMAGE
:支持 gVNIC 的特定操作系统映像,例如rocky-linux-8-optimized-gcp-v20220719
如果要使用映像系列中的最新操作系统映像,请将
--source-image
标志替换为--source-image-family
标志,并将其值设置为支持 gVNIC 的映像系列。例如:--source-image-family=rocky-linux-8-optimized-gcp
。SOURCE_IMAGE_PROJECT
:包含来源操作系统映像或映像系列的项目的名称
示例
如需使用 Compute Engine
rocky-linux-8-optimized-gcp
映像系列中的最新操作系统映像创建 Rocky Linux 8 Optimized for Google Cloud 操作系统映像,请运行以下命令:gcloud compute images create IMAGE_NAME \ --source-image-family=rocky-linux-8-optimized-gcp \ --source-image-project=rocky-linux-cloud \ --guest-os-features=GVNIC
如需详细了解何时使用映像系列,请参阅映像系列最佳实践。
选择支持 gVNIC 的操作系统映像或映像系列。如需了解详情,请参阅操作系统详细信息。
使用上一步中所选操作系统映像或映像系列创建操作系统映像并使用
GVNIC
标记此操作系统映像。如需创建操作系统映像,请使用images.insert
方法。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images { "name":"IMAGE_NAME", "sourceImage":"SOURCE_IMAGE_URI", "guestOsFeatures":[ { "type":"GVNIC" } ] }
请替换以下内容:
PROJECT_ID
:要在其中创建新映像的项目的 IDIMAGE_NAME
:自定义映像的名称SOURCE_IMAGE_URI
:您要使用的特定操作系统映像或映像系列的 URI例如:
- 特定操作系统映像:
"sourceImage": "projects/rocky-linux-cloud/global/images/rocky-linux-8-optimized-gcp-v20220719"
- 映像系列:
"sourceImage": "projects/rocky-linux-cloud/global/images/family/rocky-linux-8-optimized-gcp"
指定映像系列时,Compute Engine 会根据该系列中最新的未弃用操作系统映像创建虚拟机。如需详细了解何时使用映像系列,请参阅映像系列最佳实践。
- 特定操作系统映像:
在 Google Cloud 控制台中,转到创建实例页面。
输入虚拟机实例的名称。
选择要在其中创建虚拟机的可用区。
在启动磁盘部分,点击更改。
在启动磁盘面板的自定义映像标签页上,完成以下操作:
- 选择包含您之前创建的操作系统映像的源项目。
- 从映像下拉菜单中选择相应映像。
- 点击选择。
如需将 gVNIC 设置为网络接口,请展开高级选项部分,然后执行以下操作:
- 展开网络部分。
- 对于网络接口卡,选择
gVNIC
。
根据需要进行其他虚拟机自定义。
点击创建以创建虚拟机实例。
使用
gcloud compute instances create
命令创建虚拟机。对于启动磁盘,请指定您之前创建的自定义操作系统映像。 对于网络接口,请将nic-type
标志的值设置为GVNIC
。gcloud compute instances create VM_NAME \ --zone=ZONE \ --machine-type=MACHINE_TYPE \ --image=IMAGE_NAME \ --image-project=YOUR_IMAGE_PROJECT \ --network-interface=nic-type=GVNIC
请替换以下内容:
VM_NAME
:新虚拟机的名称。ZONE
:要在其中创建虚拟机的可用区。MACHINE_TYPE
:创建虚拟机实例时要使用的机器类型。如果未指定机器类型,则默认值为n1-standard-1
。IMAGE_NAME
:上一步中创建的操作系统映像。YOUR_IMAGE_PROJECT
:包含操作系统映像的项目的名称。
可选:验证 Compute Engine 是否已创建虚拟机,并将
nicType
设置为GVNIC
。gcloud compute instances describe VM_NAME \ --zone=ZONE
替换以下内容:
VM_NAME
:虚拟机的名称。ZONE
:您在其中创建虚拟机的可用区。
示例
如需使用项目
my-project-12345
中名为my-gvnic-rocky8
的操作系统映像在可用区us-west1-b
中创建具有n1-standard-1
机器类型的 Rocky Linux 8 虚拟机,请运行以下命令:gcloud compute instances create my-rocky-linux-vm \ --zone=us-west1-b \ --image=my-gvnic-rocky8 \ --image-project=my-project-12345 \ --network-interface=nic-type=GVNIC
需要考虑的事项
--network-interface
标志具有如下所示的子级标志:--address
:为虚拟机分配 IP 地址--network
:接口将属于的网络--network-tier
:接口的网络层级--subnet
:接口将属于的子网。如果还指定了--network
,则子网必须是指定网络的一部分。--private-network-ip
:指定要分配给虚拟机的 RFC 1918 IP。
如需查看完整列表,请参阅
--network-interface
标志。- 对于启动磁盘,请指定您之前创建的自定义操作系统映像。
- 对于网络接口,请将
nicType
字段的值设置为GVNIC
。 PROJECT_ID
:要在其中创建虚拟机的项目的 ID。ZONE
:要在其中创建虚拟机的可用区。VM_NAME
:新虚拟机的名称。NETWORK
:此虚拟机的网络资源网址。如果网络或子网都未指定,则使用默认网络global/networks/default
。SUBNET_NAME
:子网的名称。网络是根据指定的子网推断出来的。这是一个可选字段。YOUR_IMAGE_PROJECT
:包含操作系统映像的项目的名称。IMAGE_NAME
:上一步中创建的操作系统映像。- 在 Windows 虚拟机实例上,打开设备管理器。
- 在网络适配器下,您应该会看到:
"Google Ethernet Adapter"
- 连接到您的实例。
- 向新实例添加永久性磁盘。
- 配置每个虚拟机的 Tier_1 网络性能。
- 更改 VPC 网络的 MTU 设置。
- 了解巨型帧。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
价格
如需查看 Tier_1 网络的最新价格,请参阅虚拟机实例价格页面。
如需查看可用于查找价格信息的其他方法的列表,请参阅 Compute Engine 价格。
操作系统支持
在 Compute Engine 上,您可以选择在任何受支持的公共操作系统 (OS) 映像上使用 gVNIC。在以下情况下,您可以手动安装 gVNIC 驱动程序:
如需了解支持的操作系统,请查看操作系统的接口标签页。另请查看 Networking features(网络功能)标签页以获得网络功能支持。
在不支持的操作系统上使用
对于支持 gVNIC 但不包含最新版本 gVNIC 驱动程序的操作系统映像,您可以从 GitHub 下载最新的驱动程序版本。
您可以在 Linux 或 Windows 虚拟机上手动配置并安装最新版本的 gVNIC 驱动程序。
将虚拟机中的操作系统更新为使用 gVNIC 后,请基于该操作系统映像创建自定义操作系统映像。然后,您可以使用自定义操作系统映像在该操作系统上创建使用 gVNIC 的其他虚拟机。如需详细了解如何使用自定义操作系统映像创建虚拟机,请参阅本页面上的创建支持 gVNIC 的自定义操作系统映像。
按照以下步骤手动配置和安装最新版本的 gVNIC 驱动程序。
限制
将 gVNIC 与 Compute Engine 虚拟机搭配使用的概览
如需创建使用 gVNIC 的虚拟机,请完成以下步骤:
如果您遇到任何问题,请参阅为 Google 虚拟 NIC 进行问题排查。
创建支持 gVNIC 的自定义操作系统映像
您可以使用 Google Cloud CLI 或 REST 创建操作系统映像。如需了解创建自定义操作系统映像的详细信息和最佳实践,请参阅创建自定义操作系统映像。
gcloud
REST
创建支持 gVNIC 的虚拟机
您可以使用其中一个支持的公共操作系统映像或使用您按照创建支持 gVNIC 的自定义操作系统映像中的步骤创建的自定义操作系统映像来创建虚拟机。
(可选)您可以在虚拟机上启用 DPDK,以加快网络数据包处理、缩短延迟时间并确保一致的性能。
对于支持多个网络接口 (NIC) 的虚拟机,您可以将不同类型的 NIC 挂接到虚拟机,因为接口支持是按 NIC 配置的。虽然支持此功能,但我们不建议采用此设置。对于支持多个 NIC 的虚拟机,请确保在创建虚拟机时为每个网络接口指定
nic-type=GVNIC
。使用公共操作系统映像创建虚拟机
如需使用支持 gVNIC 的公共操作系统映像创建虚拟机,请按照创建具有高带宽配置的虚拟机和容器中的说明操作。
使用自定义操作系统映像创建虚拟机
如果您没有使用支持 gVNIC 的公共操作系统映像,则必须先创建支持 gVNIC 的自定义操作系统映像。然后,您可使用该自定义操作系统映像,通过 Google Cloud 控制台、Google Cloud CLI 或 REST 创建虚拟机。
控制台
gcloud
REST
使用
instances.insert
方法创建虚拟机。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name":"VM_NAME", "networkInterfaces":[ { "network":"NETWORK", "nicType":"GVNIC", "subnet":"SUBNET_NAME" } ], "disks":[ { "initializeParams":{ "sourceImage":"projects/YOUR_IMAGE_PROJECT/global/images/IMAGE_NAME" }, "boot":true } ] }
请替换以下内容:
验证是否已启用 gVNIC
Linux
您可以使用
lshw
工具提取有关虚拟机硬件配置的详细信息。如需在 Linux 虚拟机实例上安装
lshw
工具,请打开与虚拟机的 SSH 连接,然后运行以下命令:sudo apt-get install lshw -y
如需确定虚拟机是否在使用 gVNIC 网络接口,请运行以下命令:
sudo lshw -class network
输出类似以下内容:
*-network description: Ethernet interface product: Compute Engine Virtual Ethernet [gVNIC] vendor: Google, Inc. physical id: 3 bus info: pci@0000:00:03.0 logical name: ens3 version: 00 serial: 42:01:0a:80:00:6f width: 32 bits clock: 33MHz capabilities: msix bus_master cap_list ethernet physical configuration: autonegotiation=off broadcast=yes driver=gve driverversion=1.0.0 duplex=full ip=10.128.0.111 latency=0 link=yes multicast=yes port=twisted pair resources: irq:11 memory:c0203000-c0203fff memory:c0200000-c02000ff memory:c0100000-c01fffff
Windows
问题排查
如需排查 gVNIC 问题,请参阅排查 Google 虚拟 NIC 问题。
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-10-04。
-