DS-Lite DHCPv6: Dynamic Host Configuration Protocol for IPv6 (DHCPv6) Option for Dual-Stack Lite
A single DHCPv6 option that tells a Dual-Stack Lite home gateway where the provider's tunnel endpoint is.
Hankins, D. and T. Mrugalski, "Dynamic Host Configuration Protocol for IPv6 (DHCPv6) Option for Dual-Stack Lite", RFC 6334, DOI 10.17487/RFC6334, August 2011, <https://www.rfc-editor.org/info/rfc6334>.
@misc{rfc6334,
series = {Request for Comments},
number = 6334,
howpublished = {RFC 6334},
publisher = {RFC Editor},
doi = {10.17487/RFC6334},
url = {https://www.rfc-editor.org/info/rfc6334},
author = {D. Hankins and T. Mrugalski},
title = {{Dynamic Host Configuration Protocol for IPv6 (DHCPv6) Option for Dual-Stack Lite}},
pagetotal = 7,
year = 2011,
month = aug,
} RFC text
Contents
Internet Engineering Task Force (IETF) D. Hankins
Request for Comments: 6334 Google
Category: Standards Track T. Mrugalski
ISSN: 2070-1721 Gdansk University of Technology
August 2011
Dynamic Host Configuration Protocol for IPv6 (DHCPv6) Option
for Dual-Stack Lite
Abstract
This document specifies a DHCPv6 option that is meant to be used by a
Dual-Stack Lite Basic Bridging BroadBand (B4) element to discover the
IPv6 address of its corresponding Address Family Transition Router
(AFTR).
Status of This Memo
This is an Internet Standards Track document.
This document is a product of the Internet Engineering Task Force
(IETF). It represents the consensus of the IETF community. It has
received public review and has been approved for publication by the
Internet Engineering Steering Group (IESG). Further information on
Internet Standards is available in Section 2 of RFC 5741.
Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
http://www.rfc-editor.org/info/rfc6334.
Copyright Notice
Copyright (c) 2011 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1. Introduction ....................................................2
2. Requirements Language ...........................................2
3. The AFTR-Name DHCPv6 Option .....................................2
4. DHCPv6 Server Behavior ..........................................4
5. DHCPv6 Client Behavior ..........................................4
6. Security Considerations .........................................5
7. IANA Considerations .............................................6
8. Acknowledgements ................................................6
9. Normative References ............................................6
1. Introduction
Dual-Stack Lite [RFC6333] is a solution to offer both IPv4 and IPv6
connectivity to customers that are addressed only with an IPv6 prefix
(no IPv4 address is assigned to the attachment device). One of its
key components is an IPv4-over-IPv6 tunnel, commonly referred to as a
softwire. A DS-Lite "Basic Bridging BroadBand" (B4) device will not
know if the network it is attached to offers Dual-Stack Lite service,
and if it did would not know the remote endpoint of the tunnel to
establish a softwire.
To inform the B4 of the Address Family Transition Router's (AFTR)
location, a DNS [RFC1035] hostname may be used. Once this
information is conveyed, the presence of the configuration indicating
the AFTR's location also informs a host to initiate Dual-Stack Lite
(DS-Lite) service and become a softwire initiator.
To provide the conveyance of the configuration information, a single
DHCPv6 [RFC3315] option is used, expressing the AFTR's Fully
Qualified Domain Name (FQDN) to the B4 element.
The details of how the B4 establishes an IPv4-in-IPv6 softwire to the
AFTR are out of scope for this document.
2. Requirements Language
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].
3. The AFTR-Name DHCPv6 Option
The AFTR-Name option consists of option-code and option-len fields
(as all DHCPv6 options have), and a variable-length tunnel-endpoint-
name field containing a fully qualified domain name that refers to
the AFTR to which the client MAY connect.
The AFTR-Name option SHOULD NOT appear in any DHCPv6 messages other
than the following: Solicit, Advertise, Request, Renew, Rebind,
Information-Request, and Reply.
The format of the AFTR-Name option is shown in the following figure:
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
+-------------------------------+-------------------------------+
| OPTION_AFTR_NAME: 64 | option-len |
+-------------------------------+-------------------------------+
| |
| tunnel-endpoint-name (FQDN) |
| |
+---------------------------------------------------------------+
OPTION_AFTR_NAME: 64
option-len: Length of the tunnel-endpoint-name field in
octets.
tunnel-endpoint-name: A fully qualified domain name of the AFTR
tunnel endpoint.
Figure 1: AFTR-Name DHCPv6 Option Format
The tunnel-endpoint-name field is formatted as required in DHCPv6
[RFC3315] Section 8 ("Representation and Use of Domain Names").
Briefly, the format described is using a single octet noting the
length of one DNS label (limited to at most 63 octets), followed by
the label contents. This repeats until all labels in the FQDN are
exhausted, including a terminating zero-length label. Any updates to
Section 8 of DHCPv6 [RFC3315] also apply to encoding of this field.
An example format for this option is shown in Figure 2, which conveys
the FQDN "aftr.example.com.".
+------+------+------+------+------+------+------+------+------+
| 0x04 | a | f | t | r | 0x07 | e | x | a |
+------+------+------+------+------+------+------+------+------+
| m | p | l | e | 0x03 | c | o | m | 0x00 |
+------+------+------+------+------+------+------+------+------+
Figure 2: Example tunnel-endpoint-name
Note that in the specific case of the example tunnel-endpoint-name
(Figure 2), the length of the tunnel-endpoint-name is 18 octets, and
so an option-len field value of 18 would be used.
The option is validated by confirming that all of the following
conditions are met:
1. the option-len is greater than 3;
2. the option-len is less than or equal to the remaining number of
octets in the DHCPv6 packet;
3. the individual label lengths do not exceed the option length;
4. the tunnel-endpoint-name is of valid format as described in
DHCPv6 Section 8 [RFC3315];
5. there are no compression tags;
6. there is at least one label of nonzero length.
4. DHCPv6 Server Behavior
A DHCPv6 server SHOULD NOT send more than one AFTR-Name option. It
SHOULD NOT permit the configuration of multiple names within one
AFTR-Name option. Both of these conditions are handled as exceptions
by the client, so an operator using software that does not perform
these validations should be careful not to configure multiple domain
names.
RFC 3315 Section 17.2.2 [RFC3315] describes how a DHCPv6 client and
server negotiate configuration values using the Option Request option
(OPTION_ORO). As a convenience to the reader, we mention here that a
server will not reply with an AFTR-Name option if the client has not
explicitly enumerated it on its Option Request option.
5. DHCPv6 Client Behavior
A client that supports the B4 functionality of DS-Lite (defined in
[RFC6333]) and conforms to this specification MUST include
OPTION_AFTR_NAME on its OPTION_ORO.
Because it requires a DNS name for address resolution, the client MAY
also wish to include the OPTION_DNS_SERVERS [RFC3646] option on its
OPTION_ORO.
If the client receives the AFTR-Name option, it MUST verify the
option contents as described in Section 3.
Note that in different environments, the B4 element and DHCPv6 client
may be integrated, joined, or separated by a third piece of software.
For the purpose of this specification, we refer to the "B4 system"
when specifying implementation steps that may be processed at any
stage of integration between the DHCPv6 client software and the B4
element it is configuring.
If the B4 system receives more than one AFTR-Name option, it MUST use
only the first instance of that option.
If the AFTR-Name option contains more than one FQDN, as distinguished
by the presence of multiple root labels, the B4 system MUST use only
the first FQDN listed in the configuration.
The B4 system performs standard DNS resolution using the provided
FQDN to resolve a AAAA Resource Record, as defined in [RFC3596] and
STD 13 ([RFC1034], [RFC1035]).
If any DNS response contains more than one IPv6 address, the B4
system picks only one IPv6 address and uses it as a remote tunnel
endpoint for the interface being configured in the current message
exchange. The B4 system MUST NOT establish more than one DS-Lite
tunnel at the same time per interface. For a redundancy and high-
availability discussion, see Appendix A.3 ("High Availability") of
[RFC6333].
Note that a B4 system may have multiple network interfaces, and these
interfaces may be configured differently; some may be connected to
networks that call for DS-Lite, and some may be connected to networks
that are using normal dual stack or other means. The B4 system
should approach this specification on an interface-by-interface
basis. For example, if the B4 system is attached to multiple
networks that provide the AFTR-Name option, then the B4 system MUST
configure a tunnel for each interface separately, as each DS-Lite
tunnel provides IPv4 connectivity for each distinct interface. Means
to bind an AFTR-Name and DS-Lite tunnel configuration to a given
interface in a multiple-interface device are out of scope of this
document.
6. Security Considerations
This document does not present any new security issues, but as with
all DHCPv6-derived configuration state, it is completely possible
that the configuration is being delivered by a third party (Man in
the Middle). As such, there is no basis for trusting the access
level represented by the DS-Lite softwire connection, and DS-Lite
should therefore not bypass any security mechanisms such as IP
firewalls.
[RFC3315] discusses DHCPv6-related security issues.
[RFC6333] discusses DS-Lite-related security issues.
7. IANA Considerations
IANA has allocated a single DHCPv6 option code, 64, referencing this
document, delineating OPTION_AFTR_NAME.
8. Acknowledgements
The authors would like to thank Alain Durand, Rob Austein, Dave
Thaler, Paul Selkirk, Ralph Droms, Mohamed Boucadair, Roberta
Maglione, and Shawn Routhier for their valuable feedback and
suggestions. The authors acknowledge significant support for this
work, provided by Internet Systems Consortium, Inc.
This work has been partially supported by the Polish Ministry of
Science and Higher Education under the European Regional Development
Fund, Grant No. POIG.01.01.02-00-045/09-00 (Future Internet
Engineering Project).
9. Normative References
[RFC1034] Mockapetris, P., "Domain names - concepts and facilities",
STD 13, RFC 1034, November 1987.
[RFC1035] Mockapetris, P., "Domain names - implementation and
specification", STD 13, RFC 1035, November 1987.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC3315] Droms, R., Ed., Bound, J., Volz, B., Lemon, T., Perkins,
C., and M. Carney, "Dynamic Host Configuration Protocol
for IPv6 (DHCPv6)", RFC 3315, July 2003.
[RFC3596] Thomson, S., Huitema, C., Ksinant, V., and M. Souissi,
"DNS Extensions to Support IP Version 6", RFC 3596,
October 2003.
[RFC3646] Droms, R., Ed., "DNS Configuration options for Dynamic
Host Configuration Protocol for IPv6 (DHCPv6)", RFC 3646,
December 2003.
[RFC6333] Durand, A., Droms, R., Woodyatt, J., and Y. Lee, "Dual-
Stack Lite Broadband Deployments Following IPv4
Exhaustion", RFC 6333, August 2011.
Authors' Addresses
David W. Hankins
Google, Inc.
1600 Amphitheatre Parkway
Mountain View, CA 94043
USA
EMail: dhankins@google.com
Tomasz Mrugalski
Gdansk University of Technology
ul. Storczykowa 22B/12
Gdansk 80-177
Poland
Phone: +48 698 088 272
EMail: tomasz.mrugalski@eti.pg.gda.pl
ISO Plain Language
On this page
§1Why the Gateway Needs the Endpoint Name
Dual-Stack Lite, described in RFC 6333, is a way of offering both IPv4 and IPv6 connectivity to customers who are addressed only with an IPv6 prefix, so no IPv4 address is assigned to the attachment device. One of its key components is an IPv4-over-IPv6 tunnel, commonly called a softwire.
A Dual-Stack Lite B4 device, the Basic Bridging BroadBand element at the customer end, has two gaps in its knowledge. It does not know whether the network it is attached to offers Dual-Stack Lite service at all, and even if it did, it would not know the remote endpoint of the tunnel it would have to set up.
The RFC closes the second gap with a DNS hostname, the fully qualified domain name of the Address Family Transition Router (AFTR), which is the provider-side end of the tunnel. Once that information has been conveyed, the presence of the configuration also tells a host to start Dual-Stack Lite service and become a softwire initiator. The conveyance itself uses a single DHCPv6 option that expresses the AFTR's domain name to the B4 element. How the B4 then establishes the IPv4-in-IPv6 softwire to the AFTR is out of scope for this document.
Dual-Stack Lite lets a home router offer IPv4 over an IPv6-only line by putting IPv4 packets inside IPv6 packets. The router cannot do that until it knows the address of the provider's machine at the other end of the tunnel, and nothing in the network tells it.
This RFC passes that address over as a name, in the same kind of message a router already uses to get its address and its DNS server. The router then looks the name up with DNS to get the address it needs.
§3The AFTR-Name Option
The option has the option-code and option-len fields that every DHCPv6 option has, followed by a variable-length tunnel-endpoint-name field holding a fully qualified domain name that refers to the AFTR to which the client MAY connect. The option code is 64, and it SHOULD NOT appear in any DHCPv6 message other than Solicit, Advertise, Request, Renew, Rebind, Information-Request and Reply.
The name field follows the encoding required by DHCPv6 (RFC 3315) Section 8: a single octet giving the length of one DNS label, at most 63 octets, followed by the label contents, repeated for each label until the name is exhausted, including a terminating zero-length label. The RFC's own example carries the name aftr.example.com., which is 18 octets long, so the option-len value would be 18.
An implementation validates the option by confirming six conditions: the option-len is greater than 3, the option-len is less than or equal to the number of octets remaining in the DHCPv6 packet, the individual label lengths do not exceed the option length, the name is of the valid format described in DHCPv6 Section 8, there are no compression tags, and there is at least one label of non-zero length.
The option is short: a two-octet code, a two-octet length, and then the name of the provider's tunnel endpoint written in the encoding DHCPv6 uses for domain names, where each part of the name is preceded by its length.
Before using the name, the router checks six things: that the length field is plausible, that it fits inside the rest of the packet, that the parts of the name fit inside that length, that the encoding is the expected one, that nothing has been compressed, and that the name has at least one part with content.
| Field | Name | Size | Value | Description |
|---|---|---|---|---|
OPTION-CODE | OPTION_AFTR_NAME | 2 bytes | 64 | The DHCPv6 option code, 64. |
OPTION-LEN | option-len | 2 bytes | 18 | Length of the tunnel-endpoint-name field in octets. |
TUNNEL-ENDPOINT-NAME | tunnel-endpoint-name | 18 bytes | aftr.example.com. | The fully qualified domain name of the AFTR tunnel endpoint. Shown here with the RFC's example, aftr.example.com., which is 18 octets long. |
0x04 61 66 74 72 0x07 65 78 61 6d 70 6c 65 0x03 63 6f 6d 0x00§4What the DHCPv6 Server Does
A DHCPv6 server SHOULD NOT send more than one AFTR-Name option, and SHOULD NOT permit the configuration of multiple names within one AFTR-Name option. Both of these conditions are handled as exceptions by the client, so an operator using software that does not perform these validations should be careful not to configure multiple domain names.
DHCPv6 clients and servers negotiate configuration values with the Option Request option, as described in Section 17.2.2 of RFC 3315. The consequence for this option is that a server will not reply with an AFTR-Name option if the client has not explicitly enumerated it in its Option Request option.
The server is told to send at most one of these options and to put at most one name in it. If the software does not enforce that, the operator has to be careful, because the client will use only the first name it finds and ignore the rest.
The server also waits to be asked. A client has to list option 64 in its request for options, otherwise the server leaves it out of the reply.
§5What the Client Does
A client that supports the B4 functionality of Dual-Stack Lite and conforms to this specification MUST include OPTION_AFTR_NAME in its Option Request option. Because the client needs a DNS name for address resolution, it MAY also include the OPTION_DNS_SERVERS option (RFC 3646). If it receives the AFTR-Name option, it MUST verify the option contents as described in Section 3.
The RFC refers to the B4 element and the DHCPv6 client together as the B4 system, because in different environments they may be integrated, joined, or separated by a third piece of software. If the B4 system receives more than one AFTR-Name option, it MUST use only the first instance. If the option contains more than one fully qualified domain name, distinguished by the presence of multiple root labels, it MUST use only the first name listed.
The B4 system then performs standard DNS resolution of the given name to resolve an AAAA Resource Record, as defined in RFC 3596. If any DNS response contains more than one IPv6 address, the B4 system picks only one and uses it as the remote tunnel endpoint for the interface being configured in the current message exchange. It MUST NOT establish more than one Dual-Stack Lite tunnel at the same time per interface.
A B4 system may have several network interfaces, and each may be configured differently: some may be attached to networks that call for Dual-Stack Lite and some to networks using normal dual stack or other means. The RFC therefore asks that the specification be applied interface by interface. If a B4 system is attached to several networks that provide the AFTR-Name option, it MUST configure a tunnel for each interface separately, because each Dual-Stack Lite tunnel provides IPv4 connectivity for a distinct interface. The means of binding an AFTR-Name and the tunnel configuration to a given interface in a multi-interface device are out of scope.
The client asks for the option by name, so the server knows it wants one, and it may ask for the DNS server addresses in the same request. When the option arrives, the client checks it before using it.
The client keeps the first name it receives and ignores any others, then looks that name up with DNS to get an IPv6 address. If the lookup returns more than one address, it takes one of them and uses it as the far end of the tunnel. It runs only one tunnel per interface.
A router with several interfaces handles each one separately, because a Dual-Stack Lite tunnel carries IPv4 for one interface only.
- Request for optionsThe client lists option 64 in its Option Request option.
- Reply with AFTR-NameThe option carries the domain name of the AFTR tunnel endpoint.
- AAAA queryStandard DNS resolution of the name to an AAAA Resource Record.
- AAAA answerThe IPv6 address of the AFTR, used as the remote tunnel endpoint.
§6Security Considerations
The RFC presents no new security issues, but as with all DHCPv6-derived configuration state, it is possible that the configuration is being delivered by a third party, acting as a man in the middle. There is therefore no basis for trusting the access level represented by the Dual-Stack Lite softwire connection, and Dual-Stack Lite should not bypass any security mechanisms such as IP firewalls.
DHCPv6-related security issues are discussed in RFC 3315, and Dual-Stack Lite-related security issues are discussed in RFC 6333.
The document adds no new security rules. It does repeat the standing warning about DHCPv6: because anyone on the path can change the configuration, the tunnel that results cannot be treated as a trustworthy link, and Dual-Stack Lite must not be used to get around firewalls or other protections.
§7IANA Considerations
IANA has allocated a single DHCPv6 option code, 64, referencing this document, delineating OPTION_AFTR_NAME.
The option has one number in the DHCPv6 registry: 64, which is reserved for the AFTR name.