目录

一、简介

二、扩展性

1、结点操作

2、可编程能力

三、网络功能

1、网络特性

2、网络性能


最近公司启动了一个新项目,是基于FD.io的开源项目VPP来进行开发的。由于VPP项目目前只支持对L2和L3数据包的处理,但是我们新项目希望加入对L4(主要是TCP和UDP)协议的处理并提供一套类似于BSD socket API来建立自己的网络应用。对L4协议的处理我们选用了开源项目OpenFastPath实现的协议栈,所以需要将OFP实现的L4协议栈处理加入到VPP项目中并最终可以实现对TCP和UDP数据包的终结。基于以上的应用场景,本次项目涉及到VPP、OFP和ODP的应用。

郑重声明一下:本文和后续的关于VPP、OFP和ODP的内容,都属于本人在项目开发中的一些学习和总结,由于本人的知识水平有限,有什么总结的不对的地方欢迎各位大神批评指正,希望朋友们不吝赐教同时也给本人一个学习和提高的机会!

本篇主要是对VPP项目做一个介绍。

一、简介

VPP全称Vector Packet Processing,是Cisco2002年开发的商用代码。

2016年2月11号,Linux基金会创建FD.io项目。Cisco将VPP代码的开源版本加入该项目,目前已成为该项目的核心。

VPP运行于用户空间,支持多种收包方式,常用的是DPDK。

VPP主要有两个主要功能:框架可扩展;成熟的交换/路由功能。

二、扩展性

1、结点操作

VPP平台是通过graphnode串联起来处理数据包,类似于freebsd的netgraph。

通过插件的形式引入新的graph node或者重新排列数据包的gpragh node。将插件添加到插件目录中,运行程序的时候就会自动加载插件。另外插件也可以根据硬件情况通过某个node直接连接硬件进行加速。

VPP平台可以用于构建任何类型的数据包处理应用。比如负载均衡、防火墙、IDS、主机栈。也可以是一个组合,比如给负载均衡添加一个vSwitch。

通过创建插件,可以任意扩展如下功能:

•      自定义新的图结点

•      重新排列图结点

•      添加底层API

添加插件如下图所示:

2、可编程能力

VPP还提供了基于共享内存或者消息队列的高性能内部API。目前VPP平台支持C和JAVA客户端进行内部API绑定。

如下图所以,我们完成一个外部应用对VPP进行操作:

以上的编程能力是针对内部API的调用,另外还可以支持远程可编程能力。

远程可编程能力可以通过Data Plane Management Agent来实现。

通过外部API与Data Plane Management Agent进行通信。Data Plane Management Agent通过内部API与VPP应用(引擎)进行通信。

这是一个非常灵活的方法,任何人可以添加,但是需要外部API和Data Plane Management Agent匹配,以实现特定需求的VPP应用。

下图展示Agent对接VPP和外部程序:

案例Honeycomb Agent:

HoneycombAgent通过netconf和restconf发布了yang模型的VPP功能。 像OpenDaylight 这样支持netconf/yang的控制器可以挂载Honeycomb 管理代理来工作。而OpenDaylight支持OpenStack Neutron,所以如下图所示OpenStack Neutron可以集成到vpp来:

三、网络功能

1、网络特性

VPP拥有的网络特性如下:

•      快速查找路由表、CAM表

•      任意n元组分类

•      商用级别的交换/路由功能

VPP能提供的所有功能如下:

2、网络性能

多核基准性能例子 (UCS-C240 M3, 3.5gHz,所有内存通道转发ipv4):

•      1 core: 9 MPPS in+out

•      2 cores: 13.4 MPPS in+out

•      4 cores: 20.0 MPPS in+out

下面几个图展示的是和OVS+DPDK的性能对比:

下图是在Haswell x86 架构的E5-2698v3 2x16C 2.3GHz上测试,图中显示了12口10GE,16核,ipv4转发:

以上资料可以参考FD.io的官方网站:https://fd.io/technology

Vector Packet Processing(VPP) (一)简介相关推荐

  1. The Vector Packet Processor (VPP)的安装

    目录 How to Install VPP Update the OS Point to the Repository Get the key: Install the Mandatory Packa ...

  2. Vector Packet Processor(VPP) - 层二层三转发图谱

    目录 层二转发图谱 层三转发图谱 资料来源:https://fd.io/ 层二转发图谱 层三转发图谱

  3. Cisco VPP(1) 简介

    一.简介 VPP全称Vector Packet Processing,是Cisco2002年开发的商用代码. 2016年2月11号,Linux基金会创建FD.io项目.Cisco将VPP代码的开源版本 ...

  4. Reading Fast Packet Processing A Survey

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

  5. packet tracer 下载及简介

    Packet Tracer Cisco Packet Tracer (下面简称PT)是由Cisco公司发布的一个模拟网络环境的辅助学习工具,为学习思科网络课程的初学者去设计.配置.排除网络故障提供了环 ...

  6. VPP Agent 简介

    文章目录 VPP Agent Overview VPP Agent 架构 体系架构图 VPP Agent 功能 VPP Agent Features VPP 配置和管理 重新同步 插件概念 说明 CN ...

  7. 在英特尔架构服务器上构建基于矢量包处理(VPP)的快速网络协议栈

    在英特尔®架构服务器上使用矢量包处理(VPP)构建快速的网络栈 Build a Fast Network Stack with Vector Packet Processing (VPP) on an ...

  8. How-to: Build VPP FD.IO development environment with Mellanox DPDK PMD.

    目录 References Prerequisite Installation, Compilation and Configuration VPP is an open-source Vector ...

  9. FD.io VPP 20.09版本正式发布:往期VPP文章回顾+下载地址+相关链接

    目录 下载RPM/DEB包 往期文章回顾与推荐 FD.io是一些项目和库的集合,基于DPDK并逐渐演化,支持在通用硬件平台上部署灵活可变的业务.FD.io为软件定义基础设施的开发者提供了一个通用平台, ...

最新文章

  1. Visual C#3.0新特性概览
  2. 一条消息未发,粉丝已破千万
  3. 斯坦福大学深度学习公开课cs231n学习笔记(4)正向传播及反向传播
  4. C语言贪吃蛇 新手入门(超详细)
  5. 下列选项中 采用边界值平滑_2014年10月湖南自考:软件工程全真模拟试题二
  6. PS去除图片白色背景
  7. wordcloud:自定义背景图片,生成词云
  8. 从零开始做运营第一课:运营是做什么的?一篇文章解释清楚!
  9. [Xcelsius]BI展现工具之Xcelsius
  10. java开发未来三年职业规划
  11. win7/ubuntu18 双系统安装和卸载
  12. 三菱FX系列PLC编程口通讯协议详解
  13. YTU----1329: 手机尾号评分
  14. 二维码墓碑:可手机“扫”墓祭祖
  15. 报错:Expected singleton
  16. 大量C语言、C++、C#、VC编程相关书籍下载
  17. MSYS+MinGW64环境的搭建
  18. 基于java的城市公交查询管理系统
  19. 室内声场计算机模拟的声线跟踪法和虚声源法,建筑物理课件.ppt
  20. 「CSS」文本编排相关的CSS属性设置

热门文章

  1. 计算机考试dw操作题,职称计算机考试Dreamweaver训练题
  2. Tarjan-有向图
  3. postman连接mysql执行操作
  4. 利用Scrapy框架爬取落网上的音乐文件
  5. 文本框中只能输入小于等于100的正整数
  6. 【Java】java.util.Objects 工具类方法研究
  7. CSS3中的pointer-events
  8. 数学模型中包括多个变量的例子:称硬币
  9. Android 完全退出程序,以及再按一次返回键退出程序
  10. Android2.2缩略图类ThumbnailUtils