DPDK vhost-user详解

这篇文章是对vhost-user / virtio-pmd架构的深入技术研究,该架构针对基于DPDK的高性能用户空间网络,面向所有有兴趣了解这些基本细节的架构师和开发人员。

介绍

本文将在读者熟悉vhost-net架构的基础上展示使用vhost-net协议将网络处理从qemu移出并移入内核驱动程序的好处。在本文中,我们将更进一步,展示如何在客户机和主机上使用DPDK(数据平面开发包)将数据平面从内核中移出,并移入用户空间来提高网络性能使用。为实现此目标,我们还将详细研究vhost协议的新实现:vhost-user库。

读完本文,您应该会对基于vhost-user / virtio-pmd的架构中涉及的所有部分有深刻的了解,并且了解其使性能显著提升的原因。

DPDK及其优势

您可能已经听说过DPDK。该用户空间快速数据包处理库是许多网络功能虚拟化(NFV)应用程序的核心,它可以绕过内核的网络协议栈 ,完全在用户空间中实现这些应用程序。

DPDK是一组用户空间库,使用户可以创建优化的,高性能的数据包处理应用程序,它具有许多优势,功能强大,在开发人员中非常受欢迎,下面列举了DPDK的一些优势:

·  多核亲和性——DPDK将每个不同的线程固定到特定的逻辑核心,以最大程度地提高并行性。

·  大页支持——DPDK具有多层的内存管理层(例如Mempool库或Mbuf库),但是在后台,所有内存均使用mmap分配在hugetlbfs中。使用2MB甚至1GB大页,使DPDK减少了缓存丢失和TLB查找。

·  无锁环形缓冲区——DPDK的数据包处理基于Ring库,Ring库提供了高效的无锁环形队列,该队列支持突发入队和出队操作。

·  轮询模式驱动——为避免中断开销,DPDK中提供了轮询模式驱动(PMD)抽象规范。

·  VFIO支持——VFIO(虚拟功能I / O)提供了一个用户空间驱动程序开发框架,允许用户空间应用程序通过将I / O空间直接映射到应用程序的内存来直接与硬件设备进行交互。

除了这些功能之外,DPDK还支持其他两项技术,这些技术为我们提供了可大大提高云环境中网络应用程序性能的工具,它们是:

·  Vhost-user库——实现vhost协议的用户空间库。

·  Virtio-PMD——建立在DPDK的PMD抽象规范之上,virtio-pmd驱动程序实现了virtio规范,并允许以标准且有效的方式使用虚拟设备。

DPDK和OVS:完美结合

DPDK的巨大优势之一是带来了已经广受欢迎的Open vSwitch(OVS-DPDK)的性能提升。Open vSwitch是一种功能丰富的多层分布式虚拟交换机,被广泛用作虚拟环境和其他SDN应用程序的主要网络层。

传统上将其分为基于快速内核的数据路径(fastpath),由流表和较慢的用户空间数据路径(slowpath)组成,后者处理与快速路径中的任何流都不匹配的数据包。通过集成OVS与DPDK,快速路径同样在用户领域,最大限度地减少了内核与用户领域的交互,并充分利用了DPDK提供的高性能。结果是,使用DPDK的OVS与原始OVS相比,性能提高了约10倍。

那么,如何将OVS-DPDK的功能和性能与基于virtio的架构相结合呢?在下一节中,我们将逐步为您介绍各个重要部分。 

DPDK中的Vhost-user库

vhost协议是一组消息和机制,旨在将virtio数据路径处理从QEMU卸载到外部元素(配置virtio环并进行实际的数据包处理的处理程序),最重要的机制是:

·  一组消息,允许QEMU将virtqueue的内存布局和配置发送到处理程序。

·  一对eventfd类型的文件描述符,允许客户机绕过QEMU,并直接向处理程序发送通知或从处理程序接收通知:Available Buffer通知(从客户机发送至处理程序以指示有准备好处理的缓冲区)和Used Buffer通知(从处理程序发送给客户机以指示其已完成对缓冲区的处理)

现在我们介绍vhost-user库。该库内置于DPDK中,是vhost协议的用户空间实现,可让qemu将virtio设备数据包处理工作卸载到任何DPDK应用程序(例如Open vSwitch)。

vhost-user库和vhost-net内核驱动程序之间的主要区别是通信通道。vhost-net内核驱动程序使用ioctl实现此通道,vhost-user库定义了通过unix套接字发送的消息结构。

可以将DPDK应用程序配置为提供unix套接字(服务器模式)并使QEMU连接到它(客户端模式ÿ

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值