Sélection des nœuds les plus proches du réseau

Sélection des nœuds les plus proches du réseau

La latence du réseau a un impact significatif sur les performances des applications ou des services qui interagissent avec le réseau. Plus la latence est faible, plus les performances sont élevées. Cela est vrai pour tout service réseau, depuis un site Web classique jusqu'à une base de données ou un stockage réseau.

Un bon exemple est le système de noms de domaine (DNS). Le DNS est par nature un système distribué, avec des nœuds racines dispersés sur toute la planète. Pour accéder simplement à n’importe quel site Web, vous devez d’abord obtenir son adresse IP.

Je ne décrirai pas l'ensemble du processus de parcours récursif de « l'arbre » des zones de domaine, mais me limiterai au fait que pour convertir un domaine en adresse IP, nous avons besoin d'un résolveur DNS qui fera tout ce travail pour nous.

Alors, où obtenez-vous l’adresse du résolveur DNS ?

  1. Le FAI fournit l'adresse de son résolveur DNS.
  2. Recherchez l'adresse d'un résolveur public sur Internet.
  3. Procurez-vous le vôtre ou utilisez celui intégré à votre routeur domestique.

Chacune de ces options vous permettra de surfer sans soucis sur le World Wide Web, mais si vous avez besoin de convertir un grand nombre de domaines en IP, vous devez alors aborder le choix d'un résolveur avec plus de prudence.

Comme je l'ai déjà écrit, en plus du résolveur FAI, il existe de nombreuses adresses publiques, par exemple, vous pouvez consulter cette liste. Certains d’entre eux peuvent être bien préférables car ils ont une meilleure connectivité réseau que le résolveur par défaut.

Lorsque la liste est petite, vous pouvez facilement la « pinger » manuellement et comparer les temps de retard, mais si vous prenez même la liste mentionnée ci-dessus, cette tâche devient désagréable.

Par conséquent, pour rendre cette tâche plus facile, moi, rempli du syndrome de l'imposteur, j'ai esquissé une preuve de concept de mon idée sur Go appelée se rapprocher.

A titre d'exemple, je ne vérifierai pas la liste complète des résolveurs, mais me limiterai aux plus populaires.

$ 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]

À un moment donné, lorsque je choisissais un résolveur pour moi-même, je me limitais à vérifier uniquement les adresses principales (1.1.1.1, 8.8.8.8, 9.9.9.9) - après tout, elles sont si belles, et que pouvez-vous attendre de adresses de sauvegarde laides.

Mais puisqu’il existe un moyen automatisé de comparer les retards, pourquoi ne pas élargir la liste…

Comme le test l'a montré, l'adresse Cloudflare « de sauvegarde » me convient mieux, puisqu'elle est branchée sur spb-ix, qui est bien plus proche de moi que msk-ix, sur lequel est branché le beau 1.1.1.1.

La différence, comme vous pouvez le constater, est significative, car même le rayon lumineux le plus rapide ne peut pas atteindre Saint-Pétersbourg à Moscou en moins de 10 ms.

En plus du simple ping, PoC a également la possibilité de comparer les délais pour d'autres protocoles, tels que http et tcp, ainsi que le temps de conversion des domaines en IP via un résolveur spécifique.

Il est prévu de comparer le nombre de nœuds entre les hôtes à l'aide de traceroute pour faciliter la recherche d'hôtes dont le chemin d'accès est plus court.

Le code est rudimentaire, il manque de nombreuses vérifications, mais il fonctionne plutôt bien sur des données propres. J'apprécierais vos commentaires, étoiles dessus githabé, et si quelqu'un a aimé l'idée du projet, alors n'hésitez pas à devenir contributeur.

Source: habr.com

Ajouter un commentaire