Die Nagle-algoritme, vernoem na die ingenieur John Nagle, is ontwerp om netwerkopeenhoping wat veroorsaak word deur klein pakkie-probleme met TCP-toepassings te verminder. UNIX-implementerings het die Nagle-algoritme in die 1980's begin gebruik, en dit bly vandag 'n standaardkenmerk van TCP.
Hoe die Nagle-algoritme werk
Die Nagle-algoritme verwerk data aan die stuurkant van TCP-toepassings deur 'n metode genaamd nagling. Dit bespeur kleingrootte boodskappe en versamel daardie boodskappe in groter TCP-pakkies voordat data oor die draad gestuur word. Hierdie proses vermy die generering van onnodige groot getalle klein pakkies.
Die tegniese spesifikasie vir die Nagle-algoritme is in 1984 gepubliseer as RFC 896. Die besluite oor hoeveel data om te versamel en hoe lank om te wag tussen versendings is krities vir die algehele werkverrigting daarvan.
The Benefits of Nagling
Nagling kan die bandwydte van 'n netwerkverbinding doeltreffend benut ten koste van die byvoeging van vertragings, of latensie. 'n Voorbeeld wat in RFC 896 beskryf word, illustreer die potensiële bandwydtevoordele en die rede vir die skepping daarvan:
- As 'n TCP-toepassing wat sleutelbordtoetsaanslae onderskep elke karakter wat getik word aan 'n ontvanger wil kommunikeer, kan dit 'n reeks boodskappe genereer wat elk 1 greep data bevat.
- Voordat hierdie boodskappe oor die netwerk gestuur kan word, moet elkeen verpak word met TCP-opskrifinligting soos vereis deur TCP/IP. Elke kopskrif wissel in grootte tussen 20 en 60 grepe.
- Sonder om te neul, sal hierdie voorbeeldtoepassing netwerkboodskappe genereer wat bestaan uit 95 persent of meer kopinligting (ten minste 20 uit 21 grepe) en 5 persent of minder werklike data vanaf die sender se sleutelbord. Deur die Nagle-algoritme te gebruik, kan dieselfde data met minder boodskappe afgelewer word, wat groot bandwydtebesparings tot gevolg het.
Toepassings beheer hul gebruik van die Nagle-algoritme met die TCP_NODELA-sokprogrammeringsopsie. Windows-, Linux- en Java-stelsels aktiveer Nagle normaalweg by verstek. Daarom moet toepassings wat vir daardie omgewings geskryf is, TCP_NODELAY spesifiseer om die algoritme af te skakel.
Beperkings
Toepassings wat 'n vinnige netwerkreaksie vereis, soos video-oproepe en aanlyn speletjies, sal dalk nie goed werk wanneer Nagle geaktiveer is nie. Die vertragings wat veroorsaak word terwyl die algoritme ekstra tyd neem om kleiner stukke data saam te stel, kan merkbare vertraging visueel op 'n skerm of in 'n digitale oudiostroom veroorsaak. Sulke toepassings deaktiveer Nagle gewoonlik.
Hierdie algoritme is oorspronklik ontwikkel in 'n tyd toe rekenaarnetwerke minder bandwydte ondersteun het as wat hulle vandag doen. Die voorbeeld wat hierbo beskryf is, was gebaseer op John Nagle se ervarings by Ford Aerospace in die vroeë 1980's, waar knaende afwykings op Ford se stadige, swaar gelaaide langafstand-netwerk goeie sin gemaak het. Daar is vandag al hoe minder situasies waar netwerktoepassings by sy algoritme kan baat.
Die Nagle-algoritme is slegs bruikbaar met TCP. Ander protokolle, soos UDP, ondersteun dit nie.