3.7. 虚拟网络接口卡(虚拟网卡)

虚拟网络接口卡是基于主机的物理网卡的虚拟网络接口。每一个主机可以有多个物理网卡,而每个物理网卡可以有多个虚拟机网络接口卡(虚拟网卡)。
当您为虚拟机添加一个虚拟网卡时,Red Hat Virtualization Manager 会在虚拟机、虚拟网卡本身和虚拟网卡所基于的主机的物理网卡间创建一定的关联。虚拟网卡所基于的主机的物理网卡上会创建一个新的虚拟网卡和 MAC 地址。当虚拟机第一次启动时,libvirt 会为虚拟网卡分配一个 PCI 地址。这样,虚拟机就可以使用 MAC 地址和 PCI 地址(如 eth0)指定虚拟网卡。
如果虚拟机是通过模板或快照创建的,分配 MAC 地址以及把这些 MAC 地址和 PCI 地址相关联的过程会有所不同。当模板或快照中已经包括了 PCI 地址时,通过这个模板或快照所创建的虚拟机上的虚拟网卡的顺序会根据这些 PCI 地址和 MAC 地址被分配;如果模块中没有包括 PCI 地址,基于这个模板所创建的虚拟机上的虚拟网卡会根据虚拟机网卡的名称被创建;如果快照中没有包括 PCI 地址,Red Hat Virtualization Manager 会根据快照来为虚拟网卡分配新的 MAC 地址。
创建后,虚拟网卡会被添加到网桥设备中。网桥将用来处理虚拟机和虚拟机网络的连接。
在一台主机上运行 ip addr show 命令会显示这个主机上的与虚拟机相关的所有虚拟网卡信息。另外,它还会显示虚拟网络所使用的网桥信息,以及主机上的所有网卡信息。
[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 虚拟设备(;vdsmdummy;)、5 个绑定设备(bond0bond4bond1bond2bond3)和一个网桥(ovirtmgmt)。
上面所显示的虚拟网络都属于同一个网桥设备和逻辑网络。您可以使用 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 虚拟网卡包括在 ovirtmgmt 网桥中。和这个虚拟网卡所关联的所有虚拟机都属于 ovirtmgmt 逻辑网络。eth0 网络接口也是 ovirtmgmt 网桥的一部分。eth0 设备和交换机连接来提供到主机以外的网络连接。