Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

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 通知またはテレメトリ データのいずれか 1 つの通知セットのみを一度に設定してストリーミングすることをお勧めします。NETCONF 通知を有効にするようにデバイスを設定すると、デバイスはすべての通知を NETCONF チャネル経由でストリーミングし、gRPC 経由でテレメトリ通知をストリーミングしません。

NETCONF イベント通知を有効にすると、NETCONF サーバーは機能交換で notification 機能と interleave 機能をアドバタイズします。

特定のデバイスのイベントの通知サービスに登録するために、NETCONFクライアントは、デバイス上のNETCONFサーバーに <create-subscription> RPCを送信し、以下を示します。

  • <stream>- 関心のあるイベントのストリーム。

    ストリームは、いくつかの転送条件に一致する一連のイベント通知です。サブスクリプションは、サブスクリプションの有効期間中、1 つのストリームにバインドされます。 NETCONF ストリームはデフォルトで、Junosデバイス上で唯一サポートされているストリームです。NETCONF サーバは、サブスクリプション要求が他のストリームに対するものである場合、エラーを返します。このパラメーターを省略すると、デバイスはサブスクリプション要求を NETCONF ストリームの要求として扱います。

  • <filter>- 考えられるすべてのイベントのサブセットを選択するサブツリー フィルター。

    NETCONF クライアントがフィルタを指定した場合、サーバはフィルタで選択されたイベントのみを転送します。クライアントがフィルターを指定しない場合、サーバーはすべてのイベントを転送します。Junos OS Evolvedは、トップレベルフィルターのみをサポートしており、この要素に対するXPATHフィルターの使用はサポートしていません。詳細については、 フィルタリング機能 を参照してください。

NETCONFクライアントがイベント通知にサブスクライブすると、NETCONFサーバーは発生時に通知を送信します。通知は、NETCONF セッションが終了するまで続きます。

手記:

NETCONF クライアントは、デフォルトですべてのイベント通知を受信します。ユーザー権限に基づいて通知の内容を制限または制限する方法はありません。一部のイベント ( netconf-config-change イベントなど) には機密情報が含まれる場合があるため、情報への読み取りアクセスを制御することが重要です。

NETCONF イベント通知の詳細については、次の RFC を参照してください。

  • RFC 5277NETCONFイベント通知

  • RFC 6470ネットワーク設定プロトコル(NETCONF)ベース通知

NETCONF イベント通知の形式

NETCONF イベント通知は、整形式の XML ドキュメントです。NETCONF サーバーは、内部イベントを受信すると、最上位の <notification> 要素と <eventTime> 子要素を持つ適切な XML エンコーディングに変換します。通知に含まれる実際のコンテンツは、イベントによって異なります。

サブスクリプション要求には、特定の種類の通知のフィルターを含めることができます。サブスクリプション要求にフィルターが含まれている場合、ユーザー定義フィルターがイベントストリーム内の各通知に適用され、NETCONFサーバーは一致するイベントのみをクライアントに転送します。

次のサンプル イベント通知には、 netconf-config-change イベントが含まれています。通知は、イベントのタイムスタンプ、コミットのタイムスタンプ、設定変更をコミットしたユーザー、およびそれらの変更の概要をキャプチャします。

次の通知には、サンプルの netconf-session-start イベントと netconf-session-end イベントが含まれています。

インターリーブ機能

デフォルトでは、NETCONF クライアントが NETCONF セッションでイベント通知をサブスクライブした後、クライアントは同じセッションで RPC を送信することもできません。インターリーブ機能により、NETCONF クライアントとサーバーは、通知に使用される同じ NETCONF セッション内で RPC と RPC 応答の交換を継続できます。インターリーブ機能では、通知専用のNETCONFセッションが不要なため、NETCONFセッションの総数が削減されます。この機能をサポートするデバイスでインターリーブ機能を使用するには、[edit system services netconf notification]階層レベルで interleave ステートメントを設定する必要があります。

NETCONFクライアントは、例えば <close-session><kill-session> 操作で、NETCONFセッションまたはNETCONFセッションの基盤となるトランスポートセッションのいずれかを終了させることで、サブスクリプションを終了します。インターリーブ機能を有効にすると、クライアントは同じセッション内から <close-session> 操作を実行してセッションを終了できます。インターリーブ機能を有効にしない場合、クライアントは、例えば別のセッションから <kill-session> 操作を実行するなどして、セッションを終了できます。

フィルタリング機能

NETCONF クライアントがイベント通知を購読すると、クライアントはストリーム内のすべてのイベント通知を購読するか、イベント通知のサブセットを購読できます。イベント通知のサブセットをサブスクライブするために、クライアントは <create-subscription> RPC に省略可能な <filter> 要素を含めます。サブスクリプション要求にフィルターが含まれている場合、フィルターはイベントストリーム内の各通知に適用され、NETCONFサーバーは一致するイベントのみをクライアントに転送します。それ以外の場合、サーバーはすべてのイベントを転送します。

<create-subscription> 操作の <filter> パラメータ形式は、他の NETCONF 操作の filter パラメータ形式と同様です。これは、目的のイベント通知を選択するサブツリーフィルターを囲みます。ただし、<create-subscription> 操作の場合、Junos デバイスは、同封の通知の最上位要素(<netconf-config-change> など)に一致するサブツリー フィルターのみをサポートします。フィルターはストリーム内の通知に適用され、<notification>ラッパーの内容に対してのみ適用されます。

手記:

Junos デバイスは、XPath を使用した通知のフィルタリングをサポートしていません。

特定の通知をフィルタリングする場合は、タグに適切な名前空間を含める必要があります。名前空間を指定しない場合、イベント通知はフィルターに一致せず、NETCONFサーバーは通知を転送しません。次の例では、サブスクリプションリクエストがすべてのNETCONFイベント通知のサブセットを返します。フィルターは、 <netconf-config-change> イベントと <oc-ifl-event> イベントのみを選択して転送します。

NETCONF イベント通知を有効にして購読する方法

NETCONFクライアントがNETCONFセッションでイベント通知を購読できるようになる前に、デバイスでNETCONFイベント通知サービスを有効にする必要があります。サービスが有効になると、NETCONFクライアントは、NETCONFサーバーにサブスクリプション要求を送信することで、イベント通知を受信するようにサブスクライブします。NETCONF サーバーの応答は、要求が成功したかどうかを示します。リクエストが成功した場合、サーバーはイベントの発生時からNETCONFセッションが終了するまで、非同期イベント通知をNETCONFクライアントに送信します。

この例では、以下のハードウェアとソフトウェアが必要です。

  • NETCONF イベント通知サービスをサポートする Junos OS Evolved リリース 21.2R1 以降を実行するデバイス。サポートされているデバイスについては、 機能エクスプローラー を参照してください。

NETCONF イベント通知を有効にしてサブスクライブするには、以下のタスクを実行します。

NETCONFイベント通知サービスを有効にする

クライアントがNETCONFセッションでイベント通知を購読できるようにするには:

  1. notification ステートメントを設定して、NETCONF イベント通知サービスを有効にします。
  2. (オプション) interleave オプションを設定して、NETCONFクライアントが、通知をサブスクライブするNETCONFセッションでRPCを実行できるようにします。
  3. デバイスがNETCONF RFC 4741に準拠していることを確認するために、 rfc-compliant ステートメントを設定します。
  4. (オプション)問題をトラブルシューティングするためのNETCONFトレースオプションを設定します。

    例えば:

  5. デバイス上で実行されているアプリケーションの既定のポートで通知サービスを有効にします。

    allow-clientsステートメントを必要とするリリースでは、通知を購読できるクライアント(ホスト名またはIPアドレス)も指定する必要があります。

    例えば:

  6. 設定をコミットします。

イベント通知の受信をサブスクライブする

デバイスでNETCONFイベント通知サービスを有効にすると、NETCONFクライアントはNETCONFセッションでイベント通知を受信するようにサブスクライブできます。NETCONF クライアントは、サブスクリプション要求に以下のオプション パラメーターを含めることができます。

  • <stream>- 関心のあるイベントのストリーム。既定値で唯一の許容値は NETCONF です。

  • <filter>- 考えられるすべてのイベントのサブセットを選択するサブツリー フィルター。

NETCONF セッションでイベント通知を購読するには:

  1. NETCONF セッションを開始します。
  2. 通知機能が機能交換でアドバタイズされていることを確認して、デバイスでNETCONFイベント通知サービスが有効になっていることを確認します。
  3. create-subscription要求を発行し、必要に応じてNETCONFストリームを指定します。
    • すべての通知をサブスクライブするには、 <filter> パラメーターを省略します。

    • 通知のサブセットをサブスクライブするには、 <filter type="subtree"> 要素を含め、目的の通知に対して 1 つ以上のサブツリー フィルターを定義します。Junos デバイスは、同封の通知の最上位要素に一致するサブツリー フィルターのみをサポートします。特定の通知のタグに適切な名前空間を含める必要があります。

      例えば:

  4. サブスクリプション要求が成功したことを確認します。

    NETCONF サーバーは、要求が成功した場合は <ok/> を返し、サブスクリプション要求を完了できない場合は <rpc-error> 要素を返します。

    サブスクリプション要求が成功すると、NETCONFサーバーは接続を介してイベント通知を非同期に送信し始めます。

  5. インターリーブ機能が有効になっている場合、NETCONF クライアントは同じセッション内で RPC を送信し続けることができます。

サブスクリプションを終了する

NETCONFクライアントは、NETCONFセッションまたはNETCONFセッションの基盤となるトランスポートセッションのいずれかを終了することで、イベント通知を受信するためのサブスクリプションを終了します。

NETCONF セッションとサブスクリプションを終了するには、以下のいずれかのアクションを実行します。
  • インターリーブ機能が有効になっている場合は、NETCONF セッションで <close-session/> 操作を発行します。

  • 外部NETCONFセッションから<kill-session>操作を発行し、終了するNETCONFセッションのセッションIDを指定します(初期<hello>交換の<session-id>要素で定義)。

  • NETCONF セッションの基盤となるトランスポート セッションを終了します。