UDP හරහා HTTP - QUIC ප්‍රොටෝකෝලය හොඳින් භාවිතා කිරීම

UDP හරහා HTTP - QUIC ප්‍රොටෝකෝලය හොඳින් භාවිතා කිරීම

QUIC (ඉක්මන් UDP අන්තර්ජාල සම්බන්ධතා) යනු TCP, TLS සහ HTTP/2 හි සියලුම විශේෂාංග සඳහා සහය දක්වන සහ ඔවුන්ගේ ගැටළු බොහොමයක් විසඳන UDP මත ඇති ප්‍රොටෝකෝලයකි. එය බොහෝ විට නව හෝ "පර්යේෂණාත්මක" ප්රොටෝකෝලයක් ලෙස හැඳින්වේ, නමුත් එය පර්යේෂණාත්මක අදියර දිගු කලක් ඉක්මවා ඇත: සංවර්ධනය වසර 7 කට වඩා වැඩි කාලයක් පවතී. මෙම කාලය තුළ, ප්රොටෝකෝලය සම්මතයක් බවට පත් කිරීමට සමත් නොවූ නමුත් තවමත් පුළුල් ලෙස පැතිර ගියේය. උදාහරණයක් ලෙස, ගමනාගමනය වේගවත් කිරීමට සහ ජංගම ජාල වල ප්‍රමාදයන් අඩු කිරීමට Google සහ Facebook වැනි දැවැන්තයින් විසින් QUIC භාවිතා කරන අතර, IETF විසින් HTTP/3 ප්‍රමිතිය සඳහා (HTTP/2 භාවිතා කළත්) එහි ප්‍රොටෝකෝලයේ දෙබල ප්‍රකාශ කළේය. 44.8%ක් පමණයි අඩවි).

සංකල්පය

QUIC නිපදවන ලද්දේ පැරණි TCP වෙනුවට ආදේශකයක් ලෙස වන අතර එය මුලින් නිර්මාණය කර ඇත්තේ අඩු පාඩු සහිත රැහැන්ගත ජාල සඳහාය. TCP පිළිවෙළට පැකට් ලබා දෙයි, එබැවින් එක් පැකට්ටුවක් නැති වුවහොත්, සම්පූර්ණ පෝලිම නතර වේ (ප්‍රධාන මාර්ගය අවහිර කිරීම), සම්බන්ධතාවයේ ගුණාත්මකභාවය සහ ස්ථාවරත්වය කෙරෙහි ඍණාත්මක ලෙස බලපායි. විශාල අලාභ වළක්වා ගැනීම සඳහා, සෛලීය ජාල විශාල බෆර භාවිතා කිරීමට යොමු වන අතර, එමඟින් ප්‍රොටෝකෝලයේ අතිරික්තතාවයට සහ ව්‍යාජ සෘණාත්මක ප්‍රතිචාරයට මග පාදයි (bufferbloat) මීට අමතරව, TCP සම්බන්ධතාවයක් ස්ථාපිත කිරීමට බොහෝ කාලයක් ගත කරයි: SYN/ACK සහ TLS ඉල්ලීම් වෙන වෙනම සකසනු ලැබේ, QUIC කරන පරිදි එකක් වෙනුවට වට චාරිකා තුනක් අවශ්‍ය වේ.

UDP හරහා HTTP - QUIC ප්‍රොටෝකෝලය හොඳින් භාවිතා කිරීම

QUIC TCP ප්‍රතිස්ථාපනයක් සහ TLS 1.3 ක්‍රියාත්මක කිරීමක් ඒකාබද්ධ කරන බැවින්, සියලුම සම්බන්ධතා සෑම විටම සංකේතනය කර ඇති අතර, එවැනි ගමනාගමනය විකේතනය කිරීම HTTPS හරහා යනවාට වඩා පහසු නොවේ. ඊට අමතරව, TCP තොගය සම්පූර්ණයෙන් ප්‍රතිස්ථාපනය කිරීම සඳහා QUIC යෙදුම් මට්ටමින් ක්‍රියාත්මක වේ සදහටම.

HTTP/2 හි මල්ටිප්ලෙක්සිං සඳහා සහය තිබියදීත්, පැකට් පිළිවෙලට බෙදා හැරීමේ අවශ්‍යතාවය හේතුවෙන් ප්‍රධාන මාර්ගය අවහිර කිරීමේ ගැටලුව පවතී. QUIC UDP මත ක්‍රියාත්මක වේ, එබැවින් එයට ප්‍රතිපත්තිමය වශයෙන් අවහිරයක් නොමැති අතර, පැකට් සදහටම නැතිවීම වැළැක්වීම සඳහා, ඒවා අංකනය කර ඇති අතර අතිරික්තය සපයන "අසල්වැසියන්ගේ" කොටස් අඩංගු විය හැක. මීට අමතරව, QUIC විසින් තනි සම්බන්ධතාවයක් තුළ විවිධ ආකාරයේ ඉල්ලීම් සඳහා මොනොලිතික් පෝලිම බහු නූල් වලට බෙදයි. මේ අනුව, පැකට්ටුවක් නැති වුවහොත්, ගැටළු මතු විය හැක්කේ එක් පෝලිමක් සඳහා පමණි (උදාහරණයක් ලෙස, විශේෂිත ගොනුවක් මාරු කිරීම සඳහා):

UDP හරහා HTTP - QUIC ප්‍රොටෝකෝලය හොඳින් භාවිතා කිරීම

භාවිතා කරන්න

මුලදී, QUIC Google තුළ සංවර්ධනය කරන ලද අතර එය බොහෝ දුරට සමාගම තුළ භාවිතය සඳහා සකස් කර ඇත. 2013 දී, එය ප්‍රමිතිකරණය සඳහා IETF වෙත මාරු කරන ලදී (එය තවමත් සිදුවෙමින් පවතී), දැන් සෑම කෙනෙකුටම අතුරුදහන් වූ දේ යෝජනා කිරීමෙන් ප්‍රොටෝකෝලය සංවර්ධනය කිරීමට සහභාගී විය හැකිය. IETF ක්‍රියාකාරී කණ්ඩායම වාර්ෂික රැස්වීම් සංවිධානය කරන අතර එහිදී නව ප්‍රමිතියක් අනුමත කර නවෝත්පාදන සාකච්ඡා කෙරේ. QUIC හි මෙම ක්‍රියාත්මක කිරීම ප්‍රධාන එකක් ලෙස සලකනු ලබන අතර HTTP/3 ප්‍රමිතිය සහතික කර ඇත්තේ එහි පදනම මතය.

මෙතෙක්, HTTP/3 ප්‍රධාන ප්‍රොටෝකෝලය ලෙස ඇතුළත් කිරීම ගැන කතා කර නැත, මන්ද එය තවමත් අවසන් වී නැති අතර සහය නොදක්වයි:

UDP හරහා HTTP - QUIC ප්‍රොටෝකෝලය හොඳින් භාවිතා කිරීම

නමුත් Uber හි සාර්ථකව සිදු කරන ලද යෙදුම සහ සේවාදායකය අතර ප්‍රවාහනයක් ලෙස QUIC ක්‍රියාත්මක කළ හැක:

QUIC හඳුන්වාදීම පිළිබඳ Uber හි අදහස

QUIC සාර්ථකව කාවැද්දීමට සහ දුර්වල සම්බන්ධතා පරිසරයන් තුළ යෙදුම් ක්‍රියාකාරිත්වය වැඩි දියුණු කිරීමට, අපි පැරණි තොගය (TLS/TCP හරහා HTTP/2) QUIC ප්‍රොටෝකෝලය සමඟ ප්‍රතිස්ථාපනය කළෙමු. අපි ජාල පුස්තකාලය භාවිතා කළා ක්රොනෙට් සිට Chromium ව්යාපෘති, ප්‍රොටෝකෝලයේ මුල්, ගූගල් අනුවාදය අඩංගු වේ - gQUIC. නවතම IETF පිරිවිතරයන් අනුගමනය කිරීම සඳහා මෙම ක්‍රියාත්මක කිරීම ද නිරන්තරයෙන් වැඩිදියුණු කරනු ලැබේ.

QUIC සඳහා සහය එක් කිරීමට අපි මුලින්ම Cronet අපගේ Android යෙදුම් වෙත ඒකාබද්ධ කළෙමු. සංක්‍රමණ වියදම් හැකිතාක් අඩු වන ආකාරයට ඒකාබද්ධ කිරීම සිදු කරන ලදී. පුස්තකාලය භාවිතා කළ පැරණි ජාලකරණ තොගය සම්පූර්ණයෙන්ම ප්‍රතිස්ථාපනය කරනවා වෙනුවට OkHttp, අපි OkHttp API රාමුව යටතේ Cronet ඒකාබද්ධ කර ඇත. මේ ආකාරයෙන් ඒකාබද්ධ කිරීම සිදු කිරීමෙන්, අපි අපගේ ජාල ඇමතුම්වල වෙනස්කම් වළක්වා ගත්තෙමු (ඒවා භාවිතා කරන්නේ නැවත සකස් කිරීම) API මට්ටමින්.

Android උපාංග සඳහා වන ප්‍රවේශයට සමානව, අපි ජාලයෙන් HTTP ගමනාගමනයට බාධා කරමින් iOS මත Uber යෙදුම් වෙත Cronet ක්‍රියාත්මක කළෙමු APIභාවිතා කිරීම NSURLProtocol. iOS පදනම විසින් සපයන ලද මෙම සාරාංශය, ප්‍රොටෝකෝල-විශේෂිත URL දත්ත හසුරුවන අතර සැලකිය යුතු සංක්‍රමණ පිරිවැයකින් තොරව අපගේ iOS යෙදුම් වෙත Cronet ඒකාබද්ධ කළ හැකි බව සහතික කරයි.

වෙතින් ගන්නා ලදී මෙම පරිවර්තනය Uber ලිපි

පසු අන්තයේ ඔවුන් Google Cloud lb හරහා QUIC සම්බන්ධතා අල්ලා ගත්හ ප්රොටෝකෝලය සඳහා සහය දක්වයි 2018 මැද සිට.

Google-සංවර්ධිත ප්‍රොටෝකෝලය සමඟ Google Cloud විශිෂ්ට ලෙස ක්‍රියා කිරීම පුදුමයක් නොවේ, නමුත් විකල්ප මොනවාද?

Nginx

බොහෝ කලකට පෙර CloudFlare මම තරණය කිරීමට උත්සාහ කළෙමි nginx (එය පෙරනිමියෙන් HTTP/3 සඳහා සහය නොදක්වයි) එහි Quiche මෙවලම සමඟ. ක්‍රියාත්මක කිරීම තනි .patch ගොනුවක් ලෙස ලබා ගත හැකි අතර, එය ස්ථාපන නිබන්ධනයක් සමඟින් පැමිණේ:

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 හරහා සම්බන්ධ වීමට තවමත් නොහැකි නමුත් ඔබට භාවිතා කළ හැක Chrome Canary සහ එය ධජය සමඟ ධාවනය කරන්න --enable-quic, ඔබගේ සේවාදායකය වෙත හෝ, උදාහරණයක් ලෙස, quic.rocks අඩවිය වෙත ගොස් සංවර්ධක මෙවලම් තුළ සම්බන්ධතා වර්ගය බලන්න:
UDP හරහා HTTP - QUIC ප්‍රොටෝකෝලය හොඳින් භාවිතා කිරීම
HTTP/3 වෙනුවට ලියා ඇත http2+quic/99, නමුත් එය මූලික වශයෙන් එකම දෙයකි.

වෙනත් තාක්ෂණයන්

නිගමනය

UDP හරහා HTTP - QUIC ප්‍රොටෝකෝලය හොඳින් භාවිතා කිරීම

QUIC සඳහා ඇති උනන්දුව අස්ථායී, නමුත් වර්ධනය වන අතර එය ප්‍රමිතිකරණය කිරීමට කටයුතු කරමින් පවතී. ප්‍රොටෝකෝලයේ නව ක්‍රියාත්මක කිරීම් සෑම මසකම පාහේ දිස්වන අතර සෑම වසරකම වැඩි වැඩියෙන් සංවර්ධකයින් QUIC යනු අනාගතය බව ඒත්තු ගන්වයි. TCP තොගයේ අනාගත අනුවාදවල ප්‍රොටෝකෝලය ඇතුළත් කිරීමට පවා හැකිය, එයින් අදහස් කරන්නේ ඉක්මනින් හෝ පසුව මුළු අන්තර්ජාලයම වඩාත් ස්ථාවර සහ වේගවත් සම්බන්ධතා වෙත ගමන් කරන බවයි.

දැනටමත් දැන් ඔබට ඔබේ යටිතල පහසුකම් සඳහා QUIC අන්තර්ක්‍රියා වින්‍යාස කිරීමට හෝ බ්‍රවුසරවලට පවා ලබා දීමට හැකිය - ඔවුන් සියල්ලෝම ප්‍රොටෝකෝලය සඳහා සහය එක් කිරීමට සැලසුම් කරමින් සිටින අතර, කැනියුස් සමඟ දුක්ඛිත සංඛ්‍යාලේඛන වඩාත් ප්‍රීතිමත් වනු ඇත.

UDP හරහා HTTP - QUIC ප්‍රොටෝකෝලය හොඳින් භාවිතා කිරීම

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න