Notifications d’événements NETCONF
Les clients NETCONF peuvent s’abonner aux notifications d’événements dans les sessions NETCONF pour recevoir des alertes en cas d’événements susceptibles d’avoir un impact sur les opérations ou les activités de gestion des équipements.
Vue d’ensemble des notifications d’événements NETCONF
Certains équipements exécutant Junos OS Evolved prennent en charge les notifications d’événements NETCONF, un service de notification d’événements asynchrone entre un serveur NETCONF et un client NETCONF. Une fois que vous avez activé le service de notification, le serveur NETCONF envoie des notifications d’événements, de manière asynchrone au fur et à mesure que les événements se produisent, à tous les clients NETCONF qui s’abonnent aux notifications. Les clients peuvent s’abonner aux notifications NETCONF pour recevoir des alertes en cas d’événements susceptibles d’avoir un impact sur les opérations ou les activités de gestion des appareils.
Le serveur NETCONF envoie des notifications pour les types d’événements suivants :
netconf-session-start: indique le démarrage d’une session NETCONF et identifie l’utilisateur qui l’a démarrée.netconf-session-end: indique le moment où une session NETCONF se termine et identifie l’utilisateur propriétaire de la session et la raison pour laquelle la session a été arrêtée.netconf-config-change: indique quand une session de gestion valide les modifications apportées à la configuration active et fournit un résumé des modifications.
Vous pouvez activer le service de notification d’événements NETCONF sur les appareils pris en charge. Reportez-vous à la section Comment activer les notifications d’événements NETCONF et s’y abonner pour obtenir des instructions. Vous pouvez éventuellement configurer la fonctionnalité d’entrelacement, qui permet aux clients NETCONF de s’abonner aux notifications et d’envoyer des RPC dans la même session NETCONF, comme décrit dans Fonctionnalité d’entrelacement.
Nous vous recommandons de configurer et de diffuser un seul ensemble de notifications, soit les notifications NETCONF, soit les données de télémétrie, à la fois. Si vous configurez un périphérique pour activer les notifications NETCONF, il diffuse toutes les notifications sur le canal NETCONF et ne diffuse pas les notifications de télémétrie via gRPC.
Une fois que vous avez activé les notifications d’événements NETCONF, le serveur NETCONF annonce la capacité et la notification interleave capacité dans l’échange de capacités.
<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>
Pour s’abonner au service de notification pour les événements survenant sur un périphérique spécifique, un client NETCONF envoie un <create-subscription> RPC au serveur NETCONF sur le périphérique et indique ce qui suit :
-
<stream>— Le flux d’événements qui vous intéresse.Un flux est un ensemble de notifications d’événement qui correspond à certains critères de transfert. Un abonnement est lié à un flux unique pendant toute la durée de validité de l’abonnement. Le
NETCONFflux est le seul flux par défaut et le seul pris en charge sur les équipements Junos. Le serveur NETCONF renvoie une erreur si la demande d’abonnement concerne un autre flux. Si vous omettez ce paramètre, l’appareil traite la demande d’abonnement comme une demande deNETCONFflux. -
<filter>: filtre de sous-arborescence qui sélectionne un sous-ensemble de tous les événements possibles.Si un client NETCONF spécifie un filtre, le serveur transfère uniquement les événements sélectionnés par le filtre. Si un client ne spécifie pas de filtre, le serveur transfère tous les événements. Junos OS Evolved prend uniquement en charge les filtres de niveau supérieur et ne prend pas en charge l’utilisation de filtres XPATH pour cet élément. Reportez-vous à la section Capacité de filtrage pour plus d’informations.
Une fois qu’un client NETCONF s’est abonné aux notifications d’événements, le serveur NETCONF envoie les notifications au fur et à mesure qu’elles se produisent. Les notifications se poursuivent jusqu’à la fin de la session NETCONF.
Par défaut, un client NETCONF reçoit toutes les notifications d’événements. Il n’existe aucun moyen de restreindre ou de limiter le contenu d’une notification en fonction des privilèges de l’utilisateur. Étant donné que certains événements, par exemple des netconf-config-change événements, peuvent contenir des informations sensibles, il est important de contrôler l’accès en lecture à ces informations.
Pour plus d’informations sur les notifications d’événements NETCONF, consultez les RFC suivantes :
Format de notification d’événement NETCONF
Les notifications d’événements NETCONF sont des documents XML bien formés. Lorsque le serveur NETCONF reçoit un événement interne, il le convertit en un codage XML approprié avec un élément de niveau <notification> supérieur et un <eventTime> élément enfant. Le contenu réel de la notification dépend de l’événement.
Une demande d’abonnement peut inclure des filtres pour des types de notifications spécifiques. Si la demande d’abonnement inclut des filtres, les filtres définis par l’utilisateur sont appliqués à chaque notification dans le flux d’événements, et le serveur NETCONF ne transmet que les événements correspondants au client.
L’exemple de notification d’événement suivant contient un netconf-config-change événement. La notification capture l’horodatage de l’événement, l’horodatage de validation, l’utilisateur qui a validé les modifications de configuration et un résumé de ces modifications.
<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>
Les notifications suivantes contiennent des exemples et netconf-session-end des netconf-session-start événements :
<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>
Capacité d’entrelacement
Par défaut, une fois qu’un client NETCONF s’est abonné aux notifications d’événements dans une session NETCONF, il ne peut pas envoyer de RPC dans la même session. La fonctionnalité d’entrelacement permet au client NETCONF et au serveur de continuer à échanger des RPC et des réponses RPC au sein de la même session NETCONF utilisée pour les notifications. La fonctionnalité d’entrelacement réduit le nombre total de sessions NETCONF, car vous n’avez pas besoin d’une session NETCONF dédiée pour les notifications. Pour utiliser la fonctionnalité d’entrelacement sur les appareils qui prennent en charge cette fonctionnalité, vous devez configurer l’instruction interleave au niveau de la [edit system services netconf notification] hiérarchie.
Un client NETCONF met fin à un abonnement en mettant fin soit à la session NETCONF, soit à la session de transport sous-jacente de la session NETCONF, par exemple, par une <close-session> opération ou <kill-session> . Si vous activez la fonctionnalité d’entrelacement, un client peut mettre fin à la session en exécutant une <close-session> opération à partir de la même session. Si vous n’activez pas la fonctionnalité d’entrelacement, le client peut mettre fin à la session, par exemple en exécutant l’opération <kill-session> à partir d’une autre session.
Capacité de filtrage
Lorsqu’un client NETCONF s’abonne aux notifications d’événements, il peut s’abonner à toutes les notifications d’événements du flux ou s’abonner à un sous-ensemble de notifications d’événements. Pour s’abonner à un sous-ensemble de notifications d’événements, le client inclut l’élément facultatif <filter> dans le <create-subscription> RPC. Si la demande d’abonnement inclut des filtres, ceux-ci sont appliqués à chaque notification dans le flux d’événements, et le serveur NETCONF ne transmet que les événements correspondants au client. Dans le cas contraire, le serveur transfère tous les événements.
Le <filter> format de paramètre de l’opération <create-subscription> est similaire au format de paramètre pour les filter autres opérations NETCONF. Il renferme un filtre de sous-arborescence qui sélectionne les notifications d’événements souhaitées. Dans le cas de l’opération <create-subscription> , toutefois, les équipements Junos ne prennent en charge que les filtres de sous-arborescence qui correspondent à l’élément de niveau supérieur de la notification jointe, par exemple, <netconf-config-change>. Le filtre s’applique aux notifications du flux et uniquement au contenu du <notification> wrapper.
Les équipements Junos ne prennent pas en charge l’utilisation de XPath pour filtrer les notifications.
Lorsque vous filtrez des notifications spécifiques, vous devez inclure l’espace de noms approprié dans la balise. Si vous ne spécifiez pas l’espace de noms, les notifications d’événements ne correspondront pas au filtre et le serveur NETCONF ne transmettra pas les notifications. Dans l’exemple suivant, la demande d’abonnement renvoie un sous-ensemble de toutes les notifications d’événements NETCONF. Le filtre sélectionne et transfère uniquement <netconf-config-change> les événements et <oc-ifl-event> les événements.
<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>
]]>]]>
Comment activer et s’abonner aux notifications d’événements NETCONF
Vous devez activer le service de notification d’événements NETCONF sur un périphérique avant qu’un client NETCONF puisse s’abonner aux notifications d’événements dans une session NETCONF. Une fois le service activé, un client NETCONF s’abonne pour recevoir des notifications d’événements en envoyant une demande d’abonnement au serveur NETCONF. La réponse du serveur NETCONF indique si la requête est réussie. Si la demande aboutit, le serveur envoie des notifications d’événements asynchrones au client NETCONF au fur et à mesure que les événements se produisent et jusqu’à ce que la session NETCONF soit terminée.
Cet exemple nécessite le matériel et les logiciels suivants :
-
Appareil exécutant Junos OS Evolved version 21.2R1 ou ultérieure qui prend en charge le service de notification d’événements NETCONF. Reportez-vous à la section Explorateur de fonctionnalités pour connaître les appareils pris en charge.
Pour activer les notifications d’événements NETCONF et vous y abonner, effectuez les tâches suivantes :
- Activer le service de notification d’événements NETCONF
- Abonnez-vous pour recevoir des notifications d’événements
- Résilier l’abonnement
Activer le service de notification d’événements NETCONF
Pour permettre à un client de s’abonner aux notifications d’événements dans une session NETCONF :
Abonnez-vous pour recevoir des notifications d’événements
Une fois que vous avez activé le service de notification d’événements NETCONF sur un périphérique, les clients NETCONF peuvent s’abonner pour recevoir des notifications d’événements dans une session NETCONF. Un client NETCONF peut inclure les paramètres facultatifs suivants dans la demande d’abonnement :
-
<stream>—Flux d’événements intéressants. La valeur par défaut et la seule acceptable estNETCONF. -
<filter>: filtre de sous-arborescence qui sélectionne un sous-ensemble de tous les événements possibles.
Pour vous abonner aux notifications d’événements au cours d’une session NETCONF :
Résilier l’abonnement
Un client NETCONF met fin à un abonnement pour recevoir des notifications d’événements en mettant fin soit à la session NETCONF, soit à la session de transport sous-jacente de la session NETCONF.
-
Si la fonctionnalité d’entrelacement est activée, exécutez l’opération
<close-session/>dans la session NETCONF.<rpc><close-session/></rpc>
-
Émettez l’opération
<kill-session>à partir d’une session NETCONF externe et spécifiez l’ID de session pour la fin de la session NETCONF (tel que défini dans l’élément<session-id>de l’échange initial<hello>).<rpc><kill-session><session-id>29862</session-id></kill-session></rpc>
-
Mettez fin à la session de transport sous-jacente de la session NETCONF.