draft-ietf-netconf-system-notifications-00.txt   draft-ietf-netconf-system-notifications-01.txt 
NETCONF A. Bierman NETCONF A. Bierman
Internet-Draft Brocade Internet-Draft Brocade
Intended status: Standards Track September 3, 2010 Intended status: Standards Track October 22, 2010
Expires: March 7, 2011 Expires: April 25, 2011
NETCONF System Notifications NETCONF System Notifications
draft-ietf-netconf-system-notifications-00 draft-ietf-netconf-system-notifications-01
Abstract Abstract
The NETCONF protocol provides mechanisms to manipulate configuration The NETCONF protocol provides mechanisms to manipulate configuration
datastores. However, client applications often need to be aware of datastores. However, client applications often need to be aware of
common system events such as a change in system capabilities, which common system events such as a change in system capabilities, which
may impact management applications. Standard mechanisms are needed may impact management applications. Standard mechanisms are needed
to support the monitoring of the system events within the NETCONF to support the monitoring of the system events within the NETCONF
server. This document defines a YANG module which allows a NETCONF server. This document defines a YANG module which allows a NETCONF
client to receive notifications for some common system events. client to receive notifications for some common system events.
skipping to change at page 1, line 36 skipping to change at page 1, line 36
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
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."
This Internet-Draft will expire on March 7, 2011. This Internet-Draft will expire on April 25, 2011.
Copyright Notice Copyright Notice
Copyright (c) 2010 IETF Trust and the persons identified as the Copyright (c) 2010 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 15 skipping to change at page 2, line 15
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3
2. YANG Module for System Notifications . . . . . . . . . . . . . 3 2. YANG Module for System Notifications . . . . . . . . . . . . . 3
2.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.1. Notifications . . . . . . . . . . . . . . . . . . . . 3 2.1.1. Notifications . . . . . . . . . . . . . . . . . . . . 3
2.2. Definitions . . . . . . . . . . . . . . . . . . . . . . . 4 2.2. Definitions . . . . . . . . . . . . . . . . . . . . . . . 4
3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11
4. Security Considerations . . . . . . . . . . . . . . . . . . . 12 4. Security Considerations . . . . . . . . . . . . . . . . . . . 11
5. Normative References . . . . . . . . . . . . . . . . . . . . . 12 5. Normative References . . . . . . . . . . . . . . . . . . . . . 11
Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 12 Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 11
A.1. 00 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 A.1. 00-01 . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 13 A.2. 00 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 12
1. Introduction 1. Introduction
The NETCONF protocol [RFC4741] provides mechanisms to manipulate The NETCONF protocol [RFC4741] provides mechanisms to manipulate
configuration datastores. However, client applications often need to configuration datastores. However, client applications often need to
be aware of common system events such as a change in system be aware of common system events such as a change in system
capabilities, which may impact management applications. Standard capabilities, which may impact management applications. Standard
mechanisms are needed to support the monitoring of the system events mechanisms are needed to support the monitoring of the system events
within the NETCONF server. This document defines a YANG module within the NETCONF server. This document defines a YANG module
[I-D.ietf-netmod-yang] which allows a NETCONF client to receive [RFC6020] which allows a NETCONF client to receive notifications for
notifications for some common system events. some common system events.
1.1. Terminology 1.1. Terminology
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].
The following terms are defined in [RFC4741]: The following terms are defined in [RFC4741]:
o client o client
o datastore o datastore
o operation o operation
o server o server
The following terms are defined in [RFC5277]: The following terms are defined in [RFC5277]:
o event o event
o stream o stream
o subscription o subscription
The following term is defined in [I-D.ietf-netmod-yang]: The following term is defined in [RFC6020]:
o data node o data node
2. YANG Module for System Notifications 2. YANG Module for System Notifications
2.1. Overview 2.1. Overview
The YANG module defined within this document specifies a small number The YANG module defined within this document specifies a small number
of notification event messages for use within the 'NETCONF' stream, of notification event messages for use within the 'NETCONF' stream,
and accessible to clients via the subscription mechanism in and accessible to clients via the subscription mechanism in
[RFC5277]. [RFC5277].
The YANG language is defined in [I-D.ietf-netmod-yang]. The YANG language is defined in [RFC6020].
2.1.1. Notifications 2.1.1. Notifications
This module defines some system events to notify a client application This module defines some system events to notify a client application
that the system state has changed. that the system state has changed.
o sys-startup: Generated during a system restart. Lists any errors o sys-config-change: Generated when the <running> or <startup>
that were encountered while loading the <running> datastore during configuration datastore is changed. Summarizes each edit being
system initialization. reported.
o sys-config-change: Generated when the <running> configuration
datastore is changed. Summarizes each edit being reported.
o sys-capability-change: Generated when the NETCONF server o sys-capability-change: Generated when the NETCONF server
capabilities are changed. Indicates which capabilities have been capabilities are changed. Indicates which capabilities have been
added, deleted, and/or modified. added, deleted, and/or modified.
o sys-session-start: Generated when the NETCONF session is started. o sys-session-start: Generated when the NETCONF session is started.
Indicates the identity of the user that started the session. Indicates the identity of the user that started the session.
o sys-session-end: Generated when the NETCONF session is terminated. o sys-session-end: Generated when the NETCONF session is terminated.
Indicates the identity of the user that owned the session, and why Indicates the identity of the user that owned the session, and why
the session was terminated. the session was terminated.
o sys-conformed-commit: Generated when the NETCONF confirmed-commit o sys-conformed-commit: Generated when the NETCONF confirmed-commit
event occurs. Indicates the current state of the confirmed-commit event occurs. Indicates the current state of the confirmed-commit
operation in progress. operation in progress.
2.2. Definitions 2.2. Definitions
<CODE BEGINS> file="ietf-netconf-system-notifications@2010-09-03.yang" <CODE BEGINS> file="ietf-netconf-system-notifications@2010-10-21.yang"
module ietf-netconf-system-notifications { module ietf-netconf-system-notifications {
namespace namespace
"urn:ietf:params:xml:ns:yang:ietf-netconf-system-notifications"; "urn:ietf:params:xml:ns:yang:ietf-netconf-system-notifications";
prefix nc-sys-notif; prefix nc-sys-notif;
import ietf-yang-types { prefix yang; }
import ietf-inet-types { prefix inet; } import ietf-inet-types { prefix inet; }
import ietf-netconf { prefix nc; } import ietf-netconf { prefix nc; }
organization organization
"IETF NETCONF (Network Configuration Protocol) Working Group"; "IETF NETCONF (Network Configuration Protocol) Working Group";
contact contact
"WG Web: <http://tools.ietf.org/wg/netconf/> "WG Web: <http://tools.ietf.org/wg/netconf/>
WG List: <mailto:netconf@ietf.org> WG List: <mailto:netconf@ietf.org>
skipping to change at page 5, line 27 skipping to change at page 5, line 24
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(http://trustee.ietf.org/license-info). (http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
// RFC Ed.: replace XXXX with actual RFC number and remove this note // RFC Ed.: replace XXXX with actual RFC number and remove this note
// RFC Ed.: remove this note // RFC Ed.: remove this note
// Note: extracted from // Note: extracted from
// draft-ietf-netconf-system-notifications-00.txt // draft-ietf-netconf-system-notifications-01.txt
revision 2010-09-03 { revision 2010-10-21 {
description description
"Initial version."; "Initial version.";
reference reference
"RFC XXXX: NETCONF System Notifications"; "RFC XXXX: NETCONF System Notifications";
} }
// RFC Ed.: replace XXXX with actual // RFC Ed.: replace XXXX with actual
// RFC number and remove this note // RFC number and remove this note
typedef error-type-type {
description "NETCONF Error Type";
type enumeration {
enum transport {
description "Transport layer error";
}
enum rpc {
description "Operation layer error";
}
enum protocol {
description "Protocol layer error";
}
enum application {
description "Application layer error";
}
}
}
grouping sys-common-session-parms { grouping sys-common-session-parms {
leaf user-name { leaf user-name {
description description
"Name of the user for the session."; "Name of the user for the session.";
type string; type string;
} }
leaf session-id { leaf session-id {
description "Identifier of the session."; description "Identifier of the session.";
type nc:session-id-or-zero-type; type nc:session-id-or-zero-type;
mandatory true;
} }
leaf remote-host { leaf remote-host {
description description
"Address of the remote host for the session."; "Address of the remote host for the session.";
type inet:ip-address; type inet:ip-address;
}
}
notification sys-startup {
description
"Generated when the system restarts.
Used for logging purposes, since no
sessions are actually active when
the system restarts.";
leaf startup-source {
description
"The system-specific filespec used to load the
running configuration. This leaf will only be
present if there was a startup configuration file used.";
type string;
} }
}
list boot-error { grouping changed-by-parms {
container changed-by {
description description
"There will be one entry for each <rpc-error> "Indicates who caused this change.
encountered during the load config operation. If caused by internal action, then the
There is no particular order, so no key is defined. empty leaf 'server' will be present.
This list will only be present if the server is configured If caused by a management session, then
to continue on error during startup, and there were recoverable the name, remote host address, and session ID
errors encountered during the last restart of the server."; of the session that made the change will be reported.";
choice server-or-user {
leaf error-type { leaf server {
description type empty;
"Defines the conceptual layer that the error occurred."; description
type error-type-type; "If present, the change was caused
mandatory true; by the server.";
} }
leaf error-tag {
description
"Contains a string identifying the error condition.";
type nc:error-tag-type;
mandatory true;
}
leaf error-severity {
description
"Contains a string identifying the error severity, as
determined by the device.";
type nc:error-severity-type;
mandatory true;
}
leaf error-app-tag {
description
"Contains a string identifying the data-model-specific
or implementation-specific error condition, if one exists.";
type string;
}
leaf error-path {
description
"Contains the absolute XPath expression identifying
the element path to the node that is associated with
the error being reported in a particular <rpc-error>
element.";
type yang:xpath1.0;
}
leaf error-message {
description
"Contains a string suitable for human display that
describes the error condition.";
type string; // LangString;
}
anyxml error-info {
description
"Contains protocol- or data-model-specific error content.";
} case by-user {
} // list boot-error uses sys-common-session-parms {
} // notification sys-startup refine session-id {
mandatory true;
}
}
}
} // choice server-or-user
} // container changed-by-parms;
}
notification sys-config-change { notification sys-config-change {
description description
"Generated when the <running> configuration is changed."; "Generated when the <running> or <startup> configuration
uses sys-common-session-parms; database is changed.";
uses changed-by-parms;
list edit { list edit {
description description
"An edit record will be present for each distinct "An edit record will be present for each distinct
edit operation on the running config."; edit operation on the target database.";
leaf target-database {
type enumeration {
enum running {
description "The running database has changed.";
}
enum startup {
description "The startup database has changed";
}
}
description
"Indicates which configuration database has changed.";
default "running";
}
leaf target { leaf target {
type instance-identifier; type instance-identifier;
description description
"Topmost node associated with the configuration change."; "Topmost node associated with the configuration change.
A server SHOULD set this object to the node within
the database which is being altered. A server MAY
set this object to one of the ancestors of the actual
node that was changed, or omit this object, if the
exact node is not known.";
} }
leaf operation { leaf operation {
type nc:edit-operation-type; type nc:edit-operation-type;
description "Type of edit operation performed."; description
"Type of edit operation performed.
A server SHOULD set this object to the NETCONF edit
operation performed on the target database.";
} }
} // list edit } // list edit
} // notification sys-config-change } // notification sys-config-change
notification sys-capability-change { notification sys-capability-change {
description description
"Generated when a <capability> is added, deleted, "Generated when a <capability> is added, deleted,
or modified."; or modified.";
container changed-by {
description uses changed-by-parms;
"Indicates who caused this capability change.
If caused by internal action, then the
empty leaf 'server' will be present.
If caused by a management session, then
the name, remote host address, and session ID
of the session that made the change will be reported.";
choice server-or-user {
leaf server {
type empty;
description
"If present, the capability change was caused
by the server.";
}
case by-user {
uses sys-common-session-parms;
} // case by-user
} // choice server-or-user
} // container changed-by
leaf-list added-capability { leaf-list added-capability {
type inet:uri; type inet:uri;
description description
"List of capabilities that have just been added."; "List of capabilities that have just been added.";
} }
leaf-list deleted-capability { leaf-list deleted-capability {
type inet:uri; type inet:uri;
description description
skipping to change at page 9, line 20 skipping to change at page 8, line 4
leaf-list added-capability { leaf-list added-capability {
type inet:uri; type inet:uri;
description description
"List of capabilities that have just been added."; "List of capabilities that have just been added.";
} }
leaf-list deleted-capability { leaf-list deleted-capability {
type inet:uri; type inet:uri;
description description
"List of capabilities that have just been deleted."; "List of capabilities that have just been deleted.";
} }
leaf-list modified-capability { leaf-list modified-capability {
type inet:uri; type inet:uri;
description description
"List of capabilities that have just been modified."; "List of capabilities that have just been modified.
A capability is considered to be modified if the
base URI for the capability has not changed, but
one or more of the parameters encoded at the end of
the capability URI has changed.";
} }
} // notification sys-capability-change } // notification sys-capability-change
notification sys-session-start { notification sys-session-start {
description description
"Generated when a new NETCONF session is started."; "Generated when a new NETCONF session is started.";
uses sys-common-session-parms; uses sys-common-session-parms {
refine session-id {
mandatory true;
}
}
} // notification sys-session-start } // notification sys-session-start
notification sys-session-end { notification sys-session-end {
description description
"Generated when a NETCONF session is terminated."; "Generated when a NETCONF session is terminated.";
uses sys-common-session-parms;
uses sys-common-session-parms {
refine session-id {
mandatory true;
}
}
leaf killed-by { leaf killed-by {
when "../termination-reason = 'killed'"; when "../termination-reason = 'killed'";
type nc:session-id-type; type nc:session-id-type;
description description
"Session ID that issued the <kill-session> "Session ID that issued the <kill-session>
if the session was terminated by this operation."; if the session was terminated by this operation.";
} }
leaf termination-reason { leaf termination-reason {
skipping to change at page 10, line 14 skipping to change at page 9, line 11
enum "closed" { enum "closed" {
value 0; value 0;
description description
"The session was terminated with "The session was terminated with
the <close-session> operation."; the <close-session> operation.";
} }
enum "killed" { enum "killed" {
value 1; value 1;
description description
"The session was terminated with "The session was terminated with
the <kill-session> operation."; the NETCONF <kill-session> operation.";
} }
enum "dropped" { enum "dropped" {
value 2; value 2;
description description
"The session was terminated because "The session was terminated because
the SSH session or TCP connection was the SSH session or TCP connection was
unexpectedly closed."; unexpectedly closed.";
} }
enum "timeout" { enum "timeout" {
value 3; value 3;
description description
"The session was terminated because "The session was terminated because
of inactivity, either waiting for of inactivity, either waiting for
the <hello> or <rpc> messages."; the <hello> or <rpc> messages.";
} }
enum "bad-start" {
value 4;
description "The session startup sequence failed.";
}
enum "bad-hello" { enum "bad-hello" {
value 5; value 4;
description description
"The client's <hello> message was "The client's <hello> message was
bad or never arrived."; bad or never arrived.";
} }
enum "other" { enum "other" {
value 6; value 5;
description description
"The session was terminated for "The session was terminated for
some other reason."; some other reason.";
} }
} }
mandatory "true"; mandatory "true";
description "Reason the session was terminated."; description "Reason the session was terminated.";
} }
} // notification sys-session-end } // notification sys-session-end
notification sys-confirmed-commit { notification sys-confirmed-commit {
description description
"Generated when a confirmed-commit event occurs."; "Generated when a confirmed-commit event occurs.";
uses sys-common-session-parms; uses sys-common-session-parms;
leaf confirm-event { leaf confirm-event {
description description
"Indicates the event that caused the notification."; "Indicates the event that caused the notification.";
type enumeration { type enumeration {
enum "start" { enum "start" {
skipping to change at page 11, line 45 skipping to change at page 10, line 39
"The confirm-commit timeout has been extended."; "The confirm-commit timeout has been extended.";
} }
enum "complete" { enum "complete" {
value 4; value 4;
description description
"The confirm-commit procedure has been completed."; "The confirm-commit procedure has been completed.";
} }
} }
mandatory "true"; mandatory "true";
} }
leaf timeout {
when
"../confirm-event = 'start' or ../confirm-event = 'extend'";
description
"The configured timeout value if the event type
is 'start' or 'extend'. This value represents the
the approximate number of seconds from the event
time when the 'timeout' event might occur.";
units "seconds";
type uint32;
}
} // notification sys-confirmed-commit } // notification sys-confirmed-commit
} }
<CODE ENDS> <CODE ENDS>
3. IANA Considerations 3. IANA Considerations
TBD TBD
skipping to change at page 12, line 32 skipping to change at page 11, line 36
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
January 2004. January 2004.
[RFC4741] Enns, R., "NETCONF Configuration Protocol", RFC 4741, [RFC4741] Enns, R., "NETCONF Configuration Protocol", RFC 4741,
December 2006. December 2006.
[RFC5277] Chisholm, S. and H. Trevino, "NETCONF Event [RFC5277] Chisholm, S. and H. Trevino, "NETCONF Event
Notifications", RFC 5277, July 2008. Notifications", RFC 5277, July 2008.
[I-D.ietf-netmod-yang] [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the
Bjorklund, M., "YANG - A data modeling language for the Network Configuration Protocol (NETCONF)", RFC 6020,
Network Configuration Protocol (NETCONF)", October 2010.
draft-ietf-netmod-yang-13 (work in progress), June 2010.
[I-D.ietf-netmod-yang-types] [RFC6021] Schoenwaelder, J., "Common YANG Data Types", RFC 6021,
Schoenwaelder, J., "Common YANG Data Types", October 2010.
draft-ietf-netmod-yang-types-09 (work in progress),
April 2010.
Appendix A. Change Log Appendix A. Change Log
-- RFC Ed.: remove this section before publication. -- RFC Ed.: remove this section before publication.
A.1. 00 A.1. 00-01
Removed sys-startup notification.
Make changed-by into a grouping, and added usage to sys-config-change
notification.
Added target-database leaf to sys-config-change to distinguish
between running and startup changes.
Removed 'bad-start' from termination-reason leaf in sys-session-end
notification.
A.2. 00
Initial version, based on Initial version, based on
draft-bierman-netconf-system-monitoring-00.txt. draft-bierman-netconf-system-monitoring-00.txt.
Author's Address Author's Address
Andy Bierman Andy Bierman
Brocade Brocade
Email: andy.bierman@brocade.com Email: andy.bierman@brocade.com
 End of changes. 38 change blocks. 
161 lines changed or deleted 131 lines changed or added

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