DPDK核心代码

public void string main(String agrs[]){//获取课程vx 80407290
}

一、什么是DPDK

  对于用户来说,它可能是一个性能出色的包数据处 理加速软件库;对于开发者来说,它可能是一个实践包处理新想法的创 新工场;对于性能调优者来说,它可能又是一个绝佳的成果分享平台。 

  DPDK用软件的方式在通用多核处理器上演绎着数据包处理的新篇 章,而对于数据包处理,多核处理器显然不是唯一的平台。支撑包处理 的主流硬件平台大致可分为三个方向。
  ·硬件加速器
  ·网络处理器
  ·多核处理器

  在类似 IA(Intel Architecture)多核处理器为目标的平台上,网络数据包处理远早于DPDK而存在。从商业版的 Windows到开源的Linux操作系统,所有跨主机通信几乎都会涉及网络 协议栈以及底层网卡驱动对于数据包的处理。然而,低速网络与高速网 络处理对系统的要求完全不一样。

二、DPDK原理

网络设备(路由器、交换机、媒体网关、SBC、PS网关等)需要在瞬间进行大量的报文收发,因此在传统的网络设备上,往往能够看到专门的NP(Network Process)处理器,有的用FPGA,有的用ASIC。这些专用器件通过内置的硬件电路(或通过编程形成的硬件电路)高效转发报文,只有需要对报文进行深度处理的时候才需要CPU干涉。

但在公有云、NFV等应用场景下,基础设施以CPU为运算核心,往往不具备专用的NP处理器,操作系统也以通用Linux为主,网络数据包的收发处理路径如下图所示:

在虚拟化环境中,路径则会更长:

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

DPDK是Data Plane Development Kit的缩写。简单说,DPDK应用程序运行在操作系统的User Space,利用自身提供的数据面库进行收发包处理,绕过了Linux内核态协议栈,以提升报文处理效率。

三、DPDK源码目录结构 

  lib/ : DPDK的库源代码
  drivers/ : DPDK轮询模式驱动程序源代码
  app/ : DPDK应用程序源代码
  examples/ : DPDK的一些应用程序例子源代码
  config/ : DPDK关于arm和x86平台的一些编译配置
  buildtools/ : DPDK一些编译配置的脚本
  mk/ : DPDK的Makefile
  usertools/ : DPDK提供给用户的一些实用工具

四、常用术语及缩写

  ACL:Access Control List,访问控制列表,是路由器和交换机接口的指令列表,用来控制端口进出的数据包;简而言之就是用来控制数据流。
  SSL:Secure Sockets Layer,安全套接层,是为网络通信提供安全及数据完整性的一种安全协议,在传输层对网络连接进行加密。
  RSS:Receive Side Scaling,是一种能够在多处理器系统下使接收报文在多个CPU之间高效分发的网卡驱动技术。
  NUMA:Non Uniform Memory Access Architecture,非统一内存访问架构;
  QOS:Quality of Service,服务质量,指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力, 是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术。
  NIC:Network Interface Card,网卡,网卡是局域网中最基本的部件之一,它是连接计算机与网络的硬件设备。
  PCI:Peripheral Component Interconnect,计算机一种标准总线,NIC就是使用的这种总线方式。
  PMD:Poll Mode Drive,轮询模式驱动,DPDK就是采用的这种模式。
  RTE:Run Time Environment,通过PMD实现快速分组处理数据的一个框架。
  MPLS:Multi-Protocol Label Switching,多协议标签交换,是一种用于快速数据包交换和路由的体系,它为网络数据流量提供了目标、路由地址、转发和交换等能力。更特殊的是,它具有管理各种不同形式通信流的机制。

五、DPDK框架简介

  DPDK为IA上的高速包处理而设计。

  图1-6所示的DPDK主要模块分 解展示了以基础软件库的形式,为上层应用的开发提供一个高性能的基 础I/O开发包。它大量利用了有助于包处理的软硬件特性,如大页、缓 存行对齐、线程绑定、预取、NUMA、IA最新指令的利用、Intel DDIO、内存交叉访问等。
  核心库Core Libs,提供系统抽象、大页内存、缓存池、定时器及无 锁环等基础组件。
  PMD库,提供全用户态的驱动,以便通过轮询和线程绑定得到极高 的网络吞吐,支持各种本地和虚拟的网卡。
  Classify库,支持精确匹配(Exact Match)、最长匹配(LPM)和 通配符匹配(ACL),提供常用包处理的查表操作。
  QoS库,提供网络服务质量相关组件,如限速(Meter)和调度 (Sched)。

六、DPDK的轮询模式

  DPDK采用了轮询或者轮询混杂中断的模式来进行收包和发包,此 前主流运行在操作系统内核态的网卡驱动程序基本都是基于异步中断处 理模式。

  1、异步中断模式

  当有包进入网卡收包队列后,网卡会产生硬件 (MSIX/MSI/INTX)中断,进而触发CPU中断,进入中断服务程序,在 中断服务程序(包含下半部)来完成收包的处理。当然为了改善包处理 性能,也可以在中断处理过程中加入轮询,来避免过多的中断响应次 数。总体而言,基于异步中断信号模式的收包,是不断地在做中断处 理,上下文切换,每次处理这种开销是固定的,累加带来的负荷显而易 见。在CPU比I/O速率高很多时,这个负荷可以被相对忽略,问题不 大,但如果连接的是高速网卡且I/O频繁,大量数据进出系统,开销累 加就被充分放大。中断是异步方式,因此CPU无需阻塞等待,有效利用 率较高,特别是在收包吞吐率比较低或者没有包进入收包队列的时候, CPU可以用于其他任务处理。
当有包需要发送出去的时候,基于异步中断信号的驱动程序会准备 好要发送的包,配置好发送队列的各个描述符。在包被真正发送完成 时,网卡同样会产生硬件中断信号,进而触发CPU中断,进入中断服务 程序,来完成发包后的处理,例如释放缓存等。与收包一样,发送过程 也会包含不断地做中断处理,上下文切换,每次中断都带来CPU开销; 同上,CPU有效利用率高,特别是在发包吞吐率比较低或者完全没有发 包的情况。

  2、轮询模式

  DPDK起初的纯轮询模式是指收发包完全不使用任何中断,集中所 有运算资源用于报文处理。但这不是意味着DPDK不可以支持任何中 断。根据应用场景需要,中断可以被支持,最典型的就是链路层状态发 生变化的中断触发与处理。

dpdk 网络协议栈 vpp OvS DDos SDN NFV 虚拟化 高性能专家之路相关推荐

  1. DPDK分析学习之全网唯一的DPDK教学课程丨虚拟化高性能专家之路

    1.前言 当时第一次听说"数据面"这个概念,感觉挺新鲜的.误打误撞就开始搞了,刚开始接触的时候,由于不懂其中的原理,觉得很神奇,因为报文的转发是在应用层,通过一个进程进行转发.而传 ...

  2. 理解 Linux 网络栈:Linux 网络协议栈简单总结

    1. Linux 网络路径 1.1 发送端 1.1.1 应用层 (1) Socket 应用层的各种网络应用程序基本上都是通过 Linux Socket 编程接口来和内核空间的网络协议栈通信的.Linu ...

  3. 虚拟机三种网络连接方式(桥接、NAT、仅主机、vlan)、Fusioncompute中的网络配置(OVS、DVS)

    我们通过VMware workstation 安装虚拟机的时候,需要配置我们的虚拟网卡. 需要在网络适配器那里进行配置,网络连接这里一般有三种模式,桥接模式,NAT模式和仅主机模式,如下图所示,那么这 ...

  4. SDN/NFV步入规模部署期 运营商拓智能化成大势所趋

    经过多年发展,软件定义网络(SDN)和网络功能虚拟化(NFV)逐渐度过概念炒作阶段.世界权威调研公司Infonetics报告显示,2015年之后SDN/NFV开始进入商用部署阶段,2016-2019年 ...

  5. 爱立信:SDN/NFV助力面向5G以及工业互联网的ICT转型

    在近日举行的"2016中国SDN/NFV大会"上,爱立信集团首席技术官办公室云计算总监于昇安表示,SDN(软件定义网络)和NFV(网络功能虚拟化)将助力面向5G/工业互联网的ICT ...

  6. SDN/NFV:现状,挑战和未来

    信运营商和通信服务提供商(CSP)一直期待网络功能虚拟化(NFV)和软件定义网络(SDN)能够带来的优势,以帮助他们进入快速部署新服务,实现高度的网络自动化和动态重新配置的领域,从而降低资本支出/运营 ...

  7. 理解 Linux 网络栈(2):非虚拟化Linux 环境中的 Segmentation Offloading 技术

    本系列文章总结 Linux 网络栈,包括: (1)Linux 网络协议栈总结 (2)非虚拟化Linux环境中的网络分段卸载技术 GSO/TSO/UFO/LRO/GRO (3)QEMU/KVM + Vx ...

  8. 面对SDN/NFV部署挑战 网络厂商能做什么?

    近年来,随着云计算的不断发展,网络虚拟化受到广泛关注,而作为网络虚拟化的实现方式,SDN自诞生之日起就担负着网络变革的使命.那么,SDN技术的驱动力是什么?SDN在引入现网的过程中,如何实现平滑无缝演 ...

  9. 4G网络建设近尾声 SDN/NFV是5G网络创新关键

    当前, 5G 已成为国家重要战略,成为拉动投资.引领科技创新.实现产业升级.促进经济繁荣.进行供给侧改革的重要抓手.推动5G车轮滚滚向前已然刻不容缓,相伴随的,5G网络创新成为重中之重.在日前举行的& ...

最新文章

  1. 最精简写法→去掉任意多个空行
  2. LIBSVM 多分类问题- 葡萄酒种类识别
  3. python怎么创建一个二维数组_python 创建二维数组的方法
  4. 五.几何对象和空间参考
  5. mysql数据库之忘记root密码
  6. John the Ripper 密码破解者
  7. [Objective C] 获取类和对象的运行时状态
  8. PrintStream 打印流、System 剖析、Java 16 进制转换
  9. 方法教程 | Python爬虫:爬取某易云数据并且可视化展示
  10. LittleFs文件系统
  11. python爬虫豆瓣评论论文_Python爬虫(三)——对豆瓣图书各模块评论数与评分图形化分析...
  12. 使用Word制作文档封面
  13. 2021鹏业安装算量软件常见问题整理(二十)
  14. 插画师的配色灵感分享
  15. 物流设计大赛 测试货物 样例 6号和23号
  16. EtherCAT是如何工作的
  17. mysql zimbra_zimbra备份与恢复
  18. CSS实现水平垂直居中的五种方法
  19. 查询oracle表空间是否满了,查看Oracle表空间大小的方法
  20. Hive--实现随机抽数

热门文章

  1. JavaScript JSON解析
  2. 经验分享:SEO新手面对新网站应该如何去优化
  3. 组合数学 | 排列与组合
  4. wps上下标怎么对齐_在EXCEL中,怎样将上、下标对齐?
  5. 第七章、Zigbee定位系统
  6. 游戏斗兽棋,童年的回忆
  7. POST 常见的数据提交方式
  8. 进程、线程、协程、例程、过程的区别是什么?
  9. pdf预览在vue项目中的使用兼容ie浏览器
  10. Android中免root的hook框架学习——whale(二)实战hook java方法