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.
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):
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:
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.
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:
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.
Mung dina liyane Microsoft mbukak kode implementasi msquic, sing durung kabeh fungsi saka standar IETF kasedhiya, nanging iki wis dadi terobosan gedhe.
kesimpulan
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.