In order to show how to add IPv6 to an existing PPPoE IPv4 implementation, it would take a whole new lesson. Maybe we can suggest it to Rene as a Lesson Idea to do that at some point? For the time being, let me give you a brief summary.
The first thing you would do is create a local IPv6 pool for the PPPoE server similar to the following:
ipv6 local pool PPPOE_IPv6POOL 2001:ABCD:1234:1::/60 64
This means that the pool has a prefix of /60 from which sub-prefixes of length 64 will be delegated.
Next, in the Virtual Template, the following should be added:
ipv6 address FE80::10 link-local
ipv6 nd ra lifetime 21600
ipv6 nd ra interval 4 3
peer default ipv6 pool PPPOE_POOL6
Note here that for IPv4, the IPv4 address to be assigned to the client is negotiated, where for IPv6 it negotiates only the interface identifier, the prefix information is performed through SLAAC. The
ipv6 nd ra commands are used to indicate the usefulness of the router as a default router on this interface. SLAAC will use this as the default gateway for any assigned IPv6 addresses.
On the client side, you should add on the Dialer interface:
ipv6 address FE80::20 link-local
ipv6 address autoconfig default
This results in an address assigned to the client with the associated default gateway using SLAAC.
With this configuration, both IPv4 and IPv6 will use the same PPP session. Now if you want to use prefix delegation for clients on the inside of the CPE, it would be a good idea to use DHCPv6 instead of SLAAC.
More about prefix delegation can be found here:
I hope this has been helpful!