ONOS架构-系统组件

系统组件

系统分层

App/core/providers

业务和子系统

一个业务service是有多个组件构成的功能单元,基于各层软件栈提供一个垂直的分片slice,将构成业务service的组件集合称为子系统。业务和子系统可互换使用。

onos定义的业务有:

.设备子系统-管理设备-交换机-资产

.链路子系统-管理链路资产

.主机子系统-管理主机及在网络中的位置

.拓扑子系统-管理网络视图

.路径path---基于最新的拓扑,在交换机之间,或者主机之间计算和发现路径

.流规则子系统-管理应用到交换机上的流规则(匹配和动作match/action),提供流数据(flow metrics)

.报文收发子系统-允许app监听来自交换机的数据报文,以及通过一个多个交换机向网络发送数据报文

每一个子系统的组件都在某个层级中(app/core/providers),可用实现了的一个或者多个java接口标识。

下图描述了子系统组件的关系,上下两个虚线是由南北向接口定义的层级边界。

Provider

三层中最低一层,向网络通过协议特定的协议栈提供接口,向内核通过ProviderService提供接口。

协议感知的provider通过各种网络控制和配置协议和网络交互,向内核提供业务相关的数据,provider也从其他模块收集数据,转换为(本)业务相关数据。

某些provider从内核接收控制指令,并通过协议特定的方式应用到网络,这些通过provider接口传递给provider。

Provider ID

Provider会关联一个ProviderID,用于在同一类Provier中提供外部标识,并允许在provider卸载后交换机或者其他模型实体依然能保留和provider的关联。

ProviderID携带URI,可允许交换机和Provider进行配对,而无需访问provider对象本身。

Multiple Provider

子系统可个关联多个provider,provider有primary和ancillary两种角色,primary拥有关联到业务的所有实体,ancillary类型的privider则以overlay方式提供信息。此种方式,为主要provider提供了某种优先权,处理underlay的冲突信息

Manager

内核模块,从provider接收信息,提供给应用或者其他业务service。

有如下interface

.北向接口,应用和其他内核模块可获取特定网络状态

.AdminService接口,接受管理命令,应用到网络或者系统中

.南向ProviderRegistry接口,Provider通过接口向Manager注册

.南向ProviderService接口,已注册的Provider向Manager接收/发送信息

Manager 业务接口的consumer可通过同步方式(查询业务)和异步方式(事件监听,实现EventListener接口)

Store

在内核,和Manager中,store用于保存,索引,同步manager收到的信息,通过和其他onos实例中的store直接通信,保证跨多个ONOS实例的一致性和健壮性,

Application

应用经由AdminService接口和业务接口操作Manager聚合的数据,应用的范围很广

ApplicationID

每个应用都分配一个唯一的APPID,用于 ONOS跟踪应用的上下文(诸如intent,flow rules这样的任务对象),应用使用CoreService接口注册,提供反转的DNS,名字,从而获取AppID。

注,并非所有子系统都如上操作,也并非所有组件都严格按照如上实现功能,比如TopologyProvider相对系统内核以协议无关方式呈现设备和链路,从不和设备直接交互,由CoreManager实现的CoreService,仅仅是业务接口。

Events and Descriptions

ONOS内核中关于事件分发的两个基本单元是event和description,两者可以经由业务接口,和特定网络元素和概念关联,一旦创建,两者都是不变的(immutable)

Description用于通过南向接口传递信息,比如HostDescription包含主机的mac,ip地址,在网络中的位置(VLANID,交换机和端口),Description通常有model/objects,以及各种网络组件的onos表达,组成。

Event,

Manager使用event来通知监听者网络状态的改变,Store用来通知分布式对端。Event由类型type和表示模型对象的主题subject组成,比如DeviceEvent可用来通知DeviceListener某个设备device(subject)被检测(DEVICE_ADDED),删除(DEVICE_REMOVED),属性变化(DEVICE_UPDATED)

Event分发

由store产生的event,输入来自Manager。一旦产生,将通过StoreDelegate接口分发给感兴趣的监听者,StoreDelegate最终会调用EventDeliveryService接口,StoreDelegate将event从store中移出,EventDeliveryService保证event会到达监听者,由manager实现StoreDelegate的实现类

Event监听

任何实现了EventListen接口的组件都是事件监听器,事件监听器由其所监听的event的子类的类型确定,事件监听器的典型实现是作为Manager或者应用的inner类,根据收到的event调用合适的业务。这个限制了从外部处理子系统到子系统的Manager,或者子系统到应用的event。、

下图描述了description和event以及相关的组件。

时间: 2025-01-05 06:52:31

ONOS架构-系统组件的相关文章

Nucleus PLUS系统架构和组件

(一)组件和软件组件方法学 1,软件组件(Software Component)的定义 从一般意义上来说,组件(Component)是系统中可以明确辨识的组成部分,一个不透明的功能实现体.软件开发中,组件是对数据和方法的简单封装,它具有约定式规范的接口.组件具有面向对象的特征,具有功能独立性.高度的可重用性.与语言和平台无关性等特点.软件组件是软件系统中具有一定意义的.相对独立的构成部分,是一个通过规定的接口提供一组服务代码的执行单元,这个执行单元的特点是高内聚.低偶合.组件的接口和组件的实现相

ONOS白皮书中篇之ONOS架构

编者按:本系列分三篇对ONOS白皮书进行翻译,接<ONOS白皮书上篇>,本文翻译白皮书中的第5部分ONOS架构,如有不当之处,欢迎指正. 5.ONOS架构 ONOS从一开始就从服务提供商的角度开展架构设计.具备高可用性.可扩展以及性能良好等基本性能,并且还有强大的北向接口抽象层和南向接口. ONOS具有下述核心功能: ■分布式核心平台,提供高可扩展性.高可用性以及高性能,实现运营商级SDN控制平面特征.ONOS以集群方式运行的能力使得SDN控制平台和服务提供商网络具有类似Web风格的灵活性.

系统架构师-基础到企业应用架构-系统设计规范与原则[上篇]1

一.上章回顾 在上篇中我们讲解了几类UML2.0语言新推出的建模图形,总体来说通过这些图形能更详细的将某类信息表达出来.在这里我们简单回顾上篇讲解的内容. 上图中已经简单介绍了上章讲述的内容,具体内容请看:系统架构师-基础到企业应用架构-系统建模[下篇]. 二.摘要 本章将主要的简单介绍在系统架构中的设计模式及相应规范准则.并结合相应的代码来说明如何遵循系统架构中的一些基本的设计规范及准则.而我们将在本文介 绍几类常用的设计规范,我们先来看看结构化设计的二个基本原则: 当然既然提出了基本的准则,

Android 并发编程:(一)基础知识 —— 架构和组件

本章节所有内容皆为原创,如需转载,请注明出处. http://blog.csdn.net/manoel/article/details/38462631 写在前面的话 很久没写博客了,一是因为自身水平有限,怕误人子弟:二是因为感觉没什么可写的:三是因为时间有限,要寻找工作.学习和生活之间的平衡. 最近一直在研究和梳理Android多线程编程的东西,希望能够把这些分享给大家. 想必做过Android应用开发的同学应该都会知道,多线程是一个特别"诡异"的地方.之所以称为"诡异&q

企业分布式微服务云架构服务组件

大型企业分布式微服务云架构服务组件 实现模块化.微服务化.原子化.灰度发布.持续集成 Spring Cloud SecuritySpring 基于spring security的安全工具包,为你的应用程序添加安全控制. commonservice zipkinSpring 日志收集工具包,封装了Dapper和log-based追踪以及Zipkin和HTrace操作,为SpringCloud应用实现了一种分布式追踪解决方案. commonservice cachecache 独立分布式缓存服务.

系统组件-锁屏应用

package com.xfeng.onekeylock; import android.app.admin.DevicePolicyManager; import android.content.ComponentName; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; publ

而且很多系统组件和应用将会通过 Windows Store 来更新

本周微软推送了第三波 Windows 10 累积更新,也是本周的第二波更新,已经通过 Windows Update 推送给所有用户. 这次的 Windows 10 累积更新并没有提供详细信息,更新编号是 KB3081438,包括“Windows 10 功能增强的改进”,目前页面还没上线. 微软目前已经正式推出 Windows 10 有两周,推出了三波累积更新.微软 Windows 10 现在采用的是“Windows 即服务”的模式,这意味着用户将看到频繁的修复和改进更新,而且很多系统组件和应用将

vs2003出现“此计算机上没有安装项目系统组件。请重新安装重新安装visual stdio”解决方法

问题状况: 上午还用过vs2003,下午就不行了,打开项目的时候报错,提示"此计算机上没有安装项目系统组件.请重新安装重新安装visual stdio" 百度搜索试了n种方法都不行,鼓捣了半天,问题依旧.有的网友说重装vs2003都不行,难道要重装系统?!晕,看着系统里面的vs2003.vs2005.vs2010,还有sql2000.sql2008以及android...(此处省略1000字),压力山大呀. 想想自己好像也没有干什么坏事,于是乎打开某杀毒软件(此处不点名了,为自己留条后

金蝶EAS重写系统组件(CostCenterBizUnitF7)

CostCenterBizUnitF7  是一个树形的F7选择框,用于选择成本中心,支持单选,多选.它和它的兄弟 CostCenterF7NoPerm,在EAS BOS属于系统组件. 它有一个很不方便的地方:查询的时候默认 编码 ,但通常我们是根据 名称 .这里通过重写组件来解决问题. 思路是这样的:反编译 CostCenterBizUnitF7 类,然后在二次开发的类里面  重写一个 同 路径同类名 的类,设置其默认根据 名称 进行查询,系统在运行时优先使用二次开发里面的类.这样就达到目我们的