我已阅读https://en.wikipedia.org/wiki/YANG,但仍然无法理解YANG
的实际用途及其带来的好处。据我所知,它现在不仅被NETCONF使用,就像最初设计的那样。 YANG
不是一般意义上的语言,例如C
或python
,即我们在YANG
中写的任何内容都不会编译或翻译;据我所知,它被用作更高级库或应用程序的参考模型。那么问题是高级代码如何理解YANG
?
答案 0 :(得分:1)
YANG是一种专门的模式语言,类似于XSD Schema或RelaxNG,但是特定于NETCONF。其目标是对对等体之间协议会话期间交换的所有内容进行建模,如RFC6020中所述:
YANG是一种用于为NETCONF协议建模数据的语言。一个 YANG模块定义了可用于NETCONF的数据层次结构 - 基于操作,包括配置,状态数据,远程 过程调用(RPC)和通知。这允许完整 NETCONF客户端和服务器之间发送的所有数据的描述。
由YANG定义的模型可以通常的方式使用 - 例如代码生成,就像JAXB对XSD Schema和Java所做的那样。有一些工具和服务器实现只是使用YANG模块集(一个YANG模型),并准备用作虚拟实现。还有一些工具使用该模型使用户能够查询设备,而无需实际实现有关设备的任何特定内容。您可以说一组YANG模块公开了设备提供的接口。你使用这个界面做什么完全取决于你。
我建议阅读规范中提供的高级概述:
另请查看ietf-netmod-yang代码的Wiki页面。
编辑:您还可以阅读An Architecture for Network Management Using NETCONF and YANG文档。它进一步解释了YANG a所属的架构,包括应用程序开发人员应该如何处理它(在网络管理的背景下)。