HTTP pa UDP - kugwiritsa ntchito bwino protocol ya QUIC

HTTP pa UDP - kugwiritsa ntchito bwino protocol ya QUIC

QUIC (Quick UDP Internet Connections) ndi ndondomeko yomwe ili pamwamba pa UDP yomwe imathandizira mbali zonse za TCP, TLS ndi HTTP/2 ndipo imathetsa mavuto awo ambiri. Nthawi zambiri amatchedwa protocol yatsopano kapena "yoyesera", koma yakhala itatha nthawi yayitali yoyesera: chitukuko chakhala chikupitilira zaka 7. Panthawiyi, protocol sinathe kukhala muyezo, koma idafalikira. Mwachitsanzo, QUIC imagwiritsidwa ntchito ndi zimphona monga Google ndi Facebook kuti zifulumizitse kuchuluka kwa magalimoto komanso kuchepetsa kuchedwa kwa ma netiweki am'manja, ndipo IETF idalengeza kuti foloko yake ya protocol ndiyo maziko a muyezo wa HTTP/3 (ngakhale HTTP/2 imagwiritsa ntchito. 44.8% yokha masamba).

Concept

QUIC idapangidwa kuti ilowe m'malo mwa TCP ya cholowa, yomwe idapangidwira ma netiweki otsika kwambiri. TCP imapereka mapaketi mwadongosolo, kotero ngati paketi imodzi itayika, mzere wonse umayimitsidwa (kutsekereza mutu wa mzere), zomwe zimakhudza kwambiri ubwino ndi kukhazikika kwa kugwirizana. Pofuna kupewa kutayika kwakukulu, ma network am'manja amagwiritsa ntchito ma buffers akulu, zomwe zimapangitsa kuti pakhale kuperewera komanso kuyankha kolakwika kwa protocol (bufferbloat). Kuonjezera apo, TCP imathera nthawi yochuluka kukhazikitsa chiyanjano: SYN / ACK ndi zopempha za TLS zimakonzedwa mosiyana, zomwe zimafuna maulendo atatu ozungulira m'malo mwa amodzi, monga momwe QUIC imachitira.

HTTP pa UDP - kugwiritsa ntchito bwino protocol ya QUIC

Popeza QUIC imaphatikiza m'malo mwa TCP ndikukhazikitsa TLS 1.3, maulalo onse amakhala obisika nthawi zonse, ndipo kuyimitsa magalimoto otere sikophweka ngati kumadutsa pa HTTPS. Kuphatikiza apo, QUIC imakhazikitsidwa pamlingo wofunsira, monga kutengera kwathunthu kwa stack ya TCP kungatenge muyaya.

Ngakhale kuthandizira kuchulukitsa mu HTTP/2, vuto la kutsekereza mutu wa mzere lidatsalirabe chifukwa chofuna kupereka mapaketi mwadongosolo. QUIC ikugwiritsidwa ntchito pamwamba pa UDP, kotero ilibe kutsekereza kwenikweni, komanso kuteteza mapaketi kuti asatayike kosatha, amawerengedwa ndipo amatha kukhala ndi magawo a "oyandikana nawo," opereka redundancy. Kuphatikiza apo, QUIC imagawa mzere wa monolithic kukhala ulusi wambiri pamitundu yosiyanasiyana ya zopempha mkati mwa kulumikizana kumodzi. Chifukwa chake, ngati paketi itayika, zovuta zitha kubuka pamzere umodzi wokha (mwachitsanzo, kusamutsa fayilo inayake):

HTTP pa UDP - kugwiritsa ntchito bwino protocol ya QUIC

Gwiritsani ntchito

Poyambirira, QUIC idapangidwa mkati mwa Google ndipo idakonzedwa kuti igwiritsidwe ntchito mkati mwakampani. Mu 2013, idasamutsidwa ku IETF kuti ikhale yokhazikika (yomwe ikupitilirabe), ndipo tsopano aliyense akhoza kutenga nawo mbali pakupanga ndondomekoyi popereka zomwe akusowa. Gulu logwira ntchito la IETF limapanga misonkhano yapachaka pomwe muyezo watsopano umavomerezedwa ndikukambidwa zatsopano. Kukhazikitsa uku kwa QUIC kumaonedwa kuti ndikofunika kwambiri ndipo ndichifukwa chake mulingo wa HTTP/3 umatsimikiziridwa.

Pakadali pano, palibe zokamba zophatikiza HTTP/3 ngati protocol yayikulu, chifukwa sinamalizidwe pano ndipo sichimathandizidwa:

HTTP pa UDP - kugwiritsa ntchito bwino protocol ya QUIC

Koma QUIC ikhoza kukhazikitsidwa ngati mayendedwe pakati pa pulogalamuyo ndi seva, zomwe zidachitika bwino ku Uber:

Ndemanga ya Uber pa kuyambitsa kwa QUIC

Kuti tiyike bwino QUIC ndikuwongolera magwiridwe antchito m'malo osalumikizana bwino, tidasintha stack yakale (HTTP/2 pa TLS/TCP) ndi protocol ya QUIC. Tidagwiritsa ntchito laibulale ya netiweki Cronet kuchokera Chromium Projects, yomwe ili ndi choyambirira, Google ya protocol - gQUIC. Kukhazikitsa uku kukukonzedwanso nthawi zonse kuti mutsatire zomwe IETF yaposachedwa.

Tidaphatikiza koyamba Cronet mu mapulogalamu athu a Android kuti tiwonjezere thandizo la QUIC. Kuphatikiza kunkachitika m'njira yochepetsera ndalama zosamukira kumayiko ena momwe zingathere. M'malo mosinthanso malo akale ochezera a pa intaneti omwe adagwiritsa ntchito laibulale ChabwinoHttp, taphatikiza Cronet PANSI ndi ndondomeko ya OkHttp API. Pochita kuphatikiza motere, tapewa kusintha kwa mafoni athu pamanetiweki (omwe amagwiritsidwa ntchito ndi Kubweza) pamlingo wa API.

Mofanana ndi njira yazida za Android, tidayika Cronet mu mapulogalamu a Uber pa iOS, kuletsa kuchuluka kwa HTTP pamaneti. APIkugwiritsa NSURLProtocol. Chidulechi, choperekedwa ndi iOS Foundation, chimakhala ndi data ya URL yeniyeni ndikuwonetsetsa kuti titha kuphatikiza Cronet ndi mapulogalamu athu a iOS popanda ndalama zambiri zosamukira.

chotengedwa kuchokera kumasulira uku Zolemba za Uber

Kumbuyo adagwira maulalo a QUIC kudzera pa Google Cloud lb, yomwe imathandizira protocol kuyambira pakati pa 2018.

Ndizosadabwitsa kuti Google Cloud imagwira ntchito bwino ndi protocol yopangidwa ndi Google, koma njira zina ndi ziti?

Nginx

Osati kale kwambiri CloudFlare Ndinayesa kuwoloka nginx (yomwe siyigwirizana ndi HTTP/3 mwachisawawa) ndi chida chake cha Quiche. Kukhazikitsa kulipo ngati fayilo imodzi ya .patch, yomwe imabwera ndi maphunziro oyika:

curl -O https://nginx.org/download/nginx-1.16.1.tar.gz
tar xvzf nginx-1.16.1.tar.gz
git clone --recursive https://github.com/cloudflare/quiche
cd nginx-1.16.1
patch -p01 < ../quiche/extras/nginx/nginx-1.16.patch

Apa mutha kulumikiza ma module anu ngati kuli kofunikira

./configure                          	
   	--prefix=$PWD                       	
   	--with-http_ssl_module              	
   	--with-http_v2_module               	
   	--with-http_v3_module               	
   	--with-openssl=../quiche/deps/boringssl 
   	--with-quiche=../quiche
 make

Zomwe zatsala ndikuyambitsa chithandizo cha HTTP/3

events {
    worker_connections  1024;
}

http {
    server {
        # Enable QUIC and HTTP/3.
        listen 443 quic reuseport;

        # Enable HTTP/2 (optional).
        listen 443 ssl http2;

        ssl_certificate      cert.crt;
        ssl_certificate_key  cert.key;

        # Enable all TLS versions (TLSv1.3 is required for QUIC).
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;

        # Request buffering in not currently supported for HTTP/3.
        proxy_request_buffering off;

        # Add Alt-Svc header to negotiate HTTP/3.
        add_header alt-svc 'h3-27=":443"; ma=86400';
    }
}

Sizingatheke kulumikiza kudzera pa HTTP/3 pamasakatuli okhazikika, koma mutha kugwiritsa ntchito Chrome Canary ndi kuyendetsa ndi mbendera --enable-quic, pitani ku seva yanu kapena, mwachitsanzo, tsamba la quic.rocks ndikuyang'ana mtundu wa kulumikizana mu Zida Zopangira:
HTTP pa UDP - kugwiritsa ntchito bwino protocol ya QUIC
M'malo mwa HTTP/3 kwalembedwa http2+quic/99, koma kwenikweni ndi chinthu chomwecho.

Umisiri wina

Pomaliza

HTTP pa UDP - kugwiritsa ntchito bwino protocol ya QUIC

Chidwi mu QUIC sichikhazikika, koma chikukula, ndipo ntchito ikuchitika kuti izi zitheke. Kukhazikitsa kwatsopano kwa protocol kumawoneka pafupifupi mwezi uliwonse, ndipo chaka chilichonse opanga ambiri amakhulupirira kuti QUIC ndiyo tsogolo. Ndizothekanso kuphatikiza protocol m'matembenuzidwe amtsogolo a stack ya TCP, zomwe zikutanthauza kuti posakhalitsa intaneti yonse idzasunthira kumalumikizidwe okhazikika komanso othamanga.

Kale tsopano mutha kukonza kuyanjana kwa QUIC pazokhazikika zanu kapena kuzipereka kwa asakatuli - onse akukonzekera kuwonjezera chithandizo cha protocol, ndipo ziwerengero zachisoni ndi caniuse zidzakhala zosangalatsa kwambiri.

HTTP pa UDP - kugwiritsa ntchito bwino protocol ya QUIC

Source: www.habr.com

Kuwonjezera ndemanga