macvtap

macvtap
  macvtap是相对于Linux Bridge和Open vSwitch更简单的网络接口类型。可以通过lsmod命令判断系统是否已经加载了macvtap驱动:

# lsmod | grep macvtap
macvtap                22363 4
macvlan                19233 1 macvtap

  macvtap最主要的优势是使用和配置都很简单:
    1.依赖的macvtap处于Linux内核驱动中,无需要安装任何软件包
    2.无需做额外配置
    3.无需守护进程(daemon)
  macvtap主要的劣势是:相对于Linux Bridge和Open vSwitch,macvtap没有那么多特性(功能)。
  下面通过一个实验来验证macvtap的连通性。
  首先,创建虚拟机VM1,网络接口选择Host device enp2s0: macvtap
  
  然后,创建虚拟机VM2,网络接口选择Host device enp2s0: macvtap
  
  接下来,启动两个虚拟机VM1和VM2之后,可以在主机host上看到两个macvtap网络接口:

macvtap0: flags=4163 mtu 1500
        inet6 fe80::5054:ff:fed8:9ff prefixlen 64 scopeid 0x20
        ether 52:54:00:d8:09:ff txqueuelen 500 (Ethernet)
        RX packets 72 bytes 7814 (7.6 KiB)
        RX errors 0 dropped 0 overruns 0 frame 0
        TX packets 29 bytes 2678 (2.6 KiB)
        TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

macvtap1: flags=4163 mtu 1500
        inet6 fe80::5054:ff:fee3:4400 prefixlen 64 scopeid 0x20
        ether 52:54:00:e3:44:00 txqueuelen 500 (Ethernet)
        RX packets 84 bytes 9860 (9.6 KiB)
        RX errors 0 dropped 0 overruns 0 frame 0
        TX packets 42 bytes 3607 (3.5 KiB)
        TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

在虚拟机VM1中,查看网络接口:

ens8: flags=4163 mtu 1500
        inet 192.168.1.5 netmask 255.255.255.0 broadcast 192.168.1.255
        inet6 fe80::5054:ff:fed8:9ff prefixlen 64 scopeid 0x20
        ether 52:54:00:d8:09:ff txqueuelen 1000 (Ethernet)
        RX packets 111 bytes 9265 (9.0 KiB)
        RX errors 0 dropped 0 overruns 0 frame 0
        TX packets 53 bytes 7215 (7.0 KiB)
        TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

  通过对比主机host上macvtap0和虚拟机VM1上ens8的MAC地址,可以发现两者是相同的。
  在虚拟机VM2中,查看网络接口:

ens8: flags=4163 mtu 1500
        inet 192.168.1.6 netmask 255.255.255.0 broadcast 192.168.1.255
        inet6 fe80::5054:ff:fee3:4400 prefixlen 64 scopeid 0x20
        ether 52:54:00:e3:44:00 txqueuelen 1000 (Ethernet)
        RX packets 109 bytes 8991 (8.7 KiB)
        RX errors 0 dropped 0 overruns 0 frame 0
        TX packets 66 bytes 8144 (7.9 KiB)
        TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

  类似的,主机host上macvtap1和虚拟机VM2上ens8的MAC地址也是相同的。
  现在有四个网络上的主体:主机host、虚拟机VM1、虚拟机VM2、外网,通过ping命令可以检测其联通性。经测试,两个虚拟机之间是连通的,虚拟机与外网之间也是连通的,虚拟机与主机之间是不通的。实际上虚拟机与主机host所在网段上的其它机器之间也是不通的。