Subject: RE: -16 rev of DHCPv6 spec

From: Bernie Volz <[email-masked]>
Date: Fri, 1 Dec 2000 11:11:00 -0500

Jim:

Yes I think it does clearly resolve the issue (use all 128 bits).

- Bernie

-----Original Message-----
From: Jim Bound [mailto:[email-masked]]
Sent: Friday, December 01, 2000 10:17 AM
To: DHCPv6 discussion list
Cc: [email-masked]
Subject: Re: -16 rev of DHCPv6 spec

Hi Bernie,

Thanks for the careful read and great input.  I am traveling alot this
week again so can't respond in details but talking with Ralph and Mike
consistently.  But do want to suggest a response to one of your points.
Can discuss further on design tele conference next week.

>- In most of the message headers, there is the 16-byte client-link-local
>address. What about dropping the first 64-bits of this (the prefix)? It
>would save 8-bytes/packet. This is just a thought - there might be good
>reasons NOT to do this. But on the other hand, it would remove the need for
>servers/relays to validate that the prefix is the link local - instead,
they
>pre-append the prefix when they need to use it as a link-local address. So,
>if we were to do this, we'd call this 64-bit field "interface ID" or
>something similar (at least based on RFC 2373 terminology).
>
>>From RFC 2373, it appears that link local doesn't really consume the full
>64-bits before the interface-id, instead only the first 10 bits are really
>specified (with the next 54-bits being zero, though it is not clear that is
>REQUIRED).
>
>   |   10     |
>   |  bits    |        54 bits          |          64 bits           |
>   +----------+-------------------------+----------------------------+
>   |1111111010|           0             |       interface ID         |
>   +----------+-------------------------+----------------------------+

If I understand what your suggesting?, we cannot do what you ask.  The
reason is that we cannot assume in any IETF protocol the "interface ID"
will always be 64bytes for all RFC 2373 prefixes.  I thought this to
some years ago as I wanted to only carry 64byte prefixes in our internal
OS inpcb structures for IPv6 in the kernel for fast lookups and for
host routing path search.  But, then I would have to have if-condition
construct for the Format-Prefix for IPv6 addresses.

See below from RFC 2373:

---------------------------
2.5.1 Interface Identifiers

   Interface identifiers in IPv6 unicast addresses are used to identify
  interfaces on a link.  They are required to be unique on that link.
   They may also be unique over a broader scope.  In many cases an
   interface's identifier will be the same as that interface's link-
   layer address.  The same interface identifier may be used on multiple
  interfaces on a single node.

   Note that the use of the same interface identifier on multiple
   interfaces of a single node does not affect the interface
   identifier's global uniqueness or each IPv6 addresses global
   uniqueness created using that interface identifier.

   In a number of the format prefixes (see section 2.4) Interface IDs
   are required to be 64 bits long and to be constructed in IEEE EUI-64
  format [EUI64].  EUI-64 based Interface identifiers may have global
   scope when a global token is available (e.g., IEEE 48bit MAC) or may
  have local scope where a global token is not available (e.g., serial
   links, tunnel end-points, etc.).  It is required that the "u" bit
   (universal/local bit in IEEE EUI-64 terminology) be inverted when
   forming the interface identifier from the EUI-64.  The "u" bit is set
  to one (1) to indicate global scope, and it is set to zero (0) to
   indicate local scope.  The first three octets in binary of an EUI-64
  identifier are as follows:

       0       0 0       1 1       2
      |0       7 8       5 6       3|
      +----+----+----+----+----+----+
      |cccc|ccug|cccc|cccc|cccc|cccc|
      +----+----+----+----+----+----+
-----------------------------------------------

The key is the sentence in the above paragraph first sentence "In a
number of format prefixes"......Not all IPv6 Format Prefixes will have
just 64byte interface ids.

Does this resolve your suggestion?

thanks
/jim