IPv6 Addressing Modes with Prefix Delegation

This article describes how to configure CDRouter to support a CPE device that uses DHCPv6 Prefix Delegation to derive both its LAN side subnet prefix(es) as well as its global WAN address.

This is a popular deployment strategy that permits the service provider to use a single aggregate route for all traffic being forwarded to the CPE device and its descendant networks.

Overview

In early drafts of the DHCPv6 Prefix Delegation (RFC 3633), the IA_PD delegated prefix was only allowed to be assigned to the CPE’s LAN-side interfaces and could not overlap with the prefix of the CPE’s WAN link.

The result of this restriction was that service providers required one routing table entry to reach the CPE device and a separate route to reach the networks behind it.

This restriction was later relaxed with the addition of the DHCPv6 Prefix Exclude Option (RFC 6603), and then eliminated completely in the latest DHCPv6 specification (RFC 8415).

Solutions

The evolution of DHCPv6 Prefix Delegation led service providers to use a variety of strategies to deploy it in their networks. CDRouter supports each of these strategies in the following configurations:

DHCPv6/autoconf

When Prefix Delegation is enabled in these modes, the DUT is expected to have a global IPv6 address on its WAN interface by either requesting one via DHCPv6 (IA_NA) or autoconfiguring one via SLAAC.

This configuration aligns with the original RFC 3633 DHCPv6 Prefix Delegation specification. CDRouter’s IPv6 address prefix advertised on the WAN link must not overlap with the DHCPv6 Delegated Prefix (IA_PD), which the DUT may only assign to it’s LAN-side interfaces. CDRouter will use the DUT’s global IPv6 WAN address as the next-hop for traffic being forwarded to the Delegated Prefix.

testvar  ipv6WanMode                    DHCP (or autoconf)
testvar  ipv6WanIspIp                   3001::1
testvar  ipv6WanIspAssignIp             3001::2
testvar  ipv6WanIspPrefixLen            64

testvar  dhcpv6WanEnablePD              yes
testvar  dhcpv6WanEnablePDExclude       no
testvar  dhcpv6WanAssignPrefix          3001:dddd::
testvar  dhcpv6WanAssignPrefixLen       48

In DHCPv6 configurations involving one or more intermediate routers (such as a CMTS), neither the DUT’s nor CDRouter’s WAN link addresses may overlap with the delegated prefix:

testvar  ipv6WanMode                    DHCP
testvar  ipv6WanIspIp                   3002::1
testvar  ipv6WanIspGateway              3002::2
testvar  ipv6WanIspPrefixLen            64

testvar  ipv6WanIspAssignIp             3001::2
testvar  ipv6WanAssignPrefixLen         64

testvar  dhcpv6WanEnablePD              yes
testvar  dhcpv6WanEnablePDExclude       no
testvar  dhcpv6WanAssignPrefix          3001:dddd::
testvar  dhcpv6WanAssignPrefixLen       48

CDRouter will raise a configuration error and refuse to run any test package if any of these prefixes overlap with one another.

DHCPv6/autoconf with Prefix Exclude option

The DHCPv6 Prefix Exclude option was defined in (RFC 6603) to allow the IPv6 prefix of the CPE’s WAN link to overlap with the Delegated Prefix. When this option is enabled, CDRouter will reserve one subnet-prefix from the Delegated Prefix and assign it to the DUT’s WAN link.

In this mode, the DUT is still expected to be assigned a global WAN IPv6 address via DHCPv6 (IA_NA) or autoconfiguration (SLAAC), but the WAN address and prefix must be contained within the DHCPv6 Delegated Prefix. CDRouter will use the DUT’s global IPv6 WAN address as the next-hop for any traffic being forwarded to the Delegated Prefix that does not match the subnet-prefix of the WAN link.

Note, in this configuration the DUT should explicitly include the Prefix Exclude Option (option 67) in its DHCPv6 requests, but this is not required.

testvar  ipv6WanMode                    autoconf
testvar  ipv6WanIspIp                   3001:dddd:ffff::1
testvar  ipv6WanIspAssignIp             3001:dddd:ffff::2
testvar  ipv6WanIspPrefixLen            64

testvar  dhcpv6WanEnablePD              yes
testvar  dhcpv6WanEnablePDExclude       yes
testvar  dhcpv6WanAssignPrefix          3001:dddd:ffff::
testvar  dhcpv6WanAssignPrefixLen       48

In DHCPv6 configurations involving one or more intermediate routers (such as a CMTS), only the DUT’s address is allowed to be a subnet of the delegated prefix. CDRouter’s WAN link addresses must be defined in a separate prefix:

testvar  ipv6WanMode                    autoconf
testvar  ipv6WanIspIp                   3002::1
testvar  ipv6WanIspGateway              3002::2
testvar  ipv6WanIspPrefixLen            64

testvar  ipv6WanIspAssignIp             3001:dddd:ffff::2
testvar  ipv6WanAssignPrefixLen         64

testvar  dhcpv6WanEnablePD              yes
testvar  dhcpv6WanEnablePDExclude       yes
testvar  dhcpv6WanAssignPrefix          3001:dddd::
testvar  dhcpv6WanAssignPrefixLen       48

Unnumbered WAN mode

In this mode, the IPv6 WAN network is unnumbered, meaning neither CDRouter nor the DUT will assign any global IPv6 addresses to their WAN interfaces and there is no IPv6 prefix advertised in Router Advertisements. In this mode, CDRouter’s IPv6 Router Advertisements will have the M-flag set to 0 and will not contain a Prefix Information Option, since no global IPv6 address assignment is available.

CDRouter will use the link-local address of the DUT (ie. the source address of DHCPv6 requests) as the next-hop for forwarding traffic to any destination within the Delegated Prefix. CDRouter will automatically skip any tests that require a global IPv6 WAN address or prefix.

testvar  ipv6WanMode                    unnumbered
# testvar  ipv6WanIspIp                 3001:dddd:ffff::1  (not used)
# testvar  ipv6WanIspAssignIp           3001:dddd:ffff::2  (not used)
# testvar  ipv6WanIspPrefixLen          64                 (not used)

testvar  dhcpv6WanEnablePD              yes
testvar  dhcpv6WanAssignPrefix          3001:dddd::
testvar  dhcpv6WanAssignPrefixLen       48

The “unnumbered” IPv6 WAN mode is not supported in configurations involving one or more intermediate routers (such as a CMTS), since CDRouter does not have a global IPv6 WAN address for these routers to use as a routing next-hop or DHCPv6 relay-helper target.

LAN-side prefix assignment

In all of the above configurations, the DUT is expected to assign global IPv6 address and a 64-bit (::/64) subnet-prefix from the Delegated Prefix to each of its LAN-side interfaces.

CDRouter masks the Delegated Prefix (dhcpv6WanAssignPrefix with the ipv6LanSubnetId testvar to determine the IPv6 prefix that the DUT is expected to advertise on the LAN. This testvar should be set to the hex value of the expected LAN-side prefix subnet-id.

For example, if the Delegated Prefix assigned to the DUT is 3001:dddd::/48, there are 16 bits available available to the DUT for creating subnet prefixes. If the DUT allocates and advertises subnet prefix 3001:dddd:0:ff::/64 on its LAN interface, the subnet-id of this prefix is 00:ff. The ipv6LanSubnetId testvar in this case should be set to 00ff (or simply ff).

The ipv6LanIp testvar indicates the DUT’s IPv6 address on the LAN interface. It is not necessary to set the ipv6LanIp to the DUT’s full global LAN-side address since CDRouter is able to calculate the prefix portion automatically. Only the ‘host’ portion of the address is needed.

testvar ipv6LanMode                      DHCP (or autoconf)
testvar ipv6LanIp                        ::%eui64%
testvar ipv6LanSubnetId                  ff