HTTP مٿان UDP - QUIC پروٽوڪول جو سٺو استعمال ڪرڻ

HTTP مٿان UDP - QUIC پروٽوڪول جو سٺو استعمال ڪرڻ

QUIC (Quick UDP انٽرنيٽ ڪنيڪشن) UDP جي مٿان ھڪڙو پروٽوڪول آھي جيڪو TCP، TLS ۽ HTTP/2 جي سڀني خصوصيتن کي سپورٽ ڪري ٿو ۽ انھن جا گھڻا مسئلا حل ڪري ٿو. اهو اڪثر ڪري هڪ نئون يا "تجرباتي" پروٽوڪول سڏيو ويندو آهي، پر اهو ڊگهو آهي تجرباتي اسٽيج کان ٻاهر آهي: ترقي جاري آهي 7 سالن کان وڌيڪ. هن عرصي دوران، پروٽوڪول هڪ معياري ٿيڻ جو انتظام نه ڪيو، پر اڃا تائين وسيع ٿي ويو. مثال طور، QUIC استعمال ڪيو ويندو آهي گوگل ۽ فيس بڪ جهڙوڪ گيانٽس پاران ٽرئفڪ کي تيز ڪرڻ ۽ موبائيل نيٽ ورڪن ۾ دير کي گهٽائڻ لاءِ، ۽ IETF پنهنجي پروٽوڪول فورڪ کي HTTP/3 معيار جو بنياد قرار ڏنو (جيتوڻيڪ HTTP/2 استعمال ڪري ٿو. صرف 44.8٪ سائيٽون).

تصور

QUIC کي ترقي يافته TCP جي متبادل طور ٺاھيو ويو، جيڪو اصل ۾ گھٽ نقصان واري وائرڊ نيٽ ورڪن لاءِ ٺاھيو ويو ھو. TCP ترتيب سان پيڪيٽ فراهم ڪري ٿو، تنهنڪري جيڪڏهن هڪ پيڪٽ گم ٿي وڃي ته پوري قطار بند ٿي وڃي ٿي (هيڊ آف لائن بلاڪنگ)، جيڪو منفي طور تي ڪنيڪشن جي معيار ۽ استحڪام کي متاثر ڪري ٿو. وڏي نقصان کان بچڻ لاءِ، سيلولر نيٽ ورڪ استعمال ڪن ٿا وڏن بفرن کي، جنهن جي نتيجي ۾ پروٽوڪول جي بيڪار ۽ غلط منفي ردعمل جو سبب بڻجي ٿو.بفر بلوٽ). ان کان علاوه، TCP هڪ ڪنيڪشن قائم ڪرڻ ۾ گهڻو وقت خرچ ڪري ٿو: SYN/ACK ۽ TLS درخواستن تي الڳ الڳ عمل ڪيو وڃي ٿو، هڪ جي بدران ٽن گول سفرن جي ضرورت آهي، جيئن QUIC ڪندو آهي.

HTTP مٿان UDP - QUIC پروٽوڪول جو سٺو استعمال ڪرڻ

جيئن ته QUIC هڪ TCP متبادل ۽ TLS 1.3 تي عمل درآمد کي گڏ ڪري ٿو، سڀ ڪنيڪشن هميشه انڪريپٽ ٿيل هوندا آهن، ۽ اهڙي ٽرئفڪ کي ڊريپ ڪرڻ ان کان وڌيڪ آسان ناهي ته اهو HTTPS تي وڃي رهيو هجي. ان کان علاوه، QUIC ايپليڪيشن جي سطح تي لاڳو ڪيو ويو آهي، جيئن ته TCP اسٽيڪ جو مڪمل متبادل وٺندو ابديت.

HTTP/2 ۾ ملٽي پلڪسنگ جي حمايت جي باوجود، هيڊ آف لائن بلاڪنگ جو مسئلو اتي ئي رهيو ڇاڪاڻ ته ترتيب ۾ پيڪيٽ پهچائڻ جي ضرورت آهي. QUIC UDP جي چوٽي تي لاڳو ڪيو ويو آهي، تنهنڪري ان کي اصولي طور تي ڪو به بلاڪ ناهي، ۽ پيڪن کي هميشه لاءِ گم ٿيڻ کان روڪڻ لاءِ، انهن کي شمار ڪيو ويو آهي ۽ انهن ۾ ”پاڙيسري“ جا حصا شامل ٿي سگهن ٿا، جيڪي بيڪارگي فراهم ڪن ٿا. ان کان علاوه، QUIC هڪ واحد ڪنيڪشن جي اندر مختلف قسمن جي درخواستن لاءِ مونولٿڪ قطار کي ڪيترن ئي موضوعن ۾ ورهائي ٿو. اهڙيءَ طرح، جيڪڏهن هڪ پيڪٽ گم ٿي وڃي ته، مسئلا پيدا ٿي سگهن ٿا صرف هڪ قطار لاءِ (مثال طور، هڪ مخصوص فائل جي منتقلي لاءِ):

HTTP مٿان UDP - QUIC پروٽوڪول جو سٺو استعمال ڪرڻ

استعمال ڪريو

شروعات ۾، QUIC گوگل جي اندر ترقي ڪئي وئي ۽ گهڻو ڪري ڪمپني جي اندر استعمال لاء ٺهيل هئي. 2013 ۾، ان کي معياري ڪرڻ لاء IETF ڏانهن منتقل ڪيو ويو (جيڪو اڃا تائين جاري آهي)، ۽ هاڻي هرڪو پروٽوڪول جي ترقي ۾ حصو وٺي سگھي ٿو پروپوزل ڪندي جيڪي غائب آهن. IETF ڪم ڪندڙ گروپ سالياني گڏجاڻين کي منظم ڪري ٿو، جنھن دوران ھڪڙو نئون معيار منظور ڪيو ويو آھي ۽ جدت تي بحث ڪيو ويو آھي. QUIC جي هن عمل کي مکيه سمجهيو ويندو آهي ۽ اهو ان جي بنياد تي آهي ته HTTP/3 معيار تصديق ٿيل آهي.

هينئر تائين، HTTP/3 کي مکيه پروٽوڪول جي طور تي شامل ڪرڻ بابت ڪا به ڳالهه ناهي، ڇاڪاڻ ته اهو اڃا تائين ختم نه ٿيو آهي ۽ تقريبا سهڪار نه آهي:

HTTP مٿان UDP - QUIC پروٽوڪول جو سٺو استعمال ڪرڻ

پر QUIC ايپليڪيشن ۽ سرور جي وچ ۾ ٽرانسپورٽ جي طور تي لاڳو ٿي سگهي ٿو، جيڪو ڪاميابي سان ڪيو ويو اوبر تي:

QUIC جي تعارف تي اوبر جو تبصرو

QUIC ڪاميابيءَ سان شامل ڪرڻ ۽ خراب ڪنيڪشن واري ماحول ۾ ايپليڪيشن جي ڪارڪردگي کي بهتر ڪرڻ لاءِ، اسان پراڻي اسٽيڪ (HTTP/2 over TLS/TCP) کي QUIC پروٽوڪول سان تبديل ڪيو. اسان نيٽ ورڪ لائبريري استعمال ڪيو ڪرونيٽ کان Chromium پروجيڪٽس، جنهن ۾ شامل آهي اصل، گوگل ورزن جو پروٽوڪول - gQUIC. اهو عمل پڻ مسلسل بهتر ڪيو پيو وڃي IETF جي تازي وضاحتن جي پيروي ڪرڻ لاءِ.

اسان پهريون ڀيرو ڪرنٽ کي اسان جي Android ايپس ۾ شامل ڪيو QUIC لاءِ سپورٽ شامل ڪرڻ لاءِ. انضمام اهڙي طريقي سان ڪيو ويو جيئن ممڪن حد تائين لڏپلاڻ جي خرچن کي گهٽايو وڃي. پراڻي نيٽ ورڪنگ اسٽيڪ کي مڪمل طور تي تبديل ڪرڻ جي بدران جيڪا لائبريري استعمال ڪئي اوڪي ايڇ ٽي پي، اسان ڪرونيٽ کي OkHttp API فريم ورڪ جي تحت ضم ڪيو آهي. انضمام کي هن طريقي سان ڪندي، اسان اسان جي نيٽ ورڪ ڪالن ۾ تبديلين کان پاسو ڪيو (جيڪي استعمال ڪيا ويندا آهن ريٽروف) API سطح تي.

ساڳي طرح Android ڊوائيسز لاءِ، اسان ڪرونيٽ کي iOS تي Uber ايپس ۾ لاڳو ڪيو، نيٽ ورڪ کان HTTP ٽرئفڪ کي روڪيندي APIاستعمال ڪندي NSURL پروٽوڪول. هي خلاصو، iOS فائونڊيشن پاران مهيا ڪيل، پروٽوڪول مخصوص URL ڊيٽا کي سنڀاليندو آهي ۽ انهي ڳالهه کي يقيني بڻائي ٿو ته اسان Cronet کي اسان جي iOS ايپليڪيشنن ۾ ضم ڪري سگهون ٿا بغير اهم لڏپلاڻ جي خرچن جي.

کان ورتو ويو هي ترجمو Uber آرٽيڪل

پس منظر تي انهن پڪڙي ورتو QUIC ڪنيڪشن گوگل 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

اهو سڀ ڪجهه رهي ٿو 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 ڪيريئر ۽ ان کي پرچم سان هلائي --enable-quicتوھان جي سرور ڏانھن وڃو يا، مثال طور، quic.rocks سائيٽ ۽ ڊولپر ٽولز ۾ ڪنيڪشن جو قسم ڏسو:
HTTP مٿان UDP - QUIC پروٽوڪول جو سٺو استعمال ڪرڻ
HTTP/3 جي بدران اهو لکيل آهي http2+quic/99، پر اهو بنيادي طور تي ساڳيو آهي.

ٻيون ٽيڪنالاجيون

  • QUIC پڻ سپورٽ ڪري ٿو LiteSpeed (جيڪو Facebook سان HTTP/3 ذريعي وڏي شوق سان ڳنڍيل آهي) ۽ ترقي پسند ڪئهي. Apache اهو اڃا تائين نٿو ڪري سگهي، پر ڪم جاري آهي مڪمل جھولي.
  • جنوري 21 اپڊيٽ ڪيو ويو WebRTC لاءِ معيار جو مسودو
  • بس ٻئي ڏينهن Microsoft کوليو msquic لاڳو ڪرڻ جو ڪوڊ، جنهن ۾ IETF معيار جا سڀئي ڪم اڃا تائين موجود نه آهن، پر اهو اڳ ۾ ئي هڪ وڏي پيش رفت آهي.

ٿڪل

HTTP مٿان UDP - QUIC پروٽوڪول جو سٺو استعمال ڪرڻ

QUIC ۾ دلچسپي غير مستحڪم آهي، پر وڌندڙ، ۽ ڪم جاري آهي ان کي معياري ڪرڻ لاء. پروٽوڪول جا نوان لاڳو ٿيڻ لڳ ڀڳ هر مهيني ظاهر ٿيندا آهن، ۽ هر سال وڌيڪ ۽ وڌيڪ ڊولپرز کي يقين آهي ته QUIC مستقبل آهي. اهو پڻ ممڪن آهي ته پروٽوڪول کي TCP اسٽيڪ جي مستقبل جي نسخن ۾ شامل ڪيو وڃي، جنهن جو مطلب آهي ته جلد يا بعد ۾ سڄو انٽرنيٽ وڌيڪ مستحڪم ۽ تيز ڪنيڪشن ڏانهن منتقل ٿي ويندو.

اڳي ئي هاڻي توهان پنهنجي انفراسٽرڪچر لاءِ QUIC رابطي کي ترتيب ڏئي سگهو ٿا يا ان کي برائوزرن کي به ڏئي سگهو ٿا - اهي سڀ پروٽوڪول لاءِ سپورٽ شامل ڪرڻ جي منصوبابندي ڪري رهيا آهن، ۽ ڪينيئس سان افسوسناڪ انگ اکر وڌيڪ خوشگوار ٿي ويندا.

HTTP مٿان UDP - QUIC پروٽوڪول جو سٺو استعمال ڪرڻ

جو ذريعو: www.habr.com

تبصرو شامل ڪريو