ICMP message
Click on the red underlined text to get to the source
... ICMP
operation. Protocol designers can make an ICMP message carry
additional information by encoding that information in the extension
...
... addresses a fundamental problem in ICMP
extensibility. All of the ICMP messages addressed by this memo
include an "original datagram" field. The "original datagram ...
... ICMP
error message. Although the "original datagram" field is of variable
length, the ICMP message does not include a field that specifies its
length.
...
... Application software infers the length of the "original datagram"
field from the total length of the ICMP message. If an extension
structure were appended to the message without adding a length
attribute for the "original datagram ...
... extension structure begins. Therefore, this document proposes a
length attribute as well as an extension structure that is appended
to the ICMP message.
The current memo also addresses ...
...
When the ICMP Extension Structure is appended to an ICMP message
and that ICMP message contains an "original datagram ...
... ICMP Extension Structure is appended to an ICMP message
and that ICMP message contains an "original datagram" field, the
"original datagram ...
... 64-bit boundary.
ICMP messages defined in the future SHOULD indicate whether or not
they support the extension mechanism defined in this
specification. It is recommended that all new messages support
...
... Echo Request/Reply
Many ICMP messages are extensible as currently defined. Protocol
designers can extend ICMP messages by simply appending fields or data
structures ...
... Many ICMP messages are extensible as currently defined. Protocol
designers can extend ICMP messages by simply appending fields or data
structures to them.
...
... data
structures to them.
However, the following ICMP messages are not extensible as currently
defined:
...
... original datagram" field which represents
the leading octets of the datagram to which the ICMP message is a
response. RFC 792std5 defines the "original datagram ...
... RFC1812] extends the "original datagram" field to contain as many
octets as possible without causing the ICMP message to exceed the
minimum IPv4 reassembly buffer size ...
... 4443draft, the "original datagram" field always contained as many octets
as possible without causing the ICMP message to exceed the minimum
IPv6 MTU (i.e., 1280 octets ...
... original datagram" field lacks a length
attribute. Application software infers the length of this field from
the total length of the ICMP message. If an extension structure were
appended to the message without adding a length attribute for the
"original datagram ...
...
The length attribute MUST be specified when the ICMP Extension
Structure is appended to the above mentioned ICMP messages.
The length attribute represents the length of the "original datagram ...
... In order to achieve backwards compatibility, when the ICMP Extension
Structure is appended to an ICMP message and that ICMP message
contains an "original datagram ...
... backwards compatibility, when the ICMP Extension
Structure is appended to an ICMP message and that ICMP message
contains an "original datagram" field, the "original datagram ...
...
The following sub-sections depict length attribute as it has been
introduced to selected ICMP messages.
...
... ICMP Messages That Can Be Extended ...
... The ICMP Extension Structure MUST NOT be appended to any of the other
ICMP messages mentioned in Section 4. Extensions were not defined
for the ICMPv6 "Packet Too Big ...
...
ICMP messages can be categorized as follows:
- Messages that do not include any ICMP extensions ...
... ICMP extensions that are compliant with this specification.
Likewise, applications that consume ICMP messages can be categorized
as follows:
...
... backwards compatibility, Table 1 describes
how members of each application category would parse each category of
ICMP message.
+----------------+----------------+----------------+----------------+
...
... In the table above, cells that contain a dash represent the nominal
case and require no explanation. In the following sections, we
assume that the ICMP message type is "Time Exceeded".
...
... Classic Application Receives ICMP Message with Extensions ...
...
When a classic application receives an ICMP message that includes
extensions, it will incorrectly interpret those extensions as being
part of the "original datagram ...
...
Some TCP stacks, when they receive an ICMP message, verify the
checksum in the original datagram ...
... checksum
is incorrect, the TCP stack discards the ICMP message for security
reasons. If the trailing octets of the original datagram ...
... overwritten by ICMP extensions, the TCP stack will discard an ICMP
message that it would not otherwise have discarded. The impact of
this issue is considered to be minimal because many ICMP messages are
...
... TCP stack will discard an ICMP
message that it would not otherwise have discarded. The impact of
this issue is considered to be minimal because many ICMP messages are
discarded for other reasons (e.g., ICMP filtering ...
... Non-Compliant Application Receives ICMP Message with No Extensions ...
... Non-Compliant Application Receives ICMP Message with Compliant ...
... field. (They assume its value to be 128.)
Provided that the entire ICMP message does not exceed the minimum
reassembly buffer size (576 octets for ICMPv4 ...
... Compliant Application Receives ICMP Message with No Extensions ...
...
When a compliant application receives an ICMP message, it examines
the length attribute that is associated with the "original datagram"
...
... Compliant Application Receives ICMP Message with Non-Compliant ...
...
When a compliant application receives an ICMP message, it examines
the length attribute that is associated with the "original datagram"
...
... case, that determination is technically correct, but not backwards
compatible with the non-compliant implementation that originated the
ICMP message.
So, to ease transition yet encourage compliant implementation,
...
... Specifically, when a TRACEROUTE application operating in non-
compliant mode receives a sufficiently long ICMP message that does
not specify a length attribute, it will parse for a valid extension
header ...
... RFC3022] permits traditional NAT
devices to modify selected fields within ICMP messages. These fields
include the "original datagram" field mentioned above. However, if a
...
... This memo proposes an optional ICMP Extension Structure that can be
appended to the ICMP messages referenced in Section 4.6 of this
document.
...
... The Extension Structure contains exactly one Extension Header
followed by one or more objects. Having received an ICMP message
with extensions, application software MAY process selected objects
while ignoring others. The presence of an unrecognized object does
...
... with extensions, application software MAY process selected objects
while ignoring others. The presence of an unrecognized object does
not imply that an ICMP message is malformed.
As stated above, the total length of the ICMP message ...
... ICMP message is malformed.
As stated above, the total length of the ICMP message, including
extensions, MUST NOT exceed the minimum reassembly buffer size.
...
...
Upon receipt of an ICMP message, application software must check it
for syntactic correctness. The extension checksum must be verified.
...
... This memo does not define the conditions under which a router sends
an ICMP message. Therefore, it does not expose routers to any new
denial-of-service attacks ...
... denial-of-service attacks. Routers may need to limit the rate at
which ICMP messages are sent.
...
