Re: NAT64 in RA, draft-ietf-6man-ra-pref64

Mark Andrews <marka@isc.org> Fri, 28 June 2019 01:16 UTC

Return-Path: <marka@isc.org>
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 B19B71200EF for <ipv6@ietfa.amsl.com>; Thu, 27 Jun 2019 18:16:43 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.899
X-Spam-Level:
X-Spam-Status: No, score=-6.899 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_HI=-5, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=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 30zK6oKqQJws for <ipv6@ietfa.amsl.com>; Thu, 27 Jun 2019 18:16:41 -0700 (PDT)
Received: from mx.pao1.isc.org (mx.pao1.isc.org [IPv6:2001:4f8:0:2::2b]) (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 1E25712003F for <6man@ietf.org>; Thu, 27 Jun 2019 18:16:41 -0700 (PDT)
Received: from zmx1.isc.org (zmx1.isc.org [149.20.0.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx.pao1.isc.org (Postfix) with ESMTPS id DD1323AB004; Fri, 28 Jun 2019 01:16:40 +0000 (UTC)
Received: from zmx1.isc.org (localhost [127.0.0.1]) by zmx1.isc.org (Postfix) with ESMTPS id B8364160050; Fri, 28 Jun 2019 01:16:40 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1]) by zmx1.isc.org (Postfix) with ESMTP id 99C9E16006A; Fri, 28 Jun 2019 01:16:40 +0000 (UTC)
Received: from zmx1.isc.org ([127.0.0.1]) by localhost (zmx1.isc.org [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id S1YW3uLHNZro; Fri, 28 Jun 2019 01:16:40 +0000 (UTC)
Received: from [172.30.42.67] (c27-253-115-14.carlnfd2.nsw.optusnet.com.au [27.253.115.14]) by zmx1.isc.org (Postfix) with ESMTPSA id 59514160050; Fri, 28 Jun 2019 01:16:39 +0000 (UTC)
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 11.5 \(3445.9.1\))
Subject: Re: NAT64 in RA, draft-ietf-6man-ra-pref64
From: Mark Andrews <marka@isc.org>
In-Reply-To: <CAFU7BASfJ4YS6xBzK8hNJRSMnFZmdn3VE5A=sPCC3JqRa8SQEQ@mail.gmail.com>
Date: Fri, 28 Jun 2019 11:16:36 +1000
Cc: Michael Richardson <mcr+ietf@sandelman.ca>, 6man@ietf.org, Lorenzo Colitti <lorenzo@google.com>
Content-Transfer-Encoding: quoted-printable
Message-Id: <EC63A89D-26CD-4093-8814-4461B6D3D327@isc.org>
References: <12187.1558972629@localhost> <D3C7EB41-02E8-48D6-9335-26A041FD64C2@isc.org> <00C00FE5-C7CD-4B99-A2C9-CCBFCB1E4850@isc.org> <CAFU7BASfJ4YS6xBzK8hNJRSMnFZmdn3VE5A=sPCC3JqRa8SQEQ@mail.gmail.com>
To: Jen Linkova <furry13@gmail.com>
X-Mailer: Apple Mail (2.3445.9.1)
Archived-At: <https://mailarchive.ietf.org/arch/msg/ipv6/GROm7bF0LVscJ-bRADfU25z8ORU>
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: Fri, 28 Jun 2019 01:16:44 -0000

      0                   1                   2                   3
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |     Type      |    Length     |           Lifetime            |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     +                            Prefix/Suffix                      +
     |                                                               |
     +                                                               +
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     | PREFIX LENGTH |        DNS64 FILTER NAME                      |
     +-+-+-+-+-+-+-+-+                                               ~
     ~                                             +-+-+-+-+-+-+-+-+-+
     |                        DNS WIRE ENCODED     |PADDING IF NEEDED|
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


e.g. _dns64.example.com or _dns64.home.arpa
06 5f 64 6e 73 36 34 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00
or
06 5f 64 6e 73 36 34 04 68 6f 6d 65 04 61 72 70 61 00

If there is no filter name you encode the root label “." (00).

Any yes you would use the DNS servers in the RA to retrieve this or else
it wouldn’t work for split DNS.

Filters can be long. DNS has ~64K for encoding the filter information in.

While the first label doesn’t have to be _dns64, having a leading underscore
takes it out of hostname namespace.

To make a DNS query you prefix the name with a DNS header (12 octets)
and append 00 01 00 2a (IN/APL).

e.g 
	XX XX 00 00 00 01 00 00 00 00 00 00 06 5f 64 6e
	73 36 34 04 68 6f 6d 65 04 61 72 70 61 00 00 01
	00 2a

And as these are IPv6 nodes we also need to add a OPT record for
which the minimal one is 11 octets (00 YY YY 00 21 00 00 00 00 00 00)

e.g 
	XX XX 00 00 00 01 00 00 00 00 00 01 06 5f 64 6e
	73 36 34 04 68 6f 6d 65 04 61 72 70 61 00 00 01
	00 2a 00 YY YY 00 21 00 00 00 00 00 00

XX XX DNS ID
YY YY EDNS UDP BUFFER SIZE

> On 27 Jun 2019, at 8:35 pm, Jen Linkova <furry13@gmail.com> wrote:
> 
> Hi Mark,
> 
> On Tue, May 28, 2019 at 6:39 AM Mark Andrews <marka@isc.org> wrote:
>> 
>> The RA optionally includes the name of the APL record.  Inclusion is signalled by the option length.
> 
> I'm working on then -01 version of the draft and while trying to
> incorporate the suggestion you made at the microphone @IETF104, I've
> realized I'm still confused.
> 
> If I got it right, you are suggesting to use the option length to
> indicate not just the prefix length, but the presence of the APL
> record, right?
> So how shall it look like?
> Are you suggesting to use the Reserved bits to store the APL label length?
> 
> Let's look at all possible scenarios:
> 
> Scenario 1: /96 prefix, no APL.
> The option length = 2, the option contains 96 bits of the prefix.
> 
> Scenario 2: non-/96 prefix, no APL.
> The option length = 3, the last 32 bits of the option contains 8 bits
> of the prefix length + reserved bits.

> 
> Scenario3: /96 prefix, APL name exists.
> The option length is....well, I guess it would depend on the label
> length, right? So 3 or more.
> So the first 8 bits after the prefix length would be the APL label
> length, then the APL (with padding to the 8 octets if needed).
> 
> Scenario 4:  non-/96 prefix, APL name exists
> The same as scenario 3.
> 
> My concerns here are:
> 1) we are making the option parsing quite complicated just to
> accomodate a hypothetical use case of 'dual-stack network with NAT64';
> I'm afraid it might slow down the deployment.

> 2) the state machine is unclear to me:
> - does the presence of the APL part mean that now the host MUST use
> the DNS servers provided by the network to resolve the APL (remember,
> one of the benefit of providing pref64 is ability to remove
> dependencies on DNS64)? What if the host has DNS servers configured
> manually? How could the client tell the difference?
> 
> So far I'm still not convinced that it's worth doing (at least currently).
> If anything, I'd say the APL information should be in RDNSS option as
> it shares fate with the DNS.
> 
> Or am I missing smth/misunderstood your suggestion?
> 
>>> On 28 May 2019, at 06:29, Mark Andrews <marka@isc.org> wrote:
>>> 
>>> You use  an APL record to define which addresses are mapped/excluded  (the difference is where the negations goes and whether you include the /0 entries at the end normally) on a first match basis.
>>> 
>>> e.g.
>>> 
>>> APL !1:10.0.0.0/8 1:0.0.0.0/0
>>> 
>>> Not net 10 but everything else.
>>> 
>>> TYPE42 \#9 00 01 08 81 0a 00 01 00 00
>>> 
>>> The above is a mapping list not a exclude list.
>>> 
>>> You can also encode the IPv6 prefixes you want to ignore when determining if you are doing.  This is useful for when you want to be IPv6 internally but don’t have external connectivity  or you only have partial IPv6 connectivity or for ignoring the results of a seperate DNS64 mapping.
>>> 
>>> Both lists can be encoded in a single APL record. Also it is easy enough to encode the record in unknown record format by hand as the encoding is not hard to do.  See above.
>>> 
>>> --
>>> Mark Andrews
>>> 
>>>> On 28 May 2019, at 01:57, Michael Richardson <mcr+ietf@sandelman.ca> wrote:
>>>> 
>>>> 
>>>> I just watched the 6man recording on draft-ietf-6man-ra-pref64.
>>>> I am very enthusiastic about having this progress, because it enables DNSSEC
>>>> resolution to be done on the host.
>>>> (We just have to find a way in CAPPORT to shame
>>>> 
>>>> The document says:
>>>> 
>>>> In a network that provides both IPv4 and NAT64, it may be desirable
>>>> for certain IPv4 addresses not to be translated.  An example might be
>>>> private address ranges that are local to the network and should not
>>>> be reached through the NAT64.  This type of configuration cannot be
>>>> conveyed to hosts using this option, or through other NAT64 prefix
>>>> provisioning mechanisms such as [RFC7050] or [RFC7225].  This problem
>>>> does not apply in IPv6-only networks, because in such networks, the
>>>> host does not have an IPv4 address and cannot reach any IPv4
>>>> destinations without the NAT64.
>>>> 
>>>> And I guess I disagree with this in a subtle way, which Section 7
>>>> (multihoming) tries to deal with.   Maybe you could write:
>>>> 
>>>> In a provisioning domain that provides both IPv4 and NAT64, it may be desirable
>>>> for certain IPv4 addresses not to be translated.  An example might be
>>>> private address ranges that are local to the provisioning domain and should not
>>>> be reached through the NAT64.  This type of configuration cannot be
>>>> conveyed to hosts using this option, or through other NAT64 prefix
>>>> provisioning mechanisms such as [RFC7050] or [RFC7225].  This problem
>>>> does not apply to hosts that are provisioned in IPv6-only networks,
>>>> because in such networks, the host does not have an IPv4 address and
>>>> cannot reach any IPv4 destinations without the NAT64.
>>>> Section 7 deals with the multihoming sitution more.
>>>> 
>>>> ----
>>>> 
>>>> The slides had some optional stuff which I think is gone from the document.
>>>> Mark Andrews made some suggestions, which I did not understand what happened.
>>>> 
>>>> --
>>>> Michael Richardson <mcr+IETF@sandelman.ca>, Sandelman Software Works
>>>> -= IPv6 IoT consulting =-
>>>> 
>>>> 
>>>> 
>>>> --------------------------------------------------------------------
>>>> IETF IPv6 working group mailing list
>>>> ipv6@ietf.org
>>>> Administrative Requests: https://www.ietf.org/mailman/listinfo/ipv6
>>>> --------------------------------------------------------------------
>>> 
>>> --------------------------------------------------------------------
>>> IETF IPv6 working group mailing list
>>> ipv6@ietf.org
>>> Administrative Requests: https://www.ietf.org/mailman/listinfo/ipv6
>>> --------------------------------------------------------------------
>> 
>> --------------------------------------------------------------------
>> IETF IPv6 working group mailing list
>> ipv6@ietf.org
>> Administrative Requests: https://www.ietf.org/mailman/listinfo/ipv6
>> --------------------------------------------------------------------
> 
> 
> 
> -- 
> SY, Jen Linkova aka Furry

-- 
Mark Andrews, ISC
1 Seymour St., Dundas Valley, NSW 2117, Australia
PHONE: +61 2 9871 4742              INTERNET: marka@isc.org