Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

NETCONF 活动通知

NETCONF 客户端可以订阅 NETCONF 会话中的事件通知,以接收可能会影响设备作或管理活动的事件警报。

NETCONF 活动通知概述

运行 Junos OS 演化版的某些设备支持 NETCONF 事件通知,这是 NETCONF 服务器和 NETCONF 客户端之间的异步事件通知服务。启用通知服务后,NETCONF 服务器会在事件发生时异步向所有订阅通知的 NETCONF 客户端发送事件通知。客户端可以订阅 NETCONF 通知,以接收可能影响设备作或管理活动的事件警报。

NETCONF 服务器发送以下类型事件的通知:

  • netconf-session-start- 指示 NETCONF 会话何时启动并标识启动会话的用户。
  • netconf-session-end—指示 NETCONF 会话结束的时间,并标识拥有该会话的用户以及会话终止的原因。
  • netconf-config-change—指示管理会话何时对活动配置提交更改,并提供更改摘要。

您可以在支持的设备上启用 NETCONF 事件通知服务。有关说明,请参阅 如何启用和订阅 NETCONF 事件通知 。您可以选择性地配置交错功能,使 NETCONF 客户端能够在同一 NETCONF 会话中订阅通知并发送 RPC,如 交错功能中所述。

注意:

我们建议您一次只能配置和流式传输一组通知,即 NETCONF 通知或遥测数据。如果将设备配置为启用 NETCONF 通知,则设备会通过 NETCONF 通道流式传输所有通知,而不会通过 gRPC 流式传输遥测通知。

启用 NETCONF 事件通知后,NETCONF 服务器会在 notification 功能交换中播发功能和 interleave 功能。

要为特定设备上的事件订阅通知服务,NETCONF 客户端会向设备上的 NETCONF 服务器发送 <create-subscription> RPC,并指示以下内容:

  • <stream>- 感兴趣的事件流。

    流是一组与某些转发条件匹配的事件通知。订阅在订阅的生存期内绑定到单个流。该 NETCONF 流是默认流,仅在 Junos 设备上受支持。如果订阅请求是针对任何其他流的,则 NETCONF 服务器将返回错误。省略该参数后,设备会将订阅请求视为流请求 NETCONF

  • <filter>- 选择所有可能事件的子集的子树过滤器。

    如果 NETCONF 客户端指定了过滤器,则服务器只会转发过滤器选择的事件。如果客户端未指定筛选器,则服务器将转发所有事件。Junos OS 演化版仅支持顶级筛选器,不支持对此元素使用 XPATH 筛选器。有关详细信息,请参阅 过滤功能

NETCONF 客户端订阅事件通知后,NETCONF 服务器会在发生通知时发送通知。这些通知将一直持续到 NETCONF 会话终止。

注意:

默认情况下,NETCONF 客户端接收所有事件通知。无法基于用户权限限制或限制通知的内容。由于某些事件(例如事件 netconf-config-change )可能包含敏感信息,因此控制对信息的读取访问非常重要。

有关 NETCONF 事件通知的更多信息,请参阅以下 RFC:

NETCONF 事件通知格式

NETCONF 事件通知是格式正确的 XML 文档。当 NETCONF 服务器收到内部事件时,它会将其转换为具有顶级 <notification> 元素和 <eventTime> 子元素的相应 XML 编码。通知中包含的实际内容取决于事件。

订阅请求可以包括针对特定类型通知的筛选器。如果订阅请求包含筛选器,则用户定义的筛选器将应用于事件流中的每个通知,并且 NETCONF 服务器仅将匹配的事件转发到客户端。

以下示例事件通知包含一个 netconf-config-change 事件。通知会捕获事件时间戳、提交时间戳、提交配置更改的用户以及这些更改的摘要。

以下通知包含示例 netconf-session-startnetconf-session-end 事件:

交错功能

默认情况下,NETCONF 客户端在 NETCONF 会话中订阅事件通知后,无法同时在同一会话中发送 RPC。交错功能使 NETCONF 客户端和服务器能够在用于通知的同一 NETCONF 会话中继续交换 RPC 和 RPC 回复。交错功能可减少 NETCONF 会话的总数,因为通知不需要专用的 NETCONF 会话。要在支持此功能的设备上使用交错功能,必须在层次结构级别配置 interleave 语句 [edit system services netconf notification]

NETCONF 客户端通过终止 NETCONF 会话或 NETCONF 会话的底层传输会话(例如,使用 <close-session><kill-session> 作)来结束订阅。如果启用交错功能,则客户端可以通过从同一会话中执行 <close-session> 作来终止会话。如果未启用交错功能,客户端可以终止会话,例如,通过从另一个会话执行 <kill-session> 作。

过滤能力

当 NETCONF 客户端订阅事件通知时,客户端可以订阅流中的所有事件通知,也可以订阅事件通知的子集。若要订阅事件通知的子集,客户端在 RPC 中<create-subscription>包含可选<filter>元素。如果订阅请求包含筛选器,则筛选器将应用于事件流中的每个通知,并且 NETCONF 服务器仅将匹配的事件转发到客户端。否则,服务器将转发所有事件。

该作的<filter>参数格式与其他 NETCONF作的filter参数格式<create-subscription>类似。它包含一个子树过滤器,用于选择所需的事件通知。但是,在执行该作的情况下<create-subscription>,Junos 设备仅支持与所附通知的顶级元素匹配的子树过滤器,例如 <netconf-config-change>。筛选器应用于流中的通知,并且仅针对包装器的内容<notification>

注意:

Junos 设备不支持使用 XPath 过滤通知。

过滤特定通知时,必须在标记中包含适当的命名空间。如果未指定命名空间,则事件通知将与过滤器不匹配,并且 NETCONF 服务器不会转发通知。在以下示例中,订阅请求返回所有 NETCONF 事件通知的子集。筛选器仅 <netconf-config-change> 选择和转发事件和 <oc-ifl-event> 事件。

如何启用和订阅 NETCONF 事件通知

必须先在设备上启用 NETCONF 事件通知服务,然后 NETCONF 客户端才能订阅 NETCONF 会话中的事件通知。启用服务后,NETCONF 客户端通过向 NETCONF 服务器发送订阅请求来订阅以接收事件通知。NETCONF 服务器回复指示请求是否成功。如果请求成功,服务器会在事件发生时向 NETCONF 客户端发送异步事件通知,直到 NETCONF 会话终止。

此示例需要以下硬件和软件:

  • 运行 Junos OS 演化版 21.2R1 或更高版本且支持 NETCONF 事件通知服务的设备。请参阅 功能浏览器 了解支持的设备。

要启用和订阅 NETCONF 事件通知,请执行以下作:

启用 NETCONF 事件通知服务

要使客户端能够订阅 NETCONF 会话中的事件通知,请执行以下作:

  1. 通过配置 notification 语句启用 NETCONF 事件通知服务。
  2. (可选)配置 interleave 选项,使 NETCONF 客户端能够在同时订阅通知的 NETCONF 会话中执行 RPC。
  3. 配置 rfc-compliant 语句以确保设备符合 NETCONF RFC 4741。
  4. (可选)配置 NETCONF 跟踪选项,以便对任何问题进行故障排除。

    例如:

  5. 在设备上运行的应用程序的默认端口上启用通知服务。

    在需要语 allow-clients 句的版本中,还必须指定允许订阅通知的客户端(主机名或 IP 地址)。

    例如:

  6. 提交配置。

订阅以接收活动通知

在设备上启用 NETCONF 事件通知服务后,NETCONF 客户端可以订阅以接收 NETCONF 会话中的事件通知。NETCONF 客户端可以在订阅请求中包含以下可选参数:

  • <stream>- 感兴趣的事件流。默认且唯一可接受的值为 NETCONF

  • <filter>- 子树过滤器,用于选择所有可能事件的子集。

要订阅 NETCONF 会话中的事件通知:

  1. 启动 NETCONF 会话。
  2. 通过确认通知功能已在功能交换中播发,验证设备上是否启用了 NETCONF 事件通知服务。
  3. 发出 create-subscription 请求,并可选择指定 NETCONF 流。
    • 若要订阅所有通知,请省略该 <filter> 参数。

    • 若要订阅通知子集,请包含该 <filter type="subtree"> 元素,并为感兴趣的通知定义一个或多个子树筛选器。Junos 设备仅支持与所附通知的顶级元素匹配的子树过滤器。您必须在特定通知的标记中包含相应的命名空间。

      例如:

  4. 验证订阅请求是否成功。

    如果请求成功,则 NETCONF 服务器将返回 <ok/> ;如果无法完成订阅请求,则返回一个 <rpc-error> 元素。

    如果订阅请求成功,NETCONF 服务器将开始通过连接异步发送事件通知。

  5. 如果启用了交错功能,则 NETCONF 客户端可以在同一会话中继续发送 RPC。

终止订阅

NETCONF 客户端通过终止 NETCONF 会话或 NETCONF 会话的底层传输会话来终止接收事件通知的订阅。

要终止 NETCONF 会话和订阅,请执行以下作之一:
  • 如果启用了交错功能,请在 NETCONF 会话中发出 <close-session/> 作。

  • 从外部 NETCONF 会话发出<kill-session>作,并指定要结束的 NETCONF 会话的会话 ID(如初始<hello>交换元素中<session-id>所定义)。

  • 终止 NETCONF 会话的基础传输会话。