Notificaciones de eventos de NETCONF
RESUMEN Los clientes de NETCONF pueden suscribirse a notificaciones de eventos en las sesiones de NETCONF para recibir alertas de eventos que puedan afectar las operaciones del dispositivo o las actividades de administración.
Descripción general de las notificaciones de eventos de NETCONF
Algunos dispositivos que ejecutan Junos OS Evolved admiten notificaciones de eventos NETCONF, un servicio de notificación de eventos asíncrono entre un servidor NETCONF y un cliente NETCONF. Después de habilitar el servicio de notificación, el servidor de NETCONF envía notificaciones de eventos, de forma asincrónica a medida que se producen los eventos, a todos los clientes de NETCONF que se suscriben a las notificaciones. Los clientes pueden suscribirse a las notificaciones de NETCONF para recibir alertas de eventos que puedan afectar las operaciones del dispositivo o las actividades de administración.
El servidor NETCONF envía notificaciones para los siguientes tipos de eventos:
netconf-session-start
: indica cuándo se inicia una sesión de NETCONF e identifica al usuario que inició la sesión.netconf-session-end
: indica cuándo finaliza una sesión de NETCONF e identifica al usuario propietario de la sesión y el motivo por el que se terminó la sesión.netconf-config-change
: indica cuándo una sesión de administración confirma cambios en la configuración activa y proporciona un resumen de los cambios.-
OpenConfig ON_CHANGE eventos
Puede habilitar el servicio de notificación de eventos NETCONF en dispositivos compatibles. Consulte Cómo habilitar y suscribirse a las notificaciones de eventos de NETCONF para obtener instrucciones. Opcionalmente, puede configurar la capacidad de intercalado, que permite a los clientes de NETCONF suscribirse a notificaciones y enviar RPC en la misma sesión de NETCONF, como se describe en Capacidad de intercalado.
Después de habilitar las notificaciones de eventos de NETCONF, el servidor de NETCONF anuncia la notification
capacidad y la interleave
capacidad en el intercambio de capacidades.
<nc:hello xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0"> <nc:capabilities> ... <nc:capability>urn:ietf:params:netconf:capability:notification:1.0</nc:capability> <nc:capability>urn:ietf:params:xml:ns:netconf:notification:1.0</nc:capability> <nc:capability>urn:ietf:params:netconf:capability:interleave:1.0</nc:capability> <nc:capability>urn:ietf:params:xml:ns:netmod:notification</nc:capability> ... </nc:capabilities> <nc:session-id>29862</nc:session-id> </nc:hello>
Para suscribirse al servicio de notificación de eventos en un dispositivo específico, un cliente NETCONF envía un <create-subscription>
RPC al servidor NETCONF en el dispositivo e indica lo siguiente:
-
<stream>
—El flujo de eventos que es de interés.Una secuencia es un conjunto de notificaciones de eventos que coincide con algunos criterios de reenvío. Una suscripción está vinculada a una sola secuencia durante la vigencia de la suscripción. La
NETCONF
transmisión es la predeterminada y solo se admite en dispositivos Junos. El servidor NETCONF devuelve un error si la solicitud de suscripción es para cualquier otra secuencia. Si omite este parámetro, el dispositivo trata la solicitud de suscripción como una solicitud para laNETCONF
secuencia. -
<filter>
: un filtro de subárbol que selecciona un subconjunto de todos los eventos posibles.Si un cliente NETCONF especifica un filtro, el servidor reenvía sólo los eventos seleccionados por el filtro. Si un cliente no especifica un filtro, el servidor reenvía todos los eventos. Junos OS Evolved solo admite filtros de nivel superior y no admite el uso de filtros XPATH para este elemento. Consulte Capacidad de filtrado para obtener más información.
Después de que un cliente NETCONF se suscribe a las notificaciones de eventos, el servidor de NETCONF envía las notificaciones a medida que se producen. Las notificaciones continúan hasta que finaliza la sesión de NETCONF.
Un cliente NETCONF recibe todas las notificaciones de eventos de forma predeterminada. No hay forma de restringir o limitar el contenido de una notificación en función de los privilegios del usuario. Dado que algunos eventos, por ejemplo, netconf-config-change
eventos, pueden contener información confidencial, es importante controlar el acceso de lectura a la información.
Para obtener información adicional acerca de las notificaciones de eventos de NETCONF, consulte las siguientes RFC:
Formato de notificación de eventos de NETCONF
Las notificaciones de eventos de NETCONF son documentos XML bien formados. Cuando el servidor NETCONF recibe un evento interno, lo convierte en una codificación XML adecuada con un elemento de nivel <notification>
superior y un <eventTime>
elemento secundario. El contenido real de la notificación depende del evento.
Una solicitud de suscripción puede incluir filtros para tipos específicos de notificaciones. Si la solicitud de suscripción incluye filtros, los filtros definidos por el usuario se aplican a cada notificación en la secuencia de eventos, y el servidor NETCONF reenvía sólo los eventos coincidentes al cliente.
La siguiente notificación de suceso de ejemplo contiene un netconf-config-change
evento. La notificación captura la marca de tiempo del evento, la marca de tiempo de confirmación, el usuario que confirmó los cambios de configuración y un resumen de dichos cambios.
<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>
Las siguientes notificaciones contienen ejemplos netconf-session-start
y netconf-session-end
eventos:
<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>
Capacidad de intercalado
De forma predeterminada, después de que un cliente NETCONF se suscribe a notificaciones de eventos en una sesión de NETCONF, el cliente tampoco puede enviar RPC en la misma sesión. La capacidad de intercalado permite al cliente y al servidor de NETCONF continuar intercambiando RPC y respuestas RPC dentro de la misma sesión de NETCONF que se utiliza para las notificaciones. La capacidad de intercalado reduce el número total de sesiones de NETCONF porque no necesita una sesión de NETCONF dedicada para las notificaciones. Para utilizar la capacidad de intercalado en dispositivos que admitan esta característica, debe configurar la interleave
instrucción en el nivel de [edit system services netconf notification]
jerarquía.
Un cliente de NETCONF finaliza una suscripción terminando la sesión de NETCONF o la sesión de transporte subyacente de la sesión de NETCONF, por ejemplo, con una <close-session>
operación o <kill-session>
. Si habilita la capacidad de intercalado, un cliente puede terminar la sesión ejecutando una <close-session>
operación desde la misma sesión. Si no habilita la capacidad de intercalado, el cliente puede terminar la sesión, por ejemplo, ejecutando la <kill-session>
operación desde otra sesión.
Capacidad de filtrado
Cuando un cliente de NETCONF se suscribe a notificaciones de eventos, el cliente puede suscribirse a todas las notificaciones de eventos en la secuencia o el cliente puede suscribirse a un subconjunto de notificaciones de eventos. Para suscribirse a un subconjunto de notificaciones de eventos, el cliente incluye el elemento opcional <filter>
en el <create-subscription>
RPC. Si la solicitud de suscripción incluye filtros, los filtros se aplican a cada notificación en la secuencia de eventos y el servidor NETCONF reenvía solo los eventos coincidentes al cliente. De lo contrario, el servidor reenvía todos los eventos.
El <filter>
formato de parámetro para la <create-subscription>
operación es similar al formato de filter
parámetro para otras operaciones de NETCONF. Encierra un filtro de subárbol que selecciona las notificaciones de eventos deseadas. Sin embargo, en el caso de la operación, los <create-subscription>
dispositivos Junos solo admiten filtros de subárbol que coincidan con el elemento de nivel superior de la notificación adjunta, por ejemplo, <netconf-config-change>
. El filtro se aplica a las notificaciones de la secuencia y solo contra el contenido del <notification>
contenedor.
Los dispositivos Junos no admiten el uso de XPath para filtrar las notificaciones.
Cuando filtre para notificaciones específicas, debe incluir el espacio de nombres adecuado en la etiqueta. Si no especifica el espacio de nombres, las notificaciones de eventos no coincidirán con el filtro y el servidor NETCONF no reenviará las notificaciones. En el ejemplo siguiente, la solicitud de suscripción devuelve un subconjunto de todas las notificaciones de eventos de NETCONF. El filtro selecciona y reenvía solo <netconf-config-change>
eventos y <oc-ifl-event>
eventos.
<nc:rpc xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0"> <create-subscription xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"> <filter type="subtree"> <netconf-config-change xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-notifications"></netconf-config-change> <oc-ifl-event xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"></oc-ifl-event> </filter> </create-subscription> </nc:rpc> ]]>]]>
Cómo habilitar y suscribirse a las notificaciones de eventos de NETCONF
Debe habilitar el servicio de notificación de eventos de NETCONF en un dispositivo antes de que un cliente de NETCONF pueda suscribirse a notificaciones de eventos en una sesión de NETCONF. Una vez habilitado el servicio, un cliente de NETCONF se suscribe para recibir notificaciones de eventos enviando una solicitud de suscripción al servidor de NETCONF. La respuesta del servidor NETCONF indica si la solicitud se realiza correctamente. Si la solicitud se realiza correctamente, el servidor envía notificaciones de eventos asincrónicas al cliente NETCONF a medida que se producen los eventos y hasta que finaliza la sesión de NETCONF.
Este ejemplo requiere el siguiente hardware y software:
-
Dispositivo con Junos OS Evolved versión 21.2R1 o posterior compatible con el servicio de notificación de eventos NETCONF. Consulte Explorador de características para conocer los dispositivos compatibles.
Para habilitar y suscribirse a las notificaciones de eventos de NETCONF, realice las siguientes tareas:
- Habilitar el servicio de notificación de eventos de NETCONF
- Suscríbase para recibir notificaciones de eventos
- Cancelar la suscripción
Habilitar el servicio de notificación de eventos de NETCONF
Para permitir que un cliente se suscriba a notificaciones de eventos en una sesión de NETCONF:
Suscríbase para recibir notificaciones de eventos
Después de habilitar el servicio de notificación de eventos de NETCONF en un dispositivo, los clientes de NETCONF pueden suscribirse para recibir notificaciones de eventos en una sesión de NETCONF. Un cliente NETCONF puede incluir los siguientes parámetros opcionales en la solicitud de suscripción:
-
<stream>
—Flujo de eventos que es de interés. El valor predeterminado y único aceptable esNETCONF
. -
<filter>
: filtro de subárbol que selecciona un subconjunto de todos los eventos posibles.
Para suscribirse a notificaciones de eventos en una sesión de NETCONF:
Cancelar la suscripción
Un cliente de NETCONF termina una suscripción para recibir notificaciones de eventos al finalizar la sesión de NETCONF o la sesión de transporte subyacente de la sesión de NETCONF.
-
Si la capacidad de intercalado está habilitada, emita la
<close-session/>
operación en la sesión de NETCONF.<rpc><close-session/></rpc>
-
Emita la
<kill-session>
operación desde una sesión NETCONF externa y especifique el ID de sesión para que finalice la sesión de NETCONF (como se define en el<session-id>
elemento del intercambio inicial<hello>
).<rpc><kill-session><session-id>29862</session-id></kill-session></rpc>
-
Finalice la sesión de transporte subyacente de la sesión de NETCONF.