编程语言
首页 > 编程语言> > SDNLAB技术分享(三):OpenDaylight中编程抽象的实现

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

作者:互联网

图片

这次主要分三部分说一下,首先我会粗略介绍一下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版本我不太了解。


标签:文件,karaf,SAL,编程,pom,ODL,模块,SDNLAB,OpenDaylight
来源: https://blog.51cto.com/u_15127681/2822998