HTTP dhau UDP - ua kom siv tau zoo ntawm QUIC raws tu qauv

HTTP dhau UDP - ua kom siv tau zoo ntawm QUIC raws tu qauv

QUIC (Quick UDP Internet Connections) yog cov txheej txheem saum toj kawg nkaus ntawm UDP uas txhawb nqa tag nrho cov yam ntxwv ntawm TCP, TLS thiab HTTP / 2 thiab daws lawv cov teeb meem feem ntau. Nws feem ntau hu ua tus txheej txheem tshiab lossis "kev sim" raws tu qauv, tab sis nws tau ua tiav qhov kev sim siab ntev: kev txhim kho tau txuas ntxiv rau ntau tshaj 7 xyoo. Lub sijhawm no, txoj cai tswjfwm tsis tau ua kom dhau los ua tus qauv, tab sis tseem tau nthuav dav. Piv txwv li, QUIC yog siv los ntawm cov loj loj xws li Google thiab Facebook kom ceev tsheb khiav thiab txo qis hauv kev sib txuas ntawm cov xov tooj ntawm tes, thiab IETF tau tshaj tawm nws cov diav rawg ntawm cov txheej txheem rau lub hauv paus rau HTTP / 3 tus qauv (txawm tias HTTP / 2 siv. tsuas yog 44.8% qhov chaw).

tswvyim

QUIC tau tsim los ua ib qho kev hloov pauv rau cov cuab yeej cuab tam TCP, uas yog tsim los rau cov xov tooj uas tsis tshua muaj hluav taws xob. TCP xa cov pob ntawv raws li kev txiav txim, yog li yog tias ib pob ntawv ploj lawm, tag nrho cov kab yuav tsum nres (lub taub hau ntawm kab thaiv), uas cuam tshuam qhov zoo thiab ruaj khov ntawm kev sib txuas. Txhawm rau kom tsis txhob muaj kev poob loj, cov xov tooj ntawm tes siv los siv cov buffers loj, uas ua rau rov ua dua thiab cov lus teb tsis zoo ntawm cov txheej txheem (ua bufferbloat). Tsis tas li ntawd, TCP siv sijhawm ntau los tsim kev sib txuas: SYN / ACK thiab TLS cov lus thov raug ua tiav nyias, xav tau peb qhov kev mus ncig tsis yog ib qho, raws li QUIC ua.

HTTP dhau UDP - ua kom siv tau zoo ntawm QUIC raws tu qauv

Txij li thaum QUIC sib txuas TCP hloov pauv thiab kev siv TLS 1.3, txhua qhov kev sib txuas yog ib txwm encrypted, thiab decrypting cov tsheb khiav tsis yooj yim dua li yog tias nws mus dhau HTTPS. Tsis tas li ntawd, QUIC yog siv nyob rau hauv daim ntawv thov, raws li kev hloov tag nrho ntawm TCP pawg yuav siv nyob mus ib txhis.

Txawm hais tias muaj kev txhawb nqa rau multiplexing hauv HTTP / 2, qhov teeb meem ntawm lub taub hau-ntawm-kab thaiv tseem nyob ntawd vim qhov xav tau xa cov pob ntawv kom tiav. QUIC yog siv rau sab saum toj ntawm UDP, yog li nws tsis muaj kev thaiv hauv txoj cai, thiab txhawm rau tiv thaiv cov pob ntawv kom tsis txhob ploj mus ib txhis, lawv raug suav thiab tuaj yeem muaj cov "cov neeg nyob sib ze," muab kev rov ua dua. Tsis tas li ntawd, QUIC faib cov kab monolithic rau ntau cov xov rau ntau hom kev thov hauv ib qho kev sib txuas. Yog li, yog tias ib pob ntawv ploj lawm, cov teeb meem yuav tshwm sim tsuas yog rau ib kab (piv txwv li, hloov cov ntaub ntawv tshwj xeeb):

HTTP dhau UDP - ua kom siv tau zoo ntawm QUIC raws tu qauv

Siv

Thaum xub thawj, QUIC tau tsim nyob rau hauv Google thiab tau tsim tshwj xeeb rau kev siv hauv lub tuam txhab. Hauv xyoo 2013, nws tau raug xa mus rau IETF rau kev tsim qauv (uas tseem tab tom ua), thiab tam sim no txhua tus tuaj yeem koom nrog hauv kev tsim cov txheej txheem los ntawm kev tawm tswv yim dab tsi lawv ploj lawm. Pab pawg neeg ua haujlwm IETF teeb tsa cov rooj sib tham txhua xyoo thaum lub sij hawm tus qauv tshiab tau txais kev pom zoo thiab kev sib tham tshiab. Qhov kev siv ntawm QUIC yog suav tias yog qhov tseem ceeb thiab nws yog nyob ntawm nws lub hauv paus uas HTTP / 3 tus qauv tau lees paub.

Txog tam sim no, tsis muaj kev sib tham txog suav nrog HTTP / 3 raws li txoj cai tseem ceeb, vim nws tseem tsis tau tiav thiab yuav luag tsis txaus siab:

HTTP dhau UDP - ua kom siv tau zoo ntawm QUIC raws tu qauv

Tab sis QUIC tuaj yeem siv tau raws li kev thauj mus los ntawm daim ntawv thov thiab lub server, uas tau ua tiav ntawm Uber:

Uber cov lus hais txog kev qhia txog QUIC

Txhawm rau ua tiav QUIC thiab txhim kho daim ntawv thov kev ua haujlwm hauv qhov chaw sib txuas tsis zoo, peb hloov cov pawg qub (HTTP/2 dhau TLS/TCP) nrog QUIC raws tu qauv. Peb siv lub tsev qiv ntawv network Cronet los ntawm Chromium Projects, uas muaj tus thawj, Google version ntawm tus txheej txheem - gQUIC. Qhov kev siv no tseem raug txhim kho tas li kom ua raws li qhov tseeb IETF specification.

Peb thawj zaug koom ua ke Cronet rau hauv peb cov apps hauv Android ntxiv kev txhawb nqa rau QUIC. Kev koom ua ke tau ua raws li txoj hauv kev kom txo cov nqi tsiv teb tsaws ntau npaum li qhov ua tau. Es tsis txhob tag nrho cov qub networking pawg uas siv lub tsev qiv ntawv OkHttp, peb tau koom ua ke Cronet raws li OkHttp API moj khaum. Los ntawm kev ua qhov kev koom ua ke li no, peb zam kev hloov pauv rau peb lub network hu (uas yog siv los ntawm Kev rov xyuas dua) nyob rau qib API.

Zoo ib yam li txoj hauv kev rau cov khoom siv hauv Android, peb siv Cronet rau hauv Uber apps ntawm iOS, cuam tshuam HTTP tsheb los ntawm network APIsiv NSURLProtocol. Qhov kev paub daws teeb meem no, muab los ntawm iOS Foundation, tswj hwm cov txheej txheem tshwj xeeb URL cov ntaub ntawv thiab xyuas kom meej tias peb tuaj yeem koom ua ke Cronet rau hauv peb cov ntawv thov iOS no yam tsis muaj nqi tsiv teb tsaws tseem ceeb.

coj los ntawm no txhais Uber cov khoom

Ntawm qhov backend lawv ntes QUIC kev sib txuas ntawm Google Cloud lb, uas txhawb raws tu qauv txij thaum nruab nrab-2018.

Nws tsis yog qhov xav tsis thoob tias Google Cloud ua haujlwm zoo nrog Google-tsim raws tu qauv, tab sis dab tsi yog lwm txoj hauv kev?

Nginx

Tsis ntev dhau los CloudFlare Kuv sim hla nginx (uas tsis txhawb HTTP / 3 los ntawm lub neej ntawd) nrog nws cov cuab yeej Quiche. Qhov kev siv yog muaj raws li ib tug .patch ntaub ntawv, uas los nrog ib tug 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.patch

Ntawm no koj tuaj yeem txuas koj cov modules yog tias tsim nyog

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

Txhua yam uas tseem tshuav yog txhawm rau pab txhawb 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';
    }
}

Nws tseem tsis tau tuaj yeem txuas ntawm HTTP / 3 hauv browsers li niaj zaus, tab sis koj tuaj yeem siv Chrome Canary thiab khiav nws nrog tus chij --enable-quic, mus rau koj lub server lossis, piv txwv li, lub vev xaib quic.rocks thiab saib hom kev sib txuas hauv Cov Cuab Yeej Tsim Kho:
HTTP dhau UDP - ua kom siv tau zoo ntawm QUIC raws tu qauv
Hloov HTTP / 3 nws tau sau http2+quic/99, tab sis nws yog qhov tseem ceeb tib yam.

Lwm yam technologies

  • QUIC kuj txhawb nqa LiteSpeed (uas txuas nrog Facebook ntawm HTTP / 3 nrog cov kiv cua zoo) thiab nce qib Caddy. Apache tseem tsis tuaj yeem ua tau, tab sis kev ua haujlwm tab tom pib puv viav vias.
  • Lub Ib Hlis 21 hloov tshiab tus qauv tsim rau WebRTC
  • Tsuas yog lwm hnub Microsoft qhib msquic kev siv code, uas tsis yog txhua txoj haujlwm los ntawm IETF tus qauv tseem muaj, tab sis qhov no twb yog ib qho kev tawg loj.

xaus

HTTP dhau UDP - ua kom siv tau zoo ntawm QUIC raws tu qauv

Kev txaus siab hauv QUIC tsis ruaj khov, tab sis loj hlob tuaj, thiab kev ua haujlwm tab tom pib ua qauv rau nws. Kev siv cov txheej txheem tshiab tshwm sim yuav luag txhua lub hlis, thiab txhua xyoo ntau thiab ntau tus neeg tsim khoom tau ntseeg tias QUIC yog yav tom ntej. Nws tseem tuaj yeem suav nrog cov txheej txheem nyob rau yav tom ntej versions ntawm TCP pawg, uas txhais tau hais tias sai lossis tom qab tag nrho Internet yuav txav mus rau kev sib txuas ntau dua thiab nrawm dua.

Twb tau tam sim no koj tuaj yeem teeb tsa QUIC kev sib cuam tshuam rau koj qhov kev tsim kho vaj tsev lossis txawm muab rau browsers - lawv txhua tus tab tom npaj los ntxiv kev txhawb nqa rau cov txheej txheem, thiab cov txheeb cais tu siab nrog caniuse yuav zoo siab dua.

HTTP dhau UDP - ua kom siv tau zoo ntawm QUIC raws tu qauv

Tau qhov twg los: www.hab.com

Ntxiv ib saib