NETCONF 事件通知
总结NETCONF 客户端可以在已启用 NETCONF 事件通知服务的受支持设备上订阅 NETCONF 会话中的事件通知。
NETCONF 事件通知概述
运行 Junos OS Evolved 的某些设备支持 NETCONF 事件通知,这是 NETCONF 服务器与 NETCONF 客户端之间的异步事件通知服务。启用通知服务后,NETCONF 服务器将异步地将事件通知发送到订阅通知服务的所有 NETCONF 客户端。客户可订阅 NETCONF 通知,以接收有关可能会影响设备操作或管理活动的事件的警报。
NETCONF 服务器会针对以下类型的事件发送通知:
netconf-session-start
—表示 NETCONF 会话何时开始的事件,可识别开始会话的用户。netconf-session-end
—表示 NETCONF 会话何时终止的事件,可识别该会话拥有的用户以及会话终止的原因。netconf-config-change
—表示管理会话何时提交活动配置更改的事件,并提供更改摘要。
您可以在支持的设备上启用 NETCONF 事件通知服务。请参阅 如何启用和订阅 NETCONF 事件通知以 接收指示。
启用 NETCONF 事件通知后,NETCONF 服务器在功能交换 notification
中通告功能。
<hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <capabilities> ... <capability>urn:ietf:params:netconf:capability:notification:1.0</capability> <capability>urn:ietf:params:xml:ns:netconf:notification:1.0</capability> <capability>urn:ietf:params:xml:ns:netmod:notification</capability> </capabilities> <session-id>29862</session-id> </hello> ]]>]]>
要订阅特定设备上事件的通知服务,NETCONF 客户端会向设备的 NETCONF 服务器发送 <create-subscription>
RPC,并指明以下信息:
-
<stream>
— 感兴趣的事件流。流是一组匹配某些转发标准的事件通知。订阅与单一流绑定,用于订阅的生存期。该
NETCONF
流是默认流,在运行 Junos OS 的设备上仅支持流。如果订阅请求用于任何其他流,NETCONF 服务器将返回一个错误。如果省略此参数,设备将订阅请求视为流NETCONF
请求。
NETCONF 客户端订阅事件通知后,NETCONF 服务器将发送发生的通知。这些通知一直持续到 NETCONF 会话终止。
默认情况下,NETCONF 客户端会接收所有事件通知。无法根据用户权限限制或限制通知的内容。由于某些事件(例如事件)可能包含 netconf-config-change
敏感信息,因此控制对信息的读取访问非常重要。
有关 NETCONF 事件通知的其他信息,请参阅以下 RFC:
NETCONF 事件通知格式
NETCONF 事件通知是格式良好的 XML 文档。当 NETCONF 服务器收到内部事件时,它将它转换为使用顶层元素和子元素的适当 XML <notification>
<eventTime>
编码。通知中包含的实际内容取决于事件。
以下示例事件通知包含 netconf-config-change
事件。通知会捕获事件时间戳、提交时间戳、提交配置更改的用户,以及这些更改的摘要。
<notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"> <eventTime>2021-04-15T11:39:41-07:00</eventTime> <netconf-config-change xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-notifications"> <change-time>2021-04-15T18:39:41Z</change-time> <changed-by> <username>admin</username> <session-id>29862</session-id> <source-host>198.51.100.25</source-host> </changed-by> <datastore>running</datastore> <edit> <target xmlns:junos-conf-root="http://yang.juniper.net/junos/conf/root" xmlns:junos-conf-interfaces="http://yang.juniper.net/junos/conf/interfaces">/junos-conf-root:configuration/junos-conf-interfaces:interfaces/junos-conf-interfaces:interface[junos-conf-interfaces:name='et-0/0/0']/junos-conf-interfaces:description</target> <operation>replace</operation> </edit> </netconf-config-change> </notification> ]]>]]>
以下通知包含示例 netconf-session-start
netconf-session-end
和事件:
<notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"> <eventTime>2021-04-15T11:28:51-07:00</eventTime> <netconf-session-start xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-notifications"> <username>admin</username> <session-id>29862</session-id> <source-host>198.51.100.25</source-host> </netconf-session-start> </notification> ]]>]]>
<notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"> <eventTime>2021-04-15T11:49:06-07:00</eventTime> <netconf-session-end xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-notifications"> <username>admin</username> <session-id>29862</session-id> <source-host>198.51.100.25</source-host> <termination-reason>closed</termination-reason> </netconf-session-end> </notification> ]]>]]>
如何启用和订阅 NETCONF 事件通知
您必须先在设备上启用 NETCONF 事件通知服务,NETCONF 客户端才能在 NETCONF 会话中订阅事件通知。启用服务后,NETCONF 客户端会订阅,通过向 NETCONF 服务器发送订阅请求来接收事件通知。NETCONF 服务器回复指示请求是否成功。如果请求成功,服务器在事件发生时向 NETCONF 客户端发送异步事件通知,直到 NETCONF 会话终止。
此示例需要以下硬件和软件:
-
在Junos OS 21.2R1 或更高版本中运行的设备,支持 NETCONF 事件通知服务。有关 受支持的设备, 请参阅 功能浏览器 。
要启用和订阅 NETCONF 事件通知,请执行以下任务:
启用 NETCONF 事件通知服务
要启用客户端订阅 NETCONF 会话中的事件通知:
订阅接收事件通知
在设备上启用 NETCONF 事件通知服务后,NETCONF 客户端可以在 NETCONF 会话中订阅接收事件通知。NETCONF 客户端在订阅请求中可包含以下可选参数:
-
<stream>
— 感兴趣的活动流。默认值和唯一可接受的值是NETCONF
。
要订阅 NETCONF 会话中的事件通知,
终止订阅
NETCONF 客户端终止订阅以接收事件通知,方式为终止 NETCONF 会话或 NETCONF 会话的底层传输会话。
-
从外部 NETCONF 会话发出操作,并端到端指定 NETCONF 会话的会话 ID(在初始交换的元素
<kill-session>
<session-id>
中<hello>
定义)。<rpc><kill-session><session-id>29862</session-id></kill-session></rpc>
-
终止 NETCONF 会话的底层传输会话。