DPDK2.1开发者手册1-2

Programmer’s Guide

Release 2.1.0

翻译的目的是强化自己对dpdk的理解,看看2.1版本和现在使用的版本的差异,其次就是可能要走了,为那些要上手dpdk,但是又不想看英文资料的同志们做贡献,英语不好,有些地方可能是自己理解的不对,或者是理解了翻译不出来,看到不咋对的还是去看英文资料对照一下吧,请叫我红领巾,哈哈哈。

  1. 引言

文档提供了关于软件架构.开发环境的信息和优化指导.

对于范例程序和编译指令以及运行每个例子的星系,请查看<DPDK Sample Applications User Guide>

对于编译和运行程序总的说明见<DPDK Getting Started Guide>就是那个dpdk2.1开发入门手册。

1.1  文档总览

这个还是参见入门手册吧,每个文档都有这个….

1.2  相关的出版物

下面这个文档提供了使用dpdk开发程序相关的资料:

Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 3A: System Programming Guide

Part1:架构概览

  1. 概要

这部分提供了DPDK架构概览。dpdk的目的是针对数据平台上快速包处理,提供一个简单的,完整的框架。用户使用代码来理解一些技术细节,在其之上开发协议或者是计入自己的协议栈。这两者使用dpdk都是可以实现的。

dpdk框架通过建立一个EAL来实现创建一系列的针对特定环境的库,这是对于intel32/64位架构,linxu用户态编译或者是特定平台的特殊模式。这些环境的创建时通过使用Make文件和配置文件。一旦EAL库创建,用户会将其连接到自己创建的程序上。在EAL之外的其它库,包括哈希算法,最长前缀匹配,ring操作这些库也都提供。范例程序用来向用户展示如何使用dpdk的各种特性。

dpdk实现了包处理的完整的模式,在调用数据平台处理程序前需要分配所有的资源,执行单元运行在逻辑处理核上。(这个我理解的是相对于物理核,intel的超线程将其弄成了两个逻辑核,啥时候看到农企的超线程啊)。这种模式下不支持系统调度和所有的网卡设备都是轮询方式的访问。不使用中断的方式就是因为中断处理程序对性能的影响(深有感触啊)。

此外对于那种运行到完成的模式,管道模式就是通过使用ring在核之间传递报文或者是消息也被用到。这就可以使得工作被分割成多步在不同的核上执行,这样代码运行的更加有效,计算性能用的更彻底。

2.1  开发环境

这部分还是看入门手册吧,感觉有点重叠了。

2.2  环境抽象层EAL

EAL提供了通用的接口,而隐藏了和环境相关的细节。EAL提供的服务有:

l  DPDK加载和启动

l  支持多进程和多线程的执行方式

l  cpu亲和性的设置

l  系统内存的分配和释放

l  原子操作

l  定时器

l  访问PCI总线

l  调试功能

l  CPU 编号

l  中断处理

l  告警操作内存管理

详细信息看第三章《EAL》

2.3  核心模块

核心模块的一系列库对高性能包处理程序提供了所有必须的接口。

Fig.2.1:核心模块结构

2.3.1 ring管理(librte_ring)

ring结构提供了一个无锁的多生产者,多消费者的先进先出的对指定大小表处理的API。它比无锁队列有很多好处,更容易部署,适合大量的操作且更快。ring在《Memory Pool Manager (librte_mempool)》中用到且可以最为不同的核之间或者是在逻辑核上的处理单元直接联系的通用通信机制。

ring 缓存和它的用法见《Ring Library》

2.3.2 Memory Pool管理(librte_mempool)

Memory Pool管理的职责是在内存中分配指定数目对象的pool。每个pool都有以名字区别的id且使用ring来存储未使用的对象。它还提供了其它服务,例如对应core的处理对象入CPU缓存和自动对齐以确保对象都均匀相等处于每个内存通道上。内存pool的分配见《Mempool Library》

2.3.3 网络报文缓存管理(librte_mbuf)

mbuf库提供了创建和销毁buffer的能力,后者可能被dpdk程序用于存储消息缓存。消息缓存可以通过使用dpdk的mempool库在程序启动时创建且存于mempool中。这个库提供了API申请和释放mbufs,操作控制消息buffer(ctrlm-buf)用于普通的消息buffer,以及报文buffer(pktmbuf)用于传输网络报文。

具体看《Mbuf Library》

2.3.4 定时器管理(librte_timer)

这个库向dpdk执行单元提供定时器服务,提供异步执行某一个函数的能力。可以是周期性的调用,也可以是只有一次的调用。 使用EAL提供的定时器接口获取高精度时钟且能在每个核上基于需要初始化。

具体参见《timer libarary》

2.4  网卡的轮询模式驱动PMD架构

dpdk包含支持1gbe,10gbbe和40gbe的PMD,且提供虚拟的以太网控制器,设计成工作在非异步的情况下,基于信号的中断机制。

参见《Poll Mode Driver》

2.5  包转发算法支持

dpdk有哈希(librte_hash)和最长前缀匹配(LPM,librte_lpm)库来支持包转发。

详见《Hash Library》和《LPM Library》

2.6  librte_net

这个库收集了ip协议定义和方便的宏定义。这些都基于FreeBSD IP协议栈的代码且包含协议号(IP头用到的),ip相关的宏定义,IPv4和IPv6头结构和SCTP头结构。

时间: 2024-10-09 21:18:40

DPDK2.1开发者手册1-2的相关文章

前端开发者手册

这是任何人都可以用来学习前端的实践手册, 它概述并讨论了前端工程的实践: 该如何学习以及实践时该使用什么工具. 撰写该手册的目的有两个: 一是为潜在以及正在实践的前端开发人员提供一个包括学习资料和开发工具的专业资源; 二是该手册可以被管理者, CTO, 讲师和猎头用来作为洞察前端开发的实践. 该手册的内容支持Web技术(HTML, CSS, DOM, 和 JavaScript), 并且手册提供的解决方案都直接建立在这些开放的技术之上. 手册中所引用的素材和讨论都是最好的或者当前前端开发者们需要面

腾讯开发者手册

https://cloud.tencent.com/developer/devdocs 腾讯开发者手册是云+社区开发者共同维护的一个提供中文化编程基础技术教程的知识平台,提供了 HTML.CSS.Javascript.Python.Ruby.C.Go 等各种编程语言的基础知识. 热门手册 最受开发者关注的技术手册 Go 335K 人浏览   Redis 128.1K 人浏览   Docker 17 104.2K 人浏览   Nginx 133K 人浏览   Express 54.8K 人浏览  

《翻译》Intel 64 与 IA-32 架构软件开发者手册卷1翻译

<前言> 翻译自官方的PDF版手册,可以从下述站点下载英文原版: http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html 本博文将采用分段中英对照,不定期持续更新的方式进行翻译, 第一卷主要介绍了Intel 64 与 IA-32 的指令集体系结构与编程环境, 不仅对 windows 操作系统的开发人员与应用程序员极有帮助,对于 Unix/Linux 操作系统的

学霸数据处理项目之数据处理框架开发者手册

写在前面,本文将详细介绍学霸数据处理项目中的数据处理框架中每一个方法的意义及其一些在运行方面需要注意的细节,供开发人员使用,开发人员在阅读相关方法说明时请参照相关代码,对于本文中的错误和疏漏对您造成的不便深表歉意. 一.DataProcess.java 该类是后台处理程序的入口 1)main 该方法是整个处理程序的入口,方法中首先定义了两个文件state.json以及control.json,正如其名字一样,这两个方法的作用是控制该程序的启动和关闭,以及供前端网页界面获取后台处理程序的状态.之后

阮一峰 ---开发者手册

http://www.ruanyifeng.com/blog/developer/ http://www.ruanyifeng.com/blog/archives.html

【阿里云产品公测】以开发者角度看ACE服务『ACE应用构建指南』

?;ZnD(4?   评测介绍 1V-sibE   j|LOg 评测产品: 云引擎ACE服务 开发语言: PHP 评测人: mr_wid 评测时间: 2014年10月13日-19日 XV1XzG#C   .>p.k*vU   评测概要 9]:F!d/   fYlqaO4[   非常有幸能够申请到ACE的公测资格, 在本篇评测中, 笔者将以一个开发者的角度来对云引擎ACE服务进行介绍与使用.在本篇评测中, 您将看到: ACE能够做些什么 ACE应用的创建与发布 应用的配置与调试 ACE扩展服务的使

DPDK17.02入门手册

Linux环境下DPDK入门 Release 17.02.0 目录 Linux环境下DPDK入门... 1 1       引言... 2 2       资料集... 2 3       系统需求... 2 3.1        x86平台的先决条件BIOS设置... 2 3.2        编译DPDK. 3 3.3        运行DPDK程序... 3 4       编译DPDK源码... 5 4.1        安装DPDK和浏览源码... 5 4.2        安装DPD

微信开发之启用开发者模式(三)

一.准备环境 1.JDK1.6及以上版本 2.Eclipse 3.Tomcat 4.Ngrok 二.步骤 1.访问微信公众平台开发者手册  https://mp.weixin.qq.com/wiki  如下是接入规则(来自开发者手册):  开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带参数如下表所示: 参数 描述 signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数.nonce参数. time

开发者活动丨体验 aelf hello world 程序,分享2W美金ELF

aelf是一个去中心化的云计算平台,旨在通过可信.高效.安全的技术手段为各行业.组织.企业与终端用户赋能,提供最扎实.有效的区块链技术解决方案,帮助企业与个人更加便捷高效地部署智能合约. aelf的核心愿景是在区块链行业内构建一个类“LINUX生态”,为此aelf一直以来专注于定义和提供最基础的.关键的系统组件,针对区块链现有技术痛点,做出极大改进. 此次,为更好的推进项目进展.催生更多的优质应用,aelf将围绕开发者社区开展首期线上活动,通过体验aelf-boilerplate来熟悉aelf的