【问题标题】:understand YANG and its goals了解 YANG 及其目标
【发布时间】:2016-01-28 22:56:07
【问题描述】:

我已经阅读了https://en.wikipedia.org/wiki/YANG,但仍然无法理解YANG 的实际用途以及它提供的好处。据我了解,它现在不仅被 NETCONF 使用,正如最初设计的那样。 YANG 不是一般意义上的语言,例如C 或python,即我们在YANG 中写的任何内容都不会被编译或翻译;据我了解,它被用作更高级别库或应用程序的参考模型。那么问题来了,高层代码是如何理解YANG的呢?

【问题讨论】:

    标签: model schema ietf-netmod-yang


    【解决方案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 所属的架构,包括应用程序开发人员等不同角色应如何处理它(在网络管理的背景下)。

    【讨论】:

    • 感谢您的评论,现在对我来说更有意义了。鉴于 YANG 定义了类型以及值可以接受的范围——它是 YANG-YIN 转换 API/工具/等的责任吗?验证类型和值?
    • YANG-YIN 转换只是在 XML 中呈现 YANG 模块,与数据验证无关。 YANG 用于某些通信协议的上下文中。如果设备声称它实现了某个 YANG 模块,那么它必须为它使用该协议传输的所有数据实现 YANG 模块中定义的验证。
    • @Mark,是的。执行实例文档的模块合规性是处理 YANG/YIN 的工具的责任。该工具也可以是手动实现客户端或服务器或两者的人。
    • @Piotr,您的意思是使用 YANG 模型的协议应该对其以 XML 格式发送或接收的任何数据实施 YANG 验证吗?
    • 虽然最初是这样指定的,但 YANG 不再特定于 NETCONF。它也被其他协议使用,例如RESTCONF 和 CoAP,使用多种不同的编码(XML、JSON、CBOR)。还有一个专有的 gRPC 实现。
    猜你喜欢
    • 1970-01-01
    • 2016-05-09
    • 1970-01-01
    • 1970-01-01
    • 2011-10-07
    • 2021-05-20
    • 2020-06-06
    • 1970-01-01
    • 2020-09-22
    相关资源
    最近更新 更多