YANG学习笔记及OpenDayLight中toaster示例

基本概念

YANG是数据模块化语言,NETCONFNETCONF RPCsNERCONF通知(NETCONF notification)操纵它来模块化配置数据和状态数据。YANG是一种为NETCONG 协议模块化数据的语言,YANG模块定义了可被基于NETCONF操作使用的层次化结构的数据它提供了NETCONF客户端和服务器之间完全的数据描述。

一个模块可以从其他节点中导入(import)数据,也可以从子节点中包含(include)数据。

YANG采用与cc++等编程语言类似的语法,以保证可读性。YANG模块采用的是UTF-8字符集编码。

YANG模型被解析成一系列的标记,这种标记化的语言既简单又强力。YANG中的标记(Tokens)可以是一个关键字,一个字符串,一个分号或是大括号。其中,字符串可以是引用字符串也可以是非引用字符串。关键词既是已定义的YANG关键词也是前缀的标识符,用冒号(:)隔开。再跟上语言扩展关键字。关键字大小写敏感。

 

关键词:MUST,MUST NOT,REQUIRED,SHALL,SHALL NOT,SHOULD,SHOULD NOT,

RECOMMENDED,NOT RECOMMENDED,MAY,OPERATIONS

1.1 术语

l anyxml:包含未知XML数据块的数据节点

l augment:向已存在的结构节点添加新的结构节点

l Base type:一种既可能是内置类型又可能是另一种派生类型的派生类型

l Built-in type:用YANG语言定义的YANG数据类型,如uint32string

l Choice:仅有一个有效标志替换的结构节点(A schema node where only one of a number of identified alternatives is valid.)

l Configuration data:用来从初始默认的状态转换到当前状态的一组可写数据

l Conformance(一致性):衡量设备遵循数据模型准确度

l Container(容器):在数据树中至多存在一个实例的内部数据节点。容器没有值,但是包含一组子节点。(An interior data node that exists in at most one instance in the data tree. A container has no value, but rather a set of child nodes.)

l Data definition statement:定义新数据节点的语句。如:Containerleafleaf-listlistchoicecaseaugmentusesanyxml

l Data model:描述数据如何表示和访问的数据模型

l Data node:结构树中的一个节点,能在数据树中实例化。如:containerleafleaf-listlistanyxml

l Data tree:设备中的配置和状态数据的实例化树

l Derived type:从内置类型派生出来的派生类型(如:uint32)或者其他派生类型。

l Device deviation(设备偏差):设备实现模块故障(A failure of the device to implement the module faithfully.)

l Extension:non-YANG语义语句扩展。扩展语句定了新的语句来表达新的语义。

l Feature:一种标记一部分模块作为可选的机制。可用特性名标记定义,但这只在支持这种特性的的设备上合法。

l Grouping:可复用的结构节点,可在本地模块、包含该节点的模块和其他从该节点导入的模块中使用。Grouping语句并不是数据定义语句,因此并没有在结构树中定义任何节点。

l Identifier(标识符):通过命名来区分和确定不同种类的YANG项目

l Instance identifier:在数据树中确定实际节点的机制。

l Interior node(内部节点):有层次结构的节点,但不是叶子节点。

l Leaf:在数据树中至多存在一个实例的数据节点。叶子节点有值,但是不包含子节点(区别于container)

l Leaf-list:类似于叶子节点,但leaf-list定义了一组唯一标志的节点而不是单一节点。每个节点都有值但没有子节点。

l List:可在数据树中存在多个实例的数据节点。List中没有值但是有一组子节点。

l Module:YANG模块中定义的具有层次化结构的节点,能进行基于NERCONF的操作。该节点定义的和由该节点导入或从任何地方包含进来的,模块是可以自包含和可编译的。(With its definitions and the definitions it imports or includes from elsewhere, a module is self-contained and "compilable".)

l RPC:远程过程调用,在NETCONF中使用。(A specific Remote Procedure Call, as used within the NETCONF protocol.)

l RPC operation:特定的RPC,也叫做一次协议操作。

l Schema node:结构树中的一个节点。如:containerleafleaf-listlistchoicecaserpcinputoutputnotificationanyxml

l Schema node identifier:用于识别结构树中的特定的节点的机制。

l Schema tree:模块中特定的层次及结构定义。(The definition hierarchy specified within a module.)

l State data:系统中除配置数据以外的额外数据,如:只读状态信息和收集统计信息。

l Submodule:部分模块定义,由derived typesgroupingdata nodesRPCsnotifications组成的模块。YANG模块可以由多个子模块构成。

l Top-level data node:一种数据节点,在该节点和某个模块或子模块声明之间没有其他数据节点。

l Uses:uses语句被用来实例化一组在grouping语句中定义的结构节点,实例化的节点可以进一步的完善和扩充,以适应其他任何特定的需求。

1.2 XML的命名空间:

所有在模块中指定的YANG定义都会绑定到一个特定的XML namespace,这时全局唯一的URINETCONF客户端或者服务器在数据进行XML编码的时候使用namespace

 

”namespace”语句的argument(参数?)XML namespaceURI(统一资源标识符)

Namespace语句

Namespace语句定义了XML的命名空间,所有模块定义的标识符都必须参照namespace,除了在grouping中定义的数据节点的标志符。“namespace”语句的参数是namespaceURI

 

 

 

强制性节点(Mandatory Nodes)

l 含有“mandatory”语句的Leafchoiceanyxml节点的值为turue 

l 含有“min-elements”语句的leaf-list节点的值远大于零 ;

l 还有“presence”语句的container节点至少含有一个强制子节点 。

 

YANG中允许可复用grouping节点的定义(YANG permints the definition of resuable groupings of node)这些groupings的实例可以改进和增加节点。

 

Tips

1、在使用数据定义语句时会在结构树中定义相应的节点。

2、为什么要有派生类型,派生类型有什么作用?

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值