dpdk03-概念补充

简介: dpdk03-概念补充

dpdk03-概念补充

DPDK(Data Plane Development Kit)是一个由Intel主导开发的开源项目,主要用于快速数据包处理。DPDK提供了一组库和驱动程序,用于加速网络数据包的转发和处理,从而帮助用户绕过内核协议栈,直接在用户空间处理数据包,实现高性能的网络数据处理。

DPDK的主要特点和优势包括:

  1. 高性能:DPDK通过用户空间的数据包处理,避免了内核与用户空间之间的上下文切换和数据拷贝,从而显著提高了数据包的处理速度。
  2. 灵活性:DPDK允许用户自定义数据包的处理逻辑,包括路由、转发、过滤、修改等,这使得用户可以灵活地构建满足自己需求的网络功能。
  3. 可编程性:DPDK支持使用C/C++等高级语言进行开发,使得开发者能够更加方便地编写和调试网络应用。
  4. 多平台支持:DPDK支持多种操作系统和硬件平台,包括Linux、BSD、x86、ARM等,这使得DPDK具有广泛的适用性。

DPDK的主要应用场景包括:

  1. 数据中心网络:在数据中心网络中,DPDK可以帮助提高网络转发性能和降低延迟,从而提升整个数据中心的性能。
  2. 虚拟化和云计算:在虚拟化和云计算环境中,DPDK可以提高虚拟机之间的网络性能,并支持各种网络功能虚拟化(NFV)应用。
  3. 网络安全:DPDK可以用于构建高性能的防火墙、入侵检测系统(IDS)等网络安全设备,提高网络安全性能。
  4. 物联网(IoT):在物联网领域,DPDK可以帮助实现高性能的边缘计算和数据处理,满足物联网设备对实时性和性能的要求。

首先我们来看一张流程图

这是网络数据的传输流程:

  • 网卡:AD转换,接受模拟信号,转化为数字信号
  • 网卡驱动:将数据传入内核
  • 内核态协议栈:处理解析数据包,等待用户态的读取
  • VFS:提供用户态和内核态的交互
  • Application:用户态读取数据

dpdk在哪里?

没错,dpdk不再那个路径里面,他就像一个外挂一样,可以读取数据包

注意,这里需要区分一下dpdk和抓包的概念:

  • 抓包:抓包更加强调一种hook的功能
  • dpdk:直接截获网卡数据。就是说数据不从上面那条路径走,直接总dpdk。

关于dpdk的路径

上面说道,dpdk直接接管了网卡,那么他和内核态协议栈的中间的箭头又是哪里来的呢?我们来看一下上一节的环境配置过程

首先先看43和44

插入uio和vfio都是在这个位置:

  • uio:UIO是对PCI地址的通用io
  • vfio:虚拟功能io

45

KNI是内核网络接受卡,可以将dpdk数据写入内核协议栈。

关于巨页

巨页(Huge Pages)是一种操作系统内存管理技术,用于提高大型应用程序的性能和效率。传统上,操作系统将内存划分为较小的页面(通常为4KB),以便进行管理和分配。但是对于某些特定的工作负载,如数据库、虚拟化和大规模计算等,使用较大的页面可以带来更好的性能。

巨页技术将内存划分为更大的页面(通常为2MB或1GB),这样就减少了内存表项(Page Table Entry)的数量,提高了TLB(Translation Lookaside Buffer)缓存命中率,并减少了内存碎片化。这使得处理大量数据时可以更高效地访问和操作内存。

巨页需要操作系统和应用程序的支持,在Linux环境下可以通过特定参数配置启用巨页功能,并在应用程序中进行相应调整。使用巨页可能会带来一些额外的复杂性和管理成本,但对于适合使用它的特定工作负载而言,可以获得显著的性能优势。

对于网卡来说,并没有什么高并发的方法,只有网络数据吞吐量的大小。在面对数据大量吞吐的情况下,内存的缺失是一个很大的瓶颈,巨页可以增大dpdk的吞吐量。

后面想到什么再添加。

相关文章
|
存储 测试技术 Linux
添加E1000网卡进行测试,只有VMXNET3性能的四分之一
添加E1000网卡进行测试,只有VMXNET3性能的四分之一
|
网络协议 Unix Linux
有了协程库,开发DPDK应用程序第一次可以这么简单
使用PhotonLibOS协程库,以多执行单元并发的代码模型代替原先的异步回调模型,简化DPDK应用程序的开发。同时使用echo server验证了 用户态TCP/IP协议栈+轮询模式驱动 对比 内核原生协议栈+中断模式驱动 的性能优势
10304 0
有了协程库,开发DPDK应用程序第一次可以这么简单
|
Linux API 调度
深入了解DPDK:如何优化网络包处理性能(上)
深入了解DPDK:如何优化网络包处理性能
深入了解DPDK:如何优化网络包处理性能(上)
|
虚拟化
dpdk00-前期准备
dpdk00-前期准备
|
存储 开发框架 Linux
DPDK学习之DPDK边界
DPDK学习之DPDK边界
334 0
|
存储 网络协议 测试技术
DPDK新手入门必读五本书籍
DPDK新手入门必读五本书籍
|
存储 Linux 编译器
Linux平台上DPDK入门指南:快速提升网络性能的利器
Linux平台上DPDK入门指南:快速提升网络性能的利器
|
Ubuntu 编译器
dpdk01-安装
dpdk01-安装
|
弹性计算 负载均衡 监控
加权最小连接数算法介绍
加权最小连接数算法介绍
634 6