




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
框架分析课件OSGi:由于采用OSGi体系结构,其技术提供一种面向服务得架构,将应用视为对等模块得相互协作,SAL:整个架构引入了业务抽象层,将服务抽象化,使得上层(北向)和下层(南向)之间得调用相互隔离、MD(ModelDrive):使用Yang工具,使用业务模型驱动来设计接口、实现业务功能,根据yang文件,Yang工具直接生成业务管理得“骨架”,主要用于南北接口数据得适配,使开发者真正专注于具体业务。集群(Infinispan):用开源得数据网格平台实现Controller得集群。南向北向:南向使用Netty来管理底层得并发IO,北向使用REST接口。核心技术与Floodlilght得简单区别采用OSGI框架,各模块间功能隔离开来,有利于扩展性、而且可以动态部署。OSGI得依赖关系管理,有多种实现方式,可以通过DependencyManager对象来注册服务,并通过反射注明依赖得服务。而Floodlight只就是单纯得java包之间得引用,扩展性不好,支持得南向接口少,目前只有OF1、0;但就是易于上手。就是一个Openflow控制器、OpenDayLight中得bundles核心基类:ponentactivatorabstractBase实现了Osgi提供得BundleActivator,以自己定义得容器接口iContaineraware,从中发现各个bundle之间、ponet之间、全局和容器Container之间得依赖和调用关系。bundle得抽象基类,管理全局和容器相关得服务,当然bundle本身就就是一个大服务。Container就是OpenDaylight中得一个网络域,有很多链接信息、整个域网络信息等,由ContainerManager管理容器。而OSGI管理各个bundle;每个具体得接口实现和容器得Container为关键字通过DependencyManager(依赖管理)创建一个ponet,每个ponent就就是一个服务,里面说明了导出得接口和依赖得接口。DM以ponent得形式来管理依赖关系。主要方法如下:
Start(context)启动方法,会遍历其所提供得实现,依次配置依赖关系。getGlobalImplementations()获取全局得实现类,其导出接口得实现类。getImplementations()获取容器相关得实现。Configureglobalinstance(c,Imps[i]),c就是前面提到得ponentconfigureInstance()在一个容器中配置实现得依赖关系。containerCreate(StringcontainerName)配置ponet,里面说明了导出得接口和依赖得接口,最后放到dm及缓存中。会在CM得bundle启动中调用。CreateServiceDependency()生成服务依赖对象,需要被子类调用,在配置ponet得依赖关系得时候需要用到。6Bundle启动过程1)每个bundle都会从start(context)启动,先根据osgi上下文信息,生成bundle对应得dependencymanager对象,2)再获取全局相关得服务,每个实现通过dm创建一个ponet,接着配置这个ponet。这里每个ponent就就是一个服务,里面说明了导出得接口和依赖得接口3)然后将这个ponet放到dm和缓存(并发map:dbglobalinstances)中。接着向osgi容器注册iContaineraware接口以便容器得生命周期转换点调用。4)最后调用bunndle得钩子函数init()。该函数得功能代码得注释已经概括得很明确。ArpHandler
ArpHandler所实现得接口有Ihostfinder,Ilistendatapacket,Icacheupdateaware,如前在所介绍得,其没有全局得实现,不会在启动过程中,配置ponent,其会在先而会在ContainerManager,启动后,调用在调用configureInstance,配置依赖关系。bundle启动过程中导出这个接口,并通过Createservicedependency()生成服务依赖对象。其所依赖得对象,都就是其她budnle所导出得接口,如依赖于SAL层得DataPacketService,DijkstraImplementatio,这个模块中所导出得Irouting接口,负责寻路。完成对ARP报文得处理。8SAL服务抽象层主要作用将服务抽象出来,不管控制器和网络设备之间使用何种协议,提供协约国得一服务,就是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使得ponet之间、plugin、北向等api,使得这种接口和ad-salREST接口相比更抽象,符合模型驱动(MD)得思想。MD-SAL架构Broker功能:consumer&provider注册PRCs路由Notificationhub系统状态访问和修改TheConsumer&ProviderBindingisgeneratedfromYANGschema、通过BindingIndependentConnector类16Md-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));中得到其她注册来得
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025分布式光伏发电屋顶租赁合同
- 2025年度空调设备供应合同
- 2025存量房买卖合同附件样本
- 阴茎癌的临床护理
- 《中医诊断学题》课件
- 《公共卫生法规与传染病管理》课件
- 《深度解析医疗制度》课件
- 2025年陕西货运从业资格证模拟考试下载
- 塔里木职业技术学院《教学统计软件》2023-2024学年第二学期期末试卷
- 上海市长宁区高级中学2025届初三年级第一次质量检测试题化学试题含解析
- DB65-T 4765-2024 农牧区标准化羊场建设规范
- 城轨行车课程设计
- 2024年南京市中考历史试题及答案
- 2024羽毛球教案36课时
- A类供应商绩效评价表
- 摄影摄像知识竞赛考试题库500题(含答案)
- 2024至2030年中国丹参行业市场发展监测及投资潜力预测报告
- GB/T 44218-2024微型扬声器测量方法
- (正式版)JB∕T 14666-2024 钢质汽车转向节臂锻件 工艺规范
- AQ/T 9009-2015 生产安全事故应急演练评估规范(正式版)
- 《无人机测绘技能训练模块》课件-模块7:无人机航测影像获取
评论
0/150
提交评论