opendaylight架构剖析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
依赖管理
• bundle的抽象基类,管理全局和容器相关的服务,当然bundle本身就是一个大服务。
• Container是OpenDaylight中的一个网络域,有很多链接信息、整个域网络信息等,由 ContainerManager管理容器 ,而OSGI管理各个bundle; • 每个模块中有多个实现,其中通过 Dependency Manager 管理其依赖关系。 • 每个实现一个Component, 每个Component就是一个服务,里面说明了导出的接口和依赖的 接口。 • 通过 Dependency Manager以component管理依赖。
OpenDayLight中的bundles
• 核心基类 :ComponentActivatorAbstractBase • 每个模块的bundle都要继承, • Start(context)启动方法,会遍历其所提供的实现,依次配置依赖关系。 • getGlobalImplementations()获取全局的实现类,其导出接口的实现类。 • getImplementations() 获取容器相关的实现 。 • ConfigureGlobalinstance(c, Imps[i]),c是前面提到的Component • configureInstance()在一个容器中配置实现的依赖关系。 • containerCreate(String containerName)配置Componet,里面说明了导出的接口和依赖的接口,最后放到dm及缓存中。会在 ContainerMangaer的bundle启动中调用。 • CreateServiceDependency()生成服务依赖对象,需要被子类调用,在配置componet的依赖关系的时候需要用到。
SAL
主要作用将服务抽象出来,不管控制器和网络设备之间 使用何种协议,提供协约国的一服务, 是ODL的核心设计,支持多种南向协议,为各模块和应用提供一致的服务,这些服务的实现 ,是 由底层插件(基于已存在的组件(如OF)和网络设备的功能))的所提供的接口,但是与SAL是松 耦合的。具体将请求,映射到相应的插件,完成服务。 所提供服务
Installing From RPM
virtualbox image 下载源码,编译
编译与运行
• 搭建环境 ,Ubuntu12.04 • 安装JDK, MAVEN,设置环境变量,
• ECLIPSE, 安装插件 https:///view/opendaylight_controller:eclipse_cli_setup
• Data Packet Services 为数据报文的处理,提供服务
• Topology Service为应用提供节点和链路的更新信息, • Inventory service为如节点或者节点连接提供API查询 • Flow Programming Service 流编程服务 • Resource service资源服务,
MAVEN
• 优秀的构建的工具,可以 • 每个MAVN项目中 核心 是 POM.XML,其定义了项目的基本信息, • 编译时 就是使用了maven clean install, • 一个重要 插件maven-bundle-plugin 在pom.xml ,可自动生成 osgi中元数据, MANIFEST.MF, • 设置 如import package,export package,以及最重要的Bundle-Activator,设置其bundle;
• 下载project , openflowplugin, controller:
git clone https:///gerrit/p/controller.git • Mvn clean install or -DskipTests –Dcheckstyle.skip • 运行 ./run.sh
管理底层的并发IO
• 南向 NETTY • 北向 REST
OSGI
• 模块化 定义了OSGI模块的概念,并将之称为一个BUNDLE,包含一个元数据的JAR文件,其 中元数据MANIFEST.MF,由NAME-VALUE对组成,由类及相关资源组成,关注的是打包和共 享代码。 • 生命周期 定义了 OSGI在框架中如何动态安装和管理,通过生命周期的操作(安装,更 新,卸载等)动态地管理和改进应用程序,不需要重启应用程序。重点在于执行时模块管 理和对底层OSGI框架的访问。 • 服务层 面向服务,服务注册,查找等,接口与实现分离,OSGI服务是JAVA接口,模块 内的组件间交互和通信。
PROJECT
协作开发,目前有很的PROJECT,20个左右,由各公司开发, • 目前发布了Hydrogen版本,主要涉及以下几个PROJECT • Base Opendaylight Controller ,YANG Tools, Openflow Plugin • Virtualization Affinity Defense4All ,Open DOVE ,OVSDB ,VTN • Serivce Provider BGP/LS and PCEP , LISP Flow Mapping , SNMP4SDN • 下个版本为 Helium
• • •
In Hydrogen Release, The Opendaylight Controller Consists Of The Following Modules: AD-SAL - Api-driven Service Abstraction Layer AD-SAL Network Service Functions For Openflow-capable Nodes: Switch Manager Statistics Manager Host Tracker ARP Handler Forwarding Rules Manager (FRM)
• 提供者或消费者在md-sal中注册。从而 ,一个消费者可以找到所需的供应商。提供者可以生成通知,消费 者可以接收通知,并从提供者获取数据。
• 插件sal角色(消费者或生产者)定义的sal中的数据是被移走或存储数据。提供者可以将数据存入sal的,一 个消费者可以从sal读取数据。 • Md-sal提供请求路由和基础设施服务,以支持服务,但它不提供服务本身; 由插件提供服务。
• Yang 使得 Componet之间、plugin、北向等api,使得这种接口和ad-sal REST接口相比更抽象,符合模型 驱动(MD)的思想。
1)FPC
注册 Registers With The MD SAL For Flow
Configuration Data Notifications与OP ‘AddFlow’ RPC implementation with the SAL 2) requests a flow add through the Controller’s REST API 3) the MD-SAL generates a ‘data changed’ notification to the Flow Programmer Service 4) uses the OF Plugin generated API to create the RPC input parameter DTO for the OF Plugin’s “ AddFlow” RPC 5) MD-SAL will route the request to the appropriate OF Plugin 6)下发流表(与AD-sal类似)
OPENDAYLIGHT
opendaylight
• 背景 • 核心 技术 • 主要特色 • 编译与使用 • AD-SAL 与 MD-SAL • PACKET处理
背景
• SDN市场,未来应用为主,底层屏蔽,网络服务于应用,controller的争夺, • 由IT厂商发起 的 组织 思科,IBM,DELL,REDHAT,VMware等 主要为网络设备制造商,软件商, • ONF由 网络用户 发起,成员都是网络设备用户,致力于标准化,OPENFLOW, • 而南向接口 不仅仅是 OPENFLOW, SDN CONTROLLER • 协作开发,由各公司贡献PROJECT, • 打造统一开放的SDN平台,本质核心 控制 和转发分离,南向不需标准化, • 推动产业向前,需要标准化,但又不 希望标准化,硬件, • 最初核心 代码由 思科 和BIG SWITCH, • 目标是打造 一个网络操作系统
安装与使用
https:///view/release/hydrogen/base/installation_guide Installing From Zip /content/repositories/opendaylight.release/org/opendaylight/integr ation/distributions-base/0.1.1/distributions-base-0.1.1-osgipackage.zip
Sal—dapacket Service
• • • • •
首先OF组件收到 APR,需要交到ARP Handler处理 , 将首先根据类型,调用IPOPS到SAL,交由SAL层
Sal中的DataPacketservice实现了IPOPS
其会通过dispacthPacket()方法, 其会调用 实现IListendatapacket的应用,依赖于实现 些接口,会
•
最后ARP实现了IListenDatapacket 会将其送到ARP Hand能是促进提供者和使用者之间的管道。它可以提供提供者和使用者之间的管道在不同的容 器中。它将连接到一个消息总线和共享数据存储的集群opendaylight容器。南向与北向的一致性。
Topology Manager • • • • • • • • Clustering And High-availability Services For AD-SAL MD-SAL - Model-driven Service Adaptation Layer - A Set Of Infrastructure Common And Generic Services For Applications And Plugins (Basically, A "Plumbing" That Connects Applications And Plugins To Each Other). Md-sal Base Network Functions: Topology Exporters Inventory Managers MD-SAL Network Service Functions For Openflow-capable Nodes:Forwarding Rules Manager (FRM) Statistics Manager MD-SAL Netconf Connector (Southbound Netconf Plugin) MD-SAL Restconf Connector (Northbound Restconf Plugin) - An Infrastructure Component That Renders REST Apis For Device/Service Models Loaded Into The Controller Config Subsystem - Netconf/Yang Based Framework For Configuration, Performance And Fault Management Of Controller Infrastructure And Plugins Deployed Into The Controller NSF Adapters - Network Service Function Adapter That Allow The MD-SAL Based OF1.0/1.3 Plugin To Talk With AS-SAL Based Network Service Functions
核心技术
• OSGI 一种面向服务的架构,将应用视为对等模块的相互协作,支持在控制器运行时进行 服务的安装、删除和更新。
• MAVEN 构建工具,能够帮我们自动化构建过程,从清理、编译、测试到生成报告,再到 打包和部署。
• INFINISPAN 实现集群
• SAL
多种南向协议对上提供统一的北向服务接口。