HTTP sa UDP - maayo nga paggamit sa QUIC protocol

HTTP sa UDP - maayo nga paggamit sa QUIC protocol

Ang QUIC (Quick UDP Internet Connections) usa ka protocol sa ibabaw sa UDP nga nagsuporta sa tanang bahin sa TCP, TLS ug HTTP/2 ug nagsulbad sa kadaghanan sa ilang mga problema. Kanunay kini nga gitawag nga bag-o o "eksperimento" nga protocol, apan dugay na kini nga nabuhi sa yugto sa eksperimento: ang pag-uswag nagpadayon sa sobra sa 7 ka tuig. Niini nga panahon, ang protocol wala mahimo nga usa ka sumbanan, apan mikaylap gihapon. Pananglitan, ang QUIC gigamit sa mga higante sama sa Google ug Facebook aron mapadali ang trapiko ug makunhuran ang mga paglangan sa mga mobile network, ug gideklarar sa IETF nga ang tinidor niini sa protocol ang sukaranan alang sa sumbanan sa HTTP / 3 (bisan kung gigamit ang HTTP / 2. 44.8% lang mga site).

Konsepto

Ang QUIC gimugna isip kapuli sa legacy nga TCP, nga orihinal nga gidesinyo alang sa mga low-loss wired networks. Ang TCP naghatud sa mga pakete sa han-ay, busa kung ang usa ka pakete mawala, ang tibuok nga pila mahunong (head-of-line blocking), nga negatibong makaapekto sa kalidad ug kalig-on sa koneksyon. Aron malikayan ang daghang mga kapildihan, ang mga cellular network mogamit sa daghang mga buffer, nga sa baylo mosangput sa redundancy ug sayup nga negatibo nga tubag sa protocol (bufferbloat). Dugang pa, ang TCP naggugol ug daghang panahon sa pag-establisar ug koneksyon: Ang SYN/ACK ug TLS nga mga hangyo giproseso nga gilain, nagkinahanglan ug tulo ka roundtrip imbes nga usa, sama sa QUIC.

HTTP sa UDP - maayo nga paggamit sa QUIC protocol

Tungod kay ang QUIC naghiusa sa usa ka pagpuli sa TCP ug usa ka pagpatuman sa TLS 1.3, ang tanan nga mga koneksyon kanunay nga naka-encrypt, ug ang pag-decrypt sa ingon nga trapiko dili labi kadali kaysa kung kini moagi sa HTTPS. Dugang pa, ang QUIC gipatuman sa lebel sa aplikasyon, ingon nga usa ka kompleto nga pagpuli sa TCP stack ang kinahanglan kahangturan.

Bisan pa sa suporta alang sa multiplexing sa HTTP/2, ang problema sa head-of-line blocking nagpabilin didto tungod sa panginahanglan sa paghatod sa mga packet sa han-ay. Ang QUIC gipatuman sa ibabaw sa UDP, mao nga kini walay blocking sa prinsipyo, ug aron mapugngan ang mga packet nga mawala sa kahangturan, sila giihap ug mahimong adunay mga bahin sa "mga silingan," nga naghatag ug redundancy. Dugang pa, gibahin sa QUIC ang monolithic nga pila sa daghang mga hilo alang sa lainlaing mga lahi sa mga hangyo sulod sa usa ka koneksyon. Busa, kung ang usa ka pakete nawala, ang mga problema mahimong motungha lamang sa usa ka pila (pananglitan, alang sa pagbalhin sa usa ka piho nga file):

HTTP sa UDP - maayo nga paggamit sa QUIC protocol

Paggamit

Sa sinugdan, ang QUIC gimugna sulod sa Google ug gipahaom sa kadaghanan alang sa paggamit sulod sa kompanya. Sa 2013, gibalhin kini sa IETF alang sa standardisasyon (nga nagpadayon pa), ug karon ang tanan makaapil sa pag-uswag sa protocol pinaagi sa pagsugyot kung unsa ang ilang kulang. Ang IETF working group nag-organisar og tinuig nga mga miting diin ang usa ka bag-ong sumbanan giaprobahan ug ang mga inobasyon gihisgutan. Kini nga pagpatuman sa QUIC gikonsiderar nga nag-una ug base niini nga ang HTTP/3 nga sumbanan gi-sertipikado.

Sa pagkakaron, wala'y hisgot mahitungod sa paglakip sa HTTP/3 isip nag-unang protocol, tungod kay wala pa kini mahuman ug halos dili suportado:

HTTP sa UDP - maayo nga paggamit sa QUIC protocol

Apan ang QUIC mahimong ipatuman ingon usa ka transportasyon tali sa aplikasyon ug sa server, nga malampuson nga nahimo sa Uber:

Ang komento ni Uber sa pagpaila sa QUIC

Aron malampuson nga ma-embed ang QUIC ug mapauswag ang performance sa aplikasyon sa dili maayo nga koneksyon nga palibot, among giilisan ang daan nga stack (HTTP/2 sa TLS/TCP) sa QUIC protocol. Gigamit namon ang librarya sa network Cronet gikan sa Mga Proyekto sa Chromium, nga naglangkob sa orihinal, Google nga bersyon sa protocol - gQUIC. Kini nga pagpatuman padayon usab nga gipauswag aron masunod ang pinakabag-o nga detalye sa IETF.

Una namon nga gisagol ang Cronet sa among mga Android apps aron makadugang suporta para sa QUIC. Ang paghiusa gihimo sa paagi nga makunhuran ang gasto sa paglalin kutob sa mahimo. Imbis nga hingpit nga ilisan ang daan nga networking stack nga gigamit ang librarya OkHttp, gisagol namo ang Cronet UBOS sa OkHttp API framework. Pinaagi sa paghimo sa panagsama niining paagiha, among gilikayan ang mga pagbag-o sa among mga tawag sa network (nga gigamit sa Pag-retrofit) sa lebel sa API.

Sama sa pamaagi alang sa mga Android device, gipatuman namo ang Cronet sa Uber apps sa iOS, nga nagpugong sa trapiko sa HTTP gikan sa network. APInaggamit NSURLProtocol. Kini nga abstraction, nga gihatag sa iOS Foundation, nagdumala sa datos sa URL nga piho sa protocol ug nagsiguro nga mahimo namon nga i-integrate ang Cronet sa among mga aplikasyon sa iOS nga wala’y daghang gasto sa paglalin.

gikuha gikan sa kini nga hubad Mga artikulo sa Uber

Sa backend nakuha nila ang QUIC nga mga koneksyon pinaagi sa Google Cloud lb, nga nagsuporta sa protocol sukad sa tunga-tunga sa 2018.

Dili ikatingala nga ang Google Cloud nagtrabaho nga maayo sa Google-developed protocol, apan unsa ang mga alternatibo?

Nginx

Dili pa dugay CloudFlare Misulay ko sa pagtabok nginx (nga dili mosuporta sa HTTP/3 sa default) gamit ang Quiche tool niini. Ang pagpatuman magamit isip usa ka .patch file, nga adunay usa ka panudlo sa pag-install:

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

Dinhi mahimo nimong ikonektar ang imong mga module kung kinahanglan

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

Ang nahabilin mao ang pagpagana sa suporta sa 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';
    }
}

Dili pa posible ang pagkonektar pinaagi sa HTTP/3 sa mga regular nga browser, apan mahimo nimong gamiton Chrome Canary ug ipadagan kini gamit ang bandila --enable-quic, adto sa imong server o, pananglitan, ang quic.rocks site ug tan-awa ang tipo sa koneksyon sa Developer Tools:
HTTP sa UDP - maayo nga paggamit sa QUIC protocol
Imbes nga HTTP/3 kini gisulat http2+quic/99, apan kini sa esensya parehas nga butang.

Ubang mga teknolohiya

konklusyon

HTTP sa UDP - maayo nga paggamit sa QUIC protocol

Ang interes sa QUIC dili lig-on, apan nagkadako, ug ang trabaho nagpadayon sa pag-standardize niini. Ang mga bag-ong pagpatuman sa protocol makita hapit matag bulan, ug matag tuig nagkadaghan ang mga developers kombinsido nga ang QUIC mao ang umaabot. Posible pa gani nga ilakip ang protocol sa umaabot nga mga bersyon sa TCP stack, nga nagpasabot nga sa madugay o sa madali ang tibuok Internet mobalhin ngadto sa mas lig-on ug mas paspas nga mga koneksyon.

Naa na karon mahimo nimong i-configure ang QUIC nga interaksyon para sa imong imprastraktura o bisan ihatag kini sa mga browser - silang tanan nagplano nga magdugang suporta alang sa protocol, ug ang masulub-on nga estadistika nga adunay caniuse mahimong labi ka malipayon.

HTTP sa UDP - maayo nga paggamit sa QUIC protocol

Source: www.habr.com

Idugang sa usa ka comment