Rust-д eBPF зохицуулагч үүсгэх Аяа номын санг танилцуулсан

Aya номын сангийн анхны хувилбарыг танилцуулж байгаа бөгөөд энэ нь Linux цөм дотор ажилладаг Rust хэлээр eBPF зохицуулагчийг JIT-тэй тусгай виртуал машинд үүсгэх боломжийг олгодог. Бусад eBPF хөгжүүлэлтийн хэрэглүүрүүдээс ялгаатай нь Aya нь libbpf болон bcc хөрвүүлэгчийг ашигладаггүй, харин цөмийн системийн дуудлагад шууд хандахын тулд libc crate багцыг ашигладаг Rust хэл дээр бичигдсэн өөрийн хэрэгжилтийг санал болгодог. Building Aya нь Си хэлний багаж хэрэгсэл эсвэл цөмийн толгой файлуудыг шаарддаггүй. Номын сангийн кодыг MIT болон Apache 2.0 лицензийн дагуу түгээдэг.

Гол давуу талууд:

  • BTF (BPF Type Format)-д зориулсан дэмжлэг нь BPF псевдокодын төрлийг шалгах, одоогийн цөмөөс өгсөн төрлүүдтэй харьцуулах зорилгоор төрлийн мэдээллийг өгдөг. BTF-ийг ашигласнаар Линуксийн цөмийн өөр өөр хувилбаруудыг дахин хөрвүүлэхгүйгээр ашиглах боломжтой бүх нийтийн eBPF зохицуулагчийг бий болгох боломжтой.
  • "bpf-to-bpf" дуудлагууд, глобал хувьсагч болон эхлүүлэгчийн дэмжлэг нь eBPF-ийн ажлыг харгалзан функцүүдийг дахин тодорхойлдог aya-г ажиллах цаг болгон ашигладаг ердийн програмуудтай ижил аргаар eBPF-д зориулсан программ зохиох боломжийг олгодог.
  • Энгийн массив, хэш зураг, стек, дараалал, стекийн ул мөр, түүнчлэн залгуур болон гүйцэтгэлийг хянах бүтэц зэрэг янз бүрийн цөмийн төрлүүдийг дэмжих.
  • Янз бүрийн төрлийн eBTF программууд, тухайлбал урсгалыг шүүх, удирдах программууд, бүлгийн зохицуулагч болон төрөл бүрийн залгуурын ажиллагаа, XDP программуудыг бий болгох чадвар.
  • Tokio болон async-std-д блоклохгүй горимд асинхрон хүсэлтийг боловсруулах платформуудыг дэмжих.
  • Цөмийн угсралт болон цөмийн толгой файлуудтай ямар ч холболтгүйгээр хурдан угсрах.

Төсөл нь туршилтын гэж тооцогддог - API хараахан тогтворжоогүй байгаа бөгөөд үргэлжлүүлэн хөгжүүлсээр байна. Мөн төлөвлөсөн бүх боломжууд хараахан биелээгүй байна. Оны эцэс гэхэд хөгжүүлэгчид Aya-ийн функцийг libbpf-тэй ижил түвшинд хүргэж, 2022 оны XNUMX-р сард анхны тогтвортой хувилбарыг гаргахаар төлөвлөж байна. Мөн Linux цөмд Rust код бичихэд шаардлагатай Aya-ийн хэсгүүдийг eBPF программуудыг ачаалах, хавсаргах, харилцахад ашигладаг хэрэглэгчийн орон зайн бүрэлдэхүүн хэсгүүдтэй хослуулах төлөвлөгөө бий.

eBPF нь Линуксийн цөмд суурилуулсан байт код тайлбарлагч бөгөөд сүлжээний үйл ажиллагаа зохицуулагчийг үүсгэх, системийн ажиллагааг хянах, системийн дуудлагыг таслан зогсоох, хандалтыг хянах, цаг хугацааг хадгалахын зэрэгцээ үйл явдлыг боловсруулах, үйл ажиллагааны давтамж, цагийг тооцоолох, гүйцэтгэх боломжийг олгодог гэдгийг санацгаая. kprobes/uprobes/tracepoints ашиглан мөрдөх. JIT эмхэтгэлийг ашигласны ачаар байт кодыг шууд машины заавар болгон хөрвүүлж, эх кодын гүйцэтгэлээр гүйцэтгэдэг. XDP нь сүлжээний драйверын түвшинд BPF програмуудыг ажиллуулах хэрэгслээр хангадаг бөгөөд DMA пакет буферт шууд хандах боломжтой бөгөөд энэ нь сүлжээний ачаалал ихтэй үед ажиллах өндөр хүчин чадалтай процессоруудыг бий болгох боломжийг олгодог.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх