vhost-net 是一个实现了 vhost 协议 handler 侧的内核驱动,旨在实现高效的数据面,也就是 packet 转发。该实现下,qemu 与 vhost-net 内核驱动(handler)通过 ioctl 交换 vhost 信息,以及一组类似 eventfd 的 fd,被称为 irqfd 以及 ioeventfd,这些 fd 用来在 handler 和 guest 之间交换 notification。 当vhost-ne...
简述了 virtio spec 及 vhost 协议,纵览了实现 virtio 接口的前后端架构,以及 vhost-net(host kernel) 与 virtio-net(guest kernel) 之间通信的 vhost-net/virtio-net 架构。 行文最大的挑战是本文所涉及概念、术语其背后的历史包袱。举例来说,virtio-net 既包含 virtio 标准中所定义的 virtio networking 设备实...
vhost-net 是一个内核驱动程序,是一个高效的数据转发平面。在这个实现中,qemu 和 vhost-net 内核驱动程序使用 ioctl 来交换 vhost 消息,使用两个类似事件 fd 的文件描述符 irqfd 和 ioeventfd 来与 Guest 程序交换通知消息。 当vhost-net 内核驱动程序加载时,它会注册一个名为 /dev/vhost-net 的字符设备。当...
当vhost-net内核驱动加载后,它会暴露一个字符设备在/dev/vhost-net。而QEMU会打开并初始化这个字符设备,并调用ioctl来与vhost-net进行控制面通信,其内容包含virtio的特性协商、将虚拟机内存映射传递给vhost-net等。对比最原始的virtio网络实现,控制平面在原有的基础上转变为vhost协议定义的ioctl操作(对于前端而言仍是通...
4、vhost-net 实践 Part I:准备 1)VMware® Workstation 开启嵌套虚拟化 2)安装需要的软件包 Part II:创建 VM 1)制作模板镜像 2)创建 VM 网络配置 3)检查 VM 4)检查 Host 5)VM 网络配置 1、前言 I/O 虚拟化经历了从 I/O 全虚拟化、I/O 半虚拟化、硬件直通再到 vDPA 加速 Vhost-user 技术的演...
vhost-net介绍 virtio架构 virtio架构 virtio表示虚拟化IO,用于实现设备半虚拟化,即虚拟机中运行的操作系统需要加载特殊的驱动(e.g. virtio-net)且虚拟机知道自己是虚拟机,相较于基于完全模拟的全虚拟化,基于virtio的半虚拟化可以提升设备访问性能。 运行在虚拟机中的部分称为前端驱动,负责对虚拟机提供统一的接口;运...
首先看vhost-net模块注册,主要使用linux内核提供的内存注册机制,这部分开发过linux kernel的人都应该很了解啦1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 static struct miscdevice vhost_net_misc = { .minor = VHOST_NET_MINOR, .name = "vhost-net", .fops...
理解vhost_poll是理解vhost_net的工作机制很重要的一环。其代表vhost poll机制中的一个等待实体。 poll,字面意思轮询,可以理解为,当某一事件发生的时候(tap收到报文),轮询遍历关心此事件的所有对象(tap socket遍历socket等待列表中的所有等待实体 vhost_poll.wait),唤醒此对象的工作线程/进程(调用vhost_poll.wait.fu...
MODULE_ALIAS("devname:vhost-net"); 其中vhost_net_fops代表字符设备支持的用户态接口。字符设备为/dev/vhost-net 1 2 3 4 5 6 7 8 9 10 staticconststructfile_operations vhost_net_fops = { .owner = THIS_MODULE, .release = vhost_net_release, ...
然后,vhost-net会通知虚拟机(通过ioeventfd机制)有新的数据包可供读取。 数据发送:虚拟机准备好要发送的数据包后,会将其放入virtqueue中,并通过ioeventfd机制通知vhost-net内核模块。vhost-net从virtqueue中读取数据包,并通过tap设备将其发送出去。 通知机制:vhost-net使用ioeventfd和irqfd机制来实现与虚拟机的通知和...