3.10. 虚拟网络接口卡

虚拟网络接口卡(vNIC)是基于主机物理 NIC 的虚拟网络接口。每个主机可以有多个 NIC,每个 NIC 可以是多个 vNIC 的基础。

将 vNIC 附加到虚拟机时,Red Hat Virtualization Manager 会在虚拟机之间创建多个关联的 vNIC( vNIC 本身)以及 vNIC 所基于的物理主机 NIC。特别是,当 vNIC 附加到虚拟机时,会在 vNIC 所基于的物理主机 NIC 上创建新的 vNIC 和 MAC 地址。然后,在虚拟机附加了 vNIC 后第一次启动虚拟机时,libvirt 为 vNIC 分配 PCI 地址。然后,MAC 地址和 PCI 地址用于获取虚拟机中的 vNIC 的名称(如 eth0)。

根据模板或快照创建虚拟机时,分配 MAC 地址并将 MAC 地址与 PCI 地址关联的过程略有不同:

  • 如果已经为模板或快照创建了 PCI 地址,则基于该模板或快照创建的虚拟机的 vNIC 会根据这些 PCI 地址排序。然后,MAC 地址会按照该顺序分配给 vNIC。
  • 如果还没有为模板创建 PCI 地址,则基于该模板创建的虚拟机上的 vNIC 将按字母顺序排序。然后,MAC 地址会按照该顺序分配给 vNIC。
  • 如果还没有为快照创建 PCI 地址,Red Hat Virtualization Manager 会根据该快照为虚拟机分配新的 MAC 地址。

创建之后,vNIC 便会添加到网桥设备。网桥设备将虚拟机连接至虚拟逻辑网络。

在虚拟化主机上运行 ip addr show 命令显示与该主机上的虚拟机关联的所有 vNIC。另外,也可以看到,为支持逻辑网络而创建的任何网桥以及主机使用的任何 NIC。

[root@rhev-host-01 ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:21:86:a2:85:cd brd ff:ff:ff:ff:ff:ff
    inet6 fe80::221:86ff:fea2:85cd/64 scope link
       valid_lft forever preferred_lft forever
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000
    link/ether 00:21:6b:cc:14:6c brd ff:ff:ff:ff:ff:ff
5: ;vdsmdummy;: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN
    link/ether 4a:d5:52:c2:7f:4b brd ff:ff:ff:ff:ff:ff
6: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
7: bond4: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
8: bond1: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
9: bond2: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
10: bond3: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
11: ovirtmgmt: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
    link/ether 00:21:86:a2:85:cd brd ff:ff:ff:ff:ff:ff
    inet 10.64.32.134/23 brd 10.64.33.255 scope global ovirtmgmt
    inet6 fe80::221:86ff:fea2:85cd/64 scope link
       valid_lft forever preferred_lft forever

命令的控制台输出显示一些设备:一个循环设备(lo)、一个以太网设备(eth0)、一个无线设备(wlan0)、一个 VDSM dummy 设备(;vdsmdummy;)、五个绑定设备(bond0、bond 4、bond1、bond1、bond2、bond3、bond3)。

vNIC 是网桥设备和逻辑网络的所有成员。可以使用 brctl show 命令显示网桥成员资格:

[root@rhev-host-01 ~]# brctl show
bridge name	bridge id		STP enabled	interfaces
ovirtmgmt		8000.e41f13b7fdd4	no		vnet002
							vnet001
							vnet000
							eth0

brctl show 命令的控制台输出显示 virtio vNICs 是 ovirtmgmt 网桥的成员。vNIC 相关联的所有虚拟机都连接到 ovirtmgmt 逻辑网络。eth0 NIC 也是 ovirtmgmt 网桥的成员。eth0 设备电缆到交换机,可提供除主机外的连接。