(sipp) ICMP Destination unreachable and options

"Daniel L. McDonald" <danmcd@sundance.itd.nrl.navy.mil> Thu, 04 August 1994 14:18 UTC

Received: from ietf.nri.reston.va.us by IETF.CNRI.Reston.VA.US id aa04134; 4 Aug 94 10:18 EDT
Received: from CNRI.RESTON.VA.US by IETF.CNRI.Reston.VA.US id aa04130; 4 Aug 94 10:18 EDT
Received: from Sun.COM by CNRI.Reston.VA.US id aa05142; 4 Aug 94 10:18 EDT
Received: from Eng.Sun.COM (zigzag.Eng.Sun.COM) by Sun.COM (sun-barr.Sun.COM) id AA16635; Thu, 4 Aug 94 07:17:14 PDT
Received: from sunroof2.Eng.Sun.COM by Eng.Sun.COM (4.1/SMI-4.1) id AA15818; Thu, 4 Aug 94 07:17:20 PDT
Received: by sunroof2.Eng.Sun.COM (4.1/SMI-4.1) id AA04677; Thu, 4 Aug 94 07:19:28 PDT
Received: from Eng.Sun.COM (engnews1) by sunroof2.Eng.Sun.COM (4.1/SMI-4.1) id AA04671; Thu, 4 Aug 94 07:19:22 PDT
Received: from Sun.COM (sun-barr) by Eng.Sun.COM (4.1/SMI-4.1) id AA16481; Thu, 4 Aug 94 07:16:52 PDT
Received: from sundance.itd.nrl.navy.mil by Sun.COM (sun-barr.Sun.COM) id AA16463; Thu, 4 Aug 94 07:16:41 PDT
Subject: (sipp) ICMP Destination unreachable and options
To: SIPP Mailing list <sipp@sunroof2.eng.sun.com>
Date: Thu, 04 Aug 1994 10:17:24 -0500
Sender: ietf-archive-request@IETF.CNRI.Reston.VA.US
From: "Daniel L. McDonald" <danmcd@sundance.itd.nrl.navy.mil>
X-Mailer: ELM [version 2.4 PL23]
Mime-Version: 1.0
Content-Type: text/plain; charset="US-ASCII"
Content-Transfer-Encoding: 7bit
Content-Length: 2893
Message-Id: <9408041517.aa18293@sundance.itd.nrl.navy.mil>
X-Orig-Sender: owner-sipp@sunroof.eng.sun.com
Precedence: bulk
Reply-To: sipp@sunroof.eng.sun.com

I mailed this to ipng, but figured since many bit twiddlers still read SIPP,
I'd send it here too.
=====================(Cut up to and including here.)======================

Under IP, or at least IP inside BSD Net/2 (Reno), when a Destination
Unreachable is generated by UDP, the IP options are stripped.

My subsequent question is two-fold:

	1. Should a higher level protocol (like UDP) strip IPng options from
           a packet before sending Dest. Unreachable so that the source of
           the offending packet can send the incoming Dest. Unreachable to
	   its appropriate higher-level protocol?

	2. If not, what if the options (like a monstrously large source
           route) take all of the 576 bytes allowed for ICMP messages?  How
	   does my IPng module deal with this?

Let me illustrate with an example.  Let's say I send a UDP message with a
source route to a machine.  The header chain will look like:

   0            40               n
   +------------+----------------+------------------------
   |  SIPP hdr  | Routing header | UDP header + data
   |            |                |
   | Next Hdr = | Next Header =  |
   |    Routing |           UDP  |
   +------------+----------------+------------------------

Now let's say the UDP header specifies a port that has no listeners.  The
receiving UDP module will send an ICMP Dest. Unreachable with code Port
Unreachable.  What will the ICMP message look like?  Will it look like this?

                        <----- Offending packet, up to 576 bytes   --->
				(Potentially might not include UDP header.
				 Think of n > 526. )
   0            40    48           88               n+48
   +------------+-----++-----------+----------------+------------------
   |  SIPP hdr  |I D U||(Bad) SIPP | Routing header | UDP header + data
   |            |C e n||Header     |                |
   | Next Hdr = |M s r||Next Hdr = | Next Header =  |
   |       ICMP |P t c||  Routing  |           UDP  |
   +------------+-----++-----------+----------------+------------------

Or will it look like....

   0            40    48           88
   +------------+-----++-----------+------------------
   |  SIPP hdr  |I D U||(Bad) SIPP | UDP header + data
   |            |C e n||Header     |
   | Next Hdr = |M s r||Next Hdr = |
   |       ICMP |P t c||      UDP  |
   +------------+-----++-----------+------------------

If it is the former, my IPng module will have to potentially parse through
the headers of the included offending packet to know to deliver the ICMP
message to UDP.  If the latter, my UDP module will have to strip options,
much like UDP modules do in current IP on BSD Net/2.  Also, if this is
true, my IPng module may have to strip options in the case of destination
unreachable codes and packet too big code.

IWBNI anybody who's done SIPP-8s and ICMPs already would speak up on this.

Thanks a ton!
Dan McD.
 ------------------------------------------------------------------------------
IETF SIPP Working Group - Archives:  parcftp.xerox.com:/pub/sipp
Unsubscribe:	unsubscribe sipp		(as message body, not subject)
Direct all administrative requests to majordomo@sunroof.eng.sun.com