8.4. 确认提交能力(Confirmed Commit Capability)

描述

:confirmed-commit:1.1能力表示服务器将支持<commit>操作的<cancel-commit>操作和<confirmed><confirm-timeout><persist><persist-id>参数。有关<commit>操作的更多细节,请参见第8.3节 - 候选配置能力(Candidate Configuration Capability)

如果在超时期限内没有发出确认提交,默认的<commit>操作必须被恢复(默认600秒= 10分钟)。确认提交是一个<commit>操作,没有<confirmed>参数。超时时间可以通过<confirm-timeout>参数进行调整。如果在定时器超时之前发出了一个后续确认的<commit>操作,定时器将重置为新值(默认为600秒)。确认提交和后续确认的<commit>操作都可以引入对配置的其他更改。

如果在确认的提交操作中没有给出<persist>元素,则任何后续提交和确认提交必须在发出确认提交的同一会话上发出。如果在确认的<commit>操作中给出了<persist>元素,那么可以在任何会话中提供后续提交和确认提交,并且它们必须包含<persist-id>元素,其值等于给定的<persist>元素的值。

如果服务器还通告:启动功能,则从运行到启动的<copy-config>也可以保存更改以启动。

如果发布确认提交的会话在确认超时到期之前因任何原因被终止,则服务器务必将配置恢复到确认提交发出之前的状态,除非确认提交还包含<persist>元素。

如果设备在确认超时到期之前因任何原因而重新启动,则服务器务必将配置恢复到确认提交发出之前的状态。

如果未发出确认提交,则设备将其配置恢复到发出确认提交之前的状态。要取消已确认的提交并恢复更改而不等待确认超时过期,客户端可以使用<cancel-commit>操作显式地将配置恢复到确认的提交发出之前的状态。

对于共享配置,除非使用了配置锁定功能,否则此功能可能会导致其他配置更改(例如,通过其他NETCONF会话)被无意中更改或删除(换句话说,在<edit-config>操作开始)。因此,强烈建议为了在共享配置数据存储中使用此功能,还应该使用配置锁定。

这个功能的版本1.0是在RFC4741 - NETCONF Configuration Protocol中定义的。 1.1版本在本文档中定义,并通过添加一个新操作<cancel-commit>和两个新的可选参数<persist><persist-id>来扩展版本1.0。为了与旧客户端向后兼容,符合此规范的服务器可以在版本1.1以外的版本中宣告对版本1.0的支持。

依赖

只有在:candidate能力也被支持的情况下,:confirmed-commit:1.1才具有相关性。

能力标识符

:confirmed-commit:1.1能力由以下能力字符串标识:

urn:ietf:params:netconf:capability:confirmed-commit:1.1

新操作

<cancel-commit>

描述:

取消正在进行的确认提交。 如果没有给出<persist-id>参数,那么<cancel-commit>操作必须在发出确认提交的同一个会话上发出。

参数:

  • persist-id:

取消持续确认的提交。 该值必须等于<commit>操作的<persist>参数中给出的值。 如果值不匹配,则操作失败,出现“无效值”错误。

正面回应:

如果设备能够满足请求,则发送包含<ok>元素的<rpc-reply>

负面回应:

如果由于任何原因无法完成请求,<rpc-error>元素将包含在<rpc-reply>中。

示例

  1. <rpc message-id="101"
  2. xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  3. <commit>
  4. <confirmed/>
  5. </commit>
  6. </rpc>
  7. <rpc-reply message-id="101"
  8. xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  9. <ok/>
  10. </rpc-reply>
  11. <rpc message-id="102"
  12. xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  13. <cancel-commit/>
  14. </rpc>
  15. <rpc-reply message-id="102"
  16. xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  17. <ok/>
  18. </rpc-reply>

对现有操作的修改

<commit>

:confirmed-commit:1.1功能允许4个额外的参数给<commit>操作。

参数:

  • confirmed

执行一个确认的<commit>操作。

  • confirm-timeout

确认提交的超时时间,以秒为单位。 如果未指定,则确认超时默认为600秒。

  • persist

使已确认的提交在会话终止之后生效,并在持续的已确认提交上设置令牌。

  • persist-id

用于从任何会话发出后续确认的提交或确认提交,以及来自前一个<commit>操作的令牌。

示例:

  1. <rpc message-id="101"
  2. xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  3. <commit>
  4. <confirmed/>
  5. <confirm-timeout>120</confirm-timeout>
  6. </commit>
  7. </rpc>
  8. <rpc-reply message-id="101"
  9. xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  10. <ok/>
  11. </rpc-reply>

示例:

  1. <!-- start a persistent confirmed-commit -->
  2. <rpc message-id="101"
  3. xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  4. <commit>
  5. <confirmed/>
  6. <persist>IQ,d4668</persist>
  7. </commit>
  8. </rpc>
  9. <rpc-reply message-id="101"
  10. xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  11. <ok/>
  12. </rpc-reply>
  13. <!-- confirm the persistent confirmed-commit,
  14. possibly from another session -->
  15. <rpc message-id="102"
  16. xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  17. <commit>
  18. <persist-id>IQ,d4668</persist-id>
  19. </commit>
  20. </rpc>
  21. <rpc-reply message-id="102"
  22. xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  23. <ok/>
  24. </rpc-reply>