HTTP iwwer UDP - gutt Notzung vum QUIC Protokoll

HTTP iwwer UDP - gutt Notzung vum QUIC Protokoll

QUIC (Quick UDP Internet Connections) ass e Protokoll uewen op UDP deen all d'Features vun TCP, TLS an HTTP/2 ënnerstëtzt an déi meescht vun hire Probleemer léist. Et gëtt dacks en neien oder "experimentellen" Protokoll genannt, awer et huet d'experimentell Etapp laang iwwerlieft: d'Entwécklung ass méi wéi 7 Joer weider. Wärend dëser Zäit huet de Protokoll et net fäerdeg bruecht e Standard ze ginn, awer ass ëmmer verbreet. Zum Beispill gëtt QUIC vu sou Risen wéi Google a Facebook benotzt fir de Traffic ze beschleunegen an d'Verzögerungen an de mobilen Netzwierker ze reduzéieren, an d'IETF huet seng Gabel vum Protokoll als Basis fir den HTTP/3 Standard erkläert (och wann HTTP/2 benotzt nëmmen 44.8% Siten).

Konzept

QUIC gouf als Ersatz fir den legacy TCP entwéckelt, deen ursprénglech fir niddereg-Verloscht Kabelnetzwierker entwéckelt gouf. TCP liwwert Päckchen an Uerdnung, also wann ee Paket verluer ass, gëtt d'ganz Schlaang gestoppt (Kapp-vun-Linn blockéieren), wat d'Qualitéit an d'Stabilitéit vun der Verbindung negativ beaflosst. Fir massiv Verloschter ze vermeiden, zéien cellulär Netzwierker op grouss Pufferen, wat am Tour zu Redundanz a falsch negativ Äntwert vum Protokoll féiert (bufferbloat). Zousätzlech verbréngt TCP vill Zäit fir eng Verbindung opzebauen: SYN / ACK an TLS Ufroe ginn getrennt, erfuerdert dräi Roundtrips amplaz vun engem, wéi QUIC mécht.

HTTP iwwer UDP - gutt Notzung vum QUIC Protokoll

Zënter QUIC kombinéiert en TCP Ersatz an eng Ëmsetzung vun TLS 1.3, sinn all Verbindungen ëmmer verschlësselt, an esou Traffic entschlësselen ass net méi einfach wéi wann et iwwer HTTPS géif goen. Zousätzlech gëtt QUIC um Applikatiounsniveau ëmgesat, wéi e komplette Ersatz vum TCP-Stack géif huelen Éiwegkeet.

Trotz der Ënnerstëtzung fir Multiplexing an HTTP/2, ass de Problem vum Head-of-Line Blocking do bliwwen wéinst der Bedierfnes fir Pakete an Uerdnung ze liwweren. QUIC gëtt uewen op UDP ëmgesat, sou datt et am Prinzip keng Blockéierung huet, a fir ze verhënneren datt Päck fir ëmmer verluer ginn, si si nummeréiert a kënnen Deeler vun "Noperen" enthalen, déi Redundanz ubidden. Zousätzlech splitt QUIC déi monolithesch Schlaang a verschidde Threads fir verschidden Aarte vun Ufroen an enger eenzeger Verbindung. Also, wann e Paket verluer ass, kënnen Probleemer nëmme fir eng Schlaang entstoen (zum Beispill fir eng spezifesch Datei ze transferéieren):

HTTP iwwer UDP - gutt Notzung vum QUIC Protokoll

Benotzt

Am Ufank gouf QUIC bannent Google entwéckelt a gouf gréisstendeels fir d'Benotzung bannent der Firma ugepasst. Am Joer 2013 gouf et un d'IETF fir d'Standardiséierung iwwerginn (wat nach ëmmer leeft), an elo kann jidderee bei der Entwécklung vum Protokoll deelhuelen andeems se proposéiere wat se fehlen. Den IETF Aarbechtsgrupp organiséiert alljährlechen Reuniounen, während deenen en neie Standard guttgeheescht gëtt an Innovatiounen diskutéiert ginn. Dës Implementatioun vu QUIC gëtt als Haaptgrond ugesinn an et ass op senger Basis datt den HTTP/3 Standard zertifizéiert ass.

Bis elo gëtt et net geschwat iwwer HTTP/3 als Haaptprotokoll abegraff, well et nach net fäerdeg ass a bal net ënnerstëtzt gëtt:

HTTP iwwer UDP - gutt Notzung vum QUIC Protokoll

Awer QUIC kann als Transport tëscht der Applikatioun an dem Server ëmgesat ginn, wat erfollegräich bei Uber gemaach gouf:

Uber säi Kommentar iwwer d'Aféierung vu QUIC

Fir QUIC erfollegräich z'integréieren an d'Applikatiounsleistung an aarme Konnektivitéitsëmfeld ze verbesseren, hu mir den alen Stack (HTTP / 2 iwwer TLS / TCP) mam QUIC Protokoll ersat. Mir hunn d'Netzbibliothéik benotzt Cronet aus Chromium Projeten, déi d'Original, Google Versioun vum Protokoll enthält - gQUIC. Dës Implementatioun gëtt och permanent verbessert fir déi lescht IETF Spezifizéierung ze verfollegen.

Mir hunn als éischt Cronet an eis Android Apps integréiert fir Ënnerstëtzung fir QUIC ze addéieren. D'Integratioun gouf esou duerchgefouert fir d'Migratiounskäschte sou vill wéi méiglech ze reduzéieren. Amplaz den alen Netzwierkstack komplett ze ersetzen deen d'Bibliothéik benotzt huet OkHttp, Mir hunn Cronet UNDER dem OkHttp API Kader integréiert. Andeems mir d'Integratioun op dës Manéier maachen, hu mir Ännerunge vun eisem Netzwierk vermeit (déi benotzt gi vun Retrofit) um API Niveau.

Ähnlech wéi d'Approche fir Android Apparater, hu mir Cronet an Uber Apps op iOS implementéiert, HTTP-Traffic vum Netz offangen APIbenotzt NSURL Protokoll. Dës Abstraktioun, déi vun der iOS Foundation zur Verfügung gestallt gëtt, handhabt protokollspezifesch URL-Daten a garantéiert datt mir Cronet an eis iOS Uwendungen integréiere kënnen ouni bedeitend Migratiounskäschte.

vun geholl dëser Iwwersetzung Uber Artikelen

Um Backend hu se QUIC Verbindungen iwwer Google Cloud lb gefaangen, déi ënnerstëtzt Protokoll zënter Mëtt 2018.

Et ass keng Iwwerraschung datt Google Cloud gutt mat dem Google entwéckelte Protokoll funktionnéiert, awer wat sinn d'Alternativen?

Nginx

Net laang virun CloudFlare Ech hu probéiert ze Kräiz nginx (wat net HTTP/3 par défaut ënnerstëtzt) mat sengem Quiche-Tool. D'Implementatioun ass verfügbar als eenzeg .patch Datei, déi mat engem Installatioun Tutorial kënnt:

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

Hei kënnt Dir Är Moduler wann néideg verbannen

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

Alles wat bleift ass HTTP / 3 Support z'aktivéieren

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

Et ass nach net méiglech iwwer HTTP/3 an normale Browser ze verbannen, awer Dir kënnt benotzen Chrome Canary a lafen et mam Fändel --enable-quic, gitt op Äre Server oder zum Beispill de quic.rocks Site a kuckt d'Verbindungstyp an Developer Tools:
HTTP iwwer UDP - gutt Notzung vum QUIC Protokoll
Amplaz HTTP/3 gëtt et geschriwwe http2+quic/99, awer et ass am Fong datselwecht.

Aner Technologien

  • QUIC ënnerstëtzt och LiteSpeed (déi mat grousser Fanfare mat Facebook iwwer HTTP/3 ugeschloss ass) a progressiv Caddy. Apache kann et nach net maachen, awer d'Aarbecht ass amgaang voll Schwong.
  • 21. Januar aktualiséiert Entworf Standard fir WebRTC
  • Just den aneren Dag huet Microsoft opgemaach msquic Ëmsetzung Code, an deem nach net all Funktiounen aus dem IETF Standard verfügbar sinn, awer dëst ass schonn e groussen Duerchbroch.

Konklusioun

HTTP iwwer UDP - gutt Notzung vum QUIC Protokoll

D'Interesse fir QUIC ass onbestänneg, awer wiisst, an d'Aarbecht ass amgaang et ze standardiséieren. Nei Implementatioune vum Protokoll erschéngen bal all Mount, an all Joer sinn ëmmer méi Entwéckler iwwerzeegt datt QUIC d'Zukunft ass. Et ass souguer méiglech de Protokoll an zukünfteg Versioune vum TCP-Stack opzehuelen, wat heescht datt fréier oder spéider de ganzen Internet op méi stabil a méi séier Verbindunge wäert bewegen.

Elo kënnt Dir d'QUIC Interaktioun fir Är Infrastruktur konfiguréieren oder souguer de Browser ginn - si plangen all Ënnerstëtzung fir de Protokoll ze addéieren, an déi traureg Statistike mat Caniuse wäerte méi lëschteg ginn.

HTTP iwwer UDP - gutt Notzung vum QUIC Protokoll

Source: will.com

Setzt e Commentaire