HTTP پر UDP - QUIC پروٹوکول کا اچھا استعمال کرنا

HTTP پر UDP - QUIC پروٹوکول کا اچھا استعمال کرنا

QUIC (Quick UDP Internet Connections) 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 کو Google کے اندر تیار کیا گیا تھا اور بڑی حد تک کمپنی کے اندر استعمال کے لیے تیار کیا گیا تھا۔ 2013 میں، اسے معیاری بنانے کے لیے IETF کو منتقل کر دیا گیا تھا (جو ابھی تک جاری ہے)، اور اب ہر کوئی اس پروٹوکول کی ترقی میں حصہ لے سکتا ہے کہ وہ کیا غائب ہے۔ IETF ورکنگ گروپ سالانہ اجلاس منعقد کرتا ہے جس کے دوران ایک نئے معیار کی منظوری دی جاتی ہے اور اختراعات پر تبادلہ خیال کیا جاتا ہے۔ QUIC کے اس نفاذ کو اہم سمجھا جاتا ہے اور اس کی بنیاد پر HTTP/3 معیار کی تصدیق کی جاتی ہے۔

ابھی تک، HTTP/3 کو مرکزی پروٹوکول کے طور پر شامل کرنے کے بارے میں کوئی بات نہیں ہوئی ہے، کیونکہ یہ ابھی ختم نہیں ہوا ہے اور تقریباً تعاون یافتہ نہیں ہے:

HTTP پر UDP - QUIC پروٹوکول کا اچھا استعمال کرنا

لیکن QUIC کو ایپلیکیشن اور سرور کے درمیان نقل و حمل کے طور پر لاگو کیا جا سکتا ہے، جو Uber میں کامیابی کے ساتھ کیا گیا تھا:

QUIC کے تعارف پر Uber کا تبصرہ

QUIC کو کامیابی کے ساتھ ایمبیڈ کرنے اور کنیکٹیویٹی کے خراب ماحول میں ایپلیکیشن کی کارکردگی کو بہتر بنانے کے لیے، ہم نے پرانے اسٹیک (HTTP/2 over TLS/TCP) کو QUIC پروٹوکول سے بدل دیا۔ ہم نے نیٹ ورک لائبریری کا استعمال کیا۔ کرونٹ کی کرومیم پروجیکٹس، جس میں پروٹوکول کا اصل گوگل ورژن ہے - gQUIC۔ تازہ ترین IETF تفصیلات کی پیروی کرنے کے لیے اس نفاذ کو بھی مسلسل بہتر بنایا جا رہا ہے۔

QUIC کے لیے تعاون شامل کرنے کے لیے ہم نے پہلے Cronet کو اپنی Android ایپس میں ضم کیا۔ انضمام اس طرح کیا گیا تھا کہ جہاں تک ممکن ہو ہجرت کے اخراجات کو کم کیا جا سکے۔ لائبریری کا استعمال کرنے والے پرانے نیٹ ورکنگ اسٹیک کو مکمل طور پر تبدیل کرنے کے بجائے اوکے ایچ ٹی پی، ہم نے کرونیٹ کو OkHttp API فریم ورک کے تحت مربوط کیا ہے۔ اس طرح انضمام کرنے سے، ہم نے اپنی نیٹ ورک کالز میں تبدیلیوں سے گریز کیا (جو ریٹروفیٹ) API کی سطح پر۔

اینڈرائیڈ ڈیوائسز کے لیے اپروچ کی طرح، ہم نے آئی او ایس پر اوبر ایپس میں کرونیٹ کو نافذ کیا، نیٹ ورک سے HTTP ٹریفک کو روکتے ہوئے APIاستعمال کرتے ہوئے NSURLپروٹوکول. iOS فاؤنڈیشن کی طرف سے فراہم کردہ یہ خلاصہ، پروٹوکول کے مخصوص URL ڈیٹا کو ہینڈل کرتا ہے اور اس بات کو یقینی بناتا ہے کہ ہم منتقلی کے اہم اخراجات کے بغیر اپنی iOS ایپلیکیشنز میں Cronet کو ضم کر سکتے ہیں۔

سے لیا یہ ترجمہ Uber مضامین

پسدید پر انہوں نے Google Cloud lb کے ذریعے QUIC کنکشن پکڑے، جو پروٹوکول کی حمایت کرتا ہے۔ 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 کے ذریعے جڑنا ابھی ممکن نہیں ہے، لیکن آپ استعمال کر سکتے ہیں۔ کروم کینری اور اسے جھنڈے کے ساتھ چلائیں۔ --enable-quic، اپنے سرور پر جائیں یا، مثال کے طور پر، quic.rocks سائٹ پر جائیں اور ڈویلپر ٹولز میں کنکشن کی قسم دیکھیں:
HTTP پر UDP - QUIC پروٹوکول کا اچھا استعمال کرنا
HTTP/3 کے بجائے یہ لکھا ہے۔ http2+quic/99، لیکن یہ بنیادی طور پر ایک ہی چیز ہے۔

دیگر ٹیکنالوجیز

  • QUIC بھی سپورٹ کرتا ہے۔ لٹ اسپیڈ (جو بڑے دھوم دھام سے HTTP/3 کے ذریعے Facebook سے منسلک ہے) اور ترقی پسند چایدان. اپاچی ابھی تک یہ نہیں کر سکتا، لیکن کام جاری ہے۔ پوری مستی.
  • 21 جنوری کو اپ ڈیٹ ہوا۔ WebRTC کے لیے معیاری مسودہ
  • دوسرے دن مائیکروسافٹ کھلا۔ msquic نفاذ کوڈ، جس میں IETF معیار کے تمام فنکشنز ابھی تک دستیاب نہیں ہیں، لیکن یہ پہلے سے ہی ایک بڑی پیش رفت ہے۔

حاصل يہ ہوا

HTTP پر UDP - QUIC پروٹوکول کا اچھا استعمال کرنا

QUIC میں دلچسپی غیر مستحکم ہے، لیکن بڑھ رہی ہے، اور اسے معیاری بنانے کے لیے کام جاری ہے۔ پروٹوکول کے نئے نفاذ تقریباً ہر ماہ ظاہر ہوتے ہیں، اور ہر سال زیادہ سے زیادہ ڈویلپرز کو یقین ہوتا ہے کہ QUIC مستقبل ہے۔ یہاں تک کہ پروٹوکول کو TCP اسٹیک کے مستقبل کے ورژن میں شامل کرنا بھی ممکن ہے، جس کا مطلب ہے کہ جلد یا بدیر پورا انٹرنیٹ زیادہ مستحکم اور تیز تر کنکشنز پر چلا جائے گا۔

پہلے سے ہی اب آپ اپنے بنیادی ڈھانچے کے لیے QUIC تعامل کو ترتیب دے سکتے ہیں یا اسے براؤزرز کو بھی دے سکتے ہیں - وہ سب پروٹوکول کے لیے تعاون شامل کرنے کی منصوبہ بندی کر رہے ہیں، اور کینیئس کے ساتھ افسوسناک اعدادوشمار زیادہ خوش ہو جائیں گے۔

HTTP پر UDP - QUIC پروٹوکول کا اچھا استعمال کرنا

ماخذ: www.habr.com

نیا تبصرہ شامل کریں