Een overzicht van het Nagle-algoritme voor TCP-netwerkcommunicatie

Inhoudsopgave:

Een overzicht van het Nagle-algoritme voor TCP-netwerkcommunicatie
Een overzicht van het Nagle-algoritme voor TCP-netwerkcommunicatie
Anonim

Het Nagle-algoritme, genoemd naar ingenieur John Nagle, is ontworpen om netwerkcongestie veroorzaakt door kleine pakketproblemen met TCP-toepassingen te verminderen. UNIX-implementaties begonnen het Nagle-algoritme in de jaren tachtig te gebruiken en het blijft een standaardfunctie van TCP vandaag.

Hoe het Nagle-algoritme werkt

Het Nagle-algoritme verwerkt gegevens aan de verzendende kant van TCP-toepassingen met een methode die zeuren wordt genoemd. Het detecteert kleine berichten en verzamelt die berichten in grotere TCP-pakketten voordat gegevens over de draad worden verzonden. Dit proces vermijdt het genereren van onnodig grote aantallen kleine pakketjes.

De technische specificatie voor het Nagle-algoritme werd in 1984 gepubliceerd als RFC 896. De beslissingen over hoeveel gegevens moeten worden verzameld en hoe lang tussen verzendingen moet worden gewacht, zijn van cruciaal belang voor de algehele prestaties.

De voordelen van zeuren

Nagling kan de bandbreedte van een netwerkverbinding efficiënt gebruiken ten koste van vertragingen of latentie. Een voorbeeld beschreven in RFC 896 illustreert de potentiële voordelen van bandbreedte en de reden voor de oprichting ervan:

  • Als een TCP-toepassing die toetsaanslagen op het toetsenbord onderschept, elk teken dat wordt getypt wil doorgeven aan een ontvanger, kan het een reeks berichten genereren, die elk 1 byte aan gegevens bevatten.
  • Voordat deze berichten over het netwerk kunnen worden verzonden, moet elk bericht worden verpakt met TCP-headerinformatie zoals vereist door TCP/IP. Elke header varieert in grootte tussen 20 en 60 bytes.
  • Zonder gezeur zou deze voorbeeldtoepassing netwerkberichten genereren die voor 95 procent of meer kopinformatie (ten minste 20 van de 21 bytes) en 5 procent of minder feitelijke gegevens van het toetsenbord van de afzender bevatten. Met behulp van het Nagle-algoritme konden dezelfde gegevens worden afgeleverd met minder berichten, wat resulteert in grote besparingen op de bandbreedte.

Applicaties regelen hun gebruik van het Nagle-algoritme met de TCP_NODELA-socketprogrammeeroptie. Windows-, Linux- en Java-systemen schakelen Nagle normaal gesproken standaard in. Daarom moeten toepassingen die voor die omgevingen zijn geschreven, TCP_NODELAY specificeren om het algoritme uit te schakelen.

Image
Image

Beperkingen

Applicaties die een snelle netwerkreactie vereisen, zoals videogesprekken en online gamen, werken mogelijk niet goed als Nagle is ingeschakeld. De vertragingen die worden veroorzaakt terwijl het algoritme extra tijd nodig heeft om kleinere stukjes gegevens samen te stellen, kunnen een merkbare vertraging visueel op een scherm of in een digitale audiostream veroorzaken. Dergelijke toepassingen schakelen Nagle meestal uit.

Dit algoritme is oorspronkelijk ontwikkeld in een tijd dat computernetwerken minder bandbreedte ondersteunden dan tegenwoordig. Het hierboven beschreven voorbeeld was gebaseerd op de ervaringen van John Nagle bij Ford Aerospace in het begin van de jaren tachtig, waar zeurende compromissen op het langzame, zwaarbelaste langeafstandsnetwerk van Ford logisch waren. Er zijn tegenwoordig steeds minder situaties waarin netwerkapplicaties kunnen profiteren van zijn algoritme.

Het Nagle-algoritme is alleen bruikbaar met TCP. Andere protocollen, zoals UDP, ondersteunen dit niet.

Aanbevolen: