首页 > 代码库 > 【译】OpenDaylight控制器:SAL架构概述

【译】OpenDaylight控制器:SAL架构概述

1. SAL架构

   系统的体系结构如下图所示:

   技术分享

上图中的子系统如下:

  • 生产者(Provider)--通过其北向API向应用程序和其他提供程序(插件)提供公开功能的组件。生产者可以是其他生产者的消费者。生产者有两种类型:

          绑定无关生产者:它们的功能以绑定无关的数据DOM格式公开;
          绑定感知生产者:它们的功能以针对一个或多个生成的绑定接口编译的形式显示;

  •  消费者(Consumer) - -使用由一个或多个provider提供的功能的组件。消费者有两种类型:

          绑定无关消费者 - 以DOM的形式调用
          绑定感知消费者 - 以一个或多个接口的形式调用

  • 绑定无关代理(Binding-Independent Broker ) - MD-SAL的核心组件。它在不同的provider和消费者之间路由RPC、通知和数据更改;
  • 绑定感知代理(Binding-Aware Broker) - 为消费者(如控制器应用程序或插件)和生产者提供可编程API和Java语言支持。它是建立在绑定无关代理之上的外观/代理(设计模式),可简化对绑定无关生产者和绑定感知生产者提供的数据和服务的访问。
  • BI数据存储库(BI Data Repository) - MD-SAL 绑定无关的基础架构组件,负责存储配置和临时transient )数据
  • 绑定模式存储库(Binding Schema Repository ) - 基础架构组件,负责存储YANG-Java关系的规范以及语言绑定API与绑定无关的API调用之间的映射。
  • 绑定生成器(Binding Generator ) - 基础架构组件,它将生成接口和数据Mapper的实现( to the binding-independent format)。

 

2.子系统类型

 
     在Controller架构的上下文中,定义了两个子系统类别:

  • 顶级子系统(Top-Level Subsystems) - 数据存储或验证器,每个API修订版通常只有一个顶级子系统的单个实例;
  • 嵌套子系统(Nested Subsystems ) -   该子系统可以是本地或远程。它可以在多个地方或多个实例中公开一组功能。网元是嵌套子系统的示例,例如路由器或交换机。

    YANG支持通过YANG Schema和模块对顶级子系统进行建模,但不允许将现有模型重用于嵌套在顶级子系统上下文中的子系统。为了支持嵌套,引入了YANG扩展,这将扩展模式以允许子系统在单个数据树中进行模型嵌套。

3.顶级子系统


    顶级子系统可以是部署在Controller中的控制器组件或应用程序(provider或消费者),它们使用Controller SAL与其他控制器组件、应用程序和插件进行通信。

    顶级子系统子系统通常:每个系统/ AP或者具有单个实例I,或者具有多个版本实例,每个实例对于由YANG模型定义的修订是唯一的; 对于多个版本实例,每个实例表示单个封闭系统。

    顶级子系统的主要例子是代理(Broker)和数据仓库(Data Repositories)。

 

4. 嵌套子系统


     嵌套子系统表示不是顶级的实体(例如组件、虚拟系统和网元),并且可以将多个实例挂载到树的不同级别和不同分支。

     嵌套子系统的实例不直接映射到生产者实例:单个生产者(provider)可以导出(export)嵌套子系统的多个实例。

     嵌套子系统可以使用与顶级子系统不同的模型和模式。

5.嵌套数据存储(DataStore)

 嵌套子系统的数据在控制器的数据存储区中的节点(附件点)下“附加”(或“挂载”)。

   嵌套子系统中的数据可以表示存在于另一(远程)系统中的数据或本地控制器组件(例如插件)中的数据。它也可以由Controller组件动态生成,或者从其他协议转换。

   附加(安装)数据及其结构具有以下属性:

  •    可以被任何YANG Schema引用,该Schema理解嵌套子系统
  •    可能使用与其容器不同的YANG模式
  •    这些模式使用附加点作为数据根节点。
  •    附加点用作嵌套子系统的标识符。

  提供嵌套子系统服务的组件负责:

  •   向状态数据存储库提供嵌套数据
  • Voting on configuration changes to nested data
  • Voting on configuration commits that change nested data

 

 

6.RPC

   消费者可能需要调用嵌套子系统提供的功能。 RPC代理必须提供能够在生产者中启用嵌套RPC功能。此外,代理必须能够将RPC路由到嵌套子系统的生产者。

 原文链接:https://wiki.opendaylight.org/view/OpenDaylight_Controller:_SAL_Architecture_Overview

【译】OpenDaylight控制器:SAL架构概述