vhost-net 为运行在 host kernel 中的设备后端。 vhost-net 本质为将 qemu 中的 io 线程(负责 tap 读写) offload 给了 vhost-net 内核线程。 qemu 在将 tap 读写 offload 给 vhost-net 之前,需要帮 virtio-net 与 vhost-net 建立前后端通知机制(基于 eventfd)。 前端kick(notification) 后端,利用 eventfd...
TAP(network tap)设备的操作很像 TUN 设备,但是 TAP 设备工作在 L2 层,因此 TAP 设备可以接收和发送原始的以太报文。 当TUN/TAP 内核模块被加载时,它会创建一个特殊的设备/dev/net/tun。用户进程可以创建一个 tap 设备,打开该设备并向它发送特定的 ioctl 命令。新的 tap 设备在文件系统中有一个名称,另一个...
vhost-net网卡的后端默认使用linux的虚拟网桥tap设备,qemu和虚拟机内部使用virtio-net虚拟网卡。 步骤1: 创建linux网桥和tap设备(对于fedora,centos,redhat等默认有创建好的虚拟网卡) brctl addbr virbr0 brctl stp virbr0 on ip tuntap add name virbr0-nic mode tap ip link set dev virbr0-nic up 步骤二:...
TAP(network tap)设备的操作很像 TUN 设备,但是 TAP 设备工作在 L2 层,因此 TAP 设备可以接收和发送原始的以太报文。 当TUN/TAP 内核模块被加载时,它会创建一个特殊的设备/dev/net/tun。用户进程可以创建一个 tap 设备,打开该设备并向它发送特定的 ioctl 命令。新的 tap 设备在文件系统中有一个名称,另一个...
1)TUN/TAP 2)IPC 3)QEMU与设备仿真 4)KVM Part II:virtio 规范 1)virtio 设备与驱动规范 2)virtqueues 规范 Part III:virtio 网络 :qemu 实现方式 Part IV:vhost 协议 1)介绍 2)vhost-net Part V:如何与外面的网络进行通信 4、vhost-net 实践 ...
vhost-net 本质为将 qemu 中的 io 线程(负责 tap 读写) offload 给了 vhost-net 内核线程。 qemu 在将 tap 读写 offload 给 vhost-net 之前,需要帮 virtio-net 与 vhost-net 建立前后端通知机制(基于eventfd)。 前端kick(notification) 后端,利用 eventfd 的同步效应;后端 kick 前端,通过 eventfd 最终走 ...
sock->ops->recvmsg会执行tun socket ops的tun_recvmsg函数,把tap收到的skb,放到virt_queue结构体中然后通过qemu kvm,以中断的形式唤醒virtio-net驱动的收报函数,注意vhost-net的收发包队列与virtio-net的收发包队列是共享的1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24...
Qemu中tap设备初始化在net_init_tap中完成,其中net_init_tap_one打开vhost-net设备文件,用于与内核的vhost-net交互; vhost_set_backend_type:设置vhost的后端类型,以及vhost的操作函数集。目前有两种vhost后端,一种是在内核态实现的virtio后端,一种是在用户态中实现的virtio后端; ...
vhost工作线程等待virtqueue kick,然后处理放在virtqueue上的缓冲区。 在vhost-net这意味着从tx virtque的数据包并且通过tap文件描述符发送它们。 文件描述符轮询也由vhost工作线程完成。 在vhost-net中,当数据包进入tap文件描述符时,工作线程被唤醒,并将其放置到rx virtqueue中,以便客户端可以接收它们。
Qemu中tap设备初始化在net_init_tap中完成,其中net_init_tap_one打开vhost-net设备文件,用于与内核的vhost-net交互; vhost_set_backend_type:设置vhost的后端类型,以及vhost的操作函数集。目前有两种vhost后端,一种是在内核态实现的virtio后端,一种是在用户态中实现的virtio后端; kernel_ops:vhost的内核操作函数集,...