Unified IPv4-in-IPv6 Softwire Customer Premises Equipment (CPE): A DHCPv6-Based Prioritization Mechanism
Extracted elements (18)
The prioritization mechanism requires no server-side logic beyond standard DHCPv6 option assignment, keeping implementation complexity in the CPE only. This was a deliberate choice to avoid scalability burdens on DHCPv6 servers that would arise from per-client mechanism selection logic.
The priority mechanism does not provide redundancy or failover between S46 mechanisms; if the highest-priority mechanism is unavailable, fallback to the next mechanism is explicitly out of scope. This simplifies the CPE implementation at the cost of resilience.
The tunnel concentrator endpoint address (BR/AFTR address) must be different for each softwire mechanism to ensure correct operation, even though the client's IPv6 addresses may overlap across mechanisms. This is because the BR/AFTR address uniquely identifies which mechanism is being served.
Deployed CPEs that support multiple softwire mechanisms but do not implement OPTION_S46_PRIORITY will request configuration for all supported mechanisms in their DHCPv6 ORO but will not request OPTION_S46_PRIORITY, potentially resulting in unpredictable client configuration. Operators may need to implement server-side logic to identify such clients and restrict them to a single mechanism.
Operators deploying multiple softwire mechanisms are advised to use separate IPv4 address pools for each mechanism to avoid routing ambiguity on the return path. Sharing IPv4 pools can cause ingress traffic to be routed to the wrong BR/AFTR, resulting in dropped packets.
DHCP servers MAY validate the list of s46-option-code values to detect invalid values and duplicates.
If an invalid OPTION_S46_PRIORITY option is received, the client MAY proceed with configuring the provisioned S46 mechanisms as if OPTION_S46_PRIORITY had not been received.
If an unknown option code is received in OPTION_S46_PRIORITY, the client MUST skip it and continue processing other listed option codes if they exist.
If no match is found between the priority list and the candidate list, the client MAY proceed with configuring one or more of the provisioned S46 softwire mechanisms; which mechanism(s) are chosen is implementation specific.
Servers MUST NOT send more than one instance of the OPTION_S46_PRIORITY option, as it is a singleton option.
The OPTION_S46_PRIORITY option MUST contain at least one s46-option-code. If a client receives an OPTION_S46_PRIORITY option with duplicate s46-option-code values, it should consider the option invalid.
Upon finding a match between the priority list and the candidate list of provisioned S46 mechanisms, the client MUST configure the resulting S46 mechanism.
OPTION_S46_PRIORITY (option code 111) is a DHCPv6 option that conveys a priority-ordered list of IPv4-in-IPv6 softwire mechanisms. The option contains one or more 16-bit s46-option-code fields, each identifying a DHCPv6 option code for a specific S46 mechanism. Mechanisms are prioritized in the order they appear in the option.
The DHCPv6 client behavior for S46 Priority Option involves four steps: (1) build a candidate list of S46 mechanisms from valid configuration options in the DHCPv6 Advertise message; (2) build a priority list from s46-option-codes in OPTION_S46_PRIORITY ordered highest to lowest; (3) sequentially match priority list against candidate list; (4) configure the first matching mechanism.
IANA allocated DHCPv6 option code 111 for OPTION_S46_PRIORITY, added to the DHCPv6 option code space defined in RFC 3315 Section 24.3.
IANA created a new registry 'Option Codes permitted in the S46 Priority Option' with initial entries: 64 (DS-Lite/RFC6334), 88 (DHCPv4 over DHCPv6/RFC7341), 94 (MAP-E/RFC7598), 95 (MAP-T/RFC7598), 96 (Lightweight 4over6/RFC7598). New entries require IETF Review per RFC 5226. Valid range is 1-65535.
Misbehaving intermediate nodes may alter the content of the S46 Priority Option, causing a different IPv4 service continuity mechanism to be configured than the one preferred by the network. A misbehaving node could also modify other DHCPv6 options (e.g., option 64 or 90) to redirect traffic to an illegitimate node. These attacks apply to any DHCPv6 option, not just OPTION_S46_PRIORITY.
The S46 Priority Option wire format consists of a 16-bit option-code field (value 111), a 16-bit option-length (>=2 and a multiple of 2, in octets), followed by one or more 16-bit s46-option-code fields. The option-length must be at least 2 octets.