Opendaylight学习及开发初级教程

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Opendaylight学习文档qq群#北邮-天依目录1.概述....................................................................................................................31.1Opendaylight简介....................................................................................................................31.2本文档组织结构......................................................................................................................72.感受Opendaylight...............................................................................................72.1环境搭建.................................................................................................................................72.2获取代码..................................................................................................................................92.3安装mininet...........................................................................................................................112.4controller使用及功能介绍.................................................................................................112.5Openflowplugin功能及使用方法..........................................................................................142.6Hydrogen..............................................................................................................................163Maven和OSGI基础......................................................................................163.1Maven..................................................................................................................................163.2OSGI.....................................................................................................................................204使用IDE.........................................................................................................304.1使用Eclipse........................................................................................................314.1.1导入controller项目...........................................................................................................314.2使用Intellijidea..................................................................................................385Controller代码分析.....................................................................................395.1代码目录.............................................................................................................................405.2收发包过程简介(packetservice)...................................................................................416Opendaylight重要技术及文档......................................................................441.概述1.1Opendaylight简介Opendaylight(Opendaylight官网)是Linux基金会的一个合作项目。目前,包括十二个项目,每一个项目都有自己的代码库(Opendaylight项目列表)。这些项目中与openflow相关的项目的有controller、openflowjava和openflowplugin,目前,controller仅支持openflow1.0,openflowplugin是一个单独的项目,将来它的core部分要集成到controller中,使controller支持openflow1.3及以上的版本。Opendaylight的厂商成员分为铂金成员,金牌成员和银牌成员。图1Opendaylight阵营Opendaylightcontroller使用java编写,运行在JVM上,理论上来说可以部署到任何支持JAVA的平台上,但是其官网文档推荐的最佳运行环境为最新的Linux(Ubuntu12.04+)及JVM1.7+。OpenDaylightController提供了一个模块化的开放SDN控制器,它提供了开放的北向API(开放给应用的接口),同时南向支持多种包括openflow在内的多种SDN协议。底层支持混合模式的交换机和经典的Openflow交换机。OpenDaylightController在设计的时候遵循了六个基本的架构原则(以下来自opendaylight官方文档):运行时模块化和扩展化(RuntimeModularityandExtensibility):支持在控制器运行时进行服务的安装、删除和更新。多协议的南向支持(MultiprotocolSouthbound):南向支持多种协议。服务抽象层(ServiceAbstractionLayer):南向多种协议对上提供统一的北向服务接口。MD-SAL(ModelDrivenServiceAbstractionLayer)是opendaylight的一个主要feature。开放的可扩展北向API(OpenExtensibleNorthboundAPI):提供可扩展的应用API,通过REST或者函数调用方式。两者提供的功能要一致。支持多租户、切片(SupportforMultitenancy/Slicing):允许网络在逻辑上(或物理上)划分成不同的切片或租户。控制器的部分功能和模块可以管理指定切片。控制器根据所管理的分片来呈现不同的控制观测面。一致性聚合(ConsistentClustering):提供细粒度复制的聚合和确保网络一致性的横向扩展(scale-out)。Opendaylightcontroller的架构框架:图2Opendaylightcontroller架构如图2所示,南向通过plugin的方式来支持多种协议,包括OpenFlow1.0、1.3,BGP-LS等。这些模块被动态挂载到服务抽象层(SAL),SAL为上层提供服务,将来自上层的调用封装为适合底层网络设备的协议格式。控制器需要获取底层设备功能、可达性等方面的信息,这些信息被存放在拓扑管理器(TopologyManager)中。其他的组件,包括ARPhandler、HostTracker、DeviceManager和SwitchManager,则为TopologyManager生成拓扑数据。控制器为应用(App)提供开放的北向API。支持OSGI框架和双向的REST接口。OSGI框架提供给与控制器运行在同一地址空间的应用,而RESTAPI则提供给运行在不同地址空间的应用。所有的逻辑和算法都运行在应用中。控制器自带了GUI,这个GUI使用了跟应用同样的北向API,这些北向API也可以被其他的应用调用。Opendaylight的openflowplugin和openflowjava项目的目标是支持openflow1.3及以上的协议,由于openflow协议设计时并没有考虑后向兼容性(例如openflow1.0和openflow1.3的连接建立发生了很大的变化),Openflow1.3plugin采用和Openflow1.0完全不同的设计。集成到controller的openflow1.0plugin是由openflowplugin和openflowj两部分实现,其中openflowj是openflow1.0消息的静态库,它被openflow1.0plugin依赖,。Openflow1.3plugin中的openflowjava没有了Openflow1.3的消息库(使用了YANG,支持Openflow1.3以上的版本???)还包括了连接建立和协议编解码部分,OpenflowPlugin依赖Openflowjava实现消息处理等功能。Openflowjava和OpenflowPlugin设计框图如下:图3Openflowplugin和Openflowjava设计框图如图3所示,左侧为openflowjava的功能框图,右侧为Openflowplugin的框图。1.2本文档组织结构本文档关注与openflow相关的controller,openflowjava和openflowplugin三个项目,重点分析controller。本文本着由浅入深的原则,首先介绍如何获取相关项目代码,如何编译,运行;其次介绍OSGI框架和maven的一些基础概念,与此同时,分析opendaylightcontroller的代码结构,接着介绍如何将controller导入到Eclipse和Intellijidea中(之所以把这步放在OSGI和maven介绍之后,是因为导入工程到IDE的过程需要对OSGI和maven有一些了解),分析下这两种IDE在

1 / 46
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功