rfc-8539

Softwire Provisioning Using DHCPv4 over DHCPv6

I. Farrer, Q. Sun, Y. Cui, L. Sun
date2019-03 streamIETF areaint wgdhc statusPROPOSED STANDARD pages18 canonicalhttps://www.rfc-editor.org/rfc/rfc8539 doi10.17487/RFC8539
DHCPv4 over DHCPv6 (RFC 7341) is a mechanism for dynamically configuring IPv4 for use as an over-the-top service in an IPv6-only network. Softwires are an example of such a service. For DHCPv4 over DHCPv6 (DHCP 4o6) to function with some IPv4-over-IPv6 softwire mechanisms and deployment scenarios (e.g., RFC 7596 or RFC 7597), the operator needs to know the IPv6 address that the client will use as the source of an IPv4-in-IPv6 softwire tunnel. This address, in conjunction with the client's IPv4 address, and (in some deployments) the Port Set ID are used to create a binding table entry in the operator's softwire tunnel concentrator. This memo defines a DHCPv6 option to convey IPv6 parameters for establishing the softwire tunnel and a DHCPv4 option (to be used only with DHCP 4o6) to communicate the source tunnel IPv6 address between the DHCP 4o6 client and server. It is designed to work in conjunction with the IPv4 address allocation process. "DHCPv6 Options for Configuration of Softwire Address and Port-Mapped Clients" (RFC 7598) describes a deterministic DHCPv6-based mechanism for provisioning softwires. This document updates RFC 7598, allowing OPTION_S46_BR (90) to be enumerated in the DHCPv6 client's Option Request Option (ORO) request and to appear directly within subsequent messages sent by the DHCPv6 server.

updates

Extracted elements (26)

design-rationale §6.2

A new DHCPv4 option (OPTION_DHCP4O6_S46_SADDR) is defined rather than reusing existing DHCPv4 client identification fields because the softwire source IPv6 address may not be known until after the client receives the server's DHCPV4-RESPONSE containing OPTION_S46_BIND_IPV6_PREFIX, making it impossible to place in fields that must be constant from the initial DHCPDISCOVER.

v6ops

design-rationale §1

The DHCP 4o6 server is used as the single point in the network that holds current client binding information (IPv4 address, Port Set ID, IPv6 source address), allowing the service provider to provision other functional elements such as border relays from this single authoritative source rather than requiring distributed signaling.

v6ops

interoperability-note §6.2

OPTION_DHCP4O6_S46_SADDR cannot use the DHCPv4 'chaddr' field or Client Identifier (option 61) as a substitute because those fields must remain constant throughout the lease lifetime, whereas the softwire source address may only be known after the first DHCPV4-RESPONSE is received.

v6ops

interoperability-note §7.6

The mechanism is compatible with dynamic shared IPv4 address allocation as described in RFC 7618. The softwire source address mechanism integrates with Port Set ID assignment by following the process in Section 6 of RFC 7618.

v6ops, nat

interoperability-note §4.1

This document updates RFC 7598 by removing the restriction that OPTION_S46_BR (90) must be encapsulated within a softwire container option (OPTION_S46_CONT_MAPE or OPTION_S46_CONT_LW). RFC 7598 required clients to silently ignore non-encapsulated softwire options; this document allows OPTION_S46_BR to appear directly in DHCPv6 messages and be requested via ORO.

v6ops

normative-requirement §7 MUST

Before initiating dynamic softwire configuration, the client MUST be configured with a suitable IPv6 prefix (via DHCPv6, RA/PIO, or other mechanism) to use as the local softwire endpoint.

v6ops

normative-requirement §7.2.1 MUST

If the client receives a DHCPNAK in response to a softwire source address change, it MUST stop using the new IPv6 source address and restart the configuration process from the beginning.

v6ops

normative-requirement §7.1 MUST

If the DHCPV4-RESPONSE does not contain a valid OPTION_S46_BR option with at least one valid IPv6 BR address, the client MUST discard the message, as the softwire cannot be configured without the BR address.

v6ops

normative-requirement §8.2 MUST

On receipt of every client DHCPREQUEST containing OPTION_DHCP4O6_S46_SADDR, the server MUST check the received IPv6 address against all existing active CE source addresses to ensure uniqueness. If a conflict exists with another active lease, the address MUST NOT be stored or updated.

v6ops

normative-requirement §6.1 MUST NOT

Servers MUST NOT send more than one instance of the OPTION_S46_BIND_IPV6_PREFIX option; it is defined as a singleton.

v6ops

normative-requirement §8 MUST

The DHCP 4o6 server MUST store the client's IPv6 softwire source address in the leasing address database alongside the IPv4 address and client identifier, and MUST include OPTION_DHCP4O6_S46_SADDR in every DHCPACK message sent.

v6ops

normative-requirement §7.4 MUST

The receiver of OPTION_S46_BIND_IPV6_PREFIX MUST only use bits from the bind-ipv6-prefix field up to the value specified in bindprefix6-len; bits beyond that value MUST be ignored.

v6ops

normative-requirement §7.2.1 MUST

When the client's IPv6 softwire source address changes (e.g., due to IPv6 renumbering), the client MUST inform the server by sending a DHCPREQUEST containing OPTION_DHCP4O6_S46_SADDR with the new address.

v6ops

normative-requirement §7.2 MUST

Whenever the client attempts to extend its IPv4 address lease, OPTION_DHCP4O6_S46_SADDR containing the IPv6 softwire source address MUST be included in the DHCPREQUEST message.

v6ops

privacy-consideration §9.1

If the client uses an immutable interface identifier for its IPv6 softwire source address, it becomes trackable across networks and sessions. This can be mitigated by constructing the softwire source address per RFC 7597 Section 6, where the IID encodes only the allocated IPv4 address and Port Set ID, causing the IID to change as the lease changes.

privacy, v6ops

protocol-element §6.2

OPTION_DHCP4O6_S46_SADDR (code 109) is a DHCPv4 option (used only within DHCP 4o6) that carries the client's 128-bit IPv6 softwire source address. It has a fixed option-length of 16 and is included in DHCPREQUEST and DHCPACK messages to bind the IPv4 lease to the softwire source address.

v6ops

protocol-element §6.1

OPTION_S46_BIND_IPV6_PREFIX (code 137) is a DHCPv6 option that conveys a preferred IPv6 prefix hint to the client, indicating which prefix it should use to bind its IPv4 configuration and source softwire tunnel traffic. It contains an 8-bit bindprefix6-len field followed by a variable-length bind-ipv6-prefix field.

v6ops, yang

registry §10

IANA assigned OPTION_DHCP4O6_S46_SADDR (109) in the 'BOOTP Vendor Extensions and DHCP Options' registry with Data Length 16, for use as the DHCPv4 over DHCPv6 Softwire Source Address Option.

registry, v6ops

registry §10

IANA assigned OPTION_S46_BIND_IPV6_PREFIX (137) in the DHCPv6 'Option Codes' registry. It is a singleton option that may be requested in the client's ORO (Client ORO: Yes, Singleton Option: Yes).

registry, v6ops

registry §10

IANA updated the DHCPv6 OPTION_S46_BR (90) entry in the 'Option Codes' registry to set 'Client ORO: Yes' (previously 'No'), reflecting the RFC 7598 restriction removal that now permits this option to be requested via ORO and appear directly in server messages.

registry, v6ops

security-consideration §9

A client may overload the server by sending rapid repeated source address update messages. This risk can be mitigated by implementing a server-side minimum time interval between client address changes (default 60 seconds per Section 8.1), and by using a random-based client identifier to reduce brute-force guessing risk.

security, v6ops

security-consideration §9

A rogue client could attempt traffic hijacking by sending a DHCPREQUEST for another client's active IPv4 lease with the attacker's IPv6 address in OPTION_DHCP4O6_S46_SADDR. The attack requires knowing another client's IPv4 lease and client identifier, making it difficult in dedicated Layer 2 access networks. This mechanism is NOT RECOMMENDED on shared-medium access networks.

security, v6ops

security-consideration §9

An attacker can attempt to redirect flows to an incapable client; this can be prevented by implementing BCP 38 network ingress filtering in conjunction with BR source address validation processes described in RFC 7596 Section 5.2 and RFC 7597 Section 8.1.

security, v6ops

state-machine §5

The DHCP 4o6 binding flow proceeds in four steps: (1) client sends DHCPDISCOVER with ORO listing options 90 and 137; (2) server replies with DHCPOFFER including OPTION_S46_BR and optionally OPTION_S46_BIND_IPV6_PREFIX; (3) client sends DHCPREQUEST with OPTION_DHCP4O6_S46_SADDR; (4) server sends DHCPACK with bound IPv6 source address. On DHCPNAK, client restarts from step 1.

v6ops

wire-format §6.2

OPTION_DHCP4O6_S46_SADDR (109) encodes as: 1-byte option-code (109), 1-byte option-length (16), and a 16-byte (128-bit) softwire-ipv6-src-address field containing the client's IPv6 softwire source address.

v6ops

wire-format §6.1

OPTION_S46_BIND_IPV6_PREFIX (137) encodes as: 2-byte option-code, 2-byte option-length (1 + prefix byte length), 1-byte bindprefix6-len (valid 0–128), and a variable-length bind-ipv6-prefix field padded on the right to an octet boundary. Padding bits beyond bindprefix6-len MUST be ignored.

v6ops