ХТТП преко УДП-а – добро коришћење КУИЦ протокола

ХТТП преко УДП-а – добро коришћење КУИЦ протокола

КУИЦ (Куицк УДП Интернет Цоннецтионс) је протокол на врху УДП-а који подржава све карактеристике ТЦП, ТЛС и ХТТП/2 и решава већину њихових проблема. Често се назива новим или „експерименталним“ протоколом, али је одавно наџивео експерименталну фазу: развој је у току више од 7 година. За то време, протокол није успео да постане стандард, али је ипак постао широко распрострањен. На пример, КУИЦ користе гиганти као што су Гугл и Фејсбук за убрзавање саобраћаја и смањење кашњења у мобилним мрежама, а ИЕТФ је прогласио своју виљушку протокола основом за ХТТП/3 стандард (иако ХТТП/2 користи само 44.8% сајтови).

Цонцепт

КУИЦ је развијен као замена за стари ТЦП, који је првобитно дизајниран за жичане мреже са малим губицима. ТЦП испоручује пакете по реду, тако да ако се један пакет изгуби, цео ред се зауставља (блокирање главе линије), што негативно утиче на квалитет и стабилност везе. Да би избегле велике губитке, ћелијске мреже прибегавају коришћењу великих бафера, што заузврат доводи до редундантности и лажно негативног одговора протокола (буфферблоат). Поред тога, ТЦП троши доста времена на успостављање везе: СИН/АЦК и ТЛС захтеви се обрађују одвојено, захтевајући три повратна пута уместо једног, као што ради КУИЦ.

ХТТП преко УДП-а – добро коришћење КУИЦ протокола

Пошто КУИЦ комбинује ТЦП замену и имплементацију ТЛС-а 1.3, све везе су увек шифроване, а дешифровање таквог саобраћаја није лакше него да иде преко ХТТПС-а. Поред тога, КУИЦ се имплементира на нивоу апликације, јер би била потребна потпуна замена ТЦП стека вечност.

Упркос подршци за мултиплексирање у ХТТП/2, проблем блокирања хеад-оф-лине остао је ту због потребе да се пакети испоручују по реду. КУИЦ је имплементиран на врху УДП-а, тако да у принципу нема блокирања, а да би се спречило да пакети буду заувек изгубљени, они су нумерисани и могу да садрже делове „суседа“, обезбеђујући редундантност. Поред тога, КУИЦ дели монолитни ред на више нити за различите типове захтева унутар једне везе. Дакле, ако се пакет изгуби, проблеми могу настати само за један ред (на пример, за пренос одређене датотеке):

ХТТП преко УДП-а – добро коришћење КУИЦ протокола

Коришћење

У почетку, КУИЦ је развијен у оквиру Гоогле-а и у великој мери је био прилагођен за коришћење у оквиру компаније. 2013. године је пренет на ИЕТФ на стандардизацију (која је још у току), а сада свако може да учествује у изради протокола тако што ће предложити оно што му недостаје. ИЕТФ радна група организује годишње састанке током којих се одобрава нови стандард и расправља о иновацијама. Ова имплементација КУИЦ-а се сматра главном и на њеној основи се сертификује ХТТП/3 стандард.

За сада нема говора о укључивању ХТТП/3 као главног протокола, јер још није завршен и скоро да није подржан:

ХТТП преко УДП-а – добро коришћење КУИЦ протокола

Али КУИЦ се може имплементирати као транспорт између апликације и сервера, што је успешно урађено у Уберу:

Уберов коментар о увођењу КУИЦ-а

Да бисмо успешно уградили КУИЦ и побољшали перформансе апликације у окружењима са лошом конективношћу, заменили смо стари стек (ХТТП/2 преко ТЛС/ТЦП) са КУИЦ протоколом. Користили смо мрежну библиотеку Цронет од Цхромиум Пројецтс, који садржи оригиналну, Гугл верзију протокола - гКУИЦ. Ова имплементација се такође стално побољшава како би пратила најновију ИЕТФ спецификацију.

Прво смо интегрисали Цронет у наше Андроид апликације да бисмо додали подршку за КУИЦ. Интеграција је спроведена на начин да се што више смање трошкови миграције. Уместо да у потпуности замените стари мрежни стек који је користио библиотеку ОкХттп, интегрисали смо Цронет ИСПОД ОкХттп АПИ оквира. Изводећи интеграцију на овај начин, избегли смо промене у нашим мрежним позивима (које користе Ретрофит) на нивоу АПИ-ја.

Слично приступу за Андроид уређаје, имплементирали смо Цронет у Убер апликације на иОС-у, пресрећући ХТТП саобраћај са мреже АПИ заКористећи НСУРЛПротоцол. Ова апстракција, коју је обезбедила иОС Фоундатион, обрађује УРЛ податке специфичне за протокол и обезбеђује да можемо да интегришемо Цронет у наше иОС апликације без значајних трошкова миграције.

преузет из овај превод Убер чланци

На бацкенд-у су ухватили КУИЦ везе преко Гоогле Цлоуд лб, који подржава протокол од средине 2018.

Није изненађење да Гоогле Цлоуд одлично функционише са протоколом који је развио Гоогле, али које су алтернативе?

Нгинк

Не тако давно ЦлоудФларе Покушао сам да пређем нгинк (који подразумевано не подржава ХТТП/3) са својим Куицхе алатом. Имплементација је доступна као једна .патцх датотека, која долази са упутством за инсталацију:

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

Остаје само да омогућите ХТТП/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';
    }
}

Још увек није могуће повезати се преко ХТТП/3 у редовним претраживачима, али можете да користите chrome Цанари и води га са заставом --enable-quic, идите на свој сервер или, на пример, на куиц.роцкс локацију и погледајте тип везе у алаткама за програмере:
ХТТП преко УДП-а – добро коришћење КУИЦ протокола
Уместо ХТТП/3 написано је http2+quic/99, али то је у суштини иста ствар.

Друге технологије

Закључак

ХТТП преко УДП-а – добро коришћење КУИЦ протокола

Интересовање за КУИЦ је нестабилно, али расте и ради се на његовом стандардизацији. Нове имплементације протокола појављују се скоро сваког месеца, а сваке године све више програмера је уверено да је КУИЦ будућност. Чак је могуће укључити протокол у будуће верзије ТЦП стека, што значи да ће пре или касније цео Интернет прећи на стабилније и брже везе.

Већ сада можете да конфигуришете КУИЦ интеракцију за своју инфраструктуру или чак да је дате прегледачима - сви они планирају да додају подршку за протокол, а тужна статистика са цаниусеом ће постати веселија.

ХТТП преко УДП-а – добро коришћење КУИЦ протокола

Извор: ввв.хабр.цом

Додај коментар