
QUIC (Quick UDP Internet Connections) â Ă«shtĂ« njĂ« protokoll mbi UDP, i cili mbĂ«shtet tĂ« gjitha mundĂ«sitĂ« e TCP, TLS dhe HTTP/2 dhe zgjidh shumicĂ«n e problemeve tĂ« tyre. Shpesh quhet njĂ« protokoll i ri ose "eksperimental", por ai ka kaluar prej kohĂ«sh fazĂ«n eksperimentale: zhvillimi i tij ka vazhduar pĂ«r mĂ« shumĂ« se 7 vjet. GjatĂ« kĂ«saj kohe, protokolli nuk arriti tĂ« bĂ«hej standard, por gjithsesi ka marrĂ« njĂ« shpĂ«rndarje tĂ« gjerĂ«. PĂ«r shembull, QUIC pĂ«rdoret pĂ«r tĂ« pĂ«rshpejtuar trafikun dhe pĂ«r tĂ« ulur vonesat nĂ« rrjetet celulare nga gjigantĂ« si Google dhe Facebook, ndĂ«rsa IETF shpalli fork-un e tij si bazĂ« pĂ«r standardin HTTP/3 (duke pasur parasysh se HTTP/2 pĂ«rdor tĂ« faqeve).
Koncepci
QUIC u zhvillua si një zëvendësim për TCP-në e vjetëruar, e cila fillimisht ishte e dizajnuar për rrjetet me tela me një përqindje të ulët humbjesh. TCP dërgon paketat në rend kronologjik, kështu që në rastin e humbjes së një pakete, e gjithë radha ndalon (), gjë që ndikon negativisht në cilësinë dhe stabilitetin e lidhjes. Për të shmangur humbjet masive, rrjetet celulare përdorin memória të mëdha, çka nga ana tjetër çon në tepërsi dhe reagimin false negative të protokollit (). Për më tepër, TCP kalon shumë kohë për të vendosur një lidhje: kërkesat SYN/ACK dhe TLS shkojnë veçmas, duke kërkuar tri rrethime në vend të një, siç bën QUIC.

Duke qenë se QUIC kombinon zëvendësimin e TCP-së dhe implementimin e TLS 1.3, të gjitha lidhjet gjithmonë janë të enkriptuara, duke e bërë të vështirë dekodimin e këtij trafiku, ashtu siç do të ishte për HTTPS. Për më tepër, QUIC është implementuar në nivelin e aplikacionit, pasi një zëvendësim i plotë i grupit të TCP do të kërkonte përjetësi.
Megjithëse mbështet shumëfishimin në HTTP/2, problemi i bllokimit të kokës së linjës mbetet për shkak të nevojës për të dërguar paketat në rend kronologjik. QUIC është realizuar mbi UDP, kështu që nuk ka bllokime në parim, dhe për të siguruar që paketat nuk humbasin pa kthim, ato numërohen dhe mund të përmbajnë pjesë "fqinji", duke ofruar tepërsi. Për më tepër, QUIC ndan radhën monolitike në disa rrjedha për lloje të ndryshme kërkesash brenda një lidhjeje. Kështu, në rastin e humbjes së një pakete, problemet mund të shfaqen vetëm në një radhë (për shembull, në dërgimin e një skedari të caktuar):

Përdorimi
Originally, QUIC was developed within Google, primarily for internal use. In 2013, it was handed over to the IETF for standardization (which is still ongoing), and now anyone can participate in the development of the protocol by suggesting what they feel is lacking. The IETF working group organizes annual meetings to ratify new standards and discuss innovations. This implementation of QUIC is considered the main one, and it is on this basis that the HTTP/3 standard is certified.
As of now, there is no talk of incorporating HTTP/3 as the main protocol because it is still incomplete and has minimal support:

However, QUIC can be implemented as a transport between an application and a server, as successfully done by Uber:
Uber's comment on the implementation of QUIC
Për të integruar me sukses QUIC dhe për të përmirësuar performancën e aplikacionit në kushte të këqija lidhjeje, ne zëvendësuam stekun e vjeter (HTTP/2 mbi TLS/TCP) me protokollin QUIC. Ne përfshiu bibliotekën e rrjetit nga , e cila përmban versionin origjinal të protokollit të Google, gQUIC. Kjo implementim gjithashtu përmirësohet vazhdimisht për t'u përputhur me specifikimin më të fundit të IETF.
Së pari, ne integuam Cronet në aplikacionet tona Android për të shtuar mbështetje për QUIC. Integrimi u realizua në një mënyrë që reduktonte sa më shumë shpenzimet e migrimit. Në vend që të zëvendësonim tërësisht stekën e vjetër të rrjetit që përdorte bibliotekën , ne integuam Cronet Nà kuadër të API-së së OkHttp. Duke e realizuar integrimin në këtë mënyrë, ne shmanguam ndryshime në thirrjet tona rrjetore (të cilat përdorin ) në nivelin e API-së.
Në mënyrë të ngjashme me qasjen tonë për pajisjet Android, ne implementuam Cronet në aplikacionet Uber për iOS, duke kapur trafik HTTP nga , duke përdorur . Kjo abstraksion, e ofruar nga iOS Foundation, trajton të dhënat e URL-ve specifike për protokollin dhe garanton që mund të integrojmë Cronet në aplikacionet tona për iOS pa shpenzime të mëdha migrimi.
taken from of the Uber article
On the backend, they were capturing QUIC connections through Google Cloud lb, which since mid-2018.
It's no surprise that Google Cloud works perfectly with a protocol developed by Google, but what are the alternatives?
Nginx
Recently, CloudFlare nginx (which by default does not support HTTP/3) with its tool Quiche. The implementation is available as a single .patch file, along with an installation tutorial:
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.patchHere, you can include your own modules if needed
./configure
--prefix=$PWD
--with-http_ssl_module
--with-http_v2_module
--with-http_v3_module
--with-openssl=../quiche/deps/boringssl
--with-quiche=../quiche
makeAll that remains is to enable HTTP/3 support
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 is 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';
}
} In standard browsers, connecting via HTTP/3 is not currently possible, but you can take and run it with the flag --enable-quic, access your server or, for example, the site quic.rocks and check the connection type in Developer Tools:

Instead of HTTP/3, it shows http2+quic/99, but essentially, it's the same thing.
Other technologies
- QUIC gjithashtu mbështet (të cilat u lidhën me Facebook me zhurmë përmes HTTP/3) dhe progresive . Apache ende nuk e di, por puna është duke vazhduar .
- Më 21 janar u përditësua
- Pikërisht në ditët e fundit Microsoft hapi , në të cilin ende nuk janë të gjitha funksionet nga standardi IETF, por kjo është një përparim i madh.
Përfundim

Interesi pĂ«r QUIC Ă«shtĂ« i ndryshueshĂ«m, por po rritet, po punohet mbi standardizimin e tij. Realisht tĂ« reja tĂ« protokollit po shfaqen çdo muaj, dhe çdo vit gjithnjĂ« e mĂ« shumĂ« zhvillues po binden se e ardhmja Ă«shtĂ« tek QUIC. ĂshtĂ« e mundur qĂ« protokolli tĂ« pĂ«rfshihet nĂ« versionet e ardhshme tĂ« stakut TCP, dhe kjo do tĂ« thotĂ« se herĂ«t a vonĂ« i gjithĂ« interneti do tĂ« kalojĂ« nĂ« lidhje mĂ« tĂ« qĂ«ndrueshme dhe mĂ« tĂ« shpejta.
Tani tashmĂ« mund tĂ« konfigurosh ndĂ«rveprimin QUIC pĂ«r infrastrukturĂ«n tĂ«nde ose madje ta ofrosh atĂ« pĂ«r shfletuesit â tĂ« gjithĂ« planifikojnĂ« tĂ« shtojnĂ« mbĂ«shtetje pĂ«r protokollin, dhe statistikat e zymta nga caniuse do tĂ« bĂ«hen mĂ« optimiste.
Burimi: habr.com
