版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、DPDK数据平面开发套件(DPDK,DataPlaneDevelopmentKit)是由6WIND,Intel等多家公司开发,主要基于Linux系统运行,用于快速数据包处理的函数库与驱动集合,可以极大提高数据处理性能和吞吐量,提高数据平面应用程序的工作效率。1.1工作环境DPDK的环境抽象层向应用与函数库隐藏了底层环境的细节,因而能扩展到任何处理器上使用。就操作系统来说,它提供了对Linux和FreeBSD的支持。1.2工作原理DPDK使用了轮询(polling)而不是中断来处理数据包。在收到数据包时,经DPDK重载的网卡驱动不会通过中断通知CPU,而是直接将数据包存入内存,交付应用层软件通过DPDK提供的接口来直接处理,这样节省了大量的CPU中断时间和内存拷贝时间。1.3DPDK技术核心技术DPDK网络①网络协议栈dpdk-arpdpdk-icmpdpdk-udpdpdk-ipdpdk-tcp②dpdk组件dpdk-mpdpdk-acldpdk-knidpdk-timerdpdk-bpfdpdk-mbuf③dpdk经典项目dpdk-dnsdpdk-gatewaydpdk-natdpdk-ddosdpdk-firewall
dpdk-switchdpdk-pktgenDPDK框架①可拓展的矢量数据包处理框架vpp(c/c++)vpp命令详解mac/ip转发pluginddosnodeload_balancepluginNATpluginflowtablepluginvpp源码②DPDK的虚拟交换机框架OVS0vS三大组件ovs-vswitchd,ovsdb-server,openvswitch.ko0vS报文处理机制0vS4种数据路径VXLAN数据协议③golang的网络开发框架nff-go(golang)AntiddosFirewallIpsecnetcap④轻量级的switch框架snabb(lua)12vpnSnabbnfvIpfixlwaftr⑤高效磁盘io读写spdk©NVMe,I/OAT,IDXD,Virtio,VMD后端块设备NVMe/RBD/AIO存储服务bdev与Blobstore存储协议iSCSI,NVMe,vhost-scsiDPDK源码①内核驱动igb_uioVfiokni②内存MbufMempool③协议IpsecBpfPciFlow_classify④虚拟化VhostVirtio⑤cpuRcuRingSched⑥安全SecurityCryptodevcompressdev性能测试①性能指标吞吐量
bps拆链/建链pps并发最大时延最小时延平均时延负载包速fps丢包率②测试方法测试用例vppsandboxperf3灌包rfc2544③测试工具perf3TrexTestpmdpktgen-dpdk1.4DPDK技术特点传统的数据包捕获瓶颈往往在于LinuxKernel,数据流需要经过LinuxKernel,就会带来KernelSpcae和UserSpace数据拷贝的消耗;系统调用的消耗;中断处理的消耗等。DPDK针对LinuxKernel传统的数据包捕获模式的问题,进行了一定程度的优化。DPDK的优化可以概括为:UIO+mmap实现零拷贝(zerocopy)UIO+PMD减少中断和CPU上下文切换HugePages减少TLBmiss其他代码优化内核弊端:1、中断处理:当网络中大量数据包到来时,会频繁产生中断请求,频繁的中断会产生较高的性能开销、并造成上下文的切换产生时延。2、内存拷贝:网络数据包到来时,网卡通过DMA等拷贝到内核缓冲区,内核协议栈再从内核空间拷贝到用户态空间,在Linux内核协议栈中,这个耗时操作甚至占到了数据包整个处理流程的57.1%。3、局部性失效:目前主流处理器都是多个CPU核心的,这意味着一个数据包的处理可能跨多个CPU核心。比如:一个数据包可能中断在cpu0,内核态处理在cpu1,用户态处理在cpu2,这样跨多个核心,容易造成CPU缓存失效,造成局部性失效。DPDK优点:从前面的分析得知目前网络IO的实现的方式中,内核是导致性能瓶颈的原因所在,要解决性能问题就需要绕过内核,直接在用户态收发包。1、内核bypass:通过UIO(UserspaceI/O)旁路数据包,实现用户态数据包收发,减少上下文切换以及内存拷贝。2、使用多核编程代替多线程编程:设置CPU的亲和性,将线程和CPU核进行一比一绑定,减少彼此之间调度切换。3、使用大页内存代替普通的内存:减少cache-miss。4、采用无锁技术:解决资源竞争问题。二、技术原理与架构由于采用软件转发和软件交换技术,单服务器内部的转发能力是NFV系统的主要性能瓶颈。在各类高速转发的NFV应用中,数据报文从网卡中接收,再传送到虚拟化的用户态应用程序(VNF)处理,整个过程要经历CPU中断处理、虚拟化I/O与地址映射转换、虚拟交换层、网络协议栈、内核上下文切换、内存拷贝等多个费时的CPU操作和I/O处理环节。业内通常采用消除海量中断、旁路内核协议栈、减少内存拷贝、CPU多核任务分担、IntelVT等技术来综合提升服务器数据平面的报文处理性能,普通用户较难掌握。业界迫切需要一种综合的性能优化方案,同时提供良好的用户开发和商业集成环境,DPDK加速技术方案成为其中的典型代表。DPDK是一个开源的数据平面开发工具集,提供了一个用户空间下的高效数据包处理库函数,它通过环境抽象层旁路内核协议栈、轮询模式的报文无中断收发、优化内存/缓冲区/队列管理、基于网卡多队列和流识别的负载均衡等多项技术,实现了在x86处理器架构下的高性能报文转发能力,用户可以在Linux用户态空间开发各类高速转发应用,也适合与各类商业化的数据平面加速解决方案进行集成。英特尔在2010年启动了对DPDK技术的开源化进程,于当年9月通过BSD开源许可协议正式发布源代码软件包,为开发者提供支持。开源社区的参与者们大幅推进了DPDK的技术创新和快速演进,而今它已发展成为SDN和NFV的一项关键技术。2.1软件架构DPDK的组成架构如下图所示,相关技术原理概述如下:图中,在最底部的内核态(LinuxKernel)DPDK有两个模块:KNI与IGB_UIO。其中,KNI提供给用户一个使用Linux内核态的协议栈,以及传统的Linux网络工具(如ethtool,ifconfig)。IGB_UIO(igb_uio.ko和kni.ko.IGB_UIO)则借助了UIO技术,在初始化过程中将网卡硬件寄存器映射到用户态。如图所示,DPDK的上层用户态由很多库组成,主要包括核心部件库(CoreLibraries)、平台相关模块(Platform)、网卡轮询模式驱动模块(PMD-Natives&Virtual)、QoS库、报文转发分类算法(Classify)等几大类,用户应用程序可以使用这些库进行二次开发,下面分别简要介绍。核心部件库该模块构成的运行环境是建立在Linux上,通过环境抽象层(EAL)的运行环境进行初始化,包括:HugePage内存分配、内存/缓冲区/队列分配与无锁操作、CPU亲和性绑定等;其次,EAL实现了对操作系统内核与底层网卡I/O操作的屏蔽(I/O旁路了内核及其协议栈),为DPDK应用程序提供了一组调用接口,通过UIO或VFIO技术将PCI设备地址映射到用户空间,方便了应用程序调用,避免了网络协议栈和内核切换造成的处理延迟。另外,核心部件还包括创建适合报文处理的内存池、缓冲区分配管理、内存拷贝、以及定时器、环形缓冲区管理等。平台相关模块其内部模块主要包括KNI、能耗管理以及IVSHMEM接口。其中,KNI模块主要通过kni.ko模块将数据报文从用户态传递给内核态协议栈处理,以便用户进程使用传统的socket接口对相关报文进行处理;能耗管理则提供了一些API,应用程序可以根据收包速率动态调整处理器频率或进入处理器的不同休眠状态;另外,IVSHMEM模块提供了虚拟机与虚拟机之间,或者虚拟机与主机之间的零拷贝共享内存机制,当DPDK程序运行时,IVSHMEM模块会调用核心部件库API,把几个HugePage映射为一个IVSHMEM设备池,并通过参数传递给QEMU,这样,就实现了虚拟机之间的零拷贝内存共享。轮询模式驱动模块PMD相关API实现了在轮询方式下进行网卡报文收发,避免了常规报文处理方法中因采用中断方式造成的响应延迟,极大提升了网卡收发性能。此外,该模块还同时支持物理和虚拟化两种网络接口,从仅仅支持Intel网卡,发展到支持Cisco、Broadcom、Mellanox、Chelsio等整个行业生态系统,以及基于KVM、VMWARE、XEN等虚拟化网络接口的支持。DPDK还定义了大量API来抽象数据平面的转发应用,如ACL、QoS、流分类和负载均衡等。并且,除以太网接口外,DPDK还在定义用于加解密的软硬件加速接口(Extensions)。2.2大页技术处理器的内存管理包含两个概念:物理内存和虚拟内存。Linux操作系统里面整个物理内存按帧(frames)来进行管理,虚拟内存按照页(page)来进行管理。内存管理单元(MMU)完成从虚拟内存地址到物理内存地址的转换。内存管理单元进行地址转换需要的信息保存在一个叫页表(pagetable)的数据结构里面,页表查找是一种极其耗时的操作。为了减少页表的查找过程,Intel处理器实现了一块缓存来保存查找结果,这块缓存被称为TLB(TranslationLookasideBuffer),它保存了虚拟地址到物理地址的映射关系。所有虚拟地址在转换为物理地址以前,处理器会首先在TLB中查找是否已经存在有效的映射关系,如果没有发现有效的映射,也就是TLSmiss,处理器再进行页表的查找。页表的查找过程对性能影响极大,因此需要尽量减少TLBmiss的发生。x86处理器硬件在缺省配置下,页的大小是4K,但也可以支持更大的页表尺寸,例如2M或1G的页表。使用了大页表功能后,一个TLB表项可以指向更大的内存区域,这样可以大幅减少TLBmiss的发生。早期的Linux并没有利用x86硬件提供的大页表功能,仅在Linux内核2.6.33以后的版本,应用软件才可以使用大页表功能,具体的介绍可以参见Linux的大页表文件系统(hugetlbfs)特性。DPDK则利用大页技术,所有的内存都是从HugePage里分配,实现对内存池(mempool)的管理,并预先分配好同样大小的mbuf,供每一个数据包使用。2.3轮询技术传统网卡的报文接收/发送过程中,网卡硬件收到网络报文,或发送完网络报文后,需要发送中断到CPU,通知应用软件有网络报文需要处理。在x86处理器上,一次中断处理需要将处理器的状态寄存器保存到堆栈,并运行中断服务程序,最后再将保存的状态寄存器信息从堆栈中恢复。整个过程需要至少300个处理器时钟周期。对于高性能网络处理应用,频繁的中断处理开销极大降低了网络应用程序的性能。为了减少中断处理开销,DPDK使用了轮询技术来处理网络报文。网卡收到报文后,直接将报文保存到处理器cache中(有DDIO(DirectDataI/O)技术的情况下),或者保存到内存中(没有DDIO技术的情况下),并设置报文到达的标志位。应用软件则周期性地轮询报文到达的标志位,检测是否有新报文需要处理。整个过程中完全没有中断处理过程,因此应用程序的网络报文处理能力得以极大提升。2.4CPU亲和技术现代操作系统都是基于分时调用方式来实现任务调度,多个进程或线程在多核处理器的某一个核上不断地交替执行。每次切换过程,都需要将处理器的状态寄存器保存在堆栈中,并恢复当前进程的状态信息,这对系统其实是一种处理开销。将一个线程固定一个核上运行,可以消除切换带来的额外开销。另外将进程或者线程迁移到多核处理器的其它核上进行运行时,处理器缓存中的数据也需要进行清除,导致处理器缓存的利用效果降低。CPU亲和技术,就是将某个进程或者线程绑定到特定的一个或者多个核上执行,而不被迁移到其它核上运行,这样就保证了专用程序的性能。DPDK使用了Linuxpthread库,在系统中把相应的线程和CPU进行亲和性绑定,然后相应的线程尽可能使用独立的资源进行相关的数据处理。2.5UIO技术dpdk能够绕过内核协议栈,本质上是得益于UIO技术,通过UIO能够拦截中断,并重设中断回调行为,从而绕过内核协议栈后续的处理流程。UIO设备的实现机制其实是对用户空间暴露文件接口,比如当注册一个UIO设备uioX,就会出现文件/dev/uioX,对该文件的读写就是对设备内存的读写。除此之外,对设备的控制还可以通过/sys/class/uio下的各个文件的读写来完成。2.6内存池技术dpdk在用户空间实现了一套精巧的内存池技术,内核空间和用户空间的内存交互不进行拷贝,只做控制权转移。这样,当收发数据包时,就减少了内存拷贝的开销。2.7大页内存管理dpdk实现了一组大页内存分配、使用和释放的API,上层应用可以很方便使用API申请使用大页内存,同时也兼容普通的内存申请。2.8无锁环形队列dpdk基于Linux内核的无锁环形缓冲kfifo实现了自己的一套无锁机制。支持单生产者入列/单消费者出列和多生产者入列/多消费者出列操作,在数据传输的时候,降低性能的同时还能保证数据的同步。2.9poll-mode网卡驱动DPDK网卡驱动完全抛弃中断模式,基于轮询方式收包,避免了中断开销。2.10NUMAdpdk内存分配上通过proc提供的内存信息,使CPU核心尽量使用靠近其所在节点的内存,避免了跨NUMA节点远程访问内存的性能问题。2.11多核调度框架dpdk基于多核架构,一般会有主从核之分,主核负责完成各个模块的初始化,从核负责具体的业务处理。三、DPDK在AWCloud中的应用DPDK(DataPlaneDevelopmentKit)数据平面开发工具集,为Intelarchitecture(IA)处理器架构下用户空间高效的数据包处理提供库函数和驱动的支持,它不同于Linux系统以通用性设计为目的,而是专注于网络应用中数据包的高性能处理。DPDK应用程序是运行在用户空间上利用自身提供的数据平面库来收发数据包,绕过了Linux内核协议栈对数据包处理过程。加速数据的处理,用户可以在用户空间定制协议栈,满足自己的应用需求。相对传统的基于内核的网络数据处理,DPDK对从内核层到用户层的网络数据流程进行了重大突破。DPDK功能用于加速云主机和物理主机处理网络数据包的速度。配合大页内存和CPUAffinity等一系列技术,绕过系统对网络数据包处理的繁琐过程,提升网络性能。云平台采用DPDK技术满足网络性能优化,如下图所示:3.1高性能网络技术传统的网络设备(交换机、路由器等)为了快速处理数据包而嵌入了NP处理器(NetworkProcess),内置硬件电路实现高速转发数据包。随着云计算的发展以CPU为核心、操作系统是linux,网络设备都是虚拟化,没有NP处理器。传统网络框架处理流程:随着云计算产业的异军突起,网络技术的不断创新,越来越多的网络设备基础架构逐步向基于通用处理器平台的架构方向融合,从传统的物理网络到虚拟网络,从扁平化的网络结构到基于SDN分层的网络结构,无不体现出这种创新与融合。这在使得网络变得更加可控制和成本更低的同时,也能够支持大规模用户或应用程序的性能需求,以及海量数据的处理。究其原因,其实是高性能网络编程技术随着网络架构的演进不断突破的一种必然结果。C10K到C10M问题的演进如今,关注的更多是C10M问题(即单机1千万个并发连接问题)。很多计算机领域的大佬们从硬件上和软件上都提出了多种解决方案。从硬件上,比如说,现在的类似很多40Gpbs、32-cores、256GRAM这样配置的X86
服务器完全可以处理1千万个以上的并发连接。但是从硬件上解决问题就没多大意思了,首先它成本高,其次不通用,最后也没什么挑战,无非就是堆砌硬件而已。所以,抛开硬件不谈,我们看看从软件上该如何解决这个世界难题呢?这里不得不提一个人,就是ErrataSecurity公司的CEORobertGraham,他在Shmoocon2013大会上很巧妙地解释了这个问题。他提到了UNIX的设计初衷其实为电话网络的控制系统而设计的,而不是一般的服务器操作系统,所以,它仅仅是一个数据负责数据传送的系统,没有所谓的控制层面和数据层面的说法,不适合处理大规模的网络数据包。最后他得出的结论是:OS的内核不是解决C10M问题的办法,恰恰相反OS的内核正式导致C10M问题的关键所在。基于OS内核的数据传输有什么弊端?1、中断处理。当网络中大量数据包到来时,会产生频繁的硬件中断请求,这些硬件中断可以打断之前较低优先级的软中断或者系统调用的执行过程,如果这种打断频繁的话,将会产生较高的性能开销。2、内存拷贝。正常情况下,一个网络数据包从网卡到应用程序需要经过如下的过程:数据从网卡通过DMA等方式传到内核开辟的缓冲区,然后从内核空间拷贝到用户态空间,在Linux内核协议栈中,这个耗时操作甚至占到了数据包整个处理流程的57.1%。3、上下文切换。频繁到达的硬件中断和软中断都可能随时抢占系统调用的运行,这会产生大量的上下文切换开销。另外,在基于多线程的服务器设计框架中,线程间的调度也会产生频繁的上下文切换开销,同样,锁竞争的耗能也是一个非常严重的问题。4、局部性失效。如今主流的处理器都是多个核心的,这意味着一个数据包的处理可能跨多个CPU核心,比如一个数据包可能中断在cpu0,内核态处理在cpu1,用户态处理在cpu2,这样跨多个核心,容易造成CPU缓存失效,造成局部性失效。如果是NUMA架构,更会造成跨NUMA访问内存,性能受到很大影响。5、内存管理。传统服务器内存页为4K,为了提高内存的访问速度,避免cachemiss,可以增加cache中映射表的条目,但这又会影响CPU的检索效率。6、协议栈的低效性。Linix诞生之初就是为电话电报控制而设计的,它的控制平面和数据转发平面没有分离,不适合处理大规模网络数据包。并且为了全面的支持用户空间的各个功能,协议栈中嵌入了大量用于对接的接口,如果能让应用程序直接接管网络数据包处理、内存管理以及CPU调度,那么性能可以得到一个质的提升。为了达到这个目标,第一个要解决的问题就是绕过Linux内核协议栈,因为Linux内核协议栈性能并不是很优秀,如果让每一个数据包都经过Linux协议栈来处理,那将会非常的慢。像WindRiver和6WindGate等公司自研的内核协议栈宣称比LinuxUDP/TCP协议栈性能至少提高500%以上,因此能不用Linux协议栈就不用。不用协议栈的话当然就需要自己写驱动了,应用程序直接使用驱动的接口来收发报文。PF_RING,Netmap和intelDPDK等可以帮助你完成这些工作,并不需要我们自己去花费太多时间。Intel官方测试文档给出了一个性能测试数据,在1SSandbridge-EP8*2.0GHzcores服务器上进行性能测试,不用内核协议栈在用户态下吞吐量可高达80Mpps(每个包处理消耗大约200cpuclocks),相比之下,使用Linux内核协议栈性能连1Mpps都无法达到。7、多核协同问题。多核的可扩展性对性能提升也是非常重要的,因为服务器中CPU频率提升越来越慢,纳米级工艺改进已经是非常困难的事情了,但可以做的是让服务器拥有更多的CPU和核心,像国家超级计算中心的天河二号使用了超过3w颗XeonE5来提高性能。在程序设计过程中,即使在多核环境下也很快会碰到瓶颈,单纯的增加了处理器个数并不能线性提升程序性能,反而会使整体性能越来越低。一是因为编写代码的质量问题,没有充分利用多核的并行性,二是服务器软件和硬件本身的一些特性成为新的瓶颈,像总线竞争、存储体公用等诸多影响性能平行扩展的因素。那么,我们怎样才能让程序能在多个CPU核心上平行扩展:尽量让每个核维护独立数据结构;使用原子操作来避免冲突;使用无锁数据结构避免线程间相互等待;设置CPU亲缘性,将操作系统和应用进程绑定到特定的内核上,避免CPU资源竞争;在NUMA架构下尽量避免远端内存访问综合以上问题,可以看出内核本身就是一个非常大的瓶颈所在。那很明显解决方案就是想办法绕过内核。3.2解决方案探讨针对以上弊端,分别提出以下技术点进行探讨:控制层和数据层分离。将数据包处理、内存管理、处理器调度等任务转移到用户空间去完成,而内核仅仅负责部分控制指令的处理。这样就不存在上述所说的系统中断、上下文切换、系统调用、系统调度等等问题。使用多核编程技术代替多线程技术,并设置CPU的亲和性,将线程和CPU核进行一比一绑定,减少彼此之间调度切换。针对NUMA系统,尽量使CPU核使用所在NUMA节点的内存,避免跨内存访问。使用大页内存代替普通的内存,减少cache-miss。采用无锁技术解决资源竞争问题。经很多前辈先驱的研究,目前业内已经出现了很多优秀的集成了上述技术方案的高性能网络数据处理框架,如wind、windriver、netmap、dpdk等,其中,Intel的dpdk在众多方案脱颖而出,一骑绝尘。DPDK目前支持的CPU体系架构包括x86、ARM、PowerPC(PPC),支持的网卡列表:包括主流使用Intel82599(光口)、Intelx540(电口)。dpdk全称dataplanedevelopmentkit(数据平面转发工具),为Intel处理器架构下用户空间高效的数据包处理提供了库函数和驱动的支持,数据包的控制层和数据层分开,dpdk绕过linux内核协议栈将数据包的接受处理放到应用层。也就是dpdk绕过了Linux内核协议栈对数据包的处理过程,在用户空间实现了一套数据平面来进行数据包的收发与处理。在内核看来,dpdk就是一个普通的用户态进程,它的编译、连接和加载方式和普通程序没有什么两样。四、DPDk应用场景dpdk作为优秀的用户空间高性能数据包加速套件,现在已经作为一个“胶水”模块被用在多个网络数据处理方案中,用来提高性能。如下是众多的应用。4.1网络虚拟化网络虚拟化是一种将物理网络资源虚拟化为多个逻辑网络资源的技术,它可以帮助企业节省网络设备成本,提高网络资源利用率。DPDK可以帮助网络虚拟化平台实现高性能、低延迟的数据包处理,从而提高虚拟网络的性能和可靠性。4.2云计算云计算是一-种将计算资源虚拟化为多个逻辑计算资源的技术,它可以帮助企业节省计算资源成本,提高计算资源利用率。DPDK可以帮助云计算平台实现高性能、低延迟的数据包处理,从而提高云计算的性能和可靠性。4.3网络安全网络安全是一种保护网络资源免受恶意攻击的技术,它可以帮助企业保护网络资源的安全性和可靠性。DPDK可以帮助网络安全平台实现高性能、低延迟的数据包处理,从而提高网络安全的性能和可靠性。4.45G通信5G通信是一-种新一代的移动通信技术,它可以帮助企业实现更快、更可靠的移动通信服务。DPDK可以帮助5G通信平台实现高性能、低延迟的数据包处理,从而提高5G通信的性能和可靠性。4.5数据面(虚拟交换机)OVS:OpenvSwitch是一个多核虚拟交换机平台,支持标准的管理接口和开放可扩展的可编程接口,支持第三方的控制接入。VPP:是cisco开源的一个高性能的包处理框架,提供了交换/路由功能,在虚拟化环境中,使它可以当做一个虚拟交换机来使用。在一个类SDN的处理框架中,它往往充当数据面的角色。经研究表明,VPP性能要好于ovs+dpdk的组合,但它更适用于NFV,适合做特定功能的网络模块。Lagopus:是另一个多核虚拟交换的实现,功能和OVS差不多,支持多种网络协议,如Ethernet,VLAN,QinQ,MAC-in-MAC,MPLS和PBB,以及隧道协议,如GRE,VxLan和GTP。Snabb:
是一个简单且快速的数据包处理工具箱。4.6数据面(虚拟路由器)OPENCONTRAIL:一个集成了SDN控制器的虚拟路由器,现在多用在OpenStack中,结合Neutron为OpenStack提供一站式的网络支持。CloudRouter:一个分布式的路由器。4.7用户空间协议栈mTCP:是一个针对多核系统的高可扩展性的用户空间TCP/IP协议栈。IwIP:针对RAM平台的精简版的TCP/IP协议栈实现。Seastar:是一个开源的,基于C++11/14feature,支持高并发和低延迟的异步编程高性能库。f-stack:腾讯开源的用户空间协议栈,移植于FreeBSD协议栈,粘合了POSIXAPI,上层应用(协程框架,Nginx,Redis),纯C编写,易上手。五、DPDK的影响力通信行业通信行业正逐步迁移至虚拟化,以便在其网络环境中增强弹性、灵活性和标准化,随着时间的推移,这种趋势的发展已经变得更加多元化。SDN、NFV、DPDK、Openflow和OpenvSwitch都得以使用。移动网的PGW网元和宽带网络的BRAS类转发设备,对转发性能有着非常高的要求。如果用x86架构的NFV服务器取代上述设备,由于Linux内核的限制和通用I/O报文读写方式,这种基于传统Linux和虚拟化技术的转发平面万兆端口普遍仅有1Gbit/s以内的转发能力;而目前的电信级硬件转发设备可以轻松做到64byte小报文不分组丢失线速转发。下一代防火墙持续优化网路安全需要不断改进防火墙的实施,这将受益于DPDK并不断发展。下一代防火墙也可以是NFV解决方案的一部分。用于简单数据分组过滤的基本防火墙已演进多年,可以执行更加高级的应用,比如入侵检测与防御(IPS)、网络杀毒、IPsec、SSL和应用控制等。这些功能均位于数据平台,要求对数据流进行深度数据包检查、具备加密和压缩功能,以及执行大量数据分组内容处理。下一代防火墙在设计时运用了采用DPDK的WindRiver网络加速平台以及QuickAssist。DPDK提供了相应的机制,支持通过其他高性能方法来替代Linux系统调用,从而避免Linux内核出现的常见问题。WindRiver网络加速平台能够加速Apache服务器等本机Linux应用,并为移植在网络加速引擎上的安全应用提供更高的加速性能。大数据分析关于涉及大数据分析的使用案例,Aspera公司与英特尔公司研究了超高速数据传输解决方案,该解决方案能够在裸机和虚拟化硬件平台上帮助商用互联网连接达到可预测的超高WAN传输速度,包括超过往返时间为数百毫秒的网络,以及常见远距离WAN几个百分点的数据分组丢失率。借助DPDK,软件工程师可减少收发数据分组所需的内存副本数量。Aspera公司因此成功地将测试系统上单个流数据的传输速度提高至37.75Gbit/s,加上以太网帧和IP数据分组标头,网络利用率达到了39Gbit/s。通过在基于内核的虚拟机(KVM)管理程序上进行测试,对虚拟化平台的传输性能开始了初步研究,并实现了16.1Gbit/s的初始传输速度。电网作为全球最大的电力公司,中国国家电网公司承担着向大约11亿人口供电的坚决任务。SGCC依赖高性能计算集群确保电网的安全和平稳运行。伴随着中国电网规模的不断扩大,SGCC急需增强其全数字实时仿真系统,以满足国家日益增长的电力供应需求。DPDK是其中一项关键组件,帮助将ADPSS的延迟降到50μs之内。这也是为3,000台发电机和30,000根电网线路创建大型电力系统仿真的必要条件。六、DPDK市场发展DPDK的大多数应用最初是在电信领域。随着CSP采用网络虚拟化来降低运营成本并加快新服务的部署,他们虚拟化了需要高吞吐量和/或低延迟的用例,例如路由器,防火墙,无线电访问网络(RAN)和演进的分组核心(EPC)。虚拟化平台的供应商,在这些情况下,VNF和应用程序已在其产品中利用了DPDK,以实现CSP的性能目标。随着CSP探索新的边缘托管应用,例如视频缓存,监控,增强现实(AR),辅助驾驶,零售和工业物联网,DPDK仍然是实现积极性能目标的关键技术。类似DPDK最先在电信应用程序中,对数据包处理功能的性能要求一样,DPDK越来越多地应用于企业和云当中。例如,在2018年,VMware引入了他们的NSX-T数据中心软件定义基础结构的基于DPDK的边缘配置。此版本的NSX-T地址需要具有可变数据包大小的高数据包吞吐量的应用程序以及支持具有以下功能的高速NIC的服务器高达100Gbps的北/南流量。通常,南北向流的包大小各不相同,数据包处理要求,即使它们只占总流量的不到20%。在此用例中,通过使用带有小数据包(64字节)的DPDK,英特尔和VMware的分析表明,性能提高了五倍。同时有几家公司已将DPDK用于金融应用,其中低延迟带来了巨大的竞争优势。例如,在高频交易(HFT)中,延迟会直接影响交易者的交易效率算法策略及其超越竞争对手的能力。信息周刊估计,对于一家大型经纪公司来说,一毫秒每年价值1亿美元。DPDK是这个市场解决方案供应商开发所依赖的关键技术。七、DPDK学习路线这里给大家推荐零声教育全网独家的【dpdk-网络协议栈-vpp-OVS-DDos-虚拟化技术】课程体系,通过32个项目案例,2W+行手写代码,全面解析4个dpdk技术方向:7.1DPDK网络专栏(1)dpdk基础知识1.多队列网卡,vmxnet/e10002.igb_uio与vfio模块3.kni模块4.hugepage的理解5.零拷贝6.dpdk与netmap区别7.dpdk的工作环境(2)网络协议栈1.sh静态arp表设置3.dpdk-icmp4.udp协议格式分析5.udp协议sendto,recvfrom实现6.dpdk-ip7.dpdk-tcp8.tcp协议栈bind,listen,accept实现9.tcp协议栈recv,send,close的实现10.tcp三次握手实现11.tcp四次挥手实现12.tcpacknum与seqnum的确认机制实现13.tcp的并发连接设计14.epoll并发的实现15.tcp协议栈与epoll之间的回调实现(3)dpdk组件项目1.dpdk-ac2.dpdk-kni3./dev/kni的原理分析4.kni_dev的流程5.kni的t缓冲区,rx缓冲区6.kni的用户空间与内核空间映射7.mbuf如何转化为kernel的sk_buff8.dpdk-timer9.bpftrace的使用10.dpdk-bpf源码流程(4)dpdk经典项目1.dpdk-dns2.dpdk-gateway3.dpdk-ddos熵计算源码4.ddosattach检测精确度调试5.ddosattach测试T具hping36.布谷鸟hash原理与使用7.2储存技术专栏(1)高效磁盘io读写spdk(C)1.存储框架spdk,为技术栈打开扇存储的大门2.spdk运行环境与vhost3.NVMe与PCl的关系4.手把手实现spdk_server5.nvme与pcie以及手写nvme读写操作6.bdev与blob之间的关系7.实现blob异步读写8.blobstore的读写操作实现与rpc的关系9.fio性能测试性能对比libaio,io_uring,psync10.fioplugin工作流程11.fioplugin开发(2)spdk文件系统的实现1.文件系统功能拆解2.spdk_env_init与spdk_appinit的差别3.spdk__thread_poll实现rpc回调4.fs_operations结构体定义5.file_operations结构体定义6.dir_operations结构体定义7.syscall的hook实现8.io内存管理9.基数树对文件系统内存管理10.spdk_blob的open,read,write,close11.测试用例与调试入口函数(3)spdkkv存储的实现1.KV存储拆解Set,Get,Mod,Del2.app/.a库/so库对于kv存储的选择3.bdev与blob对于kv存储的选择4.kvservice启动blob资源操作5.kvservice关闭blob资源回收6.kvservice接口set,get,modify,delete7.kv遍历与查找实现8.page存储chunk的管理9.pagechunk的get与put10.page单查找与多页查找11.btree,artree,hashmap,radixtree,rbtree之间的选择12.slab的实现13.slab分配slot与释放slot14.为kv加上conf文件15.测试用例与性能测试7.3安全与网关开发专栏(1)可扩展的矢量数据包处理框架vpp(c/c++)1.vpp命令详解2.mac/ip转发plugin3.load_balanceplugin4.flowtableplugin5.vpp源码之间的差异6.多网卡数据接收与转发7.解
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年泉州安溪县博物馆招考易考易错模拟试题(共500题)试卷后附参考答案
- 2026年河南郑州市中原区事业单位易考易错模拟试题(共500题)试卷后附参考答案
- 2026年河南省罗山县事业单位招考易考易错模拟试题(共500题)试卷后附参考答案
- 2026年河南濮阳市濮阳县事业单位招聘考试笔试易考易错模拟试题(共500题)试卷后附参考答案
- 2026年河南新乡封丘县招聘事业单位工作人员150人易考易错模拟试题(共500题)试卷后附参考答案
- 2026年河南商丘市人民政府办公室选聘市政府法律顾问6人易考易错模拟试题(共500题)试卷后附参考答案
- 2026年河南事业单位商丘睢县招考易考易错模拟试题(共500题)试卷后附参考答案
- 游乐公园景观设施建设方案
- 2026年河北省迁安市事业单位招考易考易错模拟试题(共500题)试卷后附参考答案
- 2026年河北省承德兴隆事业单位招聘(80人)易考易错模拟试题(共500题)试卷后附参考答案
- 2023-2025年语文全国中考真题分类汇编 专题22 议论文阅读
- 2025年招商银行笔试题库及参考答案
- 强化金融服务实体经济能力建议
- 国家能源集团陆上风电项目通 用造价指标(2025年)
- GB/T 15849-2025密封放射源的泄漏检验方法
- 国家能源集团陆上风电项目通 用造价指标(2024年)
- 银企合作意向协议书范本
- 西师大版小学数学6六年级下册(全册)教案
- 五年级上册小数四则混合运算100道及答案
- 鹅饲养管理技术规范标准
- 瘙痒性疾病的诊断和治疗
评论
0/150
提交评论