classful addressing considered harmful [was Re: Closure?]
Bob Hinden
hinden at iprg.nokia.com
Thu Feb 8 17:06:36 EST 2001
Randy,
Please excuse the roughness of my reply. I am not that articulate even
when I am not jet lagged :-)
I think there is still much confusion.
The major problem with IPv4's class-full addressing was that the boundaries
in the address were built into implementations and into routing
protocols. The network part of the address was derived by looking at the
bits in the address. This made it impossible to add new prefix lengths
without changing all of the implementations and routing protocols. We even
had routing protocols that only carried the bits of the network part (i.e.,
not the full address). Even BGP started out without a prefix length. It
was added when we invented CIDR.
IPv4 today is still class-full in how multicast addresses are distinguished
from unicast (i.e., uses class D), and the non-global prefixes (net 10,
etc.). These are built into implementations. All other unicast addresses
are not predefined in implementations and the network part is distinguished
from the host part by a prefix length.
IPv6 follows the same model as IPv4 with CIDR. With just about the same
exceptions as IPv4, IPv6 addresses are class-less. The exceptions are
defined in section 2.8 of the addressing architecture document. These are:
o Multicast Prefix (FF)
o Local-Use Prefixes (Link-Local and Site-Local)
o Pre-Defined Multicast Addresses
o IPv4-Compatible Prefixes
IPv6 implementation do not have any other built in knowledge about the
boundaries in the addresses. Like IPv4, IPv6 uses prefixes. It uses
CIDR. IPv6 routing protocols carry prefixes. Just like IPv4 with CIDR.
You argued that the /64 boundary is a class-full boundary. This is a
middle ground. It is from an address creation point of view. As Thomas
pointed out, this was a tradeoff to make auto-configuration
simple. However, it is not from a routing and forwarding point of view. I
think the distinction is important.
All of the other "boundaries" are for allocation purposes. They do not
affect forwarding and routing. They can be changed with having to change
any implementations. As you pointed out the /35 prefix was not defined in
a standard.
The main point I am trying to make is that IPv6 is no more class-full than
IPv4 is today.
Bob
p.s. The history behind of the TLA/NLA structure is that it is generally
based on work that came out of Mike O'Dell's 8+8/GSE proposal. That had a
similar top level structure. The specifics of the current TLA/NLA fields
were worked out with Mike and I sitting at one of tables in the hotel lobby
at Memphis, Tennessee IETF meeting. I think this was before the ducks came
down from the roof :-)
More information about the V6wg
mailing list