【问题标题】:Regarding the yang model for netconf xml file关于 netconf xml 文件的 yang 模型
【发布时间】:2017-02-14 03:07:22
【问题描述】:

团队 我有以下 xml 文件:

<?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:这个 netconf xml 文件会有 yang 模型吗?

Q2:我如何访问这个 xml 文件的底层 yang 模型(文件)?

【问题讨论】:

    标签: ietf-netmod-yang


    【解决方案1】:

    Q1:这个 netconf xml 文件会有 yang 模型吗?

    您可以通过&lt;hello&gt; 消息轻松确定设备是否使用 YANG 对其内容进行建模。兼容的设备宣传他们支持的 YANG 模块。 YANG 1 和 YANG 1.1 所宣传的功能会有所不同。

    对于 YANG 1 (RFC6020),这是规范中所说的 (5.6.4.1):

    服务器通过&lt;hello&gt; 指示支持的模块的名称 信息。模块命名空间在 能力字符串,模块名称编码为“模块” 基本 URI 的参数。

    服务器必须公布它实现的所有模块的所有修订。

    例如,这条&lt;hello&gt; 消息通告了一个模块“syslog”。

    <hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
     <capability>
       http://example.com/syslog?module=syslog&amp;revision=2008-04-01
     </capability>
    </hello>
    

    对于 YANG 1.1 (RFC7950),在 5.6.4:

    NETCONF 服务器必须宣布它实现的模块(参见 第 5.6.5 节)通过实现 YANG 模块“ietf-yang-library” 在 [RFC7895] 中定义并在 “/modules-state/module”列表。

    服务器还必须在 &lt;hello&gt; 消息(换行符和空格用于格式化 原因):

    urn:ietf:params:netconf:capability:yang-library:1.0?
    
       revision=<date>&module-set-id=<id>
    

    参数“revision”的值与修订日期相同 服务器实现的“ietf-yang-library”模块。这 参数必须存在。

    参数“module-set-id”与叶子的值相同 “ietf-yang-library”中的“/modules-state/module-set-id”。这 参数必须存在。

    通过这种机制,客户端可以缓存支持的模块 服务器并且仅在“module-set-id”值在 &lt;hello&gt; 消息更改。

    似乎无法找到停止上述块引用的方法,因此

    Q2:我如何访问这个 xml 文件的底层 yang 模型(文件)?

    设备制造商通常会在他们的网站上提供一个下载页面,您可以在其中获取他们的 YANG 文件。请注意,并非所有设备都支持 YANG。 NETCONF 不specify 用什么内容建模;可能是一堆 XSD 模式、YANG、RelaxNG 等,尽管 YANG 的设计初衷就是考虑到这个目的。

    还定义了一个可选的标准操作,称为&lt;get-schema&gt;,它是ietf-netconf-monitoring YANG 模块的一部分。您首先发现可用的模式,然后获取它们。由于它是可选的,因此并非所有设备都支持它。

    <?xml version="1.0" encoding="utf-8"?>
    <rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="2">
      <get>
        <filter type="subtree">
          <ncm:netconf-state xmlns:ncm="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">
            <ncm:schemas/>
          </ncm:netconf-state>
        </filter>
      </get>
    </rpc>
    
    <?xml version="1.0" encoding="utf-8"?>
    <rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="2">
      <data>
        <netconf-state xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">
          <schemas>
            <schema>
              <identifier>ietf-inet-types</identifier>
              <version>2013-07-15</version>
              <format>yang</format>
              <namespace>urn:ietf:params:xml:ns:yang:ietf-inet-types</namespace>
              <location>NETCONF</location>
            </schema>
            <!-- ... -->
          </schemas>
        </netconf-state>
      </data>
    </rpc-reply>
    
    <?xml version="1.0" encoding="utf-8"?>
    <rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="8">
      <get-schema xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">
        <identifier>ietf-interfaces</identifier>
        <version>2014-05-08</version>
        <format>yang</format>
      </get-schema>
    </rpc>
    
    <?xml version="1.0" encoding="utf-8"?>
    <rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="8">
      <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">module ietf-interfaces {
    
      namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
      prefix if;
      
      // ...
      }
      </data>
    </rpc-reply>
    

    【讨论】:

      猜你喜欢
      • 2012-04-17
      • 2016-05-09
      • 1970-01-01
      • 2019-01-29
      • 2019-01-09
      • 2017-02-13
      • 2019-12-13
      • 2021-03-28
      • 2015-08-10
      相关资源
      最近更新 更多