系统相关
首页 > 系统相关> > Linux虚拟化KVM-Qemu分析(十一)之virtqueue

Linux虚拟化KVM-Qemu分析(十一)之virtqueue

作者:互联网

目录

1. 概述

2. 数据结构

3. 流程分析

3.1 发送

3.2 接收

3.3 代码分析

3.3.1 virtqueue创建

3.3.2 virtio-net驱动发送

3.3.3 Qemu virtio-net设备接收

参考

相关阅读


 

1. 概述


 

2. 数据结构


先看一下核心的数据结构:

DPDK中的virtio驱动

这么看,当然是有点不太直观,所以,下图来了:

 

3. 流程分析


3.1 发送


当驱动需要把数据发送给设备时,流程如上图所示:

 

3.2 接收


当驱动从设备接收数据时,流程如上图所示:

 

3.3 代码分析


代码的分析将围绕下边这个图来展开(Virtio-Net),偷个懒,只分析单向数据发送了:

3.3.1 virtqueue创建


 

3.3.2 virtio-net驱动发送


 

3.3.3 Qemu virtio-net设备接收


Virtqueue这种设计思想比较巧妙,不仅用在virtio中,在AMP系统中处理器之间的通信也能看到它的身影。

草草收场了,下回见。

 

参考


https://www.redhat.com/en/blog/virtqueues-and-virtio-ring-how-data-travels

Virtual I/O Device Version 1.1

 

相关阅读


virtio数据结构总览 | 图

Linux PCI驱动框架分析:(Peripheral Component Interconnect,外部设备互联)

Linux虚拟化KVM-Qemu分析(一)

Linux虚拟化KVM-Qemu分析(二)之ARMv8虚拟化

Linux虚拟化KVM-Qemu分析(三)之KVM源码(1)

Linux虚拟化KVM-Qemu分析(四)之CPU虚拟化(2)

Linux虚拟化KVM-Qemu分析(五)之内存虚拟化

Linux虚拟化KVM-Qemu分析(六)之中断虚拟化

Linux虚拟化KVM-Qemu分析(七)之timer虚拟化

Linux虚拟化KVM-Qemu分析(八)之virtio初探

Linux虚拟化KVM-Qemu分析(九)之virtio设备

Linux虚拟化KVM-Qemu分析(十)之virtio驱动

Linux虚拟化KVM-Qemu分析(十一)之virtqueue

virtio 网络的演化

virtio 网络的演化:原始virtio > vhost-net(内核态) > vhost-user(DPDK) > vDPA

vhost(vhost-user)网络I/O半虚拟化详解:一种 virtio 高性能的后端驱动实现https://rtoax.blog.csdn.net/article/details/114175631

在CentOS上进行虚拟化:QEMU、Xen、KVM、LibVirt、oVirt

ARM SMMU原理与IOMMU技术(“VT-d” DMA、I/O虚拟化、内存虚拟化)

OpenVZ,Xen,KVM等:虚拟化解决方案

KVM Virtio: An I/O virtualization framework for Linux(Linux虚拟IO框架)

ARM SMMU原理与IOMMU技术(“VT-d” DMA、I/O虚拟化、内存虚拟化)

用QEMU构建嵌入式LINUX系统

疫情下的远程办公:理解Linux虚拟网络设备之tun/tap

Linux虚拟网络设备之tun/tap

Tun/Tap接口教材-[翻译:Tun/Tap interface tutorial]

Linux的TUN/TAP编程

标签:virtio,虚拟化,KVM,描述符,virtqueue,Linux,Qemu
来源: https://blog.csdn.net/Rong_Toa/article/details/115602865