VPP(Vector Packet Processing,矢量包处理)平台是一个可扩展的开源框架,提供开箱即用的网络交换机或路由器的功能。VPP技术基于Cisco产品的成熟技术,是思科矢量包处理 (VPP) 技术的开源版本:一种可以在商用CPU上运行的高性能包处理堆栈。
传统的标量处理方法是对单个数据包的处理,存在高延迟的问题。为了推动网络的可扩展性,VPP读取网络I/O层中最大的可用数据包扇区。VPP不是在具有多个节点的整个图中单独处理每个数据包,而是选择整个数据包矢量并将它们推送到一个图节点,然后再移动到下一个节点。由于先前从第一个矢量数据包中学习到指令,指令缓存然后适应该过程,使得剩余数据包的处理速度更快。这样一来,VPP可以一次处理多个数据包,有降低延迟的特性。这种VPP处理的好处是高性能、技术成熟、模块化、灵活性以及功能集丰富。
VPP是由Linux基金会支持的开源框架,是快速数据项目(http://FD.io)的一部分。VPP 的许多底层功能使用数据平面开发套件设备驱动程序和库,此功能被分离到VPP的可选插件中。它是一种模块化设计,该框架允许任何人“插入”新的图形节点,而无需更改核心/内核代码。
模块化、灵活且可扩展
VPP 平台建立在“数据包处理图”之上。这种模块化方法意味着任何人都可以“插入”新的图形节点。这使得可扩展性变得相当简单,这意味着可以为特定目的定制插件。
该插件如何发挥作用?
在运行时,VPP 平台从RX环中抓取所有可用的数据包,形成一个数据包矢量。数据包处理图逐个节点(包括插件)应用于整个数据包矢量。图节点小且模块化。图节点是松散耦合的。这使得引入新的图节点变得容易。它还使得重新连接现有图形节点变得相对容易。
插件可以引入新的图节点或重新排列数据包处理图,还可以独立于VPP源代码树构建插件。这意味着可以将其视为独立组件,可以通过将插件添加到插件目录来安装插件。
VPP平台可用于构建任何类型的数据包处理应用程序,可以用作负载均衡器、防火墙、IDS 或主机堆栈的基础,还可以创建应用程序的组合。例如,您可以向 vSwitch 添加负载均衡。
引擎在纯用户空间中运行。这意味着插件不需要更改核心代码。可以扩展数据包处理引擎的功能,而无需更改在内核级别运行的代码。通过创建插件,任何人都可以通过以下方式扩展功能:
新的自定义图形节点
图节点的重新排列
新的低级 API
功能丰富