Dự án F-Stack 2.0 đã được phát hành. Dự án này phát triển một phiên bản của ngăn xếp mạng FreeBSD được điều chỉnh để sử dụng độc lập trong không gian người dùng dưới dạng thư viện. Dự án được tạo ra bởi Tencent, công ty viễn thông lớn nhất Trung Quốc, và được sử dụng trong các sản phẩm và dịch vụ của họ. Mã nguồn được viết bằng ngôn ngữ C và được phân phối theo giấy phép BSD. Nó hỗ trợ Linux và FreeBSD. Dự án cũng hỗ trợ Nginx 1.28 và Redis 6.2.6, cả hai đều được port sang F-Stack, cho thấy hiệu suất vượt trội so với các bản dựng tiêu chuẩn chạy trên nền tảng mạng của hệ thống.
F-Stack cho phép các ứng dụng sử dụng ngăn xếp mạng cục bộ riêng, độc lập với ngăn xếp mạng của hệ điều hành, hoạt động trong không gian người dùng và tương tác trực tiếp với thiết bị mạng. F-Stack được định vị là giải pháp giúp tăng hiệu suất của các trình xử lý yêu cầu mạng trong điều kiện mà chuẩn mực thông thường không đáp ứng được. TCP/IP ngăn xếp hạt nhân Linux Điều này trở thành nút thắt cổ chai và hạn chế khả năng mở rộng. Về mặt lý thuyết, F-Stack cho phép đạt đến giới hạn hiệu năng mạng của card mạng đang sử dụng, và trong một số trường hợp, nó cho phép tăng đáng kể số lượng yêu cầu mạng nhỏ được xử lý.
Việc cải thiện hiệu năng đạt được bằng cách loại bỏ các thao tác như sao chép gói mạng, lập lịch luồng, xử lý ngắt và các lệnh gọi hệ thống. Để tương tác với card mạng, bỏ qua các giao diện nhân hệ điều hành, khung phần mềm Data Plane Development Kit (DPDK) được sử dụng. Khung phần mềm này cung cấp một bộ thư viện toàn diện để tương tác cấp thấp với các bộ điều hợp mạng. DPDK giảm thiểu chi phí và tối thiểu hóa chu kỳ CPU khi gửi hoặc nhận gói mạng.
Chức năng xếp chồng TCP/IP Tương ứng với ngăn xếp mạng của FreeBSD 15 và đã được tách ra khỏi hệ điều hành đó thành một thư viện độc lập. Việc phát triển ứng dụng có thể sử dụng API POSIX tiêu chuẩn (socket, epoll, kqueue) hoặc API dựa trên vi luồng độc quyền, giúp đơn giản hóa việc tạo các ứng dụng mạng và loại bỏ nhu cầu về logic xử lý yêu cầu bất đồng bộ phức tạp. Nó có thể được sử dụng với các ứng dụng không sửa đổi được tải qua LD_PRELOAD.
Những thay đổi đáng chú ý nhất trong phiên bản mới:
- Các thành phần của ngăn xếp mạng đã được cập nhật lên FreeBSD 15 (trước đây sử dụng FreeBSD 13).
- Chế độ đa luồng (thread_mode=1) đã được triển khai trong một tiến trình duy nhất, bổ sung cho chế độ đa tiến trình đã có trước đó.
- Chế độ hoạt động nhẹ (primary_slim) đã được thêm vào, trong đó tiến trình chính chỉ thực hiện các tác vụ khởi tạo và phối hợp cơ bản, trong khi việc nhận gói dữ liệu và xử lý hàng đợi nhận/truyền (rx/tx) chỉ được thực hiện ở phía các tiến trình con.
- Đã thêm hỗ trợ cho cơ chế tăng tốc phần cứng.
TSO (TCP Segmentation Offload) để chuyển giao các hoạt động tổng hợp gói tin cho card mạng, với khả năng chuyển về triển khai bằng phần mềm khi cần thiết. Cải thiện hỗ trợ TSO (TCP Segmentation Offload, chuyển giao xử lý phân đoạn gói tin cho card mạng) cho IPv6. - Đã thêm khả năng thay đổi kích thước MTU (Đơn vị truyền tải tối đa) và triển khai hỗ trợ cho khung dữ liệu lớn (jumbo frames).
- Mở rộng khả năng quản lý tăng tốc phần cứng để tính toán tổng kiểm tra cho các gói tin đã gửi.
- Đã thêm hàm ff_zc_recv() để nhận dữ liệu mà không cần bộ đệm trung gian (zero-copy). Hàm ff_zc_send() tương tự để gửi dữ liệu đã được sửa đổi. Tối ưu hóa và bổ sung thêm các tính năng. Hỗ trợ IPv6 hàm ff_rss_check().
- Đã thêm tùy chọn FF_KERNEL_COEXIST để hoạt động cùng với ngăn xếp mạng của nhân hệ điều hành.
- Khả năng lưu trữ thông tin lưu lượng truy cập trong các bản ghi pcap với độ chính xác đến từng nano giây đã được cung cấp.
- Các tham số mới idle_loop_interval, extra_eal_args, drain_ring_size, reload_heartbeat_timeout_ms và reload_udp_idle_ms đã được thêm vào config.ini.
- Phiên bản nginx chuyên dụng hiện hỗ trợ tải lại cấu hình và cập nhật tệp nhị phân mà không làm gián đoạn kết nối (graceful_reload=1).
Nguồn: opennet.ru
