HTTP dros CDU - gwneud defnydd da o'r protocol QUIC

HTTP dros CDU - gwneud defnydd da o'r protocol QUIC

Protocol ar ben CDU yw QUIC (Cysylltiadau Rhyngrwyd Cyflym CDU) sy'n cefnogi holl nodweddion TCP, TLS a HTTP/2 ac yn datrys y rhan fwyaf o'u problemau. Fe'i gelwir yn aml yn brotocol newydd neu "arbrofol", ond mae wedi goroesi'r cyfnod arbrofol ers tro: mae datblygiad wedi bod yn mynd rhagddo ers mwy na 7 mlynedd. Yn ystod y cyfnod hwn, ni lwyddodd y protocol i ddod yn safon, ond daeth yn eang o hyd. Er enghraifft, mae cewri megis Google a Facebook yn defnyddio QUIC i gyflymu traffig a lleihau oedi mewn rhwydweithiau symudol, a datganodd yr IETF ei fforch o’r protocol yn sail i’r safon HTTP/3 (er bod HTTP/2 yn defnyddio dim ond 44.8% safleoedd).

Cysyniad

Datblygwyd QUIC yn lle’r hen TCP, a ddyluniwyd yn wreiddiol ar gyfer rhwydweithiau gwifrau colled isel. Mae TCP yn danfon pecynnau mewn trefn, felly os collir un pecyn, mae'r ciw cyfan yn cael ei stopio (blocio pen llinell), sy'n effeithio'n negyddol ar ansawdd a sefydlogrwydd y cysylltiad. Er mwyn osgoi colledion enfawr, mae rhwydweithiau cellog yn troi at ddefnyddio byfferau mawr, sydd yn ei dro yn arwain at ddiswyddo ac ymateb negyddol ffug i'r protocol (bloat byffer). Yn ogystal, mae TCP yn treulio llawer o amser yn sefydlu cysylltiad: mae ceisiadau SYN/ACK a TLS yn cael eu prosesu ar wahân, sy'n gofyn am dri thaith gron yn lle un, fel y mae QUIC yn ei wneud.

HTTP dros CDU - gwneud defnydd da o'r protocol QUIC

Gan fod QUIC yn cyfuno amnewidiad TCP a gweithrediad TLS 1.3, mae pob cysylltiad bob amser wedi'i amgryptio, ac nid yw dadgryptio traffig o'r fath yn haws na phe bai'n mynd dros HTTPS. Yn ogystal, mae QUIC yn cael ei roi ar waith ar lefel y cais, fel y byddai angen amnewidiad llwyr o'r stac TCP tragwyddoldeb.

Er gwaethaf cefnogaeth ar gyfer amlblecsio yn HTTP/2, roedd problem blocio pen llinell yn parhau yno oherwydd yr angen i ddosbarthu pecynnau mewn trefn. Mae QUIC yn cael ei weithredu ar ben y CDU, felly nid oes ganddo unrhyw rwystro mewn egwyddor, ac er mwyn atal pecynnau rhag cael eu colli am byth, maent wedi'u rhifo a gallant gynnwys rhannau o “gymdogion,” ar yr amod eu bod yn colli eu swyddi. Yn ogystal, mae QUIC yn rhannu'r ciw monolithig yn edafedd lluosog ar gyfer gwahanol fathau o geisiadau o fewn un cysylltiad. Felly, os collir pecyn, gall problemau godi ar gyfer un ciw yn unig (er enghraifft, ar gyfer trosglwyddo ffeil benodol):

HTTP dros CDU - gwneud defnydd da o'r protocol QUIC

Defnyddio

I ddechrau, datblygwyd QUIC o fewn Google a chafodd ei deilwra i raddau helaeth i'w ddefnyddio o fewn y cwmni. Yn 2013, fe'i trosglwyddwyd i'r IETF ar gyfer safoni (sy'n dal i fynd rhagddo), a nawr gall pawb gymryd rhan yn natblygiad y protocol trwy gynnig yr hyn sydd ar goll. Mae gweithgor yr IETF yn trefnu cyfarfodydd blynyddol lle caiff safon newydd ei chymeradwyo a thrafodir arloesiadau. Ystyrir mai gweithredu QUIC yw'r prif un ac ar ei sail mae'r safon HTTP/3 wedi'i hardystio.

Hyd yn hyn, nid oes sôn am gynnwys HTTP/3 fel y prif brotocol, oherwydd nid yw wedi'i orffen eto ac nid yw bron yn cael ei gefnogi:

HTTP dros CDU - gwneud defnydd da o'r protocol QUIC

Ond gellir gweithredu QUIC fel cludiant rhwng y cymhwysiad a'r gweinydd, a wnaethpwyd yn llwyddiannus yn Uber:

Sylw Uber ar gyflwyno QUIC

Er mwyn sefydlu QUIC yn llwyddiannus a gwella perfformiad cymhwysiad mewn amgylcheddau cysylltedd gwael, fe wnaethom ddisodli'r hen bentwr (HTTP/2 dros TLS/TCP) gyda'r protocol QUIC. Defnyddiasom lyfrgell y rhwydwaith Cronet o Prosiectau Cromiwm, sy'n cynnwys fersiwn wreiddiol, Google o'r protocol - gQUIC. Mae'r gweithrediad hwn hefyd yn cael ei wella'n gyson i ddilyn y fanyleb IETF ddiweddaraf.

Fe wnaethom integreiddio Cronet i'n apps Android yn gyntaf i ychwanegu cefnogaeth i QUIC. Cyflawnwyd integreiddio mewn ffordd a oedd yn lleihau costau mudo cymaint â phosibl. Yn hytrach na disodli'n llwyr yr hen stac rhwydweithio a ddefnyddiodd y llyfrgell okHttp, rydym wedi integreiddio Cronet UNDER y fframwaith API OkHttp. Trwy wneud yr integreiddio fel hyn, gwnaethom osgoi newidiadau i'n galwadau rhwydwaith (a ddefnyddir gan Ail-osod) ar lefel API.

Yn debyg i'r dull ar gyfer dyfeisiau Android, fe wnaethom weithredu Cronet i apiau Uber ar iOS, gan ryng-gipio traffig HTTP o'r rhwydwaith APIgan ddefnyddio NSURLProtocol. Mae'r tyniad hwn, a ddarperir gan y iOS Foundation, yn trin data URL protocol-benodol ac yn sicrhau y gallwn integreiddio Cronet i'n cymwysiadau iOS heb gostau mudo sylweddol.

cymryd o y cyfieithiad hwn erthyglau Uber

Ar y backend maent yn dal cysylltiadau QUIC trwy Google Cloud lb, sy'n cefnogi protocol ers canol 2018.

Nid yw'n syndod bod Google Cloud yn gweithio'n wych gyda'r protocol a ddatblygwyd gan Google, ond beth yw'r dewisiadau eraill?

Nginx

Ddim yn bell yn ôl CloudFlare Ceisiais groesi nginx (nad yw'n cefnogi HTTP/3 yn ddiofyn) gyda'i offeryn Quiche. Mae'r gweithrediad ar gael fel un ffeil .patch, sy'n dod gyda thiwtorial gosod:

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

Yma gallwch gysylltu eich modiwlau os oes angen

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

Y cyfan sydd ar ôl yw galluogi cefnogaeth 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';
    }
}

Nid yw'n bosibl cysylltu trwy HTTP/3 mewn porwyr rheolaidd eto, ond gallwch chi ddefnyddio Canari Chrome a rhedeg ef â'r faner --enable-quic, ewch i'ch gweinydd neu, er enghraifft, y wefan quic.rocks ac edrychwch ar y math o gysylltiad yn Offer Datblygwr:
HTTP dros CDU - gwneud defnydd da o'r protocol QUIC
Yn lle HTTP/3 mae wedi'i ysgrifennu http2+quic/99, ond yr un peth ydyw yn ei hanfod.

Technolegau eraill

  • Mae QUIC hefyd yn cefnogi LiteSpeed (a gysylltodd â Facebook trwy HTTP/3 gyda ffanffer gwych) a blaengar Caddy. Ni all Apache ei wneud eto, ond mae gwaith ar y gweill swing llawn.
  • Ionawr 21 wedi'i ddiweddaru safon drafft ar gyfer WebRTC
  • Y diwrnod o'r blaen agorodd Microsoft cod gweithredu msquic, lle nad yw pob swyddogaeth o safon IETF ar gael eto, ond mae hwn eisoes yn ddatblygiad mawr.

Casgliad

HTTP dros CDU - gwneud defnydd da o'r protocol QUIC

Mae diddordeb yn QUIC yn ansefydlog, ond yn tyfu, ac mae gwaith yn mynd rhagddo i’w safoni. Mae gweithrediadau newydd o'r protocol yn ymddangos bron bob mis, a bob blwyddyn mae mwy a mwy o ddatblygwyr yn argyhoeddedig mai QUIC yw'r dyfodol. Mae hyd yn oed yn bosibl cynnwys y protocol mewn fersiynau o'r stac TCP yn y dyfodol, sy'n golygu y bydd y Rhyngrwyd cyfan yn symud i gysylltiadau mwy sefydlog a chyflymach yn hwyr neu'n hwyrach.

Eisoes nawr gallwch chi ffurfweddu rhyngweithio QUIC ar gyfer eich seilwaith neu hyd yn oed ei roi i borwyr - maen nhw i gyd yn bwriadu ychwanegu cefnogaeth i'r protocol, a bydd yr ystadegau trist gyda caniuse yn dod yn fwy siriol.

HTTP dros CDU - gwneud defnydd da o'r protocol QUIC

Ffynhonnell: hab.com

Ychwanegu sylw