欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Cisco VPP入门(四)——VPP示例插件编译运行

程序员文章站 2024-03-24 19:20:46
...

一、VPP源码架构

Cisco VPP入门(四)——VPP示例插件编译运行

VPP源码架构如上图,主要包括以下几个层次:

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

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

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

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

基于VPP的开发,通常是开发一个功能插件,一个插件对应Linux系统中的一个动态链接库,由VPP启动时加载,VPP启动和源码分析参考后续文章,本篇的目的是介绍插件编译和运行的方法。

二、示例插件编译方法

  Linux系统是Ubuntu 14.04,VPP的分支是16.06分支, 使用git可取16.06分支的代码

git clone -b stable/1606 https://github.com/FDio/vpp.git

 在VPP的源码中,有 sample-plugin 目录,该目录中就是VPP项目提供的示例插件,通过该插件,我们可以了解以管窥豹,获悉基于VPP的插件开发基本方法。

  编译:

  #cd sample-plugin

  #libtoolize

  #aclocal

  #autoconf

  #autoheader (此步骤执行有error,对后面的运行没有影响,可忽略error)

  #automake --add-missing

  #chmod +x configure

  #./configure

  #make

  #make install

  编译后的插件在sample-plugin/.libs目录下, sample_plugin.so是提供给vpp使用的插件,sample_test_plugin.so是供vpp_api_test使用的插件

  运行:

  拷贝sample_plugin.so到 vpp默认的plugin路径(/usr/lib/vpp_plugins)

  拷贝sample_test_plugin.so到vat默认的plugin路径(/usr/lib/vpp_api_test_plugins)

  #start vpp,启动vpp后台进程

  #vpp_api_test,执行vat测试命令

  vpp_api_test运行时,看到如下提示,说明插件加载成功 load_one_plugin:63: Loaded plugin: /usr/lib/vpp_api_test_plugins/sample_test_plugin.so

  执行插件命令:

  sample_plugin加载OK,可执行插件中注册的命令

  vat# help sample_macswap_enable_disable
          usage: sample_macswap_enable_disable <intfc> [disable]

 

~~~~

sample_plugin的代码讲解与VPP架构和开发代码级介绍,参考后续章节,作者是一名TCP/IP Stack,DPDK&VPP开发者,如对此方面知识感兴趣,可加QQ 619634242 一起探索。