YANG 模块概述
YANG 数据模型由模块和子模块组成,可以定义配置和状态数据、通知和 RPC,供基于 YANG 的客户端使用。YANG 模块通过其数据定义数据模型,以及数据的分层组织和约束。每个模块都由命名空间 URI 唯一标识。
一个模块定义单个数据模型。但是,模块可以通过使用语句导入外部模块或include使用import语句来包括一个或多个子模块来引用其他模块和子模块中的定义。此外,模块可以使用语句在数据模型augment层次结构中定义新节点的放置,并使用when语句定义新节点的有效条件来扩充另一个数据模型。模块使用feature语句指定模块中具有条件的部分,并使用deviation语句指定设备实现可能偏离原始定义的位置。
导入外部模块时,定义一个前缀,在导入的模块中引用定义时使用此前缀。建议使用的前缀与导入的模块中定义的前缀相同,以避免冲突。
YANG 使用带节点的层次化、基于树的结构对数据进行建模。YANG 定义了四种节点类型。每个节点都有一个名称,根据节点类型,该节点可以定义一个值或包含一组子节点。节点类型包括:
叶节点 — 包含特定类型的单个值
叶列表节点 — 包含一系列叶节点
容器节点 — 包含一组相关节点,仅包含子节点,可以是四种节点类型中的任意一种
列表节点 — 包含一系列列表条目,每个条目均由一个或多个键叶唯一标识
在 YANG 中,每个叶列表节点都包括用于 type 识别该节点有效数据的数据类型的语句。YANG 定义了一组内置类型,并提供 typedef 用于从基础类型定义派生类型的语句,该类型可以是内置类型,也可以是另一种派生类型。
默认情况下,节点定义配置数据。如果节点标记为 config false,则定义状态数据。配置数据使用 NETCONF <get-config> 操作返回,状态数据使用 NETCONF <get> 操作返回。
有关 YANG 语言的语法和语义的详细信息,请参阅: