The following text describes the error conditions and messages (syntax for
information elements and so on) for GIMPS.
This information updates the -06 specification in some minor but significant
details. In particular, the MRI and SID from the original message are now
transported inside the Error TLV (rather than as freestanding TLVs inside the
Error message), and the Error TLV format has been updated to reflect this and
certain other changes.
The intention is to incorporate this information into the -07 draft, and to
indicate more precisely when these error messages are generated.
GIMPS Error Messages
********************
Error Codes
===========
Unrecognised Message Type
-------------------------
Class: Protocol-Error
Code: 0
Additional Info: None
This message is sent if a GIMPS node receives a message of an unrecognised type.
Note that in this case the original MRI and Session ID are not included in the
Error Object.
Incorrect Message Length
------------------------
Class: Protocol-Error
Code: 1
Additional Info: Message Length Info
This message is sent if a GIMPS node receives a message containing a common
header with an incorrect message length field. The message includes a single
Message Length Info object containing the calculated length of the message. Note
that in this case the original MRI and Session ID are not included in the Error
Object.
Hop Limit Exceeded
------------------
Class: Permanent-Failure
Code: 2
Additional Info: None
This message is sent if a GIMPS node receives a message with a GIMPS Hop Limit
of zero, or a GIMPS node decrements a packet's GIMPS Hop Limit to zero. This
message indicates either a routing loop or too small an initial Hop Limit value.
Incorrect Encapsulation
-----------------------
Class: Protocol-Error
Code: 3
Additional Info: None
This message is sent if a GIMPS node receives a message which uses an incorrect
encapsulation method (e.g. a Query arrives over an MA).
Incorrectly Delivered Message
-----------------------------
Class: Protocol-Error
Code: 4
Additional Info: None
This message is sent if a GIMPS node receives a message over an MA which is not
associated with the MRI/NSLPID/SID combination in the message.
No Routing State
----------------
Class: Protocol-Error
Code: 5
Additional Info: None
This message is sent if a node receives a message for which there is no matching
routing state (and therefore no appropriate Q/R-SM). This can occur either at a
Querying node which receives an unexpected Response message, or at a Responding
node which receives an unexpected Data message.
Unknown NSLPID
--------------
Class: Permanent-Failure
Code: 6
Additional Info: None
This message is sent if a router receives a directly addressed message for an
NSLP which it does not support.
Endpoint Found
--------------
Class: Informational
Code: 7
Additional Info: None
This message is sent if a GIMPS node at a flow endpoint receives a message for
an NSLP which it does not support.
Object Type Error
-----------------
Class: Protocol-Error
Code: 8
Additional Info: Object Type Info
This message is sent if a GIMPS node receives a message containing a TLV object
with an incorrect header. The message includes the type of the object at fault.
This error code is split into subcodes as follows:
0: Duplicate Object
This subcode is used if a GIMPS node receives a message containing multiple
instances of an object which may only appear once in a message (in the
current specification this applies to all objects).
1: Unrecognised Object
If a GIMP node receives a message containing an object which it does not
recognise it must examine the objects A & B flags. This subcode is used if
the A & B flags are both zero. Note that this error is unlikely to be
received in response to a Data message. This is a pathological case.
2: Missing Object
This subcode is used if a GIMPS node receives a message which is missing one
or more mandatory objects. This message is also sent if a Stack Proposal is
sent without a matching Stack Configuration Data object, or vice versa.
Object Value Error
------------------
Class: Protocol-Error
Code: 9
Additional Info: Object Value Info
This message is sent if a router receives a packet containing an object which
cannot be properly parsed. The message contains a single Object Value Info
object, unless otherwise stated below.
This error code is split into subcodes as follows:
0: Incorrect Length
The overall length does not match the object length calculated from the
object contents.
1: Value Not Supported
The value of a field is not supported by the GIMPS node.
2: Invalid Flag-Field Combination
An object contains an invalid combination of flags and/or fields. At the
moment this only relates to the Path-Coupled MRM object, but in future there
may be more.
3: Empty List
At the moment this only relates to Stack proposal Profiles. The error
message is sent if a stack proposal with a length > 0 (a length of 0 is
not a supported value) contains only null bytes.
4: Invalid Cookie
The message contains a cookie which could not be verified by the node.
5: SP-SCD Mismatch
This subcode is used if a GIMPS node receives a message in which the data in
the Stack Proposal object is inconsistent with the information in the Stack
Configuration Data object. In this case, both the Stack Proposal object and
Stack Configuration Data object are included in the message, in separate
Object Value Info fields.
GIMPS Error Object
==================
Each error message includes a GIMPS Error object which contains an Error Class,
an Error Code, an Error Subcode, and as much information about the message which
triggered the error as is available. This information must include the Common
header of the original message and should also include the Session Id and MRI
objects if these were not the cause of the error. These objects are included in
their entirety, except for the TLV Header.
The GIMPS Error object also optionally contains one or more Additional Info
fields and a Debugging Comment.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Error Class | Error Code | Error Subcode |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|S|M|C|A|D|Q| Reserved | MRI Length | Info Count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ Common Header +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| |
+ Session Id +
| |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// Message Routing Information //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// Additional Information //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Comment Length (bytes) | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ //
// Debugging Comment |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The error class is as defined in GIMPS v06. The error codes and subcodes are
defined above. For errors which do not have subcodes the subcode field is set to
0.
The info count field contains the number of Additional Info fields in the
object. This count is usually 1, but may be more for certain messages (see error
descriptions above). If no Additional Info fields are present this field is set
to 0. The Additional Info objects are contained in the Additional Information
field. Each message may only contain Additional Information objects of a single
type. The type used is determined by the error code (see above).
The flags are:
S - Session ID object present
M - MRI object present
C - Debug Comment present after header.
A - Additonal information present in message (see below)
D - Original message was received in D-Mode
Q - Original message was received Q-Mode encapsulated (can't be set if D=0).
Additional Information
======================
The Common Header may optionally be followed by some Additional Info objects.
The possible formats of the Additional Info objects are shown below.
Message Length Info
-------------------
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Calculated Msg Length | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Calculated Msg Length is the length of the original message calculated by adding
up the different objects in the message.
MTU Info
--------
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Link MTU | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
This object provides information about the MTU for a link along which a message
could not be sent.
Object Type Info
----------------
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Object Type | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
This object provides information about the type of object which caused the
error.
Object Value Info
-----------------
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Real Length Of Object | Reserved | Offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// Object //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Real Length Of Object: Since the length in the original TLV header may be
inaccurate this field provides the actual length of the
object (including the TLV Header) included in the error
message.
Offset: The byte in the object at which the GIMPS node found the
error.
Object: The invalid TLV object (including the TLV Header)
This object carries information about a TLV object which was found to be invalid
in the original message. An error message may contain more than one Object Value
Info object. |