Συγγραφείς:
(1) Tianyi Cui, Πανεπιστήμιο της Ουάσιγκτον ([email protected]);
(2) Chenxingyu Zhao, Πανεπιστήμιο της Ουάσιγκτον ([email protected]);
(3) Wei Zhang, Microsoft ([email protected]);
(4) Kaiyuan Zhang, Πανεπιστήμιο της Ουάσιγκτον ([email protected]).
Σημείωση του συντάκτη: Αυτό είναι το Μέρος 1 από 6 μιας μελέτης που περιγράφει λεπτομερώς τις προσπάθειες βελτιστοποίησης της εξισορρόπησης φορτίου επιπέδου 7. Διαβάστε τα υπόλοιπα παρακάτω.
4.2 Διακίνηση από άκρο σε άκρο
4.3 Latency από άκρο σε άκρο
4.4 Αξιολόγηση των πλεονεκτημάτων των βασικών τεχνικών
4.5 Πραγματικός φόρτος εργασίας
Οι συσκευές εξισορρόπησης φορτίου χρησιμοποιούνται ευρέως μέσα στα σημερινά σύννεφα για την κλιμακωτή διανομή των αιτημάτων δικτύου σε διακομιστές κέντρων δεδομένων. Δεδομένης της εκτεταμένης χρήσης των εξισορροπητών φορτίου και του συναφούς λειτουργικού τους κόστους, αρκετές προσπάθειες έχουν επικεντρωθεί στη βελτίωση της αποτελεσματικότητάς τους εφαρμόζοντας τη λογική εξισορρόπησης φορτίου Layer-4 εντός του πυρήνα ή χρησιμοποιώντας επιτάχυνση υλικού. Αυτή η εργασία διερευνά εάν η πιο σύνθετη και προσανατολισμένη στη σύνδεση ικανότητα εξισορρόπησης φορτίου Layer-7 μπορεί επίσης να επωφεληθεί από την επιτάχυνση υλικού. Συγκεκριμένα, στοχεύουμε την εκφόρτωση της ικανότητας εξισορρόπησης φορτίου σε προγραμματιζόμενα SmartNIC. Αξιοποιούμε πλήρως το κόστος και την ενεργειακή απόδοση των SmartNIC χρησιμοποιώντας τρεις βασικές ιδέες. Πρώτον, υποστηρίζουμε ότι μια πλήρης και σύνθετη στοίβα TCP/IP δεν απαιτείται για τους εξισορροπητές φορτίου Layer-7 και αντ' αυτού προτείνουμε έναν ελαφρύ παράγοντα προώθησης στο SmartNIC. Δεύτερον, αναπτύσσουμε δομές δεδομένων διαχείρισης σύνδεσης με υψηλό βαθμό συγχρονισμού με ελάχιστο συγχρονισμό όταν εκτελούνται σε πολυπύρηνα SmartNIC. Τέλος, περιγράφουμε πώς θα μπορούσε να επιταχυνθεί η λογική εξισορρόπησης φορτίου χρησιμοποιώντας προσαρμοσμένους επιταχυντές επεξεργασίας πακέτων σε SmartNIC. Δημιουργήσαμε το πρωτότυπο Laconic σε δύο τύπους υλικού SmartNIC, επιτυγχάνοντας απόδοση άνω των 150 Gbps χρησιμοποιώντας όλους τους πυρήνες στο BlueField-2, ενώ ένας μόνος πυρήνας SmartNIC επιτυγχάνει 8,7 φορές υψηλότερη απόδοση και συγκρίσιμο λανθάνοντα χρόνο με το Nginx σε έναν μόνο πυρήνα x86.
Οι συσκευές εξισορρόπησης φορτίου είναι ένα θεμελιώδες δομικό στοιχείο για τα κέντρα δεδομένων, καθώς εξισορροπούν το φόρτο υπηρεσιών σε συλλογές διακομιστών εφαρμογών [38, 45, 46]. Οι συσκευές εξισορρόπησης φορτίου κατασκευάστηκαν αρχικά ως εξειδικευμένες συσκευές υλικού, αλλά τώρα συνήθως αναπτύσσονται ως λογισμικό που εκτελείται σε διακομιστές εμπορευμάτων ή εικονικά μηχανήματα. Αυτό το μοντέλο ανάπτυξης παρέχει μεγαλύτερο βαθμό προσαρμογής και προσαρμοστικότητας από τα παλαιότερα σχέδια που βασίζονται σε υλικό, αλλά μπορεί επίσης να οδηγήσει σε υψηλό κόστος για τους παρόχους cloud και τις υπηρεσίες εφαρμογών, δεδομένου του κόστους αγοράς και της κατανάλωσης ενέργειας των διακομιστών γενικής χρήσης [8]. Οι υπηρεσίες εφαρμογών συχνά καταβάλλουν κάθε δυνατή προσπάθεια για να ενοποιήσουν και να μειώσουν τη χρήση εξισορροπητών φορτίου για να επιτύχουν την επιθυμητή εξοικονόμηση κόστους [2, 4, 5].
Δεδομένης της εκτεταμένης χρήσης και του κόστους των εξισορροπητών φορτίου, αρκετές προσπάθειες έχουν επικεντρωθεί στη βελτίωση της απόδοσής τους, ειδικά των εξισορροπητών φορτίου Layer-4 (L4), ενσωματώνοντας τη λογική εξισορρόπησης φορτίου σε ένα χαμηλότερο επίπεδο, πιθανώς επιταχυνόμενο από το υλικό. Το Katran [16] επιταχύνεται χρησιμοποιώντας τον κώδικα eBPF μέσα στον πυρήνα του Linux, αναχαιτίζοντας και επεξεργάζοντας πακέτα εντός του πυρήνα και ελαχιστοποιώντας τον αριθμό των μεταβάσεων σε κώδικα εξισορρόπησης φορτίου σε επίπεδο χρήστη. Το ClickNP [32] αντιμετωπίζει ορισμένες πτυχές της λογικής εξισορρόπησης φορτίου L4 (ειδικά τις δυνατότητες που μοιάζουν με NAT) σε ένα SmartNIC με δυνατότητα FPGA και εκμεταλλεύεται τις δυνατότητες παράλληλης επεξεργασίας των συσκευών FPGA. Το SilkRoad [38] χρησιμοποιεί έναν συνδυασμό ενός προγραμματιζόμενου διακόπτη και ενός τερματικού κεντρικού υπολογιστή για να αποθηκεύσει την κατάσταση που σχετίζεται με τους εξισορροπητές φορτίου L4 και να εκτελέσει τους μετασχηματισμούς επιπέδου δεδομένων που σχετίζονται με τη λειτουργία εξισορρόπησης φορτίου εντός ενός αγωγού μεταγωγής.
Ενώ αυτές οι προσπάθειες έχουν αποφέρει σημαντικά κέρδη στη βελτιστοποίηση της εξισορρόπησης φορτίου L4 που εξισορροπεί την κίνηση στο επίπεδο δικτύου, οι υπηρεσίες κέντρων δεδομένων συχνά βασίζονται σε δυνατότητες εξισορρόπησης φορτίου επιπέδου εφαρμογής που βρίσκονται μόνο στους εξισορροπητές φορτίου Layer-7 (L7). Ειδικότερα, οι υπηρεσίες θα ήθελαν να δρομολογούν ροές με βάση τα χαρακτηριστικά του αιτήματος πελάτη, να διατηρήσουν τη συνάφεια συνεδρίας για αιτήματα πελάτη, να παρέχουν έλεγχο πρόσβασης και ούτω καθεξής [7]. Ωστόσο, αυτά τα χαρακτηριστικά καθιστούν πιο δύσκολο για τους εξισορροπητές φορτίου L7 να υιοθετήσουν τις τεχνικές επιτάχυνσης υλικού που χρησιμοποιούνται για τους εξισορροπητές φορτίου L4. Μια θεμελιώδης πρόκληση είναι ότι η λειτουργία εξισορρόπησης φορτίου L7 βασίζεται σε πληροφορίες που είναι ενσωματωμένες σε πρωτόκολλα μεταφοράς προσανατολισμένα στη σύνδεση, και έτσι φαίνεται να απαιτεί έναν παράγοντα επεξεργασίας δικτύου πλήρους στοίβας στον εξισορροπητή φορτίου για να χειρίζεται συνδέσεις TCP/HTTP. Κατά συνέπεια, οι σημερινοί εξισορροπητές φορτίου L7 είναι γενικές λύσεις λογισμικού με υψηλό κόστος επεξεργασίας σε διακομιστές εμπορευμάτων.
Σε αυτήν την εργασία, εξετάζουμε εάν μπορούμε να βελτιώσουμε την απόδοση των εξισορροπητών φορτίου L7 χρησιμοποιώντας προγραμματιζόμενο υλικό δικτύωσης. Εστιάζουμε σε SmartNIC που παρέχουν υπολογιστικούς πυρήνες γενικής χρήσης επαυξημένους με υλικό επεξεργασίας πακέτων. Τα SmartNIC είναι ιδιαίτερα ελκυστικοί στόχοι, καθώς οι υπολογιστικοί πυρήνες τους μπορούν να φιλοξενήσουν αυθαίρετη λογική πρωτοκόλλου, ενώ οι επιταχυντές επεξεργασίας πακέτων τους μπορούν να εκτελούν αποτελεσματικά μετασχηματισμούς επιπέδου δεδομένων. Έτσι, ένα SmartNIC συνδυάζει τις δυνατότητες του παραδοσιακού υπολογισμού κεντρικού υπολογιστή με τις αναδυόμενες δυνατότητες προγραμματιζόμενων διακοπτών και είναι ο κατάλληλος στόχος για τους εξισορροπητές φορτίου L7. Η δουλειά μας εν μέρει υποκινείται επίσης από την αυξανόμενη ανάπτυξη των SmartNIC στα κέντρα δεδομένων ως ένα οικονομικά αποδοτικό και ενεργειακά αποδοτικό υπολογιστικό υπόστρωμα για εργασίες δικτύωσης.
Πρέπει να αντιμετωπιστούν αρκετές προκλήσεις κατά τη μεταφόρτωση της λειτουργικότητας εξισορρόπησης φορτίου σε SmartNIC. Πρώτον, οι πυρήνες SmartNIC είναι αδύναμοι, εξοπλισμένοι με περιορισμένη μνήμη και αναποτελεσματικοί στην εκτέλεση υπολογισμών γενικής χρήσης. Στο μέτρο του δυνατού, θα πρέπει να χρησιμοποιούμε ελαφριές στοίβες δικτύου αντί για γενικές στοίβες πλήρους λειτουργικότητας που υπάρχουν μέσα στους πυρήνες του λειτουργικού συστήματος. Δεύτερον, η αποτελεσματική επεξεργασία πολλαπλών πυρήνων στα SmartNIC προϋποθέτει ελαφρύ συγχρονισμό για πρόσβαση σε ταυτόχρονες δομές δεδομένων, και αυτό είναι ιδιαίτερα σημαντικό καθώς περιορίζουμε τη λογική επεξεργασίας δικτύου. Τρίτον, η αποτελεσματική χρήση επιταχυντών για μετασχηματισμούς πακέτων είναι απαραίτητη για την ενίσχυση της υπολογιστικής ικανότητας των SmartNIC.
Σχεδιάζουμε και υλοποιούμε το Laconic , έναν εξισορροπητή φορτίου χωρίς φορτίο SmartNIC που αντιμετωπίζει τις προκλήσεις που αναφέρθηκαν παραπάνω. Ένα βασικό στοιχείο του συστήματός μας είναι μια ελαφριά στοίβα δικτύου που αντιπροσωπεύει ένα συν-σχεδιασμό της λογικής εξισορρόπησης φορτίου επιπέδου εφαρμογής με τις εργασίες του επιπέδου μεταφοράς. Αυτή η ελαφριά στοίβα δικτύου εκτελεί σύνθετη επεξεργασία πακέτων μόνο σε ένα υποσύνολο πακέτων που μεταδίδονται μέσω του εξισορροπητή φορτίου. Για τα υπόλοιπα πακέτα, η στοίβα δικτύου εκτελεί απλή επανεγγραφή των πακέτων και βασίζεται στον πελάτη και τον διακομιστή για να παρέχει αξιοπιστία από άκρο σε άκρο και έλεγχο συμφόρησης. Για SmartNIC με επιταχυντές επεξεργασίας πακέτων, αυτός ο σχεδιασμός επιτρέπει την επεξεργασία των περισσότερων πακέτων με τη χρήση μηχανών επεξεργασίας ροής που βασίζονται σε υλικό, παρέχοντας έτσι σημαντικά κέρδη απόδοσης. Αναπτύσσουμε επίσης δομές δεδομένων διαχείρισης σύνδεσης που είναι σε μεγάλο βαθμό ταυτόχρονες και ελαχιστοποιούν δαπανηρές λειτουργίες αμοιβαίου αποκλεισμού. Σημειώνουμε ότι ορισμένες από τις συνεισφορές μας στο σχεδιασμό ισχύουν επίσης για μια γενική σχεδίαση που βασίζεται σε διακομιστή, αλλά έχουν πολλαπλασιαστικό αποτέλεσμα στα SmartNIC, προσδιορίζοντας μια γρήγορη διαδρομή που μπορεί να εκτελεστεί στις μηχανές πακέτων υλικού.
Κατασκευάσαμε το Laconic και το προσαρμόσαμε σε δύο διαφορετικούς τύπους SmartNIC: Marvell LiquidIO3 και Nvidia BlueField-2. Η Laconic παρέχει λειτουργικότητα τόσο Layer-4 όσο και Layer-7 και εφαρμόζει τη λογική παρεμβολής Layer-7 που χρησιμοποιείται συνήθως για την εξισορρόπηση των συνδέσεων σε υπηρεσίες υποστήριξης. Για μεγάλα μηνύματα, το Laconic που εκτελείται στο BlueField-2 με έναν μόνο πυρήνα ARM μπορεί να επιτύχει έως και 8,7 φορές υψηλότερη απόδοση από το ευρέως χρησιμοποιούμενο Nginx που εκτελείται σε πιο ισχυρό πυρήνα x86. Για μικρά μηνύματα, το Laconic στο BlueField-2 μπορεί να επιτύχει υψηλότερη απόδοση με συγκρίσιμο ή ακόμη χαμηλότερο λανθάνοντα χρόνο σε σύγκριση με το Nginx. Στο LiquidIO3, η απόδοση του Laconic είναι 4,5 φορές υψηλότερη σε σύγκριση με το x86 Nginx. Επιδεικνύουμε επίσης τη Laconic απόδοση με πραγματικό φόρτο εργασίας και παρουσιάζουμε λεπτομερείς μικροσημεία αναφοράς για τα οφέλη των βασικών ιδεών.
Αυτό το χαρτί είναι διαθέσιμο στο arxiv με άδεια CC BY-NC-ND 4.0 DEED.