为什么netconf不使用XML作为数据建模语言



我们知道Netconf使用yang作为数据建模语言。它还包括XML。为什么XML本身不被用作建模语言?。是什么阻止了XML作为一种数据建模语言?。

请注意,与NETCONF协议相关的RFC不强制要求任何特定的数据模型。

数据建模和内容问题不在NETCONF的范围内协议假设设备的数据模型为应用程序已知,并且双方都知道布局、包含、键控、查找、替换等问题,和数据管理,以及任何其他强加的限制通过数据模型。

NETCONF在元素内部携带配置数据特定于设备的数据模型。协议处理该元素的内容作为不透明数据。该设备使用宣布设备的一组数据模型的功能工具。功能定义详细说明了操作和数据模型施加的约束。

设备和管理器可以支持多种数据模型,包括标准和专有数据模型。

RFC6241,第5.2节

您还应该注意,YANG有一个基于XML的格式,称为YIN,因此从技术上讲,它也可以被视为一种基于XML的数据建模语言。

YANG模块可以转换为另一种基于XML的语法称为YIN。翻译后的模块称为YIN模块。这部分描述了两者之间的双向映射规则格式。

YANG和YIN格式包含使用不同的符号。YIN表示法使开发人员能够用XML表示YANG数据模型,因此使用基于XML的数据过滤和验证工具,自动化代码和文档的生成以及其他任务。工具如可以使用XSLT或XML验证器。

YANG和YIN之间的映射不会修改信息模型的内容。注释和空白不保留。

RFC7950,第13节

然而,YANG最初设计时确实考虑到了NETCONF,目前是在NETCONF会话中对对等方交换的数据进行建模的首选方式。

为什么不使用现有的基于XML的数据模型,如XMLSchema(XSD(和RelaxNG?

当时的一个论点是可读性。对YANG来说,可读性是一个高度优先的目标——你应该能够通过硬编码来实现一个模块,有些模块实际上需要你通过节点描述中的规范文本来实现。除了机器之外,基于XML的数据模型可读性不强。我将让您来判断YANG是否比XML更可读,因为这完全是主观的(您可以通过并排阅读YANG和YIN格式的模块来测试这一点(。

用一种更具体的语言实现对等体之间的最大互操作性(换句话说,标准化(也要容易得多,YANG就是这样的语言。就XSD而言,一切都只是元素和属性——您无法立即判断定义是表示通知、rpc、操作还是仅表示普通数据节点。对于这样的事情,你必须依靠评论。当然,其他人可能会为此使用处理说明。或者任何其他XML构造。。。

YANG是一种专门为网络管理定义的数据建模语言(用于对设备数据和操作进行建模(。然而,XML是一种通用的XML。请参阅RFC 3535中的2.6节,了解基于XML的网络管理的缺点。以下是杨适合网络管理的能力列表。

  1. 过滤功能
  2. 进行自动数据验证的限制
  3. 定义RPC的语法
  4. 数据类型,如Leaf、Leaflist等,可以很好地建模设备数据

我不同意Predi的回应;注意,与NETCONF协议相关的RFC不要求任何特定的数据模型";。IMO,Netconf使用了一种也是唯一一种数据建模语言,那就是Yang。我从RFC中了解到,设备OEM可以使用标准的基于Yang的数据模型,也可以编写专有的基于杨的数据模型。最后,双方(设备OEM和NMS开发人员(应该同意一个通用的基于Yang的数据模型。

最新更新