Algoritmul Nagle , numit după inginerul John Nagle, a fost conceput pentru a reduce congestionarea rețelei cauzată de "probleme de pachete mici" cu aplicații TCP . Implementările UNIX au început să utilizeze algoritmul lui Nagle în anii 1980 și rămâne o caracteristică standard a TCP astăzi.
Cum funcționează algoritmul Nagle
Algoritmul lui Nagle procesează datele de pe partea de trimitere a aplicațiilor TCP printr-o metodă numită nagling . Detectează mesaje de dimensiuni mici și le acumulează în pachete TCP mai mari înainte de a trimite date prin fir, evitând astfel generarea unui număr inutil de mari de pachete mici. Specificația tehnică pentru algoritmul lui Nagle a fost publicată în 1984 ca RFC 896. Deciziile privind multitudinea de date care se acumulează și durata de așteptare între acestea sunt esențiale pentru performanța sa globală.
Nagling poate utiliza mai eficient lățimea de bandă a unei conexiuni de rețea în detrimentul adăugării întârzierilor ( latență ). Un exemplu descris în RFC 896 ilustrează beneficiile pentru lățimea de bandă potențială și motivul creării sale:
- O aplicație TCP care interceptează intrările de la tastatură și dorește să comunice fiecare personaj introdus la un receptor, poate genera o serie de mesaje fiecare conținând câte 1 octet de date.
- Înainte ca aceste mesaje să poată fi transmise prin rețea, fiecare trebuie să fie ambalat împreună cu informațiile despre antetul TCP, conform cerințelor TCP / IP. Fiecare antet variază între 20 și 60 octeți.
- Fără crăpare, această aplicație de exemplu generează mesaje de rețea care conțin 95% sau mai multe informații antet (cel puțin 20 din 21 octeți) și 5% sau mai puțin date reale din tastatura expeditorului. Folosind algoritmul Nagle, aceleași date ar putea fi livrate utilizând mai multe mesaje și având 95% din conținutul informațiilor de la tastatură - o economie de bandă foarte mare.
Aplicațiile controlează utilizarea algoritmului Nagle cu opțiunea de programare socket TCP_NODELAY. Sistemele Windows, Linux și Java permit în mod normal Nagle, astfel încât aplicațiile scrise pentru acele medii trebuie să specifice TCP_NODELAY atunci când doresc să dezactiveze algoritmul.
limitări
Nagle algoritmul este utilizabil doar cu TCP. Alte protocoale, inclusiv UDP , nu o acceptă.
Aplicațiile TCP care au nevoie de răspuns rapid la rețea, cum ar fi apelurile telefonice prin Internet sau jocurile de tip shooter pentru prima persoană, ar putea să nu funcționeze bine când Nagle este activat. Întârzierile cauzate în timp ce algoritmul necesită un timp suplimentar pentru a asambla mai multe bucăți de date mai mici poate provoca o vizibilitate vizibilă pe ecran sau într-un flux audio digital. Aceste aplicații dezactivează de obicei Nagle.
Acest algoritm a fost inițial dezvoltat într-un moment în care rețelele de calculatoare au sprijinit mult mai puțină lățime de bandă decât în prezent. Exemplul descris mai sus a fost bazat pe experiențele lui John Nagle de la Ford Aerospace la începutul anilor 1980, în care compromisurile pe care le-a făcut în rețeaua lor lentă, încărcate pe distanțe mari, au avut un sens. Există din ce în ce mai puține situații în care aplicațiile de rețea pot beneficia de algoritmul său de astăzi.