Ο αλγόριθμος Nagle για επικοινωνία δικτύου TCP

Ο αλγόριθμος Nagle , ονομάστηκε από τον μηχανικό John Nagle, σχεδιάστηκε για να μειώσει τη συμφόρηση του δικτύου που προκαλείται από "προβλήματα μικρού πακέτου" με εφαρμογές TCP . Οι εφαρμογές UNIX άρχισαν να χρησιμοποιούν τον αλγόριθμο Nagle στη δεκαετία του 1980 και παραμένει ένα τυπικό χαρακτηριστικό του TCP σήμερα.

Πώς λειτουργεί ο αλγόριθμος Nagle

Ο αλγόριθμος Nagle επεξεργάζεται δεδομένα στην πλευρά αποστολής των εφαρμογών TCP με μια μέθοδο που ονομάζεται nagling . Ανιχνεύει μηνύματα μικρού μεγέθους και τα συσσωρεύει σε μεγαλύτερα πακέτα TCP πριν από την αποστολή δεδομένων μέσω του καλωδίου, αποφεύγοντας έτσι τη δημιουργία περιττών μεγάλων αριθμών μικρών πακέτων. Η τεχνική προδιαγραφή για τον αλγόριθμο Nagle δημοσιεύθηκε το 1984 ως RFC 896. Οι αποφάσεις για τη συσσώρευση πολλών δεδομένων και το χρονικό διάστημα μεταξύ των αποστολών είναι κρίσιμες για τη συνολική τους απόδοση.

Το Nagling μπορεί να χρησιμοποιήσει αποτελεσματικότερα το εύρος ζώνης μιας σύνδεσης δικτύου σε βάρος της προσθήκης καθυστερήσεων ( καθυστέρηση ). Ένα παράδειγμα που περιγράφεται στο RFC 896 απεικονίζει τα πιθανά πλεονεκτήματα εύρους ζώνης και τον λόγο για τη δημιουργία του:

Οι εφαρμογές ελέγχουν τη χρήση του αλγορίθμου Nagle με την επιλογή προγραμματισμού υποδοχής TCP_NODELAY. Τα συστήματα των Windows, Linux και Java όλα κανονικά ενεργοποιούν το Nagle από προεπιλογή, έτσι οι εφαρμογές που έχουν εγγραφεί για αυτά τα περιβάλλοντα πρέπει να καθορίσουν το TCP_NODELAY όταν θέλουν να απενεργοποιήσουν τον αλγόριθμο.

Περιορισμοί

Ο αλγόριθμος Nagle μπορεί να χρησιμοποιηθεί μόνο με το TCP. Άλλα πρωτόκολλα, συμπεριλαμβανομένου του UDP , δεν το υποστηρίζουν.

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

Αυτός ο αλγόριθμος αναπτύχθηκε αρχικά σε μια εποχή που τα δίκτυα υπολογιστών υποστήριζαν πολύ λιγότερο εύρος ζώνης από ό, τι σήμερα. Το παράδειγμα που περιγράφηκε παραπάνω βασίστηκε στις εμπειρίες του John Nagle στη Ford Aerospace στις αρχές της δεκαετίας του 1980, όπου οι κακοτεχνίες στο αργό, βαριά φορτωμένο δίκτυο μεγάλων αποστάσεων είχαν νόημα. Υπάρχουν όλο και λιγότερες καταστάσεις στις οποίες οι εφαρμογές δικτύου μπορούν να επωφεληθούν από τον αλγόριθμό του σήμερα.