Howto Subnet IPv612 Mar 2009
I've been trying to get my head around IPv6 subnetting for some time now. Today was finally the day that forced the issue...
First some background:
All IP addresses (IPv4 and IPv6) are allocated in large blocks to a regional registry (ARIN, RIPE, etc...) these registries then in turn allocate addresses down to ISPs, ISPs to customers and so on. By default the registry will allocate a /32 to an ISP and the ISP is supposed to allocate a /48 to a customer. The IPv6 equivalent of a IPv4 /24 subnet is a /64 which is the space a customer should break their network segments into.
This is where my brain starts to hurt.
An IPv6 /32 is 2^16 (65536) /48 subnets, which in turn are each 2^16 /64 subnets. A /64 is 2^64 addresses, the square of the size of the entire IPv4 Internet. It took me a while to find a calculator that would actually give the expanded result - 18,446,744,073,709,552,000.
The numbers are just unbelievably large. Anyways back to the problem at hand, how does an ISP properly subnet their /32 space to customers (or better put what are the breakpoints in the subnets)? The answer is incredibly simple, since IPv6 is going to be subnetted based on the existing ":" octet separator all you need to do is increase the number and volia. Phyber's IPv6 allocation is 2637:f238/32 which means the subnets are:
And so on and so on. Another trick, IPv6 isn't just 0-9, the numbering is 0-9 + a-f or:
It is a ridiculous amount of IP space. I'll post more when I figure out what we are doing for our cross connects and loopback interfaces.