多个网络接口

本页面简要介绍了 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 可以是 GVNICVIRTIO_NETIDPF。您只能在创建实例时配置 vNIC。

  • Dynamic NIC:父级 vNIC 的子级接口。您可以在创建实例时配置 Dynamic NIC,也可以在以后添加。如需了解详情,请参阅 Dynamic NIC

您还可以使用包含 RDMA 网络接口(IRDMAMRDMA)的机器类型配置多 NIC 实例,这类接口必须连接到采用 RDMA 网络配置文件的 VPC 网络。采用 RDMA 网络配置文件的 VPC 网络不支持其他网络接口类型(包括 Dynamic NIC)。

规格

以下规范适用于具有多个网络接口的实例:

  • 实例和网络接口:每个实例都有一个 nic0 接口。网络接口数上限因实例的机器类型而异。

    • 每个接口都有关联的栈类型,该类型决定了支持的子网栈类型和 IP 地址版本。如需了解详情,请参阅栈类型和 IP 地址
  • 用于每个网络接口的唯一网络:除了使用 RDMA 网络配置文件创建的 VPC 网络之外,每个网络接口都必须使用唯一 VPC 网络中的子网。

    • 对于使用 RDMA 网络配置文件创建的 VPC 网络,多个 RDMA NIC 可以使用相同的 VPC 网络,只要每个 RDMA NIC 使用唯一的子网即可。

    • 必须先存在 VPC 网络和子网,然后您才能创建其网络接口使用相应网络和子网的实例。如需详细了解如何创建网络和子网,请参阅创建和管理 VPC 网络

  • 实例和子网的项目:对于独立项目中的多 NIC 实例,每个网络接口都必须使用与实例位于同一项目中的子网。

  • IP 转发、MTU 和路由注意事项:多 NIC 实例需要针对以下实例和接口专属配置选项进行仔细规划:

    • IP 转发选项可按实例进行配置,并应用于所有网络接口。如需了解详情,请参阅为实例启用 IP 转发

    • 每个网络接口都可以使用唯一的最大传输单元 (MTU),与关联 VPC 网络的 MTU 相匹配。如需了解详情,请参阅最大传输单元

    • 每个实例都使用 RFC 3442 中定义的 DHCP 选项 121 接收默认路由。默认路由与 nic0 相关联。除非手动配置,否则从某个实例流向任何目的地(直接关联的子网除外)的所有流量都将使用 nic0 上的默认路由离开该实例。

      在 Linux 系统上,您可以使用 /etc/iproute2/rt_tables 文件以及 ip ruleip 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 的以下限制:

栈类型和 IP 地址

创建网络接口时,您需要指定以下接口栈类型之一:

  • 仅限 IPv4
  • 双栈
  • 仅 IPv6

虚拟机实例可以有具有不同堆栈类型的网络接口。

下表介绍了每种接口栈类型支持的子网栈类型和 IP 地址详细信息: