DPDK Programmer's Guide(1)
介绍 Roadmap 本文主要讲述 软件体系结构和如何使用它,尤其是在linux环境下 DPDK的内容、编译系统(包括可以在root下使用Makefile去编译开发工具和程序)、移植程序的准则 软件中的优化和在一个新的开发中需要重新考虑的问题 相关的出版物 下列的文档中使用DPDK开发应用程序: Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 3A: System Programming Guide 概述 这部分对DPDK给了一个全局的概述. DPDK主要的目标是去提供一个简单、完整的框架在数据平面的程序中快速的进行数据包处理。用户可能使用代码去理解一些已经应用的技术去部署上层的原型系统或者构建他们自己的协议栈。这些在使用DPDK的程序中的生态系统中都有可替代的产品。 这个框架通过环境抽象层(EAL)生成了一系列的库来对于一些特定的环境进行屏蔽,这可能是Intel 架构(32位或者64位)、linux下编译器或者一些特定的平台。这些环境通过使用makefile和configuration file来进行配置。一旦EAL被生成用户就可以使用这个库文件来创建他们自己的应用程序。在EAL之外的库,例如hash,LPM(longest prefix match)和rings库也在DPDK中提供。样例程序也对用户提供帮助,并向他们展示如何使用多种多样的DPDK的特点。 DPDK实现运行一个完整的包处理模型,所有的资源在调用前必须被提前分配,程序运行就像执行单元一样在逻辑CPU核心上运行。这个模型不支持任务调度并且所有的设备需要通过轮询的方式进行访问。不使用中断的主要原因是中断处理的性能开销大了。 开发环境 DPDK项目安装需要Linux和相关的工具链,如一个或者更多的编译器、汇编器、make工具、编辑器和多种库文件来生成DPDK的组件和库。 指定的环境和构架的库文件生成好后,就可以用来创建用户数据层的应用程序。 在Linux用户空间中生成一个程序,glibc库是需要使用的。对于DPDK应用程序,编译之前需要有两个环境变量(RTE_SDK 和RTE_TARGET)被配置。下面是如何配置这个环境变量的例子: export RTE_SDK=/home/user/DPDK export RTE_TARGET=x86_64-native-linuxapp-gcc `` 具体参考_DPDK Getting Started Guide_ 来如何建立开发环境 + EAL(环境抽象层) EAL提供一个普通的应用程序接口来隐藏不同环境的差异,EAL提供的服务如下: + DPDK的加载和登陆 + 支持多核和多线程执行 + CPU内核指定 + 系统内存分配释放 + 原子锁操作 + 时间引用 + PCI总线访问 + 跟踪和调试函数 + CPU特点识别 + 中断处理 + 闹钟?操作 EAL更详细的描述参见第三章...