QUIC (Quick UDP Internet Connections) нь TCP, TLS, HTTP/2-ын бүх функцийг дэмждэг, тэдгээрийн ихэнх асуудлыг шийддэг UDP-ийн дээд талын протокол юм. Энэ нь ихэвчлэн шинэ эсвэл "туршилтын" протокол гэж нэрлэгддэг боловч туршилтын үе шатыг удаан хугацаанд даван туулсан: хөгжүүлэлт 7 жил гаруй үргэлжилж байна. Энэ хугацаанд протокол нь стандарт болж чадаагүй ч өргөн тархсан хэвээр байна. Жишээлбэл, QUIC-ийг Google, Facebook зэрэг аваргууд замын хөдөлгөөнийг хурдасгах, гар утасны сүлжээн дэх саатлыг бууруулах зорилгоор ашигладаг бөгөөд IETF протоколын салаа нь HTTP/3 стандартын үндэс болсон (HTTP/2 ашигладаг байсан ч гэсэн)
Үзэл баримтлал
QUIC нь бага алдагдалтай утастай сүлжээнд зориулагдсан байсан хуучин TCP-ийг орлуулахаар бүтээгдсэн. TCP нь пакетуудыг дарааллаар нь хүргэдэг тул нэг пакет алдагдсан тохиолдолд дараалал бүхэлдээ зогсдог (
QUIC нь TCP солих болон TLS 1.3-ийн хэрэгжилтийг хослуулсан тул бүх холболтууд үргэлж шифрлэгдсэн байдаг бөгөөд ийм траффикийн кодыг тайлах нь HTTPS-ээр дамжихаас хялбар биш юм. Нэмж дурдахад TCP стекийг бүрэн солиход QUIC нь хэрэглээний түвшинд хэрэгждэг. үүрд мөнх.
HTTP/2-д мультиплексийг дэмждэг байсан ч пакетуудыг дарааллаар нь хүргэх шаардлагатай байсан тул шугамын толгойг блоклох асуудал хэвээр үлдсэн. QUIC нь UDP дээр хэрэгждэг тул зарчмын хувьд блоклохгүй бөгөөд пакетуудыг үүрд алдахаас урьдчилан сэргийлэхийн тулд тэдгээрийг дугаарлаж, "хөрш"-ийн хэсгүүдийг агуулж, илүүдлийг хангадаг. Нэмж дурдахад, QUIC нь цул дарааллыг нэг холболт дотор янз бүрийн төрлийн хүсэлтүүдэд зориулж олон урсгалд хуваадаг. Тиймээс, хэрэв пакет алдагдсан бол зөвхөн нэг дараалалд асуудал үүсч болно (жишээлбэл, тодорхой файлыг шилжүүлэхэд):
Ашиглах
Анх QUIC-ийг Google-д хөгжүүлж, үндсэндээ компанид ашиглахаар тохируулсан. 2013 онд стандартчилалд IETF-д шилжүүлсэн (энэ нь одоо ч үргэлжилж байгаа) бөгөөд одоо хүн бүр дутуу зүйлээ санал болгосноор протоколыг боловсруулахад оролцох боломжтой. IETF-ийн ажлын хэсэг жил бүр хурлыг зохион байгуулдаг бөгөөд энэ үеэр шинэ стандарт баталж, шинэчлэлийг хэлэлцдэг. QUIC-ийн энэхүү хэрэгжилтийг гол зүйл гэж үздэг бөгөөд үүний үндсэн дээр HTTP/3 стандартыг баталгаажуулсан болно.
Одоогоор HTTP/3-ийг үндсэн протокол болгон оруулах тухай яриа байхгүй, учир нь энэ нь дуусаагүй байгаа бөгөөд бараг дэмжигдээгүй байна.
Гэхдээ QUIC нь Uber дээр амжилттай хийгдсэн програм болон серверийн хооронд тээвэрлэлт хийх боломжтой.
Uber-ийн QUIC-ийн танилцуулгад өгсөн тайлбар
QUIC-г амжилттай суулгаж, холболт муутай орчинд програмын гүйцэтгэлийг сайжруулахын тулд бид хуучин стекийг (TLS/TCP дээр HTTP/2) QUIC протоколоор сольсон. Бид сүлжээний номын санг ашигласан
Кронет ньChromium төслүүд , протоколын анхны Google хувилбарыг агуулсан gQUIC. Энэхүү хэрэгжилтийг мөн IETF-ийн хамгийн сүүлийн үеийн үзүүлэлтүүдийг дагаж мөрдөхийн тулд байнга сайжруулж байна.Бид эхлээд QUIC-д дэмжлэг үзүүлэхийн тулд Cronet-ийг Андройд програмууддаа нэгтгэсэн. Шилжилт хөдөлгөөний зардлыг аль болох бууруулах үүднээс интеграци хийсэн. Номын санг ашиглаж байсан хуучин сүлжээний стекийг бүрэн солихын оронд
OkHttp , бид Cronet-ийг OkHttp API хүрээний дор нэгтгэсэн. Интеграцийг ийм байдлаар хийснээр бид сүлжээний дуудлагадаа (хэрэглэдэгАшгийн ашиг ) API түвшинд.Андройд төхөөрөмжүүдийн арга барилтай адил бид Cronet-ийг iOS дээрх Uber програмуудад нэвтрүүлж, сүлжээнээс HTTP урсгалыг таслан зогсоосон.
API ашиглахNSURLProtocol . iOS сангаас гаргасан энэхүү хийсвэрлэл нь протоколд хамаарах URL-н өгөгдлийг зохицуулдаг бөгөөд бид Cronet-ийг iOS програмууддаа шилжүүлэхэд ихээхэн зардалгүйгээр нэгтгэх боломжийг олгодог.
-аас авсан
Ар талд нь тэд Google Cloud lb-ээр дамжуулан QUIC холболтыг барьсан
Google Cloud нь Google-ийн боловсруулсан протоколтой маш сайн ажилладаг нь гайхах зүйл биш боловч өөр хувилбарууд юу вэ?
Nginx
Удалгүй CloudFlare
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
Шаардлагатай бол энд модулиудаа холбож болно
./configure
--prefix=$PWD
--with-http_ssl_module
--with-http_v2_module
--with-http_v3_module
--with-openssl=../quiche/deps/boringssl
--with-quiche=../quiche
make
Зөвхөн 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';
}
}
Энгийн хөтөч дээр HTTP/3-ээр холбогдох боломжгүй байгаа ч та ашиглаж болно --enable-quic
, өөрийн сервер эсвэл жишээлбэл, quic.rocks сайт руу орж, Хөгжүүлэгчийн хэрэгслээс холболтын төрлийг харна уу:
HTTP/3-ын оронд бичигдсэн байна http2+quic/99
, гэхдээ энэ нь үндсэндээ ижил зүйл юм.
Бусад технологиуд
- QUIC бас дэмждэг
LiteSpeed (Facebook-тэй HTTP/3-аар дамжуулан их сүр дуулиантай холбогдсон) болон дэвшилтэтцай . Apache үүнийг хараахан хийж чадахгүй байгаа ч ажил хийгдэж байнабүрэн савлуур . - 21-р сарын XNUMX шинэчлэгдсэн
WebRTC стандартын төсөл - Дөнгөж сая Майкрософт нээгдэв
msquic хэрэгжүүлэх код , IETF стандартын бүх функцууд хараахан гараагүй байгаа ч энэ нь аль хэдийн том нээлт болсон.
дүгнэлт
QUIC-ийн сонирхол тогтворгүй боловч нэмэгдэж байгаа бөгөөд үүнийг стандартчилах ажил хийгдэж байна. Протоколын шинэ хэрэгжилтүүд бараг сар бүр гарч ирдэг бөгөөд жил бүр улам олон хөгжүүлэгчид QUIC бол ирээдүй гэдэгт итгэлтэй байна. TCP стекийн ирээдүйн хувилбаруудад протоколыг оруулах боломжтой бөгөөд энэ нь эрт орой хэзээ нэгэн цагт интернет бүхэлдээ илүү тогтвортой, хурдан холболт руу шилжих болно гэсэн үг юм.
Одоо та өөрийн дэд бүтцэд зориулж QUIC харилцан үйлчлэлийг тохируулах эсвэл бүр хөтчүүдэд өгөх боломжтой - тэд бүгд протоколд дэмжлэг үзүүлэхээр төлөвлөж байгаа бөгөөд caniuse-тай холбоотой гунигтай статистикууд илүү хөгжилтэй байх болно.
Эх сурвалж: www.habr.com