HTTP liwat UDP - nggunakake protokol QUIC

HTTP liwat UDP - nggunakake protokol QUIC

QUIC (Sambungan Internet UDP Cepet) minangka protokol ing ndhuwur UDP sing ndhukung kabeh fitur TCP, TLS, lan HTTP/2 lan ngrampungake akeh masalah. Asring kasebut minangka protokol anyar utawa "eksperimen", nanging wis suwe luwih suwe tahap eksperimen: pangembangan wis ditindakake luwih saka 7 taun. Sajrone wektu kasebut, protokol kasebut ora bisa dadi standar, nanging isih nyebar. Contone, QUIC digunakake dening raksasa kayata Google lan Facebook kanggo nyepetake lalu lintas lan nyuda wektu tundha ing jaringan seluler, lan IETF nyatakake garpu protokol kasebut minangka basis standar HTTP / 3 (sanajan HTTP / 2 nggunakake. mung 44.8% situs).

Konsep

QUIC dikembangake minangka panggantos kanggo TCP warisan, sing wiwitane dirancang kanggo jaringan kabel sing kurang mundhut. TCP ngirim paket kanthi urut, dadi yen siji paket ilang, kabeh antrian mandheg (pamblokiran head-of-line), sing mengaruhi kualitas lan stabilitas sambungan. Kanggo ngindhari kerugian gedhe, jaringan seluler nggunakake buffer gedhe, sing nyebabake redundansi lan respon negatif palsu saka protokol (bufferbloat). Kajaba iku, TCP nglampahi akeh wektu kanggo nggawe sambungan: SYN/ACK lan TLS panjalukan diproses kanthi kapisah, mbutuhake telung roundtrip tinimbang siji, kaya QUIC.

HTTP liwat UDP - nggunakake protokol QUIC

Wiwit QUIC nggabungake panggantos TCP lan implementasine TLS 1.3, kabeh sambungan tansah dienkripsi, lan dekripsi lalu lintas kasebut ora luwih gampang tinimbang yen liwat HTTPS. Kajaba iku, QUIC dileksanakake ing tingkat aplikasi, minangka panggantos lengkap saka tumpukan TCP bakal njupuk kalanggengan.

Sanajan dhukungan kanggo multiplexing ing HTTP / 2, masalah pamblokiran head-of-line tetep ana amarga kudu ngirim paket kanthi urutan. QUIC dileksanakake ing ndhuwur UDP, supaya ora ana pemblokiran ing asas, lan kanggo nyegah paket saka ilang ing salawas-lawase, padha nomer lan bisa ngemot bagean saka "tanggane", nyediakake redundansi. Kajaba iku, QUIC pamisah antrian monolitik menyang sawetara Utas kanggo macem-macem jinis panjalukan ing sambungan siji. Mangkono, yen paket ilang, masalah bisa muncul mung kanggo siji antrian (contone, kanggo nransfer file tartamtu):

HTTP liwat UDP - nggunakake protokol QUIC

Gunakake

Kaping pisanan, QUIC dikembangake ing Google lan umume dirancang kanggo digunakake ing perusahaan kasebut. Ing 2013, ditransfer menyang IETF kanggo standarisasi (sing isih ditindakake), lan saiki kabeh wong bisa melu pangembangan protokol kasebut kanthi ngusulake apa sing ilang. Klompok kerja IETF nganakake rapat taunan sajrone standar anyar disetujoni lan inovasi dibahas. Implementasi QUIC iki dianggep minangka sing utama lan adhedhasar standar HTTP / 3 disertifikasi.

Nganti saiki, ora ana omongan babagan kalebu HTTP/3 minangka protokol utama, amarga durung rampung lan meh ora didhukung:

HTTP liwat UDP - nggunakake protokol QUIC

Nanging QUIC bisa dileksanakake minangka transportasi antarane aplikasi lan server, sing kasil ditindakake ing Uber:

Komentar Uber babagan introduksi QUIC

Kanggo kasil nglebokake QUIC lan ningkatake kinerja aplikasi ing lingkungan konektivitas sing kurang, kita ngganti tumpukan lawas (HTTP/2 liwat TLS/TCP) nganggo protokol QUIC. Kita nggunakake perpustakaan jaringan Kronèt saka Proyek Chromium, sing ngemot asli, versi Google saka protokol - gQUIC. Implementasi iki uga terus ditingkatake kanggo ngetutake spesifikasi IETF paling anyar.

Kita pisanan nggabungake Cronet menyang aplikasi Android kanggo nambah dhukungan kanggo QUIC. Integrasi ditindakake kanthi cara sing bisa nyuda biaya migrasi. Tinimbang rampung ngganti tumpukan jaringan lawas sing digunakake perpustakaan OkeHttp, kita wis nggabungake Cronet ING kerangka API OkHttp. Kanthi nindakake integrasi kanthi cara iki, kita nyingkiri owah-owahan ing telpon jaringan (sing digunakake dening Retrofit) ing tingkat API.

Kaya pendekatan kanggo piranti Android, kita ngetrapake Cronet menyang aplikasi Uber ing iOS, nyegat lalu lintas HTTP saka jaringan. APInggunakake NSURLProtocol. Abstraksi iki, diwenehake dening iOS Foundation, nangani data URL khusus protokol lan mesthekake yen kita bisa nggabungake Cronet menyang aplikasi iOS tanpa biaya migrasi sing signifikan.

dijupuk saka terjemahan iki Artikel Uber

Ing backend padha kejiret sambungan QUIC liwat Google Cloud lb, kang ndhukung protokol wiwit pertengahan 2018.

Ora kaget yen Google Cloud bisa digunakake kanthi apik karo protokol sing dikembangake Google, nanging apa alternatif?

Nginx

Ora suwe CloudFlare Aku nyoba nyabrang nginx (sing ora ndhukung HTTP / 3 minangka standar) kanthi alat Quiche. Implementasine kasedhiya minangka file .patch siji, sing dilengkapi karo tutorial instalasi:

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

Ing kene sampeyan bisa nyambungake modul yen perlu

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

Kabeh sing isih ana yaiku ngaktifake dhukungan 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';
    }
}

Sampeyan durung bisa nyambung liwat HTTP/3 ing browser biasa, nanging sampeyan bisa nggunakake Canary Chrome lan mlaku nganggo gendera --enable-quic, pindhah menyang server utawa, contone, situs quic.rocks lan deleng jinis sambungan ing Alat Pangembang:
HTTP liwat UDP - nggunakake protokol QUIC
Tinimbang HTTP / 3 ditulis http2+quic/99, nanging iku ateges bab sing padha.

Teknologi liyane

  • QUIC uga ndhukung LiteSpeed (kang disambungake menyang Facebook liwat HTTP / 3 karo fanfare gedhe) lan progresif caddy. Apache durung bisa nindakake, nanging isih ditindakake ayunan lengkap.
  • 21 Januari dianyari draf standar kanggo WebRTC
  • Mung dina liyane Microsoft mbukak kode implementasi msquic, sing durung kabeh fungsi saka standar IETF kasedhiya, nanging iki wis dadi terobosan gedhe.

kesimpulan

HTTP liwat UDP - nggunakake protokol QUIC

Kapentingan ing QUIC ora stabil, nanging saya tambah akeh, lan kerja kanggo standarisasi. Implementasi anyar saka protokol katon meh saben wulan, lan saben taun luwih akeh pangembang yakin yen QUIC minangka mangsa ngarep. Malah bisa uga kalebu protokol kasebut ing versi tumpukan TCP sing bakal teka, sing tegese cepet utawa mengko kabeh Internet bakal pindhah menyang sambungan sing luwih stabil lan luwih cepet.

Saiki sampeyan bisa ngatur interaksi QUIC kanggo infrastruktur sampeyan utawa malah menehi menyang browser - kabeh padha ngrancang kanggo nambah dhukungan kanggo protokol, lan statistik sedih karo caniuse bakal dadi luwih nyenengake.

HTTP liwat UDP - nggunakake protokol QUIC

Source: www.habr.com

Add a comment