2 --> Vector Packet Processing / VPP 快速入门简介

1. VPP 是什么

VPP全称Vector Packet Processing,是Cisco2002年开发的商用代码,VPP运行于用户空间,支持多种收包方式,常用的是DPDK,VPP主要有两个主要功能:框架可扩展;成熟的交换/路由功能。

2016年2月11号Linux基金会创建FD.io项目,Cisco将VPP代码的开源版本加入该项目,目前已成为该项目的核心。FD.io 基于DPDK并逐渐演化,是许多数据平面项目和库的一个集合,在 x86、ARM、PowerPC等通用平台上提供具有灵活性、可扩展、组件化等特点的高性能I/O服务器框架,用以迎接下一个网络和存储浪潮。

简而言之,FD.io 是一个软件定义基础设施的开发平台,帮助开发者简易的实现基于软件的数据报文处理创新方案,包括设计、开发高吞吐量、低延时和有效利用资源的应用程序。并为这些创新应用程序屏蔽CPU架构以及运行环境的差异,可以运行在x86、ARM 和 PowerPC通用平台的裸机、虚拟机和容器上。
VPP 应用的典型架构如下图:
在这里插入图片描述
FD.io 利用 DPDK 特性孵化了很多项目和库,如:NSH_SFC、Honeycomb 和 ONE,此外,FD.io 还积极推进与其他关键的开源项目进行集成,以支持 NFV 和 SDN ,目前已经集成的开源项目包括,k8s、ONAP、OpenStack 和 OpenDayLight 。

FD.io 的网络生态如下图:
在这里插入图片描述
VPP 是一个高度模块化和可扩展的软件框架,新开发的功能模块很容易被集成到VPP,而不影响 VPP底层的代码框架。VPP 平台可用于构建任何类型的数据报文处理应用程序,例如:负载均衡、防火墙、IDS或逐渐协议栈的基础架构。此外,还可以创建应用程序的组合,例如,向vSwitch 添加负载均衡功能。 VPP 运行在用户空间,这意味着 VPP 的差距不需要更改 Linux Kernel 的代码。

在 DPDK 的轮询模式驱动程序PMD和环形缓冲区的支持下, VPP 把中断放在优化软件和硬件接口上,旨在通过减少数据流/转发表缓存的未命中数、来增加转发平面吞吐量,同时使用并行方式替换标准创新数据报文处理。

VPP 具有丰富的基础功能:
在这里插入图片描述

2. VPP 软件框架
VPP 软件模块如下所示:
在这里插入图片描述VPP INFRA 基础设施层
INFRA 保护核心库的源代码,是一系列基本 C 服务库的集合,提供了高性能的数据结构,例如:Vector、Rings、Hashing、Timers、Bitmaps、Pools、Hashes 以及一些基本库函数。

VLIB 矢量处理库层
VLIB 是一个矢量处理库,提供对Vector的处理函数,提供各种对 Application 的管理功能,包括, Buffers 管理、 Graph Node 管理、多线程支持 、数据包跟踪、计数器等功能,还实现 debug CLI 功能。

Plugins 差距 App 层
VPP 内建丰富的数据平面差距集合,在VPP 中新建一个自定义的 Plugin 插件也很简单。

参考链接:
https://fd.io/documentation/
https://wiki.fd.io/view/Main_Page

猜你喜欢

转载自blog.csdn.net/weixin_38387929/article/details/115055804
今日推荐