Subject: Usage of packet returned in ICMP error messages

From: "C. M. Heard/VVNET, Inc." <[email-masked]>
Date: Tue, 16 Nov 1999 12:10:30 -0800 (PST)

Greetings,

The IETF MPLS (multi-protocol label switching) working group is currently
discussing an internet draft <draft-ietf-mpls-icmp-00.txt> which proposes
some modifications to ICMP error messages that are not entirely backward
compatible with RFC 1812 (the router requirements document) and RFC 1122
(the host requirements document).  Specifically, the draft proposes
that when label-switching routers send an ICMP error message they will
put a data structure containing the MPLS shim header immediately after
the first 8 bytes of user data from the original datagram.  As most
readers of this list are probably aware, RFC 1812 and RFC 1122 permit
ICMP error message to contain more than 8 bytes of user data from the
original datagram, but both documents specify that any user data which
is returned will be copied from the original datagram without change.
Thus, an application implemented in accordance with those RFCs that
receives an ICMP error message formatted in accordance with the proposed
draft could misinterpret the shim header structure as returned user data.

The question arises whether there are, in fact, any applications which
make use of extra user data (beyond the first 8 bytes) that is returned
in ICMP error messages.  If the readers of this list are aware of any
such applications I would appreciate hearing about them.

Many thanks,

Mike
--
C. M. Heard/VVNET, Inc.
[email-masked]

---

From: Bill Sommerfeld <[email-masked]>
Date: Wed, 17 Nov 1999 15:40:30 -0500

A couple comments.

It's not clear how this extends to v6; i belive v6 is spec'ed to
return signficantly more of the packet than v4.

By "first 8 bytes of user data", i assume you're referring to the
first 8 bytes of the transport-layer header (the draft seems to be a
bit vague).  

The most crucial thing here (in the first 8 bytes) is the
transport-layer ports, which allows the receiver of the icmp datagram
to figure out which application-layer entity sent the traffic.
however, things are evolving such that the transport layer header
isn't necessarily the first thing in the packet..

ip-in-ip tunnelling, ipsec, and v6's salami headers are all going to
play havoc with this; i suspect that this is going to confuse host
stacks which assume that the entire tail end of the icmp datagram is
an excerpt from the packet which didn't make it..

I would go hunting for alternate encapsulation tricks here..

					- Bill