NETCONF基本操作
本帖最后由 小乔 于 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-datastore:operational/>时,查询的是设备当前运行的配置数据和状态数据。
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" nc:operation="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" nc:operation="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" nc:operation="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. </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. </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>
纨绔不饿死,儒冠多误身。
丈人试静听,贱子请具陈。
甫昔少年日,早充观国宾。
读书破万卷,下笔如有神。
页:
[1]