dpdk中文-mbuf的基本操作

mbuf是报文中的描素的结构体,是整个转发过程中最核心的数据结构之一。主要针对于mbuf的常用API与基本原理做一个简单的介绍:
首先我们看一下rte_mbuf的数据结构的定义:先主要说明几个跟数据有关的变量
struct rte_mbuf {
。。。。
void *buf_addr; /**< Virtual address of segment buffer. */
。。。。
uint16_t data_off;
。。。。
uint32_t pkt_len; /**< Total pkt len: sum of all segments. */
uint16_t data_len; /**< Amount of data in segment buffer. */
uint16_t buf_len
。。。
}
既然叫mbuf,其实就是一种buf管理的结构体:

如上图所示:
mbuf整个用来存数据的buf就是上图所示的内容。
一般数据都会有分3个区域;
1。headroom
2。data
3。tailroom
其实这个中间还包含一个含义,整个buf的大小。 也就是数据结构中的buf_len的大小一般是4096
其中headroom一般含义是:
保留区域headroom:一般用来存放用户自己针对于mbuf的一些描素信息,一般保留给用户使用,可以通过修改mbuf头文件,来实现headroom的大小;data_off的默认值就是mbuf的headroom的大小;默认就是128。如果要定义超过这个范围的私有字段,请自行修改 RTE_PKTMBUF_HEADROOM

数据字段:data。data区域一般指的是地址区间在data_off+buf_addr 到data_off+data_len+buf_add即,data_len就是这段数据的长短,这个data_len一般都是通过mbuf的几个基本操作,或者通过赋值来实现的。
tailroom:一般指的是,data_len还未包含的东西。默认其实data_len是0。所以说默认来说tailroom应该是占了很大的空间的;
其实mbuf的控制,就是不断的控制这个几个区域的大小,永远记住,我们的报文数据永远是存放在data中的;主要控制的就是data_off 与data_len
至于pkt_len在普通情况下,就是核data_len是一个大小,在大报文的时候,就是两个mbuf通过链表组合起来的~
mbuf几个基本操作以及注意点:

rte_pktmbuf_prepend
移动data_off指针,注意:需要查看返回值,如果已经偏移到headroom的时候,会返回NULL; (报文向前扩容),例如报文从应用层往下,一层一层的封装就用这个。
rte_pktmbuf_append
改变data_len的长度 ,返回改变前的尾地址。 (向后扩容)
例如先有首部再填数据字段,就可以用这个
rte_pktmbuf_adj
(首部向后缩小空间) 改变data_off的值 从二层到三层转发,去二层头就可以用这个
rte_pktmbuf_trim
(尾部向前缩小空间) 移动data_len减少buf_len;(预分配的内容太大,数据没那么大可以用这个)
总结:
这4个API就是我们常见的调整数据部分大小,其实用法和API的名字和内核的skbuf类似。

rte_pktmbuf_mtod
rte_pktmbuf_mtod_offset
这两个API就是就是返回buf_addr+data_off +useroff 然后再强制类型转换一下而已~~
只是mtod这个API默认是useroff ==0而已。就是把数据data部分的首指针返回。
注意:
这个API其实是不安全的,往这个地址里面copy内容的时候,注意数据的长度~。。
有用的连接:
http://www.cnblogs.com/ziding/p/4214499.html
http://blog.csdn.net/todd911/article/details/24182551
其实mbuf不仅仅可以用来装报文~~只要是数据缓存都可以~~~~



  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: DPDK中文编程指南PDF是一份介绍DPDK编程的指南文档,可供开发人员快速学习和掌握DPDK编程技术。DPDK是一种高性能数据包处理框架,可实现高速网络数据包的捕获和处理。因此,它在高速网络、云计算、虚拟化等领域具有广泛的应用价值。 DPDK中文编程指南PDF主要介绍了DPDK的基本概念、各种数据包处理功能、调试方法等方面的知识。这些内容包括DPDK的基本组成部分、程序的开发和编译、应用程序的实现、快速报文转发框架等方面的知识。此外,该指南还深入探讨了DPDK的各种技术和应用场景,包括虚拟化、SDN、NFV和5G等领域的应用。 通过DPDK中文编程指南PDF,用户可以快速了解DPDK的功能和性能特点,并通过实战案例学习如何使用DPDK进行高效的数据包处理。DPDK中文编程指南PDF还提供了大量的代码示例,方便开发人员直接进行二次开发和扩展。无论是研究还是实践,这份指南都是学习DPDK编程技术的必备资料。 ### 回答2: DPDK(Data Plane Development Kit,数据面开发工具包)是一个由英特尔主导的开源软件项目,它提供了一系列的库和驱动程序,可用于快速开发高性能数据平面应用程序。DPDK 中文编程指南 PDF 是一本介绍 DPDK 如何使用的书籍,为广大开发人员提供了很好的参考资料。 这本书从 DPDK 的基本概念和架构开始讲解,逐步引领读者了解 DPDK 的原理及其使用方法。它通过具体的示例介绍 DPDK 常见的应用场景,如网络包的捕获、分析、转发等。此外,它还介绍了 DPDK 各种核心组件的使用方法,例如 mempool、ring 环、MBUF 等,以及如何使用 DPDK 构建高性能应用程序等。 DPDK 中文编程指南 PDF 是一本很好的技术书籍,为中国的开发者提供了学习 DPDK 的便利。它不仅介绍了 DPDK 的核心概念和应用场景,还通过示例代码深入浅出地介绍了 DPDK 的各种特性和用法。因此,这本书对于那些需要开发高性能数据平面应用程序的开发人员来说是一本不可替代的参考书籍。 ### 回答3: 《DPDK 中文编程指南 PDF》是一本介绍如何使用DPDK(Data Plane Development Kit)开发高性能网络应用程序的指南。DPDK是由英特尔公司开发的一种用户态协议栈库,它旨在帮助开发人员加速网络数据包处理的速度。本指南包含详细的介绍和说明,从基础知识到高级技术,适合初学者和有经验的开发人员使用。指南采用了易于理解的语言和丰富的图表,使读者能够了解DPDK的体系结构和应用程序开发的基本概念。您将学习如何使用DPDK的各种功能,例如流处理、管理、队列、调度、缓存、安全等。除了基础知识,本指南还介绍了DPDK在云计算、虚拟化、SDN、NFV等领域的应用和使用方法。总而言之,这本指南是一份高质量的资料,可以帮助您快速入门DPDK,在开发高性能网络应用程序方面有所突破。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值