IPv6 Prefix-Delegation Planner¶
Slice a delegated parent IPv6 prefix (e.g. a /48 from your upstream)
into nibble-aligned child prefixes (e.g. /56s for downstream sites or
customers) and report how much of the parent space is still free.
This tool is operator math, not detection. The parent prefix and desired child length come from your delegation policy; nothing is inferred from address structure.
When to use it¶
- Sub-delegating a
/48from your RIR or upstream into per-site/56s. - Carving an ISP's customer pool into per-customer
/56or/60blocks. - Sizing a lab plan against a documentation
/48(2001:db8::/48). - Auditing how many
/64LANs a child block contains.
Inputs¶
| Field | Required | Description |
|---|---|---|
| Parent IPv6 prefix | yes | CIDR form, e.g. 2001:db8::/48. Host bits are zeroed before slicing. |
| Child length | yes | Integer 1..128. Must be greater than the parent length. |
| Count | yes | How many child prefixes to allocate (≥ 1). |
| Start offset | no | Skip the first N child prefixes. Useful for resuming an in-progress plan. Default 0. |
| Nibble-align | no | When on (default), snap the child prefix length up to the next multiple of 4 so each child is a clean nibble boundary. |
Output¶
The result is a table of child prefixes plus a parent summary:
- Parent prefix — canonicalised CIDR (host bits zeroed, lowercase, compressed).
- Child length — the normalised length after nibble-alignment.
- Total children —
2 ** (child_length - parent_length). Counts that overflow signed 64-bit ints (e.g. a/32→/128plan with2^96children) print as the"2^N"string form. - Free remaining — total minus
(start_offset + count).
For each child:
- # — index within the parent (0-based; respects
start_offset). - Prefix — child CIDR.
- First / Last — the first and last IPv6 address in the block.
- /64s — how the child relates to the standard
/64LAN sizing: - decimal count (or
"2^N") when the child is larger than a/64, 1when the child is itself a/64,subset of /64when the child is smaller than a/64.- A copy button on each row.
Example: slice a /48 into /56s¶
| Parent | Child len | Count | Result |
|---|---|---|---|
2001:db8::/48 |
56 | 4 | 2001:db8::/56, 2001:db8:0:100::/56, 2001:db8:0:200::/56, 2001:db8:0:300::/56 |
Total children: 256. Free remaining: 252.
Nibble alignment¶
IPv6 addresses are written in nibbles (4-bit groups). Asking for a /49
child puts the boundary mid-nibble, which is legal but ugly:
2001:db8::/49 and 2001:db8:0:8000::/49. With nibble-align on,
the planner snaps the requested length up to the next multiple of 4
(/49 → /52) so the children print cleanly and align with DNS reverse
zones (ip6.arpa is a per-nibble hierarchy).
Turn nibble-align off if your delegation policy genuinely uses non-nibble boundaries.
Overflow / very large counts¶
The arithmetic is GMP throughout, so any prefix-length difference is
supported. For clean powers of two with exponent ≥ 63, counts are
returned in the compact "2^N" form rather than as huge decimal strings,
matching the convention used by VLSM6 and
range6.
Shareable URLs¶
The drawer's form state round-trips via GET parameters:
?tab=ipv6&tool=prefix-plan
&prefix_plan6_parent=2001:db8::/48
&prefix_plan6_child_length=56
&prefix_plan6_count=4
&prefix_plan6_start_offset=0
&prefix_plan6_nibble_align=1
Set prefix_plan6_nibble_align=0 to disable nibble alignment via URL.
REST API¶
POST /api/v1/prefix-plan6 — see API reference. Same input
schema as the form, returns the parent summary, child list, and
free-space report.