Draft Ietf Behave dns64 11
Draft Ietf Behave dns64 11
Bagnulo
Internet-Draft UC3M
Intended status: Standards Track A. Sullivan
Expires: April 4, 2011 Shinkuro
P. Matthews
Alcatel-Lucent
I. van Beijnum
IMDEA Networks
October 1, 2010
DNS64: DNS extensions for Network Address Translation from IPv6 Clients
to IPv4 Servers
draft-ietf-behave-dns64-11
Abstract
Copyright Notice
Copyright (c) 2010 IETF Trust and the persons identified as the
document authors. All rights reserved.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5
2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3. Background to DNS64-DNSSEC interaction . . . . . . . . . . . . 8
4. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 10
5. DNS64 Normative Specification . . . . . . . . . . . . . . . . 11
5.1. Resolving AAAA queries and the answer section . . . . . . 11
5.1.1. The answer when there is AAAA data available . . . . . 12
5.1.2. The answer when there is an error . . . . . . . . . . 12
5.1.3. Dealing with timeouts . . . . . . . . . . . . . . . . 12
5.1.4. Special exclusion set for AAAA records . . . . . . . . 13
5.1.5. Dealing with CNAME and DNAME . . . . . . . . . . . . . 13
5.1.6. Data for the answer when performing synthesis . . . . 13
5.1.7. Performing the synthesis . . . . . . . . . . . . . . . 14
5.1.8. Querying in parallel . . . . . . . . . . . . . . . . . 14
5.2. Generation of the IPv6 representations of IPv4
addresses . . . . . . . . . . . . . . . . . . . . . . . . 15
5.3. Handling other Resource Records and the Additional
Section . . . . . . . . . . . . . . . . . . . . . . . . . 16
5.3.1. PTR Resource Record . . . . . . . . . . . . . . . . . 16
5.3.2. Handling the additional section . . . . . . . . . . . 17
5.3.3. Other Resource Records . . . . . . . . . . . . . . . . 17
5.4. Assembling a synthesized response to a AAAA query . . . . 18
5.5. DNSSEC processing: DNS64 in validating resolver mode . . . 18
6. Deployment notes . . . . . . . . . . . . . . . . . . . . . . . 19
6.1. DNS resolvers and DNS64 . . . . . . . . . . . . . . . . . 19
6.2. DNSSEC validators and DNS64 . . . . . . . . . . . . . . . 20
6.3. DNS64 and multihomed and dual-stack hosts . . . . . . . . 20
6.3.1. IPv6 multihomed hosts . . . . . . . . . . . . . . . . 20
6.3.2. Accidental dual-stack DNS64 use . . . . . . . . . . . 21
6.3.3. Intentional dual-stack DNS64 use . . . . . . . . . . . 21
7. Deployment scenarios and examples . . . . . . . . . . . . . . 22
7.1. Example of An-IPv6-network-to-IPv4-Internet setup with
DNS64 in DNS server mode . . . . . . . . . . . . . . . . . 22
7.2. An example of an-IPv6-network-to-IPv4-Internet setup
with DNS64 in stub-resolver mode . . . . . . . . . . . . . 24
7.3. Example of IPv6-Internet-to-an-IPv4-network setup
DNS64 in DNS server mode . . . . . . . . . . . . . . . . . 25
8. Security Considerations . . . . . . . . . . . . . . . . . . . 27
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 28
10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 28
11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 28
12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 28
12.1. Normative References . . . . . . . . . . . . . . . . . . . 28
12.2. Informative References . . . . . . . . . . . . . . . . . . 29
Appendix A. Motivations and Implications of synthesizing AAAA
Resource Records when real AAAA Resource Records
exist . . . . . . . . . . . . . . . . . . . . . . . . 30
Authors’ Addresses . . . . . . . . . . . . . . . . . . . . . . . . 31
1. Introduction
2. Overview
Once the DNS64 has synthesized the AAAA RRs, the synthetic AAAA RRs
are passed back to the IPv6 initiator, which will initiate an IPv6
communication with the IPv6 address associated with the IPv4
receiver. The packet will be routed to an IPv6/IPv4 translator which
will forward it to the IPv4 network.
In general, the only shared state between the DNS64 and the IPv6/IPv4
translator is the Pref64::/n and an optional set of static
parameters. The Pref64::/n and the set of static parameters must be
configured to be the same on both; there is no communication between
the DNS64 device and IPv6/IPv4 translator functions. The mechanism
to be used for configuring the parameters of the DNS64 is beyond the
scope of this memo.
The last option is to place the DNS64 function in the end hosts,
coupled to the local (stub) resolver. In this case, the stub
resolver will try to obtain (real) AAAA RRs and in case they are not
available, the DNS64 function will synthesize AAAA RRs for internal
usage. This mode is compatible with some functions like DNSSEC
validation in the end host. The main drawback of this mode is its
deployability, since it requires changes in the end hosts. This mode
is called "DNS64 in stub-resolver mode". This is the second type of
DNS64 resolver.
If a query arrives at a vDNS64 device with the "DNSSEC OK" (DO) bit
set, the query originator is signaling that it understands DNSSEC.
The DO bit does not indicate that the query originator will validate
the response. It only means that the query originator can understand
responses containing DNSSEC data. Conversely, if the DO bit is
clear, that is evidence that the querying agent is not aware of
DNSSEC.
4. Terminology
This section provides definitions for the special terms used in the
document.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [RFC2119].
When the DNS64 receives a query for RRs of type AAAA and class IN, it
first attempts to retrieve non-synthetic RRs of this type and class,
either by performing a query or, in the case of an authoritative
server, by examining its own results. The query may be answered from
a local cache, if one is available. DNS64 operation for classes
other than IN is undefined, and a DNS64 MUST behave as though no
DNS64 function is configured.
If the query results in a response with RCODE other than 0 (No error
condition), then there are two possibilities. A result with RCODE=3
(Name Error) is handled according to normal DNS operation (which is
normally to return the error to the client). This stage is still
prior to any synthesis having happened, so a response to be returned
to the client does not need any special assembly than would usually
happen in DNS operation.
Any other RCODE is treated as though the RCODE were 0 (see sections
Section 5.1.6 and Section 5.1.7) and the answer section were empty.
This is because of the large number of different responses from
deployed name servers when they receive AAAA queries without a AAAA
record being available (see [RFC4074]). Note that this means, for
practical purposes, that several different classes of error in the
DNS are all treated as though a AAAA record is not available for that
owner name.
When assembling the answer section, any chains of CNAME or DNAME RRs
are included as part of the answer along with the synthetic AAAA (if
appropriate).
o The NAME field is set to the NAME field from the A record.
o The CLASS field is set to the original CLASS field, 1. Under this
specification, DNS64 for any CLASS other than 1 is undefined.
o The TTL field is set to the minimum of the TTL of the original A
RR and the SOA RR for the queried domain. (Note that in order to
obtain the TTL of the SOA RR, the DNS64 does not need to perform a
new query, but it can remember the TTL from the SOA RR in the
negative response to the AAAA query. If the SOA RR was not
delivered with the negative response to the AAAA query, then the
DNS64 SHOULD use a the minimum of the TTL of the original A RR and
600 seconds. It is possible instead to query explicitly for the
SOA RR and use the result of that query, but this will increase
query load and time to resolution for little additional benefit.)
This is in keeping with the approach used in negative caching
([RFC2308].
The DNS64 MAY perform the query for the AAAA RR and for the A RR in
parallel, in order to minimize the delay.
The input for the algorithm MUST be limited to the IPv4 address,
the IPv6 prefix (denoted Pref64::/n) used in the IPv6
representations and optionally a set of stable parameters that are
configured in the DNS64 and in the NAT64 (such as fixed string to
be used as a suffix).
algorithm MUST be the default algorithm used by the DNS64. While the
normative description of the algorithm is provided in
[I-D.ietf-behave-address-format], a sample description of the
algorithm and its application to different scenarios is provided in
Section 7 for illustration purposes.
If the address prefix does not match any Pref64::/n, then the DNS64
server MUST process the query as though it were any other query; i.e.
a recursive nameserver MUST attempt to resolve the query as though it
were any other (non-A/AAAA) query, and an authoritative server MUST
respond authoritatively or with a referral, as appropriate.
The query that is used as the basis for synthesis results either in
an error, an answer that can be used as a basis for synthesis, or an
empty (authoritative) answer. If there is an empty answer, then the
DNS64 responds to the original querying client with the answer the
DNS64 received to the original (initiator’s) query. Otherwise, the
response is assembled as follows.
The header fields are set according to the usual rules for recursive
or authoritative servers, depending on the role that the DNS64 is
serving. The question section is copied from the original
(initiator’s) query. The answer section is populated according to
the rules in Section 5.1.7. The authority and additional sections
are copied from the response to the final query that the DNS64
performed, and used as the basis for synthesis.
The final response from the DNS64 is subject to all the standard DNS
rules, including truncation [RFC1035] and EDNS0 handling [RFC2671].
The vDNS64 uses the presence of the DO and CD bits to make some
decisions about what the query originator needs, and can react
accordingly:
6. Deployment notes
point obtain IPv4-only glue records and attempt to use them for
resolution. The result that is returned will contain only A records,
and without the ability to perform the DNS64 function the resolver
will be unable to answer the necessary AAAA queries.
+---------------+ +-------------+
| i1 (IPv6)+----NAT64--------+IPv4 Internet|
| | +-------------+
| host |
| | +-------------+
| i2 (IPv6)+-----------------+IPv6 Internet|
+---------------+ +-------------+
Note that the issue is not that there are two interfaces, but that
there are two networks involved. The same results could be achieved
+---------------+ +-------------+
| i1 (IPv6)+----NAT64--------+IPv4 Internet|
| | +-------------+
| host |
| | +-------------+
| i2 (IPv4)+-----------------+IPv4 Internet|
+---------------+ +-------------+
+---------------+ +-------------+
| i1 (IPv6)+----NAT64--------+IPv4 Internet|
| | +-------------+
| host |
| |
| i2 (IPv4)+---(local LAN only)
+---------------+
+---------------------+ +---------------+
|IPv6 network | | IPv4 |
| | +-------------+ | Internet |
| |--| Name server |--| |
| | | with DNS64 | | +----+ |
| +----+ | +-------------+ | | H2 | |
| | H1 |---| | | +----+ |
| +----+ | +------------+ | 192.0.2.1 |
| |---| IPv6/IPv4 |--| |
| | | Translator | | |
| | +------------+ | |
| | | | |
+---------------------+ +---------------+
The figure shows an IPv6 node H1 and an IPv4 node H2 with IPv4
address 192.0.2.1 and FQDN h2.example.com.
For this example, assume the typical DNS situation where IPv6 hosts
have only stub resolvers, and they are configured with the IP address
of a name server that they always have to query and that performs
recursive lookups (henceforth called "the recursive nameserver").
2. The recursive name server resolves the query, and discovers that
there are no AAAA records for H2.
+---------------------+ +---------------+
|IPv6 network | | IPv4 |
| | +--------+ | Internet |
| |-----| Name |----| |
| +-----+ | | server | | +----+ |
| | H1 | | +--------+ | | H2 | |
| |with |---| | | +----+ |
| |DNS64| | +------------+ | 192.0.2.1 |
| +----+ |---| IPv6/IPv4 |--| |
| | | Translator | | |
| | +------------+ | |
| | | | |
+---------------------+ +---------------+
The figure shows an IPv6 node H1 implementing the DNS64 function and
an IPv4 node H2 with IPv4 address 192.0.2.1 and FQDN h2.example.com.
For this example, assume the typical DNS situation where IPv6 hosts
have only stub resolvers, and they are configured with the IP address
of a name server that they always have to query and that performs
recursive lookups (henceforth called "the recursive nameserver").
The recursive name server does not perform the DNS64 function.
2. The recursive DNS server resolves the query, and returns the
answer to H1. Because there are no AAAA records in the global
DNS for H2, the answer is empty.
In some cases, this scenario can be addressed without using any form
of DNS64 function. This is so because it is possible to assign a
fixed IPv6 address to each of the IPv4 nodes. Such an IPv6 address
would be constructed using the address transformation algorithm
defined in [I-D.ietf-behave-address-format] that takes as input the
Pref64::/96 and the IPv4 address of the IPv4 node. Note that the
IPv4 address can be a public or a private address; the latter does
not present any additional difficulty, since an NSP must be used as
Pref64::/96 (in this scenario the usage of the Well-Known prefix is
not supported as discussed in [I-D.ietf-behave-address-format]).
Once these IPv6 addresses have been assigned to represent the IPv4
nodes in the IPv6 Internet, real AAAA RRs containing these addresses
can be published in the DNS under the site’s domain. This is the
recommended approach to handle this scenario, because it does not
involve synthesizing AAAA records at the time of query.
[RFC2136] is used in the IPv4 site to update the A RRs for the IPv4
nodes, there are two options: One option is to modify the DNS server
that receives the dynamic DNS updates. That would normally be the
authoritative server for the zone. So the authoritative zone would
have normal AAAA RRs that are synthesized as dynamic updates occur.
The other option is modify all the authoritative servers to generate
synthetic AAAA records for a zone, possibly based on additional
constraints, upon the receipt of a DNS query for the AAAA RR. The
first option -- in which the AAAA is synthesized when the DNS update
message is received, and the data published in the relevant zone --
is recommended over the second option (i.e. the synthesis upon
receipt of the AAAA DNS query). This is because it is usually easier
to solve problems of misconfiguration when the DNS responses are not
being generated dynamically. However, it may be the case where the
primary server (that receives all the updates) cannot be upgraded for
whatever reason, but where a secondary can be upgraded in order to
handle the (comparatively small amount) of AAAA queries. In such
case, it is possible to use the DNS64 as described next. The DNS64
behavior that we describe in this section covers the case of
synthesizing the AAAA RR when the DNS query arrives.
+-----------+ +----------------------+
| | | IPv4 site |
| IPv6 | +------------+ | +----+ |
| Internet |----| IPv6/IPv4 |--|---| H2 | |
| | | Translator | | +----+ |
| | +------------+ | |
| | | | 192.0.2.1 |
| | +------------+ | |
| |----| Name server|--| |
| | | with DNS64 | | |
+-----------+ +------------+ | |
| | | |
+----+ | |
| H1 | +----------------------+
+----+
The figure shows an IPv6 node H1 and an IPv4 node H2 with IPv4
address 192.0.2.1 and FQDN h2.example.com.
the DNS64 function in the local name server. The name server that
implements the DNS64 function is the authoritative name server for
the local domain.
2. The local DNS server resolves the query (locally), and discovers
that there are no AAAA records for H2.
8. Security Considerations
9. IANA Considerations
10. Contributors
Dave Thaler
Microsoft
11. Acknowledgements
12. References
[I-D.ietf-behave-address-format]
Bao, C., Huitema, C., Bagnulo, M., Boucadair, M., and X.
Li, "IPv6 Addressing of IPv4/IPv6 Translators",
draft-ietf-behave-address-format-10 (work in progress),
August 2010.
[I-D.ietf-behave-v6v4-xlate-stateful]
Bagnulo, M., Matthews, P., and I. Beijnum, "Stateful
NAT64: Network Address and Protocol Translation from IPv6
Clients to IPv4 Servers",
draft-ietf-behave-v6v4-xlate-stateful-12 (work in
progress), July 2010.
[RFC4033] Arends, R., Austein, R., Larson, M., Massey, D., and S.
Rose, "DNS Security Introduction and Requirements",
RFC 4033, March 2005.
[RFC4034] Arends, R., Austein, R., Larson, M., Massey, D., and S.
Rose, "Resource Records for the DNS Security Extensions",
RFC 4034, March 2005.
[RFC4035] Arends, R., Austein, R., Larson, M., Massey, D., and S.
[I-D.ietf-behave-v6v4-framework]
Baker, F., Li, X., Bao, C., and K. Yin, "Framework for
IPv4/IPv6 Translation",
draft-ietf-behave-v6v4-framework-10 (work in progress),
August 2010.
[I-D.ietf-dnsop-default-local-zones]
Andrews, M., "Locally-served DNS Zones",
draft-ietf-dnsop-default-local-zones-14 (work in
progress), September 2010.
The motivation for synthesizing AAAA RRs when real AAAA RRs exist is
to support the following scenario:
The implication of including synthetic AAAA RRs when real AAAA RRs
exist is that translated connectivity may be preferred over native
In the "An IPv6 network to the IPv4 Internet" scenario, the host
will prefer translated connectivity if an NSP is used. If the
Well-Known Prefix defined in [I-D.ietf-behave-address-format] is
used, it will probably prefer native connectivity.
Authors’ Addresses
Marcelo Bagnulo
UC3M
Av. Universidad 30
Leganes, Madrid 28911
Spain
Phone: +34-91-6249500
Fax:
Email: [email protected]
URI: http://www.it.uc3m.es/marcelo
Andrew Sullivan
Shinkuro
4922 Fairmont Avenue, Suite 250
Bethesda, MD 20814
USA
Philip Matthews
Unaffiliated
600 March Road
Ottawa, Ontario
Canada
Phone: +34-91-6246245
Email: [email protected]