多个网络接口
本页面简要介绍了 Compute Engine 虚拟机实例的多个网络接口。具有多个网络接口的实例称为多 NIC 实例。
实例始终至少具有一个虚拟网络接口 (vNIC)。根据机器类型,您可以配置其他网络接口。
使用场景
多 NIC 实例适用于以下场景:
连接到单独 VPC 网络中的资源:多 NIC 实例可以连接到位于不同 VPC 网络(未通过 VPC 网络对等互连或 Network Connectivity Center 相互连接)中的资源。
由于多 NIC 实例的每个接口都在单独的 VPC 网络中,因此您可以将每个接口用于唯一的用途。例如,您可以使用某些接口在承载生产流量的 VPC 网络之间路由数据包,并将另一个接口用于管理或配置用途。
在每个多 NIC 实例的客机操作系统中,您必须配置路由政策和本地路由表。
在 VPC 网络之间路由数据包:多 NIC 实例可用作路由的下一个跃点,以连接两个或更多 VPC 网络。
在多 NIC 实例的客机操作系统中运行的软件可以执行数据包检查、网络地址转换 (NAT) 或其他网络安全功能。
使用多 NIC 实例连接 VPC 网络时,最佳实践是配置两个或更多个多 NIC 实例,并将它们用作每个 VPC 网络中内部直通式网络负载均衡器的后端。如需了解详情,请参阅“内部直通式网络负载均衡器作为下一个跃点”文档中的应用场景。
您还可以使用具有 Private Service Connect 接口的多 NIC 实例来连接不同项目中的服务提供方和使用方网络。
网络接口类型
Google Cloud 支持以下类型的网络接口:
vNICs:Compute Engine 实例的虚拟网络接口。每个实例必须至少有一个 vNIC。常规 VPC 网络中的 vNIC 可以是
GVNIC、VIRTIO_NET或IDPF。您只能在创建实例时配置 vNIC。Dynamic NIC:父级 vNIC 的子级接口。您可以在创建实例时配置 Dynamic NIC,也可以在以后添加。如需了解详情,请参阅 Dynamic NIC。
您还可以使用包含 RDMA 网络接口(IRDMA 或 MRDMA)的机器类型配置多 NIC 实例,这类接口必须连接到采用 RDMA 网络配置文件的 VPC 网络。采用 RDMA 网络配置文件的 VPC 网络不支持其他网络接口类型(包括 Dynamic NIC)。
规格
以下规范适用于具有多个网络接口的实例:
实例和网络接口:每个实例都有一个
nic0接口。网络接口数上限因实例的机器类型而异。- 每个接口都有关联的栈类型,该类型决定了支持的子网栈类型和 IP 地址版本。如需了解详情,请参阅栈类型和 IP 地址。
用于每个网络接口的唯一网络:除了使用 RDMA 网络配置文件创建的 VPC 网络之外,每个网络接口都必须使用唯一 VPC 网络中的子网。
对于使用 RDMA 网络配置文件创建的 VPC 网络,多个 RDMA NIC 可以使用相同的 VPC 网络,只要每个 RDMA NIC 使用唯一的子网即可。
必须先存在 VPC 网络和子网,然后您才能创建其网络接口使用相应网络和子网的实例。如需详细了解如何创建网络和子网,请参阅创建和管理 VPC 网络。
实例和子网的项目:对于独立项目中的多 NIC 实例,每个网络接口都必须使用与实例位于同一项目中的子网。
如需了解共享 VPC 宿主项目或服务项目中的实例,请参阅共享 VPC。
Private Service Connect 接口可让多 NIC 实例在不同项目的子网中拥有网络接口。如需了解详情,请参阅网络连接简介。
IP 转发、MTU 和路由注意事项:多 NIC 实例需要针对以下实例和接口专属配置选项进行仔细规划:
IP 转发选项可按实例进行配置,并应用于所有网络接口。如需了解详情,请参阅为实例启用 IP 转发。
每个网络接口都可以使用唯一的最大传输单元 (MTU),与关联 VPC 网络的 MTU 相匹配。如需了解详情,请参阅最大传输单元。
每个实例都使用 RFC 3442 中定义的 DHCP 选项 121 接收默认路由。默认路由与
nic0相关联。除非手动配置,否则从某个实例流向任何目的地(直接关联的子网除外)的所有流量都将使用nic0上的默认路由离开该实例。在 Linux 系统上,您可以使用
/etc/iproute2/rt_tables文件以及ip rule和ip route命令在客户机操作系统中配置自定义规则和路由。如需了解详情,请参阅客户机操作系统文档。如需查看示例,请参阅以下教程:为其他接口配置路由。
Dynamic NIC
如果您的使用情形需要满足以下任一条件,请使用 Dynamic NIC。请务必查看 Dynamic NIC 的属性和限制。
您需要对现有实例添加或移除网络接口。添加或移除 Dynamic NIC 不需要重启或重新创建实例。
您需要更多网络接口。 Google Cloud 中大多数机器类型的 vNIC 数量上限为 10 个;不过,您可以使用 Dynamic NIC 配置总共多达 16 个接口。如需了解详情,请参阅网络接口数量上限。
您需要配置只有一个 vNIC 的多 NIC Compute Engine 裸金属实例。
Dynamic NIC 的属性
请参阅以下有关 Dynamic NIC 属性的信息:
Dynamic NIC 是使用 IEEE 802.1Q 标准数据包格式的 VLAN 接口。请参阅以下注意事项:
- Dynamic NIC 的 VLAN ID 必须是介于 2 到 255 之间的整数。
- Dynamic NIC 的 VLAN ID 在父级 vNIC 中必须是唯一的。 不过,属于不同父级 vNIC 的 Dynamic NIC 可以使用相同的 VLAN ID。
Google Cloud 将以下格式用于 Dynamic NIC 的名称:
nicNUMBER.VLAN_ID,其中nicNUMBER是父级 vNIC 的名称,例如nic0。VLAN_ID是您设置的 VLAN ID,例如4。
一个 Dynamic NIC 名称示例为
nic0.4。使用 Dynamic NIC 创建实例或向现有实例添加 Dynamic NIC 需要执行额外的步骤,以在客机操作系统中安装和管理相应的 VLAN 接口。您可以使用以下方法之一:
使用客机代理配置 Dynamic NIC 的自动管理。
手动配置客机操作系统。
如需了解详情,请参阅为 Dynamic NIC 配置客机操作系统。
Dynamic NIC 共享其父级 vNIC 的带宽。为防止任何网络接口占用所有带宽,您必须在客机操作系统中创建特定于应用的流量政策,以便对流量进行优先级排序或分发,例如使用 Linux 流量控制 (TC)。
Dynamic NIC 与其父级 vNIC 共享相同的接收和传输队列。 如需将网络接口配置为使用不同的接收和传输队列,请使用 vNIC 而不是 Dynamic NIC。
Dynamic NIC 的堆栈类型可以与其父级 vNIC 相同,也可以不同。例如,您可以在仅限 IPv4 的父 vNIC 下创建仅限 IPv6 的动态 NIC 和双栈 Dynamic NIC。
Dynamic NIC 的限制
请参阅 Dynamic NIC 的以下限制:
Dynamic NIC 创建后,您无法修改其以下属性:
- Dynamic NIC 所属的父级 vNIC。
- Dynamic NIC 的 VLAN ID。
Dynamic NIC 不支持以下各项:
- 适用于 Google Cloud Armor 的高级网络 DDoS 攻击防护和网络边缘安全政策
- 使用 MIG 的每个实例配置来配置 IP 地址。
- 依赖于数据包拦截的功能,例如防火墙端点
- Compute Engine Windows 驱动程序
对于第三代虚拟机,VLAN ID 为
255的 Dynamic NIC 无法访问元数据服务器 IP 地址。如果您需要访问元数据服务器,请确保使用其他 VLAN ID。
栈类型和 IP 地址
创建网络接口时,您需要指定以下接口栈类型之一:
- 仅限 IPv4
- 双栈
- 仅 IPv6
虚拟机实例可以有具有不同堆栈类型的网络接口。
下表介绍了每种接口栈类型支持的子网栈类型和 IP 地址详细信息: