系统组件

系统分层

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以及相关的组件。

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

  1. iOS应用架构谈 组件化方案

    转载: iOS应用架构谈 组件化方案 简述 前几天的一个晚上在infoQ的微信群里,来自蘑菇街的Limboy做了一个分享,讲了蘑菇街的组件化之路.我不认为这条组件化之路蘑菇街走对了.分享后我私聊了Li ...

  2. 基于SOA的高并发和高可用分布式系统架构和组件详解

    基于SOA的分布式高可用架构和微服务架构,是时下如日中天的互联网企业级系统开发架构选择方案.在核心思想上,两者都主张对系统的横向细分和扩展,按不同的业务功能模块来对系统进行分割并且使用一定的手段实现服 ...

  3. zuul 路由网关 微服务架构系统中

    在微服务架构中,基本包含以下常见的组件.服务注册与发现.服务消费.负载均衡.断路器.只能路由.配置管理等.一个简单的微服务架构系统如下 一.Zuul简介 Zuul的主要功能是路由转发和过滤器.路由功能 ...

  4. k8s架构与组件详解

    没有那么多花里胡哨,直接进行一个K8s架构与组件的学习. 一.K8s架构 k8s系统在设计是遵循c-s架构的,也就是我们图中apiserver与其余组件的交互.在生产中通常会有多个Master以实现K ...

  5. 详解工作流框架Activiti的服务架构和组件

    摘要:通过这篇文章,可以对工作流有一个基本的认识,为后续工作流框架Activiti的学习打下坚实的基础. 本文分享自华为云社区<BPMN工作流的基本概念!详解工作流框架Activiti的服务架构 ...

  6. Shiro学习之路 -- 架构及其组件

    出自:跟我学shiro 简介 Apache Shiro 是 Java 的一个安全框架.目前,使用 Apache Shiro 的人越来越多,因为它相当简单,对比 Spring Security,可能没有 ...

  7. xp 专业版组策略只有系统组件

    想要不显示任务栏的提示消息,需要在组策略里面设置,(在"开始→运行"中输入"GPEDIT.MSC"打开组策略,然后依次选择"用户配置→管理模板→任务栏 ...

  8. Kunernetes集群架构与组件

    架构如图: master节点:主要是集群控制面板的功能,来管理整个集群,包括全局的角色,调度,都是在master节点进行控制 有三个组件: API Server:  是 k8s提供的一个统一入口,它是 ...

  9. 02Oracle Database 安装,卸载,系统服务,系统组件及系统表空间

    Oracle Database 安装,卸载,系统服务,系统组件及系统表空间 Oracle Database 安装 Oracle Database 卸载 Oracle Database 系统服务 Ora ...

随机推荐

  1. Python爬虫实例(四)网站模拟登陆

    一.获取一个有登录信息的Cookie模拟登陆 下面以人人网为例,首先使用自己的账号和密码在浏览器登录,然后通过抓包拿到cookie,再将cookie放到请求之中发送请求即可,具体代码如下: # -*- ...

  2. Git服务器配置和基本使用

    #git服务器搭建 1. 在系统中增加git用户 useradd -s /usr/bin/git-shell git 2. 在git用户的home目录下新建.ssh目录,做好相关配置 1)生成公私匙: ...

  3. 获取子字符串函数MidStr

    MidStr返回指定范围内的字符串.该函数有三个参数.第一个参数为源字符串,第二个参数为起点(下标从1开始),第三个参数为结束点.通过第二.第三个参数则可指定要复制字符串的范围. function M ...

  4. office 2016密钥

    Office 2016 Pro Plus Retail 版激活密钥:[Key]:3XJTG-YNBMY-TBH9M-CWB2Y-YWRHH[Key]:6TCQ3-NBBJ2-RTJCM-HFRKV-G ...

  5. 图像分类(三)GoogLenet Inception_v3:Rethinking the Inception Architecture for Computer Vision

    Inception V3网络(注意,不是module了,而是network,包含多种Inception modules)主要是在V2基础上进行的改进,特点如下: 将滤波器尺寸(Filter Size) ...

  6. 15.4-uC/OS-III资源管理(二值信号量)

    互斥信号量是 uC/OS 操作系统的一个内核对象, 与多值信号量非常相似,但它是二值的,只能是 0 或 1,所以也叫二值信号量, 主要用于保护资源. 1.如果想要使用互斥信号量,就必须事先使能互斥信号 ...

  7. WIN7无法访问共享打印机及文件的解决办法

    故障: 在网上邻居上能看到对方的电脑名字,双击进入的时候弹出问题.出现“用户账户限制”或“未授予用户在计算机上的请求登陆类型”的问题,这说明我们的局域网和网络是畅通的,问题的根源就在电脑的安全设置上. ...

  8. java框架之MyBatis(2)-进阶&整合Spring&逆向工程

    进阶内容 准备 jdbc.url=jdbc:mysql://192.168.208.192:3306/test?characterEncoding=utf-8 jdbc.driver=com.mysq ...

  9. Ethzasl MSF源码阅读(3):MSF_Core和PoseMeasurement

    1.MSF_Core的三个函数:ProcessIMU.ProcessExternallyPropagatedState和AddMeasurement MSF_Core维护了状态队列和观测值队列,这里需 ...

  10. vue-amap | 基于 Vue 2.x 与高德的地图组件

    vue-amap | 基于 Vue 2.x 与高德的地图组件 参考:https://elemefe.github.io/vue-amap/#/