暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
DPDK架构图.pdf
262
1页
0次
2021-09-24
5墨值下载
DPDK
1.统的中断约消100微秒
还不Cache Miss 询模式驱(PMD)
PMD由用户空间的特定的驱序提供的API组成,用于对设备和它们相应的队列进行
置。
除中断,避免内核态和户态内存拷贝,减少系销,从而提升I/O吞吐能力
2.据必须从内核态用户态之间切换拷贝带来大量CPU耗,全局锁竞争。 用户态进数据处理
3.发包都有系统调用的开销。
Ring Queue
对单个或多个数据包生者、单个数据包消费者入队列提供无锁机制,效减
统开
HUGEPAGE
果有多个核可能需要同访问一个网卡,那DPDK中会为每个核准备单独的接
/发送队列,这样避免了竞争,也避免cache一致性问题。
用内存大HUGEPAGE降低TLB(Translation Lookaside Buffer) miss,利用内存多
道交错访问提高内存访有效带宽,低访存开
4.核工作在多核上,为可全局一致,即使采Lock Free,也避免了锁总线、内
屏障带来的性能损耗。
分类(Flow Classificatio) N元组匹配LPM最长缀匹配)提供优化的查算法
队列实现
过将网卡的某个接收队分配给某个核,从该队收到的所有报文都应当该指
核上处理结束,不同的操作不同的队列。
2种方
RSSReceive Side Scaling,接收方扩展)机制:根据关键字,比如UDP四元
<srcIP><dstIP><srcPort><dstPort>行哈
Flow Director制:可设定根数据包某些信息进行精匹配,分配到指定的队列与
CPU
data buffer
DPDK内存封装Mbuf结构体内Mbuf主要用来封装络帧缓存,所有的应用使
Mbuf结构来传输网络帧
网络帧封装和处理时,网络帧元数据和帧本身在固定大小的同一段缓中,
帧元数据的一部分内容DPDK网卡驱动
络包的分析和处理
网络数据包(帧)被网接收后,DPDK驱动将其存储在一个高冲区中,
MBUF中创MBUF对象与实际网络包相连对网络包的分析和处理会基于该
MBUF
要的时候才会访问缓冲中的实际网络
线程
DPDK线程基pthread口创属于抢占式线程模型,内核调度支配
过在多核设备上创建多线程,每个线程绑定到的核上,减少线程调度开销
提高性能
制线程一般绑定到MASTER,接受用户配置,并传配置参数给数据线程等
线程分布在不同核上处数据包。
据包转发模型
行至完成(run-to-completion)模型
步模
个报文的生命周期只能一个线程中出现,每个理核都负责处理整个报生命
RXTX
个指派给DPDK辑核心执行如下所示的
1.PMD收用API来提取输出数据包
2.转发,一一处理收到的据包
3.PMD送用API发送输出数据
(pipeline)模型
步模:有的核心只执行数据包提取而有的只执行处理,收的数据包在这
辑核心之间通过环来传
取核心执行循
1.PMD收用API来提取输出数据包
2.队列提供数据包给处理
理核心执行循
1.列中提取数据
2.重传(如果被转发)处数据
数据平面开发套件(DPDK [1] ,Data Plane Development Kit)6WIND,Intel等多
公司开发,主要基Linux系统运行,用于快据包处理的函数库与驱集合,可
极大提高数据处理性能和吞吐量,提高数据平面应程序的工作效率。
在数据平面应用中为快速的数据包处理提供一个简而完善的架构。在理解工具集之
后,开发人员可以以此为基础进行新的原型设计,简单地为我所用。
DPDK环境抽象层向应用与函数库隐藏了底环境的细节,因而能扩到任何处理器
上使
操作系统
linux
FreeBSD
DPDK
优点
性能
用户态开,一旦程序崩溃,不至于导致完蛋,带来更高的健壮
缺点
无网络协议栈
开发困难,周期长
核心Core Libs
环境抽象(EAL, Environment Abstraction Layer)
要负责对计算机底层资(如硬件和内存空间)访问,并对提供给用户的口实
实现细节的封装。其初化例程决定了如何分配资源PCI设备、计时器、控
EAL提供的典型服
载和启动DPDKDPDK其应用程序会被链接为单一应用,因需要通过某种方式
行加DPDK
CPU能识别:在运行时确定CPU支持特定功能,确定当CPU支持编译
的二进制指令集。
关联/分配过程EAL提供了将执行单元分配特定核并创建执行实例机制
留系统内存:EAL为预留不同的内存区域提供便利,例如用于设交互的物理内存区
PCI地址EAL提供了访PCI地址空间的接
断处理:向特定中断源/销回调的接口
踪和调试功能:日志、栈转储等
用的功能libc中所没有提供的自旋锁和原子计数器
钟功能:用于设置/删除在特定时间运行的回调函数口。
data manager
Malloc Library 提供分配任意大小内存API
Ring Library
供对一种特殊的链表队的管理,具有先进先出长、无锁、并发入/出队等特
点:工作更快,实现简,适用于块数据的/出队
Mempool Library
存池用于分配固定大小对象。在DPDK池用名字区分,并用环存储未使
对象
Mbuf Library 于分配和释放缓冲区给DPDK应用来存储缓息,使用上述的内存池存储
Extns(Packet manager)
Packet Framework
1.建造复杂的数据包处理管道提供标准方法
2.相同的管道程序块提供在纯软件和硬件加速这两种现间切换的能
3.灵活性和性能间找到最佳的折中方案
4.供逻辑上类似Open FlowSDN核心技术)的架构
Packet Distributor Library
于流量的动态负载均衡题。使用时,使用中的核心会被考虑为两种角:其
一个分配器核心,负责载均衡或数据包分配;是一群工人核心,负责分配
收数据包并对它们进行理。
点:定长、环多导致内占用增加
PMD Library
提供全用户态驱动,以便通过轮询和线程绑定得到高网络吞吐,支持各种地和虚拟
网卡
Classify Library 支持精确匹配,最匹配和通配符匹配,提用包处理的查表操作。
Qos Library 提供网络服务质量相关组件,限调度
KNI(Kernel NIC Interface)
了让数据包重入内核协栈,通过创建虚拟设备收发报文以达到利用内本身
现协议的目的
UIO:user-space drivers
作用
为高并发大流量网络开框架DPDK,能免内核中断爆炸和大量据拷贝的
,在用户空间能够直接硬件进行交互
原理 硬件操作映射到用户空kernel bypass
实现
1.运行在内核的UIO模块,因为硬只能在内核处
2.read知中通过/dev/uioX取中
3.mmap设共享内
驱动的作
理硬件产生的中断以及取硬件的内存区域数据
核态的职
配和记录设备需要的资和注uio
使能设
请资
取并记录配置信息
uio
*内核空间实现的小部分应答函数
户态职责
取中断事(read/poll)
理中(读写数据)
igb_uio
册一pci备,DPDKdpdk_nic_bind.pyNIC的时候这个驱动会probe
个设备,进行相关配置之后会注册一UIO设备probe数会记录设备的资
PCI设备BAR空间的物理地、大小等信息记录下来给用户态
DPDK
Hugepage
果有多个核可能需要同访问一个网卡,那DPDK中会为每个核准备单独的接
/发送队列,这样避免了竞争,也避免cache一致性问题。
2M1G字节
SNAShared-nothing Architecture 无共享架构,尽量避免全局共享来全局竞争,失去横向展的能力
SIMDSingle Instruction Multiple Data DPDK采用批量同时处理包,再用向量编程,一周期内对所有包进行处
Burst收发
Burst为一完成多个数据包的收发,通过把收发包复杂的处理程进行分解,打散
同的相对较小的处理阶,把相邻数据访问、相数据运算集中处理,尽能减
内存或者低一级的处理缓存的访问次
平台优化配置
网卡多队列收发包,支RSS时分发进多个队列
CPU以及设备的省电模
内存运行在所支持的最频率
核初始化时设置好大页
加内核启动参数,预先DPDK使用的逻核,不被操作系统调度
DPDK数配
包队列长度,即每个收队列分配的收包描述符(128)
包队列长度,即每个发队列分配的发包描述符(512)
包队列可释放描述符数阈值DPDK驱动序并没有每次收包都更新收包队列尾
引寄存器,而是在可释的收包描述符数量达到阈值时更新,设置合理可以
没有必要的过多收包队尾部索引寄存器的访问认值32.
包队列可释放描述符数阈值,通过将回写标记在一定间隔的发包描述上,
不必要的回写次数,改性能,默认为32.
包描述符释放阈值,当来重新配置的发包描述量少于阈值时,才会启描述
Mbuf释放动作,设置太大释频繁,影响性能,设置小可用描述符少,容易
,默认值32.
...
of 1
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜