Suggestions for changes to draft-ietf-itrace-03.txt

Mikael Olsson <[email protected]> Sat, 18 Jan 2003 17:09:06 +0100
Newsgroups gmane.ietf.itrace
Organization Clavister AB
Message-ID <[email protected]>

Tom-PT Taylor wrote:
> 
> Could people please look through this and see what else has to be done
> besides changing the signature algorithm codepoints as agreed yesterday.

1. Two years ago, there seemed to be consensus on building the message
   more according to common ICMP message layout, e.g.:
   - Transport IP header
   - ICMP itrace header
   - IP header of previous datagram, plus 8 IP data octets
   - Tag-length-value scheme, possibly including even more 
     of the original datagram

  The specification now shows the TLV scheme beginning right after
  the ICMP header. - Why? It makes it harder for state tracking
  firewalls to figure out which stream the ICMP message belongs to.
  
  (Yes, I _can_ see the counter argument: firewalls admins are likely
   to simply want to drop these messages and do collection/generation
   outside the firewall... in most cases.)

2. Item 2.5 lists complete packet header as >=24 octets.
   Shouldn't it be >=20 octets?

3. I don't see a note about total message size constraints.
   Has this been dropped, or do we assume that people will understand
   that the default ICMP message size constraints apply?
   
   I think the size should be constrained, and that it should be 
   explicitly mentioned.  For IPv4, this constraint would be 
   576 bytes total (including outer IP header).  I don't know
   if there is a corresponding "natural" value in IPv6.


4. As a programmer, I don't like the fact that the tag numbers are
   globally unique, even though some of them must occur inside
   other tags.  This creates confusion.  What if I find a 0x03,
   "Interface name" at the top level?  Should I attempt to parse 
   it, or should I simply ignore it?

   I can see how some people would find it tempting to write a 
   single tag identifier/parser function and apply it to _all_
   tag parsing, regardless of it parsing the top level or inside
   another tag. This is not a good thing.
 
   I'd like to see separate lists of tag numbers, which begin anew
   at 0x01 inside tags.

   (Yes, I know that this is "implementation", not "specification", a 
    distinction that designers tend to point out as soon as debates 
    like these crop up.  However, I would again like to draw your 
    attention to the ASN.1 parsing global fiasco.)


5. Item 2.8.1: "HMAC Authentication Data".
   This item talks very vaguely about "mutable fields" without 
   specifying what these fields are.
   I submit that we need to specifically identify these fields.

   I suggest we copy IPsec AH's list:
   - Entire Type of Service octet; this can get changed by 
     traffic shapers en route (and ECN too, right?)
   - Time to live
   - Flags/frag offset: both octets
     There is ONE reserved bit here, which we have no way of knowing
     how it will be used. We mute it.
   - Header checksum (obviously)

   However, we may also want to mute the ID field, in case something
   along the lines of [SWKA00] is ever put into operation - maybe for
   an entirely different purpose than packet tracing.

   No, this doesn't leave much of the header intact. Maybe one would
   just be better off including a TCP/UDP pseudo header in the HMAC
   and stay clear of the actual IP header :)

   Note that I have no idea what needs to be muted in IPv6. Maybe
   copying IPsec AH's mutable lists is simply the way to go.


6. Item 2.8.1 again.
   I assume that the HMAC codepoint spec will also use a separate 
   registry, and be a single octet in size?

   My personal preference of a registry:
   0x00 HMAC-SHA1-128
        (Output truncated. Why? See section 5, "Truncated output" 
         of http://www.ietf.org/rfc/rfc2104.txt)

   But I guess I could live with also having
   0x01 HMAC-MD5
   even though MD5 has been shown to be weaker than originally
   believed. (This is also discussed in depth in rfc2104)


7. What ToS/precedence do we use for the generated tracebacks?
   It's tempting to set it to one higher than the traced packet, but
   with the fuzzy wording about diffserv codepoints being admin-
   defined inside an administrative domain, this may or may not be 
   a good idea. (Most people tend to assume that higher value == 
   higher precedence, though?)

   I don't think we ever reached consencus on this last time it 
   came up.  Maybe we should just copy the ToS octet from the
   original datagram and be done with it?


8. Item 2.8.4: "Public-key Information"
   "This element contains a URL, pointing to an XML page that contains
    the public key used to sign key-disclosure elements."
   How would this XML page be constructed?  (Is there some standard
   for this that I'm simply not aware of?)

9. Item 3.1.2: "Implementation Requirements -- Message Reception"
   Maybe we should add something like:
     Hosts SHOULD also be designed so that the operator can limit the
     rate at which the host accepts ICMP TRACEBACK messages.  
     Messages exceeding this rate would be silently dropped.
     If such functionality is implemented, the host SHOULD provide
     a counter displaying how many messages have been dropped.

  (?)

10. Finally, a few example tracebacks wouldn't hurt, but I can see
    how you might want to put that off until the spec has stabilized :)


-- 
Mikael Olsson, Clavister AB
Storgatan 12, Box 393, SE-891 28 ÖRNSKÖLDSVIK, Sweden
Phone: +46 (0)660 29 92 00   Mobile: +46 (0)70 26 222 05
Fax: +46 (0)660 122 50       WWW: http://www.clavister.com