Autorski:
(1) Tianyi Cui, Uniwersytet Waszyngtoński ([email protected]);
(2) Chenxingyu Zhao, Uniwersytet Waszyngtoński ([email protected]);
(3) Wei Zhang, Microsoft ([email protected]);
(4) Kaiyuan Zhang, Uniwersytet Waszyngtoński ([email protected]).
Uwaga redaktora: To jest część 1 z 6 badania szczegółowo opisującego próby optymalizacji równoważenia obciążenia warstwy 7. Przeczytaj resztę poniżej.
4.2 Przepustowość od początku do końca
4.3 Opóźnienie od końca do końca
4.4 Ocena korzyści wynikających z kluczowych technik
4.5 Obciążenie pracą w warunkach rzeczywistych
Moduły równoważenia obciążenia są powszechnie używane w dzisiejszych chmurach, aby skalowalnie dystrybuować żądania sieciowe na serwerach centrów danych. Biorąc pod uwagę szerokie wykorzystanie modułów równoważenia obciążenia i związane z nimi koszty operacyjne, wiele wysiłków skupiło się na poprawie ich wydajności poprzez wdrożenie logiki równoważenia obciążenia warstwy 4 w jądrze lub użycie akceleracji sprzętowej. Niniejsza praca bada, czy bardziej złożona i zorientowana na połączenie funkcja równoważenia obciążenia warstwy 7 może również skorzystać z akceleracji sprzętowej. W szczególności skupiamy się na odciążeniu funkcji równoważenia obciążenia na programowalnych kartach sieciowych SmartNIC. W pełni wykorzystujemy koszty i efektywność energetyczną kart sieciowych SmartNIC, wykorzystując trzy kluczowe pomysły. Po pierwsze, twierdzimy, że pełny i złożony stos TCP/IP nie jest wymagany dla modułów równoważenia obciążenia warstwy 7 i zamiast tego proponujemy lekkiego agenta przekazującego na karcie sieciowej SmartNIC. Po drugie, opracowujemy struktury danych zarządzania połączeniami o wysokim stopniu współbieżności z minimalną synchronizacją, gdy są wykonywane na wielordzeniowych kartach sieciowych SmartNIC. Na koniec opisujemy, w jaki sposób logika równoważenia obciążenia może zostać przyspieszona przy użyciu niestandardowych akceleratorów przetwarzania pakietów na kartach sieciowych SmartNIC. Prototyp Laconic testujemy na dwóch typach sprzętu SmartNIC, osiągając przepustowość ponad 150 Gb/s przy użyciu wszystkich rdzeni BlueField-2, podczas gdy pojedynczy rdzeń SmartNIC osiąga 8,7 razy wyższą przepustowość i porównywalne opóźnienie do Nginx przy użyciu pojedynczego rdzenia x86.
Urządzenia równoważące obciążenie są podstawowym elementem konstrukcyjnym centrów danych, ponieważ równoważą obciążenie usług w kolekcjach serwerów aplikacji [38, 45, 46]. Urządzenia równoważące obciążenie były początkowo budowane jako specjalistyczne urządzenia sprzętowe, ale obecnie są zazwyczaj wdrażane jako oprogramowanie działające na serwerach towarowych lub maszynach wirtualnych. Ten model wdrażania zapewnia większy stopień dostosowywalności i adaptacyjności niż starsze projekty oparte na sprzęcie, ale może również skutkować wysokimi kosztami dla dostawców chmury i usług aplikacji, biorąc pod uwagę koszty zakupu i zużycie energii przez serwery ogólnego przeznaczenia [8]. Usługi aplikacji często podejmują duże wysiłki, aby skonsolidować i zmniejszyć wykorzystanie urządzeń równoważących obciążenie w celu uzyskania pożądanych oszczędności kosztów [2, 4, 5].
Biorąc pod uwagę szerokie zastosowanie i koszt modułów równoważenia obciążenia, wiele wysiłków skupiło się na poprawie ich wydajności, zwłaszcza modułów równoważenia obciążenia warstwy 4 (L4), poprzez osadzenie logiki równoważenia obciążenia w niższej, potencjalnie akcelerowanej sprzętowo warstwie. Katran [16] jest akcelerowany przy użyciu kodu eBPF wewnątrz jądra Linux, przechwytując i przetwarzając pakiety w jądrze i minimalizując liczbę przejść do kodu równoważenia obciążenia na poziomie użytkownika. ClickNP [32] zajmuje się niektórymi aspektami logiki równoważenia obciążenia L4 (zwłaszcza możliwościami podobnymi do NAT) na karcie SmartNIC z włączonym FPGA i wykorzystuje możliwości przetwarzania równoległego urządzeń FPGA. SilkRoad [38] wykorzystuje kombinację programowalnego przełącznika i hosta końcowego do przechowywania stanu powiązanego z modułami równoważenia obciążenia L4 i wykonywania transformacji płaszczyzny danych związanych z operacją równoważenia obciążenia w potoku przełącznika.
Chociaż te wysiłki przyniosły znaczne korzyści w optymalizacji równoważenia obciążenia L4, które równoważy ruch na poziomie sieci, usługi centrów danych często polegają na możliwościach równoważenia obciążenia na poziomie aplikacji, które można znaleźć tylko w modułach równoważenia obciążenia warstwy 7 (L7). W szczególności usługi chciałyby kierować przepływy na podstawie atrybutów żądania klienta, zachować powinowactwo sesji dla żądań klienta, zapewnić kontrolę dostępu itd. [7]. Jednak te funkcje utrudniają modułom równoważenia obciążenia L7 przyjęcie technik akceleracji sprzętowej stosowanych w modułach równoważenia obciążenia L4. Podstawowym wyzwaniem jest to, że operacja równoważenia obciążenia L7 opiera się na informacjach osadzonych w protokołach transportu zorientowanych na połączenie, co wydaje się wymagać pełnozakresowego agenta przetwarzania sieci na module równoważenia obciążenia do obsługi połączeń TCP/HTTP. W związku z tym dzisiejsze moduły równoważenia obciążenia L7 są ogólnymi rozwiązaniami programowymi generującymi wysokie koszty przetwarzania na serwerach towarowych.
W tej pracy badamy, czy możemy poprawić wydajność modułów równoważenia obciążenia L7 przy użyciu programowalnego sprzętu sieciowego. Skupiamy się na kartach SmartNIC, które zapewniają rdzenie obliczeniowe ogólnego przeznaczenia rozszerzone o sprzęt do przetwarzania pakietów. Karty SmartNIC są szczególnie atrakcyjnymi celami, ponieważ ich rdzenie obliczeniowe mogą obsługiwać dowolną logikę protokołu, podczas gdy ich akceleratory przetwarzania pakietów mogą wydajnie wykonywać transformacje płaszczyzny danych. Karta SmartNIC łączy zatem możliwości tradycyjnego przetwarzania hosta z pojawiającymi się możliwościami programowalnych przełączników i jest odpowiednim celem dla modułów równoważenia obciążenia L7. Nasza praca jest również częściowo motywowana rosnącym wdrażaniem kart SmartNIC w centrach danych jako opłacalnego i energooszczędnego podłoża obliczeniowego do zadań sieciowych.
Należy rozwiązać kilka problemów, odciążając funkcje równoważenia obciążenia na rzecz kart SmartNIC. Po pierwsze, rdzenie kart SmartNIC są słabe, wyposażone w ograniczoną pamięć i nieefektywne w wykonywaniu obliczeń ogólnego przeznaczenia. W miarę możliwości powinniśmy używać lekkich stosów sieciowych zamiast ogólnych stosów o pełnej funkcjonalności obecnych w jądrach systemów operacyjnych. Po drugie, wydajne przetwarzanie wielordzeniowe na kartach SmartNIC zakłada lekką synchronizację w celu dostępu do równoczesnych struktur danych, co jest szczególnie istotne, gdy odchudzimy logikę przetwarzania sieciowego. Po trzecie, skuteczne wykorzystanie akceleratorów do transformacji pakietów jest konieczne w celu zwiększenia możliwości obliczeniowych kart SmartNIC.
Projektujemy i wdrażamy Laconic , moduł równoważenia obciążenia SmartNIC, który rozwiązuje problemy podniesione powyżej. Kluczowym elementem naszego systemu jest lekki stos sieciowy, który stanowi współprojektowanie logiki równoważenia obciążenia warstwy aplikacji z zadaniami warstwy transportowej. Ten lekki stos sieciowy wykonuje złożone przetwarzanie pakietów tylko dla podzbioru pakietów przesyłanych przez moduł równoważenia obciążenia. W przypadku pozostałych pakietów stos sieciowy wykonuje proste przepisywanie pakietów i polega na kliencie i serwerze, aby zapewnić kompleksową niezawodność i kontrolę przeciążenia. W przypadku kart SmartNIC z akceleratorami przetwarzania pakietów projekt ten umożliwia przetwarzanie większości pakietów przy użyciu sprzętowych silników przetwarzania przepływu, zapewniając tym samym znaczny wzrost wydajności. Opracowujemy również struktury danych zarządzania połączeniami, które są wysoce współbieżne i minimalizują kosztowne operacje wzajemnego wykluczania. Zauważamy, że niektóre z naszych wkładów projektowych odnoszą się również do ogólnego projektu opartego na serwerze, ale mają one efekt mnożnikowy na karty SmartNIC, ponieważ wykluczają szybką ścieżkę, która może być wykonywana na sprzętowych silnikach pakietów.
Zbudowaliśmy Laconic i dostosowaliśmy go do dwóch różnych typów kart SmartNIC: Marvell LiquidIO3 i Nvidia BlueField-2. Laconic zapewnia funkcjonalność warstwy 4 i warstwy 7 oraz implementuje powszechnie używaną logikę interpozycji warstwy 7 w celu równoważenia połączeń z usługami zaplecza. W przypadku dużych wiadomości Laconic działający na BlueField-2 z jednym rdzeniem ARM może osiągnąć do 8,7 razy większą przepustowość niż powszechnie używany Nginx działający na mocniejszym rdzeniu x86. W przypadku małych wiadomości Laconic na BlueField-2 może osiągnąć większą przepustowość przy porównywalnym lub nawet niższym opóźnieniu w porównaniu z Nginx. W LiquidIO3 przepustowość Laconic jest 4,5 razy większa w porównaniu z x86 Nginx. Demonstrujemy również wydajność Laconic przy rzeczywistym obciążeniu i przedstawiamy szczegółowe mikrotesty porównawcze dotyczące korzyści z kluczowych pomysłów.
Artykuł jest dostępny w serwisie arxiv na licencji CC BY-NC-ND 4.0 DEED.