Cloudflare یک ماژول برای پشتیبانی از HTTP/3 در NGINX پیاده سازی کرده است

شرکت Cloudflare تهیه شده ماژول برای ارائه پشتیبانی از پروتکل HTTP/3 در NGINX. این ماژول به عنوان یک افزونه برای کتابخانه توسعه یافته توسط Cloudflare طراحی شده است quiche با پیاده سازی پروتکل حمل و نقل QUIC و HTTP/3. کد quiche در Rust نوشته شده است، اما خود ماژول NGINX به زبان C نوشته شده است و با استفاده از پیوند پویا به کتابخانه دسترسی پیدا می کند. تحولات باز کن تحت مجوز BSD

برای مونتاژ، فقط دانلود کنید وصله به nginx 1.16 و رمز کتابخانه های quiche، سپس nginx را با گزینه های "—with-http_v3_module —with-quiche=../quiche" بازسازی کنید. هنگام ساخت، پشتیبانی TLS باید بر اساس کتابخانه BoringSSL باشد ("--with-openssl=../quiche/deps/boringssl")، استفاده از OpenSSL هنوز پشتیبانی نمی شود. برای پذیرفتن اتصالات، باید دستور گوش دادن را با پرچم "quic" به تنظیمات اضافه کنید (به عنوان مثال، "Listen 443 quic reuseport").

در نرم‌افزار مشتری، پشتیبانی HTTP/3 قبلاً به ساخت‌های آزمایشی Chrome Canary و ابزار curl اضافه شده است. در سمت سرور، تا به حال استفاده از جداگانه، محدود ضروری بود پیاده سازی های آزمایشی. توانایی پردازش HTTP/3 در nginx به طور قابل توجهی استقرار سرورهای با پشتیبانی HTTP/3 را ساده می کند و اجرای آزمایشی پروتکل جدید را در دسترس تر می کند. ظهور پشتیبانی استاندارد برای HTTP/3 در nginx انتظار می رود در شعبه 1.17.x به مدت 6-12 ماه.

به یاد بیاورید که HTTP/3 استفاده از پروتکل QUIC را به عنوان یک انتقال برای HTTP/2 استاندارد می کند. پروتکل QUIC (اتصالات اینترنت سریع UDP) از سال 2013 توسط گوگل به عنوان جایگزینی برای ترکیب TCP+TLS برای وب توسعه داده شده است که مشکلات مربوط به راه اندازی و زمان مذاکره طولانی برای اتصالات در TCP را حل می کند و تاخیر زمانی که بسته ها در حین انتقال داده گم می شوند را حذف می کند. QUIC توسعه پروتکل UDP است که از مالتی پلکس شدن چندین اتصال پشتیبانی می کند و روش های رمزگذاری معادل TLS/SSL را ارائه می دهد.

اصلی ویژگی های QUIC:

  • امنیت بالا مشابه TLS (در اصل QUIC امکان استفاده از TLS را از طریق UDP فراهم می کند).
  • کنترل یکپارچگی جریان، جلوگیری از از دست دادن بسته.
  • توانایی برقراری فوری اتصال (0-RTT، تقریباً در 75٪ موارد داده ها را می توان بلافاصله پس از ارسال بسته راه اندازی اتصال منتقل کرد) و حداقل تاخیر بین ارسال درخواست و دریافت پاسخ (RTT، زمان رفت و برگشت) را فراهم می کند.
  • عدم استفاده از شماره توالی یکسان در هنگام ارسال مجدد بسته، که از ابهام در شناسایی بسته های دریافتی جلوگیری می کند و از وقفه های زمانی خلاص می شود.
  • از دست دادن یک بسته فقط بر تحویل جریان مرتبط با آن تأثیر می گذارد و تحویل داده ها را در جریان های موازی که از طریق اتصال فعلی منتقل می شود متوقف نمی کند.
  • ویژگی های تصحیح خطا که تاخیرهای ناشی از ارسال مجدد بسته های گم شده را به حداقل می رساند. استفاده از کدهای تصحیح خطای ویژه در سطح بسته برای کاهش موقعیت هایی که نیاز به ارسال مجدد داده های بسته از دست رفته دارند.
  • مرزهای بلوک رمزنگاری با مرزهای بسته QUIC تراز شده است، که تأثیر تلفات بسته در رمزگشایی محتویات بسته های بعدی را کاهش می دهد.
  • بدون مشکل با مسدود کردن صف TCP.
  • پشتیبانی از شناسه اتصال، که زمان لازم برای برقراری اتصال مجدد برای مشتریان تلفن همراه را کاهش می دهد.
  • امکان اتصال مکانیزم های پیشرفته کنترل تراکم اتصال.
  • از تکنیک‌های پیش‌بینی توان عملیاتی در هر جهت استفاده می‌کند تا اطمینان حاصل کند که بسته‌ها با نرخ بهینه ارسال می‌شوند و از شلوغ شدن آنها و از دست دادن بسته‌ها جلوگیری می‌کند.
  • محسوس رشد عملکرد و توان عملیاتی در مقایسه با TCP برای سرویس‌های ویدیویی مانند YouTube، QUIC نشان داده است که عملیات بافر مجدد را هنگام تماشای ویدیو تا 30 درصد کاهش می‌دهد.
  • منبع: opennet.ru

اضافه کردن نظر