Libyang 学习
YANG模型
YANG
是最初设计用于为NETCONF
协议建模的语言。 YANG
模块定义了可用于基于NETCONF
的操作(包括配置,状态数据,RPC
和通知)的数据层次结构。这允许在NETCONF
客户端和服务器之间发送的所有数据的完整描述。虽然不在本规范的范围之内,但是也可以使用除NETCONF
以外的协议。
YANG
将数据的分层组织模型化为一个树,其中每个节点都有一个名称,或者一个值或一组子节点。YANG
提供了对节点的清晰简洁的描述,以及这些节点之间的交互。
YANG
将数据模型组织成模块和子模块。模块可以从其他外部模块导入定义,并可以包含子模块的定义。可以增加层次结构,允许一个模块将数据节点添加到另一个模块中定义的层次结构中。这种增加可以是有条件的,只有在满足某些条件的情况下才会出现新的节点。
一个模块包含三种类型的语句:模块头(module header
)语句,“修订”(revision
)语句和定义(definition
)语句。模块头部语句描述模块并提供关于模块本身的信息,“修订”语句提供关于模块历史的信息,定义语句是定义数据模型的模块的主体。
数据模型(data model
):数据模型描述如何表示和访问数据。
数据节点(data node
):模式树中可以在数据树中实例化的节点。container
,leaf
,leaf-list
,list
,anydata
和anyxml
之一。
数据树(data tree
):用YANG
建模的任何数据的实例化树,例如配置数据,状态数据,组合配置和状态数据,RPC
或操作输入,RPC
或操作输出或通知。
叶节点(leaf
):数据树中至多存在一个实例的数据节点。叶子有一个值,但没有子节点。
叶列表(leaf-list
):与叶节点类似,但定义了一组唯一可识别的节点,而不是单个节点。每个节点都有一个值,但没有子节点。
RPC
操作(RPC operation
):特定的远程过程调用。
模式节点(schema node
):模式树中的节点。 action
,container
,leaf
,leaf-list
,list
,choice
,case
,rpc
,input
,output
,notification
,anydata
和anyxml
中的一个。
模式树(schema tree
):模块中指定的定义层次结构。
Data Model
叶节点(Leaf Nodes)
“leaf
”语句用于在模式树中定义叶节点。 它需要一个参数,它是一个标识符,后面是一个包含详细叶子信息的