Οι απαντήσεις ηχού φτάνουν, η απομακρυσμένη επιφάνεια εργασίας δουλεύει, και το πρόγραμμα περιήγησης μένει σε μια κενή σελίδα μέχρι να τα παρατήσει. Δύο εξηγήσεις ταιριάζουν σε αυτό το μοτίβο, και δεν είναι παραλλαγές ενός προβλήματος: μια πολιτική που ποτέ δεν επέτρεψε την υπηρεσία, ή πακέτα που παύουν να χωρούν όταν η μεταφορά μεγαλώνει. Η απάντηση ηχού δεν αποκλείει καμία από τις δύο.

Ξεκινήστε από την πιο μικρή ερώτηση και προχωρήστε στην πιο μεγάλη, και σημειώστε τι απέδειξε πραγματικά κάθε βήμα.

Μια απάντηση ηχού απαντά σε μια πολύ μικρότερη ερώτηση

Μια απάντηση ηχού λέει ότι η στοίβα IP του προορισμού απάντησε σε ένα αίτημα ICMP από την πηγή σας. Δεν λέει τίποτα για το αν υπάρχει ακροατής TCP στη θύρα που χρειάζεστε, αν μια πολιτική επιτρέπει αυτή τη θύρα, ή αν ο κεντρικός υπολογιστής προορισμού φιλτράρει την κίνηση ανεξάρτητα από την πύλη. Μια πύλη που επιτρέπει μια υπηρεσία μπορεί να απορρίψει μια άλλη ενώ και οι δύο στόχοι απαντούν στο ping. Διαβάστε την απάντηση ως ένα γεγονός για ένα πακέτο και μία κατεύθυνση.

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

Βρείτε αν η σύνδεση ξεκίνησε

Μια σύνδεση που απορρίπτεται αμέσως είναι απάντηση του ακροατή ή της πολιτικής: κάτι απάντησε και είπε όχι. Μια σύνδεση που ανοίγει και μετά κολλάει όταν τα δεδομένα αρχίζουν να κινούνται δείχνει προς το μέγεθος. Μια σύνδεση που δεν ολοκληρώνει ποτέ τη χειραψία συνήθως οφείλεται σε πολιτική ή δρομολόγηση, και μοιάζει με λήξη χρόνου παρά με απόρριψη.

curl -v --max-time 10 https://internal.example/ -o /dev/null
ss -tn state established '( dport = :443 )'

Σημειώστε ποια από τις τρεις περιπτώσεις παρατηρήσατε πριν αγγίξετε τις ρυθμίσεις MTU. Η αλλαγή μεγέθους σήραγγας για να διορθώσετε μια απορριφθείσα σύνδεση σπαταλά την αλλαγή και κρύβει την πραγματική αιτία για ένα διάστημα.

Μετρήστε το μέγεθος με δηλωμένο αριθμό

Όταν η στασιμότητα εμφανίζεται υπό φόρτο, δοκιμάστε ένα μέγεθος πακέτου με ενεργό το bit απαγόρευσης κατάτμησης και δηλώστε την αριθμητική ώστε το αποτέλεσμα να σημαίνει κάτι. Σε Linux με iputils, ένα ωφέλιμο φορτίο 1392 byte συν την κεφαλίδα ICMP των 8 byte και την κεφαλίδα IPv4 των 20 byte παράγει ένα εσωτερικό πακέτο ακριβώς 1420 byte. Δηλώστε αυτή την αριθμητική στο δελτίο, γιατί ένα γυμνό ping που φτάνει στην πύλη δεν αποδεικνύει τίποτα για μια εφαρμογή.

ping -4 -M do -s 1392 10.44.0.10
ping -4 -M do -s 1372 10.44.0.10

Και οι δύο δοκιμές είναι σημεία μέτρησης, όχι συστάσεις για μέγεθος σήραγγας. Αν το ICMP φιλτράρεται οπουδήποτε στη διαδρομή, μια λήξη χρόνου δεν σας λέει τίποτα για το μέγεθος, γιατί το φιλτράρισμα και ένα υπερβολικά μεγάλο πακέτο φαίνονται ίδια από την πλευρά του πελάτη. Μια επιτυχία επίσης δεν λέει τίποτα για την αντίστροφη κατεύθυνση ή για διαφορετικό προορισμό.

Υπολογίστε την εξωτερική διαδρομή

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

Η ανακάλυψη MTU διαδρομής στο IPv4 εξαρτάται από ανατροφοδότηση για πακέτα που δεν μπορούν να προωθηθούν χωρίς κατάτμηση, και το IPv6 χρησιμοποιεί μηνύματα Packet Too Big. Η προδιαγραφή IPv4 περιγράφει αυτόν τον μηχανισμό. Το φιλτράρισμα της ανατροφοδότησης σπάει την ικανότητα του αποστολέα να μαθαίνει και τον αφήνει να επαναμεταδίδει πακέτα που δεν θα χωρέσουν ποτέ. Γι' αυτό ένα μικρό αίτημα που δουλεύει και ένα μεγάλο που αποτυγχάνει συνυπάρχουν τόσο άνετα.

Αλλάξτε έναν αριθμό και δοκιμάστε ξανά την εφαρμογή

Μειώστε το MTU της σήραγγας ή περιορίστε το μέγιστο μέγεθος τμήματος για το TCP, και μετά επαναλάβετε την αρχική δοκιμή της εφαρμογής αντί για τη δοκιμή διερεύνησης. Μια δοκιμή που πετυχαίνει μετά την αλλαγή και μια εφαρμογή που ακόμη κολλάει είναι διαφορετικό πρόβλημα με παρόμοια μορφή, και μόνο η δοκιμή της εφαρμογής τα ξεχωρίζει.

Κρατήστε την αριθμητική στο αρχείο αλλαγής: το μετρημένο μέγεθος, το κόστος που υποθέσατε και την τιμή που ορίσατε. Όποιος το εξετάσει αργότερα μπορεί να ελέγξει την υπόθεση αντί να την ξαναβγάλει από ένα στιγμιότυπο οθόνης ενός ping.

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

Σχετικά άρθρα