YANG建模语言
YANG(yet Another Next Generation)是一种数据建模语言:
定义了数据的层次化结构,可用于基于NETCONF的操作,建模对象包括配置,状态数据,远程过程调用和通知,可以对NETCONF客户端和服务器端之间发送的所有数据进行一个完整的描述
特点
·基于层次化的树状结构建模
·数据模型以模块和子模块呈现
·可以和基于XML的语法YIN(YANG Indepent Notation)模型无损转换
·定义内置的数据类型和允许可扩展类型
YANG模型最终呈现以.yang为后缀的文件

Module:
一个YANG文件通常定义一个模块module或子模块submodule,两个均可以引用其他模块模型文件,通过引用使用其他模块定义的数据类型和结构
·模块包含多个声明:
-YANG版本信息
-YANG命名空间
-机构信息
-联系人
-文件描述
-修订信息

Leaf Node:
leaf节点用于定义一个简单指定类型的变量,使用leaf关键字声明
在leaf节点内有子声明和值,没有子节点,下例中host-name有两个子声明type和description
type为取值类型
description为描述


leaf list:
定义一个数组类型变量


List nodes:
List节点用于定义一个更高层次的数据节点,一个List节点使用key唯一标识,可以包含多个leaf节点


Container Nodes:用于定义更大范围的数据集合,
该节点没有值,只是不同的子节点,这些子节点可以是container、leaf、leaf-list和list等


Grouping:
定义可以重复使用的节点,一般和uses一起用,下例target定义了leaf address和port
container peer中声明use target 表示复用leaf模型

配置数据和状态数据
YANG文件可以申明数据类型
config声明用于区分配置数据和状态数据
config true表示配置数据
config false表示状态数据

数据类型:
YANG模型支持内置默认数据类型和扩展的数据类型,typedef申明用于新定义扩展数据类型


加载YANG模型
在NETCONF客户端加载YANG文件,通过工具实现YANG文件转换为NETCONF消息下发到设备

更新: 2025-03-14 12:26:21
原文: https://www.yuque.com/yuhui.net/network/ggof6gto7w8vq2n5

评论(0)
暂无评论