Ένας πελάτης αναφέρει ότι η σήραγγα συνδέεται, το ping απαντά, η σελίδα σύνδεσης φορτώνει και μετά η μεταφορά παγώνει στο ίδιο σημείο σε κάθε προσπάθεια. Αυτό το μοτίβο λέει ήδη πολλά: η προσβασιμότητα δουλεύει και η διαρκής απόδοση όχι. Πριν ανοίξετε το τείχος προστασίας, βρείτε αν το VPN συμμετέχει καθόλου στη βλάβη. Στείλτε μεγάλο TCP από την ίδια πύλη χωρίς σήραγγα στη διαδρομή και αν παγώσει και αυτό, το OpenVPN δεν είχε ποτέ σχέση.

Ένας φιλοξενούμενος pfSense με κάρτα δικτύου virtio έχει πολύ καλό λόγο να αποτυγχάνει ακριβώς με αυτό το σχήμα.

Τα μικρά πακέτα περνούν, το μεγάλο TCP κολλάει

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

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

Τι υπόσχεται στην πραγματικότητα το offload

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

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

Ένα πλαίσιο ελέγχου κρατά το virtio

Στη διεπαφή του pfSense, το Σύστημα και μετά Για προχωρημένους και μετά Δίκτυο περιέχει ένα πλαίσιο ελέγχου με το όνομα Απενεργοποίηση offload αθροίσματος ελέγχου υλικού. Όταν το επιλέξετε, ο φιλοξενούμενος υπολογίζει τα αθροίσματα ελέγχου σε λογισμικό, κάτι που ταιριάζει με ό,τι περιμένει η στοίβα FreeBSD πίσω από το pfSense από μια παραεικονική συσκευή. Δύο σχετικές επιλογές στην ίδια σελίδα καλύπτουν το offload κατάτμησης TCP υλικού και το offload μεγάλης λήψης υλικού. Καταφύγετε σε αυτές όταν οι χειραψίες πετυχαίνουν αλλά οι μεγάλες μεταφορές όχι.

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

Μετρήστε το κόστος που μόλις δεχτήκατε

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

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

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

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