VPP源码架构介绍

VPP架构:

VPP介绍

VPP:(the vector packet processor)是一个可扩展框架,可提供开箱即用的交换机/路由器功能。是Linux基金会下开源项目FD.io的一个子项目,由思科贡献的开源版本,目前是FD.io的最核心的项目。

 

VPP实现的优点是其高性能,成熟的技术,其模块化和灵活性以及丰富的功能集。

 

VPP技术基于成熟的技术,据说支撑了超过十亿美元的思科产品。它的模块化设计框架允许任何人“插入”新的图形节点,而不需要更改核心/内核代码。

VPP背景:

基于思科贡献VPP开源代码的动机,思科公司的杰出咨询工程师兼FD.io技术指导委员会主席Ed Warnicke称:“在云基础设施和NFV基础设施中,都需要转发数据包,所以,能否转发数据包是成功的关键。FD.io打破了这潭死水,解决灵活度与性能方面存在的老问题。思科乐于开源VPP来推动行业发展。”

爱立信的杰出工程师兼FD.io技术指导委员会的成员JoelHalpern补充说,FD.io就是在促进IP转发方面做得更好。VPP软件可以实现零丢帧处理480 Gb/s的数据包。

目前各大厂商包括AT&T,Comcast,中兴,华为,博科,思科,爱立信,Metaswitch,英特尔,Cavium,红帽和Inocybe均在此投入大量的资源。

AT&T即将构建的SDN的 “Nirvana”堆栈中即将采用FD.io架构,OPNFV也在发布的Danube代码中纳入了FD.io。


 

VPP整体架构

本文主要侧重在VPP源码分析层面上的理解:以VPP17.04版本为例,整体的源码结构如下图:


 由上图分析,VPP源码模块主要包括以下几个层次,且关系如下:

Plugins:主要为实现一些功能,在程序启动的时候加载,一般情况下会在插件中加入一些node节点去实现相关功能

Vnet:提供网络资源能力:比如设备,L2,L3,L4功能,session管理,控制管理,流量管理等

VLIB:主要提供基本的应用管理库:buffer管理,graph node管理,线程,CLI,trace等

VPP Infra:提供一些基本的通用的功能函数库:包括内存管理,向量操作,hash, timer等

猜你喜欢

转载自blog.csdn.net/liu0808/article/details/80346611