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 세션에서 알림을 구독하고 RPC를 전송할 수 있는 인터 리브 기능을 선택적으로 구성할 수 있습니다.
한 번에 하나의 알림 세트(NETCONF 알림 또는 텔레메트리 데이터)만 구성하고 스트리밍하는 것이 좋습니다. NETCONF 알림을 활성화하도록 디바이스를 구성하는 경우, 디바이스는 NETCONF 채널을 통해 모든 알림을 스트리밍하고 gRPC를 통해 텔레메트리 알림을 스트리밍하지 않습니다.
NETCONF 이벤트 알림을 활성화한 후, NETCONF 서버는 기능 교환에서 기능과 interleave
기능을 광고 notification
합니다.
<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>
특정 디바이스의 이벤트에 대한 알림 서비스를 구독하기 위해 NETCONF 클라이언트는 RPC를 <create-subscription>
디바이스의 NETCONF 서버로 전송하고 다음을 표시합니다.
-
<stream>
- 관심 있는 이벤트의 흐름입니다.스트림은 일부 전달 기준과 일치하는 이벤트 알림 집합입니다. 구독은 구독 수명 동안 단일 스트림에 바인딩됩니다. 스트림은
NETCONF
Junos 디바이스에서 지원되는 기본 스트림입니다. NETCONF 서버는 구독 요청이 다른 스트림에 대한 것인 경우 오류를 반환합니다. 이 매개 변수를 생략하면 디바이스는 구독 요청을 스트림에 대한NETCONF
요청으로 처리합니다. -
<filter>
- 가능한 모든 이벤트의 서브셋을 선택하는 서브트리 필터.NETCONF 클라이언트가 필터를 지정하면, 서버는 필터에 의해 선택된 이벤트만 전달합니다. 클라이언트가 필터를 지정하지 않으면 서버는 모든 이벤트를 전달합니다. Junos OS Evolved는 최상위 필터만 지원하며 이 요소에 대한 XPATH 필터 사용은 지원하지 않습니다. 자세한 내용은 필터링 기능을 참조하십시오.
NETCONF 클라이언트가 이벤트 알림을 구독하면 NETCONF 서버는 알림이 발생할 때 이를 전송합니다. 알림은 NETCONF 세션이 종료될 때까지 계속됩니다.
NETCONF 클라이언트는 기본적으로 모든 이벤트 알림을 수신합니다. 사용자 권한에 따라 알림의 내용을 제한하거나 제한할 수 있는 방법은 없습니다. 이벤트와 netconf-config-change
같은 일부 이벤트에는 중요한 정보가 포함될 수 있으므로 해당 정보에 대한 읽기 액세스를 제어하는 것이 중요합니다.
NETCONF 이벤트 알림에 대한 추가 정보는 다음 RFC를 참조하십시오.
NETCONF 이벤트 알림 형식
NETCONF 이벤트 알림은 올바른 형식의 XML 문서입니다. NETCONF 서버는 내부 이벤트를 수신하면 최상위 <notification>
요소와 <eventTime>
하위 요소가 있는 적절한 XML 인코딩으로 변환합니다. 알림에 포함된 실제 콘텐츠는 이벤트에 따라 다릅니다.
구독 요청에는 특정 유형의 알림에 대한 필터가 포함될 수 있습니다. 구독 요청에 필터가 포함된 경우, 사용자 정의 필터가 이벤트 스트림의 각 알림에 적용되고 NETCONF 서버는 일치하는 이벤트만 클라이언트에 전달합니다.
다음 샘플 이벤트 알림에는 이벤트가 포함되어 있습니다 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 세션에서 이벤트 알림을 구독한 후에는 클라이언트도 동일한 세션에서 RPC를 전송할 수 없습니다. 인터리브 기능을 통해 NETCONF 클라이언트 및 서버는 알림에 사용되는 동일한 NETCONF 세션 내에서 RPC와 RPC 응답을 계속 교환할 수 있습니다. 인터리브 기능은 알림을 위한 전용 NETCONF 세션이 필요하지 않기 때문에 전체 NETCONF 세션 수를 줄입니다. 이 기능을 지원하는 디바이스에서 인터리빙 기능을 사용하려면 계층 수준에서 문을 [edit system services netconf notification]
구성해야 interleave
합니다.
NETCONF 클라이언트는 NETCONF 세션 또는 NETCONF 세션의 기본 전송 세션(예: 또는 <kill-session>
작업)을 종료하여 구독을 <close-session>
종료합니다. 인터리브 기능을 활성화하면 클라이언트가 동일한 세션 내에서 작업을 실행하여 <close-session>
세션을 종료할 수 있습니다. 인터리브 기능을 활성화하지 않으면 클라이언트가 다른 세션에서 작업을 실행하는 <kill-session>
등의 방법으로 세션을 종료할 수 있습니다.
필터링 기능
NETCONF 클라이언트가 이벤트 알림을 구독하면 클라이언트가 스트림의 모든 이벤트 알림을 구독하거나 클라이언트가 이벤트 알림의 하위 집합을 구독할 수 있습니다. 이벤트 알림의 하위 집합을 구독하기 위해 클라이언트는 RPC에 <create-subscription>
선택적 <filter>
요소를 포함합니다. 구독 요청에 필터가 포함된 경우, 필터는 이벤트 스트림의 각 알림에 적용되고 NETCONF 서버는 일치하는 이벤트만 클라이언트에 전달합니다. 그렇지 않으면 서버는 모든 이벤트를 전달합니다.
<filter>
작업의 파라미터 형식은 <create-subscription>
다른 NETCONF 작업의 파라미터 형식과 filter
유사합니다. 원하는 이벤트 알림을 선택하는 하위 트리 필터를 포함합니다. 그러나 작업의 경우<create-subscription>
, Junos 디바이스는 동봉된 알림의 최상위 요소와 일치하는 하위 트리 필터만 지원합니다(예<netconf-config-change>
: ). 필터는 스트림의 알림에 적용되며 래퍼의 <notification>
콘텐츠에 대해서만 적용됩니다.
Junos 디바이스는 XPath를 사용하여 알림을 필터링하는 것을 지원하지 않습니다.
특정 알림을 필터링할 때는 태그에 적절한 네임스페이스를 포함해야 합니다. 네임스페이스를 지정하지 않으면 이벤트 알림이 필터와 일치하지 않아 NETCONF 서버가 알림을 전달하지 않습니다. 다음 예에서 구독 요청은 모든 NETCONF 이벤트 알림의 하위 집합을 반환합니다. 필터는 이벤트와 <oc-ifl-event>
이벤트만 <netconf-config-change>
선택하여 전달합니다.
<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> ]]>]]>
NETCONF 이벤트 알림 활성화 및 구독 방법
NETCONF 클라이언트가 NETCONF 세션에서 이벤트 알림을 구독하려면 먼저 디바이스에서 NETCONF 이벤트 알림 서비스를 활성화해야 합니다. 서비스가 활성화된 후, NETCONF 클라이언트는 NETCONF 서버에 구독 요청을 전송하여 이벤트 알림을 수신하도록 구독합니다. NETCONF 서버 응답은 요청이 성공했는지 여부를 나타냅니다. 요청이 성공하면 서버는 이벤트가 발생할 때와 NETCONF 세션이 종료될 때까지 NETCONF 클라이언트에 비동기 이벤트 알림을 보냅니다.
이 예에는 다음과 같은 하드웨어 및 소프트웨어가 필요합니다.
-
NETCONF 이벤트 알림 서비스를 지원하는 Junos OS Evolved 릴리스 21.2R1 이상을 실행하는 디바이스. 지원되는 장치에 대한 기능 탐색기 를 참조하십시오.
NETCONF 이벤트 알림을 활성화하고 구독하려면 다음 작업을 수행하십시오.
NETCONF 이벤트 알림 서비스 활성화
클라이언트가 NETCONF 세션에서 이벤트 알림을 구독할 수 있도록 하는 방법:
Subscribe to Receive Event Notifications(이벤트 알림 수신을 구독합니다)
디바이스에서 NETCONF 이벤트 알림 서비스를 활성화한 후, NETCONF 클라이언트는 NETCONF 세션에서 이벤트 알림을 수신하도록 구독할 수 있습니다. NETCONF 클라이언트는 구독 요청에 다음과 같은 선택적 매개 변수를 포함할 수 있습니다.
-
<stream>
—관심 있는 사건의 흐름. 기본값이자 유일하게 허용되는 값은NETCONF
입니다. -
<filter>
- 가능한 모든 이벤트의 서브셋을 선택하는 서브트리 필터입니다.
NETCONF 세션에서 이벤트 알림 구독하기:
서브스크립션 해지
NETCONF 클라이언트는 NETCONF 세션 또는 NETCONF 세션의 기본 전송 세션을 종료하여 이벤트 알림을 수신하기 위한 구독을 종료합니다.
-
인터리브 기능이 활성화된 경우 NETCONF 세션에서 작업을 실행합니다
<close-session/>
.<rpc><close-session/></rpc>
-
<kill-session>
외부 NETCONF 세션에서 작업을 실행하고 종료할 NETCONF 세션의 세션 ID를 지정합니다(초기<hello>
교환 요소에 정의<session-id>
됨).<rpc><kill-session><session-id>29862</session-id></kill-session></rpc>
-
NETCONF 세션의 기본 전송 세션을 종료합니다.