SlideShare a Scribd company logo
1 of 22
Download to read offline
RFC5277(NETCONF Event Notifications)ベースの勉強資料です。
下線、ハイライトは個人的に重要そうなところ。斜体、#はメモ。
原文のMUST/REQUIRED/SHALL/SHOULD/MAY/OPTIONAL等の​RFC2119​用語は原文のまま残しています。
 MUST、REQUIRED、SHALL:絶対的な要求事項
 MUST NOT:絶対的な禁止事項
 SHOULD、RECOMMENDED:慎重に重要性を判断するべき要求事項
 SHOULD NOT、NOT RECOMMENDED:慎重に重要性を判断するべき禁止事項
 MAY、OPTIONAL:オプション。
間違っていたらコメントをお願いします。
元ネタ(RFC5277)
https://tools.ietf.org/html/rfc5277
Errata
https://www.rfc-editor.org/errata_search.php?rfc=5277
NETCONF Event Notifications
Abstract
 本ドキュメントはNetwork Configuration protocol(NETCONF)の非同期メッセージnotificationサービスを提供す
るメカニズムを定義する。これは、基本的なNETCONF上に構築されたオプション機能である。
Table of Contents
Abstract 1
Table of Contents 1
1. Introduction 2
1.1. Definition of Terms 3
1.2. Motivation 3
1.3. Event Notifications in NETCONF 4
2. Notification-Related Operations 4
2.1. Subscribing to Receive Event Notifications 4
2.1.1. <create-subscription> 4
2.2. Sending Event Notifications 5
2.1.1. <notification> 5
2.3. Terminating the Subscription 6
3. Supporting Concepts 6
3.1. Capabilities Exchange 6
3.1.1. Capability Identifier 6
3.1.2. Capability Example 6
3.2. Event Streams 6
3.2.1. Event Stream Definition 7
3.2.2. Event Stream Content Format 7
3.2.3. Default Event Stream 7
3.2.4. Event Stream Sources 8
3.2.5. Event Stream Discovery 8
1
3.2.5.1. Name Retrieval Using <get> Operation 8
3.2.5.2. Event Stream Subscription 9
3.2.5.2.1. Filtering Event Stream Contents 9
3.3. Notification Replay 9
3.3.1. Overview 9
3.3.2. Creating a Subscription with Replay 10
3.4. Notification Management Schema 10
3.5. Subscriptions Data 13
3.6. Filter Mechanics 13
3.6.1. Filtering 13
3.7. Message Flow 13
4. XML Schema for Event Notifications 15
5. Filtering Examples 17
5.1. Subtree Filtering 19
5.2. XPATH Filters 20
6. Interleave Capability 21
6.1. Description 21
6.2. Dependencies 21
6.3. Capability Identifier 21
6.4. New Operations 21
6.5. Modifications to Existing Operations 21
7. Security Considerations 21
8. IANA Considerations 22
1. Introduction
 NETCONFは4つのlayerに分割できる。
 本ドキュメントはNETCONFへ非同期メッセージnotificationサービスを提供するメカニズムを定義する。これは、基本的な
NETCONF上に構築されたオプション機能である。
2
1.1. Definition of Terms
 "MUST" "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED",
"MAY", and "OPTIONAL"は​https://tools.ietf.org/html/rfc2119​の通り解釈される。
用語 意味
Element  XML Element。
Subscription  NETCONFセッションでイベントnotificationを受信する
ための手続き(method)。セッションのライフタイムに拘束
される。
Operation  NETCONFプロトコルのoperation。
Event、イベント  Configの変更、障害、ステータスの変化、閾値の調査、シ
ステムへの外部からの入力等の関心事項。イベントの発生は
notificationという非同期メッセージの仕組みによって関
係者に送信される。
Replay  ​Requestに応じて以前のnotificationを送信する機能。
このnotificationは非同期で送信される。この機能は
NETCONFサーバーに実装され、NETCONFクライアントに呼び
出される。
Stream  送信基準を満たしNETCONFクライアントが利用可能なイベ
ントnotificationの集合。
Filter  イベントのsubsetを指定するパラメーター。フィルタは
NETCONFプロトコルのfilterとして定義される。
1.2. Motivation
 本ドキュメントのモチベーションはNETCONFで使用されるデータモデルおよびセキュリティモデルで非同期メッセージの送信を
可能とすることである。本ドキュメントのスコープは以下のニーズを満たすことである。
Configuration operationをサポートするためのnotificationをサポートすること。
Configuration operationと同じデータモデルをnotificationに使用できること。
ソリューションはある程度のメッセージサイズ(あまり短すぎない)をサポートすること。
Notificationはコネクション指向のメカニズムによって行われる。
Notificationのためのsubscriptionメカニズムが提供されること。これは、NETCONFサーバーがnotificationの開始
前にnotificationを送信しないこと、NETCONFクライアントがnotificationフローを開始することである。
Notificationの送信をフィルタリングするメカニズムがNETCONFサーバー内に配置されること。
Notificationに含まれる情報は、トランスポートプロトコルとは独立していること。
サーバーはローカルに記録されたnotificationをreplayする機能を備えていること。
3
1.3. Event Notifications in NETCONF
 本ドキュメントのモチベーションはNETCONFで使用されるデータモデルおよびセキュリティモデルで非同期メッセージの送信を
可能とすることである。本ドキュメントのスコープは以下のニーズを満たすことである。
 このドキュメントはNETCONFクライアントがイベントnotificationを受信するためにsubscriptionを作成することによっ
て、NETCONFサーバーからのイベントnotificationを受信する準備をするメカニズムを定義する。NETCONFサーバーは
subscription requestが成功/失敗を示すresponseをし、成功した場合はイベントがシステム内で発生したときにNETCONF
クライアントにイベントnotificationの送信をする。これらのイベントnotificationはNETCONFセッションが終了するか
subscriptionが終了するまで続く。イベントnotification subscriptionは、NETCONFクライアントが所望のイベントを
指定できるようにするためのオプションがある。これは、subscriptionが作成されるときに指定される。​一度作成した
subscriptionは変更できない。
 ​Notification subscriptionがactiveの場合でもNETCONFサーバーは<close-session> operationを許容し、処理
すること(MUST)。NETCONFサーバーは他のoperationを許容してよく(MAY)、そうでない場合は拒否し、
'resource-denied' errorを送信すること(MUST)。NETCONFサーバーは:interleave capabilityを使用して他の
operationを処理することをアドバタイズする。
2. Notification-Related Operations
2.1. Subscribing to Receive Event Notifications
 イベントnotification subscriptionは、NETCONFクライアントによって開始され、NETCONFサーバーは応答する。
Subscriptionはsubscriptionのライフタイム中は単一のstreamにバインドされる。イベントnotification
subscription作成時に所望のイベントが指定される。イベントnotification subscriptionのコンテンツはユーザーが指
定するフィルタによって選択できる。
2.1.1. <create-subscription>
名前 create-subscription
概要  Subscriptionが終了するまで非同期イベントnotificatinをoperation
の発行者に送信するイベントnotification subscriptionを開始する。
パラメーター
Stream  オプションパラメーター。所望するイベントのstreamを示す。存在しない場
合、デフォルトのNECONF streamが送信される。
Filter  オプションパラメーター。所望するイベントのsubsetを示す。このパラメー
ターのフォーマットはNETCONFプロトコルのfilterのフォーマットと同じで
ある。存在しない場合、他のパラメーターによって排除されない全てのイベン
トが送信される。フィルタの詳細については​section 3.6​参照。
Start Time  オプションパラメーター。Replayの開始時刻。<startTime>が存在しない
場合、これはreplay subscriptionではない。​現在の時刻よりも後の時刻を
設定することはできない。​指定された<startTime>がサポートできる時間より
も早い場合、replayは最も早い利用可能なnotificationから開始する。パ
ラメーターはdateTime型で​RFC3339​に準拠する。タイムゾーンをサポートす
ること。
Stop Time  オプションパラメーター。Replayの終了時刻。<stopTime>が存在しない
場合、notificationはsubscriptionが終了するまで続く。<startTime>
と一緒に使用する必要がある。現在時刻以降の<stopTime>が指定することは
4
許容される。パラメーターはdateTime型で​RFC3339​に準拠する。タイムゾー
ンをサポートすること。
Positive Response  デバイスがrequestを完了できた場合、<ok>elementを含む
<rpc-reply>が送信される。
Negative Response  デバイスがrequestを完了できない場合、<rpc-error>elementが
<rpc-reply>に含まれる。無効な構文のフィルタが存在する場合、存在しない
streamが指定されている場合、subscriptionのrequestは失敗する。
<startTime>を指定せ
ずに<stopTime>を指
定した場合
Tag:missing-element
Error-type: protocol
Severity: error
Error-info: <bad-element>: startTime
Description: An expected element is missing.
NETCONFサーバーが
replay機能をサポート
していない場合
Tag: operation-failed
Error-type: protocol
Severity: error
Error-info: none
Description: Request could not be completed because the
requested operation failed for some reason not covered by
any other error condition.
<stopTime>が
<startTime>より前の
時刻の場合
Tag: bad-element
Error-type: protocol
Severity: error
Error-info: <bad-element>: stopTime
Description: An element value is not correct; e.g., wrong
type, out of range, pattern mismatch.
<startTime>が現在時
刻よりも後の場合
Tag: bad-element
Error-type: protocol
Severity: error
Error-info: <bad-element>: startTime
Description: An element value is not correct; e.g., wrong
type, out of range, pattern mismatch.
Example
複雑な例はsection 5参照。
<netconf:rpc message-id="101"
xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0">
<create-subscription
xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0">
</create-subscription>
</netconf:rpc>
2.2. Sending Event Notifications
 Subscriptionが設定されると、NETCONFサーバーはイベントnotificationを非同期に送信する。
2.1.1. <notification>
名前 notification
概要  所望のイベント、つまり指定されたフィルタ条件を満たすイベントが発生し
たときに非同期に<create-subscription> operationを実行したクライ
アントにイベントnotificationが送信される。イベントnotificationは
wll-formed XMLである。​<notification>はRPCメソッドではなく、片方
5
向メッセージであり、最上位elementに設定される。
パラメーター  存在する場合notification固有のコンテンツが含まれる。<eventTime>
以外のnotificationのコンテンツは本ドキュメントのスコープ外である。
eventTime  イベントが生成された時刻。パラメーターはdateTime型で​RFC3339​に準拠
する。タイムゾーンをサポートすること。
Response なし。
2.3. Terminating the Subscription
 イベントnotification subscriptionのcloseは、subscriptionセッションからの<close-session>operationを
使用するか、トランスポートセッションまたはNETCONFセッション(<kill-session>operation)によって実行される。
Subscriptionの作成時にstopTimeが指定されている場合、subscriptionはstopTimeに達したときに終了する。この場
合、NETCONFセッションは続く。
3. Supporting Concepts
3.1. Capabilities Exchange
 イベントnotificationを処理、送信する機能はNETCONFクライアント/サーバー間のcapability exchangeで通知され
る。
3.1.1. Capability Identifier
 "urn:ietf:params:netconf:capability:notification:1.0"
3.1.2. Capability Example
<hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<capabilities>
<capability>
urn:ietf:params:xml:ns:netconf:base:1.0
</capability>
<capability>
urn:ietf:params:netconf:capability:startup:1.0
</capability>
<capability>
urn:ietf:params:netconf:capability:notification:1.0
</capability>
</capabilities>
<session-id>4</session-id>
</hello>
3.2. Event Streams
 イベントstreamは送信基準(forwarding criteria)を満たすイベントnotificationの集合として定義される。
6
 Figure 2は、notificationフローを表している。コンセプトであり、実装を強制するものではない。System
components(c1,...,cn)はcentral event componentに渡されるイベントnotificationを生成する。Central
componentは各イベントnotificationを検査し、イベントnotificationをstreamの定義を照合する。一致した場合、イベ
ントnotificationはそのイベントstream(stream 1,...,stream n)のメンバーと判定される。イベント
nofiticationは複数のイベントstreamの一部であってもよい。
 NETCONFサーバーがstreamからイベントを受信した後、サーバーによってXMLに変換され、<notification>elementはそ
のstreamをsubscribeしている全てのNETCONFセッションに送信できる状態になる。
 <notification>elementの生成後、アクセス制御がサーバーによって実施され、NETCONFセッションが<notification>
を受信するためのパーミッションを持っていない場合、そのセッションに関しては破棄され、イベントの処理が終了する。
 NETCONFクライアントがイベントstreamをsubscribeすると、ユーザー定義のフィルタ elementがイベントstreamに適用
され、一致するイベントnotificationがNETCONFサーバーに転送され、subscribeしているNETCONFクライアントに送信さ
れる。フィルタは<create-subscription>operationでクライアントからサーバーに送信され、streamによって生成された
各<notification>elementに適用される。フィルタリングの詳細は​Section 3.6​参照。
 Notification-logging serviceが利用可能である場合、central event processorはnotificationをロギングす
る。NETCONFサーバーはオプションであるreplayによりログに記録されたnotificationを後で取り出せる。Replayの詳細は
section 3.3​参照。
Figure 2
3.2.1. Event Stream Definition
 イベントstreamは管理対象のデバイスにあらかじめ定義されている。イベントstreamは本ドキュメントのスコープ外である。
しかし、イベントstreamはベンダー、ユーザーのconfig等によってあらかじめ決められていると想定される。デバイスベンダー
はNETCONFプロトコル(<edit-config>等)によってイベントstreamの設定を可能とすることができる。
3.2.2. Event Stream Content Format
 NETCONFクライアントが利用可能なイベントstream(つまり、NETCONFサーバーが送信するnotification)の内容はXML
であること(MUST)。
3.2.3. Default Event Stream
 ​Notification capabilityをサポートするNETCONFサーバーの実装は、"NETCONF" notification event streamを
サポートすること(MUST)。このstreamにはNETCONFサーバーでサポートされている全てのNETCONF XML イベント
notificationが含まれる。​文字列"NETCONF"は<stream>への<get>operation、<create-subscription>operation
7
においてstreamをサポートしていることをadvertisementするために使用する。イベントsteramに対する<eventTime>以下
のイベントnotificationの内容の定義は本ドキュメントのスコープ外である。
3.2.4. Event Stream Sources
 デフォルトイベントstream(NETCONF)以外の追加のイベントstream(SNMP、syslog等)の仕様は本ドキュメントのス
コープ外である。NETCONFサーバーの実装は、サポートされているイベントstreamの作成において、任意の所望のイベント
stream sourceを使用することができる。
3.2.5. Event Stream Discovery
 NETCONFクライアントは<get>operationを使用してNETCONFサーバーがサポートしているイベントstreamのリストを取得
する。
3.2.5.1. Name Retrieval Using <get> Operation
 利用可能なイベントstreamのリストは<get>operationによって<streams>サブツリーをrequestすることで取得できる。
利用可能なイベントsteramはNETCONFサーバーがイベントstreamを一意に識別する<name>element(mandatoryパラメー
ター)、<description>elementを含むresponseで返される。利用可能なイベントstreamが存在しない場合、empty
replyが返される。
 ​Streamに関する追加情報には、notificationのreplayが可能かどうか、可能ならばreplayが可能な最も早い時刻のタイ
ムスタンプが含まれる​。
 以下の例は、<get>operationを使用して利用可能なイベントstreamのリストを取得する方法である。
<rpc message-id="101"
xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get>
<filter type="subtree">
<netconf xmlns="urn:ietf:params:xml:ns:netmod:notification">
<streams/>
</netconf>
</filter>
</get>
</rpc>
 NETCONFサーバーは利用可能なイベントstreamのリスト(NETCONF、SNMP、syslog等)を返す。
<rpc-reply message-id="101"
xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<data>
<netconf xmlns="urn:ietf:params:xml:ns:netmod:notification">
<streams>
<stream>
<name>NETCONF</name>
<description>default NETCONF event stream
</description>
<replaySupport>true</replaySupport>
<replayLogCreationTime>
2007-07-08T00:00:00Z
</replayLogCreationTime>
</stream>
8
<stream>
<name>SNMP</name>
<description>SNMP notifications</description>
<replaySupport>false</replaySupport>
</stream>
<stream>
<name>syslog-critical</name>
<description>Critical and higher severity
</description>
<replaySupport>true</replaySupport>
<replayLogCreationTime>
2007-07-01T00:00:00Z
</replayLogCreationTime>
</stream>
</streams>
</netconf>
</data>
</rpc-reply>
3.2.5.2. Event Stream Subscription
 NETCONFクライアントはNETCONFサーバーからセッションで利用可能なイベントstreamのリストをrequestし、所望のイベ
ントstream名で<create-subscription>operationを発行する。<create-subscription>operationからイベント
stream名を省略するとデフォルトのNETCONFイベントstreamにsubscriptionされる。
3.2.5.2.1. Filtering Event Stream Contents
 イベントstreamで送信されるイベントnotificationはsubscription作成時(<create-subscription>operation)
に指定されたフィルタによってフィルタリングできる。これは、イベントnotification subscriptionに関連付けられた一時
的なフィルタであり、イベントstream自体は変更しない。filter elementは<notification>がラップするコンテンツに対
して適用される。詳細は​section 5​参照。サブツリーまたはXPATHフィルタリングのいずれかを使用できる。
 ​Notification capabilityのXPATHサポートはXPATH capability advertisementの一部としてアドバタイズされ
る。​XPATHサポートがXPATH capabilityでアドバタイズされる場合、XPATHがnotificationフィルタリングでサポートされ
る。アドバタイズされない場合、XPATHはnotificationフィルタリングでサポートされない。
3.3. Notification Replay
3.3.1. Overview
 Replayとは、過去に生成されたnotificationを再送信するイベントsubscriptionを作成する機能である。Replayの
notificationは通常のnotificationと同じ方法で送信される。
 Notificationのreplayはオプションの<startTime>を含めることで指定する。これはreplayの開始時刻を示す。終了時
刻は<stopTime>で指定する。これらのパラメーターが存在しない場合はnotificationはsubscriptionが終了するまで送信
される。
 Replayをサポートするnotification streamはreplay requestに対応するために無制限にnotificationを送信する
ことは期待されていない。NETCONFクライアントは<replayLogCreationTime>と<replayLogAgedTime>をクエリして
replayの情報を取得できる。
 任意の時点で格納されているnotificationの数はNETCONFサーバー実装依存であり、これに関わる制御パラメーターは本ド
キュメントのスコープ外である。
9
 Replayのログのサイズ、フォーマットに制限はない。​Streamがreplayをサポートするかどうかは、<streams>elementに
<get>operationし、<replaySupport>objectの値を調べることで確認できる。このスキーマは利用可能な最も古い
notificationを示す<replayLogCreationTime>elementも提供する。
#こんな感じでわかる
<replaySupport>true</replaySupport>
<replayLogCreationTime>
2007-07-08T00:00:00Z
</replayLogCreationTime>
3.3.2. Creating a Subscription with Replay
 この機能は<startTime>、<stopTime>という<create-subscription>operationのオプションパラメーターを使用す
る。<startTime>はイベントnotificationがreplayされる最古の時刻を設定し、replayを実施することを示す。この時刻
より前に生成されたイベントはマッチしない。<stopTime>はイベントnotificationがreplayされる最新の時刻を指定する。
存在しない場合、subscriptionが終了するまで送信され続ける。
 ​<startTime>と<stopTime>はイベントが生成された時刻に関連付く​ことに注意せよ。
 ​<replayComplete>notificationは全てのreplay notificationが送信されたことを示すために送信される。
SubscriptionにstopTimeがある場合、そのセッションは通常のNETCONFセッションに戻り、NETCONFサーバーは
<rpc>operationを受け入れる。Stoptimeのないsubscriptionの場合、<replayComplete>が送信された時点で
subscription開始以降に生成された全てのnotificationが送信され、以降も発生したnotificationが送信される。
 <replayComplete> notificationと<notificationComplete> notificationは省略できず、replay
subscriptionでは必ず送信される。
3.4. Notification Management Schema
 このスキーマはシステムでサポートされているイベントstreamを確認するための例として使用される。<replayComplete>
notificationと<notificationComplete>notificationの定義も含まれる。これらのnotificationはイベント
replayが適用可能な全てのnotificationを送信し、subscriptionが終了したことを示す。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0"
xmlns:ncEvent="urn:ietf:params:xml:ns:netconf:notification:1.0"
xmlns:manageEvent="urn:ietf:params:xml:ns:netmod:notification"
targetNamespace="urn:ietf:params:xml:ns:netmod:notification"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
xml:lang="en" version="1.0">
<xs:annotation>
<xs:documentation xml:lang="en">
A schema that can be used to learn about current
event streams. It also contains the replayComplete
and notificationComplete notification.
</xs:documentation>
</xs:annotation>
<xs:import namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="http://www.w3.org/2001/xml.xsd"/>
<xs:import namespace="urn:ietf:params:xml:ns:netconf:base:1.0"
schemaLocation="netconf.xsd"/>
<xs:import namespace=
10
"urn:ietf:params:xml:ns:netconf:notification:1.0"
schemaLocation="notification.xsd"/>
<xs:element name="netconf" type="manageEvent:Netconf"/>
<xs:complexType name="Netconf">
<xs:sequence>
<xs:element name="streams" > ​#システムがサポートするstreamのリスト
<xs:annotation>
<xs:documentation>
The list of event streams supported by the
system. When a query is issued, the returned
set of streams is determined based on user
privileges.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element name="stream"> ​#stream
<xs:annotation>
<xs:documentation>
Stream name, description, and other information.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="name"
type="ncEvent:streamNameType"> ​#stream名
<xs:annotation>
<xs:documentation>
The name of the event stream. If this is
the default NETCONF stream, this must have
the value "NETCONF".
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="description"
type="xs:string">#streamのdescription
<xs:annotation>
<xs:documentation>
A description of the event stream, including
such information as the type of events that
are sent over this stream.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="replaySupport"
type="xs:boolean">​#replayのサポート有無
<xs:annotation>
<xs:documentation>
An indication of whether or not event replay
is available on this stream.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="replayLogCreationTime"
11
type="xs:dateTime" minOccurs="0">​#ログが作成された時刻。最古の
ログより古い場合があることに注意せよ。ログがリセットされたときに更新される。Replayをサポートする場合は必須(MUST
)。
<xs:annotation>
<xs:documentation>
The timestamp of the creation of the log
used to support the replay function on
this stream.
Note that this might be earlier then
the earliest available
notification in the log. This object
is updated if the log resets
for some reason. This
object MUST be present if replay is
supported.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="replayLogAgedTime"
type="xs:dateTime" minOccurs="0">​#ログの最新のnotification時刻。
Replayをサポートする場合でログの最新のnotification時刻が更新された場合は必須(MUST)。
<xs:annotation>
<xs:documentation>
The timestamp of the last notification
aged out of the log. This
object MUST be present if replay is
supported and any notifications
have been aged out of the log.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ReplayCompleteNotificationType">
<xs:complexContent>
<xs:extension base="ncEvent:NotificationContentType"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="replayComplete"
type="manageEvent:ReplayCompleteNotificationType"
substitutionGroup="ncEvent:notificationContent"> ​#subscriptionのreplayが終了したことを示
す。
<xs:annotation>
<xs:documentation>
This notification is sent to signal the end of a replay
portion of a subscription.
</xs:documentation>
</xs:annotation>
12
</xs:element>
<xs:complexType name="NotificationCompleteNotificationType">
<xs:complexContent>
<xs:extension base="ncEvent:NotificationContentType"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="notificationComplete"
type="manageEvent:NotificationCompleteNotificationType"
substitutionGroup="ncEvent:notificationContent">​#notification subscriptionが終了したこ
とを示す。stopTimeが設定された場合に送信される。
<xs:annotation>
<xs:documentation>
This notification is sent to signal the end of a
notification subscription. It is sent in the case
that stopTime was specified during the creation of
the subscription.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:schema>
3.5. Subscriptions Data
 Subscriptionは永続的ではないstate informationで、セッションまたは<stopTime>により定義される。
3.6. Filter Mechanics
 特定のデータを抽出するためにfilter elementが設定され、その値がイベントnotificationに存在しない場合、
notificationは除外される。例えば、'severity=critical'が設定されていた場合にイベントnotificationに該当項目
がない場合、notificationは除外される。
 サブツリーフィルタリングの場合、空でないnodeは一致するフィルタであることを意味する。XPathフィルタリングの場合、
XPath​で定義されたメカニズムにより返った値をbool型に変換する。
3.6.1. Filtering
 イベントnotification subscriptionが作成時にフィルタリングが明示的に'filter'パラメーターで設定される。
3.7. Message Flow
 以下の図はsubscriptionを作成し、notification送受信を開始するためのNETCONFクライアントとNETCONFサーバーの間
のメッセージフローである。このsubscriptionでは<startTime>を設定するため、サーバーはログに記録された
notificationをreplayする。Subscriptionが作成される前に他にもrpc/rpc-replyが発生する可能性があるが、図では
省略している。
13
 以下の図はsubscriptionを作成し、notification送受信を開始するためのNETCONFクライアントとNETCONFサーバーの間
のメッセージフローである。このsubscriptionでは<startTime>と<stopTime>を設定するため、サーバーはログに記録され
たnotificationをreplayし、<replayComplete>notificationと <notificationComplete>notificationの送信
後に通常のNETCONFセッションに戻る。Subscriptionが作成される前に他にもrpc/rpc-replyが発生する可能性があるが、
図では省略している。
14
4. XML Schema for Event Notifications
 NETCONF Event NotificationのXMLスキーマである。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"
xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0"
targetNamespace=
"urn:ietf:params:xml:ns:netconf:notification:1.0"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
xml:lang="en">
<!-- import standard XML definitions -->
<xs:import namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="http://www.w3.org/2001/xml.xsd">
<xs:annotation>
<xs:documentation>
This import accesses the xml: attribute groups for the
xml:lang as declared on the error-message element.
</xs:documentation>
</xs:annotation>
</xs:import>
<!-- import base netconf definitions -->
<xs:import namespace="urn:ietf:params:xml:ns:netconf:base:1.0"
schemaLocation="netconf.xsd"/>
<!-- ************** Symmetrical Operations ********************-->
<!-- <create-subscription> operation -->
<xs:complexType name="createSubscriptionType">
<xs:complexContent>
<xs:extension base="netconf:rpcOperationType">
<xs:sequence>
<xs:element name="stream"
type="streamNameType" minOccurs="0">
<xs:annotation>
<xs:documentation>
An optional parameter that indicates
which stream of events is of interest.
If not present, then events in the
default NETCONF stream will be sent.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="filter"
type="netconf:filterInlineType"
minOccurs="0">
<xs:annotation>
<xs:documentation>
An optional parameter that indicates
15
which subset of all possible events
is of interest. The format of this
parameter is the same as that of the
filter parameter in the NETCONF
protocol operations. If not
present, all events not precluded
by other parameters will be sent.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="startTime" type="xs:dateTime"
minOccurs="0" >
<xs:annotation>
<xs:documentation>
A parameter used to trigger the replay
feature indicating that the replay
should start at the time specified. If
start time is not present, this is not a
replay subscription.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="stopTime" type="xs:dateTime"
minOccurs="0" >
<xs:annotation>
<xs:documentation>
An optional parameter used with the
optional replay feature to indicate the
newest notifications of interest. If
stop time is not present, the
notifications will continue until the
subscription is terminated. Must be
used with startTime.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:simpleType name="streamNameType">
<xs:annotation>
<xs:documentation>
The name of an event stream.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:element name="create-subscription"
type="createSubscriptionType"
substitutionGroup="netconf:rpcOperation">
<xs:annotation>
<xs:documentation>
The command to create a notification subscription. It
takes as argument the name of the notification stream
and filter. Both of those options
16
limit the content of the subscription. In addition,
there are two time-related parameters, startTime and
stopTime, which can be used to select the time interval
of interest to the notification replay feature.
</xs:documentation>
</xs:annotation>
</xs:element>
<!-- ************** One-way Operations ******************-->
<!-- <Notification> operation -->
<xs:complexType name="NotificationContentType"/>
<xs:element name="notificationContent"
type="NotificationContentType" abstract="true"/>
<xs:complexType name="NotificationType">
<xs:sequence>
<xs:element name="eventTime" type="xs:dateTime">
<xs:annotation>
<xs:documentation>
The time the event was generated by the event source.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element ref="notificationContent"/>
</xs:sequence>
</xs:complexType>
<xs:element name="notification" type="NotificationType"/>
</xs:schema>
5. Filtering Examples
 イベントnotification subscriptionでコンテンツをフィルタリングする方法の例を示す。
 フィルタの説明をするためにイベントnotification コンテンツの例を示す。以下の例では、イベントnotificationスキー
マ定義がイベントクラス(例:障害、状態、config)、エンティティ、severity、operational stateをもち、最上位レベ
ルに<event> elementをもつと仮定する。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://example.com/event/1.0"
xmlns="http://example.com/event/1.0"
elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:ncEvent="urn:ietf:params:xml:ns:netconf:notification:1.0">
<xs:import namespace=
"urn:ietf:params:xml:ns:netconf:notification:1.0"
schemaLocation="notification.xsd"/>
<xs:complexType name="eventType">
<xs:complexContent>
17
<xs:extension base="ncEvent:NotificationContentType">
<xs:sequence>
<xs:element name="eventClass" />
<xs:element name="reportingEntity">
<xs:complexType>
<xs:sequence>
<xs:any namespace="##any"
processContents="lax"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:choice>
<xs:element name="severity"/>
<xs:element name="operState"/>
</xs:choice>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="event"
type="eventType"
substitutionGroup="ncEvent:notificationContent"/>
</xs:schema>
 上記のnotificationの定義により、例として以下のnotificationが生成される。
<notification
xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0">
<eventTime>2007-07-08T00:01:00Z</eventTime>
<event xmlns="http://example.com/event/1.0">
<eventClass>fault</eventClass>
<reportingEntity>
<card>Ethernet0</card>
</reportingEntity>
<severity>major</severity>
</event>
</notification>
<notification
xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0">
<eventTime>2007-07-08T00:02:00Z</eventTime>
<event xmlns="http://example.com/event/1.0">
<eventClass>fault</eventClass>
<reportingEntity>
<card>Ethernet2</card>
</reportingEntity>
<severity>critical</severity>
</event>
</notification>
<notification
xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0">
<eventTime>2007-07-08T00:04:00Z</eventTime>
18
<event xmlns="http://example.com/event/1.0">
<eventClass>fault</eventClass>
<reportingEntity>
<card>ATM1</card>
</reportingEntity>
<severity>minor</severity>
</event>
</notification>
<notification
xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0">
<eventTime>2007-07-08T00:10:00Z</eventTime>
<event xmlns="http://example.com/event/1.0">
<eventClass>state</eventClass>
<reportingEntity>
<card>Ethernet0</card>
</reportingEntity>
<operState>enabled</operState>
</event>
</notification>
5.1. Subtree Filtering
 XMLサブツリーフィルタリングは、​等価(=)と論理和(OR)のみをサポートしている​ため、複雑なフィルタ条件作成には適し
ていない。以下のようなイベントnotificationフィルタの定義に使用する。
 以下の例はseverityがcritical or major or minorのfaultイベントを選択するものである。
 ((fault & severity=critical) | (fault & severity=major) | (fault & severity=minor))
<netconf:rpc netconf:message-id="101"
xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0">
<create-subscription
xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0">
<filter netconf:type="subtree">
<event xmlns="http://example.com/event/1.0"> ​#fault & severity=critical) OR
<eventClass>fault</eventClass>
<severity>critical</severity>
</event>
<event xmlns="http://example.com/event/1.0"> ​#fault & severity=major) OR
<eventClass>fault</eventClass>
<severity>major</severity>
</event>
<event xmlns="http://example.com/event/1.0"> ​#fault & severity=minor)
<eventClass>fault</eventClass>
<severity>minor</severity>
</event>
</filter>
</create-subscription>
</netconf:rpc>
 以下の例はcard Ethernet0のfaultイベントまたはstateイベント or configイベントを選択するものである。
 ( state | config | ( fault & ( card=Ethernet0)))
<netconf:rpc netconf:message-id="101"
xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0">
<create-subscription
xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0">
<filter netconf:type="subtree">
19
<event xmlns="http://example.com/event/1.0"> ​#state OR
<eventClass>state</eventClass>
</event>
<event xmlns="http://example.com/event/1.0"> ​#config OR
<eventClass>config</eventClass>
</event>
<event xmlns="http://example.com/event/1.0"> ​#fault & card=Ethernet0
<eventClass>fault</eventClass>
<reportingEntity>
<card>Ethernet0</card>
</reportingEntity>
</event>
</filter>
</create-subscription>
</netconf:rpc>
5.2. XPATH Filters
 XPathでフィルタリングする例を示す。
 ((fault) & ((severity=critical) | (severity=major) | (severity=minor)))
<netconf:rpc netconf:message-id="101"
xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0">
<create-subscription
xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0">
<filter netconf:type="xpath"
xmlns:ex="http://example.com/event/1.0"
select="/ex:event[ex:eventClass='fault' and
(ex:severity='minor' or ex:severity='major'
or ex:severity='critical')]"/>
</create-subscription>
</netconf:rpc>
 XPathでフィルタリングする例を示す。
 ( state | config | (fault & card=Ethernet0))
<netconf:rpc message-id="101"
xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0">
<create-subscription
xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0">
<filter netconf:type="xpath"
xmlns:ex="http://example.com/event/1.0"
select="/ex:event[
(ex:eventClass='state' or ex:eventClass='config') or
((ex:eventClass='fault' and ex:card='Ethernet0'))]"/>
</create-subscription>
</netconf:rpc>
20
6. Interleave Capability
6.1. Description
 ​:interleave capabilityはNETCONFピアがnotification subscription内で他のNETCONF operationをインタ
リーブするcapabilityをサポートしていることを示す。​つまり、NETCONFサーバーはsubscriptionがアクティブなセッショ
ンでNETCONF requestを受信、処理、応答すること(MUST)。このcapabilityは、NETCONFセッション数を減らすことでス
ケーラビリティを向上させる。
6.2. Dependencies
 notification capability
6.3. Capability Identifier
 urn:ietf:params:netconf:capability:interleave:1.0
6.4. New Operations
 なし
6.5. Modifications to Existing Operations
 別のsubscriptionがアクティブなときに<create-subscription>が送信された場合、下記のエラーが返される。
Tag: operation-failed
Error-type: protocol
Severity: error
Error-info: none
Description: Request could not be completed because the requested
operation failed for some reason not covered by any other error condition.
7. Security Considerations
 ​NETCONF​のsecurity considerationsはNotification capabilityにも適用される。
 アクセス制御の仕組みとトランスポートはソリューションのセキュリティに大きな影響を与える。
 トランスポートとcapability exchangeによるNETCONFセッションが確立し、認証されるまで<notification>element
が送信されることはない。
 セキュリティの確保のためには以下に注意が必要である。
● <create-subscription>の呼び出し
● read-onlyデータモデルへの<get>
● <notification>のコンテンツ
 セキュリティの確保とは、セキュアなトランスポートが使用されていること、NETCONFを実行する権限をユーザーが持っている
ことを意味する。本ドキュメントで定義されているコンテンツを取得する<get>を受信すると、クライアントが権限をもつコンテ
ンツのみを取得することができる。<create-subscription> operationは<get>の繰り返しとみなすことができ、ユーザー
毎にアクセスできるコンテンツは異なる場合がある。これは<notification>で取得可能な情報に影響する。
21
 潜在的なセキュリティの問題の1つは非NETCONF stream(syslog、SNMP等)からのデータ転送である。NETCONFサーバー
はstreamにアクセス制御を適用する必要がある(responsibility)。
 ​Notificationのコンテンツとイベントstreamの名前には機密情報が含まれている可能性があり、許可されたユーザーのみが
取得できるようにする必要がある。NETCONFサーバーはユーザーが取得する権限が無いコンテンツをnotificationに含めない
こと(MUST NOT)。
 <stopTime>でsubscriptionが作成された場合、replayが完了するとNETCONFセッションは通常のNETCONFセッションに
なる。NETCONFクライアントは使用しなくなったときにセッションを終了する必要がある(responsibility)。
 ​悪意のあるNETCONFクライアントが大量の<create-subscription>を送信するとsubscriptionが蓄積され、リソースを
使い切る可能性がある。このような状況には<kill-session>を使用して疑わしいNETCONFセッションを終了することによって
subscriptionを終了できる。
 ​#疑わしいセッションはclose-sessionではなくてkill-sessionで無理やり切っていい
8. IANA Considerations
 3つのURIをNETCONF XML namespaceのためにIETF XMLレジストリに登録する。
Index Capability Identifier
:notification urn:ietf:params:netconf:capability:notification:1.0
:interleave urn:ietf:params:netconf:capability:interleave:1.0
 URI: urn:ietf:params:xml:ns:netmod:notification
22

More Related Content

What's hot

フロー技術によるネットワーク管理
フロー技術によるネットワーク管理フロー技術によるネットワーク管理
フロー技術によるネットワーク管理Motonori Shindo
 
Openconfigを用いたネットワーク機器操作
Openconfigを用いたネットワーク機器操作Openconfigを用いたネットワーク機器操作
Openconfigを用いたネットワーク機器操作Hirofumi Ichihara
 
3GPP F1インターフェース(TS38.470-f50)の概要
3GPP F1インターフェース(TS38.470-f50)の概要3GPP F1インターフェース(TS38.470-f50)の概要
3GPP F1インターフェース(TS38.470-f50)の概要Tetsuya Hasegawa
 
Pacemaker+PostgreSQLレプリケーションで共有ディスクレス高信頼クラスタの構築@OSC 2013 Tokyo/Spring
Pacemaker+PostgreSQLレプリケーションで共有ディスクレス高信頼クラスタの構築@OSC 2013 Tokyo/SpringPacemaker+PostgreSQLレプリケーションで共有ディスクレス高信頼クラスタの構築@OSC 2013 Tokyo/Spring
Pacemaker+PostgreSQLレプリケーションで共有ディスクレス高信頼クラスタの構築@OSC 2013 Tokyo/SpringTakatoshi Matsuo
 
ネットワークコンフィグ分析ツール Batfish との付き合い方
ネットワークコンフィグ分析ツール Batfish との付き合い方ネットワークコンフィグ分析ツール Batfish との付き合い方
ネットワークコンフィグ分析ツール Batfish との付き合い方akira6592
 
なぜネットワーク運用自動化が進まないのか Whitebox switch編
なぜネットワーク運用自動化が進まないのか Whitebox switch編なぜネットワーク運用自動化が進まないのか Whitebox switch編
なぜネットワーク運用自動化が進まないのか Whitebox switch編Taiji Tsuchiya
 
ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催)
ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催) ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催)
ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催) akira6592
 
無料で仮想Junos環境を手元に作ろう
無料で仮想Junos環境を手元に作ろう無料で仮想Junos環境を手元に作ろう
無料で仮想Junos環境を手元に作ろうakira6592
 
ネットワークエンジニア的Ansibleの始め方
ネットワークエンジニア的Ansibleの始め方ネットワークエンジニア的Ansibleの始め方
ネットワークエンジニア的Ansibleの始め方akira6592
 
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Masahito Zembutsu
 
PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例kazuhcurry
 
ネットワークエンジニアはどこでウデマエをみがくのか?
ネットワークエンジニアはどこでウデマエをみがくのか?ネットワークエンジニアはどこでウデマエをみがくのか?
ネットワークエンジニアはどこでウデマエをみがくのか?Yuya Rin
 
Fibre Channel 基礎講座
Fibre Channel 基礎講座Fibre Channel 基礎講座
Fibre Channel 基礎講座Brocade
 
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月 知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月 VirtualTech Japan Inc.
 
[Node-RED] ファンクションノードのデバッグどうしてる?
[Node-RED] ファンクションノードのデバッグどうしてる?[Node-RED] ファンクションノードのデバッグどうしてる?
[Node-RED] ファンクションノードのデバッグどうしてる?Makoto SAKAI
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)NTT DATA Technology & Innovation
 
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしようPHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしようShohei Okada
 
ブロケード FC ファブリックスイッチオペレーション講座(前編)
ブロケード FC ファブリックスイッチオペレーション講座(前編)ブロケード FC ファブリックスイッチオペレーション講座(前編)
ブロケード FC ファブリックスイッチオペレーション講座(前編)Brocade
 

What's hot (20)

フロー技術によるネットワーク管理
フロー技術によるネットワーク管理フロー技術によるネットワーク管理
フロー技術によるネットワーク管理
 
Openconfigを用いたネットワーク機器操作
Openconfigを用いたネットワーク機器操作Openconfigを用いたネットワーク機器操作
Openconfigを用いたネットワーク機器操作
 
3GPP F1インターフェース(TS38.470-f50)の概要
3GPP F1インターフェース(TS38.470-f50)の概要3GPP F1インターフェース(TS38.470-f50)の概要
3GPP F1インターフェース(TS38.470-f50)の概要
 
Pacemaker+PostgreSQLレプリケーションで共有ディスクレス高信頼クラスタの構築@OSC 2013 Tokyo/Spring
Pacemaker+PostgreSQLレプリケーションで共有ディスクレス高信頼クラスタの構築@OSC 2013 Tokyo/SpringPacemaker+PostgreSQLレプリケーションで共有ディスクレス高信頼クラスタの構築@OSC 2013 Tokyo/Spring
Pacemaker+PostgreSQLレプリケーションで共有ディスクレス高信頼クラスタの構築@OSC 2013 Tokyo/Spring
 
ネットワークコンフィグ分析ツール Batfish との付き合い方
ネットワークコンフィグ分析ツール Batfish との付き合い方ネットワークコンフィグ分析ツール Batfish との付き合い方
ネットワークコンフィグ分析ツール Batfish との付き合い方
 
なぜネットワーク運用自動化が進まないのか Whitebox switch編
なぜネットワーク運用自動化が進まないのか Whitebox switch編なぜネットワーク運用自動化が進まないのか Whitebox switch編
なぜネットワーク運用自動化が進まないのか Whitebox switch編
 
ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催)
ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催) ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催)
ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催)
 
無料で仮想Junos環境を手元に作ろう
無料で仮想Junos環境を手元に作ろう無料で仮想Junos環境を手元に作ろう
無料で仮想Junos環境を手元に作ろう
 
ネットワークエンジニア的Ansibleの始め方
ネットワークエンジニア的Ansibleの始め方ネットワークエンジニア的Ansibleの始め方
ネットワークエンジニア的Ansibleの始め方
 
vSphere環境での自動化とテスト
vSphere環境での自動化とテストvSphere環境での自動化とテスト
vSphere環境での自動化とテスト
 
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話
 
PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例
 
ネットワークエンジニアはどこでウデマエをみがくのか?
ネットワークエンジニアはどこでウデマエをみがくのか?ネットワークエンジニアはどこでウデマエをみがくのか?
ネットワークエンジニアはどこでウデマエをみがくのか?
 
perfを使ったPostgreSQLの解析(前編)
perfを使ったPostgreSQLの解析(前編)perfを使ったPostgreSQLの解析(前編)
perfを使ったPostgreSQLの解析(前編)
 
Fibre Channel 基礎講座
Fibre Channel 基礎講座Fibre Channel 基礎講座
Fibre Channel 基礎講座
 
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月 知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
 
[Node-RED] ファンクションノードのデバッグどうしてる?
[Node-RED] ファンクションノードのデバッグどうしてる?[Node-RED] ファンクションノードのデバッグどうしてる?
[Node-RED] ファンクションノードのデバッグどうしてる?
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
 
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしようPHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
 
ブロケード FC ファブリックスイッチオペレーション講座(前編)
ブロケード FC ファブリックスイッチオペレーション講座(前編)ブロケード FC ファブリックスイッチオペレーション講座(前編)
ブロケード FC ファブリックスイッチオペレーション講座(前編)
 

Similar to RFC5277(NETCONF Event Notifications)の勉強資料

RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料
RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料
RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料Tetsuya Hasegawa
 
RFC8071(NETCONF Call Home and RESTCONF Call Home)の勉強資料
RFC8071(NETCONF Call Home and RESTCONF Call Home)の勉強資料RFC8071(NETCONF Call Home and RESTCONF Call Home)の勉強資料
RFC8071(NETCONF Call Home and RESTCONF Call Home)の勉強資料Tetsuya Hasegawa
 
RFC8341(Network Configuration Access Control Model)の勉強資料。
RFC8341(Network Configuration Access Control Model)の勉強資料。RFC8341(Network Configuration Access Control Model)の勉強資料。
RFC8341(Network Configuration Access Control Model)の勉強資料。Tetsuya Hasegawa
 
RFC7589(NETCONF Protocol over TLS)の勉強資料
RFC7589(NETCONF Protocol over TLS)の勉強資料RFC7589(NETCONF Protocol over TLS)の勉強資料
RFC7589(NETCONF Protocol over TLS)の勉強資料Tetsuya Hasegawa
 
Osc2017 tokyo spring_soss_sig
Osc2017 tokyo spring_soss_sigOsc2017 tokyo spring_soss_sig
Osc2017 tokyo spring_soss_sigKazuki Omo
 
Trema の紹介とネットワーク仮想化への応用
Trema の紹介とネットワーク仮想化への応用Trema の紹介とネットワーク仮想化への応用
Trema の紹介とネットワーク仮想化への応用kazuyas
 
Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像 Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像 Sho Shimizu
 
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)Rui Hirokawa
 
実際に流れているデータを見てみよう
実際に流れているデータを見てみよう実際に流れているデータを見てみよう
実際に流れているデータを見てみよう彰 村地
 
ELFの動的リンク
ELFの動的リンクELFの動的リンク
ELFの動的リンク7shi
 
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6Kentaro Ebisawa
 
Scala + Finagleの魅力
Scala + Finagleの魅力Scala + Finagleの魅力
Scala + Finagleの魅力Kota Mizushima
 
ELK ではじめる自宅ネットワーク監視
ELK ではじめる自宅ネットワーク監視ELK ではじめる自宅ネットワーク監視
ELK ではじめる自宅ネットワーク監視npsg
 
Buffer overflow
Buffer overflowBuffer overflow
Buffer overflowionis111
 
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化Gosuke Miyashita
 
OPNFVのコンポーネントと調べ方
OPNFVのコンポーネントと調べ方OPNFVのコンポーネントと調べ方
OPNFVのコンポーネントと調べ方Mibu Ryota
 

Similar to RFC5277(NETCONF Event Notifications)の勉強資料 (20)

RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料
RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料
RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料
 
RFC8071(NETCONF Call Home and RESTCONF Call Home)の勉強資料
RFC8071(NETCONF Call Home and RESTCONF Call Home)の勉強資料RFC8071(NETCONF Call Home and RESTCONF Call Home)の勉強資料
RFC8071(NETCONF Call Home and RESTCONF Call Home)の勉強資料
 
RFC8341(Network Configuration Access Control Model)の勉強資料。
RFC8341(Network Configuration Access Control Model)の勉強資料。RFC8341(Network Configuration Access Control Model)の勉強資料。
RFC8341(Network Configuration Access Control Model)の勉強資料。
 
RFC7589(NETCONF Protocol over TLS)の勉強資料
RFC7589(NETCONF Protocol over TLS)の勉強資料RFC7589(NETCONF Protocol over TLS)の勉強資料
RFC7589(NETCONF Protocol over TLS)の勉強資料
 
NanoA
NanoANanoA
NanoA
 
Osc2017 tokyo spring_soss_sig
Osc2017 tokyo spring_soss_sigOsc2017 tokyo spring_soss_sig
Osc2017 tokyo spring_soss_sig
 
Trema の紹介とネットワーク仮想化への応用
Trema の紹介とネットワーク仮想化への応用Trema の紹介とネットワーク仮想化への応用
Trema の紹介とネットワーク仮想化への応用
 
Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像 Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像
 
NFVについて
NFVについてNFVについて
NFVについて
 
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
 
実際に流れているデータを見てみよう
実際に流れているデータを見てみよう実際に流れているデータを見てみよう
実際に流れているデータを見てみよう
 
ELFの動的リンク
ELFの動的リンクELFの動的リンク
ELFの動的リンク
 
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
 
serverless
serverlessserverless
serverless
 
Scala + Finagleの魅力
Scala + Finagleの魅力Scala + Finagleの魅力
Scala + Finagleの魅力
 
ELK ではじめる自宅ネットワーク監視
ELK ではじめる自宅ネットワーク監視ELK ではじめる自宅ネットワーク監視
ELK ではじめる自宅ネットワーク監視
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 
Buffer overflow
Buffer overflowBuffer overflow
Buffer overflow
 
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
 
OPNFVのコンポーネントと調べ方
OPNFVのコンポーネントと調べ方OPNFVのコンポーネントと調べ方
OPNFVのコンポーネントと調べ方
 

More from Tetsuya Hasegawa

CVE-2021-3156 Baron samedit (sudoの脆弱性)
CVE-2021-3156 Baron samedit (sudoの脆弱性)CVE-2021-3156 Baron samedit (sudoの脆弱性)
CVE-2021-3156 Baron samedit (sudoの脆弱性)Tetsuya Hasegawa
 
RFC8528(YANG Schema Mount)の勉強資料
RFC8528(YANG Schema Mount)の勉強資料RFC8528(YANG Schema Mount)の勉強資料
RFC8528(YANG Schema Mount)の勉強資料Tetsuya Hasegawa
 
RFC7951(JSON Encoding of Data Modeled with YANG)の勉強資料
RFC7951(JSON Encoding of Data Modeled with YANG)の勉強資料RFC7951(JSON Encoding of Data Modeled with YANG)の勉強資料
RFC7951(JSON Encoding of Data Modeled with YANG)の勉強資料Tetsuya Hasegawa
 
面白いセキュリティツール その2
面白いセキュリティツール その2面白いセキュリティツール その2
面白いセキュリティツール その2Tetsuya Hasegawa
 
RFC8632(A YANG Data Model for Alarm Management)の勉強資料
RFC8632(A YANG Data Model for Alarm Management)の勉強資料RFC8632(A YANG Data Model for Alarm Management)の勉強資料
RFC8632(A YANG Data Model for Alarm Management)の勉強資料Tetsuya Hasegawa
 
RFC8525(YANG Library)の勉強資料。
RFC8525(YANG Library)の勉強資料。RFC8525(YANG Library)の勉強資料。
RFC8525(YANG Library)の勉強資料。Tetsuya Hasegawa
 
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)Tetsuya Hasegawa
 
RFC6243(With-defaults Capability for NETCONF)の勉強資料
RFC6243(With-defaults Capability for NETCONF)の勉強資料RFC6243(With-defaults Capability for NETCONF)の勉強資料
RFC6243(With-defaults Capability for NETCONF)の勉強資料Tetsuya Hasegawa
 
5Gを含む将来ネットワークにおけるAI活用に関する国際標準化動向
5Gを含む将来ネットワークにおけるAI活用に関する国際標準化動向5Gを含む将来ネットワークにおけるAI活用に関する国際標準化動向
5Gを含む将来ネットワークにおけるAI活用に関する国際標準化動向Tetsuya Hasegawa
 
MCPC第5回イノベーションチャレンジセミナーメモ
MCPC第5回イノベーションチャレンジセミナーメモMCPC第5回イノベーションチャレンジセミナーメモ
MCPC第5回イノベーションチャレンジセミナーメモTetsuya Hasegawa
 
面白いセキュリティツール
面白いセキュリティツール面白いセキュリティツール
面白いセキュリティツールTetsuya Hasegawa
 
3GPP TS 38.300-100まとめ
3GPP TS 38.300-100まとめ3GPP TS 38.300-100まとめ
3GPP TS 38.300-100まとめTetsuya Hasegawa
 
Infer:人工知能を使った静的コードチェック
Infer:人工知能を使った静的コードチェックInfer:人工知能を使った静的コードチェック
Infer:人工知能を使った静的コードチェックTetsuya Hasegawa
 
3GPP TR23.711-e00まとめ
3GPP TR23.711-e00まとめ3GPP TR23.711-e00まとめ
3GPP TR23.711-e00まとめTetsuya Hasegawa
 
3GPP TR38.801-e00まとめ
3GPP TR38.801-e00まとめ3GPP TR38.801-e00まとめ
3GPP TR38.801-e00まとめTetsuya Hasegawa
 
Web applicationpenetrationtest その5
Web applicationpenetrationtest その5Web applicationpenetrationtest その5
Web applicationpenetrationtest その5Tetsuya Hasegawa
 
Web applicationpenetrationtest その4
Web applicationpenetrationtest その4Web applicationpenetrationtest その4
Web applicationpenetrationtest その4Tetsuya Hasegawa
 
Web applicationpenetrationtest その3
Web applicationpenetrationtest その3Web applicationpenetrationtest その3
Web applicationpenetrationtest その3Tetsuya Hasegawa
 
Web applicationpenetrationtest その2
Web applicationpenetrationtest その2Web applicationpenetrationtest その2
Web applicationpenetrationtest その2Tetsuya Hasegawa
 

More from Tetsuya Hasegawa (20)

CVE-2021-3156 Baron samedit (sudoの脆弱性)
CVE-2021-3156 Baron samedit (sudoの脆弱性)CVE-2021-3156 Baron samedit (sudoの脆弱性)
CVE-2021-3156 Baron samedit (sudoの脆弱性)
 
RFC8528(YANG Schema Mount)の勉強資料
RFC8528(YANG Schema Mount)の勉強資料RFC8528(YANG Schema Mount)の勉強資料
RFC8528(YANG Schema Mount)の勉強資料
 
RFC7951(JSON Encoding of Data Modeled with YANG)の勉強資料
RFC7951(JSON Encoding of Data Modeled with YANG)の勉強資料RFC7951(JSON Encoding of Data Modeled with YANG)の勉強資料
RFC7951(JSON Encoding of Data Modeled with YANG)の勉強資料
 
面白いセキュリティツール その2
面白いセキュリティツール その2面白いセキュリティツール その2
面白いセキュリティツール その2
 
RFC8632(A YANG Data Model for Alarm Management)の勉強資料
RFC8632(A YANG Data Model for Alarm Management)の勉強資料RFC8632(A YANG Data Model for Alarm Management)の勉強資料
RFC8632(A YANG Data Model for Alarm Management)の勉強資料
 
RFC8525(YANG Library)の勉強資料。
RFC8525(YANG Library)の勉強資料。RFC8525(YANG Library)の勉強資料。
RFC8525(YANG Library)の勉強資料。
 
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
 
RFC6243(With-defaults Capability for NETCONF)の勉強資料
RFC6243(With-defaults Capability for NETCONF)の勉強資料RFC6243(With-defaults Capability for NETCONF)の勉強資料
RFC6243(With-defaults Capability for NETCONF)の勉強資料
 
5Gを含む将来ネットワークにおけるAI活用に関する国際標準化動向
5Gを含む将来ネットワークにおけるAI活用に関する国際標準化動向5Gを含む将来ネットワークにおけるAI活用に関する国際標準化動向
5Gを含む将来ネットワークにおけるAI活用に関する国際標準化動向
 
MCPC第5回イノベーションチャレンジセミナーメモ
MCPC第5回イノベーションチャレンジセミナーメモMCPC第5回イノベーションチャレンジセミナーメモ
MCPC第5回イノベーションチャレンジセミナーメモ
 
RFC5996(IKEv2)第2版
RFC5996(IKEv2)第2版RFC5996(IKEv2)第2版
RFC5996(IKEv2)第2版
 
面白いセキュリティツール
面白いセキュリティツール面白いセキュリティツール
面白いセキュリティツール
 
3GPP TS 38.300-100まとめ
3GPP TS 38.300-100まとめ3GPP TS 38.300-100まとめ
3GPP TS 38.300-100まとめ
 
Infer:人工知能を使った静的コードチェック
Infer:人工知能を使った静的コードチェックInfer:人工知能を使った静的コードチェック
Infer:人工知能を使った静的コードチェック
 
3GPP TR23.711-e00まとめ
3GPP TR23.711-e00まとめ3GPP TR23.711-e00まとめ
3GPP TR23.711-e00まとめ
 
3GPP TR38.801-e00まとめ
3GPP TR38.801-e00まとめ3GPP TR38.801-e00まとめ
3GPP TR38.801-e00まとめ
 
Web applicationpenetrationtest その5
Web applicationpenetrationtest その5Web applicationpenetrationtest その5
Web applicationpenetrationtest その5
 
Web applicationpenetrationtest その4
Web applicationpenetrationtest その4Web applicationpenetrationtest その4
Web applicationpenetrationtest その4
 
Web applicationpenetrationtest その3
Web applicationpenetrationtest その3Web applicationpenetrationtest その3
Web applicationpenetrationtest その3
 
Web applicationpenetrationtest その2
Web applicationpenetrationtest その2Web applicationpenetrationtest その2
Web applicationpenetrationtest その2
 

RFC5277(NETCONF Event Notifications)の勉強資料

  • 1. RFC5277(NETCONF Event Notifications)ベースの勉強資料です。 下線、ハイライトは個人的に重要そうなところ。斜体、#はメモ。 原文のMUST/REQUIRED/SHALL/SHOULD/MAY/OPTIONAL等の​RFC2119​用語は原文のまま残しています。  MUST、REQUIRED、SHALL:絶対的な要求事項  MUST NOT:絶対的な禁止事項  SHOULD、RECOMMENDED:慎重に重要性を判断するべき要求事項  SHOULD NOT、NOT RECOMMENDED:慎重に重要性を判断するべき禁止事項  MAY、OPTIONAL:オプション。 間違っていたらコメントをお願いします。 元ネタ(RFC5277) https://tools.ietf.org/html/rfc5277 Errata https://www.rfc-editor.org/errata_search.php?rfc=5277 NETCONF Event Notifications Abstract  本ドキュメントはNetwork Configuration protocol(NETCONF)の非同期メッセージnotificationサービスを提供す るメカニズムを定義する。これは、基本的なNETCONF上に構築されたオプション機能である。 Table of Contents Abstract 1 Table of Contents 1 1. Introduction 2 1.1. Definition of Terms 3 1.2. Motivation 3 1.3. Event Notifications in NETCONF 4 2. Notification-Related Operations 4 2.1. Subscribing to Receive Event Notifications 4 2.1.1. <create-subscription> 4 2.2. Sending Event Notifications 5 2.1.1. <notification> 5 2.3. Terminating the Subscription 6 3. Supporting Concepts 6 3.1. Capabilities Exchange 6 3.1.1. Capability Identifier 6 3.1.2. Capability Example 6 3.2. Event Streams 6 3.2.1. Event Stream Definition 7 3.2.2. Event Stream Content Format 7 3.2.3. Default Event Stream 7 3.2.4. Event Stream Sources 8 3.2.5. Event Stream Discovery 8 1
  • 2. 3.2.5.1. Name Retrieval Using <get> Operation 8 3.2.5.2. Event Stream Subscription 9 3.2.5.2.1. Filtering Event Stream Contents 9 3.3. Notification Replay 9 3.3.1. Overview 9 3.3.2. Creating a Subscription with Replay 10 3.4. Notification Management Schema 10 3.5. Subscriptions Data 13 3.6. Filter Mechanics 13 3.6.1. Filtering 13 3.7. Message Flow 13 4. XML Schema for Event Notifications 15 5. Filtering Examples 17 5.1. Subtree Filtering 19 5.2. XPATH Filters 20 6. Interleave Capability 21 6.1. Description 21 6.2. Dependencies 21 6.3. Capability Identifier 21 6.4. New Operations 21 6.5. Modifications to Existing Operations 21 7. Security Considerations 21 8. IANA Considerations 22 1. Introduction  NETCONFは4つのlayerに分割できる。  本ドキュメントはNETCONFへ非同期メッセージnotificationサービスを提供するメカニズムを定義する。これは、基本的な NETCONF上に構築されたオプション機能である。 2
  • 3. 1.1. Definition of Terms  "MUST" "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL"は​https://tools.ietf.org/html/rfc2119​の通り解釈される。 用語 意味 Element  XML Element。 Subscription  NETCONFセッションでイベントnotificationを受信する ための手続き(method)。セッションのライフタイムに拘束 される。 Operation  NETCONFプロトコルのoperation。 Event、イベント  Configの変更、障害、ステータスの変化、閾値の調査、シ ステムへの外部からの入力等の関心事項。イベントの発生は notificationという非同期メッセージの仕組みによって関 係者に送信される。 Replay  ​Requestに応じて以前のnotificationを送信する機能。 このnotificationは非同期で送信される。この機能は NETCONFサーバーに実装され、NETCONFクライアントに呼び 出される。 Stream  送信基準を満たしNETCONFクライアントが利用可能なイベ ントnotificationの集合。 Filter  イベントのsubsetを指定するパラメーター。フィルタは NETCONFプロトコルのfilterとして定義される。 1.2. Motivation  本ドキュメントのモチベーションはNETCONFで使用されるデータモデルおよびセキュリティモデルで非同期メッセージの送信を 可能とすることである。本ドキュメントのスコープは以下のニーズを満たすことである。 Configuration operationをサポートするためのnotificationをサポートすること。 Configuration operationと同じデータモデルをnotificationに使用できること。 ソリューションはある程度のメッセージサイズ(あまり短すぎない)をサポートすること。 Notificationはコネクション指向のメカニズムによって行われる。 Notificationのためのsubscriptionメカニズムが提供されること。これは、NETCONFサーバーがnotificationの開始 前にnotificationを送信しないこと、NETCONFクライアントがnotificationフローを開始することである。 Notificationの送信をフィルタリングするメカニズムがNETCONFサーバー内に配置されること。 Notificationに含まれる情報は、トランスポートプロトコルとは独立していること。 サーバーはローカルに記録されたnotificationをreplayする機能を備えていること。 3
  • 4. 1.3. Event Notifications in NETCONF  本ドキュメントのモチベーションはNETCONFで使用されるデータモデルおよびセキュリティモデルで非同期メッセージの送信を 可能とすることである。本ドキュメントのスコープは以下のニーズを満たすことである。  このドキュメントはNETCONFクライアントがイベントnotificationを受信するためにsubscriptionを作成することによっ て、NETCONFサーバーからのイベントnotificationを受信する準備をするメカニズムを定義する。NETCONFサーバーは subscription requestが成功/失敗を示すresponseをし、成功した場合はイベントがシステム内で発生したときにNETCONF クライアントにイベントnotificationの送信をする。これらのイベントnotificationはNETCONFセッションが終了するか subscriptionが終了するまで続く。イベントnotification subscriptionは、NETCONFクライアントが所望のイベントを 指定できるようにするためのオプションがある。これは、subscriptionが作成されるときに指定される。​一度作成した subscriptionは変更できない。  ​Notification subscriptionがactiveの場合でもNETCONFサーバーは<close-session> operationを許容し、処理 すること(MUST)。NETCONFサーバーは他のoperationを許容してよく(MAY)、そうでない場合は拒否し、 'resource-denied' errorを送信すること(MUST)。NETCONFサーバーは:interleave capabilityを使用して他の operationを処理することをアドバタイズする。 2. Notification-Related Operations 2.1. Subscribing to Receive Event Notifications  イベントnotification subscriptionは、NETCONFクライアントによって開始され、NETCONFサーバーは応答する。 Subscriptionはsubscriptionのライフタイム中は単一のstreamにバインドされる。イベントnotification subscription作成時に所望のイベントが指定される。イベントnotification subscriptionのコンテンツはユーザーが指 定するフィルタによって選択できる。 2.1.1. <create-subscription> 名前 create-subscription 概要  Subscriptionが終了するまで非同期イベントnotificatinをoperation の発行者に送信するイベントnotification subscriptionを開始する。 パラメーター Stream  オプションパラメーター。所望するイベントのstreamを示す。存在しない場 合、デフォルトのNECONF streamが送信される。 Filter  オプションパラメーター。所望するイベントのsubsetを示す。このパラメー ターのフォーマットはNETCONFプロトコルのfilterのフォーマットと同じで ある。存在しない場合、他のパラメーターによって排除されない全てのイベン トが送信される。フィルタの詳細については​section 3.6​参照。 Start Time  オプションパラメーター。Replayの開始時刻。<startTime>が存在しない 場合、これはreplay subscriptionではない。​現在の時刻よりも後の時刻を 設定することはできない。​指定された<startTime>がサポートできる時間より も早い場合、replayは最も早い利用可能なnotificationから開始する。パ ラメーターはdateTime型で​RFC3339​に準拠する。タイムゾーンをサポートす ること。 Stop Time  オプションパラメーター。Replayの終了時刻。<stopTime>が存在しない 場合、notificationはsubscriptionが終了するまで続く。<startTime> と一緒に使用する必要がある。現在時刻以降の<stopTime>が指定することは 4
  • 5. 許容される。パラメーターはdateTime型で​RFC3339​に準拠する。タイムゾー ンをサポートすること。 Positive Response  デバイスがrequestを完了できた場合、<ok>elementを含む <rpc-reply>が送信される。 Negative Response  デバイスがrequestを完了できない場合、<rpc-error>elementが <rpc-reply>に含まれる。無効な構文のフィルタが存在する場合、存在しない streamが指定されている場合、subscriptionのrequestは失敗する。 <startTime>を指定せ ずに<stopTime>を指 定した場合 Tag:missing-element Error-type: protocol Severity: error Error-info: <bad-element>: startTime Description: An expected element is missing. NETCONFサーバーが replay機能をサポート していない場合 Tag: operation-failed Error-type: protocol Severity: error Error-info: none Description: Request could not be completed because the requested operation failed for some reason not covered by any other error condition. <stopTime>が <startTime>より前の 時刻の場合 Tag: bad-element Error-type: protocol Severity: error Error-info: <bad-element>: stopTime Description: An element value is not correct; e.g., wrong type, out of range, pattern mismatch. <startTime>が現在時 刻よりも後の場合 Tag: bad-element Error-type: protocol Severity: error Error-info: <bad-element>: startTime Description: An element value is not correct; e.g., wrong type, out of range, pattern mismatch. Example 複雑な例はsection 5参照。 <netconf:rpc message-id="101" xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0"> <create-subscription xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"> </create-subscription> </netconf:rpc> 2.2. Sending Event Notifications  Subscriptionが設定されると、NETCONFサーバーはイベントnotificationを非同期に送信する。 2.1.1. <notification> 名前 notification 概要  所望のイベント、つまり指定されたフィルタ条件を満たすイベントが発生し たときに非同期に<create-subscription> operationを実行したクライ アントにイベントnotificationが送信される。イベントnotificationは wll-formed XMLである。​<notification>はRPCメソッドではなく、片方 5
  • 6. 向メッセージであり、最上位elementに設定される。 パラメーター  存在する場合notification固有のコンテンツが含まれる。<eventTime> 以外のnotificationのコンテンツは本ドキュメントのスコープ外である。 eventTime  イベントが生成された時刻。パラメーターはdateTime型で​RFC3339​に準拠 する。タイムゾーンをサポートすること。 Response なし。 2.3. Terminating the Subscription  イベントnotification subscriptionのcloseは、subscriptionセッションからの<close-session>operationを 使用するか、トランスポートセッションまたはNETCONFセッション(<kill-session>operation)によって実行される。 Subscriptionの作成時にstopTimeが指定されている場合、subscriptionはstopTimeに達したときに終了する。この場 合、NETCONFセッションは続く。 3. Supporting Concepts 3.1. Capabilities Exchange  イベントnotificationを処理、送信する機能はNETCONFクライアント/サーバー間のcapability exchangeで通知され る。 3.1.1. Capability Identifier  "urn:ietf:params:netconf:capability:notification:1.0" 3.1.2. Capability Example <hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <capabilities> <capability> urn:ietf:params:xml:ns:netconf:base:1.0 </capability> <capability> urn:ietf:params:netconf:capability:startup:1.0 </capability> <capability> urn:ietf:params:netconf:capability:notification:1.0 </capability> </capabilities> <session-id>4</session-id> </hello> 3.2. Event Streams  イベントstreamは送信基準(forwarding criteria)を満たすイベントnotificationの集合として定義される。 6
  • 7.  Figure 2は、notificationフローを表している。コンセプトであり、実装を強制するものではない。System components(c1,...,cn)はcentral event componentに渡されるイベントnotificationを生成する。Central componentは各イベントnotificationを検査し、イベントnotificationをstreamの定義を照合する。一致した場合、イベ ントnotificationはそのイベントstream(stream 1,...,stream n)のメンバーと判定される。イベント nofiticationは複数のイベントstreamの一部であってもよい。  NETCONFサーバーがstreamからイベントを受信した後、サーバーによってXMLに変換され、<notification>elementはそ のstreamをsubscribeしている全てのNETCONFセッションに送信できる状態になる。  <notification>elementの生成後、アクセス制御がサーバーによって実施され、NETCONFセッションが<notification> を受信するためのパーミッションを持っていない場合、そのセッションに関しては破棄され、イベントの処理が終了する。  NETCONFクライアントがイベントstreamをsubscribeすると、ユーザー定義のフィルタ elementがイベントstreamに適用 され、一致するイベントnotificationがNETCONFサーバーに転送され、subscribeしているNETCONFクライアントに送信さ れる。フィルタは<create-subscription>operationでクライアントからサーバーに送信され、streamによって生成された 各<notification>elementに適用される。フィルタリングの詳細は​Section 3.6​参照。  Notification-logging serviceが利用可能である場合、central event processorはnotificationをロギングす る。NETCONFサーバーはオプションであるreplayによりログに記録されたnotificationを後で取り出せる。Replayの詳細は section 3.3​参照。 Figure 2 3.2.1. Event Stream Definition  イベントstreamは管理対象のデバイスにあらかじめ定義されている。イベントstreamは本ドキュメントのスコープ外である。 しかし、イベントstreamはベンダー、ユーザーのconfig等によってあらかじめ決められていると想定される。デバイスベンダー はNETCONFプロトコル(<edit-config>等)によってイベントstreamの設定を可能とすることができる。 3.2.2. Event Stream Content Format  NETCONFクライアントが利用可能なイベントstream(つまり、NETCONFサーバーが送信するnotification)の内容はXML であること(MUST)。 3.2.3. Default Event Stream  ​Notification capabilityをサポートするNETCONFサーバーの実装は、"NETCONF" notification event streamを サポートすること(MUST)。このstreamにはNETCONFサーバーでサポートされている全てのNETCONF XML イベント notificationが含まれる。​文字列"NETCONF"は<stream>への<get>operation、<create-subscription>operation 7
  • 8. においてstreamをサポートしていることをadvertisementするために使用する。イベントsteramに対する<eventTime>以下 のイベントnotificationの内容の定義は本ドキュメントのスコープ外である。 3.2.4. Event Stream Sources  デフォルトイベントstream(NETCONF)以外の追加のイベントstream(SNMP、syslog等)の仕様は本ドキュメントのス コープ外である。NETCONFサーバーの実装は、サポートされているイベントstreamの作成において、任意の所望のイベント stream sourceを使用することができる。 3.2.5. Event Stream Discovery  NETCONFクライアントは<get>operationを使用してNETCONFサーバーがサポートしているイベントstreamのリストを取得 する。 3.2.5.1. Name Retrieval Using <get> Operation  利用可能なイベントstreamのリストは<get>operationによって<streams>サブツリーをrequestすることで取得できる。 利用可能なイベントsteramはNETCONFサーバーがイベントstreamを一意に識別する<name>element(mandatoryパラメー ター)、<description>elementを含むresponseで返される。利用可能なイベントstreamが存在しない場合、empty replyが返される。  ​Streamに関する追加情報には、notificationのreplayが可能かどうか、可能ならばreplayが可能な最も早い時刻のタイ ムスタンプが含まれる​。  以下の例は、<get>operationを使用して利用可能なイベントstreamのリストを取得する方法である。 <rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <get> <filter type="subtree"> <netconf xmlns="urn:ietf:params:xml:ns:netmod:notification"> <streams/> </netconf> </filter> </get> </rpc>  NETCONFサーバーは利用可能なイベントstreamのリスト(NETCONF、SNMP、syslog等)を返す。 <rpc-reply message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <data> <netconf xmlns="urn:ietf:params:xml:ns:netmod:notification"> <streams> <stream> <name>NETCONF</name> <description>default NETCONF event stream </description> <replaySupport>true</replaySupport> <replayLogCreationTime> 2007-07-08T00:00:00Z </replayLogCreationTime> </stream> 8
  • 9. <stream> <name>SNMP</name> <description>SNMP notifications</description> <replaySupport>false</replaySupport> </stream> <stream> <name>syslog-critical</name> <description>Critical and higher severity </description> <replaySupport>true</replaySupport> <replayLogCreationTime> 2007-07-01T00:00:00Z </replayLogCreationTime> </stream> </streams> </netconf> </data> </rpc-reply> 3.2.5.2. Event Stream Subscription  NETCONFクライアントはNETCONFサーバーからセッションで利用可能なイベントstreamのリストをrequestし、所望のイベ ントstream名で<create-subscription>operationを発行する。<create-subscription>operationからイベント stream名を省略するとデフォルトのNETCONFイベントstreamにsubscriptionされる。 3.2.5.2.1. Filtering Event Stream Contents  イベントstreamで送信されるイベントnotificationはsubscription作成時(<create-subscription>operation) に指定されたフィルタによってフィルタリングできる。これは、イベントnotification subscriptionに関連付けられた一時 的なフィルタであり、イベントstream自体は変更しない。filter elementは<notification>がラップするコンテンツに対 して適用される。詳細は​section 5​参照。サブツリーまたはXPATHフィルタリングのいずれかを使用できる。  ​Notification capabilityのXPATHサポートはXPATH capability advertisementの一部としてアドバタイズされ る。​XPATHサポートがXPATH capabilityでアドバタイズされる場合、XPATHがnotificationフィルタリングでサポートされ る。アドバタイズされない場合、XPATHはnotificationフィルタリングでサポートされない。 3.3. Notification Replay 3.3.1. Overview  Replayとは、過去に生成されたnotificationを再送信するイベントsubscriptionを作成する機能である。Replayの notificationは通常のnotificationと同じ方法で送信される。  Notificationのreplayはオプションの<startTime>を含めることで指定する。これはreplayの開始時刻を示す。終了時 刻は<stopTime>で指定する。これらのパラメーターが存在しない場合はnotificationはsubscriptionが終了するまで送信 される。  Replayをサポートするnotification streamはreplay requestに対応するために無制限にnotificationを送信する ことは期待されていない。NETCONFクライアントは<replayLogCreationTime>と<replayLogAgedTime>をクエリして replayの情報を取得できる。  任意の時点で格納されているnotificationの数はNETCONFサーバー実装依存であり、これに関わる制御パラメーターは本ド キュメントのスコープ外である。 9
  • 10.  Replayのログのサイズ、フォーマットに制限はない。​Streamがreplayをサポートするかどうかは、<streams>elementに <get>operationし、<replaySupport>objectの値を調べることで確認できる。このスキーマは利用可能な最も古い notificationを示す<replayLogCreationTime>elementも提供する。 #こんな感じでわかる <replaySupport>true</replaySupport> <replayLogCreationTime> 2007-07-08T00:00:00Z </replayLogCreationTime> 3.3.2. Creating a Subscription with Replay  この機能は<startTime>、<stopTime>という<create-subscription>operationのオプションパラメーターを使用す る。<startTime>はイベントnotificationがreplayされる最古の時刻を設定し、replayを実施することを示す。この時刻 より前に生成されたイベントはマッチしない。<stopTime>はイベントnotificationがreplayされる最新の時刻を指定する。 存在しない場合、subscriptionが終了するまで送信され続ける。  ​<startTime>と<stopTime>はイベントが生成された時刻に関連付く​ことに注意せよ。  ​<replayComplete>notificationは全てのreplay notificationが送信されたことを示すために送信される。 SubscriptionにstopTimeがある場合、そのセッションは通常のNETCONFセッションに戻り、NETCONFサーバーは <rpc>operationを受け入れる。Stoptimeのないsubscriptionの場合、<replayComplete>が送信された時点で subscription開始以降に生成された全てのnotificationが送信され、以降も発生したnotificationが送信される。  <replayComplete> notificationと<notificationComplete> notificationは省略できず、replay subscriptionでは必ず送信される。 3.4. Notification Management Schema  このスキーマはシステムでサポートされているイベントstreamを確認するための例として使用される。<replayComplete> notificationと<notificationComplete>notificationの定義も含まれる。これらのnotificationはイベント replayが適用可能な全てのnotificationを送信し、subscriptionが終了したことを示す。 <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:ncEvent="urn:ietf:params:xml:ns:netconf:notification:1.0" xmlns:manageEvent="urn:ietf:params:xml:ns:netmod:notification" targetNamespace="urn:ietf:params:xml:ns:netmod:notification" elementFormDefault="qualified" attributeFormDefault="unqualified" xml:lang="en" version="1.0"> <xs:annotation> <xs:documentation xml:lang="en"> A schema that can be used to learn about current event streams. It also contains the replayComplete and notificationComplete notification. </xs:documentation> </xs:annotation> <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/> <xs:import namespace="urn:ietf:params:xml:ns:netconf:base:1.0" schemaLocation="netconf.xsd"/> <xs:import namespace= 10
  • 11. "urn:ietf:params:xml:ns:netconf:notification:1.0" schemaLocation="notification.xsd"/> <xs:element name="netconf" type="manageEvent:Netconf"/> <xs:complexType name="Netconf"> <xs:sequence> <xs:element name="streams" > ​#システムがサポートするstreamのリスト <xs:annotation> <xs:documentation> The list of event streams supported by the system. When a query is issued, the returned set of streams is determined based on user privileges. </xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence minOccurs="1" maxOccurs="unbounded"> <xs:element name="stream"> ​#stream <xs:annotation> <xs:documentation> Stream name, description, and other information. </xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element name="name" type="ncEvent:streamNameType"> ​#stream名 <xs:annotation> <xs:documentation> The name of the event stream. If this is the default NETCONF stream, this must have the value "NETCONF". </xs:documentation> </xs:annotation> </xs:element> <xs:element name="description" type="xs:string">#streamのdescription <xs:annotation> <xs:documentation> A description of the event stream, including such information as the type of events that are sent over this stream. </xs:documentation> </xs:annotation> </xs:element> <xs:element name="replaySupport" type="xs:boolean">​#replayのサポート有無 <xs:annotation> <xs:documentation> An indication of whether or not event replay is available on this stream. </xs:documentation> </xs:annotation> </xs:element> <xs:element name="replayLogCreationTime" 11
  • 12. type="xs:dateTime" minOccurs="0">​#ログが作成された時刻。最古の ログより古い場合があることに注意せよ。ログがリセットされたときに更新される。Replayをサポートする場合は必須(MUST )。 <xs:annotation> <xs:documentation> The timestamp of the creation of the log used to support the replay function on this stream. Note that this might be earlier then the earliest available notification in the log. This object is updated if the log resets for some reason. This object MUST be present if replay is supported. </xs:documentation> </xs:annotation> </xs:element> <xs:element name="replayLogAgedTime" type="xs:dateTime" minOccurs="0">​#ログの最新のnotification時刻。 Replayをサポートする場合でログの最新のnotification時刻が更新された場合は必須(MUST)。 <xs:annotation> <xs:documentation> The timestamp of the last notification aged out of the log. This object MUST be present if replay is supported and any notifications have been aged out of the log. </xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="ReplayCompleteNotificationType"> <xs:complexContent> <xs:extension base="ncEvent:NotificationContentType"/> </xs:complexContent> </xs:complexType> <xs:element name="replayComplete" type="manageEvent:ReplayCompleteNotificationType" substitutionGroup="ncEvent:notificationContent"> ​#subscriptionのreplayが終了したことを示 す。 <xs:annotation> <xs:documentation> This notification is sent to signal the end of a replay portion of a subscription. </xs:documentation> </xs:annotation> 12
  • 13. </xs:element> <xs:complexType name="NotificationCompleteNotificationType"> <xs:complexContent> <xs:extension base="ncEvent:NotificationContentType"/> </xs:complexContent> </xs:complexType> <xs:element name="notificationComplete" type="manageEvent:NotificationCompleteNotificationType" substitutionGroup="ncEvent:notificationContent">​#notification subscriptionが終了したこ とを示す。stopTimeが設定された場合に送信される。 <xs:annotation> <xs:documentation> This notification is sent to signal the end of a notification subscription. It is sent in the case that stopTime was specified during the creation of the subscription. </xs:documentation> </xs:annotation> </xs:element> </xs:schema> 3.5. Subscriptions Data  Subscriptionは永続的ではないstate informationで、セッションまたは<stopTime>により定義される。 3.6. Filter Mechanics  特定のデータを抽出するためにfilter elementが設定され、その値がイベントnotificationに存在しない場合、 notificationは除外される。例えば、'severity=critical'が設定されていた場合にイベントnotificationに該当項目 がない場合、notificationは除外される。  サブツリーフィルタリングの場合、空でないnodeは一致するフィルタであることを意味する。XPathフィルタリングの場合、 XPath​で定義されたメカニズムにより返った値をbool型に変換する。 3.6.1. Filtering  イベントnotification subscriptionが作成時にフィルタリングが明示的に'filter'パラメーターで設定される。 3.7. Message Flow  以下の図はsubscriptionを作成し、notification送受信を開始するためのNETCONFクライアントとNETCONFサーバーの間 のメッセージフローである。このsubscriptionでは<startTime>を設定するため、サーバーはログに記録された notificationをreplayする。Subscriptionが作成される前に他にもrpc/rpc-replyが発生する可能性があるが、図では 省略している。 13
  • 15. 4. XML Schema for Event Notifications  NETCONF Event NotificationのXMLスキーマである。 <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0" xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0" targetNamespace= "urn:ietf:params:xml:ns:netconf:notification:1.0" elementFormDefault="qualified" attributeFormDefault="unqualified" xml:lang="en"> <!-- import standard XML definitions --> <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"> <xs:annotation> <xs:documentation> This import accesses the xml: attribute groups for the xml:lang as declared on the error-message element. </xs:documentation> </xs:annotation> </xs:import> <!-- import base netconf definitions --> <xs:import namespace="urn:ietf:params:xml:ns:netconf:base:1.0" schemaLocation="netconf.xsd"/> <!-- ************** Symmetrical Operations ********************--> <!-- <create-subscription> operation --> <xs:complexType name="createSubscriptionType"> <xs:complexContent> <xs:extension base="netconf:rpcOperationType"> <xs:sequence> <xs:element name="stream" type="streamNameType" minOccurs="0"> <xs:annotation> <xs:documentation> An optional parameter that indicates which stream of events is of interest. If not present, then events in the default NETCONF stream will be sent. </xs:documentation> </xs:annotation> </xs:element> <xs:element name="filter" type="netconf:filterInlineType" minOccurs="0"> <xs:annotation> <xs:documentation> An optional parameter that indicates 15
  • 16. which subset of all possible events is of interest. The format of this parameter is the same as that of the filter parameter in the NETCONF protocol operations. If not present, all events not precluded by other parameters will be sent. </xs:documentation> </xs:annotation> </xs:element> <xs:element name="startTime" type="xs:dateTime" minOccurs="0" > <xs:annotation> <xs:documentation> A parameter used to trigger the replay feature indicating that the replay should start at the time specified. If start time is not present, this is not a replay subscription. </xs:documentation> </xs:annotation> </xs:element> <xs:element name="stopTime" type="xs:dateTime" minOccurs="0" > <xs:annotation> <xs:documentation> An optional parameter used with the optional replay feature to indicate the newest notifications of interest. If stop time is not present, the notifications will continue until the subscription is terminated. Must be used with startTime. </xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:simpleType name="streamNameType"> <xs:annotation> <xs:documentation> The name of an event stream. </xs:documentation> </xs:annotation> <xs:restriction base="xs:string"/> </xs:simpleType> <xs:element name="create-subscription" type="createSubscriptionType" substitutionGroup="netconf:rpcOperation"> <xs:annotation> <xs:documentation> The command to create a notification subscription. It takes as argument the name of the notification stream and filter. Both of those options 16
  • 17. limit the content of the subscription. In addition, there are two time-related parameters, startTime and stopTime, which can be used to select the time interval of interest to the notification replay feature. </xs:documentation> </xs:annotation> </xs:element> <!-- ************** One-way Operations ******************--> <!-- <Notification> operation --> <xs:complexType name="NotificationContentType"/> <xs:element name="notificationContent" type="NotificationContentType" abstract="true"/> <xs:complexType name="NotificationType"> <xs:sequence> <xs:element name="eventTime" type="xs:dateTime"> <xs:annotation> <xs:documentation> The time the event was generated by the event source. </xs:documentation> </xs:annotation> </xs:element> <xs:element ref="notificationContent"/> </xs:sequence> </xs:complexType> <xs:element name="notification" type="NotificationType"/> </xs:schema> 5. Filtering Examples  イベントnotification subscriptionでコンテンツをフィルタリングする方法の例を示す。  フィルタの説明をするためにイベントnotification コンテンツの例を示す。以下の例では、イベントnotificationスキー マ定義がイベントクラス(例:障害、状態、config)、エンティティ、severity、operational stateをもち、最上位レベ ルに<event> elementをもつと仮定する。 <?xml version="1.0" encoding="UTF-8"?> <xs:schema targetNamespace="http://example.com/event/1.0" xmlns="http://example.com/event/1.0" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ncEvent="urn:ietf:params:xml:ns:netconf:notification:1.0"> <xs:import namespace= "urn:ietf:params:xml:ns:netconf:notification:1.0" schemaLocation="notification.xsd"/> <xs:complexType name="eventType"> <xs:complexContent> 17
  • 18. <xs:extension base="ncEvent:NotificationContentType"> <xs:sequence> <xs:element name="eventClass" /> <xs:element name="reportingEntity"> <xs:complexType> <xs:sequence> <xs:any namespace="##any" processContents="lax"/> </xs:sequence> </xs:complexType> </xs:element> <xs:choice> <xs:element name="severity"/> <xs:element name="operState"/> </xs:choice> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:element name="event" type="eventType" substitutionGroup="ncEvent:notificationContent"/> </xs:schema>  上記のnotificationの定義により、例として以下のnotificationが生成される。 <notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"> <eventTime>2007-07-08T00:01:00Z</eventTime> <event xmlns="http://example.com/event/1.0"> <eventClass>fault</eventClass> <reportingEntity> <card>Ethernet0</card> </reportingEntity> <severity>major</severity> </event> </notification> <notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"> <eventTime>2007-07-08T00:02:00Z</eventTime> <event xmlns="http://example.com/event/1.0"> <eventClass>fault</eventClass> <reportingEntity> <card>Ethernet2</card> </reportingEntity> <severity>critical</severity> </event> </notification> <notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"> <eventTime>2007-07-08T00:04:00Z</eventTime> 18
  • 19. <event xmlns="http://example.com/event/1.0"> <eventClass>fault</eventClass> <reportingEntity> <card>ATM1</card> </reportingEntity> <severity>minor</severity> </event> </notification> <notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"> <eventTime>2007-07-08T00:10:00Z</eventTime> <event xmlns="http://example.com/event/1.0"> <eventClass>state</eventClass> <reportingEntity> <card>Ethernet0</card> </reportingEntity> <operState>enabled</operState> </event> </notification> 5.1. Subtree Filtering  XMLサブツリーフィルタリングは、​等価(=)と論理和(OR)のみをサポートしている​ため、複雑なフィルタ条件作成には適し ていない。以下のようなイベントnotificationフィルタの定義に使用する。  以下の例はseverityがcritical or major or minorのfaultイベントを選択するものである。  ((fault & severity=critical) | (fault & severity=major) | (fault & severity=minor)) <netconf:rpc netconf:message-id="101" xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0"> <create-subscription xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"> <filter netconf:type="subtree"> <event xmlns="http://example.com/event/1.0"> ​#fault & severity=critical) OR <eventClass>fault</eventClass> <severity>critical</severity> </event> <event xmlns="http://example.com/event/1.0"> ​#fault & severity=major) OR <eventClass>fault</eventClass> <severity>major</severity> </event> <event xmlns="http://example.com/event/1.0"> ​#fault & severity=minor) <eventClass>fault</eventClass> <severity>minor</severity> </event> </filter> </create-subscription> </netconf:rpc>  以下の例はcard Ethernet0のfaultイベントまたはstateイベント or configイベントを選択するものである。  ( state | config | ( fault & ( card=Ethernet0))) <netconf:rpc netconf:message-id="101" xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0"> <create-subscription xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"> <filter netconf:type="subtree"> 19
  • 20. <event xmlns="http://example.com/event/1.0"> ​#state OR <eventClass>state</eventClass> </event> <event xmlns="http://example.com/event/1.0"> ​#config OR <eventClass>config</eventClass> </event> <event xmlns="http://example.com/event/1.0"> ​#fault & card=Ethernet0 <eventClass>fault</eventClass> <reportingEntity> <card>Ethernet0</card> </reportingEntity> </event> </filter> </create-subscription> </netconf:rpc> 5.2. XPATH Filters  XPathでフィルタリングする例を示す。  ((fault) & ((severity=critical) | (severity=major) | (severity=minor))) <netconf:rpc netconf:message-id="101" xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0"> <create-subscription xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"> <filter netconf:type="xpath" xmlns:ex="http://example.com/event/1.0" select="/ex:event[ex:eventClass='fault' and (ex:severity='minor' or ex:severity='major' or ex:severity='critical')]"/> </create-subscription> </netconf:rpc>  XPathでフィルタリングする例を示す。  ( state | config | (fault & card=Ethernet0)) <netconf:rpc message-id="101" xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0"> <create-subscription xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"> <filter netconf:type="xpath" xmlns:ex="http://example.com/event/1.0" select="/ex:event[ (ex:eventClass='state' or ex:eventClass='config') or ((ex:eventClass='fault' and ex:card='Ethernet0'))]"/> </create-subscription> </netconf:rpc> 20
  • 21. 6. Interleave Capability 6.1. Description  ​:interleave capabilityはNETCONFピアがnotification subscription内で他のNETCONF operationをインタ リーブするcapabilityをサポートしていることを示す。​つまり、NETCONFサーバーはsubscriptionがアクティブなセッショ ンでNETCONF requestを受信、処理、応答すること(MUST)。このcapabilityは、NETCONFセッション数を減らすことでス ケーラビリティを向上させる。 6.2. Dependencies  notification capability 6.3. Capability Identifier  urn:ietf:params:netconf:capability:interleave:1.0 6.4. New Operations  なし 6.5. Modifications to Existing Operations  別のsubscriptionがアクティブなときに<create-subscription>が送信された場合、下記のエラーが返される。 Tag: operation-failed Error-type: protocol Severity: error Error-info: none Description: Request could not be completed because the requested operation failed for some reason not covered by any other error condition. 7. Security Considerations  ​NETCONF​のsecurity considerationsはNotification capabilityにも適用される。  アクセス制御の仕組みとトランスポートはソリューションのセキュリティに大きな影響を与える。  トランスポートとcapability exchangeによるNETCONFセッションが確立し、認証されるまで<notification>element が送信されることはない。  セキュリティの確保のためには以下に注意が必要である。 ● <create-subscription>の呼び出し ● read-onlyデータモデルへの<get> ● <notification>のコンテンツ  セキュリティの確保とは、セキュアなトランスポートが使用されていること、NETCONFを実行する権限をユーザーが持っている ことを意味する。本ドキュメントで定義されているコンテンツを取得する<get>を受信すると、クライアントが権限をもつコンテ ンツのみを取得することができる。<create-subscription> operationは<get>の繰り返しとみなすことができ、ユーザー 毎にアクセスできるコンテンツは異なる場合がある。これは<notification>で取得可能な情報に影響する。 21
  • 22.  潜在的なセキュリティの問題の1つは非NETCONF stream(syslog、SNMP等)からのデータ転送である。NETCONFサーバー はstreamにアクセス制御を適用する必要がある(responsibility)。  ​Notificationのコンテンツとイベントstreamの名前には機密情報が含まれている可能性があり、許可されたユーザーのみが 取得できるようにする必要がある。NETCONFサーバーはユーザーが取得する権限が無いコンテンツをnotificationに含めない こと(MUST NOT)。  <stopTime>でsubscriptionが作成された場合、replayが完了するとNETCONFセッションは通常のNETCONFセッションに なる。NETCONFクライアントは使用しなくなったときにセッションを終了する必要がある(responsibility)。  ​悪意のあるNETCONFクライアントが大量の<create-subscription>を送信するとsubscriptionが蓄積され、リソースを 使い切る可能性がある。このような状況には<kill-session>を使用して疑わしいNETCONFセッションを終了することによって subscriptionを終了できる。  ​#疑わしいセッションはclose-sessionではなくてkill-sessionで無理やり切っていい 8. IANA Considerations  3つのURIをNETCONF XML namespaceのためにIETF XMLレジストリに登録する。 Index Capability Identifier :notification urn:ietf:params:netconf:capability:notification:1.0 :interleave urn:ietf:params:netconf:capability:interleave:1.0  URI: urn:ietf:params:xml:ns:netmod:notification 22