Subject: (IPng 6571) RE: Source route question

From: Richard Draves <[email-masked]>
Date: Fri, 2 Oct 1998 12:33:39 -0700

>   Ok, I can see why you would want to do it this way. 
> However, the wording in
> the current spec basically forces you to implement things 
> this way, whether or
> not it's the most efficient way for you to implement.

Your implementation can always do things differently than the spec's
conceptual data structures or algorithms would imply, as long as the
externally observed behavior is correct.

I don't know if this is explicitly noted anywhere, but from past discussions
I believe that if a packet might trigger multiple ICMP errors, an
implementation has the freedom to send any one of them.

Then the question is what about the content of the ICMP errors. How rigidly
specified is it? I believe there is also a fair amount of implementation
leeway here. For example in the routing header processing, when you send the
Hop Limit Exceeded should Segments Left be shown as decremented and the
addresses swapped? Should the Hop Limit be shown as 1 or 0? Etc.

So in theory I think your implementation can check the Hop Limit before
swapping the addresses, although conceptually that's not the intuitive
ordering.

Now in practice there are applications that may be sensitive to which ICMP
error is generated and what it contains. For example it might make a
difference to traceroute if you check the Hop Limit before checking if
there's a route to the new destination. (The traceroute I've looked at
reports better results if the route check is done before the hop limit
check.) But I don't know of any "real" applications that care.

Rich
--------------------------------------------------------------------
IETF IPng Working Group Mailing List
IPng Home Page:                      http://playground.sun.com/ipng
FTP archive:                      ftp://playground.sun.com/pub/ipng
Direct all administrative requests to [email-masked]
--------------------------------------------------------------------

---

From: Craig Metz <[email-masked]>
Date: Fri, 02 Oct 1998 17:47:05 -0300

>externally observed behavior is correct.

  The spec currently says:

   In that node, dispatching on the Next Header field of the immediately
   preceding header causes the Routing header module to be invoked,
   which, in the case of Routing Type 0, performs the following
   algorithm:

  Which I read to say that a strictly compliant algorithm MUST NOT do things
differently than the way this algorithm states that they are to be done. If
memory serves, this all came about in order to reduce confusion as to the steps
in processing the routing header and to help ensure that people get it right.

  What I'd like most to see here is for the introduction to the algorithm
description to be clearer as to whether following the steps in this algorithm
is a SHOULD or a MUST.

									-Craig