专栏首页SDNLABONOS编程系列(一)之简单应用开发

ONOS编程系列(一)之简单应用开发

一个ONOS application是使用maven做管理的OSGi bundle。 因此,ONOS application 可以归结为Java类和POM文件的集合。本教程以基于intent的交互式转发application为例,讨论了如何从零开始建立一个新应用。

本教程假设读者已经具备ONOS的运行经验,能够熟练启动ONOS实例。有关ONOS的启动不做过多描述。如果出现启动上的问题,请移步官方wiki文档自行寻找答案。

本文章结束后,你应该学会:

1)应用的组织与结构;

2)如何在多个服务中注册你的应用;

3)北向API的基本应用;

4)如何运行一个应用。

一、在Eclipse中导入工程

直接按照maven项目导入就可以,详情请见ONOS环境部署。

1.1 注意

在ONOS项目中,对代码有着格式上的一些要求,不管是正式代码,还是测试用例。请根据要求修改增加代码的格式。

如果想要跳过代码checkstyle,可以在onos项目根目录下的pom。xml文件中,注释掉关于checkstyle的plugin:

不过非常不建议这样做。最好的方法还是按照官方的要求,进行编程。关于代码格式检查,如果使用的是Eclipse,可以配置checkstyle进行检查:

一路点击eclipse-->help-->Eclipse Marketplace,进入界面:

在输入框里输入“checkstyle”,然后选择框住的那个插件进行傻瓜式安装,就是一路next。这个过程很有可能会报错,Eclipse提示找不到下载网址。如果这种情况,可在http://eclipse-cs.sourceforge.net/update/这个地方下载,在本地安装就可以了。

安装好以后,在window-->preference弹出的界面里就能看到checkstyle的选项了。单击该选项,右面出现相关界面:

然后点击NEW按钮,增加一个checkstyle文件,在本地ONOS工程里找到onos自己的checkstyle文件,别忘记起个名字。

然后就能在checkstyle文件列表里看到刚刚新添加的文件了。我给它的命名是ONOS。接下来选中该项,点击右边的“Set as Default”,再点击OK,就大功告成了。

后面再新加的文件任意处右键,就能在菜单列表里看到checkstyle的选项了。只需要点击“Check Code with Checkstyle”,就能检查本文件的代码格式是否符合onos的要求了。 二、项目骨架

2.1 设置项目的目录结构

2.2 添加并编辑pom文件

在应用的根目录/apps/ifwd/下编辑pom文件:

在本例中,应用的名字是onos-app-ifwd。在启动karaf/ONOS命令行界面以后,直接用feature:install加上名字,即可安装此应用。

然后,编辑apps/pom.xml,在文件中以形式包含该项目:

2.3 在karaf中注册该应用

Karaf在运行时若要部署该应用module,需要名为feature.xml的描述性文件,编辑 ${ONOS_ROOT}/features/features.xml:

三、完成项目代码

该应用的核心是名为 IntentReactiveForwarding.java的文件,被定义在${ONOS_ROOT}/apps/ src/main/java/org/onosproject/ifwd/ 里。

为了便于对文档进行注释,在main/java/下需要添加一个package-info.java文件,其包含一下内容:

一般IDE会提供生成这个文件的选项。Eclipse在新建包的时候会提供该选项:

剩下的部分将会描述如何编辑IntentReactiveForwarding类。

3.1 注册Karaf,使其自动加载

karaf的模块加载机制需要几个annotations,即注解,去注册。可用的注解尤其是以下四个尤为重要:

1)@Component(immediate = true) - declares a class as a component to activate, and forces immediate activation;

2)@Activate - marks a method as the method to call during the component startup routine;

3)@Deactivate - marks a method as the method to call during component shutdown;

4)@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - Marks a service as an application's dependency,and requires one instance of such a service to be loaded before this application's activation.

3.2 注册服务

接下来,我们的应用必须使用CoreService注册一个独一无二的application ID,这样才能够使该应用正常使用ONOS的其他服务。我们的应用接下来还要使用PacketService监听PacketIn和PacketOut事件。而PacketService需要一个事件处理器的类,该类用途单一,通常写在其所属类的内部,成为其私有内部类:

3.3 增加包处理代码

在上一步的私有内部类ReactivePacketProcessor里,要覆写扩展自接口PacketProcessor的方法process()。每当有网络包进来的时候,PacketService都会调用一下process()函数。这意味着我们可以在这个方法里定义我们自己的包转发行为:

接下来我们要实现上图中用到的三个方法,注意,这些方法定义在私有内部类的外面,是IntentReactiveForwarding的成员:

3.4 编译该应用

进入ONOS根目录,键入“mvn clean install”,等待编译结果。

这个时候通常的结果就是BUILD SUCCESS。

当前最有可能遇到的问题,就是checkstyle的时候出现了错误,实在不想改代码了,可以直接注释掉checkstyle的plugin。

3.5 启动该应用

启动分为动态启动与静态启动:

动态启动就是用karaf clean命令启动onos之后,在onos命令行下键入feature:installonos-app-ifwd命令安装该应用。

静态启动就是修改karaf的启动配置文件。该文件路径为${KARAF_ROOT}/etc/org.apache.karaf.features.cfg,直接将onos-app-ifwd字样缀到featuresBoot变量的尾部即可。

启动并加载该应用以后,可已键入:

命令查看是否已安装该应用。

该应用安装以后,并不能对其做什么操作,也无法看到它的运行情况,这时我们就需要将该应用扩展为一种服务,以便于其它服务或者应用与其交互,并且需要新建一条karaf的命令,用于展示当前应用的相关信息与状态。

本文分享自微信公众号 - SDNLAB(SDNLAB)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-04-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ONOS加入了Linux基金会就是开源吗?

    一些致力于实现开源的开发人员一直对开放网络操作系统(ONOS)在开源程度上持怀疑态度,这使得ONOS近期的行动(ONOS加入Linux基金会)特别排斥他们。 ?...

    SDNLAB
  • 基于sketch的网络测量方法介绍

    作者简介: 周政演,福州大学数计学院2016级计算机科学与技术(实验班)本科生,目前研究方向为网络测量,邮箱vancasola @gmail.com。

    SDNLAB
  • 如何理解5G空口(NR)?

    电信行业肯定希望在超高容量和低延迟的下一代网络的支持下部署5G业务,但是在5G商用之前,该技术需要做进一步的标准化工作,目前5G的标准化工作组织主要是3GPP。...

    SDNLAB
  • 【专访】国家超级计算无锡中心主任杨广文:神威·太湖之光将加大对深度学习的支持

    【新智元导读】 关于无锡超算对深度学习的支持,杨广文教授说:“第一个开发了大量深度学习算法 并行软件;第二,研发了一个深度学习平台swCaffe,来支持用户基于...

    新智元
  • 甭管啥是微商,盘他!微商是怎么沦为人人喊打的过街老鼠

    再可爱的外表,米老鼠还是老鼠,不管今天是喜提奥巴马还是喜提马云,高大上的伪装下,微商还是微商。

    挖数
  • 微商简史:兴起、繁荣与调整

    郑立鹏  微信安全风控中心高级总监   程   程  腾讯研究院安全研究中心高级研究员 方   雨  资深自媒体人   郭艳萍  社交电商传媒人...

    腾讯研究院
  • 别挣扎了,你到死都斗不过微商

    你没有走错片场,这是笔者字斟句酌后挑选出的微商文案,一字一句扣人心弦,你想变有钱吗?加入微商保你3个月北京一套房;你想变美貌么?购买微商保你定格18岁;你想创造...

    齿轮易创说互联网
  • 我的微商考察之路(3/4):如何做好微商

    因工作变动的关系,有几个月的闲暇,考虑利用这段时间打造一个兼职项目,等新工作确定了就交给老婆打理。最适合的当然首选微商项目。于是利用大概半个月的...

    凌帅出口
  • QDockWidget和setCentralWidget

    本篇将介绍主窗口剩下的Dock Widget Area和Center Widget。在Qt中,使用QDockWidget来创建浮动窗口。而Center Widg...

    zy010101
  • 微商赚钱容易吗?关于猪与风口的思考

    投入小、门槛低、有朋友便可足不出户做生意,一不小心就赚的盆满钵满,不费吹灰之力。这样的好事谁能不心动?自去年开始,微商这个词就有如野火一般蔓延起来,网络上各种9...

    华章科技

扫码关注云+社区

领取腾讯云代金券