Since IPv6 hype was launch several years ago, many people (incl. me) were struggling how to split IPv6 subnet correctly. Honestly, I wasn’t network engineer, but learning network fundamental is not a big deal (especially IPv6, nowadays, it’s a new protocol!). Since it was launch at 1990 (former IPNG), based on APNIC Labs Survey, the adoption of native IPv6 still low.
The fundamental of TCP/IP is how to correctly split the subnet and know the routing works. At July 25th, I was attend the Advance IPv6 Routing Workshop by APNIC and learn with many senior engineers right there. The most interesting part is, I know how to split IPv6 subnet correctly without using any IPv6 calculator. I’ll write down how to do it for self notes, and I hope it is usefull for you too.
2404:6800::/32 (Google IPv6 Block Asia Pacific)
We must know that IPv6 have 128-bit address, separated by colon (
:) and have 8 (eight) groups, then IPv4 only have 32-bit address, separated by dots (
.) and only have 4 (four) groups.
So, if the rest IPv6 have 128-bit address, then each group should have 16-bit.
Shortest IPv6 Prefix:
2404:6800::/32 128-bit addresses
Longest IPv6 Prefix:
2404:6800:0000:0000:0000:0000:0000:0000 128-bit addresses
Then if I want split it into small subnets (eg.
/48), how? And which first prefix should be?
For the example, we will split IPv6 Prefix
/48, then found the 48-bit.
2404:6800:0000:0000:0000:0000:0000:0000 -> 128-bit total 16 16 16 16 16 16 16 16 -> 128-bit total (from 16-bit x 8 block)
Please keep in mind, IPv6 is a hexadecimal. So it will start counting from
Then, in every member in a group(s) have 4-bit address [
How we found that 48-bit address from
So we must find the 48th bit from
2404:6800::/32, then we need 16-bit left.
 0 0 0 0 -> each number represent 1-bit operation(s) | | | | | | | +---- 0 1 2 3 etc (2^0) | | +------ 0 2 4 6 etc (2^1) | +-------- 0 4 8 c etc (2^2) +---------- 0 8 0 8 etc (2^3)
2404 on first group, have first 16-bit address.
6800 on second group, have second 16-bit address, so total bit are 32-bit right now.
0000 on third group, have third 16-bit address, so total bit are 48-bit right now.
Voila! We’ve found the 48th bit. The 48th bit are on third group, and first IPv6 is
Then another case, how we found
/33 prefix? You can use the referrence diagram above and let’s find out.
IPv6 on /32 Subnet: 2404:6800:0000:0000:0000:0000:0000:0000
IPv6 on /33 Subnet: 2404:6800:
See the marked zero
/33 subnet, it’s the hint to find the subnet, and crosscheck with the diagram. So the
/33 prefix should be
Hope it helps!