设为首页收藏本站language 语言切换
查看: 2087|回复: 1
收起左侧

[分享] NETCONF基本操作

[复制链接]
 成长值: 63370
发表于 2023-12-22 09:54:49 | 显示全部楼层 |阅读模式
本帖最后由 小乔 于 2023-12-22 09:56 编辑

<get-config>获取配置数据
<get-data>获取数据
<get>查询数据
<edit-config>编辑配置数据
<edit-data>编辑配置数据
<copy-config>拷贝操作
<delete-config>删除配置数据
<lock>锁定配置数据库
<unlock>取消锁定配置数据库
<close-session>关闭NETCONF会话
<kill-session>强制关闭NETCONF会话



<get-config>获取配置数据
<get-config>操作用来查询全部或部分指定配置数据集。
source:正在查询的配置数据库名称,<running/>、<candidate/>或<startup/>。
filter:此参数用来标识要查询配置数据库的范围。如果此参数不存在,则返回整个配置。
示例:查询<running/>数据库中IFM特性的接口配置,RPC应答报文返回查询到的接口信息。


RPC请求


<?xml version="1.0" encoding="utf-8"?>
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="827">
  <get-config>
    <source>
      <running/>
    </source>
    <filter type="subtree">
      <ifm:ifm xmlns:ifm="urn:huawei:yang:huawei-ifm">
        <ifm:interfaces>
          <ifm:interface/>
        </ifm:interfaces>
      </ifm:ifm>
    </filter>
  </get-config>
</rpc>
RPC应答
<?xml version="1.0" encoding="utf-8"?>
<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <ifm xmlns="urn:huawei:yang:huawei-ifm">
    <interfaces>
      <interface>
        <name>GigabitEthernet0/0/0</name>
        <class>main-interface</class>
        <type>MEth</type>
        <number>0/0/0</number>
        <admin-status>up</admin-status>
        <link-protocol>ethernet</link-protocol>
        <statistic-enable>true</statistic-enable>
        <mtu>1500</mtu>
        <spread-mtu-flag>false</spread-mtu-flag>
        <vrf-name>_public_</vrf-name>
      </interface>
    </interfaces>
  </ifm>
</data>
<get-data>获取数据
对于NMDA数据集,需要通过<get-data>操作查询全部或部分指定配置或状态数据集。


source:正在查询的数据库名称,当数据库名称为<ietf-datastores:running/>、<ietf-datastores:candidate/>、< ietf-datastores:startup/>时,查询的是配置数据。当数据库名称为<ietf-datastoreperational/>时,查询的是设备当前运行的配置数据和状态数据。
xpath-filter:此参数以xpath形式来标识要查询配置数据库的范围。如果此参数不存在,则返回整个配置。
subtree-filter: 此参数以subtree形式来标识要查询配置数据库的范围。如果此参数不存在,则返回整个配置。
示例:查询< ietf-datastores:running/>数据库中AAA特性的task分组配置,RPC应答报文返回查询到的分组信息。


RPC请求


<?xml version="1.0" encoding="utf-8"?>
<rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <get-data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-nmda" xmlns:ds="urn:ietf:params:xml:ns:yang:ietf-datastores">
    <datastore>ds:running</datastore>
    <subtree-filter>
        <aaa:aaa xmlns:aaa="urn:huawei:yang:huawei-aaa">
            <aaa:task-groups>
                <aaa:task-group/>
            </aaa:task-groups>
        </aaa:aaa>
    </subtree-filter>
  </get-data>
</rpc>
RPC应答
<?xml version="1.0" encoding="utf-8"?>
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="5">
   <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-nmda">
      <aaa xmlns="urn:huawei:yang:huawei-aaa">
         <task-groups>
            <task-group>
               <name>manage-tg</name>
            </task-group>
            <task-group>
               <name>system-tg</name>
            </task-group>
            <task-group>
               <name>monitor-tg</name>
            </task-group>
            <task-group>
               <name>visit-tg</name>
            </task-group>
         </task-groups>
      </aaa>
   </data>
</rpc-reply>
RPC请求
<?xml version="1.0" encoding="utf-8"?>
<rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <get-data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-nmda" xmlns:ds="urn:ietf:params:xml:ns:yang:ietf-datastores">
    <datastore>ds:running</datastore>
    <xpath-filter xmlns:aaa="urn:huawei:yang:huawei-aaa">/aaa:aaa/aaa:task-groups/aaa:task-group</xpath-filter>
  </get-data>
</rpc>
RPC应答
<?xml version="1.0" encoding="utf-8"?>
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="5">
   <data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-nmda">
      <aaa xmlns="urn:huawei:yang:huawei-aaa">
         <task-groups>
            <task-group>
               <name>manage-tg</name>
            </task-group>
            <task-group>
               <name>system-tg</name>
            </task-group>
            <task-group>
               <name>monitor-tg</name>
            </task-group>
            <task-group>
               <name>visit-tg</name>
            </task-group>
         </task-groups>
      </aaa>
   </data>
</rpc-reply>
<get>查询数据
<get>查询的是设备当前运行的配置数据和状态数据,即只能从<running/>配置数据库中获取数据。


<get>操作成功,Server回复的<rpc-reply>元素中含有<data>元素,<data>元素中封装了获取的结果数据。否则在<rpc-reply>元素中含有<rpc-error>元素。




<get>和<get-config>区别在于:
<get>只能查询<running/>数据库中的数据,<get-config>可以查询<running/>、<candidate/>和<startup/>中数据。
<get>可以查询配置数据和状态数据,<get-config>只能查询配置数据。
示例:查询数据库中IFM特性的接口配置,RPC应答报文返回查询到的接口信息。


RPC请求


<?xml version="1.0" encoding="utf-8"?>
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="831">
  <get>
    <filter type="subtree">
      <ifm:ifm xmlns:ifm="urn:huawei:yang:huawei-ifm">
        <ifm:interfaces>
          <ifm:interface/>
        </ifm:interfaces>
      </ifm:ifm>
    </filter>
  </get>
</rpc>
RPC应答


<?xml version="1.0" encoding="utf-8"?>
<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <ifm xmlns="urn:huawei:yang:huawei-ifm">
    <interfaces>
      <interface>
        <name>GigabitEthernet0/0/0</name>
        <index>4</index>
        <class>main-interface</class>
        <type>MEth</type>
        <position>0/0/0</position>
        <number>0/0/0</number>
        <admin-status>up</admin-status>
        <link-protocol>ethernet</link-protocol>
        <statistic-enable>true</statistic-enable>
        <mtu>1500</mtu>
        <spread-mtu-flag>false</spread-mtu-flag>
        <vrf-name>_public_</vrf-name>
        <dynamic>
          <oper-status>up</oper-status>
          <physical-status>up</physical-status>
          <link-status>up</link-status>
          <mtu>1500</mtu>
          <bandwidth>100000000</bandwidth>
          <ipv4-status>up</ipv4-status>
          <ipv6-status>down</ipv6-status>
          <is-control-flap-damp>false</is-control-flap-damp>
          <mac-address>00e0-fc12-3456</mac-address>
          <line-protocol-up-time>2019-05-25T02:33:46Z</line-protocol-up-time>
          <is-offline>false</is-offline>
          <link-quality-grade>good</link-quality-grade>
        </dynamic>
        <mib-statistics>
          <receive-byte>0</receive-byte>
          <send-byte>0</send-byte>
          <receive-packet>363175</receive-packet>
          <send-packet>61660</send-packet>
          <receive-unicast-packet>66334</receive-unicast-packet>
          <receive-multicast-packet>169727</receive-multicast-packet>
          <receive-broad-packet>127122</receive-broad-packet>
          <send-unicast-packet>61363</send-unicast-packet>
          <send-multicast-packet>0</send-multicast-packet>
          <send-broad-packet>299</send-broad-packet>
          <receive-error-packet>0</receive-error-packet>
          <receive-drop-packet>0</receive-drop-packet>
          <send-error-packet>0</send-error-packet>
          <send-drop-packet>0</send-drop-packet>
        </mib-statistics>
        <common-statistics>
          <stati-interval>300</stati-interval>
          <in-byte-rate>40</in-byte-rate>
          <in-bit-rate>320</in-bit-rate>
          <in-packet-rate>2</in-packet-rate>
          <in-use-rate>0.01%</in-use-rate>
          <out-byte-rate>0</out-byte-rate>
          <out-bit-rate>0</out-bit-rate>
          <out-packet-rate>0</out-packet-rate>
          <out-use-rate>0.00%</out-use-rate>
          <receive-byte>0</receive-byte>
          <send-byte>0</send-byte>
          <receive-packet>363183</receive-packet>
          <send-packet>61662</send-packet>
          <receive-unicast-packet>66334</receive-unicast-packet>
          <receive-multicast-packet>169727</receive-multicast-packet>
          <receive-broad-packet>127122</receive-broad-packet>
          <send-unicast-packet>61363</send-unicast-packet>
          <send-multicast-packet>0</send-multicast-packet>
          <send-broad-packet>299</send-broad-packet>
          <receive-error-packet>0</receive-error-packet>
          <receive-drop-packet>0</receive-drop-packet>
          <send-error-packet>0</send-error-packet>
          <send-drop-packet>0</send-drop-packet>
          <send-unicast-bit>0</send-unicast-bit>
          <receive-unicast-bit>0</receive-unicast-bit>
          <send-multicast-bit>0</send-multicast-bit>
          <receive-multicast-bit>0</receive-multicast-bit>
          <send-broad-bit>0</send-broad-bit>
          <receive-broad-bit>0</receive-broad-bit>
          <send-unicast-bit-rate>0</send-unicast-bit-rate>
          <receive-unicast-bit-rate>0</receive-unicast-bit-rate>
          <send-multicast-bit-rate>0</send-multicast-bit-rate>
          <receive-multicast-bit-rate>0</receive-multicast-bit-rate>
          <send-broad-bit-rate>0</send-broad-bit-rate>
          <receive-broad-bit-rate>0</receive-broad-bit-rate>
          <send-unicast-packet-rate>0</send-unicast-packet-rate>
          <receive-unicast-packet-rate>0</receive-unicast-packet-rate>
          <send-multicast-packet-rate>0</send-multicast-packet-rate>
          <receive-multicast-packet-rate>0</receive-multicast-packet-rate>
          <send-broadcast-packet-rate>0</send-broadcast-packet-rate>
          <receive-broadcast-packet-rate>0</receive-broadcast-packet-rate>
        </common-statistics>
      </interface>
  </ifm>
</data>
<edit-config>编辑配置数据
<edit-config>操作用来把全部或部分配置数据加载到指定的目标配置数据库(<running/>或<candidate/>)。设备对<edit-config>中的操作进行鉴权,鉴权通过后,执行相应的修改。


<edit-config>操作支持多种加载配置方式,例如:支持加载本地文件、远程文件,支持在线编辑。如果NETCONF服务器支持URL能力,可以使用标识本地配置文件的<url>参数替代<config>参数。


<edit-config>操作RPC报文中各参数含义如下:
<config>:一组由数据模型定义的层次化的配置数据。


<config>中可能包含可选的“operation”属性,用来给配置数据指定操作类型。如果未携带“operation”属性,则默认为merge操作。operation取值如下:
merge:在数据库中修改存在或不存在的目标数据,如果目标数据不存在则创建,如果目标数据存在则修改。这是默认操作。
create:当且仅当配置数据库中不存在待创建的配置数据时,才能成功添加到配置数据库。如果配置数据存在,则会返回<rpc-error>,其中包含一个<error-tag>值“data-exists”。
delete:删除配置数据库中指定的配置数据记录。如果数据存在,则删除该数据,如果数据不存在,则返回<rpc-error>,其中包含一个<error-tag>值“data-missing”。
remove:删除配置数据库中指定的配置数据记录。如果数据存在,则删除该数据,如果数据不存在,则返回成功。
replace:替换配置数据库中的配置数据记录。若数据存在,则替换数据库中的任何相关数据,如果数据库中不存在此类数据,则创建该数据。与替换整个目标配置的<copy-config>操作不同,只有<config>参数中实际存在的配置才会受到影响。
target:待编辑的配置数据库。基于场景选择对应的数据库:


立即生效模式,配置数据库为<running/>。


两阶段生效模式,配置数据库为<candidate/>,对该数据库操作后需执行<commit>操作提交配置,修改后的配置才能生效。


试运行,配置数据库设置为<candidate/>。


default-operation:为<edit-config>操作设置默认操作。


default-operation参数是可选的,取值如下:


merge:<config>参数中的配置数据与目标配置数据库中的配置合并。这是默认操作。


replace:<config>参数中的配置数据完全替换目标配置数据库中的配置。


none:除了执行operation属性指定的操作外,目标配置数据库中的配置数据不受<config>中其他配置数据影响。如果<config>参数中含有目标配置数据库中对应的数据层次上不存在的配置数据,则返回<rpc-error>,<error-tag>值为“data-missing”,这样可以避免在执行指定操作时,无意中创建了冗余的元素。比如执行删除指定子元素操作时,<config>中包含该子元素的父层次结构,而目标数据库中不包含其父元素的配置,此时如果default-operation参数取值为非none的其他操作类型,则在删除该子元素的同时也会在目的数据库中创建其父元素的配置,如果default-operation参数取值为none,则只会删除该子元素,而不会创建其父元素的配置。


error-option:<error-option>用于设置一个实例配置出错后,后续实例配置的处理方式,缺省值为stop-on-error,取值为:


1、当目标配置库target为<running/>时:


stop-on-error:出现错误后停止操作,并按照rollback-on-error进行后续处理。
continue-on-error:出现错误后记录错误信息并继续执行,只要发生错误,NETCONF服务器会给客户端返回一个操作失败的<rpc-reply>消息。
rollback-on-error:出现错误后停止操作,并将配置回退到执行<edit-config>操作之前的状态。只有设备支持rollback-on-error能力才支持此操作。
2、当目标配置库target为<candidate/>时,<error-option>用于设置一个实例配置出错后,后续实例配置的处理方式按照rollback-on-error处理。


示例:配置<running/>数据库中接口名为GigabitEthernet0/0/1的接口的description值修改为“huawei”。
RPC请求:
<?xml version="1.0" encoding="utf-8"?>
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="15">
  <edit-config>
    <target>
      <running/>
    </target>
    <config>
      <ifm xmlns="urn:huawei:yang:huawei-ifm">
        <interfaces>
          <interface>
            <name>GigabitEthernet0/0/1</name>
            <description>huawei</description>
          </interface>
        </interfaces>
      </ifm>
    </config>
  </edit-config>
</rpc>
RPC应答:
<?xml version="1.0" encoding="utf-8"?>
<rpc-reply xmlns:nc-ext="urn:huawei:yang:huawei-ietf-netconf-ext"
           xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"
           message-id="15"
           nc-ext:flow-id="27">
<ok/>
</rpc-reply>
删除运行配置库中名为LoopBack1023接口下的配置示例。
RPC请求:
<?xml version="1.0" encoding="utf-8"?>
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="844">
  <edit-config>
    <target>
      <running/>
    </target>
    <config>
      <ifm xmlns="urn:huawei:yang:huawei-ifm">
        <interfaces>
          <interface xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" ncperation="delete">
            <name>LoopBack1023</name>
          </interface>
        </interfaces>
      </ifm>
    </config>
  </edit-config>
</rpc>
RPC应答:
<?xml version="1.0" encoding="utf-8"?>
<rpc-reply xmlns:nc-ext="urn:huawei:yang:huawei-ietf-netconf-ext"
           xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"
           message-id="844"
           nc-ext:flow-id="29">
<ok/>
</rpc-reply>
Validate能力支持的前提下,<edit-config>操作支持携带test-option参数,如果<edit-config>操作没有携带此参数,系统默认按照test-then-set流程处理。
当test-option参数取值为test-then-set或者不带参数时,任一层次的节点都支持delete和remove操作,删除配置数据库中指定节点下的所有配置数据。


删除vplsInstances配置示例。


RPC请求:


<?xml version="1.0" encoding="utf-8"?>
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="849">
  <edit-config>
    <target>
      <running/>
    </target>
    <config>
      <l2vpn xmlns="urn:huawei:yang:huawei-l2vpn">
        <instances xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" ncperation="delete"/>
      </l2vpn>
    </config>
  </edit-config>
</rpc>
RPC应答:


<?xml version="1.0" encoding="utf-8"?>
<rpc-reply xmlns:nc-ext="urn:huawei:yang:huawei-ietf-netconf-ext"
           xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"
           message-id="849"
           nc-ext:flow-id="31">
<ok/>
</rpc-reply>
<edit-data>编辑配置数据
对于NMDA数据集,需要通过<edit-data>操作用来把全部或部分配置数据加载到指定的目标配置数据库(<ietf-datastores:running/>或<ietf-datastores:candidate/>)。设备对<edit-data>中的操作进行鉴权,鉴权通过后,执行相应的修改。


<edit-data>操作支持多种加载配置方式,例如:支持加载本地文件、远程文件,支持在线编辑。如果NETCONF服务器支持URL能力,可以使用标识本地配置文件的<url>参数替代<config>参数。


<edit-data>操作RPC报文中各参数含义如下:


<config>:一组由数据模型定义的层次化的配置数据。
<config>中可能包含可选的“operation”属性,用来给配置数据指定操作类型。如果未携带“operation”属性,则默认为merge操作。operation取值如下:


merge:在数据库中修改存在或不存在的目标数据,如果目标数据不存在则创建,如果目标数据存在则修改。这是默认操作。
create:当且仅当配置数据库中不存在待创建的配置数据时,才能成功添加到配置数据库。如果配置数据存在,则会返回<rpc-error>,其中包含一个<error-tag>值“data-exists”。
delete:删除配置数据库中指定的配置数据记录。如果数据存在,则删除该数据,如果数据不存在,则返回<rpc-error>,其中包含一个<error-tag>值“data-missing”。
remove:删除配置数据库中指定的配置数据记录。如果数据存在,则删除该数据,如果数据不存在,则返回成功。
replace:替换配置数据库中的配置数据记录。若数据存在,则替换数据库中的任何相关数据,如果数据库中不存在此类数据,则创建该数据。与替换整个目标配置的<copy-config>操作不同,只有<config>参数中实际存在的配置才会受到影响。
target:待编辑的配置数据库。基于场景选择对应的数据库:
立即生效模式,配置数据库为<ietf-datastores:running/>。
两阶段生效模式,配置数据库为< ietf-datastores:candidate/>,对该数据库操作后需执行<commit>操作提交配置,修改后的配置才能生效。
试运行,配置数据库设置为< ietf-datastores:candidate/>。
default-operation:为<edit-data>操作设置默认操作。
default-operation参数是可选的,取值如下:


merge:<config>参数中的配置数据与目标配置数据库中的配置合并。这是默认操作。
replace:<config>参数中的配置数据完全替换目标配置数据库中的配置。
none:除了执行operation属性指定的操作外,目标配置数据库中的配置数据不受<config>中其他配置数据影响。如果<config>参数中含有目标配置数据库中对应的数据层次上不存在的配置数据,则返回<rpc-error>,<error-tag>值为“data-missing”,这样可以避免在执行指定操作时,无意中创建了冗余的元素。比如执行删除指定子元素操作时,<config>中包含该子元素的父层次结构,而目标数据库中不包含其父元素的配置,此时如果default-operation参数取值为非none的其他操作类型,则在删除该子元素的同时也会在目的数据库中创建其父元素的配置,如果default-operation参数取值为none,则只会删除该子元素,而不会创建其父元素的配置。
示例:配置<ietf-datastores:running/>数据库中接口名为GigabitEthernet1/0/0的接口的description值修改为“huawei”。
RPC请求:
<?xml version="1.0" encoding="utf-8"?>
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="5">
  <edit-data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-nmda"
             xmlns:ds="urn:ietf:params:xml:ns:yang:ietf-datastores">
    <datastore>ds:running</datastore>
    <config>
      <ifm xmlns="urn:huawei:yang:huawei-ifm">
        <interfaces>
          <interface>
            <name>GigabitEthernet1/0/0</name>
            <description>huawei</description>
          </interface>
        </interfaces>
      </ifm>
    </config>
  </edit-data>
</rpc>
RPC应答:
<?xml version="1.0" encoding="utf-8"?>
<rpc-reply xmlns:nc-ext="urn:huawei:yang:huawei-ietf-netconf-ext"
           xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"
           message-id="5"
           nc-ext:flow-id="27">
<ok/>
</rpc-reply>
删除运行配置库中名为LoopBack1023接口下的配置示例。
RPC请求:
<?xml version="1.0" encoding="utf-8"?>
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="5">
  <edit-data xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-nmda"
             xmlns:ds="urn:ietf:params:xml:ns:yang:ietf-datastores">
    <datastore>ds:running</datastore>
    <config>
      <ifm xmlns="urn:huawei:yang:huawei-ifm">
        <interfaces>
          <interface xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" ncperation="delete">
            <name>LoopBack1023</name>
          </interface>
        </interfaces>
      </ifm>
    </config>
  </edit-data>
</rpc>
RPC应答:
<?xml version="1.0" encoding="utf-8"?>
<rpc-reply xmlns:nc-ext="urn:huawei:yang:huawei-ietf-netconf-ext"
           xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"
           message-id="5"
           nc-ext:flow-id="28">
<ok/>
</rpc-reply>
<copy-config>拷贝操作
<copy-config>是将<source/>中的数据保存至<target/>的操作。


当<source/>是<startup/>、<candidate/>或者<running/>时,会将<source/>中的信息保存至目标文件。
当<source/>是<url/>或者<config/>时,会用<source/>中的数据替换<target/>中的数据。


当前仅支持huawei-yang文件的数据保存操作。


<copy-config>操作操作与设备当前配置强相关,此操作只用于设备空配置时导入数据和设备配置数据导出,不用于修改设备当前配置。


<source/>和<target/>的对应关系如表4-26所示。


表4-26 <source/>和<target/>支持<copy-config>操作的对应关系
<source/>


<target/>


备注


<startup/>


<url/>


如果<source/>不存在,或者URL不可达,则会提示错误,报文无法下发成功。


<candidate/>


<url/>


如果URL不可达,则会提示错误,报文无法下发成功。


<running/>


<startup/>


如果<startup/>存在,则直接覆盖其内容。


<candidate/>


-


<url/>


如果URL不可达,则会提示错误,报文无法下发成功。


<url/>


<candidate/>


如果URL不可达,则会提示错误,报文无法下发成功。


<config/>


<candidate/>


-


<url/>支持的协议及格式如下:
FTP协议。格式:<url>ftp://123:123@10.1.1.1/abc.xml</url>
SFTP协议。格式:<url>sftp://123:123@10.1.1.1/abc.xml</url>
HTTP协议。格式:<url>http://10.1.1.1:8080/abc.xml</url>
HTTPS协议。格式:<url>https://10.1.1.1:8080/abc.xml</url>
File。格式:<url>file:///abc.xml</url>
HTTP域名。格式:<url>http://host:20180/abc.xml</url>
HTTPS域名。格式:<url>https://host:20180/abc.xml</url>
将<running/>数据库中的配置数据保存到本地eee.xml文件示例。
RPC请求


<rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<copy-config>
  <target>
     <url>file:///eee.xml</url>
  </target>
  <source>
    <running/>  
  </source>
</copy-config>
</rpc>
RPC应答


<rpc-reply message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <ok/>
</rpc-reply>
使用FTP协议将<candidate/>数据库中的配置数据保存到URL指定的远端路径示例。
RPC请求


<rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<copy-config>
  <target>
     <url>ftp://root:root@10.1.1.1/abc.xml</url>
  </target>
  <source>
    <candidate/>  
  </source>
</copy-config>
</rpc>
RPC应答


<rpc-reply message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <ok/>
</rpc-reply>
使用SFTP协议通过URL方式将远端配置数据拷贝至<candidate/>数据库示例。


RPC请求
<rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<copy-config>
  <target>
     <candidate/>
  </target>
  <source>
    <url>sftp://root:root@10.1.1.1/abc.xml</url>  
  </source>
</copy-config>
</rpc>
RPC应答
<rpc-reply message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <ok/>
</rpc-reply>
<delete-config>删除配置数据
用来删除<startup/>配置数据库,或者用来删除<candidate/>数据库中的配置数据。


如果<delete-config>操作成功, 服务器发送包含<ok>元素的RPC应答报文,否则服务器发送包含<rpc-error>元素RPC应答报文。


删除<startup/>数据库示例。


RPC请求
<rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <delete-config>
    <target>
      <startup/>
    </target>
  </delete-config>
</rpc>
RPC应答
<rpc-reply message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <ok/>
</rpc-reply>
删除<candidate/>数据库中的配置数据示例。
RPC请求
<rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <delete-config>
    <target>
      <nc-ext:candidate xmlns:nc-ext="urn:huawei:yang:huawei-ietf-netconf-ext"/>
    </target>
  </delete-config>
</rpc>
RPC应答
<rpc-reply message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <ok/>
</rpc-reply>
该操作是二阶段提交,需要下发commit报文将配置提交到<running/>数据库。




执行<delete-config>操作删除<candidate/>数据库中的配置数据后,如果直接下发commit操作,会删除设备的配置信息,导致NETCONF会话断开,如果用户需要重新连接设备,必须重新配置登录信息。


<lock>锁定配置数据库
用来锁定设备的配置数据库,独占配置数据库的修改权。这种锁定允许用户在配置时,不会受到如NETCONF manager、SNMP或者CLI脚本的配置影响,防止产生冲突。


如果配置数据库被合法用户锁定,则返回的reply报文<error-tag>中将显示lock-denied,并且<error-info>中将显示锁定者的<session-id>。


锁定<running/>配置数据库成功示例。


RPC请求


<rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <lock>
    <target>
      <running/>
    </target>
  </lock>
</rpc>
RPC应答


<rpc-reply message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <ok/>
</rpc-reply>
若支持NMDA数据集,target中的数据集格式有所不同,如下所示:


RPC请求


<rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <lock xmlns:ds="urn:ietf:params:xml:ns:yang:ietf-datastores">  
    <target>  
      <datastore xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-nmda">ds:running</datastore>
    </target>  
  </lock>  
</rpc>
RPC应答


<rpc-reply message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <ok/>
</rpc-reply>
锁定<running/>配置数据库失败示例。


RPC请求


<rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <lock>
    <target>
      <running/>
    </target>
  </lock>
</rpc>
RPC应答


<rpc-reply message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <rpc-error>
    <error-type>protocol</error-type>
    <error-tag>lock-denied</error-tag>
    <error-severity>error</error-severity>
    <error-app-tag>43</error-app-tag>
    <error-message>The configuration is locked by other user. [Session ID = 629] </error-message>
    <error-info>
      <session-id>629</session-id>
      <error-paras>
        <error-para>629</error-para>
      </error-paras>
    </error-info>
  </rpc-error>
</rpc-reply>
若支持NMDA数据集,target中的数据集格式有所不同,如下所示:


RPC请求


<rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <lock xmlns:ds="urn:ietf:params:xml:ns:yang:ietf-datastores">
    <target>
      <datastore xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-nmda">ds:running</datastore>
    </target>
  </lock>
</rpc>
RPC应答


<rpc-reply message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <rpc-error>
    <error-type>protocol</error-type>
    <error-tag>lock-denied</error-tag>
    <error-severity>error</error-severity>
    <error-app-tag>43</error-app-tag>
    <error-message>The configuration is locked by other user. [Session ID = 629] </error-message>
    <error-info>
      <session-id>629</session-id>
      <error-paras>
        <error-para>629</error-para>
      </error-paras>
    </error-info>
  </rpc-error>
</rpc-reply>
<unlock>取消锁定配置数据库
用来取消用户自己之前执行的<lock>操作,但不能取消其他用户的<lock>操作。


<unlock>操作成功,Server回复的<rpc-reply>元素中含有<ok>元素,否则在<rpc-reply>元素中含有<rpc-error>元素。


取消锁定<running/>数据库操作示例:


RPC请求


<rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <unlock>
    <target>
      <running/>
    </target>
  </unlock>
</rpc>
RPC应答


<rpc-reply message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <ok/>
</rpc-reply>
若支持NMDA数据集,target中的数据集格式有所不同,如下所示:


RPC请求


<rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <unlock xmlns:ds="urn:ietf:params:xml:ns:yang:ietf-datastores">
    <target>
      <datastore xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-nmda">ds:running</datastore>
    </target>
  </unlock>
</rpc>
RPC应答


<rpc-reply message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <ok/>
</rpc-reply>
<close-session>关闭NETCONF会话
用来正常关闭当前NETCONF会话。


当NETCONF Server收到<close-session>请求时,它将关闭当前的NETCONF会话。服务器将释放与该会话相关的所有锁和资源。在收到<close-session>请求后,NETCONF Server将忽略这个会话的所有请求消息。


关闭当前NETCONF会话示例:


RPC请求


<rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <close-session/>
</rpc>
RPC应答


<rpc-reply message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <ok/>
</rpc-reply>
<kill-session>强制关闭NETCONF会话
用来强制关闭另一个NETCONF会话,只有管理员用户才有权限执行<kill-session>操作。


当NETCONF Server收到<kill-session>请求时,它将中止该会话正在进行的所有操作,释放与该会话相关联的任何锁和资源,并关闭该会话。


如果NETCONF服务器在处理<commit>操作时收到<kill-session>请求,它必须将配置恢复到发出确认提交之前的状态。


强制关闭session-id为4的NETCONF会话示例:


RPC请求


<rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <kill-session>
    <session-id>4</session-id>
  </kill-session>
</rpc>
RPC应答


<rpc-reply message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  <ok/>
</rpc-reply>





发表于 2024-5-29 16:07:25 | 显示全部楼层
纨绔不饿死,儒冠多误身。
丈人试静听,贱子请具陈。
甫昔少年日,早充观国宾。
读书破万卷,下笔如有神。
沙发 2024-5-29 16:07:25 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-1-31 06:04 , Processed in 0.083619 second(s), 11 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表