Propozimi për aktivizimin e mënyrës TCP_NODELAY si parazgjedhje

Marc Brooker, inxhinier nga Amazon Web Services (AWS), ka shpjeguar keqkuptimet në lidhje me përmirësimin e efikasitetit të transmetimit të mesazheve të vogla duke përdorur algoritmin e Nagle, i cili aplikohet si parazgjedhje në stakun TCP/IP. Rekomandimet përfshijnë çaktivizimin e algoritmit të Nagle si parazgjedhje, çka mund të bëhet përmes vendosjes së opsionit TCP_NODELAY për soketët rrjetorë me thirrjen e setsockopt, e cila është përdorur prej kohësh në projekte si Node.js dhe curl.

Algoritmi i Nagle mundëson agregimin e mesazheve të vogla për të zvogëluar trafikun - ai pezullon dërgimin e segmenteve të reja TCP deri në marrjen e konfirmimit për pranim të të dhënave të dërguara më parë. Për shembull, pa përdorimin e agregimit, kur dërgoni 1 byte, dërgohen gjithashtu 40 byte të dhëna nga titujt TCP dhe IP të paketës. Në kushtet moderne, përdorimi i algoritmit të Nagle çon në rritje të dukshme të vonesave, të papranueshme për aplikacione interaktive dhe të shpërndara.

Tre arsye kryesore për të përdorur si opsion parazgjedhje TCP_NODELAY, që çaktivizon algoritmin e Nagle, paraqiten si vijon:

  • Inkompatibiliteti i algoritmit tĂ« Nagle me optimizimin e 'delayed ACK', ku pĂ«rgjigja ACK dĂ«rgohet jo menjĂ«herĂ«, por pas marrjes sĂ« tĂ« dhĂ«nave pĂ«rgjigjĂ«se. Problemi Ă«shtĂ« se nĂ« algoritmin e Nagle, pranimi i paketĂ«s ACK Ă«shtĂ« njĂ« sinjal pĂ«r dĂ«rgimin e tĂ« dhĂ«nave tĂ« agreguara, dhe nĂ«se nuk ka paketa ACK, dĂ«rgimi ndodh pĂ«rmes skadimit tĂ« kohĂ«s. KĂ«shtu, krijohet njĂ« cikĂ«l vicioz dhe paketa ACK si sinjal nuk funksionon, pasi pala tjetĂ«r nuk merr tĂ« dhĂ«nat pĂ«r shkak tĂ« grumbullimit nĂ« anĂ«n e dĂ«rguesit, dhe dĂ«rguesi nuk i dĂ«rgon ato deri nĂ« skadimin e kohĂ«s, pasi nuk merr paketĂ«n ACK.
  • RFC pĂ«r algoritmin e Nagle Ă«shtĂ« miratuar nĂ« 1984 dhe ai nuk Ă«shtĂ« projektuar pĂ«r parametrat e rrjeteve moderne me shpejtĂ«si tĂ« lartĂ« dhe serverĂ«sh nĂ« qendrat e tĂ« dhĂ«nave, çka sjell probleme me reagimin. Vonesa ndĂ«rmjet dĂ«rgimit tĂ« kĂ«rkesĂ«s dhe marrjes sĂ« pĂ«rgjigjes (RTT) nĂ« rrjetet moderne Ă«shtĂ« 0.5 ms + disa milisekonda gjatĂ« shkĂ«mbimit tĂ« tĂ« dhĂ«nave ndĂ«rmjet qendrave tĂ« tĂ« dhĂ«nave brenda njĂ« regione + deri nĂ« njĂ«qind milisekonda gjatĂ« dĂ«rgimit pĂ«r nĂ«pĂ«r botĂ«. GjatĂ« kĂ«tyre milisekondave, njĂ« server modern Ă«shtĂ« nĂ« gjendje tĂ« kryejĂ« njĂ« sasi tĂ« madhe pune.
  • Aplikacionet moderne tĂ« shpĂ«rndara nuk dĂ«rgojnĂ« mĂ« bajta individualĂ« tĂ« dhĂ«nash, dhe agregimi i tĂ« dhĂ«nave tĂ« vogla zakonisht realizohet nĂ« nivel aplikacioni. Edhe nĂ«se madhĂ«sia e tĂ« dhĂ«nave tĂ« dobishme Ă«shtĂ« disa bajta, nĂ« pĂ«rgjithĂ«si, madhĂ«sia aktuale e informacionit tĂ« dĂ«rguar rritet ndjeshĂ«m pas aplikimit tĂ« serializimit, pĂ«rdorimit tĂ« API-ve nĂ« JSON dhe dĂ«rgimit me pĂ«rdorimin e enkriptimit TLS. Kursimi i 40 bajtĂ«ve nuk bĂ«het mĂ« kaq i rĂ«ndĂ«sishĂ«m.

Burimi: opennet.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster