On Sun, 23 Dec 2007 12:54:34 -0500 Ross Vandegrift <ross@kallisti.us> wrote:
On Sun, Dec 23, 2007 at 12:24:32AM +0100, Iljitsch van Beijnum wrote:
First of all, there's RFC 3513:
For all unicast addresses, except those that start with binary value 000, Interface IDs are required to be 64 bits long and to be constructed in Modified EUI-64 format.
Ahhh, thanks - that is the only thing I have ever seen that gives any reason for the /64 prefix. Sadly, the document contains no compelling technical reasons for it - looks like it's done just so things are easy when generating interface IDs from ethernet addresses.
If operational simplicity of fixed length node addressing is a technical reason, then I think it is a compelling one. If you've ever done any reasonable amount of work with Novell's IPX (or other fixed length node addressing layer 3 protocols (mainly all of them except IPv4!)) you'll know what I mean. I think Ethernet is also another example of the benefits of spending/"wasting" address space on operational convenience - who needs 46/47 bits for unicast addressing on a single layer 2 network!? If I recall correctly from bits and pieces I've read about early Ethernet, the very first versions of Ethernet only had 16 bit node addressing. They then decided to spend/"waste" bits on addressing to get operational convenience - "plug and play" layer 2 networking. If IPv6 can have the same operational simplicity as Ethernet, and addressing bits can afford to be spent on it, then I think those bits are well worth spending. The /64 for all subnets idea is probably an example of "worse is better" principle. It's not ideal for everything, but because it's general enough, it works with everything, and is simpler and a *single* solution to everything, and that's what makes it better. Regarding where the /64 boundary came from, from what I understand, the following Internet Drafts are it's origin: "8+8 - An Alternate Addressing Architecture for IPv6" http://arneill-py.sacramento.ca.us/ipv6mh/draft-odell-8+8-00.txt "GSE - An Alternate Addressing Architecture for IPv6" http://arneill-py.sacramento.ca.us/ipv6mh/draft-ipng-gseaddr-00.txt
Second, we currently have two mechanisms to configure IPv6 hosts with an address: router advertisements and DHCPv6. The former has been implemented in ALL IPv6 stacks but doesn't work if your subnet isn't a /64.
But the protocols don't imply or require this. All of the messages used in stateless autoconfig will behave as expected with longer prefix lengths. So it seems that because the interface identifier has to be 64-bits, stateless autoconfig is unnecessarily crippled.
For kicks I just tried RAs with a /96 prefix. Linux 2.6 checks and enforces the requirement from RFC3513, though it'd be trivial to change. But I'm guessing other vendors enforce this as well.
-- Ross Vandegrift ross@kallisti.us
"The good Christian should beware of mathematicians, and all those who make empty prophecies. The danger already exists that the mathematicians have made a covenant with the devil to darken the spirit and to confine man in the bonds of Hell." --St. Augustine, De Genesi ad Litteram, Book II, xviii, 37
-- "Sheep are slow and tasty, and therefore must remain constantly alert." - Bruce Schneier, "Beyond Fear"