The M9 metrics analyze the concentration of the authoritative DNS server market. We want to estimate the relative share of companies providing DNS servers to independent domain owners. We ave observed that the answer varies depending on which domains are considered. We extract from the "majestic million" list a set of five categories:

  1. Top 100 domains,
  2. Next 900 domains, i.e. top 1,000 minus top 100
  3. Next 9000 domains, i.e. top 10,000 minus top 1,000
  4. Next 90000 domains, i.e. top 100,000 minus top 10,000
  5. Next 900000 domains. i.e. top 1M minus top 100,000

To estimate the market for small domains not in the majectic million list, we analyze the domains listed in the COM Zone. This give us a total of six metric categories, identified as:

Submetric Category
M9.1 Top 100 domains,
M9.2 Domains 101 to 1,000,
M9.3 Domains 1,001 to 10,000,
M9.4 Domains 10,001 to 100,000,
M9.5 Domains 100,001 to 1M.
M9.6 Domains in COM zone

In each of these categories, we count the number of "services" that provide servers for the selected domain. For that, we start by getting the NS records for the domain, and we try to recognize the "service" to which that record belongs. In many cases, this is just the apex name, but we also use tables of "equivalent names" to recognize big services like cloudflare or AWS. There are very often multiple NS records for a domain, which very often point to a single service but sometimes point to several different services. We adopt a couple of simple convention:

We get 4 submetrics:

Submetric Key Definition
M9.x.1 Average number of service references for a domain,
M9.x.2 Smallest number of services accounting for 50% references,
M9.x.3 Smallest number of services accounting for 90% references,
M9.x.4service name Top services and their relative share of references.

The M9 web page displays a subset of these statistics.

Aggregations

Our goal is to measure the concentration of services. The process start with the enumeration of name server records, which identify specific servers. A given service will include several servers. Google, for example, uses servers like "ns1.google.com", "ns2.google.com.", or "ns4.google.com". As a first rule, we look at patterns described in the Public Suffix List to group all name servers name servers sharing a public suffix under that suffix.

In a few cases, we find services that use multiple names. AWS, for example, has a long list of server domains such as "awsdns-21.net", "awsdns-08.com", or "awsdns-43.co.uk". Services like Azure DNS, Ultra DNS, DNS UI and many others use similar patterns. The code uses a combination of pattern matches and tables to map these multiple names to just one entry per service. That's why, for example, we present all results for AWS under the name "awsdns-??.com".