Parakalix

VLSM subnet planner

Give it the block you were issued and a list of what has to live in it. For IPv4 it sizes each subnet from the host count and a growth buffer; for IPv6 it counts the /64s each thing needs. Either way it packs them largest-first so nothing is stranded, and tells you plainly when the block is too small — including the prefix to ask for instead.

Blocks

Already in use

Subnets that already exist and cannot move — a command post that is already numbered, a range the last unit left in place. Anything inside one of your blocks is held at that exact address and the plan is built around it. Anything outside them is checked for overlap and otherwise left alone.

What has to fit

Quick-add fills a row with a typical size — change it. Sizes are hosts, before the buffer. Transit rows are point-to-point links and loopback rows are single addresses; neither gets a buffer, because neither grows.

How it allocates, and what the numbers mean

Sizing. A subnet's size is the host count times the buffer, plus the two addresses every IPv4 subnet spends on the network and broadcast addresses, rounded up to the next power of two. 60 hosts with a 20% buffer is 72 usable, which needs a /25 (126 usable), not a /26 (62). The spare column is what is left after your hosts and the buffer, so you can see which subnets are nearly full at the size they were given.

Packing. Subnets are allocated largest-first, each into the smallest free block that will still hold it, taking the lowest address when two blocks are the same size. Both halves of that matter: largest-first stops a /30 handed out early from costing you a /24, and smallest-block-that-fits stops a small subnet from being dropped into a large free space and stranding the rest of it. Every subnet lands on its own boundary, so nothing here produces an address a router will reject.

When it does not fit. The tool does not just say no. It works out the smallest prefix that would hold the plan — by trying to pack it, not by adding the sizes up, because alignment wastes space that arithmetic alone does not show — and gives you that prefix to request.

Transit links. /30 gives two usable addresses and is what most routers and most unit SOPs expect. /31 gives two usable addresses in half the space (RFC 3021) and is widely supported on modern router platforms - but not on every radio, and not on everything still in service. Check the far end before you plan on it.

Already in use. A subnet that exists and cannot move is entered under Already in use. If it falls inside one of your blocks it is taken at that exact address before anything else is allocated, so the rest of the plan is built around it; if it falls outside them it is only checked for overlap, because it is not yours to hand out. Reserved subnets appear in the table and the diagram in amber.

At 2x. The last column answers the question that decides whether a plan survives contact: if this subnet's host count doubled, would the block it was given still hold it? fits means yes. A prefix there means you would need that much to absorb the growth.

Two pictures, and they say different things. The bar is the block drawn to scale, so a gap in the middle looks like a gap - it is how you see fragmentation. The diagram below it is the same plan drawn as a network, which is the version that belongs in an annex.

Nothing leaves the page. There is no server here. The plan is computed in your browser, and the only thing stored is your last plan, in this browser, so the page comes back the way you left it. Copy a link to this plan puts the whole plan in the URL fragment, which is never sent to any server - so a shared link carries the plan itself and goes only where you send it. Anyone opening that link sees that plan rather than their own saved one.