NETCONF报文格式
NETCONF(Network Configuration Protocol)是基于可扩展标记语言XML(Extensible Markup Language)的网络配置和管理协议,使用简单的基于RPC(Remote Procedure Call)机制实现客户端和服务器之间通信。
NETCONF报文由三部分组成:
-
Message:消息层,为RPC报文提供一个简单的,独立的传输帧机制。客户端把RPC请求封装在一个<rpc>元素内,服务器把请求处理的结果封装在<rpc-reply>元素内,回应给客户。
-
Operations:操作层,定义了一组基本NETCONF协议操作,被带有基于XML编码参数的RPC方法调用。
-
Content:管理对象层,定义了配置数据模型,目前主流的数据模型有Schema模型,YANG模型等。
rpc报文示例
<?xml version="1.0" encoding="UTF-8"?>
<rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<edit-config>
<target>
<running/>
</target>
<default-operation>merge</default-operation>
<error-option>rollback-on-error</error-option>
<config xmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0">
<isiscomm xmlns="http://www.huawei.com/netconf/vrp/huawei-isiscomm">
<isSites>
<isSite xc:operation="merge">
<instanceId>100</instanceId>
<description>ISIS</description>
<vpnName>_public_</vpnName>
</isSite>
</isSites>
</isiscomm>
</config>
</edit-config>
</rpc>
]]>]]>
| 字段 | 描述 |
|---|---|
| ? | 表示一条指令的开始或结束。 |
| xml | 表示此文件是XML文件。 |
| version | NETCONF协议版本号。"1.0"表示使用XML1.0标准版本。 |
| encoding | 字符集编码格式,当前仅支持UTF-8编码。 |
| <rpc> | <rpc>元素用来封装Client发送给NETCONF Server端的请求。 |
| message-id | 信息码。由发起RPC请求的Client指定,Server收到RPC请求报文后会保存message-id属性,在生成<rpc-reply>消息时使用。 |
| xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" | NETCONF XML的名字空间。其中,base表示支持基本的操作类型: base1.0:支持<running/>配置数据库,定义的基本操作包括:<get-config>、<get>、<edit-config>、<copy-config>、<delete-config>、<lock>、<unlock>、<close-session>、<kill-session>,支持<error-option>参数为stop-on-error,continue-on-error,rollback-on-error。base1.1:base1.0的升级,功能变更情况如下:<edit-config>的operation属性新增remove操作。新增知名error-tagmalformed-message,废弃知名error-tagpartial-operation。新增用于子树过滤的命名空间通配符机制。新增chunk分包机制,以解决EOM分包机制的安全问题。 用户如果需要使用base1.1中的操作,需要客户端支持base1.1协议,在能力集交互时通告此能力。 |
| <edit-config> | 操作类型。 |
| <target> | 待操作的目标文件。 |
| <default-operation> | 配置默认操作类型。 |
| <error-option> | 用来设置<edit-config>操作出现错误后,后续操作的处理方式,包含以下三种类型:stop-on-error:出现错误后停止操作。continue-on-error:出现错误后记录错误信息并继续执行,如果发生任何错误,NETCONF Server给Client返回一个操作失败的<rpc-reply>消息。rollback-on-error:出现错误后停止操作,并将配置回退到执行<edit-config>操作之前的状态。只有设备支持rollback-on-error能力才支持此操作。 |
| <config> | 一组由数据模型定义的层次化的配置数据。这些配置数据必须放在指定的名字空间中,必须遵循由其能力集定义的数据模型的约束条件。 |
| ]]>]]> | XML报文结束符。 说明: Server和Client进行XML报文交互时,XML格式报文最后必须添加结束符“]]>]]>”,否则设备无法识别,不会对Client发送的XML报文响应。设备发送的XML报文将自动添加“]]>]]>”。在后面的举例中,为方便识别XML格式,均未添加此结束符,实际操作中,请自行添加。 如果Hello报文交互base1.1,则YANG模型后面交互的RPC报文支持Chunk格式。Chunk格式报文支持分片,结束符为“\n##\n”。 |
rpc-reply报文示例
图5-198 成功响应
<rpc-reply message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<ok />
</rpc-reply>
| 字段 | 描述 |
|---|---|
| <rpc-reply> | <rpc-reply>元素用来封装<rpc>请求的应答消息,NETCONF Server给每个<rpc>操作回应一个使用<rpc-reply>元素封装的应答消息。 |
| <ok> | 在处理<rpc>请求过程中,如果没有发生任何错误,则在<rpc-reply>元素内封装一个<ok>元素返回给Client。 |
图5-199 失败响应
<?xml version="1.0" encoding="utf-8"?>
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="3">
<rpc-error>
<error-type>application</error-type>
<error-tag>bad-element</error-tag>
<error-severity>error</error-severity>
<error-app-tag>43</error-app-tag>
<error-path xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0"
xmlns:acl="http://www.huawei.com/netconf/vrp/huawei-acl">/nc:rpc/nc:edit-config/nc:config/acl:acl/acl:aclGroups/acl:aclGroup[acl:aclNumOrName="2999"]/acl:aclRuleBas4s/acl:aclRuleBas4[acl:aclRuleName="rule_-2"]/acl:vrfAny</error-path>
<error-message xml:lang="en">vrfAny has invalid value a.</error-message>
<error-info>
<bad-element>vrfAny</bad-element>
</error-info>
</rpc-error>
</rpc-reply>
| 字段 | 描述 |
|---|---|
| <rpc-error> | 在处理<rpc>请求过程中,如果发生任何错误,则在<rpc-reply>元素内只封装<rpc-error>元素返回给Client。 |
| <error-type> | 定义错误发生在协议的层级,有四种取值:transport传输层,RPC远程进程调用,protocol协议层,application应用层。 |
| <error-tag> | 标识错误信息内容。 |
| <error-severity> | 标识错误的严重级别,取值有error和warning。 |
| <error-app-tag> | 标识特定的错误情形。对于一个特殊的错误情形,如果没有合适的<error-tag>与之关联,则此元素不会出现。 |
| <error-path>: | 标识出错的位置及具体文件名称。 |
| <error-message> | 描述出错内容。 |
| <error-info> | 含有协议或者数据模型特定的错误内容。对于一个特殊的错误情形,如果没有提供合适的<error info>,这个元素就不会出现。 |
| <bad-element> | 错误参数列表。 |
参考标准
| 标准 | 描述 |
|---|---|
| Network Configuration Protocol (NETCONF) | |
No comments to display
No comments to display