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/ |