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

Κατηγοριοποιήστε το κόλλημα πριν κατηγορήσετε τη σήραγγα

Τέσσερα αποτελέσματα φαίνονται ίδια στον χρήστη και σημαίνουν εντελώς διαφορετικά πράγματα για τον μηχανικό.

What the client seesWhat it rules out
Connection refusedNothing is listening on the address and port the client reached
Timeout before the handshakeA filter, a missing route, or the wrong address
Handshake completes, query hangsThe session exists, so look at inspection, MTU and packet order
Stalls that recover on retryOften reordering, or a state table entry expiring

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

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

Τρεις συνθήκες που αποφασίζουν UDP ή TCP

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

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

Αν η πρώτη απάντηση είναι απώλεια και η δεύτερη όχι,το TCP στο 443 είναι η πραγματιστική εναλλακτική. Αν η δεύτερη απάντηση είναι ναι, διορθώστε τη διαδρομή και κρατήστε το UDP.

Διαβάστε την εγγραφή του τείχους προστασίας, όχι το σφάλμα της εφαρμογής

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

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

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

tcpdump -ni any udp port 4500 -w /tmp/encap.pcap
tcpdump -ni any tcp port 5432 -w /tmp/inner.pcap

Τι πραγματικά σας κοστίζει το TCP στο 443

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

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

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

Κρατήστε την απόφαση αναθεωρήσιμη

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

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

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