Softwire Provisioning Using DHCPv4 over DHCPv6
updates
- rfc-7598 — DHCPv6 Options for Configuration of Softwire Address and Port-Mapped Clients
Extracted elements (26)
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.
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.
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.
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.
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.
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.
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.
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.
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.
Servers MUST NOT send more than one instance of the OPTION_S46_BIND_IPV6_PREFIX option; it is defined as a singleton.
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.
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.
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.
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.
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.
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.
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.
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.
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).
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.
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.
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.
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.
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.
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.
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.