消息类型
NETCONF定义了三种消息类型,hello、rpc和rpc-reply、notification。
RPC消息分类
1、<get>
查询的是设备当前运行的状态数据。所以,不需要使用source参数指定配置数据库。如果server支持能力:urn:ietf:params:netconf:capability:xpath:1.0则还可以使用filter进行条件查询。
<rpc message-id="101"xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get-config>
<source>
<running/>
</source>
<filter type="subtree">
<top xmlns="http://example.com/schema/1.2/config">
<users/>
</top>
</filter>
</get-config>
</rpc>
2、<get-config>
查询的是设备当前配置数据,即只能从配置数据库中获取数据。需要使用source参数指定配置数据库。如果server支持能力:urn:ietf:params:netconf:capability:xpath:1.0则还可以使用filter进行条件查询。
<rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get-config>
<source>
<running/>
</source>
<filter type="subtree">
<ifm xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0">
<interfaces>
<interface/>
</interfaces>
</ifm>
</filter>
</get-config>
3、<edit-config>
用来把全部或部分配置数据加载到指定的目标配置数据库。
NETCONF服务器支持URL能力,可以使用标识本地配置文件的参数替代参数。一组由数据模型定义的层次化的配置数据中可能包含可选的“operation”属性,用来给配置数据指定操作类型。如果未携带“operation”属性,则默认为merge操作。
<edit-config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<target>
<running/>
</target>
<default-operation>merge</default-operation>
<error-option>rollback-on-error</error-option>
<config>
</config>
</edit-config>
4、<copy-config>
源配置数据库替换目标配置数据库。如果目标配置数据库没有创建,则直接创建配置数据库,否则用源配置数据库直接覆盖目标配置数据库。
<rpc message-id="101"
xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<copy-config>
<target>
<running/>
</target>
<source>
<candidate/>
</source>
</copy-config>
</rpc>
5、<delete-config>
用来删除一个配置数据库,但不能删除配置数据库。
<rpc message-id="101"
xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<delete-config>
<target>
<startup/>
</target>
</delete-config>
</rpc>
6、<lock>
用来锁定设备的配置数据库,独占配置数据库的修改权。
<rpc message-id="101"
xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<lock>
<target>
<running/>
</target>
</lock>
</rpc>
7、<unlock>
取消锁定数据库操作,只能取消自己的锁定操作。
<rpc message-id="101"
xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<unlock>
<target>
<running/>
</target>
</unlock>
</rpc>
8、<close-session>
用来正常关闭当前NETCONF会话。当NETCONF Server收到请求时,它将关闭当前的NETCONF会话。服务器将释放与该会话相关的所有锁和资源。在收到请求后,NETCONF Server将忽略这个会话的所有请求消息。
9、<kill-session>
用来强制关闭另一个NETCONF会话,只有管理员用户才有权限执行操作。当NETCONF Server收到请求时,它将中止该会话正在进行的所有操作,释放与该会话相关联的任何锁和资源,并关闭该会话。如果NETCONF服务器在处理操作时收到请求,它必须将配置恢复到发出确认提交之前的状态。