draft-ietf-netconf-notification-06.txt   draft-ietf-netconf-notification-07.txt 
Network Working Group S. Chisholm Network Working Group S. Chisholm
Internet-Draft Nortel Internet-Draft Nortel
Intended status: Standards Track H. Trevino Intended status: Standards Track H. Trevino
Expires: August 24, 2007 Cisco Expires: November 16, 2007 Cisco
February 20, 2007 May 15, 2007
NETCONF Event Notifications NETCONF Event Notifications
draft-ietf-netconf-notification-06.txt draft-ietf-netconf-notification-07.txt
Status of this Memo Status of this Memo
By submitting this Internet-Draft, each author represents that any By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79. aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
skipping to change at page 1, line 35 skipping to change at page 1, line 35
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt. http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on August 24, 2007. This Internet-Draft will expire on November 16, 2007.
Copyright Notice Copyright Notice
Copyright (C) The IETF Trust (2007). Copyright (C) The IETF Trust (2007).
Abstract Abstract
This document defines mechanisms which provide an asynchronous This document defines mechanisms which provide an asynchronous
message notification delivery service for the NETCONF protocol. This message notification delivery service for the NETCONF protocol. This
is an optional capability built on top of the base NETCONF is an optional capability built on top of the base NETCONF
definition. This document defines the capabilities and operations definition. This document defines the capabilities and operations
necessary to support this service. necessary to support this service.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1. Definition of Terms . . . . . . . . . . . . . . . . . . . 4 1.1. Definition of Terms . . . . . . . . . . . . . . . . . . . 4
1.2. Event Notifications in NETCONF . . . . . . . . . . . . . . 5 1.2. Motivation . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3. Motivation . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3. Event Notifications in NETCONF . . . . . . . . . . . . . . 5
1.4. Requirements . . . . . . . . . . . . . . . . . . . . . . . 5 1.4. Requirements . . . . . . . . . . . . . . . . . . . . . . . 6
2. Notification-Related Operations . . . . . . . . . . . . . . . 7 2. Notification-Related Operations . . . . . . . . . . . . . . . 7
2.1. Subscribing to receive Event Notifications . . . . . . . . 7 2.1. Subscribing to receive Event Notifications . . . . . . . . 7
2.1.1. <create-subscription> . . . . . . . . . . . . . . . . 7 2.1.1. <create-subscription> . . . . . . . . . . . . . . . . 7
2.2. Sending Event Notifications . . . . . . . . . . . . . . . 8 2.2. Sending Event Notifications . . . . . . . . . . . . . . . 9
2.2.1. <notification> . . . . . . . . . . . . . . . . . . . . 8 2.2.1. <notification> . . . . . . . . . . . . . . . . . . . . 9
2.3. Terminating the Subscription . . . . . . . . . . . . . . . 9 2.3. Terminating the Subscription . . . . . . . . . . . . . . . 10
3. Supporting Concepts . . . . . . . . . . . . . . . . . . . . . 10 3. Supporting Concepts . . . . . . . . . . . . . . . . . . . . . 11
3.1. Capabilities Exchange . . . . . . . . . . . . . . . . . . 10 3.1. Capabilities Exchange . . . . . . . . . . . . . . . . . . 11
3.1.1. Capability Identifier . . . . . . . . . . . . . . . . 10 3.1.1. Capability Identifier . . . . . . . . . . . . . . . . 11
3.1.2. Capability Example . . . . . . . . . . . . . . . . . . 10 3.1.2. Capability Example . . . . . . . . . . . . . . . . . . 11
3.2. Event Streams . . . . . . . . . . . . . . . . . . . . . . 10 3.2. Event Streams . . . . . . . . . . . . . . . . . . . . . . 11
3.2.1. Event Stream Definition . . . . . . . . . . . . . . . 11 3.2.1. Event Stream Definition . . . . . . . . . . . . . . . 12
3.2.2. Event Stream Content Format . . . . . . . . . . . . . 11 3.2.2. Event Stream Content Format . . . . . . . . . . . . . 13
3.2.3. Default Event Stream . . . . . . . . . . . . . . . . . 11 3.2.3. Default Event Stream . . . . . . . . . . . . . . . . . 13
3.2.4. Event Stream Sources . . . . . . . . . . . . . . . . . 12 3.2.4. Event Stream Sources . . . . . . . . . . . . . . . . . 13
3.2.5. Event Stream Discovery . . . . . . . . . . . . . . . . 12 3.2.5. Event Stream Discovery . . . . . . . . . . . . . . . . 13
3.3. Notification Management Schema . . . . . . . . . . . . . . 13 3.3. Notification Replay . . . . . . . . . . . . . . . . . . . 15
3.4. Subscriptions not Configuration Data . . . . . . . . . . . 16 3.3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . 15
3.5. Filter Dependencies . . . . . . . . . . . . . . . . . . . 17 3.3.2. Creating a Subscription with Replay . . . . . . . . . 16
3.5.1. Named Profiles . . . . . . . . . . . . . . . . . . . . 17 3.3.3. Replay Complete Notification . . . . . . . . . . . . . 16
3.5.2. Filtering . . . . . . . . . . . . . . . . . . . . . . 17 3.4. Notification Management Schema . . . . . . . . . . . . . . 16
3.6. Message Flow . . . . . . . . . . . . . . . . . . . . . . . 17 3.5. Subscriptions Data . . . . . . . . . . . . . . . . . . . . 20
4. XML Schema for Event Notifications . . . . . . . . . . . . . . 19 3.6. Filter Mechanics . . . . . . . . . . . . . . . . . . . . . 20
5. Filtering examples . . . . . . . . . . . . . . . . . . . . . . 22 3.6.1. Named Profiles . . . . . . . . . . . . . . . . . . . . 21
5.1. Subtree Filtering . . . . . . . . . . . . . . . . . . . . 22 3.6.2. Filtering . . . . . . . . . . . . . . . . . . . . . . 21
5.2. XPATH filters . . . . . . . . . . . . . . . . . . . . . . 25 3.7. Message Flow . . . . . . . . . . . . . . . . . . . . . . . 21
6. Notification Replay . . . . . . . . . . . . . . . . . . . . . 27 4. XML Schema for Event Notifications . . . . . . . . . . . . . . 23
6.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . 27 5. Filtering Examples . . . . . . . . . . . . . . . . . . . . . . 27
6.2. Creating a Subscription with Replay . . . . . . . . . . . 27 5.1. Subtree Filtering . . . . . . . . . . . . . . . . . . . . 27
6.3. Replay Complete Notification . . . . . . . . . . . . . . . 28 5.2. XPATH filters . . . . . . . . . . . . . . . . . . . . . . 30
7. Security Considerations . . . . . . . . . . . . . . . . . . . 30 6. Security Considerations . . . . . . . . . . . . . . . . . . . 32
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 31 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 33
9. Normative References . . . . . . . . . . . . . . . . . . . . . 32 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 34
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 33 9. Normative References . . . . . . . . . . . . . . . . . . . . . 35
Intellectual Property and Copyright Statements . . . . . . . . . . 34 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 36
Intellectual Property and Copyright Statements . . . . . . . . . . 37
1. Introduction 1. Introduction
[NETCONF] can be conceptually partitioned into four layers: [NETCONF] can be conceptually partitioned into four layers:
Layer Example Layer Example
+-------------+ +----------------------------------------+ +-------------+ +----------------------------------------+
| Content | | Configuration data | | Content | | Configuration data |
+-------------+ +----------------------------------------+ +-------------+ +----------------------------------------+
| | | |
skipping to change at page 4, line 27 skipping to change at page 4, line 27
| | | | | |
+-------------+ +-----------------------------+ | +-------------+ +-----------------------------+ |
| RPC | | <rpc>, <rpc-reply> | | | RPC | | <rpc>, <rpc-reply> | |
+-------------+ +-----------------------------+ | +-------------+ +-----------------------------+ |
| | | | | |
+-------------+ +------------------------------------------+ +-------------+ +------------------------------------------+
| Transport | | BEEP, SSH, SSL, console | | Transport | | BEEP, SSH, SSL, console |
| Protocol | | | | Protocol | | |
+-------------+ +------------------------------------------+ +-------------+ +------------------------------------------+
Figure 1
This document defines mechanisms which provide an asynchronous This document defines mechanisms which provide an asynchronous
message notification delivery service for the [NETCONF] protocol. message notification delivery service for the [NETCONF] protocol.
This is an optional capability built on top of the base NETCONF This is an optional capability built on top of the base NETCONF
definition. This memo defines the capabilities and operations definition. This memo defines the capabilities and operations
necessary to support this service. necessary to support this service.
Figure 1
1.1. Definition of Terms 1.1. Definition of Terms
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119]. document are to be interpreted as described in [RFC2119].
Element: An [XML] Element. Element: An [XML] Element.
Managed Object: A collection of one of more Elements that define an
abstract thing of interest.
Subscription: A concept related to the delivery of notifications (if Subscription: A concept related to the delivery of notifications (if
any to send) involving destination and selection of notifications. any to send) involving destination and selection of notifications.
It is bound to the lifetime of a session. It is bound to the lifetime of a session.
Operation: This term is used to refer to NETCONF protocol Operation: This term is used to refer to NETCONF protocol
operations. Specifically within this document, operation refers operations. Specifically within this document, operation refers
to NETCONF protocol operations defined in support of NETCONF to NETCONF protocol operations defined in support of NETCONF
notifications. notifications.
1.2. Event Notifications in NETCONF Event: An event is something that happens which may be of interest -
a configuration change, a fault, a change in status, crossing a
An event is something that happens which may be of interest - a
configuration change, a fault, a change in status, crossing a
threshold, or an external input to the system, for example. Often threshold, or an external input to the system, for example. Often
this results in an asynchronous message, sometimes referred to as a this results in an asynchronous message, sometimes referred to as
notification or event notification, being sent out to interested a notification or event notification, being sent to interested
parties to notify them that this event has occurred. parties to notify them that this event has occurred.
Replay: The ability to send/re-send previously logged notifications
upon request. These notifications are sent asynchronously. This
feature is implemented by the NETCONF server and invoked by the
NETCONF client.
Stream: An event stream is a set of event notifications matching
some forwarding criteria and it is available to NETCONF clients
for subscription.
Named Profile: A predefined set of filtering criteria residing in
the Network Element which may be applied to a notification session
at subscription creation time.
1.2. Motivation
The motivation for this work is to enable the sending of asynchronous
messages that are consistent with the data model (content) and
security model used within a NETCONF implementation.
1.3. Event Notifications in NETCONF
This memo defines a mechanism whereby the NETCONF client indicates This memo defines a mechanism whereby the NETCONF client indicates
interest in receiving event notifications from a NETCONF server by interest in receiving event notifications from a NETCONF server by
creating a subscription to receive event notifications. The NETCONF creating a subscription to receive event notifications. The NETCONF
server replies to indicate whether the subscription request was server replies to indicate whether the subscription request was
successful and, if it was successful, begins sending the event successful and, if it was successful, begins sending the event
notifications to the NETCONF client as the events occur within the notifications to the NETCONF client as the events occur within the
system. These event notifications will continue to be sent until system. These event notifications will continue to be sent until
either the NETCONF session is terminated or the subscription to either the NETCONF session is terminated or the subscription
terminate for some other reason. The event notification subscription terminates for some other reason. The event notification
allows a number of options to enable the NETCONF client to specify subscription allows a number of options to enable the NETCONF client
which events are of interest. These are specified when the to specify which events are of interest. These are specified when
subscription is created. the subscription is created.
An NETCONF server is not required to process RPC requests on the A NETCONF server is not required to process RPC requests on the
session associated with the subscription until the notification session associated with the subscription until the notification
subscription is done and may silently discard these requests. A subscription is done and may silently discard these requests. A
capability may be advertised to announce that a server is able to capability may be advertised to announce that a server is able to
process RPCs while a notification stream is active on a session. process RPCs while a notification stream is active on a session. The
behaviour of such a capability is outside the scope of this document.
1.3. Motivation
The motivation for this work is to enable the sending of asynchronous
messages that are consistent with the data model (content) and
security model used within a NETCONF implementation.
1.4. Requirements 1.4. Requirements
The following requirements have been addressed by the solution: The following requirements have been addressed by the solution:
o Initial release should ensure it supports notification in support o Initial release should ensure it supports notification in support
of configuration operations of configuration operations
o Data content must not preclude the use of the same data model as o Data content must not preclude the use of the same data model as
used in configuration used in configuration
skipping to change at page 7, line 23 skipping to change at page 7, line 23
Content for an event notification subscription can be selected by Content for an event notification subscription can be selected by
applying user-specified filters. applying user-specified filters.
2.1.1. <create-subscription> 2.1.1. <create-subscription>
Description: Description:
This operation initiates an event notification subscription which This operation initiates an event notification subscription which
will send asynchronous event notifications to the initiator of the will send asynchronous event notifications to the initiator of the
command until the subscription to terminates. command until the subscription terminates.
Parameters: Parameters:
Stream: Stream:
An optional parameter that indicates which stream of events is An optional parameter that indicates which stream of events is
of interest. If not present, then events in the default of interest. If not present, then events in the default
NETCONF stream will be sent. NETCONF stream will be sent.
Filter: Filter:
An optional parameter that indicates which subset of all An optional parameter that indicates which subset of all
possible events are of interest. The format of this parameter possible events are of interest. The format of this parameter
is the same as that of the filter parameter in the NETCONF is the same as that of the filter parameter in the NETCONF
protocol operations. If not present, all events not precluded protocol operations. If not present, all events not precluded
by other parameters will be sent. This is mutually exclusive by other parameters will be sent. This is mutually exclusive
with the named profile parameter. with the named profile parameter. See section 3.6 for more
information on filters.
Named Profile: Named Profile:
An optional parameter that points to a separately defined An optional parameter that refers to a separately defined
filter profile. If not present, no additional filtering will filter profile. If not present, no additional filtering will
be applied. Note that changes to the profile after the be applied. Note that changes to the profile after the
subscription has been created will have no effect. This is subscription has been created will have no effect. This is
mutually exclusive with the filter parameter mutually exclusive with the filter parameter. For more
information on named profiles, see section 3.6.1.
Start Time: Start Time:
A parameter used to trigger the replay feature and indicates A parameter used to trigger the replay feature and indicates
that the replay should start at the time specified. If start that the replay should start at the time specified. If
time is not present, this is not a replay subscription. startTime is not present, this is not a replay subscription.
It is valid to specify start times that are later than the
current time. If the startTime specified is earlier then the
log can support, the replay will begin with the earliest
available notification. This parameter is of type dateTime.
Stop Time: Stop Time:
An optional parameter used with the optional replay feature to An optional parameter used with the optional replay feature to
indicate the newest notifications of interest. If stop time is indicate the newest notifications of interest. If stop time is
not present, the notifications will continue until the not present, the notifications will continue until the
subscription is terminated. Must be used with 'startTime'. subscription is terminated. Must be used with 'startTime'. It
is valid to specify stop times that are later than the current
time. This parameter is of type dateTime.
Positive Response: Positive Response:
If the NETCONF server can satisfy the request, the server sends an If the NETCONF server can satisfy the request, the server sends an
<ok> element. <ok> element.
Negative Response: Negative Response:
An <rpc-error> element is included within the <rpc-reply> if the An <rpc-error> element is included within the <rpc-reply> if the
request cannot be completed for any reason. Subscription requests request cannot be completed for any reason. Subscription requests
will fail if a filter with invalid syntax is provided or if the will fail if a filter with invalid syntax is provided or if the
name of a non-existent profile or stream is provided. name of a non-existent profile or stream is provided.
If a stopTime is specified in a request without having specified a
startTime the following error is returned:
Tag: missing-element
Error-type: protocol
Severity: error
Error-info: <startTime Description: An expected element is
missing.
If the optional replay feature is requested but it is not
supported by the NETCONF server, the following error is returned:
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
2.1.1.1. Usage Example
<netconf:rpc message-id="101"
xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0">
<create-subscription>
</create-subscription>
</netconf:rpc>
2.2. Sending Event Notifications 2.2. Sending Event Notifications
Once the subscription has been set up, the NETCONF server sends the Once the subscription has been set up, the NETCONF server sends the
event notifications asynchronously along the connection. event notifications asynchronously over the connection.
2.2.1. <notification> 2.2.1. <notification>
Description: Description:
An event notification is sent to the initiator of a <create- An event notification is sent to the client who initiated a
subscription> command asynchronously when an event of interest <create-subscription> command asynchronously when an event of
(i.e. meeting the specified filtering criteria) to them has interest (i.e., meeting the specified filtering criteria) to them
occurred. An event notification is a complete and well-formed XML has occurred. An event notification is a complete and well-formed
document. Note that <notification> is not an RPC method but XML document. Note that <notification> is not an RPC method but
rather the top level element identifying the one way message as a rather the top level element identifying the one way message as a
notification. notification.
Parameters: Parameters:
Data: Data:
Contains notification-specific tagged content. Contains notification-specific tagged content. The content of
the data tag is beyond the scope of this document.
Response: Response:
No response. Not applicable. No response. Not applicable.
2.3. Terminating the Subscription 2.3. Terminating the Subscription
Closing of the event notification subscription can be done by Closing of the event notification subscription can be done by
terminating the NETCONF session ( <kill-session> ) or the underlying terminating the NETCONF session ( <kill-session> ) or the underlying
transport session. If a stop time is provided when the subscription transport session. If a stop time is provided when the subscription
is created, then the subscription will terminate after the stop time is created, then the subscription will terminate after the stop time
is reached. In this case, the Netconf session will still be an is reached. In this case, the NETCONF session will still be an
active session. active session.
3. Supporting Concepts 3. Supporting Concepts
3.1. Capabilities Exchange 3.1. Capabilities Exchange
The ability to process and send event notifications is advertised The ability to process and send event notifications is advertised
during the capability exchange between the NETCONF client and server. during the capability exchange between the NETCONF client and server.
3.1.1. Capability Identifier 3.1.1. Capability Identifier
skipping to change at page 10, line 35 skipping to change at page 11, line 35
</capability> </capability>
<capability> <capability>
urn:ietf:params:netconf:capability:notification:1.0 urn:ietf:params:netconf:capability:notification:1.0
</capability> </capability>
</capabilities> </capabilities>
<session-id>4</session-id> <session-id>4</session-id>
</hello> </hello>
3.2. Event Streams 3.2. Event Streams
An event stream is defined herein as a set of event notifications An event stream is defined as a set of event notifications matching
matching some forwarding criteria. some forwarding criteria.
System components generate event notifications which are passed to a The diagram depicted in Figure 2 illustrates the notification flow
central component for classification and distribution. The central and concepts identified in this document. The following is observed
component inspects each event notification and matches the event from the diagram below: System components (c1..cn) generate event
notification against the set of stream definitions. When a match notifications which are passed to a central component for
occurs, the event notification is considered to be a member of that classification and distribution. The central component inspects each
event stream. An event notification may be part of multiple event event notification and matches the event notification against the set
streams. of stream definitions. When a match occurs, the event notification
is considered to be a member of that event stream (stream 1..stream
n). An event notification may be part of multiple event streams.
When a NETCONF client subscribes to a given event stream, user- When a NETCONF client subscribes to a given event stream, user-
defined filters, if applicable, are applied to the event stream and defined filters, if applicable, are applied to the event stream and
matching event notifications are forwarded to the NETCONF server for matching event notifications are forwarded to the NETCONF server for
distribution to subscribed NETCONF clients. distribution to subscribed NETCONF clients. For more information on
filters, see section 3.6.
A notification logging service may also be available, in which case,
the central component logs notifications. The NETCONF server may
later retrieve logged notifications via the optional replay feature.
For more information on replay, see section 3.3.
+----+ +----+
| c1 |---+ available streams | c1 |---+ available streams
+----+ | +---------+ +----+ | +---------+
+----+ | |central |-> stream 1 +----+ | |central |-> stream 1
| c2 | +--->|event |-> stream 2 filter +-------+ | c2 | +--->|event |-> stream 2 filter +-------+
+----+ | |processor|-> netconf stream --->|netconf| +----+ | |processor|-> NETCONF stream ----->|netconf|
... | | |-> stream n |server | see ... | | |-> stream n |server |
System | +---------+ +-------+ below System | +---------+ +-------+
Components| | // Components| | /\
... | | // ... | | ||
+----+ | | (------------) +----+ | | (------------) ||
| cn |---+ | (notification) | cn |---+ | (notification) ||
+----+ +-----> ( logging ) +----+ +-----> ( logging ) ||
( service ) ( service ) ||
(------------) (------------) ||
||
||
\/
+-------+
|netconf|
|client |
+-------+
+-------+ +-------+ Figure 4
|netconf|<--->|netconf|
-> |server | |client |
+-------+ +-------+
3.2.1. Event Stream Definition 3.2.1. Event Stream Definition
Event streams are predefined on the managed device. The Event streams are predefined on the managed device. The
configuration of event streams is outside the scope of this document. configuration of event streams is outside the scope of this document.
However, it is envisioned that event streams are either pre- However, it is envisioned that event streams are either pre-
established by the vendor (pre-configured) or user configurable (e.g. established by the vendor (pre-configured) or user configurable
part of the device's configuration) or both. Device vendors may (e.g., part of the device's configuration) or both. Device vendors
allow event stream configuration via NETCONF protocol (i.e. edit- may allow event stream configuration via NETCONF protocol (i.e.,
config operation) edit-config operation).
3.2.2. Event Stream Content Format 3.2.2. Event Stream Content Format
The contents of all event streams made available to a NETCONF client The contents of all event streams made available to a NETCONF client
(i.e. the notification sent by the NETCONF server) must be encoded in (i.e., the notification sent by the NETCONF server) must be encoded
XML. in XML.
3.2.3. Default Event Stream 3.2.3. Default Event Stream
A NETCONF server implementation supporting the notification A NETCONF server implementation supporting the notification
capability must support the "NETCONF" notification event stream. capability must support the "NETCONF" notification event stream.
This stream contains all NETCONF XML event notifications supported by This stream contains all NETCONF XML event notifications supported by
the NETCONF server. The definition of the event notification and the NETCONF server. The definition of the event notifications and
their contents for this event stream is outside the scope of this their contents for this event stream is outside the scope of this
document. document.
3.2.4. Event Stream Sources 3.2.4. Event Stream Sources
With the exception of the default event stream (NETCONF With the exception of the default event stream (NETCONF
notifications) specification of additional event stream sources (e.g. notifications) specification of additional event stream sources
SNMP, syslog, etc.) is outside the scope of this document. NETCONF (e.g., SNMP, syslog, etc.) is outside the scope of this document.
server implementations may leverage any desired event stream source NETCONF server implementations may leverage any desired event stream
in the creation of supported event streams. source in the creation of supported event streams.
3.2.5. Event Stream Discovery 3.2.5. Event Stream Discovery
A NETCONF client retrieves the list of supported event streams from a A NETCONF client retrieves the list of supported event streams from a
NETCONF server using the <get> RPC request. NETCONF server using the <get> RPC request.
3.2.5.1. Name Retrieval using <get> operation 3.2.5.1. Name Retrieval using <get> operation
The list of available event streams is retrieved by requesting the The list of available event streams is retrieved by requesting the
<eventStreams> subtree via a <get>operation. Available event streams <eventStreams> subtree via a <get> operation. Available event
for the requesting session are returned in the reply containing the streams for the requesting session are returned in the reply
<name> and <description> elements, where <name> element is mandatory containing the <name> and <description> elements, where <name>
and its value is unique. The returned list must only include the element is mandatory and its value is unique. The returned list must
names of those event streams for which the NETCONF session has only include the names of those event streams for which the NETCONF
sufficient privileges. The NETCONF session privileges are determined session has sufficient privileges. The NETCONF session privileges
via access control mechanisms which are beyond the scope of this are determined via access control mechanisms which are beyond the
document. An empty reply is returned if there are no available event scope of this document. An empty reply is returned if there are no
streams. The information is retrieved by requesting the available event streams. The information is retrieved by requesting
<eventStreams> subtree via a <get> operation. the <eventStreams> subtree via a <get> operation.
Example: Retrieving available event stream list using <get> Example: Retrieving available event stream list using <get>
operation: operation:
<rpc message-id="101" <rpc message-id="101"
xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get> <get>
<filter type="subtree"> <filter type="subtree">
<eventStreams xmlns="urn:ietf:params:xml:ns:netmod:base:1.0"/> <eventStreams xmlns="urn:ietf:params:xml:ns:netmod:notification"/>
</filter> </filter>
</get> </get>
</rpc> </rpc>
The NETCONF server returns a list of event streams available for The NETCONF server returns a list of event streams available for
subscription: NETCONF, snmp, and syslog-critical in this example. subscription: NETCONF, snmp, and syslog-critical in this example.
<rpc-reply message-id="101" <rpc-reply message-id="101"
xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<data> <data>
<eventStreams xmlns="urn:ietf:params:xml:ns:netmod:base:1.0"> <eventStreams xmlns="urn:ietf:params:xml:ns:netmod:notification">
<stream> <stream>
<name>NETCONF</name> <name>NETCONF</name>
<description>Default netconf event stream <description>Default netconf event stream
</description> </description>
<replaySupport>true</replaySupport> <replaySupport>true</replaySupport>
</stream> </stream>
<stream> <stream>
<name>snmp</name> <name>snmp</name>
<description>SNMP notifications</description> <description>SNMP notifications</description>
<replaySupport>false</replaySupport> <replaySupport>false</replaySupport>
skipping to change at page 13, line 48 skipping to change at page 15, line 21
in subscription to the default NETCONF event stream. in subscription to the default NETCONF event stream.
3.2.5.2.1. Filtering Event Stream Contents 3.2.5.2.1. Filtering Event Stream Contents
The set of event notifications delivered in an event stream may be The set of event notifications delivered in an event stream may be
further refined by applying a user-specified filter at subscription further refined by applying a user-specified filter at subscription
creation time ( <create-subscription> ). This is a transient filter creation time ( <create-subscription> ). This is a transient filter
associated with the event notification subscription and does not associated with the event notification subscription and does not
modify the event stream configuration. modify the event stream configuration.
3.3. Notification Management Schema XPATH support for the Notification capability is advertised as part
of the normal XPATH capability advertisement. If XPATH support is
advertised via the XPATH capability then XPATH is supported for
notification filtering and if this capability is not advertised, then
XPATH is not supported for notification filtering.
3.3. Notification Replay
3.3.1. Overview
Replay is the ability to create an event subscription that will
resend recently generated notifications. These notifications are
sent the same way as normal notifications.
A replay of notifications is specified by including an optional
parameter to the subscription command that indicates the start time
of the replay. The end time is specified using the optional stopTime
parameter. If not present, notifications will continue to be sent
until the subscription is terminated.
A notification stream that supports replay is not expected to have an
unlimited supply of saved notifications available to accommodate any
replay request.
The actual number of stored notifications available for retrieval at
any given time is a NETCONF server implementation specific matter.
Control parameters for this aspect of the feature are outside the
scope of the current document.
Replay is dependent on a notification stream supporting some form of
notification logging, although it puts no restrictions on the size or
form of the log, nor where it resides within the device.
3.3.2. Creating a Subscription with Replay
This feature uses optional parameters to the <create-subscription>
command called 'startTime' and 'stopTime'. 'startTime' identifies the
earliest date and time of interest for event notifications being
replayed and also indicates that a subscription will be providing
replay of notifications. Events generated before this time are not
matched. 'stopTime' specifies the latest date and time of interest
for event notifications being replayed. If it is not present, then
notifications will continue to be sent until the subscription is
terminated.
Note that startTime and stopTime are associated with the time an
event was generated by the system.
A replay complete notification is sent to indicate that all of the
replay notifications have been sent. If this subscription has a stop
time, then this session becomes a normal NETCONF session again. In
the case of a subscription without a stop time, after the replay
complete notification has been sent, it can be expected that any
notifications generated since the start of the subscription creation
will be sent followed by notifications as they arise naturally within
the system.
3.3.3. Replay Complete Notification
The replay complete notification is the last notification sent over a
replay subscription. It indicates that replay is complete. This
notification will only be sent if a 'stopTime' was specified when the
replay subscription was created. After this notification is received
the subscription is terminated and the session becomes a normal
NETCONF session.
The replayComplete can not be filtered out. It will always be sent
on a relay subscription that specified a stop time.
3.4. Notification Management Schema
This Schema is used to learn about the event streams supported on the
system and the query and modify named profiles. It also contains the
definition of the replayComplete, which is sent to indicate that an
event replay has sent all applicable notifications."
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0"
xmlns:ncEvent="urn:ietf:params:xml:ns:netconf:notification:1.0" xmlns:ncEvent="urn:ietf:params:netconf:capability:notification:1.0"
xmlns:manageEvent="urn:ietf:params:xml:ns:netmod:event:1.0" xmlns:manageEvent="urn:ietf:params:xml:ns:netmod:notification"
targetNamespace="urn:ietf:params:xml:ns:netmod:event:1.0" targetNamespace="urn:ietf:params:xml:ns:netmod:notification"
elementFormDefault="qualified" elementFormDefault="qualified"
attributeFormDefault="unqualified"> attributeFormDefault="unqualified">
<xs:annotation> <xs:annotation>
<xs:documentation xml:lang="en"> <xs:documentation xml:lang="en">
A schema that can be used to learn about current A schema that can be used to learn about current
event streams and to manage named profiles. event streams and to manage named profiles. It also
contains the replayComplete notification.
</xs:documentation> </xs:documentation>
</xs:annotation> </xs:annotation>
<xs:import namespace="http://www.w3.org/XML/1998/namespace" <xs:import namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="http://www.w3.org/2001/xml.xsd"/> schemaLocation="http://www.w3.org/2001/xml.xsd"/>
<xs:import namespace="urn:ietf:params:xml:ns:netconf:base:1.0" <xs:import namespace="urn:ietf:params:xml:ns:netconf:base:1.0"
schemaLocation="urn:ietf:params:xml:ns:netconf:base:1.0"/> schemaLocation="urn:ietf:params:xml:ns:netconf:base:1.0"/>
<xs:import <xs:import namespace=
namespace="urn:ietf:params:xml:ns:netconf:notification:1.0" "urn:ietf:params:netconf:capability:notification:1.0"
schemaLocation= schemaLocation=
"urn:ietf:params:xml:ns:netconf:notification:1.0"/> "urn:ietf:params:netconf:capability:notification:1.0"/>
<xs:element name="netconf" type="manageEvent:Netconf"/>
<xs:complexType name="Netconf">
<xs:sequence>
<xs:element name="eventStreams" > <xs:element name="eventStreams" >
<xs:annotation> <xs:annotation>
<xs:documentation> <xs:documentation>
The list of event streams supported by the system. The list of event streams supported by the
When a query is issued, the returned set of streams is system. When a query is issued, the returned
determined based on user privileges set of streams is determined based on user
privileges.
</xs:documentation> </xs:documentation>
</xs:annotation> </xs:annotation>
<xs:complexType> <xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="unbounded"> <xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="stream"> <xs:element name="stream">
<xs:annotation> <xs:annotation>
<xs:documentation> <xs:documentation>
Stream name and description Stream name and description.
</xs:documentation> </xs:documentation>
</xs:annotation> </xs:annotation>
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element name="name" type="xs:string"/> <xs:element name="name" type="xs:string"/>
<xs:element name="description" type="xs:string"/> <xs:element name="description"
type="xs:string"/>
<xs:element name="replaySupport" <xs:element name="replaySupport"
type="xs:boolean"/> type="xs:boolean"/>
<xs:element name="replayLogStartTime"
type="xs:dateTime">
<xs:annotation>
<xs:documentation>
The start time of the log used to
support the replay function. If
replay is not supported, this will
return the current time.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element name="namedProfile"> <xs:element name="namedProfiles" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="namedProfile"
type="manageEvent:NamedProfile" minOccurs="0"
maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="replayComplete"
type="manageEvent:ReplayCompleteNotificationType"
minOccurs="0">
<xs:annotation>
<xs:documentation>
This notification is sent to signal the end of a replay
portion of a subscription.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ReplayCompleteNotificationType" >
<xs:complexContent>
<xs:extension base="ncEvent:NotificationType">
<xs:sequence>
<xs:element name="eventClass"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="NamedProfile">
<xs:annotation> <xs:annotation>
<xs:documentation> <xs:documentation>
A named profile, which is a saved set of parameters A named profile, which is a saved set of parameters
associated that may be associated with zero or more that may be associated with zero or more
active subscriptions. active subscriptions.
This object can be created, read, deleted and its This object can be created, read, deleted and its
individual components can be modified. individual components can be modified.
</xs:documentation> </xs:documentation>
</xs:annotation> </xs:annotation>
<xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element name="name"> <xs:element name="name">
<xs:annotation> <xs:annotation>
<xs:documentation> <xs:documentation>
The name associated with the profile. The name associated with the profile.
This object is readable and modifiable. This object is readable and modifiable.
</xs:documentation> </xs:documentation>
</xs:annotation> </xs:annotation>
</xs:element> </xs:element>
<xs:element name="stream" minOccurs="0"> <xs:element name="stream" minOccurs="0">
<xs:annotation> <xs:annotation>
<xs:documentation xml:lang="en"> <xs:documentation xml:lang="en">
The event stream associated with this named The event stream associated with this named
profile. profile.
skipping to change at page 16, line 25 skipping to change at page 20, line 25
profile does not cause an immediate update profile does not cause an immediate update
to all applicable subscription. Therefore, to all applicable subscription. Therefore,
this time should be compared with the last this time should be compared with the last
modified time associated with the modified time associated with the
subscription. If this time is earlier, then subscription. If this time is earlier, then
the subscription is using the exact set of the subscription is using the exact set of
parameters associated with this named profile. parameters associated with this named profile.
If this time is later, then the subscription If this time is later, then the subscription
is using an earlier version of this named is using an earlier version of this named
profile and the exact parameters may not profile and the exact parameters may not
match. match. Note there is no guarantee that the
profile named in the subscription will be
found at all."
This object is read-only. This object is read-only.
</xs:documentation> </xs:documentation>
</xs:annotation> </xs:annotation>
</xs:element> </xs:element>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element>
<xs:element name="namedProfiles">
<xs:complexType>
<xs:sequence>
<xs:element ref="manageEvent:namedProfile" minOccurs="0"
maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema> </xs:schema>
3.4. Subscriptions not Configuration Data 3.5. Subscriptions Data
While it may be possible to retrieve information about subscriptions While it may be possible to retrieve information about subscriptions
via a get operation, subscriptions are not stored configuration. via a get operation, subscriptions are not stored configuration.
They are non-persistent state information. In this respect, they are They are non-persistent state information and their lifetime is
comparable to NETCONF sessions. defined by their session.
Named profiles, if used, are considered configuration data. Named profiles, if used, are considered configuration data.
3.5. Filter Dependencies 3.6. Filter Mechanics
Note that when multiple filters are specified, they are applied Note that when multiple filter elements are specified, they are
collectively, so event notifications need to pass all specified applied collectively, so event notifications need to pass all
filters in order to be sent to the subscriber. If a filter is specified filters in order to be sent to the subscriber. If a filter
specified to look for data of a particular value, and the data item element is specified to look for data of a particular value, and the
is not present within a particular event notification for its value data item is not present within a particular event notification for
to be checked against, it will be filtered out. For example, if one its value to be checked against, it will be filtered out. For
were to check for 'severity=critical' in a configuration event example, if one were to check for 'severity=critical' in a
notification where this field was not supported, then the configuration event notification where this field was not supported,
notification would be filtered out. then the notification would be filtered out.
Note that the order that filters are applied does not matter since Note that the order that filter elements are applied does not matter
the resulting set of notifications is the intersection of the set of since the resulting set of notifications is the intersection of the
notifications that pass each filtering criteria. set of notifications that pass each filtering criteria.
3.5.1. Named Profiles 3.6.1. Named Profiles
A named profile is a filter that is created ahead of time and applied A named profile is a filter that is created ahead of time and applied
at the time an event notification subscription is created . Note at the time an event notification subscription is created. Note that
that changes to the profile after the subscription has been created changes to the profile after the subscription has been created will
will have no effect on the subscription. Since named profiles exist have no effect on the subscription. Since named profiles exist
outside of the subscription, they persist after the subscription has outside of the subscription, they persist after the subscription has
been torn down. been torn down.
3.5.2. Filtering 3.6.2. Filtering
Just-in-time filtering is explicitly stated when the event Inline filtering is explicitly stated when the event notification
notification subscription is created. This is specified via the subscription is created. This is specified via the 'filter'
'filter' parameter. Filters only exist as parameters to the parameter. Filters only exist as parameters to the subscription.
subscription.
3.6. Message Flow 3.7. Message Flow
The following figure depicts message flow between a NETCONF client The following figure depicts message flow between a NETCONF client
(C) and NETCONF server (S) in order create a subscription and begin (C) and NETCONF server (S) in order create a subscription and begin
the flow of notifications. the flow of notifications. It is possible that many rpc/rpc-reply
sequences occur before the subscription is created or after a
stopTime in a replay subscription, but this is not depicted in the
figure.
C S C S
| | | |
| capability exchange | | capability exchange |
|-------------------------->| |-------------------------->|
|<------------------------->| |<------------------------->|
| | | |
| <create-subscription> | | <create-subscription> |
|-------------------------->| |-------------------------->|
|<--------------------------| |<--------------------------|
skipping to change at page 19, line 5 skipping to change at page 22, line 35
| <notification> | | <notification> |
|<--------------------------| |<--------------------------|
| | | |
| | | |
| | | |
| <notification> | | <notification> |
|<--------------------------| |<--------------------------|
| | | |
| | | |
Figure 8
4. XML Schema for Event Notifications 4. XML Schema for Event Notifications
The following [XML Schema] defines Netconf Event Notifications. The following [XML Schema] defines NETCONF Event Notifications.
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0" xmlns="urn:ietf:params:netconf:capability:notification:1.0"
xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0"
targetNamespace="urn:ietf:params:xml:ns:netconf:notification:1.0" targetNamespace=
"urn:ietf:params:netconf:capability:notification:1.0"
elementFormDefault="qualified" elementFormDefault="qualified"
attributeFormDefault="unqualified" attributeFormDefault="unqualified"
xml:lang="en"> xml:lang="en">
<!-- import standard XML definitions --> <!-- import standard XML definitions -->
<xs:import namespace="http://www.w3.org/XML/1998/namespace" <xs:import namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="http://www.w3.org/2001/xml.xsd"> schemaLocation="http://www.w3.org/2001/xml.xsd">
<xs:annotation> <xs:annotation>
<xs:documentation> <xs:documentation>
skipping to change at page 19, line 43 skipping to change at page 23, line 44
<!-- ************** Symmetrical Operations ********************--> <!-- ************** Symmetrical Operations ********************-->
<!-- <create-subscription> operation --> <!-- <create-subscription> operation -->
<xs:complexType name="createSubscriptionType"> <xs:complexType name="createSubscriptionType">
<xs:complexContent> <xs:complexContent>
<xs:extension base="netconf:rpcOperationType"> <xs:extension base="netconf:rpcOperationType">
<xs:sequence> <xs:sequence>
<xs:element name="stream" <xs:element name="stream"
type="xs:string" minOccurs="0"> type="streamNameType" minOccurs="0">
<xs:annotation> <xs:annotation>
<xs:documentation> <xs:documentation>
An optional parameter that indicates which stream An optional parameter that indicates
of events is of interest. If not present, then which stream of events is of interest. If
events in the default NETCONF stream will be sent. not present, then events in the default
NETCONF stream will be sent.
</xs:documentation> </xs:documentation>
</xs:annotation> </xs:annotation>
</xs:element> </xs:element>
<xs:choice> <xs:choice>
<xs:element name="filter" <xs:element name="filter"
type="netconf:filterInlineType" minOccurs="0"> type="netconf:filterInlineType"
minOccurs="0">
<xs:annotation> <xs:annotation>
<xs:documentation> <xs:documentation>
An optional parameter that indicates which subset of An optional parameter that indicates
all possible events are of interest. The format of which subset of all possible events
this parameter is the same as that of the filter are of interest. The format of this
parameter in the NETCONF protocol operations. If not parameter is the same as that of the
present, all events not precluded by other filter parameter in the NETCONF
parameters will be sent. This is mutually exclusive protocol operations. If not present,
with the named profile parameter. all events not precluded by other
parameters will be sent. This is
mutually exclusive with the named
profile parameter.
</xs:documentation> </xs:documentation>
</xs:annotation> </xs:annotation>
</xs:element> </xs:element>
<xs:element name="named-profile" <xs:element name="named-profile"
type="xs:string" minOccurs="0"> type="namedProfileType" minOccurs="0">
<xs:annotation> <xs:annotation>
<xs:documentation> <xs:documentation>
An optional parameter that points to a separately An optional parameter that points to
defined filter profile. If not present, no a separately defined filter profile.
additional filtering will be applied. Note that If not present, no additional
changes to the profile after the subscription has filtering will be applied. Note that
been created will have no effect. This is mutually changes to the profile after the
exclusive with the filter parameter subscription has been created will
have no effect. This is mutually
exclusive with the filter parameter.
</xs:documentation> </xs:documentation>
</xs:annotation> </xs:annotation>
</xs:element> </xs:element>
</xs:choice> </xs:choice>
<xs:element name="startTime" type="xs:dateTime" <xs:element name="startTime" type="xs:dateTime"
minOccurs="0" > minOccurs="0" >
<xs:annotation> <xs:annotation>
<xs:documentation> <xs:documentation>
A parameter used to trigger the replay feature A parameter used to trigger the replay
and indicates that the replay should start at the feature and indicates that the replay
time specified. If start time is not present, this should start at the time specified. If
is not a replay subscription. start time is not present, this is not a
replay subscription.
</xs:documentation> </xs:documentation>
</xs:annotation> </xs:annotation>
</xs:element> </xs:element>
<xs:element name="stopTime" type="xs:dateTime" <xs:element name="stopTime" type="xs:dateTime"
minOccurs="0" > minOccurs="0" >
<xs:annotation> <xs:annotation>
<xs:documentation> <xs:documentation>
An optional parameter used with the optional replay An optional parameter used with the
feature to indicate the newest notifications of optional replay feature to indicate the
interest. If stop time is not present, the newest notifications of interest. If
notifications will continue until the subscription stop time is not present, the
is terminated. Must be used with 'startTime'. notifications will continue until the
subscription is terminated. Must be used
with 'startTime'.
</xs:documentation> </xs:documentation>
</xs:annotation> </xs:annotation>
</xs:element> </xs:element>
</xs:sequence> </xs:sequence>
</xs:extension> </xs:extension>
</xs:complexContent> </xs:complexContent>
</xs:complexType> </xs:complexType>
<xs:simpleType name="namedProfileType">
<xs:annotation>
<xs:documentation>
The name of a saved profile containing filtering
elements.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<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" <xs:element name="create-subscription"
type="createSubscriptionType" type="createSubscriptionType"
substitutionGroup="netconf:rpcOperation"> substitutionGroup="netconf:rpcOperation">
<xs:annotation> <xs:annotation>
<xs:documentation> <xs:documentation>
The command to create a notification subscription. It The command to create a notification subscription. It
takes as argument the name of the notification stream and takes as argument the name of the notification stream
filter or profile information. All of those options limit and filter or profile information. All of those options
the content of the subscription. In addition, there are limit the content of the subscription. In addition,
two time-related parameters startTime and stopTime which there are two time-related parameters startTime and
can be used to select the time interval of interest. stopTime which can be used to select the time interval
of interest.
</xs:documentation> </xs:documentation>
</xs:annotation> </xs:annotation>
</xs:element> </xs:element>
<!-- ************** One-way Operations ******************--> <!-- ************** One-way Operations ******************-->
<!-- <Notification> operation --> <!-- <Notification> operation -->
<xs:complexType name="NotificationType"> <xs:complexType name="NotificationType">
<xs:sequence> <xs:sequence>
<xs:element name="data" type="netconf:dataInlineType" /> <xs:element name="data" type="netconf:dataInlineType" />
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
<xs:element name="notification" type="NotificationType"/> <xs:element name="notification" type="NotificationType"/>
</xs:schema> </xs:schema>
5. Filtering examples 5. Filtering Examples
The following section provides examples to illustrate the various The following section provides examples to illustrate the various
methods of filtering content on an event notification subscription. methods of filtering content on an event notification subscription.
5.1. Subtree Filtering 5.1. Subtree Filtering
XML subtree filtering is not well suited for creating elaborate XML subtree filtering is not well suited for creating elaborate
filter definitions given that it only supports equality comparisons filter definitions given that it only supports equality comparisons
and logical OR operations (e.g. in an event subtree give me all event and logical OR operations (e.g., in an event subtree give me all
notifications which have severity=critical or severity=major or event notifications which have severity=critical or severity=major or
severity=minor). Nevertheless, it may be used for defining simple severity=minor). Nevertheless, it may be used for defining simple
event notification forwarding filters as shown below. event notification forwarding filters as shown below.
In order to illustrate the use of filter expressions it is necessary In order to illustrate the use of filter expressions it is necessary
to assume some of the event notification content. The examples to assume some of the event notification content. The examples
herein assume that the event notification schema definition has an herein assume that the event notification schema definition has an
<events> element at the top level that contains one or more child <events> element at the top level that contains one or more child
elements <eventEntry> consisting of the event class (e.g. fault, elements <eventEntry> consisting of the event class (e.g., fault,
state, config, etc.) reporting entity and either severity or state, config, etc.) reporting entity and either severity or
operational state. operational state.
Sample event list Sample event list
<events> <events>
<eventEntry> <eventEntry>
<eventClass>fault</eventClass> <eventClass>fault</eventClass>
<reportingEntity> <reportingEntity>
<card>Ethernet0</card> <card>Ethernet0</card>
skipping to change at page 24, line 4 skipping to change at page 29, line 4
</reportingEntity> </reportingEntity>
<operState>enabled</operState> <operState>enabled</operState>
</eventEntry> </eventEntry>
</events> </events>
The following example illustrates selecting events which have The following example illustrates selecting events which have
severities of critical, major, or minor (presumably fault events). severities of critical, major, or minor (presumably fault events).
The filtering criteria evaluation is as follows: The filtering criteria evaluation is as follows:
((severity=critical) | (severity=major) | (severity=minor)) ((severity=critical) | (severity=major) | (severity=minor))
<rpc message-id="101" <netconf:rpc message-id="101"
xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"> xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0">
<create-subscription <create-subscription
xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"> xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0">
<netconf:filter type="subtree"> <filter netconf:type="subtree">
<event xmlns="http://example.com/event/1.0"> <event xmlns="http://example.com/event/1.0">
<events>
<eventEntry>
<eventClass>fault</eventClass>
<severity>critical</severity> <severity>critical</severity>
</event> </eventEntry>
<event xmlns="http://example.com/event/1.0"> <eventEntry>
<eventClass>fault</eventClass>
<severity>major</severity> <severity>major</severity>
</event> </eventEntry>
<event xmlns="http://example.com/event/1.0"> <eventEntry>
<eventClass>fault</eventClass>
<severity>minor</severity> <severity>minor</severity>
</eventEntry>
</events>
</event> </event>
</netconf:filter> </filter>
</create-subscription> </create-subscription>
</rpc> </netconf:rpc>
The following example illustrates selecting state or config The following example illustrates selecting state or config
EventClasses or fault events that are related to card Ethernet0. The EventClasses or fault events that are related to card Ethernet0. The
filtering criteria evaluation is as follows: filtering criteria evaluation is as follows:
( state | config | fault & card=Ethernet0) ( state | config | fault & card=Ethernet0)
<rpc message-id="101" <netconf:rpc message-id="101"
xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0"> xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0">
<create-subscription> <create-subscription>
<netconf:filter type="subtree"> <filter netconf:type="subtree">
xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"> xmlns="urn:ietf:params:netconf:capability:notification:1.0">
<event xmlns="http://example.com/event/1.0"> <event xmlns="http://example.com/event/1.0">
<events> <events>
<eventEntry> <eventEntry>
<eventClass>fault</eventClass> <eventClass>fault</eventClass>
</eventEntry> </eventEntry>
<eventEntry> <eventEntry>
<eventClass>state</eventClass> <eventClass>state</eventClass>
</eventEntry> </eventEntry>
<eventEntry> <eventEntry>
<eventClass>config</eventClass> <eventClass>config</eventClass>
</eventEntry> </eventEntry>
<eventEntry> <eventEntry>
<eventClass>fault</eventClass> <eventClass>fault</eventClass>
<reportingElement> <reportingElement>
<card>Ethernet0</card> <card>Ethernet0</card>
</reportingElement> </reportingElement>
</eventEntry> </eventEntry>
</events> </events>
</event> </event>
</netconf:filter> </filter>
</create-subscription> </create-subscription>
</rpc> </netconf:rpc>
5.2. XPATH filters 5.2. XPATH filters
The following [XPATH] example illustrates selecting fault EventClass The following [XPATH] example illustrates selecting fault EventClass
notifications that have severities of critical, major, or minor. The notifications that have severities of critical, major, or minor. The
filtering criteria evaluation is as follows: filtering criteria evaluation is as follows:
((fault) & ((severity=critical) | (severity=major) | (severity = ((fault) & ((severity=critical) | (severity=major) | (severity =
minor))) minor)))
<rpc message-id="101" <netconf:rpc message-id="101"
xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0"> xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0">
<create-subscription> <create-subscription>
<netconf:filter type="xpath" <filter netconf:type="xpath"
select="event/eventClasses/fault' and select="//eventEntry[(eventClass='fault' and
(event[severity='critical'] or (severity='minor' or severity='major'
event[severity='major'] or or severity='critical'))]"/>
event[severity='minor')))"/>
</create-subscription> </create-subscription>
</rpc> </netconf:rpc>
The following example illustrates selecting state and config The following example illustrates selecting state and config
EventClasses or fault events that have severities of critical, major, EventClasses or fault events that have severities of critical, major,
or minor or come from card Ethernet0. The filtering criteria or minor or come from card Ethernet0. The filtering criteria
evaluation is as follows: evaluation is as follows:
(( state | config) & ((fault & severity=critical) | (fault & (( state | config) & ((fault & severity=critical) | (fault &
severity=major) | (fault & severity = minor) | (fault & severity=major) | (fault & severity = minor) | (fault &
card=Ethernet0))) card=Ethernet0)))
<rpc message-id="101" <netconf:rpc message-id="101"
xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0"> xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0">
<create-subscription> <create-subscription>
<netconf:filter type="xpath" <filter netconf:type="xpath"
select="((event[eventClasses/fault] or select="//eventEntry[(eventClass='fault' and
event[eventClasses/state] or severity='minor') or
event[eventClasses/config]) and (eventClass='fault' and severity='major') or
((event[eventClasses/fault] and (eventClass='fault' and severity='critical') or
event[severity='critical']) or (eventClass='fault' and card='Ethernet0') or
(event[eventClasses/fault] and eventClass='state' or eventClass='config']"/>
event[severity='major']) or
(event[eventClasses/fault] and
event[severity='minor']) or
event[eventClasses/fault/reportingElement/card='Ethernet0']))"/>
</create-subscription> </create-subscription>
</rpc> </netconf:rpc>
6. Notification Replay
6.1. Overview
Replay is the ability to create an event subscription that will
resend recently sent notifications. These notifications are sent the
same way as normal notifications.
A replay of notifications is specified by including an optional
parameter to the subscription command that indicates the start time
of the replay. The end time is specified using the optional stopTime
parameter. If not present, notifications will continue to be sent
until the subscription is terminated.
A notification stream that supports replay is not expected to have an
unlimited supply of saved notifications available to accommodate any
replay request. If a client requests a replay of notifications that
predate the oldest notification available, then the NETCONF server
must return a warning message in the RPC reply and start replaying
the notifications it does have available, within the other
constraints, such as filtering, that the client has provided. The
warning message enables the NETCONF client to differentiate between
the case that there were no notifications generated within a given
time period from the case that no notifications are currently in the
log from that period.
The actual number of stored notifications available for retrieval at
any given time is an NETCONF server implementation specific matter.
Control parameters for this aspect of the feature are outside the
scope of the current work.
This feature is dependent on a notification stream supporting some
form of notification logging, although it puts no restrictions on the
size or form of the log, nor where it resides within the device.
6.2. Creating a Subscription with Replay
This feature uses optional parameters to the <create-subscription>
command called 'startTime' and 'stopTime'. 'startTime' identifies the
earliest date and time of interest for event notifications being
replayed and also indicates that a subscription will be providing
replay of notifications. Events generated before this time are not
matched. 'stopTime' specifies the latest date and time of interest
for event notifications being replayed. If it is not present, then
notifications will continue to be sent until the subscription is
terminated.
Note that while a notification has three potential times associated
it - the time it was generated, the time it was logged and the time
it was sent out by the NETCONF server - the startTime and stopTime
parameters are related to generation time.
In the event of an error with severity of warning, the subscription
will still be created.
Negative Response:
An <rpc-error> element is included in the <rpc-reply> if the
startTime in replay request predates the oldest notification
available to be replayed or if the stopTime is earlier then the
startTime.
Error-tag: start-time-too-early
Error-type: protocol
Error-severity: warning
Error-info: <log-startime> : Timestamp of earliest event
available for replay
Error-message: Start time predates oldest available
notification to be replayed
Error-tag: start-stop-time-mismatch
Error-type: protocol
Error-severity: error
Error-info: none
Error-message: stopTime predates startTime.
6.3. Replay Complete Notification
The following notification is the last notification sent over a
replay subscription. It indicates that replay is complete. This
notification will only be sent if a 'stopTime' was specified when the
replay subscription was created. After this notification is received
the subscription is terminated and the session becomes a normal
Netconf session.
The replayCompleteNotifcation can not be filtered out. It will
always be sent on a relay subscription that specified a stop time.
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="urn:ietf:params:xml:ns:netconf:replayNotification:1.0"
targetNamespace=
"urn:ietf:params:xml:ns:netconf:replayNotification:1.0">
<xs:element name="replayCompleteNotification" >
<xs:annotation>
<xs:documentation>
This notification is sent to signal the end of a replay
subscription.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="eventClass" default="informational">
<xs:annotation>
<xs:documentation>
The event classification of this notification.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="timeGenerated" type="xs:dateTime"/>
<xs:element name="numberEventsReplayed" type="xs:integer"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
7. Security Considerations 6. Security Considerations
The security considerations from the base [NETCONF] document apply The security considerations from the base [NETCONF] document apply
also to the Notification capability. also to the Notification capability.
The access control framework and the choice of transport will have a The access control framework and the choice of transport will have a
major impact on the security of the solution. major impact on the security of the solution.
Note that the <notification> elements are never sent before the Note that the <notification> elements are never sent before the
transport layer and the netconf layer (capabilities exchange) have transport layer and the netconf layer (capabilities exchange) have
been established, and the manager has been identified and been established, and the manager has been identified and
authenticated. authenticated.
It is recommended that care be taken to ensure the secure operation It is recommended that care be taken to ensure the secure operation
of the following commands: of the following commands:
o <create-subscription> invocation o <create-subscription> invocation
o use of <kill-session>
o read-only data models o read-only data models
o read-write data models o read-write data models
o notification content o notification content
One issue related to the notifications draft is the transport of data One issue related to the notifications draft is the transport of data
from non-netconf streams, such as syslog and SNMP. Note that this from non-netconf streams, such as syslog and SNMP. Note that this
data may be more vulnerable (or is not more vulnerable) when being data may be more vulnerable (or is not more vulnerable) when being
transported over netconf than when being transported using the transported over netconf than when being transported using the
protocol normally used for transporting it, depending on the security protocol normally used for transporting it, depending on the security
credentials of the two subsystems. credentials of the two subsystems.
If a user does not have permission to view content via other NETCONF
operations it does not have permission to access that content via
Notifications. If a user is not permitted to view one element in the
content of the notification, the notification is not sent to that
user.
7. IANA Considerations
This document registers two URIs for the NETCONF XML namespace in the
IETF XML registry [7].
Following the format in RFC 3688, IANA has made the following
registration.
URI: urn:ietf:params:netconf:capability:notification:1.0
URI: urn:ietf:params:xml:ns:netmod:notification
Registrant Contact: The IESG.
XML: N/A, the requested URI is an XML namespace.
8. Acknowledgements 8. Acknowledgements
Thanks to Gilbert Gagnon, Greg Wilbur and Kim Curran for providing Thanks to Gilbert Gagnon, Greg Wilbur and Kim Curran for providing
their input into the early work on this document. In addition, the their input into the early work on this document. In addition, the
editors would like to acknowledge input at the Vancouver editing editors would like to acknowledge input at the Vancouver editing
session from the following people: Orly Nicklass, James Balestriere, session from the following people: Orly Nicklass, James Balestriere,
Yoshifumi Atarashi, Glenn Waters, Alexander Clemm, Dave Harrington, Yoshifumi Atarashi, Glenn Waters, Alexander Clemm, Dave Harrington,
Dave Partain, Ray Atarashi and Dave Perkins and the following Dave Partain, Ray Atarashi and Dave Perkins and the following
additional people from the Montreal editing session: Balazs Lengyel, additional people from the Montreal editing session: Balazs Lengyel,
Phil Shafer, Rob Ennes, Andy Bierman, Dan Romascanu, Bert Wijnen, Phil Shafer, Rob Enns, Andy Bierman, Dan Romascanu, Bert Wijnen,
Simon Leinen, Juergen Schoenwaelder, Hideki Okita, Vincent Cridlig, Simon Leinen, Juergen Schoenwaelder, Hideki Okita, Vincent Cridlig,
Martin Bjorklund, Olivier Festor, Radu State, Brian Trammell, William Martin Bjorklund, Olivier Festor, Radu State, Brian Trammell, William
Chow. Chow.
9. Normative References 9. Normative References
[NETCONF] Enns, R., "NETCONF Configuration Protocol", [NETCONF] Enns, R., "NETCONF Configuration Protocol", RFC 4741,
ID draft-ietf-netconf-prot-12, February 2006. December 2006.
[RFC2026] Bradner, S., "The Internet Standards Process -- Revision [RFC2026] Bradner, S., "The Internet Standards Process -- Revision
3", RFC 2026, BCP 9, October 1996. 3", RFC 2026, BCP 9, October 1996.
[RFC2119] Bradner, s., "Key words for RFCs to Indicate Requirements [RFC2119] Bradner, s., "Key words for RFCs to Indicate Requirements
Levels", RFC 2119, March 1997. Levels", RFC 2119, March 1997.
[RFC2223] Postel, J. and J. Reynolds, "Instructions to RFC Authors", [RFC2223] Postel, J. and J. Reynolds, "Instructions to RFC Authors",
RFC 2223, October 1997. RFC 2223, October 1997.
 End of changes. 105 change blocks. 
386 lines changed or deleted 502 lines changed or added

This html diff was produced by rfcdiff 1.33. The latest version is available from http://tools.ietf.org/tools/rfcdiff/