欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > PPT文档下载
 

opendaylight框架分析

  • 资源ID:181406867       资源大小:2.21MB        全文页数:25页
  • 资源格式: PPT        下载积分:9.9积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要9.9积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

opendaylight框架分析

opendaylight分析opendaylightu总体架构分析u模块,osgi Bundle 与floodlight之间的简单对比uSAL层 之OF Packet的处理流程uMd-SAL模型化驱动简单分析uClustering集群OSGi:由于采用OSGi体系结构,其技术提供一种面向服务的架构,将应用视为对等模块的相互协作,SAL:整个架构引入了业务抽象层,将服务抽象化,使得上层(北向)和下层(南向)之间的调用相互隔离.MD(Model Drive):使用Yang工具,使用业务模型驱动来设计接口、实现业务功能,根据yang文件,Yang工具直接生成业务管理的“骨架”,主要用于南北接口数据的适配,使开发者真正专注于具体业务。集群(Infinispan):用开源的数据网格平台实现Controller的集群。南向北向:南向使用Netty来管理底层的并发IO,北向使用REST接口。核心技术与Floodlilght的简单区别采用OSGI框架,各模块间功能隔离开来,有利于扩展性、而且可以动态部署。OSGI的依赖关系管理,有多种实现方式,可以通过 Dependency Manager 对象来注册服务,并通过反射注明依赖的服务。而Floodlight只是单纯的java包之间的引用,扩展性不好,支持的南向接口少,目前只有;但是易于上手。是一个Openflow控制器.OpenDayLight中的bundles核心基类:ComponentactivatorabstractBase 实现了 Osgi提供的 BundleActivator,以自己定义的容器接口iContaineraware,从中发现各个bundle之间、Componet之间、全局和容器Container之间的依赖和调用关系。bundle的抽象基类,管理全局和容器相关的服务,当然bundle本身就是一个大服务。Container是OpenDaylight中的一个网络域,有很多链接信息、整个域网络信息等,由ContainerManager管理容器。而OSGI管理各个bundle;每个具体的接口实现和容器的Container为关键字通过DependencyManager(依赖管理)创建一个Componet,每个Component就是一个服务,里面说明了导出的接口和依赖的接口。DM以Component的形式来管理依赖关系。7主要方法如下:Start(context)启动方法,会遍历其所提供的实现,依次配置依赖关系。getGlobalImplementations()获取全局的实现类,其导出接口的实现类。getImplementations()获取容器相关的实现。Configureglobalinstance(c,Impsi),c是前面提到的componentconfigureInstance()在一个容器中配置实现的依赖关系。containerCreate(String containerName)配置Componet,里面说明了导出的接口和依赖的接口,最后放到dm及缓存中。会在CM的bundle启动中调用。CreateServiceDependency()生成服务依赖对象,需要被子类调用,在配置componet的依赖关系的时候需要用到。Bundle启动过程1)每个bundle都会从start(context)启动,先根据osgi上下文信息,生成bundle对应的dependencymanager对象,2)再获取全局相关的服务,每个实现通过dm创建一个componet,接着配置这个componet。这里每个Component就是一个服务,里面说明了导出的接口和依赖的接口3)然后将这个componet放到dm和缓存(并发map:dbglobalinstances)中。接着向osgi容器注册iContaineraware接口以便容器的生命周期转换点调用。4)最后调用bunndle的钩子函数init()。该函数的功能代码的注释已经概括的很明确。9ArpHandlerArpHandler ArpHandler 所实现的接口有 Ihostfinder,Ilistendatapacket,Icacheupdateaware,如前在所介绍的,其没有全局的实现,不会在启动过程中,配置Component,其会在先而会在ContainerManager,启动后,调用在调用configureInstance,配置依赖关系。bundle启动过程中导出这个接口,并通过Createservicedependency()生成服务依赖对象。其所依赖的对象,都是其它budnle所导出的接口,如依赖于SAL层的DataPacketService,DijkstraImplementatio,这个模块中所导出的Irouting接口,负责寻路。完成对ARP报文的处理。SAL服务抽象层主要作用将服务抽象出来,不管控制器和网络设备之间 使用何种协议,提供协约国的一服务,是odl的核心设计,支持多种南向协议,为各模块和应用提供一致的服务,这些服务的实现,是由插件公开(基于已存在的组件(如OF)和网络设备的功能))的所提供的接口,但是与SAL是松耦合的。具体将请求,映射到相应的插件,完成服务。所提供服务 Data Packet Services 为数据报文的处理,提供服务Topology Service为应用提供节点和链路的更新信息,Inventory service为如节点或者节点连接提供API查询Flow Programming Service 流编程服务Resource service资源服务,对于一个Packet-in的处理过程OF中的核心,Controller南向设备通信的控制台,与Flooodlight中的Controller类功能类似,相对简化,Of报文首先到达Controller,会将此报文发送对已经注册过监听of报文的类中进行处理,其中DatapacketMuxDemux只处理packet-in报文,其会进一步处理,交由处理DiscoveryService(处理的是LLDP),其后,交给实现了IpluginoutdatapacketserviceSAL层处理,最后交给实现了Ilistendatapacket监听报文的应用。这与Floodlight处理报文的过程同。Data Packet services举例来说报文的简单处理过程首先OF组件收到 APR,需要交到ARP Handler处理,将首先根据类型,调用IPOPS到SAL,交由SAL层Sal中的datapacketservice实现了IPOPS其会通过dispacthPacket()方法,其会调用 实现IListendatapacket的应用,最后 会将其送到ARP APP处理。Topology Service如前面所讲,报文经Controller处理后,DiscoveryService收到报文,因为其实现了 Idatapacketlisten,所以其能在DataPacketmuxdemux中处理of报文的过程中,处理这个链路processDiscoveryPacket()报文。交给实现了idiscoverylistener ,的 Topologyserviceshim ImplementsImplements Idiscoverylistener,在这个类中,有个进程,一直在运行着,一但有更新,就会,将其notifyedge(edge Edge,Updatetype Type,Set 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-sal REST接口相比更抽象,符合模型驱动(MD)的思想。16MD-SAL架构Broker功能:功能:consumer&provider 注册PRCs路由Notification hub1.系统状态访问和修改The Consumer&Provider Binding is generated from YANG schema.通过BindingIndependentConnector类Md-sal-Bundles 之service TrackerAbstarctBrokerAwareActivator Impl BundleActivator 为基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提供三种Infrastructure Service,Yang Module Service GetPpcService(class);Nitification Service NotificationserviceData Store Access And Modification 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新建一个实例,并Get References To The Following Services Registered With MD-SAL:1)Databrokerservice 数据存储服务,配置流,获取交换机状态 其实现类为 Databrokerimpl Begintransaction 中返回的transaction 是 Datatransactionimpl;2)Notificationservice Packetin 通知服务3)Packetprocessingservice 发送报文,通过三述服务,得到与Md-SAL层通知;在这个Consumer中,处理交换机,映射表,及自学习的过程,下发相应流FRMFrm Extends AbstractBindAwareProvider1)Provider.Dataservice=Providercontext.getSalservice(dataproviderserivce);Salflowservice=providercontext.getRpcService(dataProviderSerivce);通过 ProviderContext 获得两种服务,一种sal层服务,和rpc服务,2)(),中 CommitHandler=New FlowCommitHandler(salFlowService);Path 新建一个data Tree Modeled By YANG;DataService.RegisterCommitHandler(path,flowcommithandler)3)当有 时,调用 Requestcommit(datastoreindentifier);return Flowtransaction;invoke Finish();datacommittransaction是datacommithandler的内部类;finish Commit;OpenflowpluginActivator Extends ComponentActivatorAbstractBaseImp 为openFlowPluginProvider Dependency 依赖于bindingAwareBroker,switchConnectionProvider;初始化的过程中,会调用set方法,在两者set之后,会调用 Broker.RegisterProvider(this,context);返回providerContext,随后调用onSessioninitiated(pc);在这个类中get publishService和dataService;两个SAL服务;然后通过 SessionManagerOFImpl里注入这两个服务;new MDController();md.scp=setSwicthConnetcionProvider(swicthConnetcionProvider)处理与交换机连接的实际提供者,处理与交换机相连的部分;收到连接消息后,会调用下面的onSwitchConncted();md.start()1)FPC 注册 Registers With The MD SAL For Flow Configuration Data Notifications与OP AddFlow RPC implementation with the SAL2)requests a flow add through the Controllers REST API3)the MD-SAL generates a data changed notification to the Flow Programmer Service4)uses the OF Plugin generated API to create the RPC input parameter DTO for the OF Plugins“AddFlow”RPC5)MD-SAL will route the request to the appropriate OF Plugin6)下发流表(与AD-sal类似)谢谢

注意事项

本文(opendaylight框架分析)为本站会员(xt****7)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!