DPDK官网:https://www.dpdk.org/
数据平面开发套件(DPDK,Data Plane Development Kit)是由6WIND,Intel等多家公司开发,主要基于Linux系统运行,用于快速数据包处理的函数库与驱动集合,可以极大提高数据处理性能和吞吐量,提高数据平面应用程序的工作效率。
DPDK 应用程序是运行在用户空间上利用自身提供的数据平面库来收发数据包,绕过了 Linux 内核协议栈对数据包处理过程。Linux 内核将 DPDK 应用程序看作是一个普通的用户态进程,包括它的编译、连接和加载方式和普通程序没有什么两样。
DPDK的创造的环境抽象层(EAL, Environment Abstraction Layer)主要负责对计算机底层资源(如硬件和内存空间)的访问,并对提供给用户的接口实施了实现细节的封装。其初始化例程决定了如何分配这些资源(PCI设备、计时器、控制台等)。
绕过了 linux 的协议栈,进入用户协议栈,用户获得了协议栈的控制权,能够定制化协议栈降低复杂度
DPDK包括1Gb,10Gb,40Gb和半虚拟化抽象层的轮询模式驱动(PMD, Poll Mode Driver)。PMD由用户空间的特定的驱动程序提供的API组成,用于对设备和它们相应的队列进行设置。抛弃了基于中断的异步信号发送机制为该架构带来很大的开销节省。避免中断性能瓶颈是DPDK提升数据包处理速度的关键之一。
SPDK(Storage Performance Development Kit)和DPDK(Data Plane Development Kit)是两个由Intel开源的项目,用于优化存储和网络数据平面的性能。
尽管SPDK和DPDK是独立的项目,但它们之间存在紧密的关系和互补的作用。下面是它们之间的关系:
共同的目标:SPDK和DPDK的共同目标是通过提供高性能的软件库和工具,加速存储和网络数据平面的开发和部署。
共享的组件:SPDK和DPDK在某些方面共享相同的组件和技术。例如,它们都使用了User Space Device(用户空间设备)模型,通过绕过操作系统内核,直接在用户空间中进行数据平面处理,从而降低了处理延迟。
互补的功能:SPDK专注于存储性能优化,提供了一组用于构建高性能存储应用程序的库和工具。它针对的是使用NVMe(Non-Volatile Memory Express)等高性能存储介质的应用场景。DPDK则专注于数据平面网络加速,提供了一组用于构建高性能网络应用程序的库和工具。它针对的是网络包处理、虚拟化和网络功能虚拟化(NFV)等场景。
集成和配合:由于SPDK和DPDK都是开源项目,开发人员可以自由地将它们集成到自己的应用程序中,以满足特定的需求。例如,开发人员可以使用DPDK来实现高性能的数据包处理,同时使用SPDK来实现高性能的存储访问,从而构建一个综合的高性能系统。
总之,SPDK和DPDK是两个相互关联、互补的项目,它们旨在提供高性能的存储和网络数据平面开发工具,加速应用程序的处理速度。
网络虚拟化是一种将物理网络资源划分为多个逻辑上相互独立的虚拟网络的技术。它通过将网络资源进行抽象和隔离,为用户提供了一种虚拟的、与底层物理网络无关的网络环境。在虚拟网络中,用户可以根据自己的需求配置网络拓扑、设置网络策略,并独立地管理和操作自己的网络。
网络虚拟化的核心思想是将底层的物理网络资源进行逻辑上的分割,创建多个虚拟网络,每个虚拟网络都可以独立地运行和管理。这样,不同的用户或应用可以共享同一底层网络资源,同时保持彼此之间的隔离和安全性。
网络虚拟化的常见形式
虚拟局域网是一种基于交换机或路由器的网络虚拟化技术。通过将物理局域网划分为多个逻辑上独立的虚拟局域网,每个虚拟局域网都可以有自己的网络地址空间和网络策略。虚拟局域网能够提供灵活的网络配置和管理,使得不同的用户或部门可以在同一物理网络上实现隔离和安全通信。
虚拟专用网络是一种通过公共网络(如互联网)建立起来的安全连接,用于远程用户或分支机构与企业内部网络之间的通信。虚拟专用网络使用加密技术和隧道协议,将用户的数据包封装在一个安全的通道中进行传输。通过虚拟专用网络,用户可以在不同地点之间建立安全的网络连接,实现远程访问和分布式办公。
网络功能虚拟化(Network Functions Virtualization, 简称NFV)是一种架构模型,它通过使用虚拟化技术,将原本运行在专用硬件设备上的网络功能(如路由器、防火墙、负载均衡器、网关、DNS服务器等)转化为软件形式,部署在标准的商业化服务器、存储设备和交换机上。这样的转变使得网络服务不再依赖于专门的硬件,而是可以像普通的软件应用一样灵活部署和管理。
虚拟化技术应用:利用虚拟机(VMs)或容器等技术,将网络功能从硬件中抽象出来,使其成为可独立运行的软件实体,即虚拟网络功能(VNFs)。
标准化硬件平台:NFV运行在标准化的IT硬件上,通常是基于x86架构的服务器,这降低了对昂贵且专有的网络硬件的依赖。
动态部署与扩展:因为是基于软件的,所以VNFs可以根据需求动态地部署、调整规模、迁移或拆除,提高了网络服务的灵活性和响应速度。
简化运维与创新:NFV支持自动化管理和编排,简化了网络运维,同时加速了新服务的上市时间,促进了网络服务的创新。
成本效益:通过共享硬件资源和自动化管理,NFV有助于降低资本支出(CAPEX)和运营支出(OPEX)。
虚拟网络功能(VNFs):如上所述,是传统网络设备功能的软件实现版本。
虚拟化基础设施(VI):提供计算、存储和网络资源的底层硬件平台,通常基于云计算技术。
NFV管理和编排(MANO)架构:
NFV与软件定义网络(SDN)常常相提并论,两者都是推动网络现代化的关键技术。SDN关注于网络控制平面与数据平面的分离以及网络流量的灵活控制,而NFV则聚焦于网络功能的软硬件解耦和虚拟化。两者结合使用,可以进一步提升网络的灵活性、可编程性和效率。
本文章使用limfx的vscode插件快速发布