Re: Disabling temporary addresses by default?

Fernando Gont <fgont@si6networks.com> Tue, 28 January 2020 22:43 UTC

Return-Path: <fgont@si6networks.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 AC8F21200F4 for <ipv6@ietfa.amsl.com>; Tue, 28 Jan 2020 14:43:06 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level:
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham 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 d4bfO7Xssa5U for <ipv6@ietfa.amsl.com>; Tue, 28 Jan 2020 14:43:05 -0800 (PST)
Received: from fgont.go6lab.si (fgont.go6lab.si [91.239.96.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id A0B61120018 for <ipv6@ietf.org>; Tue, 28 Jan 2020 14:43:04 -0800 (PST)
Received: from [192.168.100.103] (unknown [186.183.48.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by fgont.go6lab.si (Postfix) with ESMTPSA id 470F3803B5; Tue, 28 Jan 2020 23:42:57 +0100 (CET)
Subject: Re: Disabling temporary addresses by default?
To: Bob Hinden <bob.hinden@gmail.com>, Lorenzo Colitti <lorenzo=40google.com@dmarc.ietf.org>
Cc: IPv6 List <ipv6@ietf.org>
References: <03C832CE-7282-4320-BF1B-4CB7167FE6BE@employees.org> <c4166907-b6c9-a4ef-fd59-cf539bbe0405@si6networks.com> <43D76C96-C16B-4BEB-B9B8-C68D53BCE63F@fugue.com> <fb5b8377-892d-2777-ef9b-4f9ddefa6c93@si6networks.com> <CAKD1Yr034_tu7ZoJ1FCfDYhNSN6igm-ZQyR4u3U+UDMr=huGOw@mail.gmail.com> <1af0b06d-f9d7-5ea1-27f3-b417eb9148fa@si6networks.com> <7606A049-318D-4526-917D-F2A801BF7050@cisco.com> <CAKD1Yr1d9kORFdoOJr22J_UDJ9hLPr6AQLyWuh7=bAQKa+aXGw@mail.gmail.com> <MN2PR11MB356588FC3E8A6410B725D159D80A0@MN2PR11MB3565.namprd11.prod.outlook.com> <CAKD1Yr35meRGh_POo_2jrHA_oazO1xUOG5G_rx43xNLFYHQsMQ@mail.gmail.com> <MN2PR11MB356526F01CAE1CADEF8E4472D80A0@MN2PR11MB3565.namprd11.prod.outlook.com> <CAKD1Yr0-rmyzz3y1d+pCpA0+tGuhSdjojaJovXUzVuyx6UdeLA@mail.gmail.com> <98179a48-8d86-4673-6c82-fc0022988862@foobar.org> <F84FEFAF-1F78-47D4-B3E0-981DCFD0CB58@employees.org> <CAKD1Yr11_SSUkCBuQ3-h+eRg0LPZQdhe+h7f0YZy9TiyRWj6mw@mail.gmail.com> <1F1CE807-5466-42B3-AA37-8C916EAB545C@gmail.com>
From: Fernando Gont <fgont@si6networks.com>
Message-ID: <f02490c8-5f52-acf6-75e7-109d10d89740@si6networks.com>
Date: Tue, 28 Jan 2020 19:42:45 -0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <1F1CE807-5466-42B3-AA37-8C916EAB545C@gmail.com>
Content-Type: text/plain; charset="windows-1252"; format="flowed"
Content-Language: en-US
Content-Transfer-Encoding: 7bit
Archived-At: <https://mailarchive.ietf.org/arch/msg/ipv6/Kum8COvMgE1aSa3zFUb8t3Uv8jo>
X-BeenThere: ipv6@ietf.org
X-Mailman-Version: 2.1.29
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, 28 Jan 2020 22:43:07 -0000

On 28/1/20 18:35, Bob Hinden wrote:
[....]
> 
>> Instead of disabling, why not change the default of the number of addresses maintained? For example, instead of maintaining 1 permanent + 1 valid + 7 deprecated, why not just default to maintaining 1 permanent + 1 valid + 1 deprecated. That means that applications would have to re-establish their connections once a day instead of once every 7 days. But if they use privacy addresses, they already need to re-establish connections after 7 days. And they can always use not to use privacy addresses via the appropriate socket option.
> 
> If the concern with privacy addresses is that a node might have a large number of these addresses, then this seems reasonable to me.

In this respect, we have a few knobs to play with:

1) Valid Lifetime and Temporary Lifetime timers

In principle, N = Valid Lifetime / Preferred Lifetime, is the maxium 
number of addresses that a host may have at a given time. So far, we 
have a VL of one week, and a PL of 1 day, resulting in seven addresses.

If we change that ratio, as Lorenzo suggested, that would change the 
maximum number of addresses at any given time.

That said, the maximum number of N addresses should only actually be 
seen on the network if long-lived sessions were employing each of the N 
addresses. Otherwise, the host would *have* N addresses, but only emit 
traffic with the currently "Preferred" addresses. (i.e., configured 
addresses that are not actively used are not a problem).



2) Whether ongoing sessions should be allowed to continue using invalid 
addresses

By default (SLAAC-wise), they are not allowed. But section "Future Work" 
of RFC4941 hints on that as "future work". This could address the 
concerns of sessions that break up, but at the same time possible 
increase the number of concurrent addresses (you keep the addresses that 
are in use, but keep generating new ones).

One should note that this possible problem can be addressed by the app 
specifying preference of the address type to be used (i.e., override the 
default).


Based on the above, the options kind of become:

Option #1: Reduce the N ratio above, and disallow the use of invalid 
addresses for ongoing sessions. Apps that need long-lived sessions and 
that have not properly overriden the system default will have their 
connections torn down, and we'll have a hard limit on the maximum number 
of addresses.

Option #2: Reduce the N ratio, but allow ongoing sessions to use invalid 
addresses. This could be worse than legacy RFC4941 (if long lived 
sessions last more than a week), since now temporary addresses would not 
have a limited lifetime (the lifetime would only be limited wrt the 
ability to employ them for new transport protocol instances)

Option #3: Keep current N ratio, don't allow apps to use invalid 
addresses. This is the status quo, and enforces a limit  on the maximum 
number of addresses. But obviously this "N" is larger than that of #1 above.

Option #4: Keep the current N ratio, and allow apps to use invalid 
addresses. This is *not* RFC4941. I wonder if any implementations do 
this. This would obviously be worse in terms of the number of addresses 
than legacy RFC4941bis.


If I had to choose, I'd go for #1 or #3 above. If apps hint the network 
layer about the addresses to use (e.g. stable addresses if they mean to 
use long-lived connections), #1 is fine. OTOH, #3, the status quo, is 
more concervative in this respect.

Thanks,
-- 
Fernando Gont
SI6 Networks
e-mail: fgont@si6networks.com
PGP Fingerprint: 6666 31C6 D484 63B2 8FB1 E3C4 AE25 0D55 1D4E 7492