ACRN Hypervisor之网卡争端

tap网卡

根据网页Getting Started Guide — Project ACRN™ 3.4-unstable documentation,我们可以知道安装完ACRN之后,有一个使用systemd-networkd初始化网卡的命令。这时候会创建一个网桥,叫做acrn-br0。还会有tap0,这个tap0是我们可以去分配给VM的一个桥接的网卡

ACRN Hypervisor之网卡争端_第1张图片

例如,下面的launch脚本中创建了一个RT_VM1,使用了tap0这个网卡。但是tap0只能被一个VM所使用,也就是VM1如果使用了tap0,那么VM2就无法使用tap0了。 

# Invoking ACRN device model
dm_params=(
    `add_cpus                                 8 16`
    -m 4096M
    --ovmf /usr/share/acrn/bios/OVMF.fd
    `add_virtual_device                       0:0 hostbridge`
    --virtio_poll 1000000
    `add_virtual_device                       3 virtio-console @stdio:stdio_port`
    `add_virtual_device                       4 virtio-blk /home/acrn/acrn-work/eci-test.img`
    --rtvm
    --lapic_pt
    `add_logger_settings                      console=4 kmsg=3 disk=5`
    -s  5,virtio-net,tap=tap0
    -s                                        9,virtio-blk,/dir/test.img
    POST_RT_VM1
)

对于多个VM需要使用网卡的情况,我们需要添加tap1 tap2甚至tap3

$ cd /etc/systemd/network
$ ls
20-static.network  50-acrn.netdev  50-acrn.network  50-eth.network  50-tap0.netdev

我们创建一个50-tap1.netdev,内容如下

 

我配的是静态ip,所以关闭了所有的dhcp

ACRN Hypervisor之网卡争端_第2张图片

重启电脑后,你就可以使用tap1给别的VM了

 passthru 网卡

tap的问题在于两个VM直接存在较大的延迟,比如VM1用tap0,VM2用tap1,两者互相ping的延迟在2ms到5ms之间,对于工业上的应用可能无法满足。

这时候我们就需要把网卡passthru给VM了,让VM独占该网卡。比如下面可以看到vm独占了一个02:00.0的网卡

ACRN Hypervisor之网卡争端_第3张图片

另一个win10的VM独占了03:00.0这个网卡 

ACRN Hypervisor之网卡争端_第4张图片 对应到脚本上就是这个。我们添加设备可以不用重新编译acrn-hypervisor,直接在脚本上添加对应的代码即可。

ACRN Hypervisor之网卡争端_第5张图片

现在两个VM互相之间ping,小于1ms了。 

你可能感兴趣的:(ACRN,Hypervisor,&,ECI,linux,acrn,type1,Hypervisor)