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

 

posted on 2017-08-05 10:19  水共禾刀  阅读(935)  评论(0编辑  收藏  举报