opendaylight框架分析说明_第1页
opendaylight框架分析说明_第2页
opendaylight框架分析说明_第3页
opendaylight框架分析说明_第4页
opendaylight框架分析说明_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

opendaylight分析opendaylight总体架构分析模块,osgiBundle与floodlight之间的简单比照SAL层之OFPacket的处理流程Md-SAL-模型化驱动简单分析Clustering-集群与Floodlilght的简单区别采用OSGI框架,各模块间功能隔离开来,有利于扩展性、而且可以动态部署。OSGI的依赖关系管理,有多种实现方式,可以通过DependencyManager对象来注册效劳,并通过反射注明依赖的效劳。而Floodlight只是单纯的java包之间的引用,扩展性不好,支持的南向接口少,目前只有OF1.0;但是易于上手。是一个Openflow控制器.OpenDayLight中的bundles核心基类:ComponentactivatorabstractBase实现了Osgi提供的BundleActivator,以自己定义的容器接口iContaineraware,从中发现各个bundle之间、Componet之间、全局和容器Container之间的依赖和调用关系。bundle的抽象基类,管理全局和容器相关的效劳,当然bundle本身就是一个大效劳。Container是OpenDaylight中的一个网络域,有很多链接信息、整个域网络信息等,由ContainerManager管理容器。而OSGI管理各个bundle;每个具体的接口实现和容器的Container为关键字通过DependencyManager(依赖管理)创立一个Componet,每个Component就是一个效劳,里面说明了导出的接口和依赖的接口。DM以Component的形式来管理依赖关系。主要方法如下:

Start(context)启动方法,会遍历其所提供的实现,依次配置依赖关系。getGlobalImplementations()获取全局的实现类,其导出接口的实现类。getImplementations()获取容器相关的实现。Configureglobalinstance(c,Imps[i]),c是前面提到的componentconfigureInstance〔〕在一个容器中配置实现的依赖关系。containerCreate(StringcontainerName)配置Componet,里面说明了导出的接口和依赖的接口,最后放到dm及缓存中。会在CM的bundle启动中调用。CreateServiceDependency()生成效劳依赖对象,需要被子类调用,在配置componet的依赖关系的时候需要用到。6SAL效劳抽象层主要作用将效劳抽象出来,不管控制器和网络设备之间使用何种协议,提供协约国的一效劳,是odl的核心设计,支持多种南向协议,为各模块和应用提供一致的效劳,这些效劳的实现,是由插件公开(基于已存在的组件〔如OF〕和网络设备的功能〕)的所提供的接口,但是与SAL是松耦合的。具体将请求,映射到相应的插件,完成效劳。所提供效劳DataPacketServices为数据报文的处理,提供效劳TopologyService为应用提供节点和链路的更新信息,Inventoryservice为如节点或者节点连接提供API查询FlowProgrammingService流编程效劳Resourceservice资源效劳,对于一个Packet-in的处理过程

OF中的核心,Controller南向设备通信的控制台,与Flooodlight中的Controller类功能类似,相对简化,Of报文首先到达Controller,会将此报文发送对已经注册过监听of报文的类中进行处理,其中DatapacketMuxDemux只处理packet-in报文,其会进一步处理,交由处理DiscoveryService〔处理的是LLDP〕,其后,交给实现了IpluginoutdatapacketserviceSAL层处理,最后交给实现了Ilistendatapacket监听报文的应用。这与Floodlight处理报文的过程同。DataPacketservices举例来说报文的简单处理过程首先OF组件收到APR,需要交到ARPHandler处理,将首先根据类型,调用IPOPS到SAL,交由SAL层Sal中的datapacketservice实现了IPOPS其会通过dispacthPacket()方法,其会调用

实现IListendatapacket的应用,最后会将其送到ARPAPP处理。TopologyService如前面所讲,报文经Controller处理后,,DiscoveryService收到报文,因为其实现了

Idatapacketlisten

,所以其能在DataPacketmuxdemux中处理of报文的过程中,处理这个链路processDiscoveryPacket〔〕报文。交给实现了idiscoverylistener

,的

Topologyserviceshim

Implements

Idiscoverylistener,在这个类中,有个进程,一直在运行着,一但有更新,就会,将其notifyedge(edge

Edge,UpdatetypeType,Set<property>Props)而后,其交给监听了

Itopologyserviceshimlistener,将其交给topologyservices

,处理,交给SAL层的Topology类,这个会调用IListenTopoUpdates遍历监听数组。s.edgeUpdate(topoedgeupdateList);MD-SALMd-SAL分析Md-sal的主要功能是促进提供者和使用者之间的管道。它可以提供提供者和使用者之间的管道在不同的容器中。它将连接到一个消息总线和共享数据存储的集群opendaylight容器。提供者或消费者在md-sal中注册。从而,一个消费者可以找到所需的供给商。提供者可以生成通知,消费者可以接收通知,并从提供者获取数据。插件sal角色(消费者或生产者)定义的sal中的数据是被移走或存储数据。提供者可以将数据存入sal的,一个消费者可以从sal读取数据。Md-sal提供请求路由和根底设施效劳,以支持效劳,但它不提供效劳本身;由插件提供效劳。Yang使得Componet之间、plugin、北向等api,使得这种接口和ad-salREST接口相比更抽象,符合模型驱动〔MD〕的思想。MD-SAL架构Broker功能:consumer&provider注册PRCs路由Notificationhub系统状态访问和修改TheConsumer&ProviderBindingisgeneratedfromYANGschema.通过BindingIndependentConnector类15Md-sal-Bundles之serviceTrackerAbstarctBrokerAwareActivatorImplBundleActivator为基Bunddle;每个Md-SAL的Consumer,Provider分别继承AbstarctBrokerAwareConsumer;AbstarctBrokerAwareProvider;在这个类中有个BindAwareBroker,这个是MD-SAL层的核心Start方法中startImpl(context);然后新建一个ServiceTracker〔BindAwareBroker〕.open后,后会追踪效劳;当有效劳注册时,OSGI会触发addingservice();在本实现中,即BindAwareBroker这个在OSGI中实现后,会通过context.getService(getService(servicereference(bindingawarebroker))得到BindAwareBroker的实现,得到后会新建一个线程;onBrokerAvaiable(broker,context);AbstarctBrokerAwareConsumer

在这个方法中,完成Consumer的注册,会broker.RegisterConsumer(this,cotext);BingAwareBroker提供三种InfrastructureService,YangModuleService

GetPpcService(class);NitificationService

NotificationserviceDataStoreAccessAndModification

Databrokerservice在其实现中,会初始化这三种效劳,并注入其实现,然后在为OSGI中注册;然后在前面通过addingservice()中很到的getService(servicereference(bindingawarebroker));中得到其它注册来的borker;得到后,会将Consumer注册到这个broker中,得到ConsumerContext,后调用各自Consumer的onSessionInitialized(ConsumerContext);其中会通过getPrcService与getSALservice得到这三类效劳;BindingIndependentConnector这个类,主要负责与BA与BI之间的交互过程;完成BA到BI,与BI到BA的过程;在其成员变量中,有MapingService;及BA与BI的效劳,LearningSwitchLearningswitch

继承了

Abstractbindingawareconsumer在Onsessioninitialized(){}Learningswitchmanagermultiimpl新建一个实例,并GetReferencesToTheFollowingServicesRegisteredWithMD-SAL:1)Databrokerservice

数据存储效劳,配置流,获取交换机状态

其实现类为

Databrokerimpl

Begintransaction中返回的transaction是Datatransactionimpl;2)Notificationservice

Packetin通知效劳3)Packetprocessingservice发送报文,通过三述效劳,得到与Md-SAL层通知;在这个Consumer中,处理交换机,映射表,及自学习的过程,下发相应流FRMFrm

ExtendsAbstractBindAwareProvider1〕Provider.Dataservice=Providercontext.getSalservice(dataproviderserivce);Salflowservice=providercontext.getRpcService(dataProviderSerivce);通过

ProviderContext获得两种效劳,一种sal层效劳,和rpc效劳,2〕Provider.start〔),中CommitHandler=NewFlowCommitHandler(salFlowService);Path新建一个dataTree

ModeledByYANG;DataService.RegisterCommitHandler(path,flowcommithandler)3)当有Databrokerservice.Commit时,调用Requestcommit(datastoreindentifier);return

Flowtransaction;invokeFinish();datacommittransaction是datacommithandler的内部类;finishCommit;OpenflowpluginActivatorExtendsComponentActivatorAbstractBaseImp为openFlowPluginProviderDependency依赖于bindingAwareBroker,switchConnectionProvider;初始化的过程中,会调用set方法,在两者set之后,会调用Broker.RegisterProvider(this,context);返回providerContext,随后调用onSessioninitiated(pc);在这个类中getpublishService和dataService;两个SAL效劳;然后通过SessionManagerOFImpl里注入这两个效劳

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论