Subject: What are local addresses?

From: Andrew White <[email-masked]>
Date: Fri, 29 Aug 2003 15:16:21 +1000

I think we are getting into tensions because the Hinden/Haberman draft is
trying to do two things: specify local addresses and specify a mechanism of
ensuring uniqueness.  I agree with the former; I don't think the latter is
the right solution for all deployment spaces.

As tersely as possible, what is a local address?

  A local address is a unique* PI address with the additional property
  that it is invalid for use on the public internet and actively filtered
  by such.

Key properties:

(1) Because local addresses are unrouteable globally, they avoid the
perceived aggregation problems of PI addresses.

(2) Because local addresses are PI, they are independent of the presence or
absence of PA addressing schemes and service providers.

Property (2) of PI is attractive for 'local' communication in environments
where PA addresses are unavailable or have unsatisfactory stability.

Now, what about that 'uniqueness' property?

Because of the possibility of merging, we agree uniqueness is good. 
However, the fundamental uniqueness requirement is that each "subnet" has a
unique /64 prefix (notwithstanding that multiple "subnets" may exist on one
physical media / interface).  In some deployment scenarios, it will be
desirable to allocate a unique /48 prefix to the entire network and manually
or automatically subdivide (requires a prefix propagation mechanism).  In
others (specifically ad-hoc scenarios), it is more useful to allocate a
unique /64 to each subnet.

In the /48 case, the process is as follows:

(1) I need to generate a unique /48 local prefix for my network, under which
I will sub-allocate to specific routers.

(2) I use a mechanism to generate a unique /48 prefix.

(3) I propagate this prefix to all my routers, appending the sub-allocations
as I go to create /64 subnets.

Using the global registration method, step #2 involves contacting a
registry.  Using the 'random' method, step #2 involves running the
algorithm.  As mentioned, step #2 could also be implemented by some form of
hash on a MAC or EUI-48/64.

My point isn't to take issue with step 2, but to point out that the whole
process is only one way of uniquely numbering subnets.

Using a /48 in a configured network has the convenience of matching up with
the /48 PA addresses usually allocated by ISPs, such that the 49-64 subnet
numbering used for external addresses can be synchronised with the subnet
numbering used for local addresses.  Because the local addresses are not
routeable outside the 'local' network, the bits between the top-level prefix
designation (fc00::/7) and the /48 network division are unique, unaggregable
noise.

In an environment where independence is more important than aggregation it
makes more sense to ignore the /48 division completely and number at (or
closer to) the /64 level.  If routers can uniquely generate /64 subnet
prefixes then the need for prefix propagation (at the routing layer) is
removed.  The algorithm is then:

(1) I need to generate a unique /64 prefix for each subnet.

(2) I use a mechanism to generate a unique /64 for each subnet.

Summary: I would like to see the 'unique-local-addressing' document leave
some space for alternative generation methods.  The easy (only?) way to
ensure that alternative methods are cross-wise unique is to allocate a
different prefix for each method, in much the same way as the global
fc00::/8 and local fd00::/8 prefixes have been done.

-- 
Andrew White
--------------------------------------------------------------------
IETF IPng Working Group Mailing List
IPng Home Page:                      http://playground.sun.com/ipng
FTP archive:                      ftp://playground.sun.com/pub/ipng
Direct all administrative requests to [email-masked]
--------------------------------------------------------------------

---

From: Keith Moore <[email-masked]>
Date: Fri, 29 Aug 2003 01:33:41 -0400

This all makes good sense to me.  The only thing that I question in
is whether the random /64 subnet prefixes get generated by the routers or the
hosts on the link - and I suspect the latter makes more sense once you start
looking at transition scenarios.  

The way I see it, self-configuring networks get built from the bottom-up, so
they should start with /64 prefixes for each link and the routers should
figure out how to route between those links by exchanging reachability
information for those prefixes. That means that they can't aggregate, and
that imposes a scaling limit on self-configured networks, but surely we don't
expect self-configuring networks to be as large as managed ones? 

> unique /64 to each subnet.

...etc.