四时宝库

程序员的知识宝库

dpdk核心组件图(dpdk kni)

DPDK是什么

详细教程资料+课件 关注+后台私信;资料;两个字可以免费视频领取+文档+各大厂面试题 资料内容包括:C/C++,Linux,golang,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,嵌入式 等。


详细教程资料+课件 关注+后台私信;资料;两个字可以免费视频领取

Intel? DPDK全称Intel Data Plane Development Kit,是intel提供的数据平面开发工具集,为Intel architecture(IA)处理器架构下用户空间高效的数据包处理提供库函数和驱动的支持,它不同于Linux系统以通用性设计为目的,而是专注于网络应用中数据包的高性能处理。具体体现在DPDK应用程序是运行在用户空间上利用自身提供的数据平面库来收发数据包,绕过了Linux内核协议栈对数据包处理过程。

DPDK的优点

性能高,用户易开发,死后易重启详细教程资料+课件 关注+后台私信;资料;两个字可以免费视频领取


DPDK的缺点

无网络协议栈,开发困难,周期长

DPDK架构

DPDK、网卡、用户应用程序、内核之间的关系。DPDK在网卡收到包后绕过内核直达用户空间。


DPDK的基本原理详细教程资料+课件 关注+后台私信;资料;两个字可以免费视频领取+文档+各大厂面试题 资料内容包括:C/C++,Linux,golang,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,嵌入式 等。


在虚拟化环境中,路径则会更长详细教程资料+课件 关注+后台私信;资料;两个字可以免费视频领取+文档+各大厂面试题 资料内容包括:C/C++,Linux,golang,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,嵌入式 等。

由于包处理任务存在内核态与用户态的切换,以及多次的内存拷贝,系统消耗变大,以CPU为核心的系统存在很大的处理瓶颈。为了提升在通用服务器(COTS)的数据包处理效能,Intel推出了服务于IA(Intel Architecture)系统的DPDK技术。

DPDK是Data Plane Development Kit的缩写。简单说,DPDK应用程序运行在操作系统的User Space,利用自身提供的数据面库进行收发包处理,绕过了Linux内核态协议栈,以提升报文处理效率。详细教程资料+课件 关注+后台私信;资料;两个字可以免费视频领取


DPDK是一组lib库和工具包的集合。最简单的架构描述如下图所示:

详细教程资料+课件 关注+后台私信;资料;两个字可以免费视频领取+文档+各大厂面试题 资料内容包括:C/C++,Linux,golang,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,嵌入式 等。


上图蓝色部分是DPDK的主要组件(更全面更权威的DPDK架构可以参考Intel官网),简单解释一下:

PMD:Pool Mode Driver,轮询模式驱动,通过非中断,以及数据帧进出应用缓冲区内存的零拷贝机制,提高发送/接受数据帧的效率

流分类:Flow Classification,为N元组匹配和LPM(最长前缀匹配)提供优化的查找算法

环队列:Ring Queue,针对单个或多个数据包生产者、单个数据包消费者的出入队列提供无锁机制,有效减少系统开销

MBUF缓冲区管理:分配内存创建缓冲区,并通过建立MBUF对象,封装实际数据帧,供应用程序使用

EAL:Environment Abstract Layer,环境抽象(适配)层,PMD初始化、CPU内核和DPDK线程配置/绑定、设置HugePage大页内存等系统初始化

这么说可能还有一点点抽象,再总结一下DPDK的核心思想:

用户态模式下的PMD Driver

– 去除了中断影响,减少了操作系统内核的开销,消除了IO吞吐瓶颈;

– 避免了内核态和用户态的报文拷贝;用户状态下软件崩溃,不会影响系统的稳定

定性;

– Intel提供的PMD驱动,充分利用指令和网卡的性能;

? HugePage和m_buf管理

– 提供2M和1G的巨页,减少了TLB Miss,TLB Miss严重影响报文转发性能;

– 高效的m_buf管理,能够灵活地组织报文,包括多buffer接收,分片/重组,

都能够轻松应对;

? Ring

– 无锁化的消息队列,实际验证,性能充足;

? 向量指令

– 明显的降低内存等待开销,提升CPU的流水线效率。

DPDK核心组件详细教程资料+课件 关注+后台私信;资料;两个字可以免费视频领取+文档+各大厂面试题 资料内容包括:C/C++,Linux,golang,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,嵌入式 等。

DPDK KNI模型

KNI(Kernel Interface)机制是为了让数据包重入内核协议栈,通过创建虚拟设备用于收发报文以达到利用内核本身已实现协议的目的。几个例子。如果利用DPDK做DNS服务器,那么对于TCP报文来说是没有必要处理的。完全可以用原有的内核协议来处理。如果自己实现TCP的协议栈会很复杂。



总结;

开始学习DPDK,将学习中的心得和分析记录下来,以免时间久了自己都忘记了,也便于和其他同道中人交流。
说是学习心得和体会,但也借鉴了书籍和其他网友的分析总结,在学习他人总结过程中发现介绍往往浅尝辄止,知其然不知其所以然,因此本学习总结希望可以从一个初学者的角度来介绍,尽量做到知其然及知其所以然,可能大家会觉得别人一两句话说完的事情这里用了一个章节来描述很啰嗦,但与其看10个千篇一律的短文,不如看一个略有啰嗦但全面的长文。个人能力有限,
详细教程资料+课件 关注+后台私信;资料;两个字可以免费视频领取+文档+各大厂面试题 资料内容包括:C/C++,Linux,golang,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,嵌入式 等。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接