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.
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):
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.
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.
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:
M'malo mwa HTTP/3 kwalembedwa http2+quic/99, koma kwenikweni ndi chinthu chomwecho.
Umisiri wina
QUIC imathandizanso LiteSpeed (yomwe idalumikizidwa ndi Facebook kudzera pa HTTP/3 ndi chidwi chachikulu) ndikupita patsogolo Caddy. Apache sangagwirebe, koma ntchito ikuchitika kugwedezeka kwathunthu.