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

Τι πραγματικά συρρικνώνεται όταν χαμηλώνετε το MTU

Κάθε πακέτο κουβαλά κεφαλίδες πριν κουβαλήσει τα δεδομένα σας. Σε διαδρομή Ethernet 1500 byte, το IPv4 και το TCP καταναλώνουν 40 byte και αφήνουν 1460 για το ωφέλιμο φορτίο· η ενθυλάκωση προσθέτει από πάνω εξωτερικές κεφαλίδες IP, UDP και σήραγγας, οπότε ο εσωτερικός προϋπολογισμός φορτίου πέφτει ξανά. Το χαμήλωμα του MTU της διεπαφής συρρικνώνει αυτόν τον προϋπολογισμό σκόπιμα.

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

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

Πότε το μικρότερο MTU είναι η σωστή διόρθωση

Το κλασικό σύμπτωμα είναι συγκεκριμένο: η χειραψία TCP ολοκληρώνεται, φτάνουν μικρές απαντήσεις και μια μεγάλη λήψη κολλάει ή επαναφέρεται. Ένα ping με το bit «μην κατακερματίζεις» στα 1472 byte αποτυγχάνει ενώ ένα ping 1400 byte πετυχαίνει, κάτι που δείχνει διαδρομή που δεν μπορεί να μεταφέρει πακέτο πλήρους μεγέθους και δεν παραδίδει το μήνυμα ICMP που θα έλεγε στον αποστολέα να μικρύνει.

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

Και οι τεχνολογίες πρόσβασης επιβάλλουν τα δικά τους όρια: το PPPoE συνήθως περιορίζεται στα 1492, ορισμένες κινητές και DSL διαδρομές είναι χαμηλότερες και οι ένθετες σήραγγες αφαιρούν την επιβάρυνση δύο φορές. Μετρήστε την πραγματική διαδρομή αντί να αντιγράφετε έναν αριθμό από οδηγό, και θυμηθείτε ότι το IPv6 απαιτεί τουλάχιστον 1280 byte MTU σε κάθε ζεύξη που το μεταφέρει, όπως ορίζει το RFC 8200.

Συγκρίνετε τα τρία χειριστήρια πριν αλλάξετε ένα

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

ControlLayerWhat it changesWhere it misleads
Interface MTUIP linkLargest frame the interface will sendPenalizes every protocol, not just the one that failed
TCP MSS clampTCPSegment size advertised in the handshakeLeaves UDP and QUIC untouched
DF and fragmentationIPWhether a router may split a packetCan break path MTU discovery and security assumptions
Tunnel overheadEncapsulationInner MTU after outer headersMismatch shows up only for large inner packets

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

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

Μετρήστε τον συμβιβασμό αντί για έναν αριθμό

Βρείτε το όριο της διαδρομής με έναν ανιχνευτή «μην κατακερματίζεις», ξεκινώντας ψηλά και κατεβαίνοντας ώσπου να φτάσει η απάντηση:

ping -M do -s 1472 203.0.113.10
ping -M do -s 1400 203.0.113.10
tracepath 203.0.113.10

Έπειτα συγκρίνετε την πραγματική εργασία και στις δύο ρυθμίσεις: την ίδια μεταφορά αρχείου, το ίδιο τελικό σημείο και το ίδιο δίκτυο. Καταγράψτε τον χρόνο ολοκλήρωσης και τις επαναμεταδόσεις, για παράδειγμα με nstat -az TcpRetransSegs, και παρακολουθήστε τον επεξεργαστή της συσκευής αν η σήραγγα τερματίζει σε μικρό δρομολογητή. Ένα σύντομο συνθετικό τεστ απόδοσης μπορεί να χάσει το κόλλημα που εμφανίζεται μόνο μετά από αρκετά megabyte.

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

Εισαγάγετε την αλλαγή σταδιακά και κρατήστε την περιορισμένη

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

ip link set dev wg0 mtu 1420
ip link set dev wg0 mtu 1500

Περιορίστε το αποτέλεσμα στο δίκτυο που το χρειαζόταν. Ένα προφίλ που πρέπει να δουλεύει σε Wi-Fi ξενοδοχείου, σε κινητό hotspot και σε LAN γραφείου δεν πρέπει να κληρονομεί τη χαμηλότερη τιμή που απαιτεί οποιοδήποτε από αυτά, εκτός αν ο πελάτης δεν μπορεί να ανιχνεύσει τη διαδρομή.

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

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