NETCONF-Ereignisbenachrichtigungen
NETCONF-Clients können Ereignisbenachrichtigungen in NETCONF-Sitzungen abonnieren, um Warnungen für Ereignisse zu erhalten, die sich auf den Gerätebetrieb oder Verwaltungsaktivitäten auswirken können.
Übersicht über NETCONF-Ereignisbenachrichtigungen
Bestimmte Geräte, auf denen Junos OS Evolved ausgeführt wird, unterstützen NETCONF-Ereignisbenachrichtigungen, einen asynchronen Ereignisbenachrichtigungsdienst zwischen einem NETCONF-Server und einem NETCONF-Client. Nachdem Sie den Benachrichtigungsdienst aktiviert haben, sendet der NETCONF-Server asynchron Ereignisbenachrichtigungen an alle NETCONF-Clients, die die Benachrichtigungen abonnieren. Clients können NETCONF-Benachrichtigungen abonnieren, um Warnungen zu Ereignissen zu erhalten, die sich auf den Gerätebetrieb oder Verwaltungsaktivitäten auswirken können.
Der NETCONF-Server sendet Benachrichtigungen für die folgenden Arten von Ereignissen:
netconf-session-start
– Gibt an, wann eine NETCONF-Sitzung gestartet wird, und identifiziert den Benutzer, der die Sitzung gestartet hat.netconf-session-end
– Gibt an, wann eine NETCONF-Sitzung endet, und identifiziert den Benutzer, dem die Sitzung gehörte, sowie den Grund für die Beendigung der Sitzung.netconf-config-change
Gibt an, wann eine Verwaltungssitzung Änderungen an die aktive Konfiguration übernimmt, und bietet eine Zusammenfassung der Änderungen.
Sie können den NETCONF-Ereignisbenachrichtigungsdienst auf unterstützten Geräten aktivieren. Anweisungen finden Sie unter Aktivieren und Abonnieren von NETCONF-Ereignisbenachrichtigungen . Sie können optional die Interleave-Funktion konfigurieren, die es NETCONF-Clients ermöglicht, Benachrichtigungen zu abonnieren und RPCs in derselben NETCONF-Sitzung zu senden, wie unter Interleave-Funktion beschrieben.
Es wird empfohlen, jeweils nur einen Satz von Benachrichtigungen zu konfigurieren und zu streamen, entweder NETCONF-Benachrichtigungen oder Telemetriedaten. Wenn Sie ein Gerät so konfigurieren, dass NETCONF-Benachrichtigungen aktiviert werden, streamt das Gerät alle Benachrichtigungen über den NETCONF-Kanal und keine Telemetriebenachrichtigungen über gRPC.
Nachdem Sie NETCONF-Ereignisbenachrichtigungen aktiviert haben, kündigt der NETCONF-Server die notification
Funktion und die interleave
Funktion im Funktionsaustausch an.
<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>
Um den Benachrichtigungsdienst für Ereignisse auf einem bestimmten Gerät zu abonnieren, sendet ein NETCONF-Client einen <create-subscription>
RPC an den NETCONF-Server auf dem Gerät und gibt Folgendes an:
-
<stream>
– Der Strom der Ereignisse, die von Interesse sind.Ein Stream ist eine Reihe von Ereignisbenachrichtigungen, die bestimmten Weiterleitungskriterien entsprechen. Ein Abonnement ist für die Lebensdauer des Abonnements an einen einzelnen Datenstrom gebunden. Der
NETCONF
Stream ist der standardmäßige und einzige Stream, der auf Junos-Geräten unterstützt wird. Der NETCONF-Server gibt einen Fehler zurück, wenn die Abonnementanforderung für einen anderen Datenstrom gilt. Wenn Sie diesen Parameter weglassen, behandelt das Gerät die Abonnementanforderung als Anforderung für denNETCONF
Stream. -
<filter>
: Ein Teilstrukturfilter, der eine Teilmenge aller möglichen Ereignisse auswählt.Wenn ein NETCONF-Client einen Filter angibt, leitet der Server nur die Ereignisse weiter, die durch den Filter ausgewählt wurden. Wenn ein Client keinen Filter angibt, leitet der Server alle Ereignisse weiter. Junos OS Evolved unterstützt nur Filter der obersten Ebene und nicht die Verwendung von XPATH-Filtern für dieses Element. Weitere Informationen finden Sie unter Filterfunktion .
Nachdem ein NETCONF-Client Ereignisbenachrichtigungen abonniert hat, sendet der NETCONF-Server die Benachrichtigungen, sobald sie auftreten. Die Benachrichtigungen werden so lange fortgesetzt, bis die NETCONF-Sitzung beendet wird.
Ein NETCONF-Client empfängt standardmäßig alle Ereignisbenachrichtigungen. Es gibt keine Möglichkeit, den Inhalt einer Benachrichtigung basierend auf Benutzerberechtigungen einzuschränken oder zu begrenzen. Da einige Ereignisse, z. B netconf-config-change
. Ereignisse, vertrauliche Informationen enthalten können, ist es wichtig, den Lesezugriff auf die Informationen zu steuern.
Weitere Informationen zu NETCONF-Ereignisbenachrichtigungen finden Sie in den folgenden RFCs:
NETCONF-Ereignisbenachrichtigungsformat
NETCONF-Ereignisbenachrichtigungen sind wohlgeformte XML-Dokumente. Wenn der NETCONF-Server ein internes Ereignis empfängt, konvertiert er es in eine geeignete XML-Codierung mit einem Element der obersten Ebene <notification>
und einem <eventTime>
untergeordneten Element. Der tatsächliche Inhalt der Benachrichtigung hängt vom Ereignis ab.
Eine Abonnementanforderung kann Filter für bestimmte Arten von Benachrichtigungen enthalten. Wenn die Abonnementanforderung Filter enthält, werden die benutzerdefinierten Filter auf jede Benachrichtigung im Ereignisdatenstrom angewendet, und der NETCONF-Server leitet nur übereinstimmende Ereignisse an den Client weiter.
Die folgende Beispielereignisbenachrichtigung enthält ein netconf-config-change
Ereignis. Die Benachrichtigung erfasst den Zeitstempel des Ereignisses, den Commit-Zeitstempel, den Benutzer, der die Konfigurationsänderungen ausgeführt hat, sowie eine Zusammenfassung dieser Änderungen.
<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>
Die folgenden Benachrichtigungen enthalten Beispiele netconf-session-start
und netconf-session-end
Ereignisse:
<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>
Interleave-Fähigkeit
Nachdem ein NETCONF-Client Ereignisbenachrichtigungen in einer NETCONF-Sitzung abonniert hat, kann der Client standardmäßig keine RPCs in derselben Sitzung senden. Die Interleave-Funktion ermöglicht es dem NETCONF-Client und -Server, RPCs und RPC-Antworten innerhalb derselben NETCONF-Sitzung auszutauschen, die für Benachrichtigungen verwendet wird. Die Interleave-Funktion reduziert die Gesamtzahl der NETCONF-Sitzungen, da Sie keine dedizierte NETCONF-Sitzung für Benachrichtigungen benötigen. Um die Interleave-Funktion auf Geräten zu verwenden, die diese Funktion unterstützen, müssen Sie die interleave
Anweisung auf Hierarchieebene [edit system services netconf notification]
konfigurieren.
Ein NETCONF-Client beendet ein Abonnement, indem er entweder die NETCONF-Sitzung oder die zugrunde liegende Transportsitzung der NETCONF-Sitzung beendet, z. B. mit einem <close-session>
OR-Vorgang <kill-session>
. Wenn Sie die Interleave-Funktion aktivieren, kann ein Client die Sitzung beenden, indem er einen <close-session>
Vorgang innerhalb derselben Sitzung ausführt. Wenn Sie die Interleave-Funktion nicht aktivieren, kann der Client die Sitzung beenden, indem er z. B. den <kill-session>
Vorgang von einer anderen Sitzung aus ausführt.
Filterfunktion
Wenn ein NETCONF-Client Ereignisbenachrichtigungen abonniert, kann der Client alle Ereignisbenachrichtigungen im Stream abonnieren, oder der Client kann eine Teilmenge von Ereignisbenachrichtigungen abonnieren. Um eine Teilmenge von Ereignisbenachrichtigungen zu abonnieren, schließt der Client das optionale <filter>
Element in den <create-subscription>
RPC ein. Wenn die Abonnementanforderung Filter enthält, werden die Filter auf jede Benachrichtigung im Ereignisdatenstrom angewendet, und der NETCONF-Server leitet nur übereinstimmende Ereignisse an den Client weiter. Andernfalls leitet der Server alle Ereignisse weiter.
Das <filter>
Parameterformat für den <create-subscription>
Vorgang ähnelt dem filter
Parameterformat für andere NETCONF-Operationen. Es umschließt einen Teilbaumfilter, der die gewünschten Ereignisbenachrichtigungen auswählt. Im Fall des <create-subscription>
Vorgangs unterstützen Junos-Geräte jedoch nur Teilstrukturfilter, die mit dem Element der obersten Ebene der eingeschlossenen Benachrichtigung übereinstimmen, z. B <netconf-config-change>
. . . Der Filter wird auf die Benachrichtigungen im Stream und nur auf den Inhalt des <notification>
Wrappers angewendet.
Junos-Geräte unterstützen nicht die Verwendung von XPath zum Filtern der Benachrichtigungen.
Wenn Sie nach bestimmten Benachrichtigungen filtern, müssen Sie den entsprechenden Namespace in das Tag aufnehmen. Wenn Sie den Namespace nicht angeben, stimmen die Ereignisbenachrichtigungen nicht mit dem Filter überein, und der NETCONF-Server leitet die Benachrichtigungen nicht weiter. Im folgenden Beispiel gibt die Abonnementanforderung eine Teilmenge aller NETCONF-Ereignisbenachrichtigungen zurück. Der Filter wählt nur Ereignisse und Ereignisse aus und <oc-ifl-event>
leitet sie <netconf-config-change>
weiter.
<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> ]]>]]>
Aktivieren und Abonnieren von NETCONF-Ereignisbenachrichtigungen
Sie müssen den NETCONF-Ereignisbenachrichtigungsdienst auf einem Gerät aktivieren, bevor ein NETCONF-Client Ereignisbenachrichtigungen in einer NETCONF-Sitzung abonnieren kann. Nachdem der Dienst aktiviert wurde, abonniert ein NETCONF-Client den Empfang von Ereignisbenachrichtigungen, indem er eine Abonnementanforderung an den NETCONF-Server sendet. Die Antwort des NETCONF-Servers gibt an, ob die Anforderung erfolgreich ist. Wenn die Anforderung erfolgreich ist, sendet der Server asynchrone Ereignisbenachrichtigungen an den NETCONF-Client, wenn die Ereignisse auftreten und bis die NETCONF-Sitzung beendet wird.
Für dieses Beispiel ist die folgende Hardware und Software erforderlich:
-
Gerät mit Junos OS Evolved Version 21.2R1 oder höher, das den NETCONF-Ereignisbenachrichtigungsservice unterstützt. Informationen zu unterstützten Geräten finden Sie im Funktions-Explorer .
Führen Sie die folgenden Aufgaben aus, um NETCONF-Ereignisbenachrichtigungen zu aktivieren und zu abonnieren:
- Aktivieren des NETCONF-Ereignisbenachrichtigungsdiensts
- Abonnieren Sie den Empfang von Ereignisbenachrichtigungen
- Beenden des Abonnements
Aktivieren des NETCONF-Ereignisbenachrichtigungsdiensts
So aktivieren Sie einem Client das Abonnieren von Ereignisbenachrichtigungen in einer NETCONF-Sitzung:
Abonnieren Sie den Empfang von Ereignisbenachrichtigungen
Nachdem Sie den NETCONF-Ereignisbenachrichtigungsdienst auf einem Gerät aktiviert haben, können NETCONF-Clients den Empfang von Ereignisbenachrichtigungen in einer NETCONF-Sitzung abonnieren. Ein NETCONF-Client kann die folgenden optionalen Parameter in die Abonnementanforderung aufnehmen:
-
<stream>
: Stream von Ereignissen, die von Interesse sind. Der standardmäßige und einzig akzeptable Wert istNETCONF
. -
<filter>
: Teilstrukturfilter, der eine Teilmenge aller möglichen Ereignisse auswählt.
So abonnieren Sie Ereignisbenachrichtigungen in einer NETCONF-Sitzung:
Beenden des Abonnements
Ein NETCONF-Client beendet ein Abonnement für den Empfang von Ereignisbenachrichtigungen, indem er entweder die NETCONF-Sitzung oder die zugrunde liegende Transportsitzung der NETCONF-Sitzung beendet.
-
Wenn die Interleave-Funktion aktiviert ist, geben Sie den
<close-session/>
Vorgang in der NETCONF-Sitzung ab.<rpc><close-session/></rpc>
-
Geben Sie den
<kill-session>
Vorgang von einer externen NETCONF-Sitzung aus aus, und geben Sie die Sitzungs-ID für die zu beendende NETCONF-Sitzung an (wie im<session-id>
Element des ersten<hello>
Austauschs definiert).<rpc><kill-session><session-id>29862</session-id></kill-session></rpc>
-
Beenden Sie die der NETCONF-Sitzung zugrunde liegende Transportsitzung.