Για πολλές εργασίες, οι καθυστερήσεις μεταξύ του πελάτη και του διακομιστή είναι κρίσιμες, για παράδειγμα σε διαδικτυακά παιχνίδια, τηλεδιάσκεψη/φωνή, τηλεφωνία IP, VPN κ.λπ. Εάν ο διακομιστής είναι πολύ μακριά από τον πελάτη σε επίπεδο δικτύου IP, τότε οι καθυστερήσεις (που συνήθως ονομάζονται "ping", "lag") θα επηρεάσουν την εργασία.
Η γεωγραφική εγγύτητα ενός διακομιστή δεν ισοδυναμεί πάντα με την εγγύτητα σε επίπεδο δρομολόγησης IP. Έτσι, για παράδειγμα, ένας διακομιστής σε άλλη χώρα μπορεί να είναι "πιο κοντά" σε εσάς από έναν διακομιστή στην πόλη σας. Όλα οφείλονται στις ιδιαιτερότητες της δρομολόγησης και της κατασκευής δικτύου.
Πώς να επιλέξετε έναν διακομιστή που είναι όσο το δυνατόν πιο κοντά σε όλους τους πιθανούς πελάτες; Τι είναι η συνδεσιμότητα δικτύου IP; Πώς να κατευθύνετε έναν πελάτη στον πλησιέστερο διακομιστή; Ας μάθουμε στο άρθρο.
Μέτρηση καθυστερήσεων
Αρχικά, ας μάθουμε πώς να μετράμε τις καθυστερήσεις. Αυτή η εργασία δεν είναι τόσο απλή όσο μπορεί να φαίνεται επειδή οι καθυστερήσεις μπορεί να διαφέρουν για διαφορετικά πρωτόκολλα και μεγέθη πακέτων. Μπορεί επίσης να χάσετε βραχυπρόθεσμα γεγονότα, όπως βουτιές που διαρκούν μερικά χιλιοστά του δευτερολέπτου.
ICMP - κανονικό ping
Θα χρησιμοποιήσουμε το βοηθητικό πρόγραμμα ping Unix, το οποίο σας επιτρέπει να ορίσετε μη αυτόματα τα διαστήματα μεταξύ αποστολής πακέτων, κάτι που δεν μπορεί να κάνει η έκδοση ping για Windows. Αυτό είναι σημαντικό γιατί εάν υπάρχουν μεγάλες παύσεις μεταξύ των πακέτων, μπορεί απλά να μην δείτε τι συμβαίνει μεταξύ τους.
Μέγεθος πακέτου (επιλογή -s) - από προεπιλογή, το βοηθητικό πρόγραμμα ping στέλνει πακέτα μεγέθους 64 byte. Με τέτοια μικρά πακέτα, τα φαινόμενα που συμβαίνουν με μεγαλύτερα πακέτα μπορεί να μην είναι αισθητά, επομένως θα ορίσουμε το μέγεθος του πακέτου στα 1300 byte.
Διάστημα μεταξύ πακέτων (επιλογή -i) — χρόνος μεταξύ αποστολής δεδομένων. Από προεπιλογή, τα πακέτα αποστέλλονται μία φορά το δευτερόλεπτο, αυτό είναι πολύ μεγάλο, τα πραγματικά προγράμματα στέλνουν εκατοντάδες και χιλιάδες πακέτα ανά δευτερόλεπτο, επομένως θα ορίσουμε το διάστημα στο 0.1 δευτερόλεπτο. Το πρόγραμμα απλά δεν επιτρέπει λιγότερα.
Ως αποτέλεσμα, η εντολή μοιάζει με αυτό:
ping -s 1300 -i 0.1 yandex.ru
Αυτός ο σχεδιασμός σας επιτρέπει να δείτε μια πιο ρεαλιστική εικόνα των καθυστερήσεων.
Ping μέσω UDP και TCP
Σε ορισμένες περιπτώσεις, οι συνδέσεις TCP επεξεργάζονται διαφορετικά από τα πακέτα ICMP, και εξαιτίας αυτού, οι μετρήσεις ενδέχεται να διαφέρουν ανάλογα με το πρωτόκολλο. Συμβαίνει επίσης συχνά ότι ο κεντρικός υπολογιστής απλά δεν ανταποκρίνεται στο ICMP και το κανονικό ping δεν λειτουργεί. Αυτό κάνει για παράδειγμα ένας οικοδεσπότης όλη του τη ζωή. microsoft.com.
Χρησιμότητα
Εφόσον το UDP και το TCP λειτουργούν σε συγκεκριμένες, πρέπει να κάνουμε "ping" σε μια συγκεκριμένη θύρα. Ας προσπαθήσουμε να κάνουμε ping στο TCP 80, δηλαδή στη θύρα του διακομιστή web:
$ sudo nping --tcp -p 80 --delay 0.1 -c 0 microsoft.com
Starting Nping 0.7.80 ( https://nmap.org/nping ) at 2020-04-30 13:07 MSK
SENT (0.0078s) TCP 10.0.0.1:63236 > 13.77.161.179:80 S ttl=64 id=49156 iplen=40 seq=3401731188 win=1480
SENT (0.1099s) TCP 10.0.0.1:63236 > 13.77.161.179:80 S ttl=64 id=49156 iplen=40 seq=3401731188 win=1480
RCVD (0.2068s) TCP 13.77.161.179:80 > 10.0.0.1:63236 SA ttl=43 id=0 iplen=44 seq=1480267007 win=64240 <mss 1440>
SENT (0.2107s) TCP 10.0.0.1:63236 > 13.77.161.179:80 S ttl=64 id=49156 iplen=40 seq=3401731188 win=1480
RCVD (0.3046s) TCP 13.77.161.179:80 > 10.0.0.1:63236 SA ttl=43 id=0 iplen=44 seq=1480267007 win=64240 <mss 1440>
SENT (0.3122s) TCP 10.0.0.1:63236 > 13.77.161.179:80 S ttl=64 id=49156 iplen=40 seq=3401731188 win=1480
RCVD (0.4247s) TCP 13.77.161.179:80 > 10.0.0.1:63236 SA ttl=42 id=0 iplen=44 seq=2876862274 win=64240 <mss 1398>
Max rtt: 112.572ms | Min rtt: 93.866ms | Avg rtt: 101.093ms
Raw packets sent: 4 (160B) | Rcvd: 3 (132B) | Lost: 1 (25.00%)
Nping done: 1 IP address pinged in 0.43 seconds
Από προεπιλογή, το nping στέλνει 4 πακέτα και σταματά. Επιλογή -γ 0 επιτρέπει την ατελείωτη αποστολή πακέτων· για να σταματήσετε το πρόγραμμα, πρέπει να πατήσετε Ctrl+C. Στατιστικά στοιχεία θα παρουσιαστούν στο τέλος. Βλέπουμε ότι η μέση τιμή rtt (χρόνος μετ' επιστροφής) είναι 101ms.
MTR - traceroute σε στεροειδή
Πρόγραμμα
$ sudo mtr microsoft.com
(με δυνατότητα κλικ) Διεπαφή προγράμματος MTR. Ξεκίνησε η ανίχνευση διαδρομής στο microsoft.com
Το MTR εμφανίζει αμέσως το ping σε κάθε κεντρικό υπολογιστή στην αλυσίδα και τα δεδομένα ενημερώνονται συνεχώς ενώ το πρόγραμμα εκτελείται και είναι ορατές οι βραχυπρόθεσμες αλλαγές.
Το στιγμιότυπο οθόνης δείχνει ότι ο κόμβος #6 έχει απώλειες πακέτων, αλλά στην πραγματικότητα αυτό δεν είναι απολύτως αληθές, επειδή ορισμένοι δρομολογητές μπορούν απλά να απορρίψουν πακέτα με λήξαν TTL και να μην επιστρέψουν μια απάντηση σφάλματος, επομένως τα δεδομένα απώλειας πακέτων μπορούν να αγνοηθούν εδώ.
WiFi vs καλώδιο
Αυτό το θέμα δεν είναι απολύτως σχετικό με το άρθρο, αλλά κατά τη γνώμη μου είναι πολύ σημαντικό στο πλαίσιο των καθυστερήσεων. Μου αρέσει πολύ το WiFi, αλλά αν έχω έστω και την παραμικρή ευκαιρία να συνδεθώ στο Internet με καλώδιο, θα το χρησιμοποιήσω. Επίσης πάντα αποθαρρύνω τους ανθρώπους να χρησιμοποιούν κάμερες WiFi.
Εάν παίζετε σοβαρά online shooters, μεταδίδετε βίντεο ή πραγματοποιείτε συναλλαγές στο χρηματιστήριο: χρησιμοποιήστε το Διαδίκτυο μέσω καλωδίου.
Ακολουθεί μια οπτική δοκιμή για σύγκριση των συνδέσεων WiFi και καλωδίων. Αυτό είναι ένα ping στο δρομολογητή WiFi, δηλαδή ούτε καν στο Διαδίκτυο ακόμα.
(Με δυνατότητα κλικ) Σύγκριση ping σε δρομολογητή WiFi μέσω καλωδίου και μέσω WiFi
Φαίνεται ότι μέσω WiFi η καθυστέρηση είναι 1 ms μεγαλύτερη και μερικές φορές υπάρχουν πακέτα με καθυστερήσεις δέκα φορές μεγαλύτερες! Και αυτό είναι μόνο ένα μικρό χρονικό διάστημα. Ταυτόχρονα, ο ίδιος δρομολογητής παράγει σταθερές καθυστερήσεις <1ms.
Στο παραπάνω παράδειγμα, χρησιμοποιείται WiFi 802.11n στα 2.4 GHz, μόνο ένας φορητός υπολογιστής και ένα τηλέφωνο είναι συνδεδεμένα στο σημείο πρόσβασης WiFi. Εάν υπήρχαν περισσότεροι πελάτες στο σημείο πρόσβασης, τα αποτελέσματα θα ήταν πολύ χειρότερα. Αυτός είναι ο λόγος για τον οποίο είμαι τόσο αντίθετη με τη μετάβαση όλων των υπολογιστών γραφείου σε WiFi, εάν είναι δυνατόν να τους προσεγγίσετε με καλώδιο.
Συνδεσιμότητα IP
Έτσι, μάθαμε να μετράμε τις καθυστερήσεις στον διακομιστή, ας προσπαθήσουμε να βρούμε τον πλησιέστερο διακομιστή σε εμάς. Για να το κάνουμε αυτό, μπορούμε να δούμε πώς λειτουργεί η δρομολόγηση του παρόχου μας. Είναι βολικό να χρησιμοποιήσετε την υπηρεσία για αυτό
Όταν μπαίνουμε στον ιστότοπο, βλέπουμε ότι η διεύθυνση IP μας ανήκει στο αυτόνομο σύστημα
Εξετάζοντας το γράφημα συνδεσιμότητας των αυτόνομων συστημάτων, μπορούμε να δούμε μέσω ποιων παρόχων υψηλότερου επιπέδου ο πάροχος μας συνδέεται με τον υπόλοιπο κόσμο. Κάθε μια από τις κουκκίδες μπορεί να κάνει κλικ, μπορείτε να μπείτε και να διαβάσετε τι είδους πάροχος είναι.
Γράφημα συνδεσιμότητας των αυτόνομων συστημάτων του παρόχου
Χρησιμοποιώντας αυτό το εργαλείο, μπορείτε να μελετήσετε πώς είναι δομημένα τα κανάλια οποιουδήποτε παρόχου, συμπεριλαμβανομένης της φιλοξενίας. Δείτε με ποιους παρόχους είναι απευθείας συνδεδεμένο. Για να το κάνετε αυτό, πρέπει να εισαγάγετε τη διεύθυνση IP του διακομιστή στην αναζήτηση για το bgp.he.net και να δείτε το γράφημα του αυτόνομου συστήματός του. Μπορείτε επίσης να κατανοήσετε πώς ένα κέντρο δεδομένων ή πάροχος φιλοξενίας συνδέεται με έναν άλλο.
Τα περισσότερα σημεία ανταλλαγής κίνησης παρέχουν ένα ειδικό εργαλείο που ονομάζεται γυαλί αναζήτησης, το οποίο σας επιτρέπει να κάνετε ping και να πραγματοποιείτε ιχνηλάτηση από έναν συγκεκριμένο δρομολογητή στο σημείο ανταλλαγής.
Εδώ, για παράδειγμα,
Έτσι, όταν επιλέγουμε έναν διακομιστή, μπορούμε να δούμε εκ των προτέρων πώς θα φαίνεται από διαφορετικά σημεία ανταλλαγής κίνησης. Και αν οι πιθανοί πελάτες μας βρίσκονται σε μια συγκεκριμένη γεωγραφική περιοχή, μπορούμε να βρούμε τη βέλτιστη τοποθεσία για τον διακομιστή.
Επιλέξτε τον πλησιέστερο διακομιστή
Αποφασίσαμε να απλοποιήσουμε τη διαδικασία για την εύρεση του βέλτιστου διακομιστή για τους πελάτες μας και δημιουργήσαμε μια σελίδα με αυτόματη δοκιμή των κοντινών τοποθεσιών:
Όταν επισκέπτεστε μια σελίδα, το σενάριο μετρά τις καθυστερήσεις από το πρόγραμμα περιήγησής σας σε κάθε διακομιστή και τις εμφανίζει σε έναν διαδραστικό χάρτη. Όταν κάνετε κλικ σε ένα κέντρο δεδομένων, εμφανίζονται πληροφορίες με αποτελέσματα δοκιμών.
Το κουμπί σάς μεταφέρει στη δοκιμαστική σελίδα λανθάνοντος χρόνου για όλα τα κέντρα δεδομένων μας. Για να δείτε τα αποτελέσματα της δοκιμής, κάντε κλικ στο σημείο του κέντρου δεδομένων στον χάρτη
Πηγή: www.habr.com