前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SDNLAB技术分享(三):OpenDaylight中编程抽象的实现

SDNLAB技术分享(三):OpenDaylight中编程抽象的实现

作者头像
SDNLAB
发布2018-04-02 11:26:27
6650
发布2018-04-02 11:26:27
举报
文章被收录于专栏:SDNLABSDNLAB

这次主要分三部分说一下,首先我会粗略介绍一下maple system。

之后将以这个为例来阐述一下ODL模块的开发过程。

最后会说明一下ODL模块的结构。

目前SDN方面已经有了数据和网络层面的抽象,但是对于SDN的编程一直有着诸多的不便。譬如

1.openflow协议相当于一种申明式的语言,只是去规定了交换机去做什么而非如何去做。

2.如此一来,基于openflow的SDN开发会将很多底层的细节暴露给开发者,这样开发者需要明确并且掌握的细节会非常之多,也会导致代码变得十分繁琐。

3.现在市面上的控制器中对于语言使用的灵活性也并不高,并且没有一个在编程层面的抽象。

如果我们定义一个算法模型,可以很抽象得定义一个函数f,对于已经给予的包与网络的参数生成可以重复利用的openflow控制协议。

第二部分

那再简要概括该系统的一些作用之后,我们来看一下在ODL种如何实现这一功能。

由于项目开始是在今年2月,所以这里使用的helium版本。

图中红色方框中的就是所开发的模块,于其左侧绿色的模块相同,这一模块也是需要用到ODL中十分重要的SAL。

一些ODL模块的共有特征

一般在ODL模块中会有这些目录,第一个目录会存放源代码,而后三个则是用于编译后的文件,这一点相信对ODL有过开发经验的会非常熟悉。

从一个入门的角度来说:

首先需要定义的是该项目各目录下的POM文件,这一点上ODL中l2switch里的pom文件是一个很好的范例:

在MD-SAL的运用部分, https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL:MD-SAL_App_Tutorial这个链接里是一个很好的例子,概括来说,一个运用在激活之后首先需要在SAL上注册,之后即可监听ODL中指定的数据变动,以及对其进行修改。

Q1:吾辈似猫

话说,那个算法f,是个什么样子呢?

A1:这个f是一个抽象的概念,具体由开发者定义,而maple system则可以将用户定义的f编译成如openflow之类的底层协议。https://www.youtube.com/watch?v=YdHdLYYtbho youtube链接里是一个英文的视频,前半部分是对于f的一些具体的介绍。

Q2:吾辈似猫

回到这个f上来~~~假设说我们能实现这样一个f。那么数据包的流程会变成什么样呢?还是首包入控制器么?然后首包经过这个算法的处理,生成流表?

A2:对,还是手包进入控制器,处理后生成流表

Q3:上海-HL

假如开发了一个功能类似于l2switch的模块,怎样把它装载到karaf当中呢?

A3:在pom文件,以及features文件夹下的features.xml文件里修改就可以做到,karaf还有个优势是可以热加载,也可以直接将编译后的模块文件复制到karaf文件夹下加载模块。

Q4:cqupt-晓武

修改pom.xml文件只需要修改工程下面的就行吧?子目录下面的pom也要修改吗?

A4:需要修改,一般子目录下的比较简单,只是告知maven如何编译该目录

Q5:上海-HL

能将单独编译后的模块加载到正在运行的锂版本ODL中的karaf?

A5:可以,在helium版本中将编译后的jar文件放到system下,lithium版本我不太了解。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-06-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SDNLAB 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档