Επιλογή των πλησιέστερων κόμβων στο δίκτυο

Επιλογή των πλησιέστερων κόμβων στο δίκτυο

Η καθυστέρηση δικτύου έχει σημαντικό αντίκτυπο στην απόδοση των εφαρμογών ή των υπηρεσιών που αλληλεπιδρούν με το δίκτυο. Όσο χαμηλότερη είναι η καθυστέρηση, τόσο μεγαλύτερη είναι η απόδοση. Αυτό ισχύει για οποιαδήποτε υπηρεσία δικτύου, από έναν κανονικό ιστότοπο έως μια βάση δεδομένων ή αποθήκευση δικτύου.

Ένα καλό παράδειγμα είναι το Domain Name System (DNS). Το DNS είναι από τη φύση του ένα κατανεμημένο σύστημα, με ριζικούς κόμβους διάσπαρτους σε όλο τον πλανήτη. Για να αποκτήσετε απλά πρόσβαση σε οποιονδήποτε ιστότοπο, πρέπει πρώτα να λάβετε τη διεύθυνση 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 είναι πιο κατάλληλη για μένα, καθώς είναι συνδεδεμένη στο spb-ix, το οποίο είναι πολύ πιο κοντά σε μένα από το msk-ix, το οποίο έχει συνδεδεμένη την όμορφη 1.1.1.1

Η διαφορά, όπως μπορείτε να δείτε, είναι σημαντική, γιατί ακόμη και η πιο γρήγορη ακτίνα φωτός δεν μπορεί να φτάσει από την Αγία Πετρούπολη στη Μόσχα σε λιγότερο από 10 ms.

Εκτός από το απλό ping, το PoC έχει επίσης τη δυνατότητα να συγκρίνει καθυστερήσεις για άλλα πρωτόκολλα, όπως http και tcp, καθώς και τον χρόνο μετατροπής domain σε IP μέσω ενός συγκεκριμένου αναλυτή.

Υπάρχουν σχέδια σύγκρισης του αριθμού των κόμβων μεταξύ των κεντρικών υπολογιστών που χρησιμοποιούν traceroute για να διευκολύνεται η εύρεση κεντρικών υπολογιστών που έχουν μικρότερη διαδρομή προς αυτούς.

Ο κώδικας είναι ακατέργαστος, του λείπουν πολλοί έλεγχοι, αλλά λειτουργεί αρκετά καλά σε καθαρά δεδομένα. Θα εκτιμούσα κάθε ανατροφοδότηση, αστέρια github, και αν σε κανέναν άρεσε η ιδέα του έργου, τότε ευπρόσδεκτοι να γίνουν συνεισφέροντες.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο