SDN开发笔记(三):ODL源码编译生成发行版控制器

作者简介:鸿哥,硕士研究生,国内某通信设备公司软件研发工程师,主要从事云计算、SDN技术开发

前言

鉴于网上对于SDN开发相关的资料较少又乱的现状,从这篇文章开始,我将陆续分享我在SDN开发过程中的经验,我的SDN项目开发是基于OpenDaylight的release-lithium-sr3版本,该版本相对稳定。分享内容都是经过我精心测试与验证,包括:
1、SDN开发环境的搭建(win7环境)
2、SDN控制器的使用(ubuntu环境搭建、controller使用、mininet的使用)
3、ODL源码编译生成发行版控制器
4、md-sal应用程序开发指南
5、应用程序集成到ODL控制器
6、yang模型详解
7、md-sal的l2switch源码分析

环境搭建

继前两篇文章SDN开发环境的搭建(win7环境)SDN控制器的使用(ubuntu环境搭建、controller使用、mininet的使用)”之后,参照上述两篇文章将开放环境搭建好,开始尝试从源码编译生成发行版二进制文件,顺便也解答下一些网友在此过程中遇到的问题,从源码编译生成odl控制器这一步骤是每个开发人员都要掌握的内容。

在Ubuntu中搭建好环境(参照ubuntu环境搭建这篇文章)之后,需要下载odl源码。

编译前准备

1、下载odl源码
下载odl源码有两种方式,一种是从gerrit上下载,一种是从github上下载。

2、Gerrit方式
gerrit是odl控制器源代码官方存储位置,在浏览器中输入https://git.opendaylight.org,点击Projects按钮

下载odl之后还需要下载odlparent源码

继续下载distribution源码

3、github方式
odl控制器源码同时也会放在github上托管,浏览器输入https://github.com/opendaylight,找到controller

同理,下载controller之后需要下载odlparent源码

继续下载distribution源码

4、源码上传至ubuntu
本例中采用github的方式将odl的controller与odlparent源码下载下来,同时还需要下载的组件有aaa、dlux、l2switch、openflowjava、topoprocessing,使用Xshell工具将上述文件上传至ubuntu,如下:

5、准备仓库
在安装好maven之后,maven会在制定目录创建一个repository本地仓库,以后编译出来的jar包会自动安装到该仓库中,比如我的maven本地仓库为/root/.m2/repository。

6、准备parent
在编译之前,需要将odlparent的settings.xml复制到maven仓库

比如我的maven仓库放在/root/.m2/中,所以讲settings.xml复制到该目录下

编译源码

1、经过上述准备之后,就需要修改feature了,将需要编译的组件加进distribution,这样编译出来的控制器发行版本就在distribution/distributions/karaf/target当中。这就是为什么我们从官网下载下来的odl控制器二进制文件的名字为distribution-karaf-xx-xx,比如distribution-karaf-0.3.3-Lithium-SR3.tar.gz

2、修改feature,在/distribution/features/index/src/main/resources中找到features.xml文件,打开并修改,修改内容为:





3、其实上述的修改就是将需要的组件编译进distribution,比如我想将l2switch组件和openflowplugin组件编译进distribution,则需要添加如下代码。

4、修改好的feature文件保存,这时准备工作基本做完了

5、编译源码
在顶级目录输入 mvn clean install 开始编译,其他编译命令和说明如下:

编译过程中失败,无需从头开始再编译,从失败位置续编。
以工程sal为例,在根目录下运行命令:

注意,命令中的sal与具体工程(sal)目录下pom.xml中的artifactId指定的名称一致。

6、编译成功,整个编译过程需要2-3个小时,所以请耐心等待,出现如下说明编译成功

7、在/distribution/distributions/karaf/target下可以看到以下文件
assembly
distribution-karaf-0.3.3-Lithium-SR3.tar.gz
distribution-karaf-0.3.3-Lithium-SR3.zip

assembly 目录下有karaf文件,可以直接运行启动odl控制器,
distribution-karaf-0.3.3-Lithium-SR3.tar.gz是采用tar方式打包的odl控制器二进制文件
distribution-karaf-0.3.3-Lithium-SR3.zip是采用zip方式打包的odl控制器二进制文件
后两者就是官网发布的两种打包方式的二进制文件,可以复制到其他虚拟机启动了。

测试验证

1、将distribution-karaf-0.3.3-Lithium-SR3.zip复制到安装好jdk环境的虚拟机,解压运行./karaf

2、安装组件,比如我需要安装L2Switch,在控制台输入

3、查看该组件是否安成功

得到

好了,一个发行版odl控制器的编译全过程就已经讲完了

下一篇文章将讲md-sal应用程序开发指南,文章写的仓促,有错误还请大家指点改正,谢谢,同时也非常热于和大家一起交流学习。


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。
  • 本文链接http://www.sdnlab.com/17399.html
  • 本文标签技术/tech

分享到:
相关阅读
8条评论

登录后才可以评论

  1. comment reply YNWA小明 2016/07/15 15:44
    编的快不快,能不能编过,只能看网速。建议做个Maven Nexus Respository Manager,做个私有的maven库,以后编译就快了,还能统一ODL 各个module的版本,便于开发。
        1楼
  2. comment reply wellbeing 2016/07/15 15:59
    @YNWA小明 你能写篇文章专门讲下如何做Maven Nexus Respository Manager 不?我觉得你的建议非常好
        2楼
  3. comment reply clark 2016/07/18 09:53
    我认为如果不需要修改控制器本身,是没必要下载编译控制器源码的,毕竟太花费时间。 如果想编译自己定制的发行版控制器,可以使用Mave 原型opendaylight-karaf-distro-archetype 建立工程编译。除去首次编译下载Jar包的时间,十来分钟就可以完成了
        3楼
  4. comment reply YNWA小明 2016/07/20 10:51
    @clark 具体场景不一样。我们工作需要动ODL源码,并编译。只能说ODL更新特别快,某些module改动大,不依赖一个统一的库会带来很大麻烦。
        4楼
  5. comment reply Dans 2016/08/12 19:16
    您好,我刚开始接触sdn,小白一个,请问修改feature添加组件的格式为什么是这个样子的
        5楼
  6. comment reply ljyfree 2016/08/18 10:42
    @wellbeing 请问第四步"源码上传至ubuntu"中的截图里面,除了解压缩后的文件夹之外,还有一个pom.xml和settings.xml,这个两个文件是哪里来的?是从odlparent文件夹中中复制粘贴出来的么?
        6楼
  7. comment reply qiongyaol 2016/09/21 14:18
    您好,能加我qq:1160424118吗,有问题要请教下,谢谢!
        7楼
  8. comment reply lilian 2016/11/22 10:13
    刚开始学习SDN。请问“源码上传至ubuntu”章节,下载的源码文件夹中,顶层文件夹的pom.xml和settings.xml是哪里来的?自己编写的话,内容是什么?谁知道,帮忙解答一下,谢谢~
        8楼
wellbeing 发表于16-07-15
0