ACRN Hypervisor之网卡争端

tap网卡

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

例如,下面的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

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

 passthru 网卡

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

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

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

 对应到脚本上就是这个。我们添加设备可以不用重新编译acrn-hypervisor,直接在脚本上添加对应的代码即可。

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

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LZZ and MYY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值