YANG语言概述
- YANG是一种数据建模语言。
- YANG模型定义了数据的层次化结构,可用于基于NETCONF的操作。建模对象包括配置、状态数据、远程过程调用(RPC)和通知。它可以对NETCONF客户端和服务器端之间发送的所有数据进行一个完整的描述。(YANG模型最终呈现是.yang为后缀的文件)
- YANG语言的特点:
- 基于层次化的树状结构建模。
- 数据模型以模块(module)和子模块(submodule)呈现。
- 可以和基于XML的语法YIN模型无损转换。
- 定义内置的数据模型和允许可扩展类型。
YANG语言语法
Leaf Node
- Leaf节点用于定义一个简单指定类型的变量,使用关键字“leaf”申明。
- 在Leaf节点内有子声明和值,没有子节点。
- 下面例子中“host-name”内有两个子声明:“type”和“description”。
-
“type”表示取值的类型。
-
“description”为描述。
Leaf List
- Leaf List用于定义一个数组类型变量,使用“leaf-list”关键字申明。
- 下面例子中“domain-search”内含有两个子声明:"type"和”description“。
List Nodes
- List节点用于定义一个更高层次的数据节点。一个List节点使用”key“唯一标识,可以包含多个leaf节点。
Container Nodes
- Container节点用于定义更大范围的数据集合。
Grouping
- Grouping用于定义可以重复使用的节点,一般和uses一起使用。下面例子中target定义了leaf address和port。Container peer中声明use target,表示复用此leaf模型。
配置数据和状态数据
- YANG文件可以申明数据类型。
”config“声明用于区分配置数据和状态数据: - config true表示配置数据。
- config false表示状态数据。
如何加载YANG模型?
- 在NETCONF客户端(例如网管平台/SDN控制器)加载YANG文件。通过工具实现YANG文件转换为NETCONF消息下发到设备。