Το Cloudflare προσφέρει μια ενότητα για την υποστήριξη HTTP / 3 στο NGINX

Cloudflare

Το Cloudflare έχει προετοιμάσει μια ενότητα για να παρέχει υποστήριξη για το πρωτόκολλο HTTP / 3 στο NGINX. Η ενότητα ολοκληρώθηκε με τη μορφή ενός snap στη βιβλιοθήκη quiche αναπτύχθηκε στο Cloudflare με την εφαρμογή του πρωτοκόλλου μεταφοράς QUIC και HTTP / 3. Ο κωδικός quiche γράφεται στο Rust, αλλά η ενότητα για το NGINX είναι γραμμένη σε C και έχει πρόσβαση στη βιβλιοθήκη μέσω δυναμικών συνδέσμων. Οι ώρες λειτουργίας είναι ανοιχτές με την άδεια BSD.

Από το λογισμικό πελάτη, Η υποστήριξη HTTP / 3 έχει ήδη προστεθεί στις πειραματικές εκδόσεις Chrome Canary και το βοηθητικό πρόγραμμα curl. Από την πλευρά του διακομιστή, απαιτείται η χρήση μεμονωμένων δοκιμαστικών εφαρμογών που έχουν περιορισμένες δυνατότητες. Η ικανότητα χειρισμού 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
  • Υποστήριξη για αναγνωριστικό σύνδεσης, το οποίο μειώνει το χρόνο για την πραγματοποίηση επανασύνδεσης για φορητούς πελάτες
  • Δυνατότητα σύνδεσης προηγμένων μηχανισμών για τον έλεγχο της υπερφόρτωσης σύνδεσης
  • Χρησιμοποιώντας την τεχνική πρόβλεψης του εύρους ζώνης σε κάθε κατεύθυνση για να διασφαλιστεί η βέλτιστη ένταση προώθησης πακέτων, εμποδίζοντας το να φτάσει σε κατάσταση συμφόρησης στην οποία παρατηρείται απώλεια πακέτου
  • Αξιοσημείωτα κέρδη απόδοσης και απόδοσης μέσω του TCP. Για υπηρεσίες βίντεο όπως το YouTube, το QUIC παρουσίασε μείωση κατά 30% στις λειτουργίες εκ νέου αποθήκευσης κατά την παρακολούθηση βίντεο.

Πώς να εφαρμόσετε τη λειτουργική μονάδα για την υποστήριξη HTTP / 3 στο NGINX;

Για όσους ενδιαφέρονται να εφαρμόσουν αυτήν την ενότητα στον διακομιστή τους, Μπορούν να το κάνουν ακολουθώντας τις οδηγίες που κοινοποιούμε παρακάτω.

Για να το μεταγλωττίσετε, πρέπει απλώς να κατεβάσουν την ενημέρωση κώδικα για το nginx 1.16 και ο κωδικός βιβλιοθήκης quiche.

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".


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.