DPDK和VPP是什么?
在网络成为人们通信方式基础的今天,性能、吞吐量和延迟对于无线核心和接入、有线基础设施、路由器、负载平衡器、防火墙、视频流、VoIP 等应用越来越重要。DPDK 支持极快的数据包处理,使电信行业将移动网络骨干和语音等对性能敏感的应用迁移到云中成为可能。
DPDK是什么?
DPDK 是数据平面开发工具包(Data Plane Development Kit),DPDK是一款高性能的网络驱动组件,旨在为数据面应用程序提供一个简单方便的,完整的,快速的数据包处理解决方案。DPDK由各种库组成,用于加速在各种 CPU 架构上运行的数据包处理工作负载。主要技术有用户态、轮询取代中断、零拷贝、网卡RSS、访存DirectIO等。
DPDK 于 2010 年由英特尔公司创建,并以许可开放源代码的方式提供。2013 年,6WIND 在 DPDK.org 上建立了开源社区,促进了项目的持续扩展。从那时起,该社区的贡献者、补丁和贡献组织的数量一直在持续增长,目前已完成了 5 个主要版本,包括来自 25 个不同组织的 160 多人的贡献。DPDK 现在支持所有主流 CPU 架构和多个供应商的网卡,非常适合需要跨平台移植的应用程序。
DPDK的基本原理
随着云业务相关网络需求的飙升,Linux+x86单机网络IO瓶颈愈发明显,问题根源来自于网络业务的运行对CPU资源消耗占用,主流的解决方案都是旁路网卡IO,绕过内核直接在用户态收发包来解决内核的瓶颈。
如上图所示,区别于左侧传统的收发报文方式,DPDK的方式基于UIO(Userspace I/O)旁路数据,数据从网卡-DPDK轮询模式–DPDK基础库-业务,使之易于开发和维护,灵活性好,发生故障不影响内核运行。
VPP是什么?
VPP 平台是一个可扩展的框架,可提供开箱即用的高质量交换机/路由器功能。它是思科矢量数据包处理(VPP,Vector Packet Processing)技术的开源版本:一种可在商用 CPU 上运行的高性能数据包处理堆栈。
VPP 的优势在于其高性能、成熟的技术、模块化和灵活性以及丰富的功能集。VPP 技术基于经过验证的技术,该技术已帮助思科交付了超过 10 亿美元的产品。
模块化、灵活、可扩展
VPP 平台建立在 “数据包处理图” 的基础上。这种模块化方法意味着任何人都可以 “插入 “新的图形节点。这使得可扩展性变得相当简单,同时也意味着插件可以针对特定目的进行定制。
自定义数据包处理图
插件如何发挥作用?运行时,VPP 平台从 RX 环中抓取所有可用数据包,形成数据包向量。对整个数据包矢量逐节点(包括插件)应用数据包处理图。图节点小而模块化。图形节点是松散耦合的。这使得引入新的图形节点变得容易。这也使得重新连接现有图形节点变得相对容易。
星融元Helium DPU 智能网卡对DPDK/VPP的支持
Helium DPU智能网卡所提供的软件开发套件(FusionNOS-Framework)包括三大部分,目前软件和场景都已开源。
开源地址:https://github.com/asterfusion/Helium_DPU
- 标准的Linux内核,方便开发者安装应用相关的各种依赖,并且有大量可选的软件源。
- 容器化的架构。我们可以打包运行环境和依赖到一个可移植的镜像中,实现轻量的资源隔离,做到一次编译,随处运行,并且每个实例的初始状态皆是一致的。
- 额外提供的DPDK和VPP开发套件,加速软件快速移植,用户也可以很方便去拓展自己的应用。
产品链接:Helium DPU智能网卡:网络加速、安全加速、存储加速
更多资讯:讲座精华 | 深度分享星融元开源DPU技术与应用场景
本文参考:
https://wiki.fd.io/view/VPP/What_is_VPP%3F
https://cloud.tencent.com/developer/article/1198333
https://www.dpdk.org/about/