Testing IPv6 over PPPoE with CDRouter
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 connectivity is 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.
# -- 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.