HTTP በ UDP - በጥሩ ሁኔታ ለመጠቀም የQUIC ፕሮቶኮሉን ይጠቀሙ

HTTP በ UDP - በጥሩ ሁኔታ ለመጠቀም የQUIC ፕሮቶኮሉን ይጠቀሙ

QUIC (ፈጣን የዩዲፒ ኢንተርኔት ግንኙነት) ሁሉንም የTCP፣ TLS እና HTTP/2 ባህሪያትን የሚደግፍ እና አብዛኛዎቹን ችግሮቻቸውን የሚፈታ ፕሮቶኮል በ UDP አናት ላይ ነው። ብዙውን ጊዜ አዲስ ወይም "የሙከራ" ፕሮቶኮል ተብሎ ይጠራል, ነገር ግን የሙከራ ደረጃውን ከረጅም ጊዜ በላይ አልፏል: ልማት ከ 7 ዓመታት በላይ ቆይቷል. በዚህ ጊዜ ፕሮቶኮሉ መደበኛ መሆን አልቻለም ፣ ግን አሁንም ተስፋፍቷል ። ለምሳሌ QUIC እንደ ጎግል እና ፌስቡክ ያሉ ግዙፍ ኩባንያዎች የትራፊክ ፍሰትን ለማፋጠን እና የሞባይል ኔትወርኮች መዘግየቶችን ለመቀነስ የሚጠቀሙበት ሲሆን IETF የፕሮቶኮሉን ሹካ ለኤችቲቲፒ/3 መስፈርት መሰረት አድርጎ አውጇል (ምንም እንኳን HTTP/2 ቢጠቀምም) 44.8% ብቻ ጣቢያዎች).

ጽንሰ-ሐሳብ

QUIC የተሰራው በመጀመሪያ ዝቅተኛ ኪሳራ ላለባቸው ባለገመድ አውታረ መረቦች የተነደፈውን ትሩፋት TCP ለመተካት ነው። TCP እሽጎችን በቅደም ተከተል ያቀርባል፣ ስለዚህ አንድ ፓኬት ከጠፋ፣ ወረፋው በሙሉ ይቆማል (የጭንቅላት ማገድ), የግንኙነት ጥራት እና መረጋጋት ላይ አሉታዊ ተጽዕኖ ያሳድራል. ከፍተኛ ኪሳራዎችን ለማስወገድ ሴሉላር ኔትወርኮች ትላልቅ ማቋረጦችን ይጠቀማሉ ፣ ይህም በተራው ወደ ድግግሞሽ እና የፕሮቶኮሉ አሉታዊ አሉታዊ ምላሽ ያስከትላል (bufferbloat). በተጨማሪም፣ TCP ግንኙነት ለመፍጠር ብዙ ጊዜ ያጠፋል፡ SYN/ACK እና TLS ጥያቄዎች ለየብቻ ይሄዳሉ፣ QUIC እንደሚያደርገው ከአንድ ይልቅ ሶስት ዙር ያስፈልጋሉ።

HTTP በ UDP - በጥሩ ሁኔታ ለመጠቀም የQUIC ፕሮቶኮሉን ይጠቀሙ

QUIC የTCP ምትክን እና የTLS 1.3 አተገባበርን ስላጣመረ ሁሉም ግንኙነቶች ሁል ጊዜ የተመሰጠሩ ናቸው፣ እና እንደዚህ አይነት ትራፊክ መፍታት በኤችቲቲፒኤስ ላይ ካለፈ ቀላል አይደለም። በተጨማሪም፣ የTCP ቁልል ሙሉ በሙሉ መተካት ስለሚያስፈልግ QUIC በመተግበሪያው ደረጃ ይተገበራል። ዘላለማዊነት.

በኤችቲቲፒ/2 ውስጥ ብዜት እንዲደረግ ድጋፍ ቢደረግለትም፣ እሽጎችን በቅደም ተከተል ማድረስ ስለሚያስፈልገው የጭንቅላት መስመርን የመዝጋት ችግር እዚያ ቆይቷል። QUIC በ UDP አናት ላይ ተተግብሯል, ስለዚህ በመርህ ደረጃ ምንም እገዳ የለውም, እና እሽጎች ለዘላለም እንዳይጠፉ ለመከላከል, የተቆጠሩ እና የ "ጎረቤቶች" ክፍሎችን ሊይዙ ይችላሉ, ይህም ተጨማሪ ጊዜ ይሰጣል. በተጨማሪም፣ QUIC በአንድ ግኑኝነት ውስጥ ለተለያዩ የጥያቄ ዓይነቶች ሞኖሊቲክ ወረፋውን ወደ ብዙ ክሮች ይከፍላል። ስለዚህ አንድ ፓኬት ከጠፋ ችግሮች ሊፈጠሩ የሚችሉት ለአንድ ወረፋ ብቻ ነው (ለምሳሌ አንድ የተወሰነ ፋይል ለማስተላለፍ)።

HTTP በ UDP - በጥሩ ሁኔታ ለመጠቀም የQUIC ፕሮቶኮሉን ይጠቀሙ

ተጠቀም

መጀመሪያ ላይ QUIC የተሰራው በGoogle ውስጥ ሲሆን በአብዛኛው በኩባንያው ውስጥ ጥቅም ላይ እንዲውል ተዘጋጅቷል። እ.ኤ.አ. በ 2013 ወደ IETF ደረጃውን የጠበቀ (አሁንም በመካሄድ ላይ ነው) እና አሁን ሁሉም ሰው የጎደለውን ነገር በማቅረብ በፕሮቶኮሉ ልማት ውስጥ መሳተፍ ይችላል ። የ IETF የስራ ቡድን አመታዊ ስብሰባዎችን ያዘጋጃል በዚህ ወቅት አዲስ ደረጃ የጸደቀበት እና አዳዲስ ፈጠራዎች ውይይት የሚደረግበት። ይህ የQUIC አተገባበር እንደ ዋናው ይቆጠራል እና በእሱ መሰረት የኤችቲቲፒ/3 መስፈርት የተረጋገጠ ነው።

እስካሁን ድረስ ኤችቲቲፒ/3ን እንደ ዋና ፕሮቶኮል ስለማካተት ምንም አይነት ንግግር የለም ምክንያቱም ገና ስላላለቀ እና ስለማይደገፍ፡

HTTP በ UDP - በጥሩ ሁኔታ ለመጠቀም የQUIC ፕሮቶኮሉን ይጠቀሙ

ነገር ግን QUIC በመተግበሪያው እና በአገልጋዩ መካከል እንደ ማጓጓዣ ሊተገበር ይችላል፣ ይህም በተሳካ ሁኔታ በኡበር ተከናውኗል፡

በQUIC መግቢያ ላይ የኡበር አስተያየት

QUICን በተሳካ ሁኔታ ለመክተት እና የመተግበሪያ አፈጻጸምን በደካማ ግንኙነት ለማሻሻል፣ የድሮውን ቁልል (HTTP/2 ከTLS/TCP) በQUIC ፕሮቶኮል እንተካለን። የኔትወርክ ቤተ መፃህፍትን ተጠቀምን። ክሮኔትChromium ፕሮጀክቶች, ዋናውን የያዘ, የፕሮቶኮሉ Google ስሪት - gQUIC. የቅርብ ጊዜውን የ IETF ዝርዝር ለመከተል ይህ ትግበራ እንዲሁ በየጊዜው እየተሻሻለ ነው።

የQUIC ድጋፍን ለመጨመር መጀመሪያ ክሮኔትን ወደ አንድሮይድ መተግበሪያዎቻችን አዋህደናል። ውህደቱ የተካሄደው የስደት ወጪን ለመቀነስ በሚያስችል መንገድ ነው። ቤተ መፃህፍቱን የተጠቀመውን የድሮውን የኔትወርክ ቁልል ሙሉ በሙሉ ከመተካት ይልቅ እሺ ኤችቲቲፒክሮኔትን በOkHttp API ማዕቀፍ ስር አዋህደናል። በዚህ መንገድ በመዋሃድ በኔትወርክ ጥሪዎቻችን ላይ የተደረጉ ለውጦችን አስቀርተናል (የሚጠቀሙት። ሪትርት) በኤፒአይ ደረጃ።

ልክ እንደ አንድሮይድ አቀራረብ፣ የኤችቲቲፒ ትራፊክን ከአውታረ መረብ በመጥለፍ ክሮኔትን በUber iOS መተግበሪያዎች ውስጥ ተግባራዊ አድርገናል። ኤ ፒ አይበመጠቀም NSURLPፕሮቶኮል. ይህ በiOS ፋውንዴሽን የቀረበው ረቂቅ ፕሮቶኮል-ተኮር የዩአርኤል ዳታዎችን የሚያስተናግድ ሲሆን ክሮኔትን ከአይኦኤስ አፕሊኬሽኖቻችን ጋር ያለ ምንም የፍልሰት ወጪ ማዋሃድ መቻልን ያረጋግጣል።

ከ የተወሰደ ይህ ትርጉም Uber ጽሑፎች

ከኋላ በኩል የQUIC ግንኙነቶችን በGoogle Cloud lb ያዙ፣ ይህም ፕሮቶኮልን ይደግፋል ከ2018 አጋማሽ ጀምሮ።

ጎግል ክላውድ በጎግል ባዘጋጀው ፕሮቶኮል ጥሩ መስራቱ ምንም አያስደንቅም ፣ ግን አማራጮቹ ምንድናቸው?

እም

ብዙም ሳይቆይ 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

የቀረው የኤችቲቲፒ/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';
    }
}

በመደበኛ አሳሾች በኤችቲቲፒ/3 በኩል መገናኘት እስካሁን አይቻልም፣ ግን መጠቀም ይችላሉ። የ Chrome Canary እና ባንዲራውን ያካሂዱት --enable-quic, ወደ አገልጋይዎ ይሂዱ ወይም ለምሳሌ, quic.rocks ጣቢያው ይሂዱ እና በገንቢ መሳሪያዎች ውስጥ ያለውን የግንኙነት አይነት ይመልከቱ:
HTTP በ UDP - በጥሩ ሁኔታ ለመጠቀም የQUIC ፕሮቶኮሉን ይጠቀሙ
በኤችቲቲፒ/3 ፈንታ ተጽፏል http2+quic/99, ግን በመሠረቱ አንድ አይነት ነገር ነው.

ሌሎች ቴክኖሎጂዎች

  • QUIC እንዲሁ ይደግፋል LiteSpeed (ከፌስቡክ ጋር በኤችቲቲፒ/3 ከታላቅ አድናቂ ጋር የተገናኘ) እና ተራማጅ Caddy. Apache እስካሁን ማድረግ አልቻለም፣ ግን ስራ በመካሄድ ላይ ነው። ሙሉ ማወዛወዝ.
  • ጥር 21 ዘምኗል ረቂቅ መደበኛ ለ WebRTC
  • ልክ በሌላ ቀን ማይክሮሶፍት ተከፈተ msquic ትግበራ ኮድ, በዚህ ውስጥ ከ IETF ደረጃ ሁሉም ተግባራት ገና አልተገኙም, ግን ይህ ቀድሞውኑ ትልቅ ግኝት ነው.

መደምደሚያ

HTTP በ UDP - በጥሩ ሁኔታ ለመጠቀም የQUIC ፕሮቶኮሉን ይጠቀሙ

የQUIC ፍላጎት ያልተረጋጋ ነው፣ ነገር ግን እያደገ ነው፣ እና እሱን ደረጃውን የጠበቀ ለማድረግ እየተሰራ ነው። የፕሮቶኮሉ አዲስ ትግበራዎች በየወሩ ማለት ይቻላል ይታያሉ፣ እና በየአመቱ ቁጥራቸው እየጨመረ የመጣ ገንቢዎች QUIC የወደፊት መሆኑን እርግጠኞች ናቸው። ፕሮቶኮሉን በTCP ቁልል የወደፊት ስሪቶች ውስጥ እንኳን ማካተት ይቻላል፣ ይህ ማለት ፈጥኖም ይሁን ዘግይቶ መላው በይነመረብ ወደ የተረጋጋ እና ፈጣን ግንኙነቶች ይሄዳል ማለት ነው።

ቀድሞውኑ የQUIC መስተጋብርን ለመሰረተ ልማትዎ ማዋቀር ወይም ለአሳሾች እንኳን መስጠት ይችላሉ - ሁሉም ለፕሮቶኮሉ ድጋፍ ለመጨመር እያቀዱ ነው ፣ እና ከካኒየስ ጋር ያለው አሳዛኝ ስታቲስቲክስ የበለጠ አስደሳች ይሆናል።

HTTP በ UDP - በጥሩ ሁኔታ ለመጠቀም የQUIC ፕሮቶኮሉን ይጠቀሙ

ምንጭ: hab.com

አስተያየት ያክሉ