When it came to planning an IPv4 network, we were used to carving up our networks into various different length subnets, depending on our requirements.

IPv6 changes things considerably in this respect, enforcing a fixed prefix length of /64.

So whilst in IPv4 we might have thought anything up to a /22 (1022 usable addresses) was probably OK, in IPv6 we should be universally deploying /64 ranges that contain a mind boggling 18 Quintillion usable addresses. (Assuming we are to remain compliant with RFC4291)

The idea that each IPv6 subnet contains a great deal more IP addresses than there are in the entirety of IPv4, seems a bit alien at first, but the idea of using /64 ranges everywhere is ultimately to try and keep things as simple as possible, which in turn it is hoped will speed up IPv6 adoption. (RFC7421 looks at some of the concerns around the 64-bit prefix in more detail.)


Wasteful Addressing?

Given that the main driver behind IPv6 is the exhaustion if IPv4 addresses, then allocating IPv6 addresses in blocks of 18 Quintillion seems somewhat wasteful.

When you look at the numbers though, the total number of IPv6 addresses is in the region of 3.4 * 1038. It is said that if you assigned IPv6 addresses at a rate of 1 million every microsecond, it would still take 20 years to exhaust the address space.
So whilst you could argue that the use of /64 everywhere is wasteful, the counter argument would be that the sheer quantity of IPv6 addresses available means that this wastefulness is inconsequential.


IPv6 and L2 Domains

Don't take the enforcment of /64 subnets everywhere as a license to run huge L2 domains though. Layer 2 is still Layer 2, regardless of which version of IP you are running.

For starters, by way of transition, it's more than likely that your IPv6 deployment will coexist with IPv4 on the same network for some time to come.

Your IPv4 traffic has not gone away. In fact you've just made the network busier by also deploying IPv6. And as previously discussed, if you're not running MLD snooping on your network, then your IPv6 multicast traffic is being flooded everywhere like IPv4 broadcast anyway.

If you're going to build and run an IPv6 only network, and your switches support MLD snooping, and can handle a large number of multicast groups, then it may be that you could run larger L2 domains than before. Whether or not you should though, is up for debate.


Prefix lengths > /64

If we are to remain RFC compliant, then the only scenario currently where a prefix length longer than /64 is considered acceptable, is the use of /127 on point to point links. (As per RFC6164)

However, many IPv6 implementations will allow you to configure longer (or shorter) prefix lengths than /64.

So what are the implications of using, for example, a /120 instead of a /64? (IPv6 /120 being roughly the same size as IPv4 /24)

For starters, using anything other than a /64 will break SLAAC. (Although on a server subnet you might want to turn this off anyway)

According to RFC5375, not using a /64 will also break several other things, most notably Neighbour Discovery.

Having said that, there are plenty of people out there who say they are running longer prefixes without issue, so it may come down to individual device/vendor/os implementation.

Even if you are happy with the functionality running a /120 though, there is a chance that the ASIC in your router or L3 switch has been optimised for prefixes no longer than /64 (in line with the specification), and might perform comparatively poorly with prefixes longer than that.

The advice generally is to try to stick to using /64 subnets if you can, but if you must use a longer prefix for some reason, then make sure it's tested thoroughly. (Both functionally speaking, and in terms of performance)


IPv6 Public Announcements

If you do go down the route of getting PI address space from your Regional Internet Registry, (ie RIPE), then the smallest range / longest prefix you will be allocated is a /48. (65,536 /64s)

In most cases, a /48 is also the longest IPv6 prefix length you can announce over the internet right now without it being filtered out. (In IPv4 we can announce ranges as small as /24)

One caveat of this, is that in the recent past there was a suggestion that some organisations were filtering prefixes longer than /32. (RIPE wrote a couple of articles on this subject: Visibility of Prefix Lengths and IPv6 /48 Filtering) In theory you shouldn't have to worry about this now but it might be useful to be aware of this in case you're unlucky enough to run into issues.


IPv6 Basics Part 1 - Address Format & Types
IPv6 Basics Part 2 - Unicast Addressing
IPv6 Basics Part 3 - Protocol Differences
IPv6 Basics Part 4 - Multicast
IPv6 Basics Part 5 - Planning an IPv6 Network