VPP简介

  • VPP(Vector Packet Processing)是思科旗下的一款可拓展的开源框架,提供容易使用的、高质量的交换、路由功能
  • 特点:高性能、运行在普通的cpu上。
  • 优点:高性能、技术成熟、模块化、灵活性,有丰富的特征集。
  • 可以允许任何人插入新的结点无需改动内核代码。

模块化、灵活性、可延展性

  • VPP构建基于“包处理图”,意味着可以“插入”新的结点,变得容易拓展,可以自定义一些特定的功能。
  • 插件如何运行:运行时,VPP平台从RX rings抓取所有可用包组成一个包向量,构建一个包处理图(包括插件)。并且图结点松耦合,使得新的插件易于使用,容易和现存图结点结合。

    包处理的革新

  • 包处理由逐个处理变为处理一批的包(向量包)

VPP使用

  • 你可以在VPP source tree上独立地构建一个插件。
  • VPP可以用于构建各种包处理应用,可以基于负载均衡、防火墙等等,比如把负载均衡加到vSwitch上。
  • VPP引擎运行在纯用户空间上,你不需要源代码即可扩展这个引擎的功能。
  • 新的自定义图结点
  • 重组图结点
  • 新的低级别APIs

传统方法

  • 所谓VPP向量报文处理是与传统的标量报文处理相对而言的。传统报文处理方式,同时也是人类常用的逻辑思维方式,即:报文是按照到达先后顺序来处理,第一个报文处理完,处理第二个,依次类推;A callsB calls C….return return return,函数会频繁嵌套调用,并最终返回。
  • 简而言之,传统报文处理是对到来的包逐个处理,不加分类。
  • 由此可见,传统标量报文处理有如下缺陷:
  1. I-cache 抖动(cache时间局限性和空间局限性特点)

  2. I-cache misses

  3. 除了扩大cache外,没有变更方案。

VPP方法

  • 简而言之,向量包处理采用了“分类”的思想,将一批报文分为一类,用一个图结点表示。按类处理,如果cache命中,则这一批报文都命中;否则则一批都未命中。未命中时,由传统的n个包未命中n次变为n个包未命中1次。
  • VPP把一批底层硬件队列Rx ring收到的包,组成一个Packet Vector或者是一组包,借助于报文处理图Packet Processing graph来实现处理流程,图节点graph node把整个过程分解为一个个先后连接的服务node。这一组包(packet vector)被第一个graph node节点的任务处理,然后依次被第二个graph node节点的任务处理,依次类推,
  • 由于向量报文中的第一个报文packet-1为I-cache进行了热身,向量报文中剩下报文的处理性能可以直接达到极限,I-cache 缺失的固定开销平摊到了整个向量处理中,使单个报文的处理开销显著降低。
    由此可见,向量报文处理解决了标量处理的主要性能缺陷,并有具有如下优点:
  1. 缓解了I-cache抖动问题
  2. 向量报文进行预取缓解了读时延问题,高性能并且更加稳定
为什么叫向量包
  • 这种方法解决了堆栈地址上堆栈深度/ D缓存未命中相关的问题。 它改善了“电路时间”。 “电路”是抓取来自设备RX环的所有可用分组的循环,形成由按照RX顺序的分组索引组成的“帧”(矢量),通过有向图节点运行分组,并返回到RX 环。 随着数据包处理的继续,电路时间基于提供的负载达到稳定的平衡。

丰富的特性

  • VPP可应用于

VPP(Vector Packet Processing)浅析的更多相关文章

  1. VPP(Vector Packet Processing)配置工具

    前言 VPP提供了一个配置工具,让用户可以简单快捷地配置VPP.用户可以通过一些简单的命令配置VPP,功能包括安装及一些基本配置和测试用例. 使用 先安装一个python的pip模块,使用pip安装V ...

  2. Fast Packet Processing - A Survey

    笔记是边读边写的旁注,比较乱,没有整理就丢上来了. 可以说不仅要说fast packet process servey,也同时是一篇packet process的综述了.packet processi ...

  3. Reading Fast Packet Processing A Survey

    COMST 2018 主要内容 这是一篇有关快速包转发的综述,先介绍了包转发的有关基础知识和背景,具体介绍了包转发的主流方法,对这些方法进行了细致详尽的比较,最后介绍了最新的方法和未来的研究方向. 包 ...

  4. Reading SketchVisor Robust Network Measurement for Sofeware Packet Processing

    SIGCOMM17 摘要 在现有的网络测量任务中包括流量监测.数据收集和一系列网络攻击的预防.现有的基于sketch的测量算法存在严重性能损失.大量计算开销以及测量的精确性不足,而基于硬件的优化方法并 ...

  5. PatentTips - Data Plane Packet Processing Tool Chain

    BACKGROUND The present disclosure relates generally to systems and methods for providing a data plan ...

  6. Internet protocol security (ipsec) packet processing for multiple clients sharing a single network address

    Embodiments of the present invention address deficiencies of the art in respect to secure communicat ...

  7. vector删除元素浅析

    <<effectSTL>>书中提到erase-remove方法  即c.rease(remove(c.begin(),c.end(),1963),c.end()) 关于remo ...

  8. HIGH-SPEED PACKET PROCESSING USING RECONFIGURABLE COMPUTING

    摘要 本文介绍了一种新的工具链,它将一门称为 PX 的专门用于包处理的编程语言运用到基于 FPGA 技术的高性能可重构计算架构(HIGH-PERFORMANCE RECONFIGURABLECOMPU ...

  9. 论文阅读:FlowBlaze: Stateful Packet Processing in Hardware

    摘要: 尽管可编程NIC可以提供更好的可扩展性以处理不断增长的网络工作量,但为硬件中的有状态网络功能编程提供表达能力却又简单的抽象仍然是一项研究挑战. 我们使用FlowBlaze解决了这个问题,Flo ...

随机推荐

  1. PoPo数据可视化周刊第5期

    PoPo数据可视化 聚焦于Web数据可视化与可视化交互领域,发现可视化领域有意思的内容.不想错过可视化领域的精彩内容, 就快快关注我们吧 :) World Wire 数据可视化演示(视频) IBM公司 ...

  2. c# 圆上坐标点

    var x=-33204.0924438;  //圆心x var y=-9512.41208658; //圆心y var r=1000;//半径 var angle=30;//角度 var tmpX ...

  3. 新安装的Apache和php,测试可以解析phpinfo,但是无法打开drupal网站

    没有去掉php.ini中mysql相关的一些扩展的注释

  4. redux-devtools的使用

    1.浏览器里安装redux-devtools 2.在项目的入口文件里  找到 createStore函数调用的地方,给它加第二个参数 window.__REDUX_DEVTOOLS_EXTENSION ...

  5. 微服务架构之spring cloud ribbon

    现在负载均衡是通用的解决分压的技术方案,实现方式一般分为服务端或者客户端,服务端大部分是使用中间件实现,spring cloud ribbon 是一个客户端负载均衡组件.跟spring cloud e ...

  6. Android解析WindowManagerService(一)WMS的诞生

    前言 此前我用多篇文章介绍了WindowManager,这个系列我们来介绍WindowManager的管理者WMS,首先我们先来学习WMS是如何产生的.本文源码基于Android 8.0,与Andro ...

  7. 关于UNITY3D的各种各样。

    作为一个老C++程序员,在接触了UNITY3D之后,除了玩C#还得玩JAVA和OBJECTIVE-C. 1年多的经验证明,UNITY3D游戏项目,如果打算做多平台,项目组里必须得有一个会多语言的万金油 ...

  8. centos7 安装 maven 和ant git 以及 rocketmq 4.2安装过程(安装成功,调用失败)

    1.maven 安装 wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /et ...

  9. 分享:linux系统如何快速阻止恶意IP地址

    可能你想要在各种情形下阻止有人通过IP地址访问你的Linux系统.比如说,作为最终用户,你可能想要保护自己,避免已知的间谍软件或跟踪者的IP地址.或者如果你在运行P2P软件,可能想要把来自与违反P2P ...

  10. time random sys 模块

    time模块 顾名思义就是时间模块 我们在之前就用过一些时间模块 比如你想要让打印的时间延迟就time.sleep() 首先我们知道这是一个时间操作的模块 它可以分为三种模式:时间戳模式.格式化时间模 ...