ネットワーク遅延は、ネットワークと対話するアプリケーションまたはサービスのパフォーマンスに大きな影響を与えます。レイテンシーが低いほど、パフォーマンスは高くなります。これは、通常の Web サイトからデータベースやネットワーク ストレージに至るまで、あらゆるネットワーク サービスに当てはまります。
良い例はドメイン ネーム システム (DNS) です。 DNS は本質的に分散システムであり、ルート ノードが地球上に点在しています。 Web サイトに簡単にアクセスするには、まず IP アドレスを取得する必要があります。
ドメイン ゾーンの「ツリー」を再帰的に処理するプロセス全体については説明しませんが、ドメインを IP アドレスに変換するには、このすべての作業を実行する DNS リゾルバーが必要であるという事実に限定して説明します。私たち。
では、DNS リゾルバー アドレスはどこで取得するのでしょうか?
- ISP は、DNS リゾルバーのアドレスを提供します。
- インターネット上でパブリック リゾルバのアドレスを見つけます。
- 自分で購入するか、ホーム ルーターに組み込まれているものを使用します。
これらのオプションを使用すると、World Wide Web で気楽にサーフィンを楽しむことができますが、多数のドメインを 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 アドレスは、美しい 1.1.1.1 が接続されている msk-ix よりもはるかに近い spb-ix に接続されているため、私にとってはより適しています。
ご覧のとおり、この違いは重大です。最速の光線でも、サンクトペテルブルクからモスクワまで 10 ミリ秒未満では到達できないからです。
PoC には、単純な ping に加えて、http や tcp などの他のプロトコルの遅延や、特定のリゾルバーを介してドメインを IP に変換する時間を比較する機会もあります。
トレースルートを使用してホスト間のノード数を比較し、より短いパスを持つホストを見つけやすくする計画があります。
コードは粗雑で、多くのチェックが欠けていますが、クリーンなデータでは非常にうまく機能します。フィードバック、スターを付けていただければ幸いです
出所: habr.com