qemu network backend的初始化

本文探讨QEMU的网络优化,重点关注virtio-net、vhost-net和vhost-user。virtio是半虚拟化驱动,vhost技术减少了数据传输的态切换,提升性能。vhost-user进一步将处理移至用户空间,以实现更灵活的网络处理。内容详细介绍了这些技术的工作原理和数据传输流程。
摘要由CSDN通过智能技术生成

Network优化:

1、virtio-net:基于virtio框架的虚拟以太网设备


vhost_net优化:内核进程vhost_XXXX


其他优化选项:

数据发送的完整流程

在上面过程中可以看到vhost最核心处就在于将Guest中的virtio用于传输层的vring队列空间通过mapping方式与Host Kernel进行了共享,这样数据就不需要通过多次的跨态拷贝,直接进入了Kernel;通过io event事件机制进行了收发方向的通告,使vhost与Guest达到很好的配合。

而数据在kernel中最终是如何发送出去的呢?

看如下的图就明白了,在vhost的使能时,我们创建了tap,tap设备的用法和前文介绍的一致,通过加入Bridge来实现数据的交换。而vhost中的数据直接使用tap设备在内核中的sock接口进行了发送和接收,这些动作均是在vhost的worker thread中进行的。

相关cod




随着qemu2.1的发布,可以看到,qemu支持了vhost-user。从介绍可以看出,这是把原来vhost-backend从kernel移到了userspace,这和原来virtio架构有什么区别呢?并且这个特性带来了怎样的改进?

virtio

virtio是qemu的半虚拟化驱动,guest使用virtio driver将请求发送给virtio-backend。

+---------+------+--------+----------+--+
|         +------+        +----------+  |
| user    |      |        |          |  |
| space   |      |        |  guest   |  |
|         |      |        |          |  |
|    +----+ qemu |        | +-+------+  |
|    |    |      |        | | virtio |  |
|    |    |      |        | | driver |  |
|    |    +------+        +-+---++---+  |
|    |                          |       |
|    |       ^                  |       |
|    v       |                  v       |
|            |                          |
+-+-----+-----------------+--+-------+--+
| |
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值