For the complete documentation index, see llms.txt. This page is also available as Markdown.

网卡

**虚拟网卡(vNIC)**是将 Zenlayer 弹性算力(ZEC)实例接入其 VPC 的网络接口。每个 vNIC 都以宿主机物理网卡上的一个 SR-IOV **虚拟功能(VF)**形式实现——客户机操作系统直接拥有一个硬件隔离的 PCIe 功能,收发数据包无需经过 Hypervisor 中的软件路径。平台负责控制平面(绑定/解绑、MAC 分配、QoS、流量镜像),数据平面则以硬件速度运行。

每个 vNIC 在创建时即绑定到唯一一个子网,并通过该子网绑定到某个区域内的唯一一个 VPC。该归属关系在 vNIC 的整个生命周期内固定不变。


vNIC 如何映射到宿主机

vNIC 是宿主机网卡上的一个 SR-IOV 虚拟功能
  • 宿主机的物理网卡对外呈现为一个物理功能(PF)以及一组虚拟功能(VF)。

  • 当您将 vNIC 绑定到实例时,平台会把其中一个 VF 交给客户机。这个 VF 就是该 vNIC。

  • 数据包直接在客户机驱动与 VF 的硬件队列之间传递——Hypervisor 不在快速路径上复制数据。

  • PF 仅归宿主机私有使用。它负责实施各 VF 的 QoS、应用 MAC 与 VLAN 策略,并控制流量镜像。

正是这一底层实现决定了实例规格会限制 vNIC 数量、队列深度和每个 vNIC 的 IP 数量(参见下文〈不同实例规格的 vNIC 容量〉)——每个 vNIC 都会占用宿主机网卡上的一个 VF 和一组队列,而这两者的数量都是有限的。


主网卡与弹性网卡

ZEC 区分两类 vNIC。二者共用同一数据平面,区别在于生命周期。

主网卡与实例共存亡;弹性网卡可在其所属子网内迁移
属性
主网卡
弹性网卡

随实例一同创建?

是,自动创建。

否——单独创建,按需绑定。

可以从实例解绑?

不可以。主网卡在实例存续期间一直存在。

可以——可解绑后重新绑定到同一子网内的其他实例。

归属于唯一一个子网?

是,即实例所在的子网。

是,即创建 vNIC 时选定的子网。

承载实例的默认路由?

是。

通常不承载——它是提供额外连通性的辅助网卡。

主网卡

创建实例时,ZEC 会在实例所在子网中创建并绑定一个主网卡。它持有实例的主私有 IPv4 地址、MAC 地址,以及实例的主 IPv6 地址(前提是子网已开启 IPv6 且实例已启用 IPv6)。主网卡不能解绑,会随实例一并释放。

弹性网卡

除主网卡之外,您还可以单独创建弹性网卡,并作为独立步骤将其绑定到实例。弹性网卡拥有自己的私有 IP、自己的 MAC 地址、自己的安全身份,以及绑定到这些私有 IP 上的 EIP。解绑再重新绑定,即可把这整套身份从一台实例迁移到另一台实例。

弹性网卡可以解绑后重新绑定到同一子网内的其他实例,但不能跨子网、跨 VPC、跨可用区或跨区域迁移。


弹性网卡使用场景

当网络身份(私有 IP、绑定的 EIP、安全组边界)需要比单台实例存活得更久,或者单台实例需要同时接入多个网络时,弹性网卡的价值就体现出来了。下面三种模式覆盖了绝大多数实际部署。

弹性网卡的三种模式:管理平面分离、多子网网络设备、IP 可迁移的工作节点

场景 1 — 管理平面与数据平面分离

**您要做的事:**一台实例同时承载两类流量——运维/管理流量(SSH、指标采集、备份)和高速率的业务流量——而您希望把它们放在不同的网卡上,以便独立施加安全组、QoS 和监控策略。

部署方式:

  1. 位于业务子网中的主网卡承载业务流量,并对服务端口配置较为宽松的安全组。

  2. 在专用的管理子网中绑定一块弹性网卡,并配置严格的安全组——例如仅放通跳板机 CIDR。

  3. 在操作系统层面将出向管理流量路由到管理网卡。

**为什么用两块 vNIC,而不是在一块 vNIC 上配两个 IP:**每块 vNIC 都是独立的安全、QoS 与审计边界——拥有各自的安全组、各自的链路状态监控数据和各自的 MAC 地址。仅靠私有 IP 区分做不到这一点。

场景 2 — 多子网网络设备

**您要做的事:**防火墙、反向代理、NAT 辅助节点或 VPN 集中器需要横跨两个子网,并在它们之间转发数据包。

部署方式:

  1. 网络设备需要接入的每个子网各绑定一块弹性网卡——一块位于非信任/DMZ 子网,一块位于信任/内部子网。

  2. 关闭该设备各 vNIC 的源/目的地址检查,使实例能够转发源地址或目的地址不属于自身的数据包。

  3. 在客户机操作系统中配置各网卡之间的路由。

**权衡:**vNIC 数量受实例规格限制(参见下文〈不同实例规格的 vNIC 容量〉)。需要多条链路的网络设备会占用大量 vNIC 槽位。

场景 3 — IP 可迁移的工作节点

**您要做的事:**某个工作进程持有一个被外部系统引用的私有 IP——用于白名单、会话保持或节点绑定式许可授权。该进程可能在维护期间被调度到另一台实例上,但其私有 IP 不能变化。

部署方式:

  1. 把工作节点的"身份"IP 设为一块弹性网卡的主 IP,而不是设在实例主网卡上。

  2. 迁移时,将该弹性网卡从原实例解绑并绑定到替换实例;工作节点会以相同的私有 IP 重新上线。

**为什么只能用 vNIC 实现:**主网卡的私有 IP 无法在实例之间迁移。弹性网卡是让私有 IP 在实例更替后保持不变的唯一方式。


私有 IP 地址

vNIC 上的主私有 IP 与辅助私有 IP;EIP 与私有 IP 一一绑定

主私有 IPv4

每块 vNIC 有且仅有一个主私有 IPv4 地址。该地址在创建 vNIC 时分配,可以由平台从子网 CIDR 中自动选取,也可以由您指定(前提是该地址未被占用)。主私有 IPv4 不能从 vNIC 上移除。

辅助私有 IPv4

您可以为一块 vNIC 分配额外的私有 IPv4 地址,上限见每个 vNIC 的配额(参见下文〈不同实例规格的 vNIC 容量〉)。辅助 IP 适用于以下情形:

  • 在单台实例上承载多个服务,每个服务由各自的 IP 标识。

  • 为同一块 vNIC 绑定多个 EIP——每个 EIP 与一个私有 IP 一一配对。

  • 为服务保留一个稳定地址,使其不依赖于当前承载它的实例。

分配方式可以是自动(指定数量,由平台选取)或手动(指定具体 IP,且这些 IP 在子网内未被占用)。

IPv6

如果子网已开启 IPv6,每块 vNIC 可以持有一个 IPv6 地址,在创建 vNIC 时或在 vNIC 上启用 IPv6 时从子网的 IPv6 CIDR 中分配。默认情况下,平台会将子网 /96 网段的第一个地址分配为该 vNIC 的 IPv6 地址。

**vNIC 上的 IPv6 一旦启用便无法关闭。**启用 IPv6 是单向操作。如需为某个工作负载移除 IPv6,请更换 vNIC。

使用公网 IPv6 时,地址直接下发到客户机,不经过 NAT。详见 EIP 文档中的公网 IPv6。


绑定弹性 IP

弹性 IP(EIP)绑定到vNIC 上的某个具体私有 IP,而不是绑定到整块 vNIC。绑定关系是一对一的——一个 EIP 对应一个私有 IP。

如果要把一块 vNIC 上的多个私有 IP 都暴露到公网,请为每个私有 IP 各分配一个 EIP。绑定到同一块 vNIC 上的所有 EIP 必须使用相同的转发模式(普通模式或 Bypass 模式),请勿在同一块 vNIC 上混用两种模式。

两种转发模式及客户机内的配置方法,详见普通模式 EIP 与 Bypass EIP。


不同实例规格的 vNIC 容量

实例可持有的 vNIC 数量、每块 vNIC 的硬件队列数量,以及每块 vNIC 的私有 IPv4 地址数量,均随实例的 vCPU 数量扩展。该扩展规则对所有实例族(z2a、z4a、z2i、z3a、z4i)一致。

vCPU 数量
最大 vNIC 数
vNIC 多队列
每个 vNIC 的私有 IPv4

1

2

1

6

2

2

1

10

4

2

2

15

8

2

4

15

16

4

8

30

32

8

16

30

64

16

32

30

  • 最大 vNIC 数——绑定到实例上的 vNIC 总数,包含主网卡。弹性网卡仅在绑定期间占用配额,解绑后即释放槽位。

  • vNIC 多队列——每块 vNIC 的发送(Tx)和接收(Rx)队列数量。多队列使客户机能够将数据包处理分散到多个 CPU 上;队列数越高,吞吐量越高,数据包密集型工作负载的资源争用越少。

  • 每个 vNIC 的私有 IPv4——单块 vNIC 可分配的 IPv4 地址数量上限(主 IP + 辅助 IP)。



进阶:net_failover 与热迁移

ZEC 实例运行在宿主机上,这些宿主机可能因维护而进行热迁移——即在不关机的情况下将运行中的虚拟机从一台宿主机迁移到另一台。由于 vNIC 的 SR-IOV VF 与当前宿主机的物理网卡是硬件绑定的,VF 无法跟随虚拟机跨宿主机迁移。如果不做处理,这种解绑会导致网络在整个迁移过程中中断。

为消除这一中断,ZEC 实例使用 Linux 内核的 net_failover 驱动。每块 vNIC 会向客户机呈现三个逻辑网络设备,它们协同工作,共同构成一条绑定链路。

net_failover 为客户机提供一个主设备加上 VF 和 virtio 两个从设备
设备
角色
行为

Failover 主设备(例如 eth0)

您实际配置的网卡

持有 IP 地址、MAC 地址、路由和防火墙规则。应用和配置工具应只针对该设备操作。

SR-IOV VF(主从设备)

快速路径

稳态下以线速承载流量。迁移期间被解绑,并在新宿主机上重新绑定。

virtio-net(备用从设备)

慢速路径兜底

稳态下处于空闲。仅在迁移期间 VF 缺失的短暂窗口内承载流量。

正常运行时,数据包经由 VF 转发——virtio 设备虽已加入绑定但不承载流量。当宿主机开始热迁移时,VF 被解绑,内核会透明地把流量切换到 virtio 备用设备。迁移在新宿主机上完成后,新的 VF 会被热插入,流量随即切回。应用不会感知到 IP 变化,主设备也不会出现链路抖动。

这对您意味着:

  • 在 ZEC 实例上执行 ip link(或 ip addr)会看到每块 vNIC 对应三个设备。这是正常现象——大多数用户只需与其中一个交互。

  • **只配置 failover 主设备。**若将应用、防火墙规则或静态路由绑定到底层的 VF 或 virtio 设备,迁移时该设备消失会导致故障。

  • 大多数现代发行版的 udev / systemd-networkd 规则已会自动选用 failover 主设备,并对默认配置工具隐藏从设备。如果您的发行版没有这样做,主设备就是持有 IP 地址、且链路状态中带有 failover 标记的那个设备。


延伸阅读

最后更新于