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

Τι αλλάζει πραγματικά η μεταφορά

Το TCP παρέχει ένα αξιόπιστο, διατεταγμένο ρεύμα byte και επαναμεταδίδει ό,τι χάνεται, όπως ορίζει το RFC 9293. Το UDP παραδίδει datagrams στο δίκτυο, και το OpenVPN εκτελεί το δικό του επίπεδο αξιοπιστίας πάνω από αυτό το socket. Η ενθυλάκωση TCP μέσα σε TCP στοιβάζει δύο βρόχους ανάκτησης, οπότε ένα χαμένο τμήμα μπορεί να κρατήσει το εσωτερικό ρεύμα μέχρι να φτάσει η εξωτερική επαναμετάδοση. Αυτή η αλληλεπίδραση είναι το πραγματικό επιχείρημα υπέρ του UDP, και εμφανίζεται ως καθυστέρηση και όχι ως ρυθμαπόδοση.

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

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

Πού κερδίζει το TCP τη θέση του

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

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

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

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

Ελέγξτε ποιον ακροατή έχετε πραγματικά

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

grep -E '^(proto|port|remote)' /etc/openvpn/server.conf
ss -lunp | grep openvpn
ss -ltnp | grep openvpn

Το grep εκτυπώνει τι ειπώθηκε στον διακομιστή να χρησιμοποιεί, ενώ οι δύο λίστες socket δείχνουν σε τι είναι δεσμευμένος. Ένας ακροατής UDP εμφανίζεται μόνο στην πρώτη λίστα και ένας ακροατής TCP μόνο στη δεύτερη, οπότε μια γραμμή που λείπει είναι ο γρηγορότερος τρόπος να βρείτε ένα προφίλ που δεν εφαρμόστηκε ποτέ. Συγκρίνετε και τη θύρα, γιατί ένα προφίλ TCP στην 1194 συμπεριφέρεται διαφορετικά από ένα στην 443 στα περισσότερα δίκτυα πρόσβασης. Επανεκκινήστε την υπηρεσία μετά την αλλαγή και διαβάστε τη γραμμή του αρχείου καταγραφής που αναφέρει τη δέσμευση.

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

Συγκρίνετε τον φόρτο εργασίας, όχι την ετικέτα της μεταφοράς

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

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

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

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