IPv6 is Classless
The Intertubes
42 Rue du Jour
Sophia-Antipolis
::1
FR
bourbaki@bogus.com
Over the history of IPv6, various classful address models have
been proposed, with the most notable being Top-Level Aggregation
(TLA) and Next-Level Aggregation (NLA) Identifiers. They have all
proved to be mistakes. The last remnant of classful addressing is
a rigid network / interface identifier boundary at /64.
This document removes that boundary as far as routing and addressing
are concerned.
Over the history of IPv6, various classful address models have
been proposed, with the most notable being Top-Level Aggregation
(TLA) and Next-Level Aggregation (NLA) Identifiers; see, for
example, . They have all proved to be
mistakes. For example, TLA and NLA were obsoleted by . The last remnant of classful addressing is a
rigid network / interface identifier boundary at /64.
This document removes that boundary as far as routing and addressing
are concerned.
Some confusion has been caused by the IP Version 6 Addressing
Architecture, , and the proposed changes in
with respect to the
minimum subnet size.
Meanwhile, link prefixes of varied lengths, /127, /126, /124,
/120, ... /64 have been successfully deployed for many years.
Having the formal specification be unclear risks potential
mis-implementation by the naïve, which could result in operational
disasters.
It is assumed that the reader understands the history of classful
addressing in IPv4 and why it was abolished . Of course, the acute need to conserve address
space that forced the adoption of classless addressing for IPv4 does
not apply to IPv6; but the arguments for operational flexibility in
address allocation remain compelling.
It is also assumed that the reader understands IPv6 , the IP Version 6 Addressing Architecture , the proposed changes to RFC4291 and RFC2464
, and the recent
recommendations for the generation of stable Interface Identifiers
.
An important recent IPv6 development was that, for host computers
on local area networks, the way in which interface identifiers were
formed was no longer bound to layer 2 addresses (MACs) . Therefore their
length, previously fixed at 64 bits , is in
fact a variably-sized parameter as stated in .
To state it simply, IPv6 unicast subnetting is based on prefixes
of any valid length up to 128 except for links where an Internet
Standard that has nothing to do with routing may impose a
particular length. Examples are Stateless Address AutoConfiguration
(SLAAC) , or Using 127-Bit IPv6 Prefixes on
Inter-Router Links .
Nodes must always support routing on any valid network prefix
length, even if SLAAC or other standards are in use, because routing
could choose to differentiate at a different granularity than is
used by any such automated link local address configuration
tools.
For historical reasons, when a prefix is needed on a link,
barring other considerations, a /64 is recommended .
The length of the Interface Identifier in Stateless Address
AutoConfiguration is a parameter; its
length SHOULD be sufficient for effective randomization for privacy
reasons. For example, a /48 might be sufficient. But operationally
we recommend, barring strong considerations to the contrary, using
64-bits for SLAAC in order not to discover bugs where 64 was
hard-coded, and to favor portability of devices and operating
systems.
None the less, there is no reason in theory why an IPv6 node
should not operate with different interface identfier lengths on
different physical interfaces. Thus, a correct implementation of
SLAAC must in fact allow for any prefix length, with the value being
a parameter per interface. For instance, the Interface Identifier
length in the recommended (see ) algorithm
for selecting stable interface identifiers
is a parameter, rather than a hardcoded value.
Assumming that nodes employ unpredictable interface identifiers
, the subnet size may have an impact on some
security and privacy properties of a network. Namely, the smaller
the subnet size, the more feasible it becomes to perform IPv6
address scans .
For some specific subnets, such as point to point links, this may be
less of an issue.
On the other hand, we assume that a number of IPv6
implementations fail to enforce limits on the size of some of the
data structures they employ for communicating with neighboring
nodes, such as the Neighbor Cache. In such cases, the use of
smaller subnets forces an operational limit on such data structures,
thus helping mitigate some pathological behaviors (such as Neighbor
Cache Exhaustion attacks).
This document has no IANA Considerations.
The original draft was by Randy Bush, who was immediately aided
and abetted by Brian Carpenter, Chris Morrow, Fernando Gont, Geoff
Huston, Job Snijders, [ your name here ].
The authors wish to thank .