YANG语言
- 描述数据类型的语言,最初是为网络数据模型设计的。
- 结构化语言。
- 每个数据模型都是一个
module独立的顶级节点层次结构。 - 数据类型可以
imported来自另一个YANG模块,也可以在模块中定义。 - 用
containers对相关节点分组。 - 用
lists表示按顺序存储的节点。 - 用
leaf表示节点的每个单独属性。 - 每个叶子必须有一个相关的
type。
- 每个数据模型都是一个
module ietf-interfaces {
import ietf-yang-types {
prefix yang;
}
container interfaces {
list interface {
key "name";
leaf name {
type string;
}
leaf enabled {
type boolean;
default "true";
}
}
YANG模型
https://github.com/YangModels/yang
使用pyang
- 用python写的一个YANG转换器。
YANG在网络设备数据中的使用
- 使用带有XML(数据格式)的NETCONF(传输协议)通信。
- 也可以使用RESTCONF并提供JSON作为备用数据选项。
- 发送到网络设备或从网络设备发送的YANG数据将根据协议格式化为XML或JSON(例如:NETCONF或RESTCONF)。

- 从网络设备返回的数据示例如下:
<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
<interface>
<name>GigabitEthernet2</name>
<description>WAN Interface</description>
<type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">ianaift:ethernetCsmacd</type>
<enabled>true</enabled>
<ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip">
<address>
<ip>172.16.12.1</ip>
<netmask>255.255.255.0</netmask>
</address>
</ipv4>
<ipv6 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"/>
</interface>
</interfaces>
- 容器接口:
<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">...</interfaces>xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"标识特定的YANG模型
- 各个接口列表:
<interface>..</interface> - 叶属性:
<name>..</name><type>..</type><enabled>..</enabled
版权声明:本文为xykimred原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。