opendaylight框架分析
OpenDayLight 代码学习研究
ODL学习修改记录1.1ODL概述Opendaylight是一个以模块化、可插拔、灵活的、基于Java的控制器为核心的开源平台。
从北往南,它首先包括供上层应用和业务逻辑使用的北向开放API,有OSGi和REST两类。
上层应用程序利用这些北向API获得网络智能信息、运行算法处理分析以及组合新的网络策略;其次,它包括控制器平台本身,它是一组可动态组合的模块用于汇集网络信息,比如网络中有哪些元素、其统计信息如何等;最南边是能够支持多种协议的南向接口,如Openflow 1.0 1.3 BGP-LS等,这些南向接口可以调用设备上服务抽象层SAL。
1.2ODL架构原则Open Daylight Controller在设计的时候遵循了六个基本的架构原则:(1) 运行时模块化和扩展化(Runtime Modularity and Extensibility):支持在控制器运行时进行安装、删除和服务的更新。
(2) 多协议的南向支持(Multiprotocol Southbound):南向支持多种协议。
(3) 服务抽象层(Service Abstraction Layer):南向多种协议对上提供统一的北向服务接口。
(4) 开放的可扩展北向API(Open Extensible Northbound API):提供可扩展的应API,通过REST或者函数调用方式。
两者提供的功能要一致。
(5) 支持多租户、切片(Support for Multitenancy/Slicing):允许网络在逻辑上(或物理上)划分成不同的切片或租户。
控制器的部分功能和模块可以管理指定切片。
控制器根据所管理的分片来呈现不同的控制观测面。
(6) 一致性聚合(Consistent Clustering):提供细粒度复制的聚合和确保网络一致性的横向扩展(scale-out)。
1.3框架概述上图所示,南向通过plugin的方式来支持多种协议,包括OpenFlow1.0、1.3,BGP-LS 等。
opendaylight 模块划分
在撰写文章之前,我将先进行深度和广度的评估,以全面了解opendaylight模块划分这一主题。
opendaylight是一个开放源代码的软件定义网络(SDN)控制器评台,用于管理和控制网络中的交换机和路由器。
在opendaylight中,模块划分是指将整个系统划分为多个模块,每个模块负责特定的功能或服务。
我将从简到繁、由浅入深地探讨opendaylight模块划分的相关内容。
我会以简单的方式介绍opendaylight模块划分的基本概念和作用。
随后,我将详细分析opendaylight中常见的模块划分方式以及各自的功能和特点。
在文章的后半部分,我将探讨opendaylight模块划分的实际应用和未来发展趋势,以及对该主题的个人观点和理解。
那么,让我们开始撰写这篇有价值的文章吧。
---opendaylight模块划分的基本概念和作用在opendaylight中,模块划分是指将整个系统划分为多个模块,每个模块负责特定的功能或服务。
这种模块化的设计可以使系统更加清晰和灵活,方便开发者和用户理解和使用。
模块划分也有利于系统的扩展和定制,可以根据实际需求选择性地加载和使用特定的模块,从而提高系统的性能和效率。
opendaylight中常见的模块划分方式在opendaylight中,常见的模块划分方式包括北向接口(Northbound Interface)、南向接口(Southbound Interface)、核心功能模块(Core Function Module)和应用模块(Application Module)等。
每种方式都有其独特的功能和特点,下面将对每种方式进行详细分析。
1. 北向接口(Northbound Interface)北向接口是opendaylight提供给上层应用和用户的接口,用于实现业务逻辑和控制功能。
通过北向接口,上层应用和用户可以与opendaylight进行交互和通信,实现对网络的监控、管理和控制。
opendaylight框架分析
MD-SAL
Md-SAL分析
•Md-sal的主要功能是促进提供者和使用者之间的管道。它可以提供提供者和使用者之间的管道在不同的容器中。
对于一个Packet-in的处理过程
OF中的核心,Controller
南向设备通信的控制台,与Flooodlight中的Controller类功能 类似,相对简化,Of报文首先到达Controller,会将此报文发送 对已经注册过监听of报文的类中进行处理,其中 DatapacketMuxDemux只处理packet-in报文 ,其会进一步处理,交由处理DiscoveryService〔处理的是 LLDP〕,其后,交给实现了Ipluginoutdatapacketservice SAL层处理,最后交给实现了Ilistendatapacket监听报文的应用。 这与Floodlight处理报文的过程同。
Topology Service
•如前面所讲,报文经Controller处理后,,DiscoveryService收到报文,因为其实现
了 Idatapacketlisten ,所以其能在DataPacketmuxdemux中处理of报文的过程中,处理这个 链路processDiscoveryPacket〔〕报文。交给实现了idiscoverylistener , 的 Topologyserviceshim Implements Idiscoverylistener,
8
SAL效劳抽象层
主要作用将效劳抽象出来,不管控制器和网络设备之间 使用何种协议,提供协约国的一效劳,是odl 的核心设计,支持多种南向协议,为各模块和应用提供一致的效劳,这些效劳的实现 ,是由插件公开 (基于已存在的组件〔如OF〕和网络设备的功能〕)的所提供的接口,但是与SAL是松耦合的。具体将请 求,映射到相应的插件,完成效劳。
基于OpenDaylight防火墙的研究与实现
收稿日期:2018-06-25 修回日期:2018-11-17 网络出版时间:2019-03-06基金项目:国家自然科学基金(61003040);江苏省科技计划项目:未来网络前瞻性研究项目(BY 2013095108);江苏省自然科学基金面上项目(BK 20171447)作者简介:费 宁(1977-),女,博士,副教授,研究方向为软件定义网络;刘春秋(1995-),男,研究方向为软件定义网络㊂网络出版地址:http :// /kcms /detail /61.1450.TP.20190306.0907.030.html基于OpenDaylight 防火墙的研究与实现费 宁,刘春秋(南京邮电大学计算机学院软件学院,江苏南京210003)摘 要:随着网络规模的持续发展,传统的分布式网络已经不能满足网络配置和管理的要求,软件定义网络作为一种全新的网络架构给网络安全研究提供了新的方向㊂该架构将数据转发层和控制层相分离,并且在控制层之上开放了应用程序编程接口㊂在深入分析软件定义网络的系统原理和架构设计的基础上,提出了基于OpenDaylight 平台的软件定义网络防火墙的实现方案FireClient,并借助软件项目管理和依赖分析工具Maven 和数据建模语言Yang,开发了上层应用调用模块㊂FireClient 允许用户灵活修改策略,其在不同场景中的实际测试结果表明,使用基于软件定义网络的防火墙可以更为灵活的布置策略和快速实施㊂相比传统网络的配置和部署,软件定义网络使得第三方的快速应用开发成为可能,从而极大地推动了网络新业务的部署和拓展㊂关键词:软件定义网络;OpenDaylight;防火墙;FireClient;Maven中图分类号:TP393.1 文献标识码:A 文章编号:1673-629X (2019)06-0112-04doi:10.3969/j.issn.1673-629X.2019.06.023Research and Implementation of Firewall Based on OpenDaylightFEI Ning ,LIU Chun -qiu(School of Computer Science &Technology ,School of Software ,Nanjing University ofPosts &Telecommunications ,Nanjing 210003,China )Abstract :With the continuous growth of network scale ,the traditional distributed network can no longer meet the requirements of network configuration and management.As an evolutionary network framework ,software defined networking (SDN )provides a new direction for network security research.This new framework separates the data forwarding plane from the control plane and also provides application programming interfaces on top of the control plane.Based on the in -depth analysis of the system principle and architecture design of SDN ,we propose the implementation scheme FireClient of SDN firewall based on OpenDaylight platform ,and with the help of Maven ,a software project management and dependency analysis tool ,and Yang ,a data modeling language ,we develop the upper application call module.The users can modify policies flexibly with FireClient ,and its test in different scenarios shows that the use of firewalls based on SDN can arrange policies flexibly and implement pared with the traditional network configuration and deployment ,SDN makes it possible for the rapid application development of the third party ,thus greatly promoting the deployment and expansion of new network services.Key words :SDN ;OpenDaylight ;firewall ;FireClient ;Maven0 引 言软件定义网络(software defined network ,SDN )将网络控制与数据转发分离,使用开放的㊁独立的应用层接口,使得通过软件集中配置和管理设备成为可能㊂软件定义网络作为一种全新的网络架构给网络安全研究提供了新的方向,SDN 在流转发㊁深度包检查㊁流量重定向等方面具有优势,基于SDN 的网络安全新技术和新应用不断涌现[1-3]㊂不少学者提出了软件定义网络集中式架构下的安全技术框架,尝试提供更为完善的威胁分析和防御方法[4-5]㊂文中在深入分析软件定义网络和OpenFlow 系统原理和架构设计的基础上,提出了基于OpenDaylight 控制器的防火墙,并搭建了实验平台㊂该软件定义网络有利于新的网络应用的快速部署和实施,并且基于软件定义网络控制器的安全第29卷 第6期2019年6月 计算机技术与发展COMPUTER TECHNOLOGY AND DEVELOPMENT Vol.29 No.6June 2019策略切实可行㊂1 基于OpenDaylight的安全设计与实现1.1 OpenDaylight的系统原理和架构设计OpenDaylight的软件定义网络的架构特性,使其可以方便地实现路由路径优化,大幅度降低网络维护成本,提高网络设备利用率,增加网络设备的可扩展性和稳定性,并能够解决传统网络中的传输性能㊁流量控制㊁访问控制等问题㊂OpenDaylight通过SAL(service abstraction layer)将底层接口提供的功能封装成具体的服务提供给上层模块应用,屏蔽了多种南向协议之间的差异,为上层模块提供一致的服务,包括数据包服务㊁拓扑服务㊁流表编程服务等㊂在路由转发部分,模块首先要注册IListenData Packet服务,从SAL收到的数据包呈队列格式存放,并且将数据包IP目的地址放入pendingPacket Destinations集合中,run线程从此集合中取出对象IP㊂同时主机追踪模块解析数据包的目的主机,获取相关信息后,对交换机进行遍历,得到整个网络的拓扑结构图,再通过Dijkstra最短路径算法得到路由,将路径链路放到rulesDB中,接着将流表规则下发至路径经过的每个交换机,利用dataPacketService.transmitData Packet()方法将数据包发送出去[6]㊂OpenDaylight提供了相应的应用层接口,应用程序向OpenDaylight发出调用指令,OpenDaylight利用相应的接口与底层网络设备进行通信㊂同时, OpenDaylight还向应用程序提供基础设施相关的功能接口,如流量监控㊁管理㊁入侵防御等㊂1.2 基于OpenDaylight开发的防火墙模块的应用架构设计传统网络中,处于服务器及应用程序之下的底层位置的是相应的网络设备,软件定义网络概念的提出,为集中式网络架构提供了可能性,内部网络功能也开始出现在新的层级中[7-8]㊂OpenDaylight的作用就是将网络功能剥离硬件,重新放回到控制器当中,并且为SDN制定一套通用型框架[9]㊂文中设计的基于OpenDaylight平台的防火墙的整体流程包括:firewall 模块功能逻辑;FireClient应用界面开发㊁网络请求逻辑和返回结果的数据处理;测试脚本对firewall模块请求接口的调用测试㊂整体设计流程如图1所示㊂图1 整体设计流程图2 防火墙应用的控制流程 设计的防火墙应用控制流程如图2所示㊂当网络设备向主机发送网络请求时,装载于OpenDaylight平台上的防火墙应用会查询访问控制策略列表,如果请求访问的设备IP在列表内,则拒绝访问,否则对访问㊃311㊃ 第6期 费 宁等:基于OpenDaylight防火墙的研究与实现请求做出处理或者向下层设备转发㊂基于此,首先需要基于OpenDaylight平台开发出防火墙应用(firewall 模块),用于访问控制,还需要开发出上层应用(FireClient)对访问控制策略进行添加㊁删除㊁查询等管理操作㊂Firewall模块的调用流程则是:用户通过上层应用调用firewall模块提供的标准接口,传入相应参数, firewall模块本身对用户请求和参数进行对应的处理,更新访问控制列表,返回接口调用结果等㊂FireClient的功能流程则是:FireClient应用提供发送请求㊁查询㊁增删策略功能,每个功能调用对应的firewall模块提供的API,实现接口调用相关的网络请求发送,返回结果的JSON数据处理和展示等㊂模块是OpenDaylight的功能单元,各个模块之间相互独立又彼此协调,组合起来构成了OpenDaylight 对外提供的网络资源管理㊁数据分发等全部功能㊂比较常用的模块有yangUI㊁dlux㊁l2switch等㊂本次研究中设计开发的防火墙就是基于OpenDaylight平台的模块,该模块可以在开发测试完成后用Maven打包,并导入OpenDaylight的release版中,与其他模块一起使用㊂2 实验环境搭建和测试结果2.1 基于OpenDaylight开发的防火墙模块的应用架构设计Maven是基于项目对象模型(POM)的软件项目管理和依赖分析工具,可以通过描述信息进行创建项目㊁编译项目㊁加载项目依赖等[10-11]㊂基于Maven简化构建过程的思考,在本次项目开发中,将使用Maven构建firewall项目骨架,并且使用Maven对开发好的firewall 进行编译㊁打包㊂Yang是一种数据建模语言[12-13],开发者通过对Yang模型的构建,指定标准访问接口和数据类型,通过远程调用或消息通知的方式实现模型配置与数据的分发处理㊂Yang模型的类型之一为Data,负责定义数据类型并用来进行数据存储,分为两种:Config和Operational㊂Config为配置信息,是北向上层应用向南向网络发送的配置数据信息,Operational为运行时信息,通常是OpenDaylight记录的南向网络动态信息㊂实验设计中开发的FireClient是基于Mac OS X系统的Cocoa框架,开发语言是Swift,集成开发环境是Xcode[14]㊂主要步骤如下:第一步创建项目;第二步开发用户界面,使用原生的AppKit框架[15],框架底层采用OpenGL绘制,用到了对象的延迟加载及frame相对布局,界面效果如图3所示;第三步调用REST API,firewall模块提供的REST API有:发送请求(request);查询访问控制IP列表(query);增加访问控制IP(add);删除访问控制IP(de⁃lete)㊂图3 FireClient用户界面REST API调用代码,以query接口为例,执行步骤如下:(1)构建HTTP请求头,请求头中包括OpenDaylight的Dlux界面的登录授权,content-type等数据;(2)构建HTTP请求体,请求体中包括向query接口发送的参数;(3)申请并初始化NSURLRequest对象request,设定请求方式为POST,并指定已构建好的HTTP请求头和HTTP请求体;(4)获取URLSession的单例对象session,session 异步调用dataTask方法,传入request参数; (5)在dataTask方法的block中对请求的响应结果的JSON数据进行解析,获取有效信息; (6)获取主线程,在主线程中将有效信息展示在用户界面上;(7)调用session的resume()方法开始执行session 的HTTP请求㊂2.2 测试结果及结果分析模拟测试脚本用于模拟虚拟设备向firewall模块对外提供的REST API,脚本代码如图4所示㊂图4 脚本代码测试过程按照如下用例依次进行:㊃411㊃ 计算机技术与发展 第29卷用例1:调用脚本向request 发送请求,模拟IP 为192.168.2.1,预期结果:访问成功㊂执行脚本./request.sh "hello""192.168.2.1",输出结果,如图5所示㊂图5 用例1测试结果用例2:用FireClient 添加访问策略,禁止IP 为192.168.2.1设备访问,预期结果:访问拒绝㊂用FireClient 增加访问策略,禁止IP 为192.168.2.1的设备访问,点击 增加”按钮之后,则添加成功㊂执行脚本./request.sh "hello""192.168.2.1",输出结果如图6所示:阻止了IP 为192.168.2.1的设备的访问㊂测试结果和预期一样㊂图6 用例2测试结果用例3:添加访问策略,禁止IP 为192.168.2.2的设备访问,用FireClient 查询访问控制策略列表,查询值为2,预期结果:返回两个禁止访问的IP 地址㊂添加访问策略,禁止IP 为192.168.2.2的设备访问,操作步骤与用例2相同㊂用FireClient 查询访问控制策略列表,查询值为2㊂查询结果显示了添加的访问控制列表㊂3摇结束语文中提出了一种基于OpenDaylight 的防火墙设计与实现方案,并通过实验验证了其可行性㊂实验结果表明,由于OpenDaylight 已经提供了丰富的应用程序接口,使得快速进行网络应用的二次开发成为可能㊂虽然该应用原型测试案例比较简单,但所有的防火墙策略都可以通过用户界面灵活修改㊂下一步将对用户策略的抽象和定制以及平台跨操作系统的移植等进行研究㊂参考文献:[1] 戴 彬,王航远,徐 冠,等.SDN 安全探讨:机遇与威胁并存[J].计算机应用研究,2014,31(8):2254-2262.[2] 刘文懋,裘晓峰,陈鹏程,等.面向SDN 环境的软件定义安全架构[J].计算机科学与探索,2015,9(1):63-70.[3] MCKEOWN N,ANDERSON T,BALAKRISHNAN H,et al.OpenFlow:enabling innovation in campus networks[J].ACMSIGCOMM Computer Communication Review,2008,38(2):69-74.[4] 王淑玲,李济汉,张云勇,等.SDN 架构及安全性研究[J].电信科学,2013,29(3):117-122.[5] GREENE K.TR10:software -defined networking [N].MIT Technology Review,2011-10-07.[6] 王雪梅.基于OpenDavlight 架构的路由组件的研究与实现[D].北京:北京邮电大学,2016.[7] RADDA P.Brocade leads OpenFlow adoption to acceleratenetwork virtualization and cloud application development[N].Reuters,2011-11-29.[8] 文旭韬.SDN 安全控制器的优化设计与实现[D].北京:北京邮电大学,2015.[9] 费 宁,陈春玲,毛燕琴.ASIC 芯片OpenFlow 交换机设计与实现[J].北京邮电大学学报,2016,39(6):93-98.[10]许晓斌.Maven 实战[M].北京:机械工业出版社,2010:67-78.[11]钱言佳.基于Maven 的CWAP 框架基础单元层和基础服务层的设计与实现[D].南京:南京大学,2016.[12]常亚楠.基于YANG 语言的NETCONF 网络管理数据建模的研究与实现[D].武汉:华中师范大学,2009.[13]文俊浩,杨小义,谢 军.扩展UML 活动图在工作流建模中的应用[J].计算机应用研究,2007,24(12):244-245.[14]MANNING J,BUTTFIELD -ADDISON P,NUGENT T.Swiftdevelopment with Cocoa developing for the Mac and iOS App stores[M].北京:人民邮电出版社,2015.[15]DOVEY J,FURROW A.Objective-C 开发经典教程[M].北京:清华大学出版社,2014.㊃511㊃ 第6期 费 宁等:基于OpenDaylight 防火墙的研究与实现。
OpenDaylight Helium版本与Hydrogen版本比较
OpenDaylight Helium版本与Hydrogen版本比较1OpenDaylight Helium版本业界组织OpenDaylight联盟最近发布了其开源SDN软件的2.0版本,即Helium(氦)版本,该2.0版本加入了一些有关Helium和OpenDaylight未来发展方向的新理念,致力于研发出“开放、易懂”的SDN解决方案。
且更多新厂商的加入对OpenDaylight项目的支持,印证了OpenDaylight目前的发展和进步。
1.1Helium版本变化Helium版本相较于1.0氢版本的一些变化:(1)OpenDaylight结合OpenStack。
在Helium版本中最明显的特征是OpenDaylight与OpenStack之间整合的方式,其中包括在Open vSwitch数据库整合项目中一些明显的改善,以及高级的OpenStack特征(如安全小组、分布式虚拟路由器和负载均衡即服务)的技术预览。
(2)组策略插件(Group Policy Plugin)。
能够在以策略为重点的北向API中提供比Affinity更好的体验,提供多样性选择,可以实行单一的模型也可以同时实行两种模型。
(3)DLUX(openDayLight User eXperience)。
通过更多拖放功能的图形用户界面增强用户体验,更易拖拽,且设备图形显示更美观。
(4)NFV(网络功能虚拟化)。
推动SDN与NFV的发展,重新构建网络,且新增11个新的协议、应用及技术到SDN和NFV平台中,使之更灵活的、互操作性更可用。
(5)变化最大的是配备了一个新的用户界面和一个更简单并可定制的功能安装过程,并使用了Apache Karaf容器,提供开发者更方便测试和管理SDN生产环境的平台。
使用Karaf容器后,OpenDaylight的启动方式也有了很大的改变,如进入OpenDaylight目录,切换到bin目录下,执行启动命令:启动成功后安装各功能模块也较简单,直接通过feature命令进行安装,如安装L2switch功能:新的用户界面显示相比较1.0版本完全变化,直接将Nodes、YangUI、Topology、Network、Connection manager、Flows等模块功能显示,更显直观,如下图部分功能显示:(6)更高的可用性,以及加强和增加新的协议,如OpenFlow的表格型模式、PacketCable多媒体、应用程序的策略框架和工具、服务功能链接等。
OpenDaylight:以更开放的姿态融入中国
OpenDaylight:以更开放的姿态融入中国作者:暂无来源:《计算机世界》 2016年第16期随着用户对上网需求的增长,网络变得越来越重要,未来业界的创新将会聚焦于让网络变得更加开放、灵活、可编程。
而SDN 和NFV 已成为业界公认的变革网络的关键技术。
文宋辰对于企业来说, 通常存在着类似的两种技术使用模式, 一种由高层管理者决策自上而下执行, 另一种则是由对技术最了解的人员自下而上的说服高层管理者来应用。
旨在加速SDN 和NFV 采用的开源项目OpenDaylight 即属于第二种。
研究机构预测,到2020 年,SDN(软件定义网络)、NFV(网络功能虚拟化)及其他下一代网络计划(SDX 等)总市场价值将达到年1015 亿美元。
SDN 和NFV 要想获得成功必须拥有一个通用的平台,支持各种各样的终端、应用场景。
软件定义网络(Software DefinedNetwork, SDN) 最早由斯坦福大学cleanslate 研究组提出。
SDN 的核心是控制与承载相分离,实现网络开放,使流量可以被灵活控制,从而为上层的业务和应用提供更优化的服务。
这意味着,网络应用、网络操作系统、硬件可以来自不同的供应商,只要它们可以使用部署在白盒或“brite”盒上彼此约定的接口进行通信。
白盒交换机用的是现成的商用交换机芯片,里面含有开放的SDN 软件来运行网络应用程序。
NFV 用于实现虚拟网络功能,因此其可以运行在成本较低的硬件平台上,并且可以以自动化的方式提供服务。
虚拟化的网络功能(VNF)将像虚拟机一样运行在COTS平台上,并且通过编排工具来管理要执行(创建)的服务。
许多VNF 将由云来交付,从而最大化的利用资源;同时微服务和容器将帮助运营商打造创新的服务。
随着用户对上网需求的增长,网络变得越来越重要,未来业界的创新将会聚焦于让网络变得更加开放、灵活、可编程。
而SDN 和NFV 已成为业界公认的变革网络的关键技术。
软件定义网络的开源实现平台和工具介绍(Ⅰ)
软件定义网络的开源实现平台和工具介绍随着信息技术的不断发展,网络已经成为我们日常生活和工作中不可或缺的一部分。
在传统的网络架构中,网络设备的控制和数据转发是紧密耦合的,这就限制了网络的灵活性和创新性。
软件定义网络(Software Defined Networking,SDN)作为一种新的网络架构,通过将网络设备的控制平面从数据转发平面中分离出来,使得网络能够更加灵活、可编程和可管理。
为了实现SDN,需要一些开源的实现平台和工具来帮助用户快速搭建SDN网络并进行管理和编程。
本文将介绍几种常用的软件定义网络的开源实现平台和工具。
1. OpenDaylightOpenDaylight是一个由Linux基金会主持的开源项目,旨在创建一个开放平台,以加速软件定义网络和网络功能虚拟化的发展。
OpenDaylight提供了丰富的SDN控制器功能,包括流表管理、拓扑发现、网络编程接口等。
它的模块化架构使得用户可以根据自己的需求选择和定制所需的功能模块,从而实现个性化的SDN网络。
2. ONOSONOS(Open Network Operating System)是一个由主导开发的开源SDN控制器平台。
它的目标是创建一个开放的、高性能的SDN控制器,以支持大规模的网络部署和多租户应用。
ONOS提供了丰富的网络编程接口和应用程序框架,使得开发者能够快速开发和部署自己的SDN应用。
3. RyuRyu是一个轻量级的SDN控制器平台,它基于Python语言开发,具有简单、灵活和可扩展的特点。
Ryu提供了丰富的模块和库,包括OpenFlow协议库、网络拓扑库、虚拟交换机库等,使得用户可以轻松地开发自己的SDN应用和控制逻辑。
4. MininetMininet是一个用于快速创建SDN网络的开源工具,它可以在一台普通的计算机上模拟出一个包括交换机、路由器和主机在内的完整的SDN网络环境。
Mininet支持OpenFlow协议,用户可以通过Python进行自定义的控制和编程,从而实现对SDN网络的快速测试和验证。
opendaylight框架分析
分布式转发
控制器采用分布式转发架 构,将控制平面与数据平 面分离,提高了网络的可 靠性和扩展性。
协议支持
支持多种南向协议,如 OpenFlow、NETCONF 等,以实现对不同网络设 备的兼容和控制。
北向API
RESTCONF
Opendaylight提供RESTCONF北向API,支持通 过HTTP/HTTPS协议对网络进行管理和配置。
发展
经过多年的发展,Opendaylight已经成为SDN领域的重要开源项目之一,拥有广泛的社区支持和活跃的开发者 群体。
Opendaylight的架构和组件
架构
Opendaylight采用模块化设计,主要由控制器、存储库和插件模块组成。控制器负责处理网络流量 和控制逻辑;存储库提供数据持久化服务;插件模块支持南向协议和北向API的扩展。
04 Opendaylight的优缺点 分析
优点分析
开放性
标准化
Opendaylight是一个开源的SDN框架,允 许用户根据需求进行定制和扩展,降低了 技术门槛和成本。
Opendaylight遵循国际标准,保证了与其 他设备和系统的互操作性,提高了网络的 灵活性和可扩展性。
社区支持
丰富的功能
Opendaylight拥有庞大的开发者社区,可 以快速获取帮助和解决方案,加速了问题 的解决和功能的完善。
特点
具有模块化、可扩展性和灵活性,支 持多种南向协议(如NETCONF、 RESTCONF等),北向API丰富,易 于集成第三方应用。
Opendaylight的起源和发展
起源
Opendaylight起源于2013年,由一组网络行业的领军企业(包括思科、IBM、Juniper等)共同发起,旨在开发 一个开源的SDN控制器。
Opendaylight基础
OpenDaylight中MD-SAL学习笔记2014/09/25 | 编辑:李呈| 阅读:1,0851 前言在学习OpenDaylight的过程中,总是遇到AD-SAL( API-Driven SA L)和MD-SAL(Model-Driven SAL)等概念。
在努力查找资料学习之后,有了一点学习笔记,写出来加深印象。
同时也给同样迷惑的同学一点帮助。
2 About MD-SALMD-SAL使得在SDN控制器那些丰富的服务和模块可以使用统一的数据结构和南向和北向的API。
上图引用地址:https:///images/4/4d/SAL-C omparison.pngMD-SAL提供请求路由(request routing)和基础设施去支持服务的适配,但它不提供服务的适应本身;业务适配是由插件提供。
MD-SAL认为适配插件是一个普通的插件:它向SAL提供数据,并通过模型生产的API 来读取消费数据。
2.1 Request outing为SAL中,request routing可用于消费者的请求路由,从而寻找到对应的生产者。
当一个plugin注册之后,就会在routing table中有对应记录,consumer向SAL发起RPC应用申请的时候,会由request routing 查找routing table,找到对应的plugin。
在md-sal/sal-binding-api/...、binding/api/rpc目录下可以找到Rp cRouter.java等文件,都与RPC routing有关。
当然request routing还有notification的routing,并不仅仅只是rpc。
1 registerService(ng.Class<S\> clazz, S service, java.util.Dictionary<ng.String,?> properties)可实现bundle的注册。
opendaylight原理
opendaylight原理
OpenDaylight是一个基于软件定义网络(SDN)的开源控制器平台,其工作原理涉及以下几个关键组件和概念:
1.控制平面(Controller Plane):OpenDaylight的核心是控制平面,它负责网络设备的管
理和控制。
控制平面向网络设备发送操作指令,并从设备收集状态信息。
它还负责网络中各个设备之间的通信和协调。
2.数据平面(Data Plane):数据平面是网络设备的实际部分,负责网络数据的转发。
在
SDN中,数据平面与控制平面分离,控制平面通过控制器来管理和配置数据平面上的设备。
3.协议支持:OpenDaylight支持多种协议与网络设备进行通信,包括OpenFlow、NETCONF、
SNMP等。
这些协议使OpenDaylight能够与不同类型的设备进行交互,并获取设备的状态信息或者发送配置命令。
4.插件和应用程序:OpenDaylight基于插件架构,可以通过插件将各种功能集成到控制器
中。
插件可以提供一些基本功能,如网络拓扑发现、路由计算等,也可以提供更高级的应用程序,如负载均衡、安全策略等。
5.网络编程接口:OpenDaylight提供了一组API和编程接口,使用户能够使用自己喜欢的
编程语言进行网络编程。
这些接口包括RESTful API、Java API等,使用户可以编写自己的应用程序,并与OpenDaylight控制器进行交互。
总体来说,OpenDaylight通过控制平面来管理和控制网络设备,使用户能够通过统一接口进行网络管理和编程。
它提供了灵活的插件体系和编程接口,可以根据用户的需求进行定制和扩展。
软件定义网络的开源实现平台和工具介绍
软件定义网络的开源实现平台和工具介绍随着信息技术的不断发展,网络技术也在不断演进。
传统的硬件网络架构已经无法满足当今快速变化的业务需求,软件定义网络(SDN)作为一种新兴的网络技术架构,正在逐渐取代传统的硬件网络架构,成为网络领域的热门话题。
SDN的核心理念是将网络控制平面和数据转发平面分离,通过集中化的控制器对网络进行集中管理和控制,从而提高网络的可编程性和灵活性。
在SDN的实现过程中,一个开源实现平台和工具是至关重要的。
开源实现平台和工具为SDN的研究和应用提供了丰富的资源和支持,本文将介绍几种常用的SDN开源实现平台和工具。
1. OpenDaylightOpenDaylight是一个由Linux基金会主持的开源SDN控制器平台。
作为一个成熟的SDN控制器平台,OpenDaylight提供了丰富的功能和模块,包括流表管理、网络配置、链路监控等。
OpenDaylight还支持多种网络协议,如OpenFlow、NETCONF等,可以与各种厂商的设备兼容。
此外,OpenDaylight还拥有一个活跃的社区,用户可以从社区获取丰富的技术文档和支持。
2. ONOSONOS是一个开源的SDN网络操作系统,由ONOS项目组维护和开发。
ONOS提供了一个高性能、可扩展的SDN控制平台,支持大规模网络的管理和控制。
ONOS采用了分布式架构,可以实现高可用性和容错性。
此外,ONOS还支持多种应用程序和插件的开发,用户可以通过开发应用程序扩展ONOS的功能。
3. MininetMininet是一个用于构建SDN网络的开源仿真平台。
Mininet可以在一台普通的PC上模拟出一个包含多个交换机、路由器和主机的SDN网络环境,用户可以在该环境中进行SDN应用程序的开发和测试。
Mininet还支持Python编程语言,用户可以通过Python编写自定义的SDN应用程序。
4. RyuRyu是一个用Python编写的开源SDN框架,由Nippon Telegraph and Telephone Corporation(NTT)开发。
OpenDaylight开发基础概论
OF1.3 Hello [Proto = 0x04] OF1.3 Hello [Proto = 0x04]
OF1.3 Feature Request OF1.3 Feature Reply OF1.3 Set Config
https:///view/OpenDaylight_Controller:MD-SAL:Architecture
从AD-SAL到MD-SAL
https:///view/OpenDaylight_Controller:MD-SAL:FAQ
NorthBound
REST API
YANG model defined NBI
NBI
Hale Waihona Puke ControllerData Collection Network Programing
SAL
Device Discovery Capability Abstract
MD-SAL
AD-SAL
rpc
notification
OpenDaylight架构框架
https:///view/OpenDaylight_Controller :Architectural_Framework#Service_Abstraction_Layer
OpenDaylight Hydrogen技术架构
TCP [Sync, Ack] TCP [Ack]
对于那些通过YANG模型生成的java接口、类和方 法:
• 控制器下发的信息:利用setter方法对照协议写进 去即可
• 控制器收到的信息:利用getter方法对照协议将字 节流解析存储,也即存到YANG模型的data-store (data tree)里
基于OpenDayLight控制器的流量控制方法简述
基于OpenDayLight控制器的流量控制方法简述作者:冯谦来源:《科学导报·学术》2020年第39期摘要:当前已有的QoS流量控制方法大多存在对网络资源的利用率低、可扩展性差等问题。
如何利用有限的网络资源进行有效的流量控制,从而保障业务的QoS已成为一个非常迫切的问题。
为解决此类问题,通过软件定义网络提出的控制层与数据层分离新思想,提出了一种基于 OpenDayLight控制器的 QoS 流量控制方法,利用控制器约束QoS路由技术提高了QoS 控制的灵活性与可靠性,实现了对网络资源的高效利用。
关键词:ODL控制器;SDN网络;QoS1、概述随着互联网进入 21 世纪,网络发展趋于扁平化,同时网络的规模也越来越大。
传统网络的分布式控制体系架构已经难以满足现代的通信传输对网络的要求,并且在可扩展性、安全性、灵活性上存在不足。
在这种情况下,SDN的概念得到了业界的广泛关注和认可。
SDN 网络架构核心是在网络中引入一个SDN控制器,实现转控分离和集中控制。
SDN控制器掌控全局网络并持有全局网络状态,向上提供API接口(北向接口)供SDN应用调用,实现其需要定义的各种功能;控制器向下通过南向接口跟数据平面的转发设备连接,实现控制管理。
目前主流的南向接口例如OpenFlow协议,相对传统网络而言,SDN具有集中控制、转控分离、网络能力开放的特点。
随着新型网络应用的兴起,各种应用对网络的性能要求各有不同,例如,实时多媒体需要高比特率的吞吐量,VoIP 要求低的延时和低抖动。
所以,如何利用现在有限的网络资源来提供更好的网络服务质量保证一直是网络研究热点。
本文设计了一种基于OpenDayLight控制器的QoS 流量控制方法,从而达到了对网络资源的有效利用,其中OpenDayLight项目旨在加快创新、并促使SDN和NFV变得更加开发和透明。
OpenDayLight项目是社区领导和企业支持的开源框架,任何个人和团队都可基于该框架进行SDN控制器的相关开发工作。
Opendaylight学习及开发初级教程
Opendaylight学习文档qq群#北邮-天依目录1.概述 (3)1.1 Opendaylight简介 (3)1.2本文档组织结构 (7)2.感受Opendaylight (7)2.1 环境搭建 (7)2.2获取代码 (9)2.3安装mininet (11)2.4 controller使用及功能介绍 (11)2.5Openflowplugin功能及使用方法 (14)2.6 Hydrogen (16)3 Maven和OSGI基础 (16)3.1 Maven (16)3.2 OSGI (20)4 使用IDE (30)4.1 使用Eclipse (31)4.1.1 导入controller项目 (31)4.2 使用Intellij idea (38)5Controller代码分析 (39)5.1 代码目录 (40)5.2 收发包过程简介(packet service) (41)6 Opendaylight重要技术及文档 (44)1.概述1.1 Opendaylight简介Opendaylight(Opendaylight官网)是Linux基金会的一个合作项目。
目前,包括十二个项目,每一个项目都有自己的代码库(Opendaylight项目列表)。
这些项目中与openflow相关的项目的有controller、openflowjava和openflowplugin,目前,controller仅支持openflow 1.0,openflowplugin是一个单独的项目,将来它的core部分要集成到controller中,使controller支持openflow 1.3及以上的版本。
Opendaylight的厂商成员分为铂金成员,金牌成员和银牌成员。
图1 Opendaylight阵营Opendaylight controller使用java编写,运行在JVM上,理论上来说可以部署到任何支持JA V A的平台上,但是其官网文档推荐的最佳运行环境为最新的Linux(Ubuntu 12.04+)及JVM 1.7+。
opendaylight框架分析解析
MD-SAL架构
The Consumer & Provider Binding is generated from YANG schema. 通过BindingIndependentConnector类
Broker功能:
1. 2. 3. 4. consumer & provider 注册 PRCs路由 Notification hub 系统状态访问和修改
了 Idatapacketlisten ,所以其能在DataPacketmuxdemux中处理of报文的过程中,处理这个 链路processDiscoveryPacket()报文。交给实现了idiscoverylistener , 的 Topologyserviceshim Implements Idiscoverylistener,
dependencymanager对象,
•2)再获取全局相关的服务,每个实现通过dm创建一个componet,接着配置这个componet。
这里每个Component就是一个服务,里面说明了导出的接口和依赖的接口
•3)然后将这个componet放到dm和缓存(并发map:dbglobalinstances)中。接着向osgi容
•
如前在所介绍的,其没有全局的实现,不会在启动过程中,配置Component,其会在先而 会在ContainerManager,启动后,调用在调用configureInstance,配置依赖关系。
bundle启动过程中导出这个接口,并通过Createservicedependency()生成服务依赖对象。
•Start方法中startImpl(context);然后新建一个ServiceTracker(BindAwareBroker).open后,后会追
SDN和Openflow详解mininet与opendaylight环境搭建与测试
基于OpenFlow的SDN技术1. SDN与OpenFlow技术简介SDN指的是软件定义网络。
你可以这样去理解SDN:如果将网络中所有的网络设备视为被管理的资源,那么参考操作系统的原理,可以抽象出一个网络操作系统(Network OS)的概念—这个网络操作系统一方面抽象了底层网络设备的具体细节,同时还为上层应用提供了统一的管理视图和编程接口。
这样,基于网络操作系统这个平台,用户可以开发各种应用程序,通过软件来定义逻辑上的网络拓扑,以满足对网络资源的不同需求,而无需关心底层网络的物理拓扑结构。
云计算的发展,是以虚拟化技术为基础的。
云计算服务商以按需分配为原则,为客户提供具有高可用性、高扩展性的计算、存储和网络等IT资源。
虚拟化技术将各种物理资源抽象为逻辑上的资源,隐藏了各种物理上的限制,为在更细粒度上对其进行管理和应用提供了可能性。
近些年,计算的虚拟化技术(主要指x86平台的虚拟化)取得了长足的发展;相比较而言,尽管存储和网络的虚拟化也得到了诸多发展,但是还有很多问题亟需解决,在云计算环境中尤其如此。
OpenFlow和SDN尽管不是专门为网络虚拟化而生,但是它们带来的标准化和灵活性却给网络虚拟化的发展带来无限可能。
SDN的最重要特征:将传统网络设备的数据转发(data plane)和路由控制(control plane)两个功能模块相分离,通过集中式的控制器(Controller)以标准化的接口对各种网络设备进行管理和配置,那么这将为网络资源的设计、管理和使用提供更多的可能性,从而更容易推动网络的革新与发展。
OpenFlow是实现SDN最常用的的一种协议,OpenFlow的原理和基本架构如下图。
其实,这张图还很好地表明了OpenFlow Switch规范所定义的范围—从图上可以看出,OpenFlow Switch规范主要定义了Switch的功能模块以及其与Controller之间的通信信道等方面。
ONOS与OpenDaylight比较
ONOS与OpenDaylight比较目前以设备提供商为代表的OpenDaylight阵营目前发展势头正劲,而由斯坦福大学和加州大学伯克利分校SDN先驱创立的非营利性组织b也紧锣密鼓地推出了自己的开源SDN操作系统——ONOS。
此次打造的商业级的以用户为导向的ONOS开放网络操作系统是以服务提供商为首的,并且得到了开放网络基金会ONF的鼎力支持,意欲与OpenDaylight一决高下。
具体的性能究竟孰好孰坏还需要等待发布之后的评测,下面小编就从不同的方面比较一下这两个业界最知名的网络操作系统。
1. 驱动方式不同驱动方式不同ONOS白皮书中写道,一个操作系统应该具备下述功能:l 为用户管理有限的资源。
l 隔离和保护NOS用户。
需要操作系统能复用多个应用和多个设备。
l 提供一个可用的抽象层让用户灵活的使用操作系统所管理的服务和资源,并且无需了解网络的复杂性。
l 为外部操作系统提供安全保障。
l 提供敏捷高效的服务,那么用户就不需要创建、重建相同的服务。
这些都是网络应用所需要的。
通常控制器的所控制的范围十分局限,通常设置为控制一个设备。
ONOS具备一个操作系统所具备的所有功能,不仅仅是控制器的功能,例如可以提供高效敏捷的抽象层,能够将不同的控制器使用者隔离开来,能够提供有价值的服务等等。
ONOS是根据服务提供商的特点和需求进行软件架构设计的。
因此ONOS是需求驱动下的产物。
相比而言,目前围绕SDN的炒作更多的是来自设备供应商。
OpenDaylight是由思科和IBM 联合其合作伙伴,以及竞争对手建立的组织。
其初创成员包括:微软、Big Switch(已退出)、博科、思科、思杰、戴尔、爱立信、富士通、IBM、英特尔、瞻博网络、微软、NEC、惠普、红帽和VMware等。
我们可以看到这些成员都是设备供应商,和ONF不同的是OpenDaylight是由大厂商控制的并且削弱了用户的声音。
并且它还可能会出于利益问题将部分功能同设备锁定,这并不是SDN的初衷。
OpenDaylight应用指南
7 Top ol og y Processing Framework项目
7.3 拓扑聚合和拓扑过滤示 例
7.3.1 拓扑聚合示例——equality 7.3.2 拓扑聚合示例—— unification 7.3.3 拓扑过滤示例—— filtration
8 BGPCEP项目(BGP插件)
8.1 BGPCEP项目简介
3.2 安装与配置
3.2.1 安装运行 3.2.2 Mininet安装
3 OpenDaylight Controller项目
3.3 开发指南
3.3.1 环境准备 3.3.2 创建项目 3.3.3 加载组件 3.3.4 定义启动配置 3.3.5 定义数据模型
3 OpenDaylight Controller项目 3.3 开发指南
1.2.1 商用控制器 1.2.2 开源控制器 1.2.3 OpenDaylight控制器概述
2 OpenDaylight社区
2.1 OpenDaylight 社区介绍
2.1.1 OpenDaylight 开源社区 2.1.2 OpenDaylight 社区管理 2.1.3 OpenDaylight 社区运营
4.1.2 OpenDaylight中 的YANG
4.1.3 YANG语法
4 YANG To o l s 项 目
4.2 项目介绍
4.2.1 YANG Tools项目结构
4.2.2 YANG Tools的Java映射介 绍
4 YANG Tools项目
4.3 安装与运行
4.3.1 安装 4.3.2 配置 4.3.3 运行
2015
9.2 开发指南
9.2.1 PCEP插件实现 9.2.2 PCEP消息处理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Data Packet services
• 举例来说报文的简单处理过程 • 首先OF组件收到 APR,需要交到ARP Handler处理 , • 将首先根据类型,调用IPOPS到SAL,交由SAL层 • Sal中的datapacketservice实现了IPOPS • 其会通过dispacthPacket()方法, • 其会调用 实现IListendatapacket的应用, • 最后 会将其送到ARP APP处理。
onSessionInitialized(ConsumerContext);其中会通过getPrcService与getSALservice得到这三类服务;
BindingIndependentConnector
它将连接到一个消息总线和共享数据存储的集群opendaylight容器。
•提供者或消费者在md-sal中注册。从而 ,一个消费者可以找到所需的供应商。提供者可以生成通知,消费者可以接
收通知,并从提供者获取数据。
•插件sal角色(消费者或生产者)定义的sal中的数据是被移走或存储数据。提供者可以将数据存入sal的,一个消费
其所依赖的对象,都是其它budnle所导出的接口,如依赖于SAL层的DataPacketService, DijkstraImplementatio,这个模块中所导出的Irouting接口Hale Waihona Puke 负责寻路。完成对ARP报文的 处理。
9
SAL服务抽象层
主要作用将服务抽象出来,不管控制器和网络设备之间 使用何种协议,提供协约国的一服务,是odl 的核心设计,支持多种南向协议,为各模块和应用提供一致的服务,这些服务的实现 ,是由插件公开 (基于已存在的组件(如OF)和网络设备的功能))的所提供的接口,但是与SAL是松耦合的。具体将请 求,映射到相应的插件,完成服务。
Topology Service
•如前面所讲,报文经Controller处理后,,DiscoveryService收到报文,因为其实现
了 Idatapacketlisten ,所以其能在DataPacketmuxdemux中处理of报文的过程中,处理这个 链路processDiscoveryPacket()报文。交给实现了idiscoverylistener , 的 Topologyserviceshim Implements Idiscoverylistener,
BingAwareBroker
提供三种Infrastructure Service,
•Yang Module Service GetPpcService(class);
•Nitification Service Notificationservice
•Data Store Access And Modification
通过BindingIndependentConnector类
Broker功能:
1. consumer & provider 注册 2. PRCs路由 3. Notification hub 4. 系统状态访问和修改
16
Md-sal -Bundles 之service Tracker
AbstarctBrokerAwareActivator Impl BundleActivator 为基Bunddle; 每个 Md-SAL的Consumer, Provider分别继承AbstarctBrokerAwareConsumer; AbstarctBrokerAwareProvider;在这个类中有个 BindAwareBroker,这个是MD-SAL层的核心
一个Componet,每个Component就是一个服务,里面说明了导出的接口和依赖的接口。 DM以Component的形式来管理依赖关系。
主要方法如下:
• Start(context)启动方法,会遍历其所提供的实现,依次配置依赖关系。 • getGlobalImplementations()获取全局的实现类,其导出接口的实现类。 • getImplementations() 获取容器相关的实现 。 • Configureglobalinstance(c, Imps[i]),c是前面提到的component • configureInstance()在一个容器中配置实现的依赖关系。 • containerCreate(String containerName)配置Componet,里面说明了导出的接口和依赖
opendaylight
总体架构分析 模块,osgi Bundle 与floodlight之间的简单对比 SAL层 之OF Packet的处理流程 Md-SAL-模型化驱动简单分析 Clustering-集群
核心技术
• OSGi:由于采用OSGi体系结构,其技术提供一种面向服务的架构,将应用视为对等模块的
Databrokerservice
•在其实现中,会初始化这三种服务,并注入其实现,然后在为OSGI中注册;
•然后在前面通过addingservice()中很到的getService(servicereference(bindingawarebroker));中得到其它注
册来的borker;得到后,会将Consumer注册到这个broker中,得到ConsumerContext,后调用各自Consumer的
器注册iContaineraware接口以便容器的生命周期转换点调用。
•4)最后调用bunndle的钩子函数init()。该函数的功能代码的注释已经概括的很明确。
ArpHandler
• ArpHandler 所实现的接口有 Ihostfinder, Ilistendatapacket, Icacheupdateaware,
相互协作,
• SAL:整个架构引入了业务抽象层,将服务抽象化,使得上层(北向)和下层(南向)之
间的调用相互隔离.
• MD(Model Drive):使用Yang工具,使用业务模型驱动来设计接口、实现业务功能,根据
yang文件,Yang工具直接生成业务管理的“骨架”,主要用于南北接口数据的适配,使开 发者真正专注于具体业务。
• 集群(Infinispan):用开源的数据网格平台实现Controller的集群。 • 南向北向:南向使用Netty来管理底层的并发IO,北向使用REST接口。
与Floodlilght的简单区别
• 采用OSGI框架,各模块间功能隔离开来,有利于扩展性、而且可以动态部署。OSGI的依赖
关系管理,有多种实现方式,可以通过 Dependency Manager 对象来注册服务,并通过反 射注明依赖的服务。而Floodlight只是单纯的java包之间的引用,扩展性不好,支持的南 向接口少,目前只有OF1.0;但是易于上手。是一个Openflow控制器.
对于一个Packet-in的处理过程
•OF中的核心,Controller
南向设备通信的控制台,与Flooodlight中的Controller类功能 类似,相对简化,Of报文首先到达Controller,会将此报文发送 对已经注册过监听of报文的类中进行处理,其中 DatapacketMuxDemux只处理packet-in报文 ,其会进一步处理,交由处理DiscoveryService(处理的是 LLDP),其后,交给实现了Ipluginoutdatapacketservice SAL层处理,最后交给实现了Ilistendatapacket监听报文的应用。 这与Floodlight处理报文的过程同。
的接口,最后放到dm及缓存中。会在CM的bundle启动中调用。
• CreateServiceDependency()生成服务依赖对象,需要被子类调用,在配置componet的依
赖关系的时候需要用到。
7
Bundle启动过程
•1)每个bundle都会从start(context)启动,先根据osgi上下文信息,生成bundle对应的
所提供服务
•Data Packet Services 为数据报文的处理,提供服务 •Topology Service为应用提供节点和链路的更新信息, •Inventory service为如节点或者节点连接提供API查询 •Flow Programming Service 流编程服务 •Resource service资源服务,
dependencymanager对象,
•2)再获取全局相关的服务,每个实现通过dm创建一个componet,接着配置这个componet。
这里每个Component就是一个服务,里面说明了导出的接口和依赖的接口
•3)然后将这个componet放到dm和缓存(并发map:dbglobalinstances)中。接着向osgi容
理,交给SAL层的Topology类,这个 会调用IListenTopoUpdates 遍历监听数组。 s.edgeUpdate(topoedgeupdateList);
MD-SAL
Md-SAL分析
•Md-sal的主要功能是促进提供者和使用者之间的管道。它可以提供提供者和使用者之间的管道在不同的容器中。
• 如前在所介绍的,其没有全局的实现,不会在启动过程中,配置Component,其会在先而
会在ContainerManager,启动后,调用在调用configureInstance,配置依赖关系。
bundle启动过程中导出这个接口,并通过Createservicedependency()生成服务依赖对象。
2020/5/11
OpenDayLight中的bundles
•核心基类 :ComponentactivatorabstractBase 实现了 Osgi提供的 BundleActivator,
以自己定义的容器接口iContaineraware,从中发现各个bundle之间、Componet之间、全局和 容器Container之间的依赖和调用关系。