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