选择网络中最近的节点

选择网络中最近的节点

网络延迟对与网络交互的应用程序或服务的性能有重大影响。 延迟越低,性能越高。 对于任何网络服务都是如此,从常规网站到数据库或网络存储。

域名系统 (DNS) 就是一个很好的例子。 DNS 本质上是一个分布式系统,根节点遍布全球。 要简单地访问任何网站,您首先需要获取其 IP 地址。

我不会描述递归遍历域区域“树”的整个过程,但会限制自己的事实,为了将域转换为 IP 地址,我们需要一个 DNS 解析器来完成所有这些工作我们。

那么,从哪里获取 DNS 解析器地址呢?

  1. ISP 提供其 DNS 解析器的地址。
  2. 在 Internet 上查找公共解析器的地址。
  3. 选择您自己的路由器或使用家庭路由器内置的路由器。

这些选项中的任何一个都可以让您在万维网上享受无忧无虑的冲浪,但如果您需要将大量域名转换为 IP,那么您应该更加谨慎地选择解析器。

正如我已经写过的,除了 ISP 解析器之外,还有很多公共地址,例如,您可以查看此列表。 其中一些可能更可取,因为它们比默认解析器具有更好的网络连接。

当列表很小时,你可以轻松地手动“ping”它并比较延迟时间,但如果你甚至拿上面提到的列表,那么这个任务就已经变得不愉快了。

因此,为了让这项任务变得更容易,充满冒名顶替综合症的我勾画出了我关于 Go 的想法的概念验证,称为 靠近点.

例如,我不会检查整个解析器列表,而只会检查最流行的解析器。

$ get-closer ping -f dnsresolver.txt -b=0 --count=10
Closest hosts:
	1.0.0.1 [3.4582ms]
	8.8.8.8 [6.7545ms]
	1.1.1.1 [12.6773ms]
	8.8.4.4 [16.6361ms]
	9.9.9.9 [40.0525ms]

有一次,当我为自己选择解析器时,我只检查主要地址(1.1.1.1、8.8.8.8、9.9.9.9)——毕竟它们是如此美丽,你还能指望什么呢?丑陋的备份地址。

但既然有一种自动方法来比较延误,为什么不扩大列表......

正如测试所示,“备份”Cloudflare 地址更适合我,因为它插入了 spb-ix,这比 msk-ix 更接近我,msk-ix 插入了漂亮的 1.1.1.1

正如您所看到的,差异非常显着,因为即使是最快的光线也无法在 10 毫秒内从圣彼得堡到达莫斯科。

除了简单的 ping 之外,PoC 还可以比较其他协议(例如 http 和 tcp)的延迟,以及通过特定解析器将域转换为 IP 的时间。

计划使用跟踪路由来比较主机之间的节点数量,以便更容易地找到到它们的路径较短的主机。

代码很粗糙,缺乏大量检查,但它在干净的数据上运行得很好。 我将不胜感激任何反馈,星星 吉萨贝,如果有人喜欢该项目的想法,那么欢迎成为贡献者。

来源: habr.com

添加评论