zoukankan      html  css  js  c++  java
  • 【译】OpenDaylight控制器:YANG Schema和Model

    1. Schema 定义

        绑定无关数据模式(BI Data Schema)描述了模块提供的数据结构、过程和通知。

        该Schema基于YANG,但是为更好地适应Java类系统并支持Controller用例,一些术语和定义被改编。

        Schema用于定义:

    • 模块(Modules) - 一组对外提供的功能,特征,类型,RPC和数据结构
    • 特征(Features) 
    • 类型(Types ) - 可以在模块中本地使用的数据类型,包含它的模块或子模块以及其他模块
    • 数据结构(Data Structures) - 数据树中数据节点的定义
    • RPC()  - 模块操作
    • 通知(Notifications)
    • 数据之间的关系
    • 验证约束
    • 其他模块的扩展及其功能(扩充)
    • YANG扩展

    2. 为支持控制器YANG进行的修改和扩展

        (1). 处理多个模块修订

            本文档介绍了一个隔离层(separation),基于模块的修订本来隔离数据,RPC和通知,以同时支持客户端使用的多个不同版本,而不会有因意外更改数据而产生的风险,这些数据的语义在不同的修订本之间改变。

            由于同一模块的多个修订本可以共存在系统中,架构必须提供组件,该组件在不同模块修订之间翻译数据。

        (2).QName         

             原生XML QName由本地元素名称和XML命名空间组成。为了支持版本控制,增加了模块修订。

             在YANG的上下文中,QName是定义的节点、类型、过程或通知的全名。 QName由XML命名空间、YANG模型版本和定义类型的本地名称组成。它用于防止具有相同本地名称但不同Schema的节点之间的名称冲突。

             QName =(XMLNamespace,Revision,LocalName),其中:

    •  XMLNamespace - 分配给具有定义的元素,类型,过程或通知的YANG模块的命名空间。
    •  Revision- 描述元素的YANG模块的修订版
    •  LocalName - 在YANG模块中为此节点定义的YANG Schema标识符

        (3).RPCs

           在原生Netconf / YANG用例中,RPC用于建模Netconf服务端提供给Netconf客户端的功能和API,在MD-SAL上下文中,RPC用于建模由生产者提供并由消费者消费的功能;

    3. YANG Schema的Java Model

         下图展示了YANG Schema的绑定无关表示:

       


          Binding Generator组件中的YANG解析器生成Java Model对象。

         

    4. 未知Schema节点和扩展处理

        YANG规范允许存在未在原生YANG规范中定义的模式节点。通常,这些节点在具有一个或多个扩展语句的模块中定义,但是没有以计算机可以理解的形式(例如可以使用节点的有效使用)进一步定义该节点的语义。

        为了建模上述场景,我们添加了“未知Schema节点”的概念。未知Schema节点可以是任何Schema节点的子节点。它用于存储扩展信息,并将其提供给了解其语义的组件。

       

    5. 扩展节点类层次结构

    •    ExtensionDefinition  - 定义YANG扩展名的Schema节点。 ExtensionDefinition的QName是YANG语句的基础,用作扩展名的标识符。  
    •    ExtensionSchemaNode - 由扩展名定义的语句的表示。请注意,此模式节点有两个QNames:

               name - YANG模块中的模式节点的名称。它是基于扩展的参数和YANG模块的前缀。

               nodeTypeQName - 定义此扩展模式节点的扩展定义的Qname。

     6. 处理由扩展定义的节点

          扩展定义模式节点的实现和处理超出了YANG Schema和model的范围。

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

  • 相关阅读:
    Python自定义web框架、Jinja2
    Django初探(模板渲染、模板语音、simple_tag、母版子版、静态配置文件)
    多线程 threading
    python操作mysql
    sql 汉字转首字母拼音
    添加sql server约束
    NFS,Memcached,Tokyo tyrant实现session共享性能测试
    让Editplus自动格式化js、css、html。。。
    sql server中利用sql语句如何创建角色和用户
    asp网站文件夹权限设置
  • 原文地址:https://www.cnblogs.com/FrankZhou2017/p/7289374.html
Copyright © 2011-2022 走看看