Tác giả:
(1) Tianyi Cui, Đại học Washington ([email protected]);
(2) Chenxingyu Zhao, Đại học Washington ([email protected]);
(3) Wei Zhang, Microsoft ([email protected]);
(4) Kaiyuan Zhang, Đại học Washington ([email protected]).
Ghi chú của biên tập viên: Đây là Phần 1 trong 6 nghiên cứu nêu chi tiết các nỗ lực tối ưu hóa cân bằng tải lớp 7. Đọc phần còn lại bên dưới.
4.2 Thông lượng từ đầu đến cuối
4.3 Độ trễ đầu cuối
4.4 Đánh giá lợi ích của các kỹ thuật chính
4.5 Khối lượng công việc thực tế
Bộ cân bằng tải được sử dụng rộng rãi bên trong các đám mây ngày nay để phân phối các yêu cầu mạng theo quy mô trên các máy chủ trung tâm dữ liệu. Với việc sử dụng rộng rãi bộ cân bằng tải và chi phí vận hành liên quan, một số nỗ lực đã tập trung vào việc cải thiện hiệu quả của chúng bằng cách triển khai logic cân bằng tải Lớp 4 trong nhân hoặc sử dụng tăng tốc phần cứng. Công trình này khám phá xem khả năng cân bằng tải Lớp 7 phức tạp hơn và hướng đến kết nối có thể được hưởng lợi từ tăng tốc phần cứng hay không. Cụ thể, chúng tôi nhắm mục tiêu chuyển giao khả năng cân bằng tải sang SmartNIC có thể lập trình. Chúng tôi tận dụng hoàn toàn chi phí và hiệu quả năng lượng của SmartNIC bằng ba ý tưởng chính. Đầu tiên, chúng tôi lập luận rằng bộ cân bằng tải Lớp 7 không yêu cầu một ngăn xếp TCP/IP đầy đủ và phức tạp mà thay vào đó đề xuất một tác nhân chuyển tiếp nhẹ trên SmartNIC. Thứ hai, chúng tôi phát triển các cấu trúc dữ liệu quản lý kết nối với mức độ đồng thời cao với đồng bộ hóa tối thiểu khi được thực thi trên SmartNIC đa lõi. Cuối cùng, chúng tôi mô tả cách logic cân bằng tải có thể được tăng tốc bằng cách sử dụng các bộ tăng tốc xử lý gói tùy chỉnh trên SmartNIC. Chúng tôi tạo nguyên mẫu Laconic trên hai loại phần cứng SmartNIC, đạt thông lượng hơn 150 Gbps khi sử dụng tất cả các lõi trên BlueField-2, trong khi một lõi SmartNIC duy nhất đạt thông lượng cao hơn 8,7 lần và độ trễ tương đương với Nginx trên một lõi x86 duy nhất.
Bộ cân bằng tải là một khối xây dựng cơ bản cho các trung tâm dữ liệu vì chúng cân bằng tải dịch vụ trên các bộ sưu tập máy chủ ứng dụng [38, 45, 46]. Bộ cân bằng tải ban đầu được xây dựng như các thiết bị phần cứng chuyên dụng nhưng hiện nay thường được triển khai dưới dạng phần mềm chạy trên máy chủ thương mại hoặc VM. Mô hình triển khai này cung cấp mức độ tùy chỉnh và khả năng thích ứng cao hơn so với các thiết kế dựa trên phần cứng cũ, nhưng nó cũng có thể dẫn đến chi phí cao cho các nhà cung cấp đám mây và dịch vụ ứng dụng, do chi phí mua và mức tiêu thụ năng lượng của các máy chủ mục đích chung [8]. Các dịch vụ ứng dụng thường nỗ lực rất nhiều để hợp nhất và giảm việc sử dụng bộ cân bằng tải để đạt được mức tiết kiệm chi phí mong muốn [2, 4, 5].
Do bộ cân bằng tải được sử dụng rộng rãi và tốn kém, một số nỗ lực đã tập trung vào việc cải thiện hiệu quả của chúng, đặc biệt là bộ cân bằng tải Lớp 4 (L4), bằng cách nhúng logic cân bằng tải vào một lớp thấp hơn, có thể được tăng tốc bằng phần cứng. Katran [16] được tăng tốc bằng mã eBPF bên trong hạt nhân Linux, do đó chặn và xử lý các gói tin trong hạt nhân và giảm thiểu số lần chuyển đổi sang mã cân bằng tải cấp người dùng. ClickNP [32] giải quyết một số khía cạnh của logic cân bằng tải L4 (đặc biệt là các khả năng giống như NAT) trên SmartNIC hỗ trợ FPGA và khai thác khả năng xử lý song song của các thiết bị FPGA. SilkRoad [38] sử dụng kết hợp một bộ chuyển mạch có thể lập trình và một máy chủ cuối để lưu trữ trạng thái liên quan đến bộ cân bằng tải L4 và thực hiện các chuyển đổi mặt phẳng dữ liệu liên quan đến hoạt động cân bằng tải trong đường ống chuyển mạch.
Trong khi những nỗ lực này đã đạt được những tiến bộ đáng kể trong việc tối ưu hóa cân bằng tải L4 cân bằng lưu lượng ở lớp mạng, các dịch vụ trung tâm dữ liệu thường dựa vào khả năng cân bằng tải lớp ứng dụng chỉ có trong bộ cân bằng tải Lớp 7 (L7). Đặc biệt, các dịch vụ muốn định tuyến luồng dựa trên các thuộc tính của yêu cầu của máy khách, duy trì mối quan hệ phiên cho các yêu cầu của máy khách, cung cấp quyền kiểm soát truy cập, v.v. [7]. Nhưng các tính năng này khiến bộ cân bằng tải L7 khó áp dụng các kỹ thuật tăng tốc phần cứng được sử dụng cho bộ cân bằng tải L4 hơn. Một thách thức cơ bản là hoạt động cân bằng tải L7 dựa trên thông tin được nhúng trong các giao thức truyền tải hướng kết nối, do đó có vẻ như yêu cầu một tác nhân xử lý mạng đầy đủ trên bộ cân bằng tải để xử lý các kết nối TCP/HTTP. Do đó, bộ cân bằng tải L7 ngày nay là các giải pháp phần mềm chung gây ra chi phí xử lý cao trên các máy chủ thông thường.
Trong công trình này, chúng tôi xem xét liệu chúng tôi có thể cải thiện hiệu quả của bộ cân bằng tải L7 bằng phần cứng mạng có thể lập trình hay không. Chúng tôi tập trung vào SmartNIC cung cấp lõi điện toán đa năng được tăng cường bằng phần cứng xử lý gói tin. SmartNIC là mục tiêu đặc biệt hấp dẫn vì lõi điện toán của chúng có thể lưu trữ logic giao thức tùy ý trong khi bộ tăng tốc xử lý gói tin của chúng có thể thực hiện chuyển đổi mặt phẳng dữ liệu một cách hiệu quả. Do đó, SmartNIC kết hợp khả năng của điện toán lưu trữ truyền thống với khả năng mới nổi của các bộ chuyển mạch có thể lập trình và là mục tiêu phù hợp cho bộ cân bằng tải L7. Công trình của chúng tôi cũng được thúc đẩy một phần bởi việc triển khai ngày càng tăng của SmartNIC trong các trung tâm dữ liệu như một nền tảng điện toán tiết kiệm chi phí và tiết kiệm năng lượng cho các tác vụ mạng.
Một số thách thức phải được giải quyết khi chuyển giao chức năng cân bằng tải sang SmartNIC. Đầu tiên, lõi SmartNIC yếu ớt, được trang bị bộ nhớ hạn chế và không hiệu quả khi chạy các phép tính chung. Trong phạm vi có thể, chúng ta nên sử dụng các ngăn xếp mạng nhẹ thay vì các ngăn xếp chung, đầy đủ chức năng có trong hạt nhân hệ điều hành. Thứ hai, xử lý đa lõi hiệu quả trên SmartNIC giả định đồng bộ hóa nhẹ để truy cập vào các cấu trúc dữ liệu đồng thời và điều này đặc biệt có liên quan khi chúng ta thu gọn logic xử lý mạng. Thứ ba, việc sử dụng hiệu quả các bộ tăng tốc để chuyển đổi gói là cần thiết để nâng cao khả năng tính toán của SmartNIC.
Chúng tôi thiết kế và triển khai Laconic , một bộ cân bằng tải SmartNIC-offloaded giải quyết các thách thức nêu trên. Một thành phần chính của hệ thống của chúng tôi là một ngăn xếp mạng nhẹ đại diện cho thiết kế chung của logic cân bằng tải lớp ứng dụng với các tác vụ lớp vận chuyển. Ngăn xếp mạng nhẹ này chỉ thực hiện xử lý gói phức tạp trên một tập hợp con các gói được truyền qua bộ cân bằng tải. Đối với các gói còn lại, ngăn xếp mạng thực hiện việc viết lại các gói đơn giản và dựa vào máy khách và máy chủ để cung cấp độ tin cậy đầu cuối và kiểm soát tắc nghẽn. Đối với SmartNIC có bộ tăng tốc xử lý gói, thiết kế này cho phép xử lý hầu hết các gói bằng các công cụ xử lý luồng dựa trên phần cứng, do đó mang lại hiệu quả tăng đáng kể. Chúng tôi cũng phát triển các cấu trúc dữ liệu quản lý kết nối có tính đồng thời cao và giảm thiểu các hoạt động loại trừ lẫn nhau tốn kém. Chúng tôi lưu ý rằng một số đóng góp về thiết kế của chúng tôi cũng áp dụng cho thiết kế dựa trên máy chủ chung, nhưng chúng có tác động nhân lên SmartNIC bằng cách phân tích ra một đường dẫn nhanh có thể được thực thi trên các công cụ gói phần cứng.
Chúng tôi đã xây dựng Laconic và điều chỉnh nó cho hai loại SmartNIC khác nhau: Marvell LiquidIO3 và Nvidia BlueField-2. Laconic cung cấp cả chức năng Layer-4 và Layer-7 và triển khai logic xen kẽ Layer-7 thường dùng để cân bằng kết nối với các dịch vụ phụ trợ. Đối với các tin nhắn lớn, Laconic chạy trên BlueField-2 với một lõi ARM duy nhất có thể đạt thông lượng cao hơn tới 8,7 lần so với Nginx được sử dụng rộng rãi chạy trên lõi x86 mạnh hơn. Đối với các tin nhắn nhỏ, Laconic trên BlueField-2 có thể đạt thông lượng cao hơn với độ trễ tương đương hoặc thậm chí thấp hơn so với Nginx. Trên LiquidIO3, thông lượng của Laconic cao hơn 4,5 lần so với Nginx x86. Chúng tôi cũng chứng minh hiệu suất của Laconic với khối lượng công việc thực tế và trình bày các điểm chuẩn vi mô chi tiết về lợi ích của các ý tưởng chính.
Bài báo này có sẵn trên arxiv theo giấy phép CC BY-NC-ND 4.0 DEED.