DPDK 网络数据包转发处理开源项目

我要开发同款
匿名用户2017年03月18日
25阅读
开发技术C/C++
所属分类高性能网络开发库、程序开发
授权协议BSD

作品详情

Intel®DPDK全称IntelDataPlaneDevelopmentKit,是Intel提供的数据平面开发工具集,为Intelarchitecture(IA)处理器架构下用户空间高效的数据包处理提供库函数和驱动的支持,它不同于Linux系统以通用性设计为目的,而是专注于网络应用中数据包的高性能处理。目前已经验证可以运行在大多数Linux操作系统上,包括FreeBSD9.2、Fedorarelease18、Ubuntu12.04LTS、RedHatEnterpriseLinux6.3和SuseEnterpriseLinux11SP2等。DPDK使用了BSDLicense,极大的方便了企业在其基础上来实现自己的协议栈或者应用。 

需要强调的是,DPDK应用程序是运行在用户空间上利用自身提供的数据平面库来收发数据包,绕过了Linux内核协议栈对数据包处理过程。Linux内核将DPDK应用程序看作是一个普通的用户态进程,包括它的编译、连接和加载方式和普通程序没有什么两样。

总体结构

主要有以下几个核心

网络层模块

内存管理模块

内核管理模块

网络模块总体分析

DPDK对从内核层到用户层的网络流程相对传统网络模块进行了特殊处理,下面对传统网络模块结构和DPDK中的网络结构做对比

传统linux网络层:

硬件中断--->取包分发至内核线程--->软件中断--->内核线程在协议栈中处理包--->处理完毕通知用户层用户层收包-->网络层--->逻辑层--->业务层

dpdk网络层:

硬件中断--->放弃中断流程用户层通过设备映射取包--->进入用户层协议栈--->逻辑层--->业务层

对比后总结:

dpdk优势:

减少了中断次数。

减少了内存拷贝次数。

绕过了linux的协议栈,进入用户协议栈,用户获得了协议栈的控制权,能够定制化协议栈降低复杂度

dpdk劣势

内核栈转移至用户层增加了开发成本.

低负荷服务器不实用,会造成内核空转.

查看全文
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论