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

Τέσσερις υποψήφιοι και ένα σχήμα

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

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

Γράψε το παρατηρούμενο σχήμα πριν δοκιμάσεις οτιδήποτε. «Σταματά σε περίπου τον ίδιο αριθμό byte, κάθε φορά, με τη σήραγγα ενεργή» είναι πολύ ισχυρότερο σημείο εκκίνησης από το «οι μεταφορτώσεις δεν λειτουργούν».

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

Μοίρασε το μέγεθος πριν αγγίξεις την πολιτική

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

ping -M do -s 1472 203.0.113.9
curl -T ./probe.bin -o /dev/null -w '%{size_upload} %{time_total}
' https://example.net/upload

Η πρώτη εντολή αναφέρει αν ένα πακέτο πλήρους μεγέθους περνά καθόλου τη διαδρομή. Σε MTU 1500 byte, το μεγαλύτερο ωφέλιμο φορτίο ICMP που δεν κατατμείται είναι 1472 byte, και μια σήραγγα παίρνει ακόμη περισσότερα από αυτόν τον προϋπολογισμό πριν αρχίσει το εσωτερικό πακέτο. Η δεύτερη σου δίνει μέγεθος και διάρκεια για μεταφορά σε επίπεδο εφαρμογής, και αυτός είναι ο αριθμός που πραγματικά μετρά.

CandidateObservation that confirms itObservation that rules it out
Path MTU or blocked ICMP feedbackStall at a consistent size; large do-not-fragment probes failSmall and large transfers both complete
Name resolutionThe connection never opens for that nameThe connection opens and then stalls mid-transfer
Application or proxy limitA clean rejection at a documented sizeNo log entry on the server at all
Tunnel instabilityReconnects or rekeying during the transferThe tunnel uptime is unchanged across the failure

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

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

Αποφάσισε ανάμεσα σε επισκευή και παράκαμψη

Αν τα στοιχεία δείχνουν μέγεθος, υπάρχουν δύο έντιμες απαντήσεις και μία ανέντιμη. Οι έντιμες είναι να αποκαταστήσεις την ανακάλυψη MTU της διαδρομής επιτρέποντας την απαραίτητη ανάδραση ICMP, ή να περιορίσεις το αναγγελθέν μέγεθος τμήματος ώστε οι ομότιμοι να στέλνουν μικρότερα τμήματα. Η ανέντιμη είναι να χαμηλώσεις το MTU μιας διεπαφής σε τιμή αντιγραμμένη από φόρουμ και να μην επαληθεύσεις ποτέ τι άλλαξε.

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

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

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

Κατέγραψε την απόφαση ώστε να επιβιώσει στο επόμενο περιστατικό

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

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

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

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