IPv6 WAN Modes and Transition Technologies

The CDRouter IPv6 expansion lets you test CPE devices in a variety of network topologies, including:

  • Dual-stack: native IPv4 and IPv6
  • IPv6-only: native IPv6 with no IPv4 service
  • IPv4 over IPv6: IPv4 service carried over a native IPv6 WAN
  • IPv6 over IPv4: IPv6 service carried over an IPv4-only WAN

CDRouter IPv6 also supports DHCPv6 prefix delegation, which provides the CPE with an IPv6 prefix to use on its LAN.

Each of these topologies is configured using the WAN modes described below.

DHCPv6 Mode

In this mode, CDRouter expects the DUT to issue a DHCP Solicit on the WAN interface.

To enable DHCPv6 on the WAN, set the testvar ipv6WanMode to DHCP:

testvar ipv6WanMode DHCP

The DUT’s IPv6 address is configured using the testvar ipv6WanIspAssignIp, whereas the ISP’s WAN address is configured using the ipv6WanIspIp testvar. The value of these testvars must match the configuration of the DUT.

testvar ipv6WanIspAssignIp 3001::2
testvar ipv6WanIspIp 3001::1

CDRouter also supports prefix delegation for this WAN mode. Please see this Knowledge Base article for information on configuring prefix delegation.

Autoconf Mode

In this mode, CDRouter expects the DUT to listen for a Router Advertisement on the WAN interface and to self-assign an IPv6 address using a prefix learned during this process. This is known as Stateless Address Autoconfiguration (SLAAC), and is defined in IETF RFC 4862.

To enable autoconf on the WAN, set the testvar ipv6WanMode to autoconf:

testvar ipv6WanMode autoconf

Only two testvars must be configured for autoconf on the WAN. CDRouter will determine the correct prefix to advertise based on these testvar values:

testvar ipv6WanIspIp 3001::1
testvar ipv6WanIspPrefixLen 64

CDRouter also supports prefix delegation for this WAN mode. Please see this Knowledge Base article for information on configuring prefix delegation.

Unnumbered Mode

In this mode, neither CDRouter nor the DUT has a global IPv6 address on the WAN. The DUT uses only its link-local address on the WAN, and CDRouter’s Router Advertisements don’t include a prefix. Instead, the DUT gets a global IPv6 prefix through DHCPv6 prefix delegation and uses it on its LAN.

To enable unnumbered mode on the WAN, set the testvar ipv6WanMode to unnumbered:

testvar ipv6WanMode unnumbered

Prefix delegation is enabled by default in this mode, and is required, since the delegated prefix is the DUT’s only source of global IPv6 addresses. The delegated prefix is configured using the testvars dhcpv6WanAssignPrefix and dhcpv6WanAssignPrefixLen:

testvar dhcpv6WanAssignPrefix     3001:dddd::
testvar dhcpv6WanAssignPrefixLen  48

For more information, please see this Knowledge Base article on configuring prefix delegation.

Static Mode

In this mode, any arbitrary IPv6 network may be used for the WAN connection. Unlike 6to4, there is no correlation between the WAN and the LAN addresses.

To enable static IPv6 on the WAN, set the testvar ipv6WanMode to static:

testvar ipv6WanMode static

The DUT’s IPv6 address is configured using the testvar ipv6WanIspAssignIp, whereas the ISP’s WAN address is configured using the ipv6WanIspIp testvar. The value of these testvars must match the configuration of the DUT.

For example, if the DUT is configured with a static WAN IPv6 address of 3001::2, and a default router (next-hop gateway) of 3001::1, the testvars ipv6WanIspAssignIp and ipv6WanIspIp should be configured as follows:

testvar ipv6WanIspAssignIp 3001::2
testvar ipv6WanIspIp 3001::1

IPv6 over PPPoE

To enable IPv6 over PPPoE, set the testvar ipv6WanMode to PPPoE:

testvar ipv6WanMode PPPoE

The PPPoE username, password, and authentication type must also be configured using the following testvars:

testvar pppoeUser      qacafe
testvar pppoePassword  qacafe123
testvar pppAuthType    CHAP

IPv6 over PPP is formally defined in IETF RFC 5072. In addition, IETF RFC 4241 describes a dual-stack internet access model which defines the basic IPv6 over PPPoE architecture implemented by CDRouter.

PPPoE primarily provides authentication capabilities for IPv6. There are no NCP (IPv6CP) options for negotiating IPv6 addresses like there are for IPv4. As a result, following successful PPPoE connection establishment, the CPE must utilize another mechanism for obtaining global IPv6 address and prefix information. The testvar ipv6PPPoEAddressMode specifies how the CPE gets its global WAN IPv6 address after the PPPoE session is established:

  • DHCP (default): DHCPv6
  • autoconf: SLAAC, using the prefix in CDRouter’s Router Advertisements
  • static: manually configured on the CPE
  • none: no global WAN address (unnumbered PPPoE)
testvar ipv6PPPoEAddressMode DHCP

DHCPv6 prefix delegation is enabled by default in this mode, and provides the CPE with a prefix for its LAN.

If the CPE is running PPPoE for IPv4 as well as IPv6, CDRouter requires that both IPCP and IPv6CP occur in the same PPPoE session. CDRouter does not support implementations where IPCP and IPv6CP occur in different PPPoE sessions.

For more information on IPv6 over PPPoE, including configuration examples, please see our article Testing IPv6 over PPPoE with CDRouter.

IPv6 WAN without IPv4

In an IPv6-only network, the service provider delivers native IPv6 service and no IPv4 service. To test a DUT in this topology, configure one of the native IPv6 WAN modes described above, then turn off IPv4 in one of two ways:

  • To disable IPv4 completely, on both the WAN and the LAN, set the testvar supportsIPv4 to no. CDRouter automatically skips all IPv4 tests.
  • To keep IPv4 on the LAN only, set the testvar wanMode to none. The DUT still provides IPv4 to its LAN clients, but CDRouter doesn’t provide IPv4 service on the WAN, so LAN clients have no IPv4 access to the WAN.

For example, to disable IPv4 completely:

testvar supportsIPv4 no
testvar ipv6WanMode  DHCP

To keep IPv4 on the LAN only:

testvar wanMode      none
testvar ipv6WanMode  DHCP

6to4 Mode

To enable 6to4, set the testvar ipv6WanMode to 6to4:

testvar ipv6WanMode 6to4

6to4 (RFC 3056) lets IPv6 networks connect over the IPv4 Internet. A special IPv6 subnet, 2002::/16, is specifically allocated for 6to4 use. Since each public IPv4 address is unique, it can simply be used as bits 17-48 of a 2002:: address. This creates a unique 48 bit network for every IPv4 address. Since the IPv4 address is embedded in the IPv6 address, it’s already known where the packet must be going, or is from. This makes delivery between nodes very easy.

This doesn’t solve the issue of communicating with native IPv6 addresses. To get packets delivered to non 6to4 hosts, special relay servers are run on anycast, each at the same static, well-known IPv4 address. Any of these servers are able to route traffic between the 6to4 network and the native network. These servers are run for the general public by institutions advocating IPv6 adoption.

CDRouter IPv6 simulates a 6to4 relay server for testing this functionality. By default CDRouter creates a 6to4 relay server at the well known IPv4 address 192.88.99.1 with IPv6 address 3001:051a:cafe::6. These addresses can be changed using the testvars ipv6RelayServer and ipv6RelayServerGlobal:

testvar ipv6RelayServer 192.88.99.1
testvar ipv6RelayServerGlobal 3001:051a:cafe::6

6to4 addresses are deterministic. The IPv4 WAN address determines the IPv6 prefix available for the LAN clients. These addresses can be allocated through autoconf or by DHCPv6.

6rd Mode (Rapid Deploy)

To enable 6rd, set the testvar ipv6WanMode to 6rd:

testvar ipv6WanMode 6rd

6rd is a generalized application of 6to4. For a detailed explanation of 6rd and its differences from 6to4, please view our article Testing 6to4 and 6rd IPv6 Islands with CDRouter.

CDRouter IPv6 creates a 6rd relay server on the WAN stack for testing 6rd functionality. By default CDRouter creates a 6to4 relay server at the well known address 192.88.99.1. Under 6rd, the ISP will generally use its own relay server with a native ISP IPv4 address. This address can be changed using the testvar ipv6RelayServer. Similarly, the IPv6 address used by the relay server can be configured using the testvar ipv6RelayServerGlobal:

testvar ipv6RelayServer 10.3.3.3
testvar ipv6RelayServerGlobal 3001:051a:cafe::6

6rd requires three additional testvars for complete configuration:

testvar ipv6rdPrefix 3010:1234::
testvar ipv6rdPrefixLen 32
testvar ipv6rdIPv4MaskLen 0

The ipv6rdPrefix testvar is of arbitrary length, assigned to an ISP by the IANA. The length of this prefix is determined with ipv6rdPrefixLen. Finally, the ipv6rdIPv4MaskLen indicates the number of leading bits to be dropped from the mapped IPv4 WAN address. This technique was written into the 6rd protocol in order to save prefix bits, since any bits in the IPv4 address that are not unique are useless for identifying the 6rd client.

IPv4-over-IPv6 Transition Technologies

Service providers that have moved their access networks to IPv6-only can use IPv4-over-IPv6 transition technologies to give their customers access to the IPv4 Internet. These technologies carry the customer’s IPv4 traffic across the IPv6-only network, either by encapsulating it in IPv6 or by translating it to IPv6.

In CDRouter, each of these technologies is an IPv4 WAN mode that runs on top of a native IPv6 WAN mode.

  • Set the IPv4 wanMode testvar to the IPv6 transition technology the DUT uses.
  • Set ipv6WanMode to DHCP, autoconf, unnumbered, static, or PPPoE. CDRouter simulates the service provider’s end of the tunnel or translation on the WAN.
Technology wanMode How IPv4 crosses the IPv6 network More information
DS-Lite (RFC 6333) dslite Encapsulated in IPv6 DS-Lite Testing with CDRouter
MAP-E (RFC 7597) MAP-E Encapsulated in IPv6 MAP and LW4o6 testing with CDRouter
MAP-T (RFC 7599) MAP-T Translated to IPv6 MAP and LW4o6 testing with CDRouter
LW4o6 (RFC 7596) LW4o6 Encapsulated in IPv6 MAP and LW4o6 testing with CDRouter

For example, to test a DS-Lite DUT that gets its WAN IPv6 address using DHCPv6:

testvar wanMode         dslite
testvar ipv6WanMode     DHCP
testvar ipv6DsliteAftr  3001:aaaa::1

CDRouter does not support 464XLAT (RFC 6877) or NAT64/DNS64 (RFC 6146, RFC 6147).