随笔分类 - 文档阅读
一些技术框架的文档翻译,以及自己的一些理解
摘要:4.1 数据包分片(Packet fragmentation) 数据包分片例程(fragmentation routines)用于将输入的数据包划分成多个片段。 函数 rte_ipv4_fragment_packet() 和 rte_ipv6_fragment_packet() 都假设: 输入的 m
阅读全文
摘要:3.1 简介 DPDK 的成员库(Membership Library)为 DPDK 应用提供了一套 API,用于将新成员插入集合、从集合中删除已有成员,或者查询某个成员是否属于某个集合,或者某组集合。对于集合组的情况,该库不仅可以判断一个元素是否曾被插入,还能返回它属于哪一个集合。 成员库是对传统
阅读全文
摘要:DPDK 提供了一个哈希库,用于创建哈希表以实现快速查找。哈希表是一种数据结构,经过优化,可以快速地在一组条目中进行搜索,每个条目都有一个唯一的键来标识它。为了提高性能,DPDK 的哈希要求所有的键具有相同的字节数,这个字节数是在哈希创建时设置的。 2.1 哈希 API 概览 哈希表的主要配置参数包
阅读全文
摘要:DPDK 提供了一个 Toeplitz 哈希库(Toeplitz Hash Library),用于计算 Toeplitz 哈希函数以及利用其特性进行相关操作。 Toeplitz 哈希函数是一种常见的散列算法,被广泛用于多种网络接口卡(NIC)中,用于计算 接收端散列(RSS,Receive Side
阅读全文
摘要:DPDK 通常将每个 pthread(线程)绑定到一个 CPU 核心上,以避免任务切换带来的开销。 这种方式能显著提升性能,但缺乏灵活性,且在某些情况下效率并不高。 电源管理功能可以通过限制 CPU 的运行频率来提升能效。然而,作为替代方案,也可以利用 CPU 空闲周期,进一步发挥其全部性能。 借助
阅读全文
摘要:EAL是什么 EAL:Environment Abstraction Layer,环境抽象层。EAL 是 DPDK 最核心的基础模块之一,它负责整个运行环境的初始化,包括 CPU、内存、设备的配置与绑定。通过提供统一的抽象接口,EAL 隐藏了操作系统与硬件的复杂性,为上层应用程序提供了一个干净、可移
阅读全文
摘要:内存管理 - 4. 多进程支持 DPDK 的设计目标是提升网络数据包的处理性能。多进程支持使得多个 DPDK 进程能够协作执行任务,从而提高并行处理能力,减少资源竞争,并且能够处理更大规模的网络流量。DPDK有两种不同的进程类型,一种是主进程,一种是从进程; 主进程可以进行初始化,对内存有完全的权限
阅读全文
摘要:Packet(MBuf)库概述: 这个库提供了分配和释放缓冲区(mbuf)的能力,DPDK 应用可以使用这些缓冲区来存储各种类型的数据,比如: 网络数据包(最常见) 控制信息(control data) 事件(events) 或其他需要临时存储的数据 这些 mbuf 缓冲区的底层是通过 Mempoo
阅读全文
摘要:在 DPDK 中,每个内存池通过一个名字进行标识,并通过一种称为 mempool handler 的机制来管理空闲对象。默认的 handler 是基于 环形队列(ring-based) 的实现。 内存池还提供一些可选功能,例如: 每核独立缓存(per-core object cache) 对象对齐工
阅读全文
摘要:DPDK 官方文档阅读 - Lcore Variables 1、Lcore variable 是什么? 逻辑核变量是DPDK框架为每个核心分配的变量,这个变量代表着框架为一个逻辑核保存的可以自定义的变量,可以使用这个变量来访问这个变量所代表的核心的内容,访问这个变量需要逻辑核变量具柄,他是一个指向变
阅读全文

浙公网安备 33010602011771号