HTTP бар UDP - истифодаи хуби протоколи QUIC

HTTP бар UDP - истифодаи хуби протоколи QUIC

QUIC (Quick UDP Internet Connections) як протоколи болои UDP мебошад, ки тамоми хусусиятҳои TCP, TLS ва HTTP/2-ро дастгирӣ мекунад ва аксари мушкилоти онҳоро ҳал мекунад. Онро аксар вақт протоколи нав ё "таҷрибавӣ" меноманд, аммо он аз марҳилаи таҷрибавӣ кайҳо гузаштааст: таҳия зиёда аз 7 сол идома дорад. Дар ин муддат протокол муяссар нашуд, ки ба стандарт табдил ёбад, вале боз ҳам васеъ паҳн шуд. Масалан, QUIC аз ҷониби бузургҷуссаҳое ба мисли Google ва Facebook барои суръат бахшидан ба трафик ва кам кардани таъхирҳо дар шабакаҳои мобилӣ истифода мешавад ва IETF фосилаи протоколи худро асоси стандарти HTTP/3 эълон кард (ҳарчанд HTTP/2 танҳо 44.8% сайтҳо).

Консепсия

QUIC ҳамчун ивазкунандаи TCP-и кӯҳна таҳия шудааст, ки дар ибтидо барои шабакаҳои симии камтараф пешбинӣ шуда буд. TCP бастаҳоро бо тартиб интиқол медиҳад, бинобар ин, агар як баста гум шавад, тамоми навбат қатъ карда мешавад (бастани сар-саф), ки ба сифат ва устувории пайваст таъсири манфй мерасонад. Барои роҳ надодан ба талафоти азим, шабакаҳои мобилӣ ба истифодаи буферҳои калон муроҷиат мекунанд, ки дар навбати худ ба зиёдатӣ ва ҷавоби манфии бардурӯғи протокол оварда мерасонад (буферӣ). Илова бар ин, TCP барои барқарор кардани пайваст вақти зиёдро сарф мекунад: дархостҳои SYN/ACK ва TLS алоҳида коркард карда мешаванд, ки ба ҷои як сафар се маротибаро талаб мекунанд, чуноне ки QUIC мекунад.

HTTP бар UDP - истифодаи хуби протоколи QUIC

Азбаски QUIC ивазкунии TCP ва татбиқи TLS 1.3-ро муттаҳид мекунад, ҳама пайвастҳо ҳамеша рамзгузорӣ карда мешаванд ва рамзкушоии чунин трафик нисбат ба он ки он тавассути HTTPS мегузарад, осонтар нест. Илова бар ин, QUIC дар сатҳи барнома амалӣ карда мешавад, зеро ивази пурраи стеки TCP лозим аст. то абад.

Сарфи назар аз дастгирии мултиплексизатсия дар HTTP/2, мушкилоти бастани сатр аз сабаби зарурати интиқоли пакетҳо дар он ҷо боқӣ монд. QUIC дар болои UDP амалӣ карда мешавад, аз ин рӯ, он аслан блок надорад ва барои пешгирӣ аз гум шудани бастаҳо, онҳо рақамгузорӣ карда мешаванд ва метавонанд қисмҳои "ҳамсояҳо" -ро дар бар гиранд, ки изофиятро таъмин мекунанд. Илова бар ин, QUIC навбати монолитиро ба риштаҳои сершумор барои намудҳои гуногуни дархостҳо дар дохили як пайваст тақсим мекунад. Ҳамин тариқ, агар баста гум шавад, мушкилот танҳо барои як навбат пайдо шуда метавонанд (масалан, барои интиқоли файли мушаххас):

HTTP бар UDP - истифодаи хуби протоколи QUIC

Истифода кунед

Дар аввал, QUIC дар дохили Google таҳия шуда буд ва асосан барои истифода дар дохили ширкат тарҳрезӣ шудааст. Дар соли 2013, он барои стандартизатсия ба IETF интиқол дода шуд (он ҳоло ҳам идома дорад) ва ҳоло ҳама метавонанд дар таҳияи протокол бо пешниҳоди он чизе, ки онҳо намерасанд, иштирок кунанд. Гурӯҳи кории IETF ҷаласаҳои солона ташкил мекунад, ки дар он стандарти нав тасдиқ ва навоварӣ баррасӣ мешавад. Ин татбиқи QUIC яке аз асосӣ ҳисобида мешавад ва дар асоси он стандарти HTTP/3 сертификатсия шудааст.

То ҳол дар бораи дохил кардани HTTP/3 ба сифати протоколи асосӣ гап нест, зеро он ҳанӯз ба итмом нарасидааст ва қариб дастгирӣ намешавад:

HTTP бар UDP - истифодаи хуби протоколи QUIC

Аммо QUIC-ро метавон ҳамчун интиқол байни барнома ва сервер, ки дар Uber бомуваффақият анҷом дод, амалӣ кард:

Шарҳи Uber дар бораи ҷорӣ кардани QUIC

Барои бомуваффақият ҷобаҷо кардани QUIC ва беҳтар кардани иҷрои барнома дар муҳити сусти пайвастшавӣ, мо стеки кӯҳнаро (HTTP/2 бар TLS/TCP) бо протоколи QUIC иваз кардем. Мо китобхонаи шабакавиро истифода мебарем Кронет аз он Лоиҳаҳои Chromium, ки нусхаи аслии Google-и протокол - gQUIC -ро дар бар мегирад. Ин татбиқ инчунин барои риояи мушаххасоти охирини IETF пайваста такмил дода мешавад.

Мо аввал Cronet-ро ба барномаҳои Android-и худ ворид кардем, то ба QUIC дастгирӣ илова кунем. Интегратсия тавре сурат гирифт, ки хароҷоти муҳоҷират то ҳадди имкон кам карда шавад. Ба ҷои пурра иваз кардани стеки шабакавии кӯҳна, ки китобхонаро истифода мебурд OkHttp, мо Cronet-ро дар доираи чаҳорчӯбаи OkHttp API муттаҳид кардем. Бо ин роҳ, мо аз тағирот дар зангҳои шабакавии худ канорагирӣ кардем (ки аз ҷониби Бозгашт) дар сатҳи API.

Монанди равиш барои дастгоҳҳои Android, мо Cronet-ро ба барномаҳои Uber дар iOS татбиқ кардем, ки трафики HTTP-ро аз шабака бозмедошт. APIистифодаи Протоколи NSURL. Ин абстраксия, ки аз ҷониби Фонди iOS пешниҳод шудааст, маълумотҳои URL-и мушаххаси протоколро коркард мекунад ва кафолат медиҳад, ки мо метавонем Cronet-ро ба замимаҳои iOS-и худ бидуни хароҷоти зиёди муҳоҷират ҳамгиро кунем.

аз ин тарҷума Мақолаҳои Uber

Дар пушти сар онҳо пайвастҳои QUIC-ро тавассути Google Cloud lb гирифтанд, ки он протоколро дастгирӣ мекунад аз нимаи соли 2018.

Тааҷҷубовар нест, ки Google Cloud бо протоколи таҳияшудаи Google хуб кор мекунад, аммо алтернативаҳо кадомҳоянд?

Nginx

Чанде пеш CloudFlare Ман кӯшиш кардам, ки убур кунам nginx (ки HTTP/3-ро бо нобаёнӣ дастгирӣ намекунад) бо асбоби Quiche. Татбиқ ҳамчун файли ягонаи .patch дастрас аст, ки бо дастури насбкунӣ меояд:

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

Дар ин ҷо шумо метавонед модулҳои худро дар ҳолати зарурӣ пайваст кунед

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

Ҳама чизе боқӣ мемонад, ки дастгирии 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';
    }
}

Дар браузерҳои муқаррарӣ тавассути HTTP/3 пайваст шудан ҳанӯз имконнопазир аст, аммо шумо метавонед истифода баред Кариер Черкас ва онро бо байрақ иҷро кунед --enable-quic, ба сервери худ ё, масалан, ба сайти quic.rocks равед ва ба намуди пайвастшавӣ дар Tools Developer нигаред:
HTTP бар UDP - истифодаи хуби протоколи QUIC
Ба ҷои HTTP/3 он навишта шудааст http2+quic/99, аммо он аслан як чиз аст.

Дигар технологияҳо

  • QUIC низ дастгирӣ мекунад LiteSpeed (ки ба Фейсбук тавассути HTTP/3 бо тантанаи бузург пайваст) ва пешрафта Caddy. Apache ҳоло ин корро карда наметавонад, аммо кор идома дорад пурбор.
  • 21 январ нав карда шуд лоиҳаи стандарт барои WebRTC
  • Танҳо рӯзи дигар Microsoft кушода шуд рамзи татбиқи msquic, ки дар он на ҳама функсияҳо аз стандарти IETF дастрасанд, аммо ин аллакай як пешрафти бузург аст.

хулоса

HTTP бар UDP - истифодаи хуби протоколи QUIC

Таваҷҷӯҳ ба QUIC ноустувор аст, аммо афзоиш меёбад ва кор барои стандартизатсияи он идома дорад. Татбиқи нави протокол тақрибан ҳар моҳ пайдо мешавад ва ҳар сол бештар ва бештари таҳиягарон боварӣ доранд, ки QUIC оянда аст. Хатто мумкин аст, ки протоколро ба версияҳои ояндаи стеки TCP дохил кунед, яъне ин маънои онро дорад, ки дер ё зуд тамоми Интернет ба пайвастҳои устувортар ва тезтар мегузарад.

Аллакай ҳоло шумо метавонед ҳамкории QUIC-ро барои инфрасохтори худ танзим кунед ё ҳатто онро ба браузерҳо диҳед - ҳамаи онҳо нақша доранд, ки ба протокол дастгирӣ илова кунанд ва омори ғамангез бо caniuse шодтар хоҳад шуд.

HTTP бар UDP - истифодаи хуби протоколи QUIC

Манбаъ: will.com

Илова Эзоҳ