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的吞吐量。

后面想到什么再添加。

相关文章
|
1月前
|
存储 缓存 数据处理
简述计算机X86架构
【10月更文挑战第3天】本文介绍了计算机的基本工作原理,重点阐述了CPU(中央处理器)及其组成部分:运算单元、数据单元和控制单元的功能。文中解释了CPU通过总线与内存等设备通信的过程,并详细描述了指令执行的步骤,包括指令获取、数据处理和结果存储。此外,还介绍了地址总线和数据总线的作用,以及段寄存器在内存管理中的应用。最后,提供了一些基本的CPU指令示例。文中配有多幅插图帮助理解。
|
6月前
|
监控 Linux 编译器
Linux C++ 定时器任务接口深度解析: 从理论到实践
Linux C++ 定时器任务接口深度解析: 从理论到实践
236 2
|
6月前
|
存储 缓存 算法
作者推荐 | 【底层服务/编程功底系列】「底层技术原理」史上最清晰的采用程序员的视角方式进行深入探索Linux零拷贝技术原理及实现
作者推荐 | 【底层服务/编程功底系列】「底层技术原理」史上最清晰的采用程序员的视角方式进行深入探索Linux零拷贝技术原理及实现
59 0
|
芯片
一文搞懂I2C协议-硬件基础
I2C总线是由飞利浦在80年代初设计的,以允许位于同一电路板上的组件之间能够轻松通信。其大大简化了电路的设计,早期的电视机中很多地方用到了I2C这种通信方式。飞利浦半导体于2006年迁移到了NXP。I2C名称翻译为“ Inter IC”。有时,该总线称为IIC或I²C总线。I2C总结的基本的特征
1165 0
嵌入式开发学习之--通讯的基本概念
嵌入式开发学习之--通讯的基本概念
嵌入式开发学习之--通讯的基本概念
|
芯片 开发者 ice
3.2基础概念:硬件调试器概念及配置方法|学习笔记
快速学习3.2基础概念:硬件调试器概念及配置方法
3.2基础概念:硬件调试器概念及配置方法|学习笔记
|
域名解析 缓存 网络协议
《网络是怎么样连接的》读书笔记 - 认识网络基础概念(一)(下)
《网络是怎么样连接的》读书笔记 - 认识网络基础概念(一)(下)
426 0
|
XML 存储 域名解析
《网络是怎么样连接的》读书笔记 - 认识网络基础概念(一)(上)
《网络是怎么样连接的》读书笔记 - 认识网络基础概念(一)(上)
319 0
|
资源调度 5G 调度
MAC 子层 | 带你读《5G 空口设计与实践进阶 》之十二
MAC(Media Access Control)子层主要负责逻辑信道和传输信道的承接以及对无线资源的调度。
MAC 子层  | 带你读《5G 空口设计与实践进阶 》之十二
|
缓存 5G 调度
RLC 子层 | 带你读《5G 空口设计与实践进阶 》之十一
RLC(Radio Link Control)子层主要提供无线链路控制功能,为上层提供分割、重传控制以及按需发送等服务。RLC 子层包含透明模式(TM,TransparentMode)、非确认模式(UM,Unacknowledged Mode)和确认模式(AM,Acknowledged Mode)3 种传输模式,主要提供纠错、分段、重组等功能。
RLC 子层  | 带你读《5G 空口设计与实践进阶 》之十一