OpenDaylight小白,对基于北向接口开发有一些问题


因为接触OpenDaylight也已经一段时间了,但总是没有对OpenDaylight有很好的理解,都在听别人在讲北向接口,通过看SDN的结构也了解了北向接口和南向接口基本意思,不过对于如何基于北向接口进行开发并没有思路,另外,经常听群里说REST API,难道一个API在开发的时候也要特定,其他API不行吗?看到群里有人还在讨论MD-SAL和REST API开发,这里感觉头好大呢,因为想对基于北向接口的开发有一个系统的理解,方便以后能更高效的对SDN进行学习,恳请各位大神的帮助。
已邀请:

胖欧巴 - 在SDN的路上渐行渐远

赞同来自: 小爱 君子一诺 sdn NoName dandan n茶杯更多 »


谢邀,这里需要纠正一下,南向接口和北向接口其实在SDN出现之前网管就在经常用,并不是专属于SDN架构,北向接口从字面上理解就是向上提供的接口,南向接口即向下提供的接口。北向接口一般这么认为是提供给其他厂家或运营商进行接入和管理的接口,南向接口可以理解为管理其它厂家网管或设备的接口。
1、OpenDaylight REST API
对于OpenDaylight来说,北向接口的实际体现为REST API。你在这里说的除了REST API就没有其他的接口形式吗?当然,能提供的接口形式绝对不止REST API一种,也可以用RPC、SOAP等。不过就目前来看,OpenDaylight就只提供了这么一种统一的北向接口形式,不过你有可能会问那REST又是什么,从字面意思根本看不出来是什么意思,其实他也没有一个标准,不过大家见到的REST API一般表现形式就是资源(URL) HTTP的获取资源的方式(GET、PUT、POST、DELETE等),其实你只要记住HTTP1.1协议是满足REST API要求的就OK了(其实是先有的REST,后来才出现的HTTP1.1协议)。下面我们谈怎么用这些东西,一般看他的文档都会给出一个很长的URL再加上相应的操作形式,其实知道HTTP协议的小伙伴都会很轻松的理解,这不就是HTTP协议吗,只要能够满足通信就行了。是的,就是这样,如果只是要基于这些接口做开发的话,你这么理解就可以了。不过如果对REST感兴趣可以看看Roy Thomas Fielding的博士论文(对,这个就是REST他爸,另外还要说明一下HTTP1.1协议的制定他也有参与,这下就明白我之前说的话了吧)
具体的开发形式就太多了,只要你能用http协议调用相关接口即可。不过如果刚开始只是要测试接口功能的话,可以使用POSTMAN,可以在网页上编辑,交互性比较强,命令行形式的Curl也行,不过体验没有前者好。掌握一些比较常用的HTTP状态码,可以帮助很快定位问题。在定位问题时,建议多使用抓包工具,这样整个通信过程会很清楚(毕竟一切尽在掌握还是很踏实的),另外还需要提醒的是OpenDaylight的REST API并不是很稳定,需要有耐心的慢慢调试。
2、SAL
再来说说你问的SAL的问题,这里你又可能会说:“我问的是MD-SAL”,是的,不过为了更好的对上面的问题进行补充,我这里用了SAL,在OpenDaylight里面有个很重要的功能模块就是SAL——Service Abstract Layer(服务抽象层),他的主要工作就是把南向接口的功能包装成统一的北向接口,不过在OpenDaylight里面有两种表现形式AD-SAL、MD-SAL,他们的工作就是提供REST API。AD-SAL比较好理解,看自己要实现什么样的API,去找相关的南向接口,然后做的工作就是将这些南向的功能变成统一的北向接口。而MD-SAL是通过管理YANG Tools自动生成java代码(REST API或其他功能模块),只需要配置相应的YANG Model就行了,很方便吧,所以现在其在ODL中所占的权重越来越大,不过也带来了较高的学习成本和不稳定性。
综上,REST API是ODL北向接口的表现形式,其可通过MD-SAL和AD-SAL提供,如果感觉现有的API不够用的话,那就可以使用二者提供了。我的理解就是这样了,希望能对你有所帮助。

小爱 - 不要说话

赞同来自: NoName neo


感谢大神们的帮助,看了一个假期感觉在大方向上已经有了了解,下面就要进入更加细节的学习了,我会加倍努力的(^_^)

要回复问题请先登录注册