Why does the DNS A root server differentiate between IPv6 and IPv6 /64 addresses in calculating statistics?

Note first that there are separate graphs for query volume, which concerns itself with total queries received (therefore counting each individual query), and query sources, which presumably identifies each unique source.

Actually, if we go to the raw data, the data seems to be under paths such as /rssac-metrics/raw/2021/07/unique-sources -- unique sources.

So we know it's counting how many unique IP addresses are making queries, per day.

Now, while it's typical for an IPv4 network to have a single publicly-routable IPv4 address, with individual hosts sharing that address via NAT, IPv6 addresses are assigned differently.

With IPv6, each individual host in a network is expected to have its own IPv6 address. The network as a whole is expected to be a /64 in size, so each network can contain some 2(128-64) = 264 ~= 1.8 x1018 addresses. Networks of /64 size are required for automatic address assignment (SLAAC) to work.

This also means individual host addresses in IPv6 are rather unpredictable and can change at any time. You might see a new unique never-used-before IPv6 address every time a phone reconnects to a Wi-Fi network.

A IPv6 /64 network is the closest equivalent to a single IPv4 address for many statistical purposes, which makes it relevant when graphing something like unique query sources for a root DNS server.


It does get a little weirder when we consider that the likely query sources for a root DNS server are typically not residential: most residential networks use a caching DNS server that resolves through few ISP-provided servers, rather than doing recursive lookups against the root servers.

Probably a decent chunk of those query sources would be commercial networks, where it's more likely that individual servers have their own IPv4 address. Here, the exact IPv6 network configuration can be rather more complex, ranging from a single /64 covering all servers, to separate /64 networks for different groups of servers, to sometimes even a single /64 assigned to a single server (weird, but not impossible).

It does mean the "1 IPv4 ~= /64 IPv6" assumption falls apart a bit, since in a commercial environment it's entirely possible "many IPv4 ~= /64 IPv6".


Addendum, it's recommended that ISPs assign /48s or /56s to end users, who can then subdivide into many /64 networks. But in most situations, especially residential, only a single /64 is actually used.