ネットワーク内で最も近いノードの選択

ネットワーク内で最も近いノードの選択

ネットワーク遅延は、ネットワークと対話するアプリケーションまたはサービスのパフォーマンスに大きな影響を与えます。レイテンシーが低いほど、パフォーマンスは高くなります。これは、通常の Web サイトからデータベースやネットワーク ストレージに至るまで、あらゆるネットワーク サービスに当てはまります。

良い例はドメイン ネーム システム (DNS) です。 DNS は本質的に分散システムであり、ルート ノードが地球上に点在しています。 Web サイトに簡単にアクセスするには、まず IP アドレスを取得する必要があります。

ドメイン ゾーンの「ツリー」を再帰的に処理するプロセス全体については説明しませんが、ドメインを IP アドレスに変換するには、このすべての作業を実行する DNS リゾルバーが必要であるという事実に限定して説明します。私たち。

では、DNS リゾルバー アドレスはどこで取得するのでしょうか?

  1. ISP は、DNS リゾルバーのアドレスを提供します。
  2. インターネット上でパブリック リゾルバのアドレスを見つけます。
  3. 自分で購入するか、ホーム ルーターに組み込まれているものを使用します。

これらのオプションを使用すると、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

コメントを追加します