摘要: 4.1 数据包分片(Packet fragmentation) 数据包分片例程(fragmentation routines)用于将输入的数据包划分成多个片段。 函数 rte_ipv4_fragment_packet() 和 rte_ipv6_fragment_packet() 都假设: 输入的 m 阅读全文
posted @ 2025-04-27 22:36 Tohomson 阅读(121) 评论(0) 推荐(0)
摘要: 3.1 简介 DPDK 的成员库(Membership Library)为 DPDK 应用提供了一套 API,用于将新成员插入集合、从集合中删除已有成员,或者查询某个成员是否属于某个集合,或者某组集合。对于集合组的情况,该库不仅可以判断一个元素是否曾被插入,还能返回它属于哪一个集合。 成员库是对传统 阅读全文
posted @ 2025-04-26 16:44 Tohomson 阅读(84) 评论(0) 推荐(0)
摘要: DPDK 提供了一个哈希库,用于创建哈希表以实现快速查找。哈希表是一种数据结构,经过优化,可以快速地在一组条目中进行搜索,每个条目都有一个唯一的键来标识它。为了提高性能,DPDK 的哈希要求所有的键具有相同的字节数,这个字节数是在哈希创建时设置的。 2.1 哈希 API 概览 哈希表的主要配置参数包 阅读全文
posted @ 2025-04-25 22:44 Tohomson 阅读(140) 评论(0) 推荐(0)
摘要: DPDK 提供了一个 Toeplitz 哈希库(Toeplitz Hash Library),用于计算 Toeplitz 哈希函数以及利用其特性进行相关操作。 Toeplitz 哈希函数是一种常见的散列算法,被广泛用于多种网络接口卡(NIC)中,用于计算 接收端散列(RSS,Receive Side 阅读全文
posted @ 2025-04-22 22:46 Tohomson 阅读(318) 评论(0) 推荐(0)
摘要: DPDK 通常将每个 pthread(线程)绑定到一个 CPU 核心上,以避免任务切换带来的开销。 这种方式能显著提升性能,但缺乏灵活性,且在某些情况下效率并不高。 电源管理功能可以通过限制 CPU 的运行频率来提升能效。然而,作为替代方案,也可以利用 CPU 空闲周期,进一步发挥其全部性能。 借助 阅读全文
posted @ 2025-04-04 16:38 Tohomson 阅读(185) 评论(0) 推荐(0)
摘要: 内存池是什么? 内存池是一种提前申请好一块大内存,再从中按需划分固定/可变大小的内存块进行复用的技术。 内存的申请和释放操作不再频繁调用 malloc/free 或 new/delete,而是从池中“取”或“还”。 使用内存池的原因: 减少系统调用开销,提高性能; 系统的malloc/free需要陷 阅读全文
posted @ 2025-04-02 19:33 Tohomson 阅读(62) 评论(0) 推荐(0)
摘要: EAL是什么 EAL:Environment Abstraction Layer,环境抽象层。EAL 是 DPDK 最核心的基础模块之一,它负责整个运行环境的初始化,包括 CPU、内存、设备的配置与绑定。通过提供统一的抽象接口,EAL 隐藏了操作系统与硬件的复杂性,为上层应用程序提供了一个干净、可移 阅读全文
posted @ 2025-04-02 17:26 Tohomson 阅读(172) 评论(0) 推荐(0)
摘要: 内存管理 - 4. 多进程支持 DPDK 的设计目标是提升网络数据包的处理性能。多进程支持使得多个 DPDK 进程能够协作执行任务,从而提高并行处理能力,减少资源竞争,并且能够处理更大规模的网络流量。DPDK有两种不同的进程类型,一种是主进程,一种是从进程; 主进程可以进行初始化,对内存有完全的权限 阅读全文
posted @ 2025-04-01 19:23 Tohomson 阅读(213) 评论(0) 推荐(0)
摘要: 常见的池式结构:线程池、连接池、内存池、对象池、协程池、线程池 常见的“池式结构” 池类型 描述 应用场景 线程池(Thread Pool) 复用固定数量的线程来处理大量任务 并发服务器、任务调度系统 连接池(Connection Pool) 复用数据库连接、HTTP连接等资源 Web服务访问数据库 阅读全文
posted @ 2025-04-01 11:16 Tohomson 阅读(398) 评论(0) 推荐(0)
摘要: Packet(MBuf)库概述: 这个库提供了分配和释放缓冲区(mbuf)的能力,DPDK 应用可以使用这些缓冲区来存储各种类型的数据,比如: 网络数据包(最常见) 控制信息(control data) 事件(events) 或其他需要临时存储的数据 这些 mbuf 缓冲区的底层是通过 Mempoo 阅读全文
posted @ 2025-03-31 19:10 Tohomson 阅读(327) 评论(0) 推荐(0)