سٹریمِنگ کی کارکردگی صرف ویڈیو-پلیئر کا مسئلہ نہیں ہے۔ سافٹ ویئر آرٹیفیکٹس، ماڈل ویٹس، بیک اپس، آڈیو لائبریریز، اور بڑی API ایکسپورٹس سب ایک ہی بنیادوں پر منحصر ہیں: بائٹس کو تیزی سے منتقل کریں، عین مواد کو محفوظ رکھیں، بیک پریشر کا احترام کریں، اور جب کلائنٹ منقطع ہو جائے تو صاف طریقے سے رکیں۔
Webship ان تقاضوں کو ایک نقل و حمل کے مسئلے کے طور پر سمجھتا ہےHTTP/1.1،HTTP/2،HTTP/3، براہِ راست فائل کی ترسیل، ریورس پراکسی، اور WebTransportفاسٹ پاتھ تب ہی مفید ہے جب یہ فریمنگ، منسوخی، ٹریلرز، سیکیورٹی انسپیکشن، اور محدود میموری کو برقرار رکھے۔
ماپ شدہ 100 ایم بی اسٹریمنگ کی گنجائش
یہWebship 1.3.1 ڈیبین کی صلاحیت کا تجربہ مقررہ 100 MB فکسچر کے ساتھ میڈین پے لوڈ تھرو پٹ کے ذریعے ماپا گیا۔ ہر قبول شدہ نمونے کے لیے بالکل 99,943,778 بائٹس کے ردعمل کے ساتھ ساتھ کلائنٹ، پروٹوکول، پروکسی، بڑے صفحے کی خرابی، اور دیگر صفر کی ضرورت تھی۔HTTP/3 پیکٹ نقصان کی غلطیاں۔
| Webship موڈ | HTTP/1.1 ٹی ایل ایس | HTTP/2 ٹی ایل ایس | HTTP/3 ٹی ایل ایس | | --- | ---: | ---: | ---: | | براہ راست فائل کی تقسیم | 4,194.8 میبی/سیکنڈ | 3,574.3 میبی/سیکنڈ | 2,096.9 میبی/سیکنڈ | | ٹی ایل ایس ٹرمینیشن کے ساتھ ریورس پراکسی | 3,585.7 میبی بائٹ/سیکنڈ | 3,355.0 میبی بائٹ/سیکنڈ | 1,938.6 میبی بائٹ/سیکنڈ | | ٹی ایل ایس پاس تھرو کے ساتھ ریورس پراکسی | 2,783.2 می بی/س | 2,135.0 می بی/س | 1,748.5 می بی/س |
ریکارڈ شدہ موازنہ میں،Webship ہر ناپے گئے پروٹوکول کے لیے سب سے زیادہ براہ راست اور TLS ختم شدہ میڈین پیدا کیا۔ مکمل میٹرکس میں شامل ہیںNginx, Lighttpd, کیڈی، HAProxy، اینوائے، پنگورا، اور بن [بےنچ مارک صفحہ](/benchmarks) پر۔
یہ اعداد و شمار بینچ مارک ہوسٹ پر صلاحیت کو ماپتے ہیں۔ یہ کسی بھی بے ترتیب انٹرنیٹ راستے کے لیے وعدہ نہیں ہیں۔ اسٹوریج کے لیٹنسی، نیٹ ورک بینڈوڈتھ، راؤنڈ ٹرپ وقت، پیکٹ نقصان، TLS پالیسی، ہم وقتی قد میں نفوذ، اور اصل رویہ اب بھی حقیقی ترسیل کی رفتار کا تعین کرتے ہیں۔
ایک بائنری، تین ٹرانسپورٹ کی حکمت عملیاں
ایک بڑی جوابی کارروائی ایک چھوٹی HTML دستاویز کی طرح اسی پالیسی سے فائدہ نہیں اٹھاتی۔Webship عام درخواست کے راستے کو معتدل رکھتا ہے اور صرف ایک ثابت شدہ بڑے جوابی عمل کو فروغ دیتا ہے۔
HTTP/1.1: فائل کے ارد گرد کم منتقلیاں
لینکس پر،Webship جوابی ہیڈ اور فائل پی لوڈ کو ایک بہترین کوشش TCP کورک انٹرویل میں رکھتا ہے۔ ایک بار جب بڑی TLS جوابی فائل بلک کے راستے کے لیے اہل ہو جائے، تو براہ راست فائل ڈلیوری منتقل ہو سکتی ہےRustریکارڈز کو آڈٹ شدہ ایک طرفہ کرنل TLS میں منتقل کریں اور پیلوڈ کو ایپلیکیشن بفر کے ذریعے کاپی کیے بغیر sendfile استعمال کریں۔
کنکشن اب بھی یوزر اسپیس TLS میں شروع ہوتا ہے۔ چھوٹے جوابات وہاں رہتے ہیں۔Webship صرف تب kTLS منتقلی کی درخواست کرتا ہے جب کم از کم 1 MiB کے ردعمل کے مواد سے یہ ثابت ہو کہ کنکشن بڑی مقدار کا ڈیٹا لے جا رہا ہے۔
HTTP/2: بغیر فلو کنٹرول توڑے بیچنگ
HTTP/2 ملٹی پلیکسنگ غیر کنٹرول شدہ بفرنگ کو مہنگا بنا دیتا ہے۔Webship بیچز لکھتا ہے جبکہ اسٹریم اور کنکشن فلو کنٹرول کی حدود کو برقرار رکھتا ہے۔ اعلیٰ ہم وقت سازی والے اسٹریمنگ کے لیے، ایک 128 KiB TLS لکھنے والا بفر دو 64 KiB DATA فریمز رکھ سکتا ہے، جبکہ کنکشن بھیجنے کے بجٹ کو واضح اور محدود رکھا جاتا ہے۔
ایک پہلے سے تیار اپ اسٹریم باڈی فریم کو ہائپر فریمِنگ، ٹریلرز، منسوخی، معائنہ، یا بیک پریشر کو بائی پاس کیے بغیر پیشگی حاصل کیا جا سکتا ہے۔ یہ قابل اجتناب شیڈولر کا ایک چکر کم کر دیتا ہے جبکہ پروٹوکول معاہدے کو برقرار رکھتا ہے۔
HTTP/3: kTLS کی بجائے QUIC پیسنگ
HTTP/3 کبھی بھی TCP kTLS راستہ استعمال نہیں کرتا۔Webship ٹرانسپورٹ-آگاہ QUIC پیسنگ، محدود ڈاٹاگرام پیکیٹائزیشن، DPLPMTUD، اور فی ریئیکٹر ٹائمر کے ذریعے مائیکرو بیچنگ کا اطلاق کرتا ہے۔ بڑا HTTP/3 جوابات اور قبول شدہWebTransport سیشنز عام ٹریفک میں استعمال ہونے والی CUBIC پالیسی کو تبدیل کیے بغیر BBR کو منتخب کر سکتے ہیں۔
مرکز شدہHTTP/3 استحکام کی قابلیت کے لیے سات قبول شدہ نمونوں کا استعمال کیا گیا۔ TLS-terminated اسٹریمینگ نے 1,938.6 MiB/s اوسط فراہم کی جس کے ساتھ 2.12% تغیر کا تناسب تھا۔ TLS pass-through نے 1,748.5 MiB/s فراہم کی جس کے ساتھ 1.65% تغیر کا تناسب تھا۔ دونوں سلسلوں میں کوئی جسمانی سالمیت، کلائنٹ، پروٹوکول، اور پیکٹ ضائع ہونے کی غلطیاں نہیں تھیں۔
براہ راست ترسیل یا ریورس پراکسی؟
براہ راست ترسیل استعمال کریں جبWebship مخصوص فائل درخت کا مالک ہے۔ یہ اوریجن ہوپ کو حذف کرتا ہے اور سب سے مؤثر سٹیٹک-فائل راستہ فعال کرتا ہے۔
ایک کم سے کم کثیر پروٹوکول سائٹ اس طرح نظر آتی ہے:
listen = "0.0.0.0:443"
workers = 8
root = "/srv/media"
[[sites]]
domain = "media.example.com"
root = "/srv/media"
[sites.protocols]
h1 = true
h2 = true
h3 = true
[sites.tls]
cert = "/etc/webship/media-cert.pem"
key = "/etc/webship/media-key.pem"ریورس پراکسی TLS اختتام استعمال کریں جبWebship راستہ کے ذریعے لازمی طور پر بھیجیں، WAF یا API شیلڈ چیکس لگائیں، باڈی کی حدیں نافذ کریں، فارورڈنگ ہیڈرز شامل کریں، یا HTTP فیلڈز کا مشاہدہ کریں:
[reverse_proxy]
enabled = true
tls_termination = true
[reverse_proxy.protocols]
h1 = true
h2 = true
h3 = true
[reverse_proxy.tls]
cert = "/etc/webship/proxy-cert.pem"
key = "/etc/webship/proxy-key.pem"
[[reverse_proxy.routes]]
domain = "media.example.com"
path_prefix = "/"
upstreams = ["10.0.0.20:8080"]سیٹtls_termination = false جب ماخذ کو ایپلیکیشن کا سادہ متن اور فعال سیشن کیز برقرار رکھنی ہوں۔ پاس-تھرو انکرپٹڈ HTTP فیلڈز کو معائنہ نہیں کر سکتا۔ لہذا TCP پاس-تھرو کلائنٹ ہیلو SNI کے ذریعے راستہ دیتا ہے، جبکہHTTP/3 پاس تھرو کے لیے ایک مشترکہ یو ڈی پی ماخذ کی ضرورت ہوتی ہے۔
ٹیون بلک اسٹریمنگ واضح طور پر
اعلی ہمواریت کے لیےHTTP/2 ٹی ایل ایس اسٹریمنگ، Webship یہ عمل سے متعلقہ ترتیبات دستاویزی کرتا ہے:
[runtime.settings]
h2_tls_write_buffer_bytes = "131072"
proxy_h2_tls_max_send_buffer_bytes = "131072"
proxy_h2_tls_connection_send_buffer_bytes = "33554432"اوپر دیا گیا کنکشن بجٹ 256 فعال اسٹریمز کے لیے 128 کیلوبائٹ کریڈٹ فراہم کرتا ہے۔ اسے ایک عمومی ڈیفالٹ کے طور پر نہ سمجھیں، بلکہ ایک صلاحیت کے فیصلے کے طور پر لیں۔ اسے بڑھانے سے پہلے اپنی متوقع ہم وقتی فعالیت کے ساتھ میموری، لیٹینسی، اور تھروپٹ کی پیمائش کریں۔
لینکس پر، کرنل TLS اور BBR ماڈیولز لوڈ کریں اور اجازت دیں کہ Webship BBR منتخب کرنے کے لیے سروس اکاؤنٹ۔Webship جب اس کی مطلوبہ کرنل صلاحیت دستیاب نہ ہو تو یہ بائنڈنگ سے پہلے ناکام ہو جاتا ہے، لہذا ایک تعیناتی اس کے بغیر چلتے ہوئے خاموشی سے بہتر راستہ نہیں اپنا سکتی۔ دوسرے آپریٹنگ سسٹمز پورٹیبل کو برقرار رکھتے ہیں۔Rustان کے پلیٹ فارم کے لیے راستے اور بھیڑ کنٹرول دستاویز کیے گئے۔
WebTransport یہ ایک مختلف سلسلہ وار شکل ہے
WebTransport ایک محفوظ سیشن کے دوران قابل اعتماد اسٹریمز اور غیر قابل اعتماد ڈیٹاگرامز کو یکجا کرتا ہے۔ یہ TCP kTLS استعمال نہیں کرتا۔Webshipکا محدود تشخیصی اینڈپوائنٹ اوریجنز کی تصدیق کرتا ہے اور سیشن، اسٹریم، کیپسول، ڈیٹاگرام، بائیٹ، اور غیر فعال وقت کی حدود نافذ کرتا ہے۔
1.3.1 صلاحیت کے رن میں، براہ راستWebTransport قابل اعتماد اسٹریمز کے لیے رفتار 1,018.1 MiB/s تک پہنچ گئی اور ڈیٹا گرامز کے لیے 1,038.9 MiB/s تک۔ TLS پاس تھرو بالترتیب 548.6 MiB/s اور 629.7 MiB/s تک پہنچ گیا۔ دونوں موڈز نے تمام پانچ نمونوں کو صفر مسترد شدہ نمونوں، صفر گم شدہ ڈیٹا گرامز، اور صفر کلائنٹ میجر فالٹس کے ساتھ پاس کیا۔
ترجیح دیناHTTP/3 کے لیے نیاWebTransport گاہک۔ HTTP/2 پرانے ختم شدہ مسودہ کی ترتیبات کے ساتھ مطابقت کے لیے راستہ موجود ہے۔
پیداوار کے ٹریفک سے پہلے کیا تصدیق کرنی چاہیے
- صرف ایک چھوٹا مصنوعی جواب نہیں، بلکہ وہی درست میڈیا یا فن پارے کے سائز آزمائیں جو آپ فراہم کریں گے۔
- کلائنٹ پر جواب کی لمبائی اور مواد کے خلاصے کی تصدیق کریں۔
- ورزش کی منسوخی، رینج کی درخواستیں، سست پڑھنے والے، اور آغاز آدھا بند رویہ۔
- استحکام کے ساتھ تھروپٹ کو CPU، میموری، ساکٹ کی غلطیوں، ریٹرانسمٹس، اور ٹیل لینٹسی کے ساتھ ناپیں۔
- براہ راست، TLS کے ذریعے ختم ہونے والے، اور پاس تھرو موڈز کو الگ الگ تصدیق کریں؛ ان کی حفاظتی اور راستہ سازی کی حدود مختلف ہیں۔
- عام پروڈکشن ٹریفک کے لیے انسٹرومنٹیشن بند رکھیں، پھر تحقیق کرتے وقت محدود تجزیاتی معلومات جان بوجھ کر فعال کریں۔
- کرنل، کنٹینر، یا systemd سینڈباکس میں تبدیلی کے بعد لینکس kTLS اور BBR پری فلائٹ دوبارہ چیک کریں۔
جب پورا راستہ تعاون کرتا ہے تو اسٹریمنگ تیز ہوتی ہے۔Webshipاس کا ڈیزائن بڑی مقدار کے ڈیٹا کی اصلاحات کو پروٹوکول مخصوص رکھتا ہے جبکہ ایک آپریشنل ماڈل اور ایک درستگی کا معیار برقرار رکھتا ہے۔
مکمل پڑھیں [Webship 1.3.1 دستاویزات](/docs/1.3.1)، [بینچ مارک طریقہ کار اور مقابلے کے میٹرکس](/benchmarks) کا جائزہ لیں، یا [ڈاؤن لوڈز](/downloads) سے دستخط شدہ بلڈ ڈاؤن لوڈ کریں۔