Google ir vėl pagreitino internetą

Google mokslininkai neseniai pranešė apie 2 naujus TCP protokolo patobulinimus, kurie pagreitins internetą: TCP Fast Open ir TCP Proportional Rate Reduction.

TCP Fast Open

Prieš pradedant siųsti ar gauti duomenis TCP protokolu, iš pradžių reikia užmegzti TCP ryšį. Ryšio užmezgimui naudojamas TCP SYN+ACK Handshake mechanizmas. Šio mechanizmo esmė ta, kad klientas su serveriu iš pradžių apsikeičia SYN ir SYN+ACK paketais su įvairiais TCP ryšio parametrais. Tik tuomet, kai ryšys sėkmingai užmegztas, galima pradėti siųsti duomenis. Nuo TCP protokolo sukūrimo laikų iki šiol buvo pasiūlyta (ir įgyvendinta) daug TCP protokolo patobulinimų, kurie padidino duomenų siuntimo spartą. Tačiau ryšio užmezgimo mechanizmas buvo praktiškai neliečiamas. Google pasiūlė metodą, kaip pradėti duomenis siųsti jau ryšio užmezgimo metu.

Ryšio užmezgimas trunka paprastai nuo 10 ms iki 200-300 ms, tačiau, jei ryšys lėtas, gali trukti netgi iki 1000 ms. Kai pradedami siųsti duomenys ir ryšio sesija trunka ilgai, kelias minutes ar net valandas, kaip kad, pavyzdžiui, FTP ryšio metu, tuomet tos sutaupytos 200 ms didelio skirtumo nedaro. Tačiau interneto svetainių turinys dažniausiai būna sudarytas iš daug mažų objektų, kurių vidurkis yra 7,3 KB, o mediana – 2,4 KB. Kiekvienam objektui persiųsti atidaroma nauja TCP sesija, kuri trunka labai trumpai, kartais tik sekundės dalis. Šiuo atveju Google pasiūlytas TCP Fast Open mechanizmas, pradedantis siųsti duomenis jau ryšio užmezgimo metu, pagreitina svetainės užkrovimą apie 10-15%, o kartais net iki 40%.

Ir svarbiausia, kad Google ne tik atliko teorinius skaičiavimus, bet ir jau įdiegė šią naujovę į Google serverius, į Linux’o TCP/IP steką (3.x serijos Linux branduoliuse), į Chrome naršyklę ir Apache web serverį. Tad labai tikėtina, kad kai kurie iš jūsų netrukus jau naudosis šiuo nauju patobulinimu.

Naujasis mechanizmas gana paprastas, bet jame apgalvota kiekviena smulkmena: apsauga nuo SYN atakų, DOS atakų ir pan. Skaitykite plačiau apie TCP Fast Open.

TCP Proportional Rate Reduction

Mūsų interneto šlangos nebegalinės, todėl neišvengiamai kai kurie duomenų paketai pražūsta pakeliui. Google ištyrė, kad pradingus bent vienam paketui, TCP duomenų patvirtinimo paketo (ACK paketo) siuntimas užtrunka 7-10 kartų ilgiau, negu įprastu atveju, kai nedingsta nei vienas paketas.

TCP protokole yra įdiegta keletas mechanizmų, nurodančių kaip elgtis pradingus paketui: slow start, congestion avoidance, fast retransmit ir fast recovery. Vėliau protokolas buvo papildytas congestion window, newReno, SACK, rate halving ir kitais mechanizmais. Šie mechanizmai nurodo kada, kaip, kokiu greičiu ir kokiais kiekiais reikia pakartotinai siųsti pradingusius duomenis. Būtent ši sritis – pradingusių duomenų persiuntimas – ir buvo labiausiai tobulinama per 40 TCP protokolo gyvavimo metų.

Google inžinieriai, ištyrę keletą milijardų TCP sesijų tarp klientų ir savo serverių, nustatė, kad dabartiniai srauto valdymo mechanizmai dažnai elgiasi pernelyg konservatyviai arba pernelyg agresyviai. Pakartotinus duomenis siųsdami per lėtai arba per greitai šie mechanizmai arba neišnaudoja viso kanalo, arba per anksti vėl jį užkemša.

Google eksperimentiškai bandė atrasti balansą tarp per greit ir per lėtai. Įdiegus jų pasiūlytą naująjį dingusių paketų persiuntimo mechanizmą svetainės vidutiniškai atsiunčiamos 3-10% greičiau. Google inžinieriai šį mechanizmą jau įdiegė Linux 3.x serijos branduoliuose, tad jei duomenys siunčiami iš Linux serverio su nauju branduoliu, tikėtina, kad duomenis gausite šiek tiek greičiau, nei iš kito serverio.

Plačiau apie Proportional Rate Reduction skaitykite čia. Rekomenduoju visiems, besidomintiems QoS.

This entry was posted in TCP protokolas. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>