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

Πού πηγαίνει στην πραγματικότητα το MTU της διαδρομής

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

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

Δύο στιβάδες WireGuard, μετρημένες μία φορά

Πάρτε μια διαδρομή πρόσβασης IPv4 με μία σήραγγα WireGuard μέσα σε άλλη. Η εξωτερική στιβάδα κοστίζει 20 byte IPv4, 8 UDP και 32 για την κεφαλίδα δεδομένων του WireGuard μαζί με την ετικέτα ελέγχου ταυτότητας. Μέσα σε αυτό, η εσωτερική σήραγγα χρειάζεται τη δική της κεφαλίδα IPv4 των 20 byte και κεφαλίδα UDP των 8 byte πριν από τα δεύτερα 32 byte επιβάρυνσης WireGuard. Ό,τι απομένει χωρά κεφαλίδα IPv4, κεφαλίδα TCP και τα δεδομένα. Μια εξωτερική διαδρομή IPv6 κοστίζει 40 αντί για 20 και αφήνει 1320.

LayerBytes
Path MTU1500
Outer IPv4 header20
Outer UDP header8
Outer WireGuard header and tag32
Inner transport IPv4 header20
Inner UDP header8
Inner WireGuard header and tag32
Innermost IPv4 header20
TCP header20
Payload that fits1340

Η αριθμητική καταλήγει στα 1340 byte. Μία στιβάδα με τους ίδιους κανόνες αφήνει 1400 για το ωφέλιμο φορτίο TCP, δηλαδή 1500 μείον 20, 8, 32, 20 και 20, και η διαφορά των 60 byte είναι ακριβώς η εσωτερική ενθυλάκωση που προσθέτει η δεύτερη σήραγγα.

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

MTU, MSS και κατάτμηση δρουν σε διαφορετικά σημεία

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

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

Βρίσκοντας τη στιβάδα που λείπει

Επαληθεύστε κάθε σήραγγα χωριστά πριν τις ενθέσετε, αν οι απαιτήσεις επιτρέπουν σύγκριση. Ένας ανιχνευτής σταθερού μεγέθους το ξεκαθαρίζει: ping -M do -s 1472 -c 3 10.8.0.1 στέλνει ένα πλήρες πακέτο IPv4 1500 byte μέσα σε εκείνη τη στιβάδα. Προσθέστε τη δεύτερη στιβάδα και επαναλάβετε τον ίδιο ανιχνευτή, ώστε κάθε αποτυχία να ανήκει σε γνωστή αλλαγή.

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

Γράψτε τον προϋπολογισμό εκεί όπου θα τον βρει ο επόμενος

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

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

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