前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SDN实战团技术分享(三十八):DPDK助力NFV与云计算

SDN实战团技术分享(三十八):DPDK助力NFV与云计算

作者头像
SDNLAB
发布于 2018-03-29 10:12:33
发布于 2018-03-29 10:12:33
3.1K0
举报
文章被收录于专栏:SDNLABSDNLAB

DPDK最初动机很简单,网络处理器的软件解决方案,证明IA多核处理器能够支撑高性能数据包处理。

什么是DPDK?对于用户来说,它可能是一个出色的包数据处理性能加速软件库;对于开发者来说,它可能是一个实践包处理新想法的创新工场;对于性能调优者来说,它可能又是一个绝佳的成果分享平台。DPDK在主流Linux包含,比如Debian, Fedora,Redhat, Ubuntu, FreeBSD

DPDK代码在www.dpdk.org上自由提交,软件发布时间是1年4次,分别是2017年2月、5月8月和11月。本质上,是一个软件优化。进一步讲,是对Linux的网络运行环境进行优化。

一张图示,大致包含这些软件模块,最核心的是Core与PMD。PMD- 基于轮询的用户态驱动。轮询,这一点很直接,为了避免中断上下文切换的开销。LINUX也采用该方法改进对大吞吐数据的处理,效果很好。

用户态驱动,在这种工作方式下,既规避了不必要的内存拷贝又避免系统调用。一个间接的影响在于,用户态驱动不受限于内核现有的数据格式和行为定义。有个假设: 很多应用都是在用户态,亲和性和独占,DPDK工作在用户态,线程的调度仍旧依赖内核。利用线程的CPU亲和绑定的方式,特定任务可以被指定只在某个核上工作。

好处是避免线程在不同核间频繁切换,核间线程切换容易导致因cache miss和cache write back造成的大量性能损失。如果更进一步地限定某些核不参与linux系统调度,就能使线程独占该核,保证更多cache hit的同时,也避免了同一个核内的多任务切换开销。

降低访存开销,网络数据包处理是一种典型的I/O密集型(I/O bound)工作负载。无论是CPU指令还是DMA,对于内存子系统(Cache+DRAM)都访问频繁。利用一些已知的高效方法来减少访存的开销能够有效提升性能。比如利用内存大页能有效降低TLB miss,比如利用内存多通道的交错访问能有效提高内存访问的有效带宽,再比如利用对于内存非对称性的感知可以避免额外的访存延迟,比如Hugepage。

DPDK很强调软件优化,四处吸取营养,比如结构的cache line对齐(cache alignment),比如数据在多核间访问避免跨cache line共享(false sharing),比如适时地预取数据(prefeching),再如多元数据批量操作(multi-buffer)。简单说,可以在一个例子中阅读,著名的l3fwd(链接http://www.dpdk.org/browse/dpdk/tree/examples/l3fwd)

DPDK 大量利用IA新硬件技术,DDIO,SIMD等等。在网卡驱动上,花了很多力,充分挖掘网卡的潜能,经过DPDK I/O加速的数据包通过PCIe网卡进入到系统内存,PCIe外设到系统内存之间的带宽利用效率、数据传送方式(coalesce操作)等都是直接影响I/O性能的因素。DPDK充分利用网卡硬件加速特性,比如RSS, FDIR,Checksum Offload, TSO 等等。结合网卡多队列技术,1G/10G/25G/40G/100G的低成本线速转发。

虚拟化是资源的逻辑表示,DPDK大力推动网络虚拟化。靠得是SR-IOV和VIRTIO,我们在NFV容器化下,引入了VIRTIO-user的概念,SR-IOV是PCI-e透传技术, 将物理网卡切片,直接透传到虚拟机。DPDK VF性能很高,可以实现线速转发,借助多核,大量的虚机可以并行运行,这是NFV的主要方式之一。

VIRTIO 是一种半虚拟化的设备抽象接口规范, 现代数据中心中大量采用的是KVM下vSwitch的主要Host/Guest接口,DPDK实现了VIRTIO前端,也就是虚机侧的轮训驱动,在主机侧、后端,实现了VHOST-user的轮训驱动,这个就构成了对vSwitch加速的基础。

http://www.dpdk.org/browse/dpdk/tree/drivers/net/vhost、http://www.dpdk.org/browse/dpdk/tree/drivers/net/virtio这是驱动程序所在地,Intel的网卡驱动http://www.dpdk.org/browse/dpdk/tree/drivers/net/i40e 这是XL710系列;http://www.dpdk.org/browse/dpdk/tree/drivers/net/ixgbe 这个是著名的82599系列。

我们是将容器网络优化,也放入DPDK中,关键在于VIRTIO-user。

这种方式可以在容器上运行VIRTIO-PMD,对接主机侧ovs-dpdk,类似OVS-DPDK加速机制,实现性能提升,2016年,DPDK的另外一大发展就是Cryptodev,我们最近推了一篇文章(http://mp.weixin.qq.com/s/fwRehoM5NTVLU6V_Bud-AQ)里面解释的比较详细,需要提一点,这个API,VPP 17.01 Release开始加入DPDK Cryptodev Support。

什么是VPP? 请移步 https://fd.io/ The Fast Data Project (FD.io),他们是这么说的,“Relentlessly focused on data IO speed and efficiency for more flexible and scalable networks and storage。”Cisco开源了矢量化的报文处理(VPP)。

VPP 17.01 Release开始加入DPDK Cryptodev的支持,用于IPsec处理。

DPDK的API提供了Crypto软件实现,硬件加速实现。预计以后在IA实现100Gbps IPsec是轻松搞定了

究竟DPDK有什么成功案例?

这些都是公开的开源项目信息,商业公司也不少,国内Alibaba, UCLOUD都在DPDKSummit做过公开演讲。

利用DPDK加速NFV(邓辉 中国移动)

利用DPDK优化云基础设施(孙成浩 阿里巴巴)

构建core以及高能效应用的最佳实践(梁存铭 Intel)

基于英特尔ONP构建虚拟化的IP接入方案(欧亮 中国电信)

DPDK加速无线数据核心网络(陈东华 中兴)

电信业务场景下的数据面挑战(刘郡 华为)

利用DPDK优化云基础设施 - 这是Alibaba 2015年的公开演讲,https://dpdksummit.com/us/en/past-events 可以查找2015,UCLOUD 2016年讲过他们的Load Balancer。TopSec 交流过将DPDK移植到内核态的历程,最后也回到了用户态,电信的成功案例不细说了。今年在上海,我们预期5月中旬还有新一期DPDK Summit,欢迎踊跃投稿参与。

Q&A

Q:vpp可以用来做协议解析框架吗

A:协议解析网卡也能offload一些,但在低层协议上L2/L3/L4,协议识别的关注点可能在高层上,应用类的识别比较复杂,还有国情,肯定VPP现在还不行。作为起点,开始接受报文的协议处理,是不错的选择,可以把这个问题扔到VPP社区里,问问他们的路标如何?

Q:请问DPDK在DPI深度包检测方面的应用如何? 具体实施有应用案例?

A: DPDK被广泛使用在DPI中, DPI是一个复杂的系统,DPDK关注解决报文进出,Hyperscan是Intel贡献给业界的一个核心复杂算法,可以用于正则表达式与字符串查找,在4月8日北京有个Hyperscan Workshop,我们会有具体案例分析

Q:请教个问题,nfv中dpdk一直loop对服务器性能消耗太高,virtio中断模式是否有资料能简单介绍一下?

A: 是的,我们早就注意到了这个问题,在2015年的DPDK Summit讲座中,梁存铭就做了专题,讨论引入中断模式,可以参考l3fwd-power这个sample以及相应文档,virtio interrupt 最近都有提交patch

Q:ovs-dpdk 和SR-IOV, 哪个适合企业数据中心的云计算?

A: 使用sr-iov还是vSwitch,取决于上层应用,见仁见智,sr-iov需要依赖硬件做报文过滤与分发,vSwitch是软件解决方法,决策点还是在数据中心的设计者,如何设计上层应用以及业务的弹性与跨平台(live migration),vSwitch提供了通用性,和具体网卡解耦合,易于做迁移,升级,但是性能稍差,SR-IOV性能好,具体部署还是需要看业务部署的需求

Q:如果服务器应用例如nginx mysql不使用内核协议栈和内核驱动,使用dpdk加用户态协议栈,有这样的用法没有?

A: dpdk加用户态协议栈 - 业界有广泛实践mTCP, SeaStar等等很多user space stack, 在FD.io上,也有两个项目,TLDK与VPP Stack,都在快速发展中

Q:能否形象地解释一下dpdk和sr-iov这两种技术的区别吗?仅仅是对网络性能优化软、硬件两种不同方案,还是本身就不在一个层次,或者是互补功能

A:sr-iov可以在Linux内核驱动 或者DPDK用户态中使用,SR-IOV是规范,DPDK是软件

Q:基于DPDK可以做通用上层应用平台吗?无修改兼容己有成熟软件

A; 应该可以的, 可以学习Alibaba的案例胶片

Q:如果不用sr-iov,而使用ovsdpdk,加dpdk-user,nfv最高性能理论上最高能达到多少?

A:这取决于你的模型,不同数量的vm,以及不同的traffic流得到的数据是不一样的,涉及到使用多少CPU资源在后端,多少CPU资源在前端,后续可以专门讨论一下这个话题。

Q:我理解dpdk更好的开发了报文处理的并行性 想请问下dpdk何种机制用来提升线程或进程间通信性能 例如统计计数 qos会需要到 dpdk有特殊设计么?

A:dpdk提供了很多种优化的技术,不仅仅是并行性的优化。进程间通信可以用shared memory和rte_ring,具体可以参考代码里的案例,比如 multi process

Q:dpdk +docker有人用吗

A:dpdk运行在容器中,是当下最流行的一个用法,可以sr-iov, 可以virtio-user作为进入容器的高速接口

Q:后面版本有什么新功能?

A:DPDK Roadmap会发布在网站上,http://www.dpdk.org/dev/roadmap

Q:DPDK以后会提供运行期修改Qos配置的功能吗?

A:现在就可以动态配置Qos的,可以参考最近推出的QoS API,不过,支持高复杂度的QoS的网卡还不多,抽象层的API才推出来,后续会继续完善

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-04-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SDNLAB 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
《深入浅出DPDK》&《DPDK应用基础》读书笔记
本文主要介绍了我在阅读《深入浅出DPDK》,《DPDK应用基础》这两本书中所划下的知识点
没有故事的陈师傅
2020/11/19
4.5K0
《深入浅出DPDK》&《DPDK应用基础》读书笔记
云计算与虚拟化硬核技术内幕 (18) —— 《凉州词》的故事
因此,秦少游在宿主机上引入了DPDK的同时,还增加了一块可编程的SmartNic。
用户8289326
2022/09/08
1.4K0
云计算与虚拟化硬核技术内幕 (18) —— 《凉州词》的故事
Virtio网络的演化之路
作为一个开放的标准接口,virtio一直在云计算与虚拟化中扮演着重要的角色。而virtio网络接口,作为virtio标准支持下最复杂的接口之一,在虚拟机/容器网络加速、混合云加速中一直扮演着重要角色。本文将在读者对virtio标准与虚拟化有一定了解的前提下,介绍virtio网络架构从创造之初到如今的演化之路。
虚拟化云计算
2019/11/18
8.3K0
【重识云原生】第四章云网络4.9.3.1节——DPDK技术综述
        数据平面开发套件(DPDK [1]  ,Data Plane Development Kit)是由6WIND,Intel等多家公司开发,主要基于Linux系统运行,用于快速数据包处理的函数库与驱动集合,可以极大提高数据处理性能和吞吐量,提高数据平面应用程序的工作效率。
江中散人_Jun
2022/09/08
1.6K0
【重识云原生】第四章云网络4.9.3.1节——DPDK技术综述
NFV中:DPDK与SR-IOV应用场景及性能对比
DPDK与SR-IOV两者目前主要用于提高IDC(数据中心)中的网络数据包的加速。但是在NFV(网络功能虚拟化)场景下DPDK与SR-IOV各自的使用场景是怎样的?以及各自的优缺点?
Flowlet
2022/08/18
1.7K0
NFV中:DPDK与SR-IOV应用场景及性能对比
【重识云原生】第四章云网络4.7.4节vhost-user方案——virtio的DPDK卸载方案
        在 vhost_net 的方案中,由于 vhost_net 实现在内核中,guest 与 vhost_net 的通信,相较于原生的 virtio 方式性能上有了一定程度的提升,从 guest 到 kvm.ko 的交互只有一次用户态的切换以及数据拷贝。这个方案对于不同 host 之间的通信,或者 guest 到 host nic 之间的通信是比较好的,但是对于某些用户态进程间的通信,比如数据面的通信方案,openvswitch 和与之类似的 SDN 的解决方案,guest 需要和 host 用户态的 vswitch 进行数据交换,如果采用 vhost_net 的方案,guest 和 host 之间又存在多次的上下文切换和数据拷贝,为了避免这种情况,业界就想出将 vhost_net从内核态移到用户态。这就是 vhost-user 的实现。
江中散人_Jun
2022/06/27
2.3K0
【重识云原生】第四章云网络4.7.4节vhost-user方案——virtio的DPDK卸载方案
虚拟化硬件加速-vdpa
惠伟:virtio+ovs转发原理和性能分析​zhuanlan.zhihu.com
惠伟
2021/07/28
5.9K0
【重识云原生】第四章云网络4.7.5节vDPA方案——virtio的半硬件虚拟化实现
        Virtio作为一种半虚拟化的解决方案,其性能一直不如设备的pass-through,即将物理设备(通常是网卡的VF)直接分配给虚拟机,其优点在于数据平面是在虚拟机与硬件之间直通的,几乎不需要主机的干预。而virtio的发展,虽然带来了性能的提升,可终究无法达到pass-through的I/O性能,始终需要主机(主要是软件交换机)的干预。vDPA(vhost Data Path Acceleration)即是让virtio数据平面不需主机干预的解决方案。该框架由Redhat提出,实现了virtio数据平面的硬件卸载。控制平面仍然采用原来的控制平面协议,当控制信息被传递到硬件中,硬件完成数据平面的配置之后,数据通信过程由硬件设备(智能网卡)完成,虚拟机与网卡之间直通。中断信息也由网卡直接发送至虚拟机不需要主机的干预。这种方式,控制面比较复杂,硬件难以实现。
江中散人_Jun
2022/06/30
2.6K0
【重识云原生】第四章云网络4.7.5节vDPA方案——virtio的半硬件虚拟化实现
软硬件融合技术内幕 进阶篇 (3) —— 云计算的六次危机 (上)
所谓的“数据中心税”,指的是数据中心计算、存储、网络等基础资源虚拟化后带来的开销。
用户8289326
2022/12/12
8210
软硬件融合技术内幕 进阶篇 (3) —— 云计算的六次危机 (上)
软硬件融合技术内幕 进阶篇 (4) ——云计算的六次危机(中)
云计算数据平面发生危机,一般是因为计算机CPU性能的线性增长,难以跟上网络带宽的指数提升,及其带来的“数据中心税”的增加。
用户8289326
2022/12/12
7090
软硬件融合技术内幕 进阶篇 (4) ——云计算的六次危机(中)
智能网卡的网络加速技术
2021年9月25日,由“科创中国”未来网络专业科技服务团指导,江苏省未来网络创新研究院、网络通信与安全紫金山实验室联合主办、SDNLAB社区承办的2021中国智能网卡研讨会中,多家机构谈到了智能网卡的网络加速实现,我们对此进行整理,以飨读者。
SDNLAB
2021/10/21
7.4K0
【重识云原生】第四章云网络4.9.4.1节——智能网卡SmartNIC方案综述
        网卡(Network Interface Card,简称NIC)是将电脑接入局域网的设备,网卡插在计算机主板的总 线插槽中,负责将用户要传递的数据转换为网络设备能够识别的格式,通过网络介质传输。
江中散人_Jun
2022/09/08
2.6K0
【重识云原生】第四章云网络4.9.4.1节——智能网卡SmartNIC方案综述
Ovs+Dpdk简单实践
一、Dpdk简介 Dpdk是X86平台报文快速处理的库和驱动的集合,不是网络协议栈,不提供二层,三层转发功能,不具备防火墙ACL功能,但通过DPDK可以轻松的开发出上述功能。优势在于通过Dpdk,可以
SDNLAB
2018/04/02
3K0
Ovs+Dpdk简单实践
云计算与虚拟化硬核技术内幕 (16) —— 抄作业的熊孩子
在上一期,我们留下了一个问题:如何通过让专业的人做专业的事,提升虚拟化网元vSwitch的性能?
用户8289326
2022/09/08
5460
云计算与虚拟化硬核技术内幕 (16) —— 抄作业的熊孩子
详解:网络虚拟化卸载加速技术的演进
在传统的应用场景中,服务器资源过剩情况普遍,为了充分利用服务器资源,产生了虚拟化技术。虚拟化技术以牺牲部分效率为代价提升了资源的使用率,将原来需要硬件完成的工作,通过软件模拟的方式,满足多个云租户的需要。随着5G、8K等新型业务的不断涌现,应用系统对性能提出了更高的要求,云服务也出现了满足不同QoS要求的分化,有(物理机、裸金属)等不同产品形态。各个功能模块的衔接配合,各租户之间的信息交互都需要高效的网络系统来实现。
SDNLAB
2021/11/17
2.3K0
【重识云原生】第四章云网络4.9.1节——网络卸载加速技术综述
网络offload主要是指将原本在内核网络协议栈中进行的IP分片、TCP分段、重组、checksum校验等操作,转移到网卡硬件中进行,CPU的发包路径更短,消耗更低,提高处理性能。
江中散人_Jun
2022/07/12
3.3K0
【重识云原生】第四章云网络4.9.1节——网络卸载加速技术综述
DPDK 全面分析
随着云计算产业的异军突起,网络技术的不断创新,越来越多的网络设备基础架构逐步向基于通用处理器平台的架构方向融合,从传统的物理网络到虚拟网络,从扁平化的网络结构到基于 SDN 分层的网络结构,无不体现出这种创新与融合。
Linux云计算网络
2018/03/19
5.2K1
DPDK 全面分析
软硬件融合技术内幕 进阶篇 (5) ——云计算的六次危机(下)
在前几期,我们发现,正如生产关系与生产力之间的相互作用那样,低效的虚拟化数据平面工作机制,会严重约束云计算生产力的发展。
用户8289326
2022/12/13
9620
软硬件融合技术内幕 进阶篇 (5) ——云计算的六次危机(下)
一文看懂DPDK
从我们用户的使用就可以感受到网速一直在提升,而网络技术的发展也从1GE/10GE/25GE/40GE/100GE的演变,从中可以得出单机的网络IO能力必须跟上时代的发展。
Willko
2018/08/29
66.3K12
DPDK virtio-user
virtio-user 是 DPDK 针对特定场景提出的一种解决方案,它主要有两种场景的用途,一种是用于 DPDK 应用容器对 virtio 的支持,这是 DPDK v16.07 开始支持的;另一种是用于和内核通信,这是 DPDK v17.02 推出的。 virtio_user 用于容器网络 我们知道,对于虚拟机,有 virtio 这套半虚拟化的标准协议来指导虚拟机和宿主机之间的通信,但对于容器的环境,直接沿用 virtio 是不行的,原因是虚拟机是通过 Qemu 来模拟的,Qemu 会将它虚拟出的整个 K
Linux云计算网络
2018/05/28
4.2K0
推荐阅读
相关推荐
《深入浅出DPDK》&《DPDK应用基础》读书笔记
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档