Testing Tips

Testing IPv6 over PPPoE with CDRouter

9 min read

The IPv6 Over PPPoE Model

There are two distinct phases required to establish a successful IPv6 connection over a PPPoE tunnel. The first phase involves establishment of the point-to-point link. The second phase deals with IPv6 addressing. In the IPv4 world, IP addresses are typically negotiated between the client and server using various IP Control Protocol (IPCP) options. IPCP is a PPP Network Control Protocol (NCP) formally defined in RFC 1332.

The IPCP equivalent in the IPv6 world is known as the IPv6 Control Protocol (IPv6CP) which is defined in RFC 5072. Unlike IPCP, IPv6CP does not contain options for directly negotiating addresses or prefixes. Rather, this is left to other protocols, such as DHCPv6, which must be run by the client after the initial PPP link is established. Note that IPv6CP includes an Interface-Identifier option which can be used to negotiate a unique interface ID and ultimately an address via stateless address autoconfiguration, if supported.

CDRouter supports PPPoE as a WAN mode for both IPv4 and IPv6. The selection of PPPoE for the IPv6 WAN mode is independent of the IPv4 WAN mode that is chosen. It is therefore possible to run IPv6 over PPPoE in combination with any of the Ethernet-based IPv4 WAN modes supported by CDRouter. However, if PPPoE is configured as the WAN mode for both IPv4 and IPv6, IPCP and IPv6CP must occur within the same PPPoE session. CDRouter does not support configurations where IPCP and IPv6CP are performed in separate sessions. This stipulation is consistent with the model described in Section 1 of RFC 4241:

In this architecture, IPv6/IPv4 dual stack service is specified as follows:

  • IPv6 and IPv4 connectivities are provided over a single PPP logical link.

  • IPv6 connectivity is independent of IPv4 connectivity. IPV6CP and IPCP work independently over a single PPP logical link.

A CloudShark example PPP session where both IPCP and IPv6CP occur can be found here.

Since CDRouter requires that IPCP and IPv6CP occur within the same PPPoE session, the DUT’s PPPoE client on the WAN must be configured to use the same credentials for both IPv4 (if applicable) and IPv6 (if applicable). CDRouter’s PPPoE server on the WAN has a number of configuration options that are applicable only to IPv4. The only options that apply to IPv6 connections are the PPPoE username, password, and authentication type, which can be PAP, CHAP, MSCHAP, MSCHAPv2, and None. The testvars pppoeUser, pppoePassword, and pppAuthType, can be used to configure these options, respectively:

testvar pppoeUser             qacafe
testvar pppoePassword         qacafe123
testvar pppAuthType           PAP

As stated above, CDRouter’s PPPoE server is configured with a single set of credentials since both IPCP and IPv6CP are required to occur within a single PPPoE session. As a result, the PPPoE username, password, and authentication type will be the same for both IPv4 and IPv6.

In addition to PPP link establishment, IPv6 addresses must also be configured on the DUT. Section 1 of RFC 4241 advocates the use of DHCPv6 prefix delegation for propagating address and DNS information to the DUT:

The automatic configuration function aims at simplification of user setup. Usually, users have to configure at least two IPv6-specific parameters: prefix(es) assigned to them [RFC3769] and IPv6 DNS servers’ addresses. The function is composed of two sub-functions:

  • Delegation of prefix(es) to be used in the user site.

  • Notification of IPv6 DNS server addresses and/or other server addresses.

Configuration Scenarios

When IPv6 over PPPoE is configured, the DUT typically has four different options for controlling if or how it obtains a global IPv6 address on the WAN. CDRouter supports these four modes with the testvar ipv6PPPoEAddressMode which can be one of the following values:

  • none: The DUT does not have a global IPv6 address on the WAN (unnumbered)
  • DHCP: The DUT utilizes DHCPv6 to obtain a global IPv6 address on the WAN (numbered)
  • static: The DUT’s global IPv6 address is manually configured (numbered)
  • autoconf: the DUT utilizes SLAAC / autoconfiguration to obtain a global IPv6 on the WAN (numbered)

In addition, the DUT’s LAN side global IPv6 address can be either dynamically learned via DHCPv6 Prefix Delegation or manually configured for each WAN addressing mode described above. This results in a total of eight unique IPv6 over PPPoE configuration scenarios (four WAN addressing modes times two LAN addressing modes).

Examples

The examples provided here focus on configuration of the link between CDRouter’s WAN test interface and the DUT’s WAN interface. For simplicity, all four examples utilize the same basic LAN configuration based on DHCPv6 prefix delegation being supported. The DUT is assumed to be running autoconf on the LAN with a router advertisement interval of 300 seconds and a prefix length of 64 bits. These configurations also assume that the DUT supports the router advertisement RDNSS option for distributing DNS information to clients on the LAN, and that the DUT will provide the real DNS servers learned on the WAN to clients on the LAN (it is not acting as a proxy). See the CDRouter IPv6 User’s Guide for information on the LAN testvars used in these examples and for information on configuring DHCPv6 as opposed to autoconf on the LAN.

**Config Scenario** **IPv4 WAN Mode** **IPv6 WAN Mode** **DUT WAN IPv6 Address** **DUT LAN IPv6 Address**
1 Any* PPPoE none (unnumbered) DHCPv6 PD**
2 Any* PPPoE DHCPv6 (numbered) DHCPv6 PD**
3 Any* PPPoE static (numbered) DHCPv6 PD**
4 Any* PPPoE Autoconf (numbereD) DHCPv6 PD**

The physical layer must be Ethernet. IPv4 WAN modes of PPPoA and PPP/T1 are not supported for PPPoE IPv6 connections.

If prefix delegation is not supported or enabled within the DUT, the global IPv6 address on the DUT must be manually configured.

Configuration Example 1

In this configuration the DUT does not have a global IPv6 address on the WAN, which is also referred to as being unnumbered.

# -- Enable IPv6 within CDRouter
testvar supportsIpv6         yes

# -- Set the IPv6 WAN mode to PPPoE
testvar ipv6WanMode          PPPoE

# -- Enable DHCPv6 for prefix delegation
testvar dhcpv6WanEnablePD              yes
testvar dhcpv6WanAssignPrefix          3001:dddd::
testvar dhcpv6WanAssignNextPrefix      3001:ddde::
testvar dhcpv6WanAssignPrefixLen       48
testvar dhcpv6PDLatency                30

# -- Disable WAN IPv6 address
testvar ipv6PPPoEAddressMode  none

# -- Configure DNS servers that will be provided via DHCPv6 Option 23
testvar ipv6WanDnsServer       3001:51a:cafe::2
testvar ipv6WanBackupDnsServer 3001:51a:cafe::3

# -- LAN configuration
testvar ipv6LanMode         autoconf
testvar ipv6LanIp           ::%eui64%
testvar ipv6LanSubnetId     1111
testvar ipv6LanPrefixLen    64
testvar ipv6SupportsRdnss   yes
testvar ipv6DNStoLAN        yes
testvar ipv6RAInterval      300

Configuration Example 2

In this configuration the DUT uses DHCPv6 for both prefix delegation and address assignment on the WAN. CDRouter’s DHCPv6 server will respond to both IA_NA and IA_PD requests from the DUT and will also automatically provide DNS information to the DUT using DHCPv6 Option 23 (Recursive Name Server) in all DHCPv6 message exchanges.

# -- Enable IPv6 within CDRouter
testvar supportsIpv6         yes

# -- Set the IPv6 WAN mode to PPPoE
testvar ipv6WanMode          PPPoE

# -- Enable DHCPv6 for prefix delegation
testvar dhcpv6WanEnablePD              yes
testvar dhcpv6WanAssignPrefix          3001:dddd::
testvar dhcpv6WanAssignNextPrefix      3001:ddde::
testvar dhcpv6WanAssignPrefixLen       48
testvar dhcpv6PDLatency                30

# -- Enable DHCPv6 for WAN address assignment
testvar ipv6PPPoEAddressMode  DHCP
testvar ipv6WanIspIp          3001::1
testvar ipv6WanIspAssignIp    3001::2
testvar ipv6WanIspNextIp      3001::3
testvar ipv6WanIspPrefixLen   64

# -- Configure DNS servers that will be provided via DHCPv6 Option 23
testvar ipv6WanDnsServer       3001:51a:cafe::2
testvar ipv6WanBackupDnsServer 3001:51a:cafe::3

# -- LAN configuration
testvar ipv6LanMode         autoconf
testvar ipv6LanIp           ::%eui64%
testvar ipv6LanSubnetId     1111
testvar ipv6LanPrefixLen    64
testvar ipv6SupportsRdnss   yes
testvar ipv6DNStoLAN        yes
testvar ipv6RAInterval      300

There are a number of advanced options available that can be used to modify the behavior of CDRouter’s WAN DHCPv6 server. Please see the CDRouter IPv6 User’s Guide for more information.

Configuration Example 3

In this configuration CDRouter will send router advertisements on the WAN advertising a prefix composed using the ipv6WanIspIp and ipv6WanIspPrefixLen testvars. In this example, CDRouter will advertise the prefix 3001::/64 on the WAN.

This configuration requires that the testvar ipv6PPPoEAddressMode be included and set to a value of autoconf. This testvar was first introduced in CDRouter 7.1.

# -- Enable IPv6 within CDRouter
testvar supportsIpv6         yes

# -- Set the IPv6 WAN mode to PPPoE
testvar ipv6WanMode          PPPoE

# -- Enable DHCPv6 for prefix delegation
testvar dhcpv6WanEnablePD              yes
testvar dhcpv6WanAssignPrefix          3001:dddd::
testvar dhcpv6WanAssignNextPrefix      3001:ddde::
testvar dhcpv6WanAssignPrefixLen       48
testvar dhcpv6PDLatency                30

# -- Enable static WAN addresses
testvar ipv6PPPoEAddressMode  static
testvar ipv6WanIspIp          3001::1
testvar ipv6WanIspAssignIp    3001::2
testvar ipv6WanIspNextIp      3001::3
testvar ipv6WanIspPrefixLen   64

# -- Configure DNS servers that will be provided via DHCPv6 Option 23
testvar ipv6WanDnsServer       3001:51a:cafe::2
testvar ipv6WanBackupDnsServer 3001:51a:cafe::3

# -- LAN configuration
testvar ipv6LanMode         autoconf
testvar ipv6LanIp           ::%eui64%
testvar ipv6LanSubnetId     1111
testvar ipv6LanPrefixLen    64
testvar ipv6SupportsRdnss   yes
testvar ipv6DNStoLAN        yes
testvar ipv6RAInterval      300

Configuration Example 4

In this configuration the DUT’s global IPv6 address on the WAN is manually configured and must match the value of the testvar ipv6WanIspAssignIp. In addition, the DUT’s gateway and prefix length must match the testvars ipv6WanIspIp and ipv6WanIspPrefixLen, respectively.

# -- Enable IPv6 within CDRouter
testvar supportsIpv6         yes

# -- Set the IPv6 WAN mode to PPPoE
testvar ipv6WanMode          PPPoE

# -- Enable DHCPv6 for prefix delegation
testvar dhcpv6WanEnablePD              yes
testvar dhcpv6WanAssignPrefix          3001:dddd::
testvar dhcpv6WanAssignNextPrefix      3001:ddde::
testvar dhcpv6WanAssignPrefixLen       48
testvar dhcpv6PDLatency                30

# -- Enable autoconf for WAN address assignment
testvar ipv6PPPoEAddressMode  autoconf
testvar ipv6WanIspIp          3001::1
testvar ipv6WanIspAssignIp    3001::2
testvar ipv6WanIspNextIp      3001::3
testvar ipv6WanIspPrefixLen   64

# -- Configure DNS servers that will be provided via DHCPv6 Option 23
testvar ipv6WanDnsServer       3001:51a:cafe::2
testvar ipv6WanBackupDnsServer 3001:51a:cafe::3

# -- LAN configuration
testvar ipv6LanMode         autoconf
testvar ipv6LanIp           ::%eui64%
testvar ipv6LanSubnetId     1111
testvar ipv6LanPrefixLen    64
testvar ipv6SupportsRdnss   yes
testvar ipv6DNStoLAN        yes
testvar ipv6RAInterval      300

Testing Exercises

CDRouter 6.3 includes a dedicated test module, pppoev6-c, for verifying basic protocol functionality of PPPoE based IPv6 connections on the WAN. This module is very similar to the existing IPv4 PPPoE test module pppoe-c. In addition, a number of CDRouter’s IPv6 test modules can also be run against the DUT when PPPoE is used on the WAN for IPv6. The following table indicates which of CDRouter’s IPv6 test modules are applicable for each of the configuration examples discussed above.

An interesting testing exercise related to PPPoE for IPv6 is to run the same PPPoE IPv6 configuration on top of all of the different IPv4 WAN modes supported by the DUT. This will ensure that the DUT’s IPv6 PPPoE behavior is consistent regardless of the IPv4 WAN mode chosen. Extending this exercise further, the IPv4 PPPoE renumbering tests could be run with PPPoE enabled for IPv6 to ensure that IPv4 related changes do not impact IPv6 connectivity.

Get articles like this in your inbox: