官方文档查看地址:
http://doc.dpdk.org/guides/prog_guide/service_cores.html
PDF下载地址:
https://www.intel.com/content/www/us/en/embedded/technology/packet-processing/dpdk/dpdk-programmers-guide.html
本篇难度系数:
翻译:☆☆☆☆☆
理解:★★☆☆☆
45.Vhost Library
vhost库实现了一个用户空间virtio net服务器,允许用户直接操作virtio环。换句话说,它允许用户从VM virtio net设备获取/放置数据包。要实现这一点,vhost库应该能够:
- 访问客户内存:
对于QEMU,这是通过使用-object memory-backend-file,share=on,...
选择。这意味着QEMU将创建一个文件作为guest RAM。share=on
选项允许另一个进程映射该文件,这意味着它可以访问guest RAM。 - 了解有关vring的所有必要信息:
诸如可用环存储在何处之类的信息。Vhost定义一些消息(通过Unix域套接字文件传递),告诉后端它需要知道如何操作vring的所有信息。
45.1Vhost API概述
以下是一些关键的Vhost API函数的概述:
rte_vhost_driver_register(path, flags)
该函数将一个vhost驱动程序注册到系统中。path指定Unix域套接字文件路径。
目前支持的标志是:RTE_VHOST_USER_CLIENT
当给出该标志时,DPDK vhost-user将充当客户机。请看下面的解释。RTE_VHOST_USER_NO_RECONNECT
当DPDK vhost-user作为客户机时,它将继续尝试重新连接到服务器(QEMU),直到成功为止。这在两种情况下是有用的:- 当QEMU尚未启动时。
- 当QEMU重新启动时(例如由于客户OS重新启动)。
默认情况下启用此重新连接选项。但是,可以通过设置此标志关闭它。
RTE_VHOST_USER_DEQUEUE_ZERO_COPY