Skip to content

IPv6 PD over PPP

IPv6 Prefix Delegation over PPP enables routers to delegate IPv6 prefixes to PPP clients, allowing those clients to assign addresses to their downstream networks. This functionality is essential for service providers deploying IPv6 to subscribers using PPPoE or other PPP-based connections.

When a PPP client connects, the router automatically creates a dynamic DHCPv6 server for that interface and delegates prefixes from a configured pool. The client can then run its own DHCPv6 client to obtain a prefix from the delegated pool and assign addresses to local networks.

IPv6 Prefix Delegation (PD) over PPP provides a mechanism for distributing IPv6 address space to PPP clients in a scalable manner. Rather than each client requiring manual IPv6 configuration, the router delegates prefixes dynamically as clients connect.

The process works as follows: First, the administrator configures an IPv6 pool and assigns it to a PPP profile. When a PPP client connects, the router creates a dynamic DHCPv6 server instance bound to that client’s interface. The client then runs a DHCPv6 client to request and receive a prefix from the delegated pool. This prefix can be subdivided and assigned to downstream networks connected to the client.

This approach mirrors the IPv4 address assignment used in traditional PPP deployments but extends the concept to IPv6’s larger address space. The delegated prefix allows the client router to create unique IPv6 subnets for its downstream devices while maintaining proper IPv6 routing.

Setting up IPv6 PD over PPP requires configuring several components: an IPv6 pool for prefix delegation, PPP profile settings, PPPoE server configuration, and client-side DHCPv6 client setup.

First, create an IPv6 pool that will be used for prefix delegation:

/ipv6 pool add name=pd-pool prefix=2001:db8:1000::/36 prefix-length=60

This pool provides /60 prefixes to each PPP client, allowing them to create /64 subnets for downstream networks.

Configure the PPP profile to use this pool:

/ppp profile set default dhcpv6-pd-pool=pd-pool

The dhcpv6-pd-pool parameter instructs PPP to automatically create DHCPv6 server entries when clients connect using this profile.

Enable the PPPoE server:

/interface pppoe-server server add service-name=ipv6-pppoe interface=ether1

On the client router, configure a PPPoE client:

/interface pppoe-client add name=pppoe-out1 interface=ether1 user=customer1 service-name=ipv6-pppoe

Configure a DHCPv6 client to request a prefix:

/ipv6 dhcp-client add interface=pppoe-out1 pool-name=pool1 pool-prefix-length=64 add-default-route=yes

The pool-prefix-length=64 specifies that the client wants a /64 prefix from the pool. The add-default-route=yes parameter adds an IPv6 default route via the PPP interface.

On the server, verify the dynamic DHCPv6 server was created:

/ipv6 dhcp-server print

The output should show a dynamically created server for the PPP interface:

Flags: D - dynamic, X - disabled, I - invalid
# NAME INTERFACE ADDRESS-POOL LEASE-TIME
0 D <pppoe-customer> <pppoe-customer> pd-pool 3d

Check bound prefixes:

/ipv6 dhcp-server binding print

This shows which prefixes have been delegated to connected clients.

On the client, verify the prefix was received:

/ipv6 dhcp-client print

A bound client shows the delegated prefix:

Terminal window
# INTERFACE STATUS PREFIX EXPIRES-AFTER
0 pppoe-out1 bound 2001:db8:1000:0004::/60 2d23h59m

Check the local pool:

/ipv6 pool print

The client now has its own pool from which it can assign addresses:

Terminal window
# NAME PREFIX PREFIX-LENGTH
0 D pd-pool/2001:db8:1000:4 2001:db8:1000:0004::/60 64

Careful planning of prefix delegation pools ensures efficient address usage and room for network growth.

Each PPP client receives a prefix based on the pool’s prefix length. The difference between the pool prefix and delegated prefix determines how many prefixes are available:

Pool PrefixDelegated PrefixAvailable Clients
/48/56256
/48/604096
/56/6016
/36/601,048,576

For most deployments, a /48 pool with /56 or /60 delegation provides ample address space while remaining manageable.

When a /60 prefix is delegated, the client receives 16 /64 subnets. Each /64 subnet can accommodate approximately 18 quintillion IPv6 addresses, practically unlimited for any downstream network:

2001:db8:1000:0004::/60
├── 2001:db8:1000:0004::/64 (WAN link)
├── 2001:db8:1000:0005::/64 (LAN 1)
├── 2001:db8:1000:0006::/64 (LAN 2)
├── ...
└── 2001:db8:1000:000f::/64 (LAN 16)

Prefix delegation introduces additional considerations for network security and access control.

For ISP deployments, consider creating separate pools for different service tiers:

/ipv6 pool add name=residential-pool prefix=2001:db8:1000::/40 prefix-length=56
/ipv6 pool add name=business-pool prefix=2001:db8:2000::/40 prefix-length=52

Apply different profiles to different user groups to allocate appropriate address space.

Ensure firewall rules permit DHCPv6 traffic:

/ipv6 firewall filter add chain=input protocol=udp src-port=546 dst-port=547 action=accept

This allows DHCPv6 client requests and server responses necessary for prefix delegation.

When IPv6 PD over PPP does not function as expected, several common issues are typically responsible.

Verify the server has available prefixes in the pool. Check pool usage:

/ipv6 pool print detail

Ensure the PPP profile references the correct pool:

/ppp profile print detail

Confirm the DHCPv6 server is running:

/ipv6 dhcp-server print

On the client, verify the DHCPv6 client configuration includes add-default-route=yes:

/ipv6 dhcp-client print

Without this parameter, the client will receive a prefix but may not install a default route.

If the server pool has a /60 prefix but clients request /56, the request will fail. Ensure the pool prefix is larger (numerically smaller) than the requested prefix length:

/ipv6 pool add name=my-pool prefix=2001:db8::/36 prefix-length=60

A /36 pool can delegate /60 prefixes, but cannot delegate /56 prefixes.