Internet Draft Lou Berger - Editor (Movaz Networks) Category: Standards Track Expiration Date: March 2005 September 2004 GMPLS - Communication of Alarm Information draft-ietf-ccamp-gmpls-alarm-spec-01.txt Status of this Memo By submitting this Internet-Draft, I certify that any applicable patent or other IPR claims of which I am aware have been disclosed, or will be disclosed, and any of which I become aware will be disclosed, in accordance with RFC 3668. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than a "work in progress." The list of current Internet-Drafts can be accessed at http://www.ietf.org/1id-abstracts.html The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html Abstract This document describes an extension to Generalized MPLS (Multi- Protocol Label Switching) signaling to support communication of alarm information. GMPLS signaling already supports the control of alarm reporting, but not the communication of alarm information. This document presents both a functional description and GMPLS-RSVP specifics of such an extension. This document also proposes modification of the RSVP ERROR_SPEC object. Berger, et. al. [Page 1] Internet Draft draft-ietf-ccamp-gmpls-alarm-spec-01.txt September 2004 Contents 1 Introduction .............................................. 3 1.1 Background ................................................ 3 2 Alarm Information Communication ........................... 4 3 GMPLS-RSVP Details ........................................ 5 3.1 ALARM_SPEC Objects ........................................ 5 3.1.1 IF_ID ALARM_SPEC (and ERROR_SPEC) TLVs .................... 5 3.1.2 Procedures ................................................ 9 3.1.3 Error Codes and Values .................................... 10 3.1.4 Backwards Compatibility ................................... 10 3.2 Controlling Alarm Communication ........................... 10 3.2.1 Updated Admin Status Object ............................... 10 3.2.2 Procedures ................................................ 11 3.3 Message Formats ........................................... 11 3.4 Relationship to GMPLS UNI ................................. 12 3.5 Relationship to GMPLS E-NNI .............................. 13 4 Security Considerations ................................... 14 5 IANA Considerations ....................................... 14 6 References ................................................ 15 6.1 Normative References ...................................... 15 6.2 Informative References .................................... 15 7 Contributors .............................................. 16 8 Contact Address ........................................... 16 9 Full Copyright Statement .................................. 17 10 Intellectual Property ..................................... 17 Berger, et. al. [Page 2] Internet Draft draft-ietf-ccamp-gmpls-alarm-spec-01.txt September 2004 1. Introduction GMPLS Signaling provides mechanisms that can be used to control the reporting of alarms associated with an LSP. This support is provided via Administrative Status Information [RFC3471] and the Admin_Status object [RFC3473]. These mechanisms only control if alarm reporting is inhibited. No provision is made for communication of alarm information within GMPLS. The extension described in this document defines how the alarm information associated with a GMPLS label-switched path (LSP) may be communicated along the path of the LSP. Communication both upstream and downstream is supported. The value in communicating such alarm information is that this information is then available at every node along the LSP for display and diagnostic purposes. Alarm information may also be useful in certain traffic protection scenarios, but such uses are out of scope of this document. Alarm communication is supported via a new object, new error/alarm information TLVs, and a new Administrative Status Information bit. The communication of alarms, as described in this document, is controllable on a per LSP basis. Such communication may be useful within network configurations where not all nodes support communication to a user for reporting of alarms and/or communication is needed to support specific applications. The support of this functionality is optional. The communication of alarms within GMPLS does not imply any modification in behavior of processing of alarms, or for the communication of alarms outside of GMPLS. The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119]. 1.1. Background Problems with data plane state can often be detected by associated data plane hardware components. Such data plane problems are typically filtered based on elapsed time and local policy. Problems that pass the filtering process are normally raised as alarms. These alarms are available for display to operators. They also may be collected centrally through means that are out of the scope of this document. Not all data plane problems cause the LSP to be immediately torn down. Further, there may be a desire, particularly in optical Berger, et. al. [Page 3] Internet Draft draft-ietf-ccamp-gmpls-alarm-spec-01.txt September 2004 transport networks, to retain an LSP and communicate relevant alarm information even when the data plane state has failed completely. Although error information can be reported using PathErr, ResvErr and Notify messages, these messages typically indicate a problem in signaling state and can only report one problem at at a time. This makes it hard to correlate all of the problems that may be associated with a single LSP and to allow an operator examining the status of an LSP to view a full list of current problems. This situation is exacerbated by the absence of any way to communicate that a problem has been resolved and a corresponding alarm cleared. The extensions defined in this document allow an operator or a software component to obtain a full list of current alarms associated with all of the resources used to support an LSP. The extensions also ensure that this list is kept up-to-date and synchronized with the real alarm status in the network. Finally, the extensions make the list available at every node traversed by an LSP. 2. Alarm Information Communication A new object is introduced to carry alarm information details. The details of alarm information are much like the error information carried in the existing ERROR_SPEC objects. For this reason the communication of alarm information uses a format that is based on the communication of error information. The new object introduced to carry alarm information details is called an ALARM_SPEC object. This object has the same format as the ERROR_SPEC object, but uses a new C-Num to avoid the semantics of error processing. Also, additional TLVs are defined for the IF_ID ALARM_SPEC objects to support the communication of information related to a specific alarm. These TLVs may also be useful when included in ERROR_SPEC objects, e.g., when the ERROR_SPEC object is carried within a Notify message. While the details of alarm information are like the details of existing error communication, the semantics of processing differ. Alarm information will typically relate to changes in data plane state, without changes in control state. Alarm information will always be associated with in-place LSPs. Such information will also typically be most useful to operators and applications other than control plane protocol processing. Finally, while error information is communicated within PathErr, ResvErr and Notify messages [RFC3473], alarm information will be carried within Path and Resv messages. Berger, et. al. [Page 4] Internet Draft draft-ietf-ccamp-gmpls-alarm-spec-01.txt September 2004 Path messages are used to carry alarm information to downstream nodes and Resv messages are used to carry alarm information to upstream nodes. The intent of sending alarm information both upstream and downstream is to provide the same visibility to alarm information at any point along an LSP. The communication of multiple alarms associated with an LSP is supported. In this case, multiple ALARM_SPEC objects will be carried in the Path or Resv messages. The addition of alarm information to Path and Resv messages is controlled via a new Administrative Status Information bit. Administrative Status Information is carried in the Admin_Status object. 3. GMPLS-RSVP Details This section provides the GMPLS-RSVP [RFC3473] specification for communication of alarm information. The communication of alarm information is optional. This section applies to nodes that support communication of alarm information. 3.1. ALARM_SPEC Objects The ALARM_SPEC objects use the same format as the ERROR_SPEC object, but with class number of TBA (to be assigned by IANA in the form 11bbbbbb). o IPv4 ALARM_SPEC object: Class = TBA, C-Type = 1 Definition same as IPv4 ERROR_SPEC [RFC2205]. o IPv6 ALARM_SPEC object: Class = TBA, C-Type = 2 Definition same as IPv6 ERROR_SPEC [RFC2205]. o IPv4 IF_ID ALARM_SPEC object: Class = TBA, C-Type = 3 Definition same as IPv4 IF_ID ERROR_SPEC [RFC3473]. o IPv6 IF_ID ALARM_SPEC object: Class = TBA, C-Type = 4 Definition same as IPv6 IF_ID ERROR_SPEC [RFC3473]. 3.1.1. IF_ID ALARM_SPEC (and ERROR_SPEC) TLVs The following new TLVs are defined for use with the IPv4 and IPv6 IF_ID ALARM_SPEC objects. They may also be used with the IPv4 and IPv6 IF_ID ERROR_SPEC objects. See [RFC3471] section 9.1.1 for the original definition of these values. Note the length provided below is for the total TLV. All TLVs defined in this section are optional. Berger, et. al. [Page 5] Internet Draft draft-ietf-ccamp-gmpls-alarm-spec-01.txt September 2004 No rules apply to the relative ordering of these TLVs. These TLVs MUST be listed after any interface identifying TLVs. [Note: Type values are TBA (to be assigned) by IANA] Type Length Description ---------------------------------- 512 8 REFERENCE_COUNT 513 8 SEVERITY 514 8 GLOBAL_TIMESTAMP 515 8 LOCAL_TIMESTAMP 516 variable ERROR_STRING The Reference Count TLV has the following format: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Reference Count | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Reference Count: 32 bits The number of times this alarm has been repeated. This field MUST NOT be set to zero. Only one Reference Count TLV may be included in an object. The Severity TLV has the following format: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Reserved |Impact | Severity | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Reserved: 24 bits This field is reserved. It MUST be set to zero on generation and MUST be ignored on receipt. Berger, et. al. [Page 6] Internet Draft draft-ietf-ccamp-gmpls-alarm-spec-01.txt September 2004 Impact: 4 bits Indicates the impact of the alarm indicated in the TLV. The following values are defined: Value Definition ----- --------------------- 0 Unspecified impact 1 Non-Service Affecting 2 Service Affecting Severity: 8 bits Indicates the impact of the alarm indicated in the TLV. The following values are defined: Value Definition ----- ---------- 0 Reserved 1 Critical 2 Major 3 Minor 4 Warning Only one Severity TLV may be included in an object. The Global Timestamp TLV has the following format: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Global Timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Global Timestamp: 32 bits The number of seconds since 0000 UT on 1 January 1970, according to the clock on the node that originates this TLV. Only one Global Timestamp TLV may be included in an object. Berger, et. al. [Page 7] Internet Draft draft-ietf-ccamp-gmpls-alarm-spec-01.txt September 2004 The Local Timestamp TLV has the following format: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Local Timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Local Timestamp: 32 bits Number of seconds reported by the local system clock at the time the associated alarm was detected on the node that originates this TLV. Only one Local Timestamp TLV may be included in an object. The Error String TLV has the following format: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | // Error String (NULL padded display string) // | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Error String: 32 bits minimum (variable) A string of characters, representing the type of error/alarm. This string is padded to the next largest 4 byte boundary using null characters. Null padding is not required when the string is 32-bit aligned. The contents of error string are implementation dependent. See the condition types listed in Appendices of [GR833] for a list of example strings. Multiple Error String TLVs may be included in an object. Berger, et. al. [Page 8] Internet Draft draft-ietf-ccamp-gmpls-alarm-spec-01.txt September 2004 3.1.2. Procedures This section applies to nodes that support the communication of alarm information. ALARM_SPEC objects are carried in Path and Resv messages. Multiple ALARM_SPEC objects MAY be present. The IPv4 and IPv6 formats of the ALARM_SPEC object, C-Type 1 and 2, SHOULD NOT be used as they do not support the inclusion of the TLVs defined above. Nodes that support the communication of alarm information, SHOULD record the information contained in a received ALARM_SPECs for later use. All ALARM_SPEC objects received in Path messages SHOULD be passed unmodified downstream in the corresponding Path messages. All ALARM_SPEC objects received in Resv messages SHOULD be passed unmodified upstream in the corresponding Resv messages. ALARM_SPEC objects are merged in transmitted Resv messages by including a copy of all ALARM_SPEC objects received in corresponding Resv Messages. To advertise local alarm information, a node generates an ALARM_SPEC object for each alarm and adds it to both the Path and Resv messages for the affected LSP. The IPv4 or IPv6 IF_ID ALARM_SPEC object format SHOULD be used. In all cases, appropriate Error Node Address, Error Code and Error Values MUST be set, see below for a discussion on Error Code and Error Values. The InPlace and NotGuilty flags SHOULD NOT be set. When the IPv4 or IPv6 IF_ID ALARM_SPEC object format is used, TLVs SHOULD be included to identify the interface, if any, the severity, the time and a brief string associated with the alarm. The reference count TLV MAY also be included. ALARM_SPEC objects received from other nodes are not effected by the addition of local ALARM_SPEC objects, i.e., they continue to be processed as described above. The choice of which alarm or alarms to advertise and which to omit is a local policy matter, and may configurable by the user. Note, ALARM_SPEC objects SHOULD NOT be added to LSPs that are in "alarm communication inhibited." ALARM_SPEC objects MAY be added to LSPs that are "administratively down". These states are indicated by the I and A bits of the Admin_Status object, see Section 3.2. To remove local alarm information, a node simply removes the matching locally generated ALARM_SPEC objects from the outgoing Path and Resv messages. A node MAY modify a locally generated ALARM_SPEC object. Normal refresh and trigger message processing applies to Path or Resv message that contain ALARM_SPEC objects. Note that changes in ALARM_SPEC objects from one message to the next may include a modification in the contents of a specific ALARM_SPEC object, or a change in the number of ALARM_SPEC objects present. All changes in ALARM_SPEC objects SHOULD be processed as trigger messages. Berger, et. al. [Page 9] Internet Draft draft-ietf-ccamp-gmpls-alarm-spec-01.txt September 2004 3.1.3. Error Codes and Values The Error Codes and Values used in ALARM_SPEC objects are the same as those used in ERROR_SPEC objects. New Error Code values for use with both ERROR_SPEC and ALARM_SPEC objects may be assigned to support alarm types defined by other standards. In this document we define one new Error Code. The Error Code uses the value TBA (by IANA) and is referred to as "Alarms". The values used in the Error Values field are the same as the values used for IANAItuProbableCause in the Alarm MIB [ALARM-MIB]. Note these values are managed by IANA, see http://www.iana.org. 3.1.4. Backwards Compatibility The support of ALARM_SPEC objects is optional. Non-supporting nodes will pass the objects through the node unmodified, because the ALARM_SPEC object has a C-Num of the form 11bbbbbb. This allows alarm information to be collected and examined in a network built from a collection of nodes some of which support the communication of alarm information, and some of which do not. 3.2. Controlling Alarm Communication Alarm information communication is controlled via Administrative Status Information as carried in the Admin_Status object. A new bit is defined, called the I bit, that indicates when alarm communication is to be inhibited. The definition of this bit does not modify the procedures defined in Section 7 of [RFC3473]. 3.2.1. Updated Admin Status Object The format of the Admin_Status object is updated to include the I bit: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Length | Class-Num(196)| C-Type (1) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |R| Reserved |I| |T|A|D| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Berger, et. al. [Page 10] Internet Draft draft-ietf-ccamp-gmpls-alarm-spec-01.txt September 2004 Inhibit Alarm Communication (I): 1 bit When set, indicates that alarm communication is disabled for the LSP and that nodes SHOULD NOT add local alarm information. See [RFC3471] for the definition of the remaining bits. 3.2.2. Procedures The I bit may be set and cleared using the procedures defined in Sections 7.2 and 7.3 of [RFC3473]. A node that receives (or generates) an Admin_Status object with the A and I bits set (1), SHOULD remove all locally generated alarm information from the matching LSP's outgoing Path and Resv messages. When a node receives (or generates) an Admin_Status object with the A and I bits clear (0), it should add any local alarm information to the matching LSP's outgoing Path and Resv messages. The processing of non-locally generated ALARM_SPEC objects MUST NOT be impacted by the contents of the Admin_Status object. Note, per [RFC3473], the absence of the Admin_Status object is equivalent to receiving an object containing values all set to zero (0). When generating Notify messages for LSPs with the I bit set, the TLVs described in this document MAY be added to the ERROR_SPEC object sent in the the Notify message. 3.3. Message Formats This section presents the RSVP message related formats as modified by this document. The formats specified in [RFC3473] served as the basis of these formats. Berger, et. al. [Page 11] Internet Draft draft-ietf-ccamp-gmpls-alarm-spec-01.txt September 2004 The format of a Path message is as follows: ::= [ ] [ [ | ] ... ] [ ] [ ] [ ] [ ... ] [ ] [ ] [ ] [ ... ] [ ... ] is not modified by this document. The format of a Resv message is as follows: ::= [ ] [ [ | ] ... ] [ ] [ ] [ ] [ ] [ ] [ ... ] [ ... ]