Nagle algoritmoa
Nagle algoritmoa, John Nagle-ek sortua, TCP (Transmission Control Protocol) protokoloan oinarritutako sareen efizientzia handitzeko prozedura bat da. Algoritmo honek, metodo heuristikoen bitartez, IP pakete txikiegiak bidaltzea ekiditen du. Azken hauek buffer batean kateatzen dira eta horrela bidaliko den hurrengo mezuaren tamaina egokiagoa izango da.
Sortzearen arrazoiak
[aldatu | aldatu iturburu kodea]Algoritmo hau sortzearen arrazoia, 1984ko Congestion Control in IP/TCP Internetworks (RFC 986) dokumentuan azaldu zuen John Nagle-ek. Bertan, pakete txikien (tinygrams) arazoa bezala definiturikoa erakusten da. Sarri arazo hau eta Leiho Leloaren sindromearekin (Silly Window Syndrome) nahasten da. Lehena, leihoa utzik dagoenean gertatzen da eta bigarrena berriz, beteta dagoenean.
Dokumentu horretan azaldutakoa argi ikusten da 1 byteko mezuak sortzen dituen aplikazio bat badugu (adibidez telnet erabiltzean, teklatuko botoi askok tamaina horretako mezuak sortzen dituzte). Kasu horietan sarea paketeekin gainkargatzea oso erraza da, izan ere, 1 byteko datuak bidaltzeko 40 byteko burualdea beharko da (20 byte TCP burualdearentzat eta beste 20 IP burualdean) eta orduan 41 byte bidali beharko lirateke. Honek guztiak, %4000ko alferrik galtzea dakar bai paketeen prozesatzea burutzeko behar den denboran eta bai erabilitako baliabideetan.
Algoritmoa
[aldatu | aldatu iturburu kodea]if transmititzeko datuak daude if Leihoaren tamaina >= MSS eta datu erabilgarriak>= MSS bidali MSS segmentua orain else if baieztatu gabeko datuak daude itxaroten buffer-ean kateatu datuak baieztapena (ack) jaso arte else bidali datuak end if end if end if
Abantailak
[aldatu | aldatu iturburu kodea]Nagle algoritmoak dakarren aldaketa nagusia sarean zehar segmentu txiki bakarra (byte gutxi batzuk) egon daitekeela da. Hartzaileak bidalitako segmentu honen baieztapena (ACK seinalea) igorleari heltzen ez zaion bitartean helburura bidali beharreko datu berriak buffer batean pilatzen ariko dira.
Horrela, behin igorleak aurreko segmentu horren baieztapena jasotzen duenean pilatutako datuak bidaltzen dira aurreko segmentuak baino byte kopuru gehiago izango dituelarik. Horrela, sarea pakete desberdinekin gainkargatzea zailagoa izango da. Bufferrean pilatutako datuek MSSa (Maximun Segment Size) gainditzen dutenean ere, segmentua bidali egiten da.
Gainera, Nagle algoritmoa sarearen egoerara moldatzen da. Sarearen erabilpen maila zenbat eta handiagoa izan, ACK mezuak denbora gehiago beharko du bueltan eta beraz bufferrean kateatuko diren datu kopurua handiagoa izango da.
Atzerapen gabeko kasuentzat
[aldatu | aldatu iturburu kodea]Gaur egun, interneten, gehiegi kargatutako sareetan sortzen dituen abantailak baliatzeko algoritmo honen erabilpena lehenesten da. Hala ere, ez da beti egokia izango burutu nahi ditugun zereginetarako. Interakzio azkarra behar den kasuetan esaterako, paketeen transmisioan atzerapen txiki bat edukitzea oso kaltegarria gerta daiteke. Kasu horietan, aplikazioen socket-etan TCP_NODELAY
aplikatzen da Nagle algoritmoa ez erabiltzeko.
Erreferentziak
[aldatu | aldatu iturburu kodea]- RFC 896 Congestion Control in IP/TCP Internetworks, John Nagle, 1984, Internet Engineering Task Force.