IPv6 and prefix pools
Dual-stack subscribers get a framed /64 and, where requested, a delegated prefix. IPv6 prefix pools are role-neutral: the reference site decides whether a drawn prefix is used as the NA or SLAAC prefix, or as the delegated PD prefix, so the same pool can be referenced either way.
Defining a prefix pool
assign must be longer than the base prefix length; the number of assignable prefixes is 2 to the power of assign minus base, capped at 65536. Distinct pools must not overlap. A pool named default — or, failing that, the first pool defined — is what an empty pool reference draws from. Creation applies live on commit and a new pool is drawable immediately; removing or reshaping a pool that still has live allocations keeps the old shape until restart, so no subscriber prefix is orphaned.
ipv6 pool <name> <base>/<plen> assign <plen>
ipv6 pool <name> remove
ipv6 pool res 2001:db8:100::/40 assign 56
commit ; save
show ipv6 pool # base/assign, in-use, free
Role-neutral pools
A pool carries no notion of what it is for. The reference site decides: ppp ipv6 pool and dhcpv6 pool draw a framed /64 for NA and SLAAC, while ppp ipv6 pd-pool and dhcpv6 pd-pool draw a delegated PD prefix. The same pool can therefore be referenced both ways, which is either useful or a trap depending on whether you meant it.
ppp ipv6 pool res # framed /64 (NA / SLAAC) ppp ipv6 pd-pool res # delegated PD prefix commit
One policy name, both stacks
RADIUS selects which pool by name in a fixed order: the Netvyn IPv6 pool VSAs first, then the unified Framed-Pool attribute 88, then the configured pool name. Because Framed-Pool covers both address families, a single policy name walls off v4 and v6 together — Framed-Pool=Expired places the subscriber in the v4 and the v6 Expired pool at once. That is the classic walled garden, achieved with no separate v6 attribute. RADIUS-supplied prefixes always win over any configured pool.
Subscriber DNS
IPv6 DNS is delivered both as the RA RDNSS option, for SLAAC clients, and via DHCPv6, so any CPE learns it. Both families' DNS apply live on commit and are shared by every pool, which is why they are configured globally rather than per pool.
ipv6 dns <primary> [secondary] ipv6 dns none commit show ipv6 dns