rte_mbuf原理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

rte_mbuf原理
rte_mbuf是DPDK(Data Plane Development Kit)库中的一个重要数
据结构,它表示报文内存存储结构,主要用来存储从网卡收发的报文,但也可以用于存储控制消息、事件等各种数据。

rte_mbuf主要由元信息和数据两部分组成,这两部分存放在一个连续
的内存块中。

元信息描述了数据的属性,如报文类型、数据长度与起
始地址、RSShash值等。

元信息位于mbuf头部,且被设计得足够小,
目前占用两个cache lines,其中访问最频繁的信息位于第一个cache line。

rte_mbuf的数据结构定义中包括几个与数据有关的变量,如
buf_addr(虚拟地址)、data_off(数据偏移量)、pkt_len(总包长度)、data_len(数据长度)、buf_len(整个buf的大小)等。

rte_mbuf整个用来存数据的buf包括headroom、data和tailroom三
个区域。

Headroom区域默认128字节,可以通过宏
RTE_PKTMBUF_HEADROOM调整。

Data区域一般指的是地址区间在
buf_addr + data_off到buf_addr + data_off + data_len,即
data_len就是这段数据的长短。

Tailroom一般指的是data_len还未
包含的东西,默认其实data_len是0。

在rte_mbuf的设计中,考虑到内存的利用率和访问速度,采用了内存
池(mempool)的方式来管理这些mbuf。

使用环形缓冲区保存空闲对象,
可以高效地分配和回收内存。

相关文档
最新文档