draft-ietf-dhc-dhcpv4-over-dhcpv6-02.txt   draft-ietf-dhc-dhcpv4-over-dhcpv6-03.txt 
DHC Working Group Q. Sun DHC Working Group Q. Sun
Internet-Draft Y. Cui Internet-Draft Y. Cui
Intended status: Standards Track Tsinghua University Intended status: Standards Track Tsinghua University
Expires: April 21, 2014 M. Siodelski Expires: May 26, 2014 M. Siodelski
ISC ISC
S. Krishnan S. Krishnan
Ericsson Ericsson
I. Farrer I. Farrer
Deutsche Telekom AG Deutsche Telekom AG
October 18, 2013 November 22, 2013
DHCPv4 over DHCPv6 Transport DHCPv4 over DHCPv6 Transport
draft-ietf-dhc-dhcpv4-over-dhcpv6-02 draft-ietf-dhc-dhcpv4-over-dhcpv6-03
Abstract Abstract
IPv4 connectivity is still needed as networks migrate towards IPv6. IPv4 connectivity is still needed as networks migrate towards IPv6.
Users require IPv4 configuration even if the uplink to their service Users require IPv4 configuration even if the uplink to their service
provider supports IPv6 only. This document describes a mechanism for provider supports IPv6 only. This document describes a mechanism for
obtaining IPv4 configuration information dynamically in IPv6 networks obtaining IPv4 configuration information dynamically in IPv6 networks
by carrying DHCPv4 messages over DHCPv6 transport. Two new DHCPv6 by carrying DHCPv4 messages over DHCPv6 transport. Two new DHCPv6
messages as well as a new DHCPv6 option are defined for the purpose messages as well as new DHCPv6 options are defined for the purpose of
of conveying DHCPv4 messages through IPv6 networks. conveying DHCPv4 messages through IPv6 networks.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on April 21, 2014. This Internet-Draft will expire on May 26, 2014.
Copyright Notice Copyright Notice
Copyright (c) 2013 IETF Trust and the persons identified as the Copyright (c) 2013 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 24 skipping to change at page 2, line 24
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Requirements Language . . . . . . . . . . . . . . . . . . . . 3 2. Requirements Language . . . . . . . . . . . . . . . . . . . . 3
3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3
4. Architecture Overview . . . . . . . . . . . . . . . . . . . . 3 4. Architecture Overview . . . . . . . . . . . . . . . . . . . . 3
5. New DHCPv6 Messages . . . . . . . . . . . . . . . . . . . . . 5 5. New DHCPv6 Messages . . . . . . . . . . . . . . . . . . . . . 5
5.1. Message Types . . . . . . . . . . . . . . . . . . . . . . 5 5.1. Message Types . . . . . . . . . . . . . . . . . . . . . . 5
5.2. Message Formats . . . . . . . . . . . . . . . . . . . . . 5 5.2. Message Formats . . . . . . . . . . . . . . . . . . . . . 5
5.3. Boot-request-v6 Message Flags . . . . . . . . . . . . . . 6 5.3. Boot-request-v6 Message Flags . . . . . . . . . . . . . . 6
5.4. Boot-reply-v6 Message Flags . . . . . . . . . . . . . . . 6 5.4. Boot-reply-v6 Message Flags . . . . . . . . . . . . . . . 6
6. DHCPv6 Options . . . . . . . . . . . . . . . . . . . . . . . 6 6. New DHCPv6 Options . . . . . . . . . . . . . . . . . . . . . 7
6.1. BOOTP Message Option Format . . . . . . . . . . . . . . . 6 6.1. BOOTP Message Option Format . . . . . . . . . . . . . . . 7
6.2. DHCPv4-over-DHCPv6 Enable Option Format . . . . . . . . . 7 6.2. DHCPv4-over-DHCPv6 Enable Option Format . . . . . . . . . 7
6.3. 4o6 Servers Address Option Format . . . . . . . . . . . . 8 6.3. 4o6 Server Address Option Format . . . . . . . . . . . . 8
7. Use of the Boot-request-v6 Unicast Flag . . . . . . . . . . . 8 7. Use of the Boot-request-v6 Unicast Flag . . . . . . . . . . . 8
8. Client Behavior . . . . . . . . . . . . . . . . . . . . . . . 9 8. 4o6 DHCP Client Behavior . . . . . . . . . . . . . . . . . . 9
9. Relay Agent Behavior . . . . . . . . . . . . . . . . . . . . 10 9. Relay Agent Behavior . . . . . . . . . . . . . . . . . . . . 10
10. 4o6 Server Behavior . . . . . . . . . . . . . . . . . . . . . 11 10. 4o6 DHCP Server Behavior . . . . . . . . . . . . . . . . . . 11
11. Security Considerations . . . . . . . . . . . . . . . . . . . 11 11. Security Considerations . . . . . . . . . . . . . . . . . . . 11
12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12
13. Contributors List . . . . . . . . . . . . . . . . . . . . . . 11 13. Contributors List . . . . . . . . . . . . . . . . . . . . . . 12
14. References . . . . . . . . . . . . . . . . . . . . . . . . . 12 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 12
14.1. Normative References . . . . . . . . . . . . . . . . . . 12 14.1. Normative References . . . . . . . . . . . . . . . . . . 12
14.2. Informative References . . . . . . . . . . . . . . . . . 12 14.2. Informative References . . . . . . . . . . . . . . . . . 13
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 13
1. Introduction 1. Introduction
As the migration towards IPv6 continues, IPv6-only networks will As the migration towards IPv6 continues, IPv6-only networks will
become more prevalent. At the same time, IPv4 connectivity will become more prevalent. At the same time, IPv4 connectivity will
continue to be provided as a service over IPv6-only networks. In continue to be provided as a service over IPv6-only networks. In
addition to providing IPv4 addresses for clients of this service, addition to providing IPv4 addresses for clients of this service,
other IPv4 configuration parameters may also need to be provided other IPv4 configuration parameters may also need to be provided
(e.g. addresses of IPv4-only services). (e.g. addresses of IPv4-only services).
By conveying DHCPv4 messages over DHCPv6 transport, this document This document describes a transport mechanism to carry DHCPv4
describes a mechanism for the dynamic provisioning of IPv4 addresses messages using DHCPv6 protocol, for the dynamic provisioning of IPv4
and other configuration parameters. The mechanism leverages existing addresses and other DHCPv4 specific configuration parameters across
infrastructure for DHCPv4, e.g. failover, DNS updates, leasequery, IPv6-only networks. It leverages the existing infrastructure for
etc. This mechanism is suitable for stateful allocation and DHCPv4, e.g. failover, DNS updates, leasequery, etc.
management of IPv4 addresses (dynamic leasing) and other IPv4
configuration parameters across IPv6-only networks.
2. Requirements Language 2. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119]. document are to be interpreted as described in [RFC2119].
3. Terminology 3. Terminology
This document makes use of the following terms: This document makes use of the following terms:
DHCPv4-over-DHCPv6: A protocol described in this document, which is 4o6 DHCP Client: A DHCP client which supports both DHCPv6
used to carry DHCPv4 messages encapsulated in protocol [RFC3315] as well as the DHCPv4 over
DHCPv6 messages. DHCPv6 protocol described in this document.
Such a client is capable to request its IPv6
configuration using DHCPv6 and IPv4
configuration using DHCPv4 over DHCPv6.
DHCP client: The 'DHCP client' in this document consists of 4o6 DHCP Server: A DHCP server that is capable of processing
both DHCPv4 and DHCPv6 client engines. The DHCPv4 packets encapsulated in the BOOTP
client is able to request IPv6 configuration Message option (defined below).
information through DHCPv6, as well as to
request IPv4 configuration information using
DHCPv4-over-DHCPv6 transport.
4o6 Server: A DHCP server capable of processing DHCPv4 CPE: Customer Premises Equipment (also known as
packets wrapped in the DHCPv6 option: BOOTP Customer Provided Equipment), which provides
Message Option (defined below). the access of devices connected to Local Area
Network (typically at customer's site/home) to
Internet Service Provider's network.
DHCPv4 over DHCPv6: A protocol described in this document, which is
used to carry DHCPv4 messages in the payload of
DHCPv6 messages.
4. Architecture Overview 4. Architecture Overview
The architecture described in this document addresses a typical use The architecture described in this document addresses a typical use
case, where a DHCP client's uplink supports IPv6 only and the Service case, where a DHCP client's uplink supports IPv6 only and the Service
Provider's network supports IPv6 and limited IPv4 services. In this Provider's network supports IPv6 and limited IPv4 services. In this
scenario, the client can only use the IPv6 network to access IPv4 scenario, the client can only use the IPv6 network to access IPv4
services and so it must configure IPv4 services using IPv6 as the services. So it must configure IPv4 services using IPv6 as the
underlying transport protocol. underlying network protocol.
Although the purpose of this document is to address the problem of Although the purpose of this document is to address the problem of
communication between DHCPv4 client and DHCPv4 server, the mechanism communication between the DHCPv4 client and the DHCPv4 server, the
that it describes does not restrict the transported messages types mechanism that it describes does not restrict the transported
only to DHCPv4. BOOTP messages can be transported using the same messages types only to DHCPv4. As the DHCPv4 message is a special
mechanism. type of the BOOTP message, BOOTP messages can also be transported
using the same mechanism.
DHCP clients can be running on CPE devices, end hosts or any other DHCP clients can be running on CPE devices, end hosts or any other
device which supports the DHCP client function. At the time of device which supports the DHCP client function. At the time of
writing, DHCP clients on CPE devices are easier to modify compared to writing, DHCP clients on CPE devices are easier to modify compared to
those implemented on end hosts. As a result, this document uses the those implemented on end hosts. As a result, this document uses the
CPE as an example for describing the mechanism. This does not CPE as an example for describing the mechanism. This does not
preclude any end-host, or other device requiring IPv4 configuration, preclude any end-host, or other device requiring IPv4 configuration,
from implementing the mechanism in the future. from implementing the mechanism in the future.
This mechanism works by carrying DHCPv4 messages encapsulated within This mechanism works by carrying DHCPv4 messages encapsulated within
DHCPv6 messages. Figure 1, below, illustrates one possible DHCPv6 messages. Figure 1, below, illustrates one possible
deployment architecture. deployment architecture.
The DHCP client implements a new DHCPv6 message called Boot- The 4o6 DHCP client implements a new DHCPv6 message called Boot-
request-v6, which contains a new option called BOOTP Message Option. request-v6, which contains a new option called BOOTP Message option.
The format of this option is described in Section 6.1. The format of this option is described in Section 6.1.
The DHCPv6 packet can be transmitted either via Relay Agents or The DHCPv6 message can be transmitted either via DHCPv6 Relay Agents
directly to the 4o6 Server. The server replies with a DHCPv6 or directly to the 4o6 DHCP Server. The server replies with a Boot-
response, which is a new DHCPv6 message called Boot-reply-v6. This reply-v6 message, which is a new DHCPv6 message type. This message
message carries DHCPv4 response wrapped with the BOOTP Message carries the DHCPv4 response encapsulated in the BOOTP Message option.
Option.
_____________ _____________ _____________ _____________
/ \ / \ / \ / \
| | | | | | | |
+--------+-+ IPv6 +-+-----------+-+ IPv6 +-+--------+ +--------+-+ IPv6 +-+-----------+-+ IPv6 +-+--------+
| DHCP | network | DHCP | network | 4o6 | | 4o6 DHCP | network | DHCPv6 | network | 4o6 DHCP |
| Client +---------+ Relay Agent +---------+ Server | | Client +---------+ Relay Agent +---------+ Server |
| (on CPE) | | | | | | (on CPE) | | | | |
+--------+-+ +-+-----------+-+ +-+--------+ +--------+-+ +-+-----------+-+ +-+--------+
| | | | | | | |
\_____________/ \_____________/ \_____________/ \_____________/
Figure 1: Architecture Overview Figure 1: Architecture Overview
By default, the DHCPv4-over-DHCPv6 is disabled on the client. Before By default, the DHCPv4-over-DHCPv6 function MUST be disabled on the
a client can use this protocol it MUST obtain the necessary IPv6 client. Before the client can use DHCPv4 over DHCPv6, it MUST obtain
configuration. If the client is configured to use DHCPv6 to obtain the IPv6 configuration. It requests the DHCPv4-over-DHCPv6 Enable
its IPv6 configuration, the DHCPv6 server MAY include the DHCPv4 option by sending its code in Option Request Option (ORO) described
-over-DHCPv6 Enable Option in its Reply message to indicate that in [RFC3315]. The DHCPv6 server includes the DHCPv4-over-DHCPv6
client SHOULD use the DHCPv4-over-DHCPv6 protocol to obtain Enable option in response to a client's request to instruct the
additional configuration. The format of the DHCPv4-over-DHCPv6 client to use DHCPv4 over DHCPv6 for IPv4 configuration. The format
Enable Option is described in Section 6.2. of the DHCPv4-over-DHCPv6 Enable option is described in Section 6.2.
Typically, a client communicates with the 4o6 Servers using well Typically, a 4o6 DHCP client communicates with the 4o6 DHCP servers
known All_DHCP_Relay_Agents_and_Servers multicast address. If a using well-known All_DHCP_Relay_Agents_and_Servers multicast address.
DHCPv6 server is configured to do so, it MAY send unicast addresses
of the 4o6 Servers to the client during the client's configuration Client SHOULD request the 4o6 Server Address Option from a DHCPv6
using DHCPv6. The unicast addresses are carried in the 4o6 Server server and the server may be configured to respond to the client with
Addresses Option encapsulated in the Reply message. The 4o6 Server one such option that contains one or more unicast addresses of the
Addresses Option's format is defined in Section 6.3. 4o6 DHCP Servers. The server includes 4o6 Server Address Option in
Advertise and Reply messages. The format of the option is defined in
Section 6.3.
5. New DHCPv6 Messages 5. New DHCPv6 Messages
There are two new DHCPv6 messages defined in this document which There are two new DHCPv6 messages defined in this document which
carry DHCPv4 messages between a client and a server using DHCPv6 carry DHCPv4 messages between a client and a server using DHCPv6
protocol: Boot-request-v6 and Boot-reply-v6. This section describes protocol: Boot-request-v6 and Boot-reply-v6. This section describes
structures of these messages. the structures of these messages.
5.1. Message Types 5.1. Message Types
The following new message types are defined in this document: BOOTREQUESTV6 (TBD): Identifies a Boot-request-v6 message. A 4o6
DHCP client sends this message to a 4o6 DHCP
BOOTREQUESTV6 (TBD): Identifies a Boot-request-v6 message. A client server. The BOOTP Message Option carried by
sends this message to a server. The BOOTP this message contains a BOOTREQUEST message
Message Option carried by this message contains that the 4o6 DHCP client uses to request IPv4
a BOOTREQUEST message that the client uses to configuration parameters from the server.
request IPv4 configuration parameters from the
server.
BOOTREPLYV6 (TBD): Identifies a Boot-reply-v6 message. A server BOOTREPLYV6 (TBD): Identifies a Boot-reply-v6 message. A 4o6 DHCP
sends this message to a client. It contains a server sends this message to a 4o6 DHCP client.
BOOTP Message Option carrying a BOOTREPLY It contains a BOOTP Message Option carrying a
message in response to a BOOTREQUEST received BOOTREPLY message in response to a BOOTREQUEST
by the server in the BOOTP Message Option of received by the server in the BOOTP Message
the Boot-request-v6 message. Option of the Boot-request-v6 message.
5.2. Message Formats 5.2. Message Formats
Both DHCPv6 messages defined in this document share the following Both DHCPv6 messages defined in this document share the following
format: format:
0 1 2 3 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 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| msg-type | flags | | msg-type | flags |
skipping to change at page 5, line 51 skipping to change at page 6, line 7
| | | |
. options . . options .
. (variable) . . (variable) .
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 2: Architecture Overview Figure 2: Architecture Overview
msg-type Identifies message type. It can be either msg-type Identifies message type. It can be either
BOOTREQUESTV6 (TBD) or BOOTREPLYV6 (TBD) which BOOTREQUESTV6 (TBD) or BOOTREPLYV6 (TBD) which
corresponds to the Boot-request-v6 or Boot-reply-v6 corresponds to the Boot-request-v6 or Boot-reply-v6,
respectively. respectively.
flags Specifies flags which provide additional information flags Specifies flags which provide additional information
required by the server to process a DHCPv4 message required by the server to process a DHCPv4 message
wrapped in Boot-request-v6 Message, or required by encapsulated in Boot-request-v6 message, or required
the client to process DHCPv4 message wrapped in Boot- by the client to process DHCPv4 message encapsulated
reply-v6 Message. in Boot-reply-v6 message.
options Options carried by the message and described in options The options carried by the message. The BOOTP
Section 6. Message Option described in Section 6.1 MUST be
carried by the message.
5.3. Boot-request-v6 Message Flags 5.3. Boot-request-v6 Message Flags
The "flags" field of the Boot-request-v6 is used to carry additional The "flags" field of the Boot-request-v6 is used to carry additional
information which may be used by the server to process the information which may be used by the server to process the
encapsulated DHCPv4 message. Currently only one bit of this field is encapsulated DHCPv4 message. Currently only one bit of this field is
used. Remaining bits are reserved for the future use. Currently the used. Remaining bits are reserved for the future use. The "flags"
"flags" field has the following format: field has the following format:
0 1 2 0 1 2
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 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|U| Reserved | |U| Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 3: Boot-request-v6 flags format Figure 3: Boot-request-v6 flags format
U Unicast Flag. If it is set to 1, it indicates that U Unicast Flag. If set to 1, it indicates that the
the DHCPv4 message encapsulated with the Boot- DHCPv4 message encapsulated with the Boot-request-v6
request-v6 message would be sent to a unicast address message would be sent to a unicast address if it was
if it was sent using IPv4. If this flag is set to 0 sent using IPv4. If this flag is set to 0, it
it indicates that the DHCPv4 message would be sent to indicates that the DHCPv4 message would be sent to
broadcast address if it was sent using IPv4. broadcast address if it was sent using IPv4.
Reserved Bits reserved for future use. A client which doesn't Reserved Bits reserved for future use. A client that doesn't
implement future extensions using these bits MUST set implement future extensions using these bits MUST set
them to 0. them to 0.
5.4. Boot-reply-v6 Message Flags 5.4. Boot-reply-v6 Message Flags
This document introduces no flags to be carried in the "flags" field This document introduces no flags to be carried in the "flags" field
of the Boot-reply-v6 message. They are all reserved for the future of the Boot-reply-v6 message. They are all reserved for the future
use. Server MUST set all bits of this field to 0. use. The 4o6 Server MUST set all bits of this field to 0 and the 4o6
client MUST ignore the content in this field.
6. DHCPv6 Options 6. New DHCPv6 Options
6.1. BOOTP Message Option Format 6.1. BOOTP Message Option Format
The BOOTP Message option carries a BOOTP message that is sent by the The BOOTP Message option carries a BOOTP message that is sent by the
client or the server. Such BOOTP messages exclude any IP or UDP client or the server. Such BOOTP messages exclude any IP or UDP
headers. headers.
The format of the BOOTP Message Option is: The format of the BOOTP Message Option is:
0 1 2 3 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 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_BOOTP_MSG | option-len | | OPTION_BOOTP_MSG | option-len |
skipping to change at page 7, line 23 skipping to change at page 7, line 28
| OPTION_BOOTP_MSG | option-len | | OPTION_BOOTP_MSG | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
. BOOTP-message . . BOOTP-message .
. . . .
. . . .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 4: BOOTP Message Option Format Figure 4: BOOTP Message Option Format
option-code OPTION_BOOTP_MSG (TBD) option-code OPTION_BOOTP_MSG (TBD).
option-len Length of BOOTP message option-len Length of BOOTP message.
BOOTP-message The BOOTP message sent by the client or the server. BOOTP-message The BOOTP message sent by the client or the server.
In a Boot-request-v6 message it contains a In a Boot-request-v6 message it contains a
BOOTREQUEST message sent by a client. In a Boot- BOOTREQUEST message sent by a client. In a Boot-
reply-v6 message it contains a BOOTREPLY message sent reply-v6 message it contains a BOOTREPLY message sent
by a server in response to a client. by a server in response to a client.
6.2. DHCPv4-over-DHCPv6 Enable Option Format 6.2. DHCPv4-over-DHCPv6 Enable Option Format
The DHCPv4-over-DHCPv6 Enable Option indicates that the client SHOULD The DHCPv4-over-DHCPv6 Enable option is sent by the DHCPv6-only
enable the DHCPv4-over-DHCPv6 function. server to signal that the client SHOULD use DHCPv4 over DHCPv6 to
obtain IPv4 configuration. The server includes this option if it is
requested by the client.
The format of the DHCPv4-over-DHCPv6 Enable Option is: The format of the DHCPv4-over-DHCPv6 Enable option is:
0 1 2 3 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 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_DHCP4_O_DHCP6_ENABLE | option-len | | OPTION_DHCP4_O_DHCP6_ENABLE | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 5: DHCPv4-over-DHCPv6 Enable Option Format Figure 5: DHCPv4-over-DHCPv6 Enable Option Format
option-code OPTION_DHCP4_O_DHCP6_ENABLE (TBD) option-code OPTION_DHCP4_O_DHCP6_ENABLE (TBD).
option-len 0 option-len 0
6.3. 4o6 Servers Address Option Format 6.3. 4o6 Server Address Option Format
The 4o6 Servers Address Option carries unicast IPv6 addresses of the The 4o6 Server Address option carries one or more unicast IPv6
4o6 Servers. addresses of the 4o6 DHCP Server(s). The DHCPv6-only server includes
this option if it is requested by the client.
The format of the 4o6 Servers Address Option is: The format of the 4o6 Server Address option is:
0 1 2 3 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 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_DHCP4_O_DHCP6_SERVERS | option-len | | OPTION_DHCP4_O_DHCP6_SERVER | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | |
. IPv6 Address(es) . . IPv6 Address(es) .
. . . .
. . . .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 6: 4o6 Servers Address Option Format Figure 6: 4o6 Servers Address Option Format
option-code OPTION_DHCP4_O_DHCP6_SERVERS (TBD) option-code OPTION_DHCP4_O_DHCP6_SERVER (TBD).
option-len Length of the IPv6 address(es), i.e. integer times option-len Length of the IPv6 address(es) carried by the option,
of 16. i.e. multiple of 16 octets.
IPv6 Address The IPv6 address(es) of the 4o6 Server(s). IPv6 Address One or more IPv6 addresses of the 4o6 DHCP Server(s).
7. Use of the Boot-request-v6 Unicast Flag 7. Use of the Boot-request-v6 Unicast Flag
A DHCPv4 client conforming to the [RFC2131] may send its DHCPREQUEST A DHCPv4 client conforming to the [RFC2131] may send its DHCPREQUEST
message to either broadcast or unicast address depending on its message to either broadcast or unicast address depending on its
state. For example, the client in the RENEWING state will use a state. For example, the client in the RENEWING state uses a unicast
unicast address to contact a server and renew its lease. The client address to contact a DHCPv4 server to renew its lease. The client in
in the REBINDING state MUST use a broadcast address. If there is a the REBINDING state uses a broadcast address. If there is a DHCPv4
relay agent in the middle, a client in the RENEWING state may send a relay agent in the middle, a client in the RENEWING state may send a
DHCPREQUEST message to the unicast address of the relay agent. In DHCPREQUEST message to the unicast address of the relay agent. In
such case the server can't find out whether client sent a message to such case the server can't find out whether the client sent a message
a unicast or broadcast address and thus it can't determine the to a unicast or broadcast address and thus it can't determine the
client's state. [RFC5010] introduced the "Flags Suboption" which client's state. [RFC5010] introduced the "Flags Suboption" which
relay agents add to relayed messages to indicate whether broadcast or relay agents add to relayed messages to indicate whether broadcast or
unicast was used by the client. unicast was used by the client.
The DHCPv4-over-DHCPv6 protocol uses IPv6 to deliver DHCPv4 messages In DHCPv4 over DHCPv6, IPv6 is used to deliver DHCPv4 messages to the
to the server. There is no relation between the outer IPv6 address 4o6 DHCP Server. There is no relation between the outer IPv6 address
and the inner DHCPv4 message. So the server is not able to know and the inner DHCPv4 message. So the server is not able to know
whether the DHCPv4 messages should have been sent using broadcast or whether the DHCPv4 messages should have been sent using broadcast or
unicast in IPv4 by checking the IPv6 address. This is similar to the unicast in IPv4 by checking the IPv6 address. This is similar to the
case [RFC5010] handled. case addressed by the [RFC5010].
In order to allow the server to determine the client's state, the In order to allow the server to determine the client's state, the
"Unicast" flag is carried in the Boot-request-v6 message. Client "Unicast" flag is carried in the Boot-request-v6 message. Client
MUST set this flag to 1 when the DHCPv4 message would have been sent MUST set this flag to 1 when the DHCPv4 message would have been sent
to the unicast address if using DHCPv4 over IPv4. This flag MUST be to the unicast address if using DHCPv4 over IPv4. This flag MUST be
set to 0 if the DHCPv4 client would have sent the message to the set to 0 if the DHCPv4 client would have sent the message to the
broadcast address in IPv4. The choice whether a given message should broadcast address in IPv4. The choice whether a given message should
be sent to a broadcast or unicast address MUST be made based on the be sent to a broadcast or unicast address MUST be made based on the
[RFC2131] and its extensions. [RFC2131] and its extensions.
8. Client Behavior 8. 4o6 DHCP Client Behavior
The DHCP client by default doesn't use DHCPv4-over-DHCPv6 protocol to The DHCPv4-over-DHCPv6 function MUST be disabled by default. The
obtain its DHCPv4 configuration. Client MUST obtain its IPv6 client MUST obtain its IPv6 configuration before using DHCPv4 over
configuration before it MAY use DHCPv4-over-DHCPv6 to obtain DHCPv4 DHCPv6. The client that intends to use DHCPv4 over DHCPv6 MUST
configuration. If IPv6 configuration is obtained using DHCPv6 as request the DHCPv4-over-DHCPv6 Enable Option and SHOULD request the
described in [RFC3315], client SHOULD request the DHCPv4-over-DHCPv6 4o6 Server Address Option in the Option Request Option (ORO) in every
Enable Option and the 4o6 Server Addresses Option in the Option Solicit, Request, Renew and Information-request messages. The 4o6
Request Option (ORO) to check if it SHOULD use DHCPv4-over-DHCPv6. DHCP client MUST NOT request the DHCPv4-over-DHCPv6 Enable Option nor
the 4o6 Server Address Option in the Boot-request-v6 message.
The DHCPv6 server MAY include these options in the Reply message sent The DHCPv6 server MAY include these options in the responses to the
to the client. The client determines how to launch the DHCPv4-over- client. The client determines how to enable the DHCPv4-over-DHCPv6
DHCPv6 function based on the presence / absence of these two options: function based on the presence / absence of the two options:
o If the client doesn't receive the DHCPv4-over-DHCPv6 Enable o If the client doesn't receive the DHCPv4-over-DHCPv6 Enable
Option, it SHOULD NOT enable the DHCPv4 over DHCPv6 function. option, it MUST NOT enable the DHCPv4-over-DHCPv6 function. In
the case where the DHCPv4 over DHCPv6 service is running, the
client MUST disable the function.
o If the client receives the DHCPv4-over-DHCPv6 Enable Option but no o If the client receives the DHCPv4-over-DHCPv6 Enable Option but no
4o6 Servers Address Option, it SHOULD enable the DHCPv4-over- 4o6 Servers Address Option, it SHOULD enable the DHCPv4-over-
DHCPv6 function, but use IPv6 All_DHCP_Relay_Agents_and_Servers DHCPv6 function and use IPv6 All_DHCP_Relay_Agents_and_Servers
multicast address to communicate with the servers or relays as multicast address to communicate with servers and relays.
described above.
o If the client receives both options, it SHOULD enable the DHCPv4 o If the client receives both options, it SHOULD enable the DHCPv4
-over-DHCPv6 function, and send requests to all unicast addresses -over-DHCPv6 function and send requests to the unicast address(es)
conveyed by the 4o6 Server Addresses Option. in the 4o6 Server Address Option.
If the client is instructed by the DHCPv6 server to use DHCPv4-over- o If the client only receives 4o6 Server Address Option, the client
DHCPv6 function it SHOULD generate a DHCPv4 message to obtain MUST ignore the 4o6 Server Address Option and MUST NOT enable the
configuration from the 4o6 Server. This message is stored verbatim DHCPv4-over-DHCPv6 function.
in the BOOTP Message Option carried by the Boot-request-v6 message.
The client MUST put exactly one BOOTP Message Option into a single
Boot-request-v6 message.
A client MUST set the Unicast flag as specified in Section 7. The client supporting DHCPv4 over DHCPv6 SHOULD use Information
Refresh Time Option [RFC4242] to refresh the status of DHCPv4-over-
DHCPv6 service as well as other DHCPv6 configuration data.
If the client has not received a 4o6 Server Addresses Option from the The client signaled by the server to use DHCPv4 over DHCPv6 SHOULD
DHCPv6 server, it transmits the Boot-request-v6 message as specified cease to send DHCPv4 messages using DHCP protocol described in
in Section 13 of [RFC3315]. If the client received this option, it [RFC2131] and use the DHCPv4 over DHCPv6 to request IPv4
MUST send Boot-request-v6 message to all unicast addresses listed in configuration from the 4o6 DHCP Server. The DHCPv4 message is stored
the received option. verbatim in the BOOTP Message option carried by the Boot-request-v6
message. The client MUST put exactly one BOOTP Message option into a
single Boot-request-v6 message.
When a client receives a Boot-reply-v6 message, it MUST look for the Client MUST follow rules defined in Section 7 when setting Unicast
BOOTP Message Option within this message. If this option is not flag.
If the client has not received the 4o6 Server Addresses option from
the DHCPv6 server, it transmits the Boot-request-v6 message as
specified in Section 13 of [RFC3315]. If the client received this
option, it SHOULD send Boot-request-v6 message to all unicast
addresses listed in the option.
On receiving a Boot-reply-v6 message, the client MUST look for the
BOOTP Message option within this message. If this option is not
found, the Boot-reply-v6 message is discarded. If the BOOTP Message found, the Boot-reply-v6 message is discarded. If the BOOTP Message
Option is found, the client extracts the DHCPv4 message it contains Option presents, the client extracts the DHCPv4 message it contains
and processes it as described in section 4.4 of [RFC2131]. and processes it as described in section 4.4 of [RFC2131].
DHCP clients are responsible for the retransmission of messages. When dealing with IPv4 configuration, the 4o6 DHCP client SHOULD
When requesting IPv4 configuration, the client SHOULD follow the follow the normal DHCPv4 retransmission requirements and strategy as
normal DHCPv4 retransmission requirements and strategy as specified specified in section 4.1 of [RFC2131]. There are no explicit
in section 4.1 of [RFC2131]. As a result there are no explicit
transmission parameters associated with a Boot-request-v6 message. transmission parameters associated with a Boot-request-v6 message.
As the DHCPv4 and DHCPv6 clients are running on the same host, the The 4o6 DHCP client MUST implement [RFC4361] to ensure that the
client MUST implement [RFC4361] to ensure that the device correctly device correctly identifies itself.
identifies itself.
9. Relay Agent Behavior 9. Relay Agent Behavior
When a DHCPv6 relay agent receives a Boot-request-v6 message, it MUST When a DHCPv6 relay agent receives a Boot-request-v6 message, it may
handle the message as described in section 4 of not recognize this message. It can just forward this message as in
[I-D.ietf-dhc-dhcpv6-unknown-msg]. [I-D.ietf-dhc-dhcpv6-unknown-msg].
A DHCPv6 relay agent MUST implement the Relay behaviour described in Additionally, the DHCPv6 relay agent MAY allow the configuration of a
section 20.1.1 of [RFC3315]. dedicated DHCPv4 over DHCPv6 specific destination address(es),
differing from the address(es) of the DHCPv6-only server(s). To
Additionally, the DHCPv6 relay agent MAY allow the configuration of
dedicated DHCPv4-over-DHCPv6 specific destination addresses,
differing from the addresses of the DHCPv6 only server(s). To
implement this function, the relay checks the received DHCPv6 message implement this function, the relay checks the received DHCPv6 message
type and forwards according to the following logic: type and forwards according to the following logic:
1. If the message type is Boot-request-v6, then the DHCPv6 request 1. If the message type is BOOTREQUESTV6, the packet is relayed to
is relayed to the configured DHCPv4 aware 4o6 Server's the configured 4o6 DHCP Server's address(es) in the form of
address(es). normal DHCPv6 packet (i.e. DHCPv6/UDP/IPv6).
2. For any other DHCPv6 message type, forward according to section 2. For any other DHCPv6 message type, forward according to section
20 of [RFC3315]. 20 of [RFC3315].
The above logic only allows for separate relay destinations The above logic only allows for separate relay destinations
configured on the relay agent closest to the client (single relay configured on the relay agent closest to the client (single relay
hop). Multiple relaying hops are not considered in the case of hop). Multiple relaying hops are not considered in the case of
separate relay destinations. separate relay destinations.
10. 4o6 Server Behavior 10. 4o6 DHCP Server Behavior
When the server receives a Boot-request-v6 message from a client, it When the server receives a Boot-request-v6 message from a client, it
searches for a BOOTP Message Option. If this option is missing, the searches for the BOOTP Message Option. The server discards the
server discards the packet. The server MAY notify an administrator packet without this option. The server MAY notify an administrator
about the receipt of a malformed packet. The mechanism for this about the receipt of a malformed packet. The mechanism for this
notification is out of scope for this document notification is out of scope for this document
If the server finds a valid BOOTP Message Option, it extracts the If the server finds a valid BOOTP Message option, it extracts the
original DHCPv4 message sent by the client. This message is passed original DHCPv4 message and the contents of the "flags" field carried
to the DHCPv4 server engine, which generates a response to the client in the Boot-request-v6 message and uses them to generate the
as specified in [RFC2131]. This engine can be implemented as a appropriate DHCPv4 response (server to client message). The response
built-in DHCPv4 server function of the 4o6 Server, or it can be a is generated as described in [RFC2131] with the exception that the
separate DHCPv4 server instance. Discussion regarding communication server SHOULD use the information carried in the "flags" field of the
between the 4o6 Server and a DHCPv4 server engine is out of scope for Boot-request-v6 message to find out whether the client's message
this document. would have been sent to the broadcast or unicast address if DHCPv4
protocol was used. This is useful for the server to determine the
state of the client. The use of the "flags" field is described in
detail in Section 7.
When appropriate DHCPv4 response is generated, 4o6 Server places it When appropriate DHCPv4 response is generated, the 4o6 Server places
in the payload of a BOOTP Message Option, which it puts into the it in the payload of a BOOTP Message Option, which it puts into the
Boot-reply-v6 message. Boot-reply-v6 message.
If the Boot-request-v6 message was received directly by the server, If the Boot-request-v6 message was received directly by the server,
the Boot-reply-v6 message MUST be unicast from the interface on which the Boot-reply-v6 message MUST be unicast from the interface on which
the original message was received. the original message was received.
If the Boot-request-v6 message was received in a Relay-forward If the Boot-request-v6 message was received in a Relay-forward
message, the server creates a Relay-reply message with the Boot- message, the server creates a Relay-reply message with the Boot-
reply-v6 message in the payload of a Relay Message Option, and reply-v6 message in the payload of a Relay Message option, and
responds as described in section 20.3 of [RFC3315]. responds as described in section 20.3 of [RFC3315].
11. Security Considerations 11. Security Considerations
In this specification, DHCPv4 messages are encapsulated in the newly In this specification, DHCPv4 messages are encapsulated in the newly
defined option and messages. This is similar to the handling of the defined option and messages. This is similar to the handling of the
current relay agent messages. In order to bypass firewalls or current relay agent messages. In order to bypass firewalls or
network authentication gateways, a malicious attacker may leverage network authentication gateways, a malicious attacker may leverage
this feature to convey other messages using DHCPv6, i.e. use DHCPv6 this feature to convey other messages using DHCPv6, i.e. use DHCPv6
as a form of encapsulation. However, the potential risk from this is as a form of encapsulation. However, the potential risk from this is
not seen to be greater than that with current DHCPv4 and DHCPv6 no more severe than that with the current DHCPv4 and DHCPv6 practice.
practice.
There are chances that a rogue DHCPv6 server may reply with a 4o6
Server Address Option containing duplicated unicast IPv6 addresses,
which can cause an amplification attack. To avoid this, the client
MUST check if there are repeated IPv6 addresses in a 4o6 Server
Address Option when receiving one. The client MUST ignore those
duplicated unicast IPv6 addresses.
12. IANA Considerations 12. IANA Considerations
IANA is requested to allocate three DHCPv6 option codes for use by IANA is requested to allocate three DHCPv6 option codes for use by
OPTION_BOOTP_MSG, OPTION_DHCP4_O_DHCP6_ENABLE and OPTION_BOOTP_MSG, OPTION_DHCP4_O_DHCP6_ENABLE and
OPTION_DHCP4_O_DHCP6_SERVERS, and two DHCPv6 message type codes for OPTION_DHCP4_O_DHCP6_SERVERS, and two DHCPv6 message type codes for
the BOOTREQUESTV6 and BOOTREPLYV6. the BOOTREQUESTV6 and BOOTREPLYV6.
13. Contributors List 13. Contributors List
Many thanks to Ted Lemon, Bernie Volz, Tomek Mrugalski, Yuchi Chen Many thanks to Ted Lemon, Bernie Volz, Tomek Mrugalski, Yuchi Chen
and Cong Liu, for their great contributions to the draft. and Cong Liu, for their great contributions to the draft.
14. References 14. References
14.1. Normative References 14.1. Normative References
[I-D.ietf-dhc-dhcpv6-unknown-msg]
Cui, Y., Sun, Q., and T. Lemon, "Handling Unknown DHCPv6
Messages", draft-ietf-dhc-dhcpv6-unknown-msg-02 (work in
progress), September 2013.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2131] Droms, R., "Dynamic Host Configuration Protocol", RFC [RFC2131] Droms, R., "Dynamic Host Configuration Protocol", RFC
2131, March 1997. 2131, March 1997.
[RFC3315] Droms, R., Bound, J., Volz, B., Lemon, T., Perkins, C., [RFC3315] Droms, R., Bound, J., Volz, B., Lemon, T., Perkins, C.,
and M. Carney, "Dynamic Host Configuration Protocol for and M. Carney, "Dynamic Host Configuration Protocol for
IPv6 (DHCPv6)", RFC 3315, July 2003. IPv6 (DHCPv6)", RFC 3315, July 2003.
[RFC4242] Venaas, S., Chown, T., and B. Volz, "Information Refresh
Time Option for Dynamic Host Configuration Protocol for
IPv6 (DHCPv6)", RFC 4242, November 2005.
[RFC4361] Lemon, T. and B. Sommerfeld, "Node-specific Client [RFC4361] Lemon, T. and B. Sommerfeld, "Node-specific Client
Identifiers for Dynamic Host Configuration Protocol Identifiers for Dynamic Host Configuration Protocol
Version Four (DHCPv4)", RFC 4361, February 2006. Version Four (DHCPv4)", RFC 4361, February 2006.
14.2. Informative References 14.2. Informative References
[I-D.ietf-dhc-dhcpv4-over-ipv6] [I-D.ietf-dhc-dhcpv6-unknown-msg]
Cui, Y., Wu, P., Wu, J., and T. Lemon, "DHCPv4 over IPv6 Cui, Y., Sun, Q., and T. Lemon, "Handling Unknown DHCPv6
Transport", draft-ietf-dhc-dhcpv4-over-ipv6-07 (work in Messages", draft-ietf-dhc-dhcpv6-unknown-msg-03 (work in
progress), September 2013. progress), November 2013.
[RFC5010] Kinnear, K., Normoyle, M., and M. Stapp, "The Dynamic Host [RFC5010] Kinnear, K., Normoyle, M., and M. Stapp, "The Dynamic Host
Configuration Protocol Version 4 (DHCPv4) Relay Agent Configuration Protocol Version 4 (DHCPv4) Relay Agent
Flags Suboption", RFC 5010, September 2007. Flags Suboption", RFC 5010, September 2007.
Authors' Addresses Authors' Addresses
Qi Sun Qi Sun
Tsinghua University Tsinghua University
Department of Computer Science, Tsinghua University
Beijing 100084 Beijing 100084
P.R.China P.R.China
Phone: +86-10-6278-5822 Phone: +86-10-6278-5822
Email: sunqi@csnet1.cs.tsinghua.edu.cn Email: sunqi@csnet1.cs.tsinghua.edu.cn
Yong Cui Yong Cui
Tsinghua University Tsinghua University
Department of Computer Science, Tsinghua University
Beijing 100084 Beijing 100084
P.R.China P.R.China
Phone: +86-10-6260-3059 Phone: +86-10-6260-3059
Email: yong@csnet1.cs.tsinghua.edu.cn Email: yong@csnet1.cs.tsinghua.edu.cn
Marcin Siodelski Marcin Siodelski
950 Charter Street 950 Charter Street
Redwood City, CA 94063 Redwood City, CA 94063
USA USA
 End of changes. 80 change blocks. 
196 lines changed or deleted 219 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/