En oversigt over Nagle-algoritmen til TCP-netværkskommunikation

Indholdsfortegnelse:

En oversigt over Nagle-algoritmen til TCP-netværkskommunikation
En oversigt over Nagle-algoritmen til TCP-netværkskommunikation
Anonim

Nagle-algoritmen, opkaldt efter ingeniøren John Nagle, blev designet til at reducere netværksoverbelastning forårsaget af små pakkeproblemer med TCP-applikationer. UNIX-implementeringer begyndte at bruge Nagle-algoritmen i 1980'erne, og det er stadig en standardfunktion i TCP i dag.

Sådan fungerer Nagle-algoritmen

Nagle-algoritmen behandler data på afsendersiden af TCP-applikationer ved en metode kaldet nagling. Den registrerer beskeder i små størrelser og akkumulerer disse beskeder i større TCP-pakker, før den sender data over ledningen. Denne proces undgår generering af unødvendigt store antal små pakker.

Den tekniske specifikation for Nagle-algoritmen blev offentliggjort i 1984 som RFC 896. Beslutningerne om, hvor meget data der skal akkumuleres, og hvor længe der skal ventes mellem afsendelser, er afgørende for dens overordnede ydeevne.

Fordelene ved Nagling

Nagling kan effektivt udnytte båndbredden af en netværksforbindelse på bekostning af tilføjelse af forsinkelser eller latens. Et eksempel beskrevet i RFC 896 illustrerer de potentielle båndbreddefordele og årsagen til dens oprettelse:

  • Hvis et TCP-program, der opsnapper tastaturtastetryk, ønsker at kommunikere hvert tegn, der skrives til en modtager, kan det generere en række meddelelser, der hver indeholder 1 byte data.
  • Før disse meddelelser kan sendes på tværs af netværket, skal hver enkelt pakkes med TCP-header-information som krævet af TCP/IP. Hver overskrift varierer i størrelse mellem 20 og 60 bytes.
  • Uden nagling ville denne eksempelapplikation generere netværksmeddelelser bestående af 95 procent eller mere header-information (mindst 20 ud af 21 bytes) og 5 procent eller mindre faktiske data fra afsenderens tastatur. Ved at bruge Nagle-algoritmen kunne de samme data leveres med færre beskeder, hvilket resulterer i store båndbreddebesparelser.

Applikationer styrer deres brug af Nagle-algoritmen med TCP_NODELA-socket-programmeringsmuligheden. Windows, Linux og Java-systemer aktiverer norm alt Nagle som standard. Derfor skal applikationer skrevet til disse miljøer angive TCP_NODELAY for at slå algoritmen fra.

Image
Image

Begrænsninger

Applikationer, der kræver et hurtigt netværkssvar, såsom videoopkald og onlinespil, fungerer muligvis ikke godt, når Nagle er aktiveret. De forsinkelser, der forårsages, mens algoritmen tager ekstra tid at samle mindre bidder af data, kan udløse mærkbar forsinkelse visuelt på en skærm eller i en digital lydstrøm. Sådanne applikationer deaktiverer typisk Nagle.

Denne algoritme blev oprindeligt udviklet på et tidspunkt, hvor computernetværk understøttede mindre båndbredde, end de gør i dag. Eksemplet beskrevet ovenfor var baseret på John Nagles oplevelser hos Ford Aerospace i begyndelsen af 1980'erne, hvor nagende afvejninger på Fords langsomme, tungt belastede langdistancenetværk gav god mening. Der er stadig færre situationer i dag, hvor netværksapplikationer kan drage fordel af hans algoritme.

Nagle-algoritmen kan kun bruges med TCP. Andre protokoller, såsom UDP, understøtter det ikke.

Anbefalede: