Giới thiệu thư viện Aya để tạo trình xử lý eBPF trong Rust

Bản phát hành đầu tiên của thư viện Aya được trình bày, cho phép bạn tạo trình xử lý eBPF bằng ngôn ngữ Rust chạy bên trong nhân Linux trong một máy ảo đặc biệt có JIT. Không giống như các công cụ phát triển eBPF khác, Aya không sử dụng libbpf và trình biên dịch bcc mà thay vào đó cung cấp triển khai riêng được viết bằng Rust, sử dụng gói libc Crate để truy cập trực tiếp các lệnh gọi hệ thống kernel. Xây dựng Aya không yêu cầu công cụ ngôn ngữ C hoặc tệp tiêu đề kernel. Mã thư viện được phân phối theo giấy phép MIT và Apache 2.0.

HÃY TÌM HIỂU:

  • Hỗ trợ BTF (Định dạng loại BPF), cung cấp thông tin loại trong mã giả BPF để kiểm tra loại và ánh xạ tới các loại do hạt nhân hiện tại cung cấp. Việc sử dụng BTF giúp tạo ra các trình xử lý eBPF phổ quát có thể được sử dụng mà không cần biên dịch lại với các phiên bản khác nhau của nhân Linux.
  • Hỗ trợ các lệnh gọi “bpf-to-bpf”, các biến toàn cục và bộ khởi tạo, cho phép bạn thiết kế các chương trình cho eBPF theo cách tương tự như các chương trình thông thường sử dụng aya làm thời gian chạy nhằm xác định lại các hàm có tính đến công việc trong eBPF.
  • Hỗ trợ cho các loại hạt nhân khác nhau, bao gồm mảng thông thường, bản đồ băm, ngăn xếp, hàng đợi, dấu vết ngăn xếp, cũng như các cấu trúc theo dõi ổ cắm và hiệu suất.
  • Khả năng tạo nhiều loại chương trình eBTF khác nhau, bao gồm các chương trình lọc và quản lý lưu lượng, trình xử lý nhóm và các hoạt động ổ cắm khác nhau, chương trình XDP.
  • Hỗ trợ các nền tảng xử lý yêu cầu không đồng bộ ở chế độ không chặn tokio và async-std.
  • Lắp ráp nhanh, không có bất kỳ kết nối nào đến tập hợp hạt nhân và tập tin tiêu đề hạt nhân.

Dự án vẫn được coi là thử nghiệm - API vẫn chưa ổn định và tiếp tục phát triển. Ngoài ra, tất cả các cơ hội theo kế hoạch vẫn chưa được thực hiện. Vào cuối năm nay, các nhà phát triển dự kiến ​​sẽ đưa chức năng của Aya ngang bằng với libbpf và vào tháng 2022 năm XNUMX sẽ tạo ra bản phát hành ổn định đầu tiên. Ngoài ra còn có kế hoạch kết hợp các phần cần thiết của Aya để viết mã Rust cho nhân Linux với các thành phần không gian người dùng được sử dụng để tải, đính kèm và tương tác với các chương trình eBPF.

Chúng ta hãy nhớ lại rằng eBPF là trình thông dịch mã byte được tích hợp trong nhân Linux, cho phép bạn tạo các trình xử lý hoạt động mạng, giám sát hoạt động của hệ thống, chặn các cuộc gọi hệ thống, kiểm soát truy cập, xử lý các sự kiện trong khi duy trì thời gian, tính toán tần suất và thời gian hoạt động, thực hiện truy tìm bằng cách sử dụng kprobes/uprobes/tracepoints. Nhờ sử dụng trình biên dịch JIT, mã byte được dịch nhanh chóng thành các lệnh máy và được thực thi với hiệu suất của mã gốc. XDP cung cấp các công cụ để chạy các chương trình BPF ở cấp trình điều khiển mạng, với khả năng truy cập trực tiếp vào bộ đệm gói DMA, cho phép bạn tạo các bộ xử lý hiệu suất cao để làm việc dưới tải mạng nặng.

Nguồn: opennet.ru

Thêm một lời nhận xét