Chris Pollock from io Networks was kind enough to share yet another method of implementing DHCPv6 prefix delegation on PPP interfaces in his comment to my DHCPv6-RADIUS integration: the Cisco way blog post: if you tell the router not to use the Framed-IPv6-Prefix passed from RADIUS in the list of prefixes advertised in RA messages with the no ipv6 nd prefix framed-ipv6-prefix interface configuration command, the router uses the prefix sent from the RADIUS server as delegated prefix.
This setup works reliably in IOS release 15.0M. 12.2SRE3 (running on a 7206) includes the framed-IPv6-prefix in RA advertisements and DHCPv6 IA_PD reply, totally confusing the CPE.
This feature works great for CPE routers connecting to the PE-router (BRAS), but if the PPP session is established directly from an end host, the host still needs an IPv6 prefix on the PPP link itself, so you have to address the virtual access interfaces from a local IPv6 address pool. Complete configuration of the virtual template interface is included below:
no ip address
peer default ipv6 pool PPP
no ipv6 nd prefix framed-ipv6-prefix
ipv6 nd other-config-flag
no ipv6 nd ra suppress
ipv6 dhcp server PPP-Radius
ppp authentication pap
ppp direction callin
You have to configure an IPv6 DHCP pool to be able to start DHCP server on the virtual access interface. The DHCP pool needs just the DNS server address:
ipv6 dhcp pool PPP-Radius
Last but not least, you need a local IPv6 address pool:
ipv6 local pool PPP FEC0:1:2300::/48 64
... and a corresponding route to null interface that you can advertise into your IGP or BGP:
ipv6 route FEC0:1:2300::/48 Null0
Using Framed-IPv6-Prefix as delegated DHCPv6 prefix is only one of the many ways you can configure DHCPv6 prefix delegation on Cisco IOS. Most of them, including local DHCPv6 server, DHCPv6 relay, proprietary RADIUS integration with two usernames and RFC 4818 are described in my Building IPv6 Service Provider Core webinar.