تقدم Cloudflare وحدة لدعم HTTP / 3 في NGINX

كلودفلاري

أعدت Cloudflare وحدة لتقديم الدعم لبروتوكول HTTP / 3 في NGINX. تم الانتهاء من الوحدة في شكل خاطف على مكتبة كيشي تم تطويره في Cloudflare مع تنفيذ بروتوكول النقل QUIC و HTTP / 3. كود كيشي مكتوب في Rust، لكن وحدة NGINX مكتوبة بلغة C وتصل إلى المكتبة من خلال الروابط الديناميكية. ساعات العمل مفتوحة بموجب ترخيص BSD.

من برنامج العميل ، تمت إضافة دعم HTTP / 3 بالفعل إلى إصدارات Chrome Canary التجريبية وفائدة الضفيرة. على جانب الخادم ، يلزم حتى الآن استخدام تطبيقات الاختبار المعزولة ذات القدرات المحدودة. القدرة على التعامل مع HTTP / 3 في nginx سوف يبسط بشكل كبير نشر الخوادم بدعم HTTP / 3 وسيجعل تطبيق اختبار البروتوكول الجديد أكثر سهولة.

يقيس HTTP / 3 استخدام بروتوكول QUIC كوسيلة نقل لـ HTTP / 2. تم تطوير بروتوكول QUIC بواسطة Google كبديل لـ TCP + TLS للويب ، وبالتالي تعتزم حل المشاكل مع وقت طويل من التركيب والتنسيق في TCP ويؤخر التخلص من فقدان الحزم أثناء نقل البيانات. QUIC هو مكون إضافي لبروتوكول UDP يدعم تعدد إرسال اتصالات متعددة ويوفر طرق تشفير مكافئة لـ TLS / SSL.

من بين الخصائص الرئيسية التي تتميز بها QUIC:

  • أمان عالي ، على غرار TLS (في الواقع ، يوفر QUIC القدرة على استخدام TLS عبر UDP).
  • التحكم في سلامة التدفق الذي يمنع فقدان الحزمة.
  • القدرة على إنشاء اتصال على الفور (0-RTT ، في حوالي 75٪ من الحالات ، يمكن نقل البيانات فورًا بعد إرسال حزمة إعداد الاتصال) وضمان الحد الأدنى من التأخير بين إرسال طلب وتلقي استجابة (RTT ، ذهاب وإياب وقت) .
  • عدم استخدام نفس رقم التسلسل عند إعادة إرسال حزمة ، مما يجنب الغموض في تحديد الحزم المستلمة ويلغي المهلات.
  • يؤثر فقدان الحزمة على تسليم التدفق المرتبط بها فقط ولا يوقف تسليم البيانات في التدفقات المرسلة بالتوازي عبر الاتصال الحالي.
  • أدوات تصحيح الأخطاء التي تقلل التأخير بسبب إعادة إرسال الحزم المفقودة. استخدام أكواد خاصة لتصحيح الأخطاء على مستوى الرزم لتقليل المواقف التي تتطلب إعادة إرسال بيانات الحزمة المفقودة.
  • تتم محاذاة حدود كتلة التشفير مع حدود حزمة QUIC ، مما يقلل من تأثير فقدان الحزمة على فك تشفير محتوى الحزم اللاحقة
  • لا توجد مشاكل مع حظر قائمة انتظار TCP
  • دعم معرف الاتصال ، مما يقلل من الوقت اللازم لإنشاء إعادة الاتصال لعملاء الأجهزة المحمولة
  • القدرة على توصيل الآليات المتقدمة للتحكم في الحمل الزائد للاتصال
  • استخدام تقنية التنبؤ بعرض النطاق الترددي في كل اتجاه لضمان الكثافة المثلى لإعادة توجيه الحزمة ، ومنعها من الوصول إلى حالة الازدحام التي يُلاحظ فيها فقدان الحزمة
  • أداء ملحوظ ومكاسب في الأداء عبر بروتوكول التحكم في الإرسال. بالنسبة لخدمات الفيديو مثل YouTube ، أظهر QUIC انخفاضًا بنسبة 30٪ في عمليات إعادة التخزين المؤقت عند مشاهدة مقاطع الفيديو.

كيفية تنفيذ الوحدة النمطية لدعم HTTP / 3 في NGINX؟

بالنسبة لأولئك الذين يرغبون في التمكن من تنفيذ هذه الوحدة على خادمهم ، يمكنهم القيام بذلك باتباع الإرشادات التي نشاركها أدناه.

لتجميعها ، عليهم فقط تنزيل التصحيح لـ nginx 1.16 ورمز مكتبة كيشي.

curl -O https://nginx.org/download/nginx-1.16.1.tar.gz

tar xzvf 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

ونقوم بتجميع NGINX مع تمكين دعم HTTP / 3:

 ./configure                                 \

--prefix=$PWD                           \

--with-http_ssl_module                  \

--with-http_v2_module                   \

--with-http_v3_module                   \

--with-openssl=../quiche/deps/boringssl \

--with-quiche=../quiche

make

أثناء التجميع ، يجب أن يعتمد دعم TLS على مكتبة BoringSSL ("–with-openssl = .. / quiche / deps / boringssl") ، استخدام OpenSSL غير مدعوم حتى الآن.

لقبول الاتصالات في التكوين ، سيحتاجون إلى إضافة توجيه المستمع بعلامة "quic".


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.