0

Short Introduction: I'm trying to create a distance matrix of the latency between DNS servers in order to predict p2p latencies using matrix factorization. To use the prediction algorithm, I need about 20 DNS servers and the latencies between them.

Servers DNS1 DNS2 DNS3 ... Client 1
DNS1 0 ? ? ... ping
DNS2 ? 0 ? ... ping
DNS3 ? ? 0 ... ping
... ... ... ... 0
Client1 ping ping ping

Knowing the distances between the DNS servers, I can add a client by pinging all DNS servers and entering the distances. Using this distance matrix, I can now use matrix factorization to predict the distance between two clients.

The Problem: Without access to the DNS servers, I don't quite know how to get the latencies between them. Can I use a traceroute or recursive lookup?

I'm considering hosting about 20 pingable servers myself in order to get one initial matrix. But this costs a lot of money and is kind of a waste of resources.

Maybe someone has an idea how to get these distances from a set of servers. (They don't necessarily have to be DNS servers)

This is a project that has already collected a huge distance matrix but is super old: https://pdos.csail.mit.edu/archive/p2psim/

This is the paper for the algorithm: https://dl.acm.org/doi/pdf/10.1145/1028788.1028827

Seife
  • 1
  • 1
  • "_**The Problem:** Without access to the DNS servers, I don't quite know how to get the latencies between them. Can I use a traceroute or recursive lookup?_" That is exactly the problem, and you have no way to measure it without testing from the servers themselves. Also, understand that ping is _not_ a good measure of latency for DNS because ping uses ICMP (a low-priority protocol), and you cannot depend on it to reflect how other protocols, such as TCP or UDP used by DNS servers, will perform. – Ron Maupin Jan 30 '23 at 13:37
  • I am using this for a scheduling algorithm in a distributed edge computing system. Since the task is only to get a set of predicted closest nodes to the client, I don't necessarily need the exact latency prediction, but only a sorted list. After the client connects to the set of nodes, it updates the distance matrix. The biggest problem is just getting a distance matrix of a set of about 20 pingable nodes without hosting them myself. – Seife Jan 30 '23 at 13:43
  • You cannot get latency between hosts without controlling the hosts. Remember that latency can vary by direction so that latency from A to B can be very different that latency from B to A. Also, TCP or UDP can be a much different latency than ICMP. Also, many ISPs look for and reroute traceroute, even if it uses something other than ICMP. You could do something like this if you control the hosts, but you cannot unless you control the hosts. – Ron Maupin Jan 30 '23 at 13:48
  • Also, remember that latency measurements between two hosts can vary greatly by how busy each host is. It can look artificially hign at some point, so you really need to measure at various times to get a picture of what the real latency may be. – Ron Maupin Jan 30 '23 at 14:01

1 Answers1

0

Alright, I might have found a great solution.

https://www.azurespeed.com/Azure/RegionToRegionLatency

Microsoft offers a distance matrix with RTT between their availability zones. These are not super current, but should be enough.

There is also a method to measure these yourself: https://learn.microsoft.com/en-us/azure/network-watcher/view-relative-latencies

Seife
  • 1
  • 1