Cloudflare ir ieviesis moduli HTTP/3 atbalstam NGINX

Uzņēmums Cloudflare sagatavots modulis lai nodrošinātu atbalstu HTTP/3 protokolam NGINX. Modulis ir izveidots kā Cloudflare izstrādātās bibliotēkas papildinājums quiche ar QUIC un HTTP/3 transporta protokola ieviešanu. Quiche kods ir rakstīts Rust, bet pats NGINX modulis ir rakstīts C un piekļūst bibliotēkai, izmantojot dinamisko saiti. Notikumi atvērts saskaņā ar BSD licenci.

Lai saliktu, vienkārši lejupielādējiet plāksteris uz nginx 1.16 un kods quiche bibliotēkas, pēc tam atjaunojiet nginx ar opcijām “—with-http_v3_module —with-quiche=../quiche”. Veidojot, TLS atbalstam jābūt balstītam uz BoringSSL bibliotēku (“--with-openssl=../quiche/deps/boringssl”), OpenSSL izmantošana vēl netiek atbalstīta. Lai pieņemtu savienojumus, iestatījumiem jāpievieno klausīšanās direktīva ar karogu “quic” (piemēram, “klausīt 443 quic reuseport”).

Klienta programmatūrā HTTP/3 atbalsts jau ir pievienots eksperimentālajām Chrome Canary versijām un curl utilītai. Servera pusē līdz šim bija jāizmanto atsevišķi, ierobežoti testa implementācijas. Iespēja apstrādāt HTTP/3 programmā nginx ievērojami vienkāršos serveru izvietošanu ar HTTP/3 atbalstu un padarīs pieejamāku jaunā protokola testa ieviešanu. Standarta HTTP/3 atbalsta parādīšanās nginx paredzams 1.17.x filiālē uz 6-12 mēnešiem.

Atcerieties, ka HTTP/3 standartizē QUIC protokola izmantošanu kā HTTP/2 transportu. Protokols QUIC (Quick UDP Internet Connections) Google ir izstrādājis kopš 2013. gada kā alternatīvu TCP+TLS kombinācijai tīmeklim, risinot problēmas ar ilgu iestatīšanas un sarunu laiku savienojumiem TCP un novēršot aizkavi, kad datu pārsūtīšanas laikā tiek zaudētas paketes. QUIC ir UDP protokola paplašinājums, kas atbalsta vairāku savienojumu multipleksēšanu un nodrošina TLS/SSL līdzvērtīgas šifrēšanas metodes.

Galvenais Features QUIC:

  • Augsta drošība, līdzīga TLS (patiesībā QUIC nodrošina iespēju izmantot TLS, izmantojot UDP);
  • Straumes integritātes kontrole, lai novērstu pakešu zudumu;
  • Iespēja uzreiz izveidot savienojumu (0-RTT, aptuveni 75% gadījumu datus var pārsūtīt uzreiz pēc savienojuma iestatīšanas paketes nosūtīšanas) un nodrošināt minimālu aizkavi starp pieprasījuma nosūtīšanu un atbildes saņemšanu (RTT, Round Trip Time) ;
  • Pārsūtot paketi, neizmantojiet vienu un to pašu kārtas numuru, kas ļauj izvairīties no neskaidrībām saņemto pakešu noteikšanā un atbrīvoties no taimauta;
  • Pakešu zudums ietekmē tikai ar to saistītās straumes piegādi un neaptur datu piegādi straumēs, kas tiek pārraidītas paralēli pašreizējā savienojumā;
  • Kļūdu labošanas rīki, kas samazina aizkavi zaudēto pakešu atkārtotas pārsūtīšanas dēļ. Īpašu kļūdu labošanas kodu izmantošana pakešu līmenī, lai samazinātu situācijas, kurās nepieciešams atkārtoti nosūtīt zaudētos pakešdatus.
  • Kriptogrāfisko bloku robežas tiek saskaņotas ar QUIC pakešu robežām, kas samazina pakešu zudumu ietekmi uz nākamo pakešu satura dekodēšanu;
  • Nav problēmu ar TCP rindas bloķēšanu;
  • Savienojuma ID atbalsts, lai samazinātu atkārtota savienojuma laiku mobilajiem klientiem;
  • Iespēja pieslēgt progresīvus mehānismus savienojuma pārslodzes kontrolei;
  • Izmantojot joslas platuma prognozēšanas paņēmienus katrā virzienā, lai nodrošinātu optimālu pakešu nosūtīšanas intensitāti, novēršot pārtīšanu pārslodzes stāvoklī, kurā notiek pakešu zudumi;
  • Uztverams izaugsmi veiktspēju un caurlaidspēju salīdzinājumā ar TCP. Ir pierādīts, ka video pakalpojumiem, piemēram, YouTube, QUIC samazina video atkārtotas buferizācijas darbības par 30%.
  • Avots: opennet.ru

Pievieno komentāru