Re: a draft about on-link and subnet prefixes

Alexandre Petrescu <alexandre.petrescu@gmail.com> Tue, 14 March 2017 08:48 UTC

Return-Path: <alexandre.petrescu@gmail.com>
X-Original-To: ipv6@ietfa.amsl.com
Delivered-To: ipv6@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id CB463129441 for <ipv6@ietfa.amsl.com>; Tue, 14 Mar 2017 01:48:00 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.333
X-Spam-Level:
X-Spam-Status: No, score=-0.333 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_ADSP_CUSTOM_MED=0.001, FREEMAIL_FROM=0.001, NML_ADSP_CUSTOM_MED=0.9, SPF_SOFTFAIL=0.665] autolearn=no autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id OHoemtvUr3aj for <ipv6@ietfa.amsl.com>; Tue, 14 Mar 2017 01:47:58 -0700 (PDT)
Received: from sainfoin-smtp-out.extra.cea.fr (sainfoin-smtp-out.extra.cea.fr [132.167.192.228]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A2E0B126CD8 for <ipv6@ietf.org>; Tue, 14 Mar 2017 01:47:58 -0700 (PDT)
Received: from pisaure.intra.cea.fr (pisaure.intra.cea.fr [132.166.88.21]) by sainfoin-sys.extra.cea.fr (8.14.7/8.14.7/CEAnet-Internet-out-4.0) with ESMTP id v2E8luDJ027875 for <ipv6@ietf.org>; Tue, 14 Mar 2017 09:47:56 +0100
Received: from pisaure.intra.cea.fr (localhost [127.0.0.1]) by localhost (Postfix) with SMTP id 7C857205ABF for <ipv6@ietf.org>; Tue, 14 Mar 2017 09:47:56 +0100 (CET)
Received: from muguet2.intra.cea.fr (muguet2.intra.cea.fr [132.166.192.7]) by pisaure.intra.cea.fr (Postfix) with ESMTP id 728A2205A6A for <ipv6@ietf.org>; Tue, 14 Mar 2017 09:47:56 +0100 (CET)
Received: from [10.8.34.184] (is227335.intra.cea.fr [10.8.34.184]) by muguet2.intra.cea.fr (8.15.2/8.15.2/CEAnet-Intranet-out-1.4) with ESMTP id v2E8lulp001214 for <ipv6@ietf.org>; Tue, 14 Mar 2017 09:47:56 +0100
Subject: Re: a draft about on-link and subnet prefixes
To: ipv6@ietf.org
References: <CAJE_bqdd9OXOi+SZ8_OfGWXxEoKSfoR6=Lp3-_=vEaWbjx4udw@mail.gmail.com>
From: Alexandre Petrescu <alexandre.petrescu@gmail.com>
Message-ID: <018c1f82-cd5c-7d59-f92b-9401ddfb11fb@gmail.com>
Date: Tue, 14 Mar 2017 09:47:49 +0100
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.7.1
MIME-Version: 1.0
In-Reply-To: <CAJE_bqdd9OXOi+SZ8_OfGWXxEoKSfoR6=Lp3-_=vEaWbjx4udw@mail.gmail.com>
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: 8bit
Archived-At: <https://mailarchive.ietf.org/arch/msg/ipv6/h4zCRR5qHM7Asw8PZJaB9IbYjKM>
X-BeenThere: ipv6@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: "IPv6 Maintenance Working Group \(6man\)" <ipv6.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ipv6>, <mailto:ipv6-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ipv6/>
List-Post: <mailto:ipv6@ietf.org>
List-Help: <mailto:ipv6-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ipv6>, <mailto:ipv6-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 14 Mar 2017 08:48:01 -0000

I suggest adding the following upfront:

"The onlink|SLAAC dichotomy MAY be applied; if it is applied, then the
  routing towards that subnet MUST use the shortest plen of the two"

E.g. if the on-link prefix is 48 and the SLAAC prefix is 64 then the 48 
(not the 64) must be in the rt tables of routers with routes towards 
that subnet.

Le 14/03/2017 à 00:14, 神明達哉 a écrit :
> I've submitted a new individual draft on the separation between
> on-link and (SLAAC) subnet prefixes, at the risk of stating the
> obvious:
> https://datatracker.ietf.org/doc/draft-jinmei-6man-prefix-clarify/

I have read the draft.  It was a good read, thank you.  It clarifies the 
difference between on-link prefixes and SLAAC prefixes.

Here are my comments in summary:

1. It does not resolve the question of whether or not the 64bit IID
    should be required in the IPv6 Addressing Architecture.

    We can't require all IIDs be 64bit (for SLAAC) and rely on non-64
    on-link prefixes at times.  There is no recommendation about how to
    make that work, and intuitively it is prone to error.  An example is
    needed picturing how the dichotomy can work.

2. The explanation of the dichotomy onlink|SLAAC should be accompanied
    by a recommendation of using the shortest plen of the two (even when
    that plen is not 64) in the Internet routing setup towards that
    subnet.  This is the crux of it.

    This recommendation should acknowledge that when that plen is larger
    than 64, SLAAC/Ethernet can not work.

    This recommendation should acknowledge that when that plen is smaller
    than 64, SLAAC/Ethernet can work by using 64 for SLAAC and plen for
    on-link determination.

3. The draft would benefit from dealing with LL addresses too.

Details below:

> Although this misunderstanding would normally not cause troubles in
> practical deployments, it can be a source of operational surprise or
>  interoperability problems once an administrator wants to exploit the
>  idea of this separation more "creatively".

This needs the administrator to have ability to set distinct routes
towards presumably distinct 'on-link' and SLAAC prefixes.

> For brevity, this document focuses on global unicast prefixes.
> Discussions on any other types of prefixes, including unicast link-
> local prefixes, are out of scope of this document.

<LL>

If one tries to bring the LL prefixes in the picture then the
perspective may change.

Let me explain why:

The LL prefix is not present in RA, there is no 'L' nor 'A' bits to
check, yet LL is "on-link" prefix and it is used to auto-configure an
Address.

So, your definition of an "on-link" prefix being "A prefix advertised in
an RA PIO with the L flag being set." is incomplete.

The right definition of an "on-link" prefix should be:
> A prefix advertised in an RA PIO with the L flag being set, or a
> prefix starting with fe81:://10.

and, similarly:
> SLAAC subnet prefix  - A prefix advertised in an RA PIO with the A
> flag being set, or a prefix starting with fe82:://10.

Further, when the draft says:
> It may also be worth noting that an SLAAC subnet prefix is not
> directly related to the "subnet prefix"

it is wrong.  It should say:
> It may also be worth noting that, with the exception of LL prefix, an
> SLAAC subnet prefix is not directly related to the "subnet prefix"
> (i.e. an LL prefix _is_ directly related to the "subnet prefix").

That goes for many other such statements.  Each should be qualified by
LL.  And if we do so, then this dichotomy may appear less obvious.
There is always this LL exception.

</LL>

> [RFC4861] and [RFC4862] intentionally separate the concept and
> handling of on-link prefixes and SLAAC subnet prefixes, even when
> they are specified in the same single PIO.

I agree with this dichotomy.  It is a tool that can be used to do
sophisticated configs in an IPv6 subnet.  Similar configs can be
achieved in IPv4 as well.  (there is equivalency between
1:1::/63   "connected" in rt and 1:1::1/64 on the iface, and
1.1.0.0/23 "connected" in rt and 1.1.0.1/24 on the iface)

However, this dichotomy has very many consequences.

A number of RFCs and I-Ds misunderstand this dichotomy "on-link"|"SLLAC"
and make wrong recommendations.  Maybe you want this draft to clarify
all these RFCs?

One of the worst consequence is the allocation of single /64 prefix for
an end user.  Many drafts and their respective deployments only give a
/64 to the end user: it is used both for SLAAC _and_ for on-link
determination.  If they agreed the dichotomy then they would give at
least two distinct prefixes to the end-user: one for SLAAC and one for
on-link determination.

Another consequence is the possibility to make wrong configurations.

A wrong configuration is the following: in a subnet where plen1 is for
on-link determination and plen2 is for SLAAC, it is easily possible to
make a Host believe a Neighbor is on-link whereas the routing system to
which that subnet is connected routes to another subnet for same Neighbor.

If somebody plays too much with this plen1 and plen2 configurations
(onlink|SLAAC) on a subnet one can easily make mistakes.  There is no
recommendation how to avoid these mistakes.

Recommendations about how to play with this onlink|SLAAC dichotomy will
need to take into account how routing is based on longest-prefix match.

Also these recommendations must make sure that allocating a
single /64 to an end user does not get into widespread use.

> Perhaps the administrator of the link wanted to force most of on-link
> communication to 2001:db8:1:2::/64 to be first sent to a default
> router, while allowing a particular set of hosts (those using the
> address that match the on-link prefix) to communicate directly.

I agree with the use-case.

But maybe the administrator should know too that the default router will 
reply back with an ICMP Redirect leading to an end result where the 
on-link prefix is same as the SLAAC prefix in the rt table.

Also, the administrator should know that same effect (force traffic to 
the defrouter, instead of directly to neighbors) is achieved by using 
ptp links.  This also avoids ICMP Redirect, and thus permanently 
maintain this "through-defrouter" path, instead of momentarily.

>    An on-link prefix could be longer than an SLAAC subnet prefix.  For
>    example, when the latter is 2001:db8:1:2::/64, the former could be
>    2001:db8:1:2:3:4::/80.

I agree it could be.

But in this case, one also must make sure the routing towards that 
subnet is the SLAAC's /64 (not the 'onlink's /80).

>    An on-link prefix could also be shorter than an SLAAC subnet prefix.
>    For example, when the latter is 2001:db8:1:2::/64, the former could
>    be 2001:db8:1::/48.

I agree it could be.

In this case, one also must make sure the routing towards that subnet is 
the onlink's /48, and not the SLAAC's /64.

Lacking of saying so leads to the undesirable situation of operators 
allocating a /64 for a ptp link.

To combine the two, a recommendation would be:

"The onlink|SLAAC dichotomy may be applied only if the routing towards
  that subnet uses the shortest plen of the two; that could be a value 
less than 64."

Alex