rfc-5284

User-Defined Errors for RSVP

G. Swallow, A. Farrel
date2008-08 streamIETF areawit wgtsvwg statusPROPOSED STANDARD pages9 canonicalhttps://www.rfc-editor.org/rfc/rfc5284 doi10.17487/RFC5284
The Resource ReserVation Protocol (RSVP) defines an ERROR_SPEC object for communicating errors. That object has a defined format that permits the definition of 256 error codes. As RSVP has been developed and extended, the convention has been to be conservative in defining new error codes. Further, no provision for user-defined errors exists in RSVP. This document defines a USER_ERROR_SPEC to be used in addition to the ERROR_SPEC to carry additional user information related to errors. [STANDARDS-TRACK]

Extracted elements (25)

design-rationale §3

Enterprise Numbers are used as the organizational identifier to leverage an existing IANA-managed namespace, allowing organizations to define private error spaces without central RSVP error code allocation.

registry

design-rationale §1

The document requires a valid ERROR_SPEC object to always accompany USER_ERROR_SPEC in order to not change the mandatory contents of PathErr, ResvErr, and Notify messages, maintaining compliance with RFC 2205 and RFC 3473.

design-rationale §3

The USER_ERROR_SPEC class number is in the range 192-247 so that implementations not understanding the object will forward it unmodified per RFC 2205, preserving backward compatibility without altering existing RSVP message processing.

interoperability-note §1

The ResvConf message also carries an ERROR_SPEC object but does not carry meaningful Error Codes or Error Values; the USER_ERROR_SPEC extensions are explicitly not applicable to that message.

normative-requirement §4.1 MUST

An ERROR_SPEC object with a valid error code MUST be included in all PathErr, ResvErr, and Notify messages even when a USER_ERROR_SPEC object is present; if no other error code applies, Error Code MUST be set to 'User Error Spec'.

normative-requirement §4.2 MUST

If a message is received containing an ERROR_SPEC with 'User Error Spec' error code but no USER_ERROR_SPEC object, the message MUST be treated as malformed and handled per RFC 2205.

normative-requirement §4.2 RECOMMENDED

Implementations capable of interpreting USER_ERROR_SPEC SHOULD take further action based on the reported error; at minimum, implementations SHOULD log the Enterprise Number, Sub-organization, User Error Value, and Error Description.

normative-requirement §4.2 MUST

Implementations receiving a USER_ERROR_SPEC object on a message other than PathErr, ResvErr, or Notify MUST treat it as a malformed message and process per RFC 2205.

normative-requirement §4.2 SHOULD

Implementations SHOULD ignore repeated occurrences of USER_ERROR_SPEC objects and SHOULD forward them unchanged on any messages they forward, providing forward compatibility.

normative-requirement §4.2 SHOULD

Implementations that are not UTF-8 capable and receive a USER_ERROR_SPEC object SHOULD handle the Error Description according to RFC 5137 procedures for unexpected or unknown characters.

normative-requirement §4.1 MUST

The Enterprise Number in USER_ERROR_SPEC MUST be a valid value assigned by IANA from the 'Enterprise Numbers' registry.

registry

normative-requirement §3 SHOULD NOT

The Error Description content SHOULD be limited to supplementary information and SHOULD NOT contain information critical to operating the network; critical information belongs in the User Error Value field.

normative-requirement §3 MUST

The Error Description string MUST use UTF-8/Net-Unicode encoding (RFC 5198); it is RECOMMENDED that implementations limit generated strings to single-line printable US-ASCII whenever feasible.

normative-requirement §3 SHOULD

The Sub Org field SHOULD be set to zero if independent error value spaces are not required.

normative-requirement §3.1 MUST

The subobject Length MUST be at least 4 and MUST be a multiple of 4.

normative-requirement §2 MUST

When sending Error Code 33 (User Error Spec), a USER_ERROR_SPEC object MUST be included in the PathErr, ResvErr, or Notify message.

registry, security

protocol-element §2

Error Code 33 ('User Error Spec') is defined for use in the ERROR_SPEC object to signal the presence of a USER_ERROR_SPEC object, with Error Value 0 meaning 'Further details in User Error Spec'.

registry

protocol-element §3

The Sub Org field (8-bit) enables an organization to create independent error value spaces, intended to facilitate parallel development teams within a single enterprise.

protocol-element §3

The USER_ERROR_SPEC object (Class 194) carries organization-specific error information including an Enterprise Number for vendor identification, an optional Sub Org field for team-level namespacing, a 16-bit User Error Value, a UTF-8 Error Description, and optional subobjects.

registry §5.2

Class Number 194 (USER_ERROR_SPEC) and Class Type 1 ('User-Defined Error') are assigned in the RSVP Class Names, Class Numbers, and Class Types registry.

registry

registry §5.1

Error Code 33 ('User Error Spec') and Error Value sub-code 0 ('Further details in User Error Spec') are assigned in the RSVP Error Codes and Globally-Defined Error Value Sub-Codes registry.

registry

security-consideration §6

The mechanisms defined in this document may be used to report additional error conditions and information arising from security issues and attacks on the RSVP network, providing a vehicle for communicating security-related diagnostics.

security

security-consideration §6

Using a character string displayed or logged opens the potential for security attacks via overruns or embedded control characters; implementations SHOULD take precautions against overruns and SHOULD use RFC 5137 procedures to handle unexpected control characters.

security

wire-format §3.1

Subobjects within USER_ERROR_SPEC use a TLV format with an 8-bit Type, an 8-bit Length (total including Type and Length, minimum 4, multiple of 4), and variable contents defined by the originating organization.

wire-format §3

USER_ERROR_SPEC object (Class 194, C-Type 1) encodes: a 32-bit Enterprise Number, an 8-bit Sub Org, an 8-bit Err Desc Len, a 16-bit User Error Value, a variable-length null-padded Error Description (multiple of 4 bytes), and optional user-defined subobjects.