dpdk03-概念补充
DPDK(Data Plane Development Kit)是一个由Intel主导开发的开源项目,主要用于快速数据包处理。DPDK提供了一组库和驱动程序,用于加速网络数据包的转发和处理,从而帮助用户绕过内核协议栈,直接在用户空间处理数据包,实现高性能的网络数据处理。
DPDK的主要特点和优势包括:
- 高性能:DPDK通过用户空间的数据包处理,避免了内核与用户空间之间的上下文切换和数据拷贝,从而显著提高了数据包的处理速度。
- 灵活性:DPDK允许用户自定义数据包的处理逻辑,包括路由、转发、过滤、修改等,这使得用户可以灵活地构建满足自己需求的网络功能。
- 可编程性:DPDK支持使用C/C++等高级语言进行开发,使得开发者能够更加方便地编写和调试网络应用。
- 多平台支持:DPDK支持多种操作系统和硬件平台,包括Linux、BSD、x86、ARM等,这使得DPDK具有广泛的适用性。
DPDK的主要应用场景包括:
- 数据中心网络:在数据中心网络中,DPDK可以帮助提高网络转发性能和降低延迟,从而提升整个数据中心的性能。
- 虚拟化和云计算:在虚拟化和云计算环境中,DPDK可以提高虚拟机之间的网络性能,并支持各种网络功能虚拟化(NFV)应用。
- 网络安全:DPDK可以用于构建高性能的防火墙、入侵检测系统(IDS)等网络安全设备,提高网络安全性能。
- 物联网(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的吞吐量。
后面想到什么再添加。