HTTP li ser UDP - Protokola QUIC baş bikar tîne

HTTP li ser UDP - Protokola QUIC baş bikar tîne

QUIC (Quick UDP Têkiliyên Înternetê) protokolek li ser UDP ye ku hemî taybetmendiyên TCP, TLS û HTTP/2 piştgirî dike û piraniya pirsgirêkên wan çareser dike. Pir caran jê re protokolek nû an "ceribandinî" tê gotin, lê ew demek dirêj ji qonaxa ceribandinê derbas bûye: pêşkeftin ji 7 salan zêdetir berdewam e. Di vê demê de, protokol nekarî ku bibe standardek, lê dîsa jî belav bû. Mînakî, QUIC ji hêla dêwên wekî Google û Facebook ve tê bikar anîn da ku seyrûseferê bileztir bike û derengiya torên mobîl kêm bike, û IETF forma xwe ya protokolê wekî bingeha standarda HTTP/3 ragihand (tevî ku HTTP/2 bikar tîne tenê 44.8% malperan).

Concept

QUIC wekî cîhgirek ji bo TCP-ya mîras, ku bi eslê xwe ji bo torên têl ên kêm-winda hatî çêkirin, hate pêşve xistin. TCP pakêtan bi rêzê radigihîne, ji ber vê yekê heke pakêtek winda bibe, tevahiya dorê tê rawestandin (astengkirina serî), ku bandorek neyînî li ser kalîte û aramiya pêwendiyê dike. Ji bo ku ji windahiyên girseyî dûr nekevin, torên hucreyî serî li karanîna tamponên mezin didin, ku di encamê de dibe sedema zêdebûn û bersiva neyînî ya derewîn a protokolê (bufferbloat). Wekî din, TCP gelek wext derbas dike da ku pêwendiyek saz bike: Daxwazên SYN/ACK û TLS ji hev cuda diçin, li şûna yek sê geryan hewce dike, wekî QUIC dike.

HTTP li ser UDP - Protokola QUIC baş bikar tîne

Ji ber ku QUIC veguheztinek TCP û pêkanîna TLS 1.3 bi hev re dike, hemî girêdan her gav têne şîfre kirin, û şîfrekirina seyrûsefera wusa ji ya ku ew di ser HTTPS re derbas bibe ne hêsantir e. Digel vê yekê, QUIC di asta serîlêdanê de tête bicîh kirin, ji ber ku veguheztinek bêkêmasî ya stûna TCP digire eternity.

Tevî piştgirîya ji bo multiplexing di HTTP/2 de, pirsgirêka astengkirina serê-xetê li wir ma ji ber hewcedariya radestkirina pakêtan bi rêz. QUIC li ser UDP-ê tête bicîh kirin, ji ber vê yekê di prensîbê de astengiyek wê tune, û ji bo ku pakêtan her û her winda nebin, ew têne jimartin û dikarin beşên "ciranan" di nav xwe de bihêlin, ku zêdebûnê peyda dikin. Digel vê yekê, QUIC ji bo cûrbecûr daxwazên di hundurê yek pêwendiyê de rêza monolîtîk li gelek mijaran dabeş dike. Ji ber vê yekê, heke pakêtek winda bibe, dibe ku pirsgirêk tenê ji bo yek rêzê derkevin (mînakî, ji bo veguheztina pelek taybetî):

HTTP li ser UDP - Protokola QUIC baş bikar tîne

Bikar bînin

Di destpêkê de, QUIC di nav Google de hate pêşve xistin û bi gelemperî ji bo karanîna di hundurê pargîdaniyê de hate çêkirin. Di sala 2013-an de, ew ji bo standardîzekirinê (ku hîn jî berdewam e) ji IETF re hate veguheztin, û naha her kes dikare bi pêşniyara tiştê ku winda dike beşdarî pêşkeftina protokolê bibe. Koma xebatê ya IETF civînên salane organîze dike ku tê de standardek nû tê pejirandin û nûbûn têne nîqaş kirin. Ev pêkanîna QUIC ya sereke tê hesibandin û li ser bingeha wê ye ku standarda HTTP/3 pejirandî ye.

Heya nuha, li ser tevlêbûna HTTP/3 wekî protokola sereke ti axaftin tune, ji ber ku ew hîn neqediyaye û hema hema nayê piştgirî kirin:

HTTP li ser UDP - Protokola QUIC baş bikar tîne

Lê QUIC dikare wekî veguheztinek di navbera serîlêdan û serverê de, ku bi serfirazî li Uber hate kirin, were bicîh kirin:

Şîroveya Uber li ser danasîna QUIC

Ji bo ku QUIC-ê bi serfirazî bicîh bikin û performansa serîlêdanê di hawîrdorên pêwendiya belengaz de çêtir bikin, me staka kevn (HTTP/2 li ser TLS/TCP) bi protokola QUIC ve guhezand. Me pirtûkxaneya torê bikar anî Cronet ji Projeyên Chromium, ku guhertoya orîjînal, Google ya protokolê dihewîne - gQUIC. Ev pêkanîn di heman demê de bi domdarî tê baştir kirin ku li pey taybetmendiya herî dawî ya IETF-ê bişopîne.

Me pêşî Cronet di nav sepanên xwe yên Android-ê de entegre kir da ku piştgirî ji bo QUIC zêde bike. Entegrasyon bi awayekî ku lêçûnên koçberiyê bi qasî ku pêkan kêm bike hate kirin. Li şûna ku bi tevahî li şûna stûna torê ya kevin a ku pirtûkxane bikar anî OkHttp, me Cronet LI JIN çarçoweya OkHttp API-yê entegre kiriye. Bi kirina entegrasyonê bi vî rengî, me ji guhertinên bangên torê yên xwe (yên ku ji hêla têne bikar anîn) dûr xistin Vejandin) di asta API de.

Mîna nêzîkbûna cîhazên Android-ê, me Cronet di serîlêdanên Uber-ê yên li ser iOS-ê de bicîh kir, seyrûsefera HTTP-ê ji torê digire. APIbikar anîn Protokola NSURL. Ev abstraction, ku ji hêla Weqfa iOS-ê ve hatî peyda kirin, daneyên URL-ya taybetî yên protokolê digire û piştrast dike ku em dikarin Cronet-ê bêyî lêçûnên girîng ên koçberiyê di nav sepanên xwe yên iOS-ê de yek bikin.

jê hatiye girtin ev werger gotarên Uber

Li ser piştê wan girêdanên QUIC bi navgîniya Google Cloud lb ve girtin, ku protokolê piştgirî dike ji nîvê 2018.

Ne ecêb e ku Google Cloud bi protokola pêşkeftî ya Google re pir baş dixebite, lê alternatîf çi ne?

nginx

Ne demek berê CloudFlare Min hewl da ku derbas bibin nginx (ku ji hêla xwerû HTTP/3 piştgirî nake) bi amûra xwe ya Quiche. Pêkanîn wekî pelek yekane .patch heye, ku bi tutorialek sazkirinê re tê:

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

Li vir ger hewce be hûn dikarin modulên xwe girêdin

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

Tiştê ku dimîne ev e ku piştgirîya HTTP/3 çalak bike

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';
    }
}

Di gerokên birêkûpêk de hîn ne gengaz e ku meriv bi HTTP/3 ve were girêdan, lê hûn dikarin bikar bînin Chrome Canary û bi alê bimeşîne --enable-quic, biçin servera xwe an, mînakî, malpera quic.rocks û li celebê girêdanê li Amûrên Pêşdebir binêrin:
HTTP li ser UDP - Protokola QUIC baş bikar tîne
Li şûna HTTP/3 hatiye nivîsandin http2+quic/99, lê di eslê xwe de heman tişt e.

Teknolojiyên din

encamê

HTTP li ser UDP - Protokola QUIC baş bikar tîne

Eleqeya ji QUIC re bêîstîqrar e, lê zêde dibe, û xebat ji bo standardîzekirina wê tê meşandin. Pêkanîna nû ya protokolê hema hema her meh xuya dike, û her sal bêtir pêşdebiran pê bawer in ku QUIC pêşeroj e. Tewra gengaz e ku protokolê di guhertoyên paşerojê yên stacka TCP-ê de jî bihewîne, ku tê vê wateyê ku zû an dereng tevahiya Înternetê dê berbi girêdanên aramtir û bileztir ve biçe.

Jixwe naha hûn dikarin danûstendina QUIC-ê ji bo binesaziya xwe mîheng bikin an jî wê bidin gerokan - ew hemî plan dikin ku piştgirî ji protokolê re zêde bikin, û statîstîkên xemgîn ên bi caniuse re dê bêtir dilşa bibin.

HTTP li ser UDP - Protokola QUIC baş bikar tîne

Source: www.habr.com

Add a comment