draft-ietf-netconf-notification-07.txt | draft-ietf-netconf-notification-08.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: November 16, 2007 Cisco | Expires: January 9, 2008 Cisco | |||
May 15, 2007 | July 8, 2007 | |||
NETCONF Event Notifications | NETCONF Event Notifications | |||
draft-ietf-netconf-notification-07.txt | draft-ietf-netconf-notification-08.txt.pre-release | |||
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 November 16, 2007. | This Internet-Draft will expire on January 9, 2008. | |||
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 | |||
skipping to change at page 3, line 13 | skipping to change at page 3, line 13 | |||
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. Motivation . . . . . . . . . . . . . . . . . . . . . . . . 5 | 1.2. Motivation . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
1.3. Event Notifications in NETCONF . . . . . . . . . . . . . . 5 | 1.3. Event Notifications in NETCONF . . . . . . . . . . . . . . 5 | |||
1.4. Requirements . . . . . . . . . . . . . . . . . . . . . . . 6 | 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 . . . . . . . . . . . . . . . 9 | 2.2. Sending Event Notifications . . . . . . . . . . . . . . . 9 | |||
2.2.1. <notification> . . . . . . . . . . . . . . . . . . . . 9 | 2.2.1. <notification> . . . . . . . . . . . . . . . . . . . . 9 | |||
2.3. Terminating the Subscription . . . . . . . . . . . . . . . 10 | 2.3. Terminating the Subscription . . . . . . . . . . . . . . . 10 | |||
3. Supporting Concepts . . . . . . . . . . . . . . . . . . . . . 11 | 3. Supporting Concepts . . . . . . . . . . . . . . . . . . . . . 11 | |||
3.1. Capabilities Exchange . . . . . . . . . . . . . . . . . . 11 | 3.1. Capabilities Exchange . . . . . . . . . . . . . . . . . . 11 | |||
3.1.1. Capability Identifier . . . . . . . . . . . . . . . . 11 | 3.1.1. Capability Identifier . . . . . . . . . . . . . . . . 11 | |||
3.1.2. Capability Example . . . . . . . . . . . . . . . . . . 11 | 3.1.2. Capability Example . . . . . . . . . . . . . . . . . . 11 | |||
3.2. Event Streams . . . . . . . . . . . . . . . . . . . . . . 11 | 3.2. Event Streams . . . . . . . . . . . . . . . . . . . . . . 11 | |||
3.2.1. Event Stream Definition . . . . . . . . . . . . . . . 12 | 3.2.1. Event Stream Definition . . . . . . . . . . . . . . . 12 | |||
3.2.2. Event Stream Content Format . . . . . . . . . . . . . 13 | 3.2.2. Event Stream Content Format . . . . . . . . . . . . . 13 | |||
3.2.3. Default Event Stream . . . . . . . . . . . . . . . . . 13 | 3.2.3. Default Event Stream . . . . . . . . . . . . . . . . . 13 | |||
3.2.4. Event Stream Sources . . . . . . . . . . . . . . . . . 13 | 3.2.4. Event Stream Sources . . . . . . . . . . . . . . . . . 13 | |||
3.2.5. Event Stream Discovery . . . . . . . . . . . . . . . . 13 | 3.2.5. Event Stream Discovery . . . . . . . . . . . . . . . . 13 | |||
3.3. Notification Replay . . . . . . . . . . . . . . . . . . . 15 | 3.3. Notification Replay . . . . . . . . . . . . . . . . . . . 15 | |||
3.3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . 15 | 3.3.1. Overview . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
3.3.2. Creating a Subscription with Replay . . . . . . . . . 16 | 3.3.2. Creating a Subscription with Replay . . . . . . . . . 16 | |||
3.3.3. Replay Complete Notification . . . . . . . . . . . . . 16 | 3.3.3. Replay Complete Notification . . . . . . . . . . . . . 16 | |||
3.4. Notification Management Schema . . . . . . . . . . . . . . 16 | 3.4. Notification Management Schema . . . . . . . . . . . . . . 16 | |||
3.5. Subscriptions Data . . . . . . . . . . . . . . . . . . . . 20 | 3.5. Subscriptions Data . . . . . . . . . . . . . . . . . . . . 19 | |||
3.6. Filter Mechanics . . . . . . . . . . . . . . . . . . . . . 20 | 3.6. Filter Mechanics . . . . . . . . . . . . . . . . . . . . . 19 | |||
3.6.1. Named Profiles . . . . . . . . . . . . . . . . . . . . 21 | 3.6.1. Filtering . . . . . . . . . . . . . . . . . . . . . . 19 | |||
3.6.2. Filtering . . . . . . . . . . . . . . . . . . . . . . 21 | 3.7. Message Flow . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
3.7. Message Flow . . . . . . . . . . . . . . . . . . . . . . . 21 | 4. XML Schema for Event Notifications . . . . . . . . . . . . . . 21 | |||
4. XML Schema for Event Notifications . . . . . . . . . . . . . . 23 | 5. Filtering Examples . . . . . . . . . . . . . . . . . . . . . . 25 | |||
5. Filtering Examples . . . . . . . . . . . . . . . . . . . . . . 27 | 5.1. Subtree Filtering . . . . . . . . . . . . . . . . . . . . 25 | |||
5.1. Subtree Filtering . . . . . . . . . . . . . . . . . . . . 27 | 5.2. XPATH filters . . . . . . . . . . . . . . . . . . . . . . 28 | |||
5.2. XPATH filters . . . . . . . . . . . . . . . . . . . . . . 30 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 30 | |||
6. Security Considerations . . . . . . . . . . . . . . . . . . . 32 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 31 | |||
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 33 | 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 32 | |||
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 34 | 9. Normative References . . . . . . . . . . . . . . . . . . . . . 33 | |||
9. Normative References . . . . . . . . . . . . . . . . . . . . . 35 | Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 34 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 36 | A.1. Version -08 . . . . . . . . . . . . . . . . . . . . . . . 34 | |||
Intellectual Property and Copyright Statements . . . . . . . . . . 37 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 37 | |||
Intellectual Property and Copyright Statements . . . . . . . . . . 38 | ||||
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 43 | skipping to change at page 4, line 43 | |||
necessary to support this service. | necessary to support this service. | |||
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. | |||
Subscription: A concept related to the delivery of notifications (if | Subscription: An agreement and method to receive event notifications | |||
any to send) involving destination and selection of notifications. | over a NETCONF session. A concept related to the delivery of | |||
It is bound to the lifetime of a session. | notifications (if any to send) involving destination and selection | |||
of notifications. 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 | |||
operations. Specifically within this document, operation refers | [NETCONF]. Specifically within this document, operation refers to | |||
to NETCONF protocol operations defined in support of NETCONF | NETCONF protocol operations defined in support of NETCONF | |||
notifications. | notifications. | |||
Event: An event is something that happens which may be of interest - | Event: An event is something that happens which may be of interest - | |||
a configuration change, a fault, a change in status, crossing a | 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 | this results in an asynchronous message, sometimes referred to as | |||
a notification or event notification, being sent 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 | Replay: The ability to send/re-send previously logged notifications | |||
upon request. These notifications are sent asynchronously. This | upon request. These notifications are sent asynchronously. This | |||
feature is implemented by the NETCONF server and invoked by the | feature is implemented by the NETCONF server and invoked by the | |||
NETCONF client. | NETCONF client. | |||
Stream: An event stream is a set of event notifications matching | Stream: An event stream is a set of event notifications matching | |||
some forwarding criteria and it is available to NETCONF clients | some forwarding criteria and it is available to NETCONF clients | |||
for subscription. | for subscription. | |||
Named Profile: A predefined set of filtering criteria residing in | Filter: A parameter that indicates which subset of all possible | |||
the Network Element which may be applied to a notification session | events are of interest. | |||
at subscription creation time. | ||||
1.2. Motivation | 1.2. Motivation | |||
The motivation for this work is to enable the sending of asynchronous | The motivation for this work is to enable the sending of asynchronous | |||
messages that are consistent with the data model (content) and | messages that are consistent with the data model (content) and | |||
security model used within a NETCONF implementation. | security model used within a NETCONF implementation. | |||
1.3. Event Notifications in NETCONF | 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 | |||
skipping to change at page 5, line 46 | skipping to change at page 5, line 45 | |||
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 | either the NETCONF session is terminated or the subscription | |||
terminates for some other reason. The event notification | terminates for some other reason. The event notification | |||
subscription allows a number of options to enable the NETCONF client | subscription allows a number of options to enable the NETCONF client | |||
to specify which events are of interest. These are specified when | to specify which events are of interest. These are specified when | |||
the subscription is created. | the subscription is created. | |||
A NETCONF server is not required to process RPC requests on the | A NETCONF server is will not read RPC requests, by default, 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. A capability may be advertised to announce | |||
capability may be advertised to announce that a server is able to | that a server is able to process RPCs while a notification stream is | |||
process RPCs while a notification stream is active on a session. The | active on a session. The behaviour of such a capability is outside | |||
behaviour of such a capability is outside the scope of this document. | the scope of this document. | |||
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 | |||
o solution should support a reasonable message size limit (syslog | o Solution should support a reasonable message size limit (ie, not | |||
and SNMP are rather constrained in terms of message sizes) | too short) | |||
o solution should provide reliable delivery of notifications | o Solution should provide reliable delivery of notifications | |||
o solution should provide a subscription mechanism (A NETCONF server | o Solution should provide a subscription mechanism (A NETCONF server | |||
does not send notifications before being asked to do so and the | does not send notifications before being asked to do so and the | |||
NETCONF client initiates the flow of notifications) | NETCONF client initiates the flow of notifications) | |||
o solution should provide a filtering mechanism within the NETCONF | o Solution should provide a filtering mechanism within the NETCONF | |||
server | server | |||
o solution should send sufficient information in a notification so | o Solution should send sufficient information in a notification so | |||
that it can be analyzed independent of the transport mechanism | that it can be analyzed independent of the transport mechanism | |||
(data content fully describes a notification; protocol information | (data content fully describes a notification; protocol information | |||
is not needed to understand a notification) | is not needed to understand a notification) | |||
o solution should support replay of locally logged notifications | o Solution should support replay of locally logged notifications | |||
2. Notification-Related Operations | 2. Notification-Related Operations | |||
2.1. Subscribing to receive Event Notifications | 2.1. Subscribing to Receive Event Notifications | |||
The event notification subscription is initiated by the NETCONF | The event notification subscription is initiated by the NETCONF | |||
client and responded to by the NETCONF server. When the event | client and responded to by the NETCONF server. When the event | |||
notification subscription is created, the events of interest are | notification subscription is created, the events of interest are | |||
specified. | specified. | |||
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> | |||
skipping to change at page 7, line 39 | skipping to change at page 7, line 39 | |||
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. See section 3.6 for more | |||
with the named profile parameter. See section 3.6 for more | ||||
information on filters. | information on filters. | |||
Named Profile: | ||||
An optional parameter that refers to a separately defined | ||||
filter profile. If not present, no additional filtering will | ||||
be applied. Note that changes to the profile after the | ||||
subscription has been created will have no effect. This is | ||||
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 indicate | |||
that the replay should start at the time specified. If | that the replay should start at the time specified. If | |||
startTime 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 | It is valid to specify start times that are later than the | |||
current time. If the startTime specified is earlier then the | current time. If the startTime specified is earlier than the | |||
log can support, the replay will begin with the earliest | log can support, the replay will begin with the earliest | |||
available notification. This parameter is of type dateTime. | 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'. It | subscription is terminated. Must be used with and be later | |||
is valid to specify stop times that are later than the current | than 'startTime'. It is valid to specify stop times that are | |||
time. This parameter is of type dateTime. | 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 | |||
skipping to change at page 8, line 45 | skipping to change at page 8, line 36 | |||
If a stopTime is specified in a request without having specified a | If a stopTime is specified in a request without having specified a | |||
startTime the following error is returned: | startTime the following error is returned: | |||
Tag: missing-element | Tag: missing-element | |||
Error-type: protocol | Error-type: protocol | |||
Severity: error | Severity: error | |||
Error-info: <startTime Description: An expected element is | Error-info: <badElement>: startTime | |||
missing. | ||||
Description: An expected element is missing. | ||||
If the optional replay feature is requested but it is not | If the optional replay feature is requested but it is not | |||
supported by the NETCONF server, the following error is returned: | supported by the NETCONF server, the following error is returned: | |||
Tag: operation-failed | Tag: operation-failed | |||
Error-type: protocol | Error-type: protocol | |||
Severity: error | Severity: error | |||
skipping to change at page 9, line 12 | skipping to change at page 9, line 4 | |||
If the optional replay feature is requested but it is not | If the optional replay feature is requested but it is not | |||
supported by the NETCONF server, the following error is returned: | supported by the NETCONF server, the following error is returned: | |||
Tag: operation-failed | Tag: operation-failed | |||
Error-type: protocol | Error-type: protocol | |||
Severity: error | Severity: error | |||
Error-info: none | Error-info: none | |||
Description: Request could not be completed because the | Description: Request could not be completed because the | |||
requested operation failed for some reason not covered by any | requested operation failed for some reason not covered by any | |||
other error condition | other error condition | |||
2.1.1.1. Usage Example | 2.1.1.1. Usage Example | |||
<netconf: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 | |||
xmlns="urn:ietf:params:netconf:capability:notification:1.0"> | ||||
</create-subscription> | </create-subscription> | |||
</netconf:rpc> | </netconf:rpc> | |||
Figure 2 | ||||
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 over 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 client who initiated a | An event notification is sent to the client who initiated a | |||
<create-subscription> command asynchronously when an event of | <create-subscription> command asynchronously when an event of | |||
interest (i.e., meeting the specified filtering criteria) to them | interest (i.e., meeting the specified filtering criteria) to them | |||
has occurred. An event notification is a complete and well-formed | has occurred. An event notification is a complete and well-formed | |||
XML 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: | ||||
Contains notification-specific tagged content. The content of | Contains notification-specific tagged content. The content of | |||
the data tag is beyond the scope of this document. | 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 | |||
skipping to change at page 11, line 33 | skipping to change at page 11, line 33 | |||
<capability> | <capability> | |||
urn:ietf:params:netconf:capability:startup:1.0 | urn:ietf:params:netconf:capability:startup:1.0 | |||
</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> | |||
Figure 3 | ||||
3.2. Event Streams | 3.2. Event Streams | |||
An event stream is defined as a set of event notifications matching | An event stream is defined as a set of event notifications matching | |||
some forwarding criteria. | some forwarding criteria. | |||
The diagram depicted in Figure 2 illustrates the notification flow | The diagram depicted in Figure 2 illustrates the notification flow | |||
and concepts identified in this document. The following is observed | and concepts identified in this document. The following is observed | |||
from the diagram below: System components (c1..cn) generate event | from the diagram below: System components (c1..cn) generate event | |||
notifications which are passed to a central component for | notifications which are passed to a central component for | |||
classification and distribution. The central component inspects each | classification and distribution. The central component inspects each | |||
skipping to change at page 12, line 13 | skipping to change at page 12, line 15 | |||
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. For more information on | distribution to subscribed NETCONF clients. For more information on | |||
filters, see section 3.6. | filters, see section 3.6. | |||
A notification logging service may also be available, in which case, | A notification logging service may also be available, in which case, | |||
the central component logs notifications. The NETCONF server may | the central component logs notifications. The NETCONF server may | |||
later retrieve logged notifications via the optional replay feature. | later retrieve logged notifications via the optional replay feature. | |||
For more information on replay, see section 3.3. | 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 | | ... | | |-> stream n |server | | |||
System | +---------+ +-------+ | System | +---------+ +-------+ | |||
Components| | /\ | Components| | /\ | |||
... | | || | ... | | || | |||
+----+ | | (------------) || | +----+ | | (------------) || | |||
| cn |---+ | (notification) || | | cn |----+ | (notification) || | |||
+----+ +-----> ( logging ) || | +----+ +-----> ( logging ) || | |||
( service ) || | ( service ) || | |||
(------------) || | (------------) || | |||
|| | || | |||
|| | || | |||
\/ | \/ | |||
+-------+ | +-------+ | |||
|netconf| | |netconf| | |||
|client | | |client | | |||
+-------+ | +-------+ | |||
skipping to change at page 13, line 38 | skipping to change at page 13, line 38 | |||
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 | <eventStreams> subtree via a <get> operation. Available event | |||
streams for the requesting session are returned in the reply | streams for the requesting session are returned in the reply | |||
containing the <name> and <description> elements, where <name> | containing the <name> and <description> elements, where the <name> | |||
element is mandatory and its value is unique. The returned list must | element is mandatory and its value is unique within the scope of a | |||
only include the names of those event streams for which the NETCONF | NETCONF server. The returned list must only include the names of | |||
session has sufficient privileges. The NETCONF session privileges | those event streams for which the NETCONF session has sufficient | |||
are determined via access control mechanisms which are beyond the | privileges. The NETCONF session privileges are determined via access | |||
scope of this document. An empty reply is returned if there are no | control mechanisms which are beyond the scope of this document. An | |||
available event streams. The information is retrieved by requesting | empty reply is returned if there are no available event streams. The | |||
the <eventStreams> subtree via a <get> operation. | information is retrieved by requesting 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:notification"/> | <eventStreams xmlns="urn:ietf:params:xml:ns:netmod:notification"/> | |||
</filter> | </filter> | |||
</get> | </get> | |||
</rpc> | </rpc> | |||
Figure 5 | ||||
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:notification"> | <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> | |||
<replayLogStartTime>2007-07-08T00:00:00Z</replayLogStartTime> | ||||
</stream> | </stream> | |||
<stream> | <stream> | |||
<name>snmp</name> | <name>SNMP</name> | |||
<description>SNMP notifications</description> | <description>SNMP notifications</description> | |||
<replaySupport>false</replaySupport> | <replaySupport>false</replaySupport> | |||
</stream> | </stream> | |||
<stream> | <stream> | |||
<name>syslog-critical</name> | <name>syslog-critical</name> | |||
<description>Critical and higher severity | <description>Critical and higher severity | |||
</description> | </description> | |||
<replaySupport>true</replaySupport> | <replaySupport>true</replaySupport> | |||
<replayLogStartTime>2007-07-01T00:00:00Z</replayLogStartTime> | ||||
</stream> | </stream> | |||
</eventStreams> | </eventStreams> | |||
</data> | </data> | |||
</rpc-reply> | </rpc-reply> | |||
Figure 6 | ||||
3.2.5.2. Event Stream Subscription | 3.2.5.2. Event Stream Subscription | |||
A NETCONF client may request from the NETCONF server the list of | A NETCONF client may request from the NETCONF server the list of | |||
available event streams to this session and then issue a <create- | event streams available to this session and then issue a <create- | |||
subscription> request with the desired event stream name. Omitting | subscription> request with the desired event stream name. Omitting | |||
the event stream name from the <create-subscription> request results | the event stream name from the <create-subscription> request results | |||
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 | |||
skipping to change at page 15, line 32 | skipping to change at page 15, line 33 | |||
of the normal XPATH capability advertisement. If XPATH support is | of the normal XPATH capability advertisement. If XPATH support is | |||
advertised via the XPATH capability then XPATH is supported for | advertised via the XPATH capability then XPATH is supported for | |||
notification filtering and if this capability is not advertised, then | notification filtering and if this capability is not advertised, then | |||
XPATH is not supported for notification filtering. | XPATH is not supported for notification filtering. | |||
3.3. Notification Replay | 3.3. Notification Replay | |||
3.3.1. Overview | 3.3.1. Overview | |||
Replay is the ability to create an event subscription that will | Replay is the ability to create an event subscription that will | |||
resend recently generated notifications. These notifications are | resend recently generated notifications, or in some cases send them | |||
sent the same way as normal notifications. | for the first time to a particular NETCONF client. These | |||
notifications are sent the same way as normal notifications. | ||||
A replay of notifications is specified by including an optional | A replay of notifications is specified by including an optional | |||
parameter to the subscription command that indicates the start time | parameter to the subscription command that indicates the start time | |||
of the replay. The end time is specified using the optional stopTime | of the replay. The end time is specified using the optional stopTime | |||
parameter. If not present, notifications will continue to be sent | parameter. If not present, notifications will continue to be sent | |||
until the subscription is terminated. | until the subscription is terminated. | |||
A notification stream that supports replay is not expected to have an | A notification stream that supports replay is not expected to have an | |||
unlimited supply of saved notifications available to accommodate any | unlimited supply of saved notifications available to accommodate any | |||
replay request. | replay request. | |||
The actual number of stored notifications available for retrieval at | The actual number of stored notifications available for retrieval at | |||
any given time is a NETCONF server implementation specific matter. | any given time is a NETCONF server implementation specific matter. | |||
Control parameters for this aspect of the feature are outside the | Control parameters for this aspect of the feature are outside the | |||
scope of the current document. | scope of the current document. | |||
Replay is dependent on a notification stream supporting some form of | Replay is dependent on a notification stream supporting some form of | |||
notification logging, although it puts no restrictions on the size or | notification logging, although it puts no restrictions on the size or | |||
form of the log, nor where it resides within the device. | form of the log, nor where it resides within the device. Whether or | |||
not a stream supports replay can be discovered by doing a <get> | ||||
operation on the eventStreams element of the Notification Management | ||||
Schema. This schema also provides the replayLogStartTime element to | ||||
indicate the earliest available logged notification. | ||||
3.3.2. Creating a Subscription with Replay | 3.3.2. Creating a Subscription with Replay | |||
This feature uses optional parameters to the <create-subscription> | This feature uses optional parameters to the <create-subscription> | |||
command called 'startTime' and 'stopTime'. 'startTime' identifies the | command called 'startTime' and 'stopTime'. 'startTime' identifies the | |||
earliest date and time of interest for event notifications being | earliest date and time of interest for event notifications being | |||
replayed and also indicates that a subscription will be providing | replayed and also indicates that a subscription will be providing | |||
replay of notifications. Events generated before this time are not | replay of notifications. Events generated before this time are not | |||
matched. 'stopTime' specifies the latest date and time of interest | matched. 'stopTime' specifies the latest date and time of interest | |||
for event notifications being replayed. If it is not present, then | for event notifications being replayed. If it is not present, then | |||
notifications will continue to be sent until the subscription is | notifications will continue to be sent until the subscription is | |||
terminated. | terminated. | |||
Note that startTime and stopTime are associated with the time an | Note that startTime and stopTime are associated with the time an | |||
event was generated by the system. | event was generated by the system. | |||
A replay complete notification is sent to indicate that all of the | A replayComplete notification is sent to indicate that all of the | |||
replay notifications have been sent. If this subscription has a stop | replay notifications have been sent. If this subscription has a stop | |||
time, then this session becomes a normal NETCONF session again. In | time, then this session becomes a normal NETCONF session again. In | |||
the case of a subscription without a stop time, after the replay | the case of a subscription without a stop time, after the | |||
complete notification has been sent, it can be expected that any | replayComplete notification has been sent, it can be expected that | |||
notifications generated since the start of the subscription creation | any notifications generated since the start of the subscription | |||
will be sent followed by notifications as they arise naturally within | creation will be sent followed by notifications as they arise | |||
the system. | naturally within the system. | |||
3.3.3. Replay Complete Notification | 3.3.3. Replay Complete Notification | |||
The replay complete notification is the last notification sent over a | The replayComplete notification is the last notification sent over a | |||
replay subscription. It indicates that replay is complete. This | replay subscription. It indicates that replay is complete. After | |||
notification will only be sent if a 'stopTime' was specified when the | this notification is received the subscription is terminated and the | |||
replay subscription was created. After this notification is received | session becomes normal command-response NETCONF session. | |||
the subscription is terminated and the session becomes a normal | ||||
NETCONF session. | ||||
The replayComplete can not be filtered out. It will always be sent | The replayComplete can not be filtered out. It will always be sent | |||
on a relay subscription that specified a stop time. | on a relay subscription that specified a stop time. | |||
3.4. Notification Management Schema | 3.4. Notification Management Schema | |||
This Schema is used to learn about the event streams supported on the | 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 | system. It also contains the definition of the replayComplete, which | |||
definition of the replayComplete, which is sent to indicate that an | is sent to indicate that an event replay has sent all applicable | |||
event replay has sent all applicable notifications." | 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:netconf:capability:notification:1.0" | xmlns:ncEvent="urn:ietf:params:netconf:capability:notification:1.0" | |||
xmlns:manageEvent="urn:ietf:params:xml:ns:netmod:notification" | xmlns:manageEvent="urn:ietf:params:xml:ns:netmod:notification" | |||
targetNamespace="urn:ietf:params:xml:ns:netmod:notification" | 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. It also | event streams. It also | |||
contains the replayComplete notification. | 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= | |||
"http://www.iana.org/assignments/xml-registry/schema/netconf.xsd"/> | ||||
<xs:import namespace= | <xs:import namespace= | |||
"urn:ietf:params:netconf:capability:notification:1.0" | "urn:ietf:params:netconf:capability:notification:1.0" | |||
schemaLocation= | schemaLocation= | |||
"urn:ietf:params:netconf:capability:notification:1.0"/> | "http://www.iana.org/assignments/xml-registry/schema/notification.xsd"/> | |||
<xs:element name="netconf" type="manageEvent:Netconf"/> | <xs:element name="netconf" type="manageEvent:Netconf"/> | |||
<xs:complexType name="Netconf"> | <xs:complexType name="Netconf"> | |||
<xs:sequence> | <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 | The list of event streams supported by the | |||
system. When a query is issued, the returned | system. When a query is issued, the returned | |||
skipping to change at page 18, line 7 | skipping to change at page 18, line 12 | |||
</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" | <xs:element name="description" | |||
type="xs:string"/> | type="xs:string"/> | |||
<xs:element name="replaySupport" | <xs:element name="replaySupport" | |||
type="xs:boolean"/> | type="xs:boolean"/> | |||
<xs:element name="replayLogStartTime" | <xs:element name="replayLogStartTime" | |||
type="xs:dateTime"> | type="xs:dateTime" minOccurs="0"> | |||
<xs:annotation> | <xs:annotation> | |||
<xs:documentation> | <xs:documentation> | |||
The start time of the log used to | The start time of the log used to | |||
support the replay function. If | support the replay function. This | |||
replay is not supported, this will | object MUST be present if replay is | |||
return the current time. | supported. | |||
</xs:documentation> | </xs:documentation> | |||
</xs:annotation> | </xs:annotation> | |||
</xs:element> | </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="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:sequence> | |||
</xs:complexType> | </xs:complexType> | |||
<xs:complexType name="ReplayCompleteNotificationType" > | <xs:complexType name="ReplayCompleteNotificationType" > | |||
<xs:complexContent> | <xs:complexContent> | |||
<xs:extension base="ncEvent:NotificationType"> | <xs:extension base="ncEvent:NotificationContentType"/> | |||
<xs:sequence> | ||||
<xs:element name="eventClass"/> | ||||
</xs:sequence> | ||||
</xs:extension> | ||||
</xs:complexContent> | </xs:complexContent> | |||
</xs:complexType> | </xs:complexType> | |||
<xs:complexType name="NamedProfile"> | <xs:element name="replayComplete" | |||
<xs:annotation> | type="manageEvent:ReplayCompleteNotificationType" | |||
<xs:documentation> | substitutionGroup="ncEvent:notificationContent"> | |||
A named profile, which is a saved set of parameters | ||||
that may be associated with zero or more | ||||
active subscriptions. | ||||
This object can be created, read, deleted and its | ||||
individual components can be modified. | ||||
</xs:documentation> | ||||
</xs:annotation> | ||||
<xs:sequence> | ||||
<xs:element name="name"> | ||||
<xs:annotation> | <xs:annotation> | |||
<xs:documentation> | <xs:documentation> | |||
The name associated with the profile. | This notification is sent to signal the end of a replay | |||
This object is readable and modifiable. | portion of a subscription. | |||
</xs:documentation> | ||||
</xs:annotation> | ||||
</xs:element> | ||||
<xs:element name="stream" minOccurs="0"> | ||||
<xs:annotation> | ||||
<xs:documentation xml:lang="en"> | ||||
The event stream associated with this named | ||||
profile. | ||||
This object is readable and modifiable. | ||||
</xs:documentation> | ||||
</xs:annotation> | ||||
</xs:element> | ||||
<xs:element name="filter" | ||||
type="netconf:filterInlineType" minOccurs="0"> | ||||
<xs:annotation> | ||||
<xs:documentation xml:lang="en"> | ||||
The filters associated with this named | ||||
profile. | ||||
This object is readable and modifiable. | ||||
</xs:documentation> | </xs:documentation> | |||
</xs:annotation> | </xs:annotation> | |||
</xs:element> | ||||
<xs:element name="lastModified" type="xs:dateTime"> | ||||
<xs:annotation> | ||||
<xs:documentation> | ||||
The timestamp of the last modification to this | ||||
named Profile. Note that modification of the | ||||
profile does not cause an immediate update | ||||
to all applicable subscription. Therefore, | ||||
this time should be compared with the last | ||||
modified time associated with the | ||||
subscription. If this time is earlier, then | ||||
the subscription is using the exact set of | ||||
parameters associated with this named profile. | ||||
If this time is later, then the subscription | ||||
is using an earlier version of this named | ||||
profile and the exact parameters may not | ||||
match. Note there is no guarantee that the | ||||
profile named in the subscription will be | ||||
found at all." | ||||
This object is read-only. | ||||
</xs:documentation> | ||||
</xs:annotation> | ||||
</xs:element> | </xs:element> | |||
</xs:sequence> | ||||
</xs:complexType> | ||||
</xs:schema> | </xs:schema> | |||
Figure 7 | ||||
3.5. Subscriptions 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 and their lifetime is | They are non-persistent state information and their lifetime is | |||
defined by their session. | defined by their session. | |||
Named profiles, if used, are considered configuration data. | ||||
3.6. Filter Mechanics | 3.6. Filter Mechanics | |||
Note that when multiple filter elements are specified, they are | When multiple filter elements are specified, they are applied | |||
applied collectively, so event notifications need to pass all | collectively, so event notifications need to pass all specified | |||
specified filters in order to be sent to the subscriber. If a filter | filters in order to be sent to the subscriber. If a filter element | |||
element is specified to look for data of a particular value, and the | is specified to look for data of a particular value, and the data | |||
data item is not present within a particular event notification for | item is not present within a particular event notification for its | |||
its value to be checked against, it will be filtered out. For | value to be checked against, the notification will be filtered out. | |||
example, if one were to check for 'severity=critical' in a | For example, if one were to check for 'severity=critical' in a | |||
configuration event notification where this field was not supported, | configuration event notification where this field was not supported, | |||
then the notification would be filtered out. | then the notification would be filtered out. | |||
Note that the order that filter elements are applied does not matter | The order that filter elements are applied does not matter since the | |||
since the resulting set of notifications is the intersection of the | resulting set of notifications is the intersection of the set of | |||
set of notifications that pass each filtering criteria. | notifications that pass each filtering criteria. | |||
3.6.1. Named Profiles | ||||
A named profile is a filter that is created ahead of time and applied | ||||
at the time an event notification subscription is created. Note that | ||||
changes to the profile after the subscription has been created will | ||||
have no effect on the subscription. Since named profiles exist | ||||
outside of the subscription, they persist after the subscription has | ||||
been torn down. | ||||
3.6.2. Filtering | 3.6.1. Filtering | |||
Inline filtering is explicitly stated when the event notification | Filtering is explicitly stated when the event notification | |||
subscription is created. This is specified via the 'filter' | subscription is created. This is specified via the 'filter' | |||
parameter. Filters only exist as parameters to the subscription. | parameter. Filters only exist as parameters to the subscription. | |||
3.7. 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. It is possible that many rpc/rpc-reply | the flow of notifications. It is possible that many rpc/rpc-reply | |||
sequences occur before the subscription is created or after a | sequences occur before the subscription is created or after a | |||
stopTime in a replay subscription, but this is not depicted in the | stopTime in a replay subscription, but this is not depicted in the | |||
figure. | figure. | |||
skipping to change at page 23, line 33 | skipping to change at page 21, line 33 | |||
<xs:annotation> | <xs:annotation> | |||
<xs:documentation> | <xs:documentation> | |||
This import accesses the xml: attribute groups for the | This import accesses the xml: attribute groups for the | |||
xml:lang as declared on the error-message element. | xml:lang as declared on the error-message element. | |||
</xs:documentation> | </xs:documentation> | |||
</xs:annotation> | </xs:annotation> | |||
</xs:import> | </xs:import> | |||
<!-- import base netconf definitions --> | <!-- import base netconf definitions --> | |||
<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= | |||
"http://www.iana.org/assignments/xml-registry/schema/netconf.xsd"/> | ||||
<!-- ************** 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="streamNameType" minOccurs="0"> | type="streamNameType" minOccurs="0"> | |||
<xs:annotation> | <xs:annotation> | |||
<xs:documentation> | <xs:documentation> | |||
An optional parameter that indicates | An optional parameter that indicates | |||
which stream of events is of interest. If | which stream of events is of interest. If | |||
not present, then events in the default | not present, then events in the default | |||
NETCONF stream will be sent. | NETCONF stream will be sent. | |||
</xs:documentation> | </xs:documentation> | |||
</xs:annotation> | </xs:annotation> | |||
</xs:element> | </xs:element> | |||
<xs:choice> | ||||
<xs:element name="filter" | <xs:element name="filter" | |||
type="netconf:filterInlineType" | type="netconf:filterInlineType" | |||
minOccurs="0"> | minOccurs="0"> | |||
<xs:annotation> | <xs:annotation> | |||
<xs:documentation> | <xs:documentation> | |||
An optional parameter that indicates | An optional parameter that indicates | |||
which subset of all possible events | which subset of all possible events | |||
are of interest. The format of this | are of interest. The format of this | |||
parameter is the same as that of the | parameter is the same as that of the | |||
filter parameter in the NETCONF | filter parameter in the NETCONF | |||
protocol operations. If not present, | protocol operations. If not present, | |||
all events not precluded by other | all events not precluded by other | |||
parameters will be sent. This is | parameters will be sent. | |||
mutually exclusive with the named | ||||
profile parameter. | ||||
</xs:documentation> | ||||
</xs:annotation> | ||||
</xs:element> | ||||
<xs:element name="named-profile" | ||||
type="namedProfileType" minOccurs="0"> | ||||
<xs:annotation> | ||||
<xs:documentation> | ||||
An optional parameter that points to | ||||
a separately defined filter profile. | ||||
If not present, no additional | ||||
filtering will be applied. Note that | ||||
changes to the profile after the | ||||
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: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 | A parameter used to trigger the replay | |||
feature and indicates that the replay | feature and indicates that the replay | |||
should start at the time specified. If | should start at the time specified. If | |||
start time is not present, this is not a | start time is not present, this is not a | |||
replay subscription. | replay subscription. | |||
</xs:documentation> | </xs:documentation> | |||
skipping to change at page 25, line 27 | skipping to change at page 23, line 9 | |||
subscription is terminated. Must be used | subscription is terminated. Must be used | |||
with 'startTime'. | 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:simpleType name="streamNameType"> | |||
<xs:annotation> | <xs:annotation> | |||
<xs:documentation> | <xs:documentation> | |||
The name of an event stream. | The name of an event stream. | |||
</xs:documentation> | </xs:documentation> | |||
</xs:annotation> | </xs:annotation> | |||
<xs:restriction base="xs:string"/> | <xs:restriction base="xs:string"/> | |||
</xs:simpleType> | </xs:simpleType> | |||
<xs:element name="create-subscription" | <xs:element name="create-subscription" | |||
skipping to change at page 26, line 18 | skipping to change at page 23, line 37 | |||
there are two time-related parameters startTime and | there are two time-related parameters startTime and | |||
stopTime which can be used to select the time interval | stopTime which can be used to select the time interval | |||
of interest. | 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="NotificationContentType"/> | ||||
<xs:element name="notificationContent" | ||||
type="NotificationContentType" abstract="true"/> | ||||
<xs:complexType name="NotificationType"> | <xs:complexType name="NotificationType"> | |||
<xs:sequence> | <xs:sequence> | |||
<xs:element name="data" type="netconf:dataInlineType" /> | <xs:element ref="notificationContent"/> | |||
</xs:sequence> | </xs:sequence> | |||
</xs:complexType> | </xs:complexType> | |||
<xs:element name="notification" type="NotificationType"/> | <xs:element name="notification" type="NotificationType"/> | |||
</xs:schema> | </xs:schema> | |||
Figure 9 | ||||
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 | and logical OR operations (e.g., in an event subtree give me all | |||
skipping to change at page 28, line 7 | skipping to change at page 26, line 7 | |||
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> | <event xmlns="http://example.com/event/1.0"> | |||
<eventEntry> | ||||
<eventClass>fault</eventClass> | <eventClass>fault</eventClass> | |||
<reportingEntity> | <reportingEntity> | |||
<card>Ethernet0</card> | <card>Ethernet0</card> | |||
</reportingEntity> | </reportingEntity> | |||
<severity>major</severity> | <severity>major</severity> | |||
</eventEntry> | </event> | |||
<eventEntry> | ||||
<event xmlns="http://example.com/event/1.0"> | ||||
<eventClass>fault</eventClass> | <eventClass>fault</eventClass> | |||
<reportingEntity> | <reportingEntity> | |||
<card>Ethernet2</card> | <card>Ethernet2</card> | |||
</reportingEntity> | </reportingEntity> | |||
<severity>critical</severity> | <severity>critical</severity> | |||
</eventEntry> | </event> | |||
<eventEntry> | ||||
<event xmlns="http://example.com/event/1.0"> | ||||
<eventClass>fault</eventClass> | <eventClass>fault</eventClass> | |||
<reportingEntity> | <reportingEntity> | |||
<card>ATM1</card> | <card>ATM1</card> | |||
</reportingEntity> | </reportingEntity> | |||
<severity>minor</severity> | <severity>minor</severity> | |||
</eventEntry> | </event> | |||
<eventEntry> | ||||
<event xmlns="http://example.com/event/1.0"> | ||||
<eventClass>state</eventClass> | <eventClass>state</eventClass> | |||
<reportingEntity> | <reportingEntity> | |||
<card>Ethernet0</card> | <card>Ethernet0</card> | |||
</reportingEntity> | </reportingEntity> | |||
<operState>enabled</operState> | <operState>enabled</operState> | |||
</eventEntry> | </event> | |||
</events> | ||||
Figure 10 | ||||
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)) | |||
<netconf:rpc message-id="101" | <netconf:rpc netconf: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 | |||
xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"> | xmlns="urn:ietf:params:netconf:capability:notification:1.0"> | |||
<filter netconf: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> | <eventClass>fault</eventClass> | |||
<severity>critical</severity> | <severity>critical</severity> | |||
</eventEntry> | </event> | |||
<eventEntry> | <event xmlns="http://example.com/event/1.0"> | |||
<eventClass>fault</eventClass> | <eventClass>fault</eventClass> | |||
<severity>major</severity> | <severity>major</severity> | |||
</eventEntry> | </event> | |||
<eventEntry> | <event xmlns="http://example.com/event/1.0"> | |||
<eventClass>fault</eventClass> | <eventClass>fault</eventClass> | |||
<severity>minor</severity> | <severity>minor</severity> | |||
</eventEntry> | ||||
</events> | ||||
</event> | </event> | |||
</filter> | </filter> | |||
</create-subscription> | </create-subscription> | |||
</netconf:rpc> | </netconf:rpc> | |||
Figure 11 | ||||
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) | |||
<netconf:rpc message-id="101" | <netconf:rpc netconf: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 | |||
<filter netconf:type="subtree"> | ||||
xmlns="urn:ietf:params:netconf:capability:notification:1.0"> | xmlns="urn:ietf:params:netconf:capability:notification:1.0"> | |||
<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> | <eventClass>fault</eventClass> | |||
</eventEntry> | </event> | |||
<eventEntry> | <event xmlns="http://example.com/event/1.0"> | |||
<eventClass>state</eventClass> | <eventClass>state</eventClass> | |||
</eventEntry> | </event> | |||
<eventEntry> | <event xmlns="http://example.com/event/1.0"> | |||
<eventClass>config</eventClass> | <eventClass>config</eventClass> | |||
</eventEntry> | </event> | |||
<eventEntry> | <event xmlns="http://example.com/event/1.0"> | |||
<eventClass>fault</eventClass> | <eventClass>fault</eventClass> | |||
<reportingElement> | <reportingElement> | |||
<card>Ethernet0</card> | <card>Ethernet0</card> | |||
</reportingElement> | </reportingElement> | |||
</eventEntry> | ||||
</events> | ||||
</event> | </event> | |||
</filter> | </filter> | |||
</create-subscription> | </create-subscription> | |||
</netconf: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))) | |||
<netconf:rpc message-id="101" | <netconf:rpc netconf: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 | |||
xmlns="urn:ietf:params:netconf:capability:notification:1.0"> | ||||
<filter netconf:type="xpath" | <filter netconf:type="xpath" | |||
select="//eventEntry[(eventClass='fault' and | xmlns:ex="http://example.com/event/1.0" | |||
(severity='minor' or severity='major' | select="/ex:event[ex:eventClass='fault' and | |||
or severity='critical'))]"/> | (ex:severity='minor' or ex:severity='major' | |||
or ex:severity='critical')]"/> | ||||
</create-subscription> | </create-subscription> | |||
</netconf:rpc> | </netconf:rpc> | |||
Figure 13 | ||||
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))) | |||
<netconf:rpc message-id="101" | <netconf:rpc netconf: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 | |||
xmlns="urn:ietf:params:netconf:capability:notification:1.0"> | ||||
<filter netconf:type="xpath" | <filter netconf:type="xpath" | |||
select="//eventEntry[(eventClass='fault' and | xmlns:ex="http://example.com/event/1.0" | |||
severity='minor') or | select="/ex:event[ | |||
(eventClass='fault' and severity='major') or | ex:eventClass='fault' and ex:severity='minor') or | |||
(eventClass='fault' and severity='critical') or | (ex:eventClass='fault' and ex:severity='major') or | |||
(eventClass='fault' and card='Ethernet0') or | ex:eventClass='fault' and ex:severity='critical') or | |||
eventClass='state' or eventClass='config']"/> | (ex:eventClass='fault' and | |||
ex:reportingElement/ex:card='Ethernet0') or | ||||
ex:eventClass='state' or | ||||
ex:eventClass='config']"/> | ||||
</create-subscription> | </create-subscription> | |||
</netconf:rpc> | </netconf:rpc> | |||
Figure 14 | ||||
6. 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 | The <notification> elements are never sent before the transport layer | |||
transport layer and the netconf layer (capabilities exchange) have | and the netconf layer (capabilities exchange) have been established, | |||
been established, and the manager has been identified and | 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 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. This data may be | |||
data may be more vulnerable (or is not more vulnerable) when being | more vulnerable (or is not more vulnerable) when being transported | |||
transported over netconf than when being transported using the | over netconf than when being transported using the protocol normally | |||
protocol normally used for transporting it, depending on the security | used for transporting it, depending on the security credentials of | |||
credentials of the two subsystems. | the two subsystems. The NETCONF server is responsible for providing | |||
access control to stream content. | ||||
If a user does not have permission to view content via other NETCONF | If a user does not have permission to view content via other NETCONF | |||
operations it does not have permission to access that content via | operations it does not have permission to access that content via | |||
Notifications. If a user is not permitted to view one element in the | Notifications. If a user is not permitted to view one element in the | |||
content of the notification, the notification is not sent to that | content of the notification, the notification is not sent to that | |||
user. | user. | |||
If a subscription is created with a stopTime, the NETCONF session | ||||
will return to being a normal command-response NETCONF session when | ||||
the replay is completed. It is the responsibility of the NETCONF | ||||
client to close off this session when it is no longer of use. | ||||
7. IANA Considerations | 7. IANA Considerations | |||
This document registers two URIs for the NETCONF XML namespace in the | This document registers two URIs for the NETCONF XML namespace in the | |||
IETF XML registry [7]. | IETF XML registry [RFC3688]. | |||
Following the format in RFC 3688, IANA has made the following | Following the format in RFC 3688, IANA has made the following | |||
registration. | registration. | |||
URI: urn:ietf:params:netconf:capability:notification:1.0 | URI: urn:ietf:params:netconf:capability:notification:1.0 | |||
URI: urn:ietf:params:xml:ns:netmod:notification | URI: urn:ietf:params:xml:ns:netmod:notification | |||
Registrant Contact: The IESG. | Registrant Contact: The IESG. | |||
skipping to change at page 35, line 19 | skipping to change at page 33, line 19 | |||
[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. | |||
[RFC3688] Bradner, s., "The IETF XML Registry", RFC 3688, January | ||||
2004. | ||||
[XML] World Wide Web Consortium, "Extensible Markup Language | [XML] World Wide Web Consortium, "Extensible Markup Language | |||
(XML) 1.0", W3C XML, February 1998, | (XML) 1.0", W3C XML, February 1998, | |||
<http://www.w3.org/TR/1998/REC-xml-19980210>. | <http://www.w3.org/TR/1998/REC-xml-19980210>. | |||
[XML Schema] | [XML Schema] | |||
Fallside, D. and P. Walmsley, "XML Schema Part 0: Primer | Fallside, D. and P. Walmsley, "XML Schema Part 0: Primer | |||
Second Edition", W3C XML Schema, October 2004. | Second Edition", W3C XML Schema, October 2004. | |||
[XPATH] Clark, J. and S. DeRose, "XML Path Language (XPath) | [XPATH] Clark, J. and S. DeRose, "XML Path Language (XPath) | |||
Version 1.0", | Version 1.0", | |||
W3C http://www.w3.org/TR/1999/REC-xpath-19991116, | W3C http://www.w3.org/TR/1999/REC-xpath-19991116, | |||
November 1999. | November 1999. | |||
Appendix A. Change Log | ||||
A.1. Version -08 | ||||
1. Removed named profiles | ||||
2. Removed eventClass that was accidentally included in the | ||||
definition of the replayComplete notification | ||||
3. Deleted data wrapper from notification | ||||
4. Changed replayLogStartTime to have a minOccurs of 0. It will | ||||
only be there when replay is supported. Verify examples in | ||||
section 3.2.5.1 are correct with respect to this element. | ||||
5. Error codes in section 2.1.1, fixed formatting issue | ||||
6. Moved replayComplete to not be under <netconf> | ||||
7. Section 2.1, fixed capitalization | ||||
8. In figure 4, the line was pushed out by 'system components', | ||||
fixed this. | ||||
9. On page 8, replaced "If the startTime specified is earlier then | ||||
the" with 'If the startTime specified is earlier than the" | ||||
10. Updated some name spaces and schemaLocations as per Andy's June | ||||
3rd email. | ||||
11. Added discussion of replayLogStartTime to draft in section 3.3.1 | ||||
as follows "Whether or not a stream supports replay can be | ||||
discovered by doing a <get> operation on the eventStreams | ||||
elements of the Notification Management Schema. This schema | ||||
also provides the replayLogStartTime element to indicate the | ||||
earliest available logged notification." | ||||
12. Removed most of the uses of the phrase 'Note that'. I kept two | ||||
uses that prevent sentences from starting with either a lower | ||||
case letter or an angle bracket. | ||||
13. In section 3.6 replaced "it will be filtered out" with "the | ||||
notification will be filtered out" | ||||
14. In section 3.4, replaced "and the query" with "and to query" | ||||
15. Replaced 3 instances of "replay complete notification" with | ||||
"replayComplete notification" | ||||
16. In section 3.3.2, replaced "normal NETCONF session" with "normal | ||||
command-response NETCONF session" | ||||
17. In section 3.3.1, replaced "create an event subscription that | ||||
will resend recently generated notification" with "create an | ||||
event subscription that will resend recently generated | ||||
notification, or is some cases send them for the first time to a | ||||
particular NETCONF client." | ||||
18. In section 3.2.5.2, s/available event streams to/event streams | ||||
available to/ | ||||
19. In one spot, changed snmp to SNMP (the other gets deleted) | ||||
20. In section 3.2.5.1 s/where <name> element is/where the <name> | ||||
element is/ | ||||
21. In section 3.2.5.1, clarified that "value is unique" - within | ||||
the scope of a NETCONF server. | ||||
22. In section 2.1.1, clarified that stopTime cannot preceded start | ||||
time. | ||||
23. In section 2.1.1, in Start Time s/indicates/indicate/ | ||||
24. In section 2.1.1, in Filter: s/This is mutually exclusive/The | ||||
filter parameter is mutually exclusive/ ("this" could refer to | ||||
the behavior described in the previous sentence.) | ||||
25. In section 1.4, third bullet, replaced "syslog and SNMP are | ||||
rather constrained in terms of message sizes)" with (ie, not too | ||||
short) | ||||
26. In section 1.4, made all bullets start with capital leters. | ||||
27. Added definition of Filter to section 1.1 | ||||
28. In section 1.1, improved the definition of subscription with "An | ||||
agreement and method to receive event notifications over a | ||||
NETCONF session." | ||||
29. In section 1.1, in the definition of operation, added a | ||||
reference to [NETCONF]. | ||||
30. Created a change log section | ||||
31. Fixed reference to IETF XML Registry in IANA Considerations | ||||
section. | ||||
32. In section 3.3.3, deleted "This notification will only be sent | ||||
if a 'stopTime' was specified when the replay subscription was | ||||
created." | ||||
33. Added text to the security considerations section that says "If | ||||
a subscription is created with a stopTime, the NETCONF session | ||||
will return to being a normal command-response NETCONF session | ||||
when the replay is completed. It is the responsibility of the | ||||
NETCONF client to close off this session when it is no longer of | ||||
use". | ||||
34. Update examples in section 5 to get rid of extra wrapper tag. | ||||
35. In section 2.1, replace "A NETCONF server is not required to | ||||
process RPC requests on the session associated with the | ||||
subscription until the notification subscription is done and may | ||||
silently discard these requests." with "A NETCONF server is will | ||||
not read RPC requests, by default, on the session associated | ||||
with the subscription until the notification subscription is | ||||
done. | ||||
36. Updated the notification definition and the replyComplete | ||||
notification definition to use a substitution group. | ||||
Authors' Addresses | Authors' Addresses | |||
Sharon Chisholm | Sharon Chisholm | |||
Nortel | Nortel | |||
3500 Carling Ave | 3500 Carling Ave | |||
Nepean, Ontario K2H 8E9 | Nepean, Ontario K2H 8E9 | |||
Canada | Canada | |||
Email: schishol@nortel.com | Email: schishol@nortel.com | |||
End of changes. 105 change blocks. | ||||
304 lines changed or deleted | 330 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/ |