
Les latences réseau ont un impact significatif sur les performances des applications ou services qui interagissent avec le réseau. Moins il y a de latences, meilleures sont les performances. Cela s'applique à tout service réseau, d'un simple site Web à une base de données ou un stockage en réseau.
Un bon exemple est le système de noms de domaine (DNS). Le DNS est par nature un système décentralisé, dont les nœuds racines sont répartis sur toute la planète. Pour accéder à n'importe quel site, il est d'abord nécessaire d'obtenir son adresse IP.
Je ne vais pas décrire tout le processus de passage récursif à travers l'arbre des zones de domaine, je me contenterai de dire 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ù trouver l'adresse d'un résolveur DNS ?
- Le fournisseur d'accès à Internet fournit l'adresse de son résolveur DNS.
- Cherchez en ligne l'adresse d'un résolveur public.
- Montez votre propre résolveur ou utilisez celui intégré dans votre routeur domestique.
Chacune de ces options vous permettra de naviguer sur le Web sans souci, mais si vous avez besoin de convertir un grand nombre de domaines en IP, il faudra aborder le choix du résolveur avec plus de soin.
Comme je l'ai écrit, en plus du résolveur de votre fournisseur d'accès, il existe de nombreuses adresses publiques, par exemple, vous pouvez consulter cette liste. Certaines peuvent s'avérer beaucoup plus avantageuses, car elles ont une meilleure connectivité réseau que le résolveur par défaut.
Lorsque la liste est petite, il est facile de la "pinguer" manuellement et de comparer les temps de latence, mais si l'on considère ne serait-ce qu'une liste comme celle mentionnée ci-dessus, cette tâche devient déjà peu agréable.
Pour alléger cette tâche, j'ai, avec le syndrome de l'imposteur, esquissé en Go une preuve de concept de mon idée appelée .
À titre d'exemple, je ne vais pas vérifier toute la liste des résolveurs, je me contenterai des plus populaires.
$ get-closer ping -f dnsresolver.txt -b=0 --count=10
Hôtes les plus proches:
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]
À l'époque où je choisissais un résolveur, je me limitais à vérifier les adresses principales (1.1.1.1, 8.8.8.8, 9.9.9.9) - après tout, elles sont si belles, et que peut-on attendre des adresses de secours moins esthétiques.
Mais puisque nous avons une méthode automatisée pour comparer les latences, pourquoi ne pas élargir la liste…
Comme le montre le test, l'adresse 'de secours' de Cloudflare me convient mieux, car elle est connectée à spb-ix, qui est beaucoup plus près de moi que msk-ix, où se trouve la belle 1.1.1.1.
La différence, comme vous le voyez, est significative, car même le plus rapide des photons ne peut pas parcourir la distance entre Saint-Pétersbourg et Moscou en moins de 10 ms.
En plus de ce simple ping, le PoC permet également de comparer les latences sur d'autres protocoles, tels que http et tcp, ainsi que le temps de résolution des domaines en IP via un résolveur spécifique.
Dans les projets à venir, il y a l'idée de comparer le nombre de nœuds entre les hébergeurs à l'aide de traceroute, afin de faciliter la recherche d'hébergeurs ayant un chemin plus court.
Le code est brut, il manque de nombreuses vérifications, mais il fonctionne assez bien sur des données propres. J'apprécierais tout retour, des étoiles sur , et si quelqu'un aime l'idée du projet, il est le bienvenu en tant que contributeur.
Source : habr.com
