Cisco VPP入门(四)——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 一起探索。

 

 

 

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值