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

【编者的话】本文系OpenDayLight SDNLAB研究群(群号:194240432)分享整理而成,本期我们邀请的主讲者朱士罡来自芝加哥大学计算机专业硕士,他将分享基于ODL MD-SAL对于网络信息的读取与流表生成下发,以及ODL module设计上的技巧和见解。

OpenDaylight中编程抽象的实现 图1

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

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

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

OpenDaylight中编程抽象的实现 图2

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

  • 1.openflow协议相当于一种申明式的语言,只是去规定了交换机去做什么而非如何去做。
  • 2.如此一来,基于openflow的SDN开发会将很多底层的细节暴露给开发者,这样开发者需要明确并且掌握的细节会非常之多,也会导致代码变得十分繁琐。
  • 3.现在市面上的控制器中对于语言使用的灵活性也并不高,并且没有一个在编程层面的抽象。
OpenDaylight中编程抽象的实现 图3

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

OpenDaylight中编程抽象的实现 图4

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

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

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

一些ODL模块的共有特征

OpenDaylight中编程抽象的实现 图5

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

OpenDaylight中编程抽象的实现 图6

从一个入门的角度来说:

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

OpenDaylight中编程抽象的实现 图7

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

Q1:吾辈似猫
话说,那个算法f,是个什么样子呢?

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

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

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

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

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

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

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

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

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

分享嘉宾朱士罡:目前就读于芝加哥大学计算机专业硕士。
-----------------------------------------------------------------------------------------------------
OpenDayLight SDNLAB研究群(群号:194240432)定位为面向SDN/ODL相关技术的初学者进行交流、学习、分享,吸引了来自高校、云服务提供商、互联网厂商、设备厂商、运营商等单位的从业人员近千人,每周会组织定向的技术及业界动态分享,如果你有需要分享的请加Q:117511567联系。


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/14164.html
分享到:
相关文章
条评论

登录后才可以评论

SDNLAB君 发表于15-10-19
0