关于 netconf 标签

Regarding netconf tags

从其中一个文档中,我有以下内容:

<?xml version="1.0" encoding="utf-8"?>
<rpc message-id="${TIMESTAMP}" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
    <get-config>
    <source>
    <running></running>
    </source>
    <filter>
    <interface-configurations xmlns="http://cisco.com/ns/yang/Cisco-IOS-XR-ifmgr-cfg"/>

    </filter>
    </get-config>
</rpc>

这实际上是从 运行 配置中检索接口配置 工作正常

Q1:如何编辑相同的以检索接口统计信息?需要使用什么标签?我怎么知道的?

问题 2:我将包含命名空间的行更改为某个随机行,例如“http://a.b.c.d/check”,但它失败了。为什么?

How do i edit the same to retrieve interface statistics? What tags need to be used? How do i come to know?

您的示例使用 <get-config> 标准操作,它只检索配置,不检索操作状态。如果您希望检索后者,则需要使用 <get/>,它会同时检索配置和状态数据。

<?xml version="1.0" encoding="utf-8"?>
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="${TIMESTAMP}">
  <get>
    <filter>
      <interface-configurations xmlns="http://cisco.com/ns/yang/Cisco-IOS-XR-ifmgr-cfg"/>
    </filter>
  </get>
</rpc>

这个没有 <source> 参数,因为它总是检索 运行 配置加上操作状态。熟悉 NETCONF 的最简单方法是阅读其 specification.

I changed the line containing the namespace to some random line like 'http://a.b.c.d/check' and it failed. Why?

如果您所说的“失败”是指您收到了 <rpc-error>,那将是非标准行为。你应该得到一个空的 <data/> 响应,因为没有节点匹配你的过滤器。过滤器需要完全匹配。

<?xml version="1.0" encoding="utf-8"?>
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="163">
  <data/>
</rpc-reply>

NETCONF 数据存储严重依赖命名空间,因为它解决了最常见的命名问题。例如,如果您有两个模块并且它们包含名为“my-config”的顶级元素,您就不会有问题,因为它们由模块名称空间唯一标识:{uri:a}my-config{uri:b}my-config.

在您的示例中,您要求 {http://a.b.c.d/check}interface-configurations,它根本不存在。 interface-configuration 部分匹配(本地名称)是无关紧要的,因为您从特定的命名空间请求了特定的 interface-configuration

命名空间(有点)像房屋地址。可能存在许多 John Smiths,但您可以通过说明他的完整地址来解决特定的问题。如果您要求本地 post 仅将包裹发送到名称“John Smith”而没有地址,post 将不知道您指的是哪一个。

注意:如果您的意思是您更改了 urn:ietf:params:xml:ns:netconf:base:1.0 行,那么问题是一样的。您试图执行一些服务器未知的操作。但是,这种情况会因错误响应而失败。