عرض مكتبة آية لإنشاء معالجات Rust eBPF

يتم تقديم الإصدار الأول من مكتبة Aya، والذي يسمح لك بإنشاء معالجات eBPF بلغة Rust والتي تعمل داخل نواة Linux في جهاز افتراضي خاص مع JIT. على عكس أدوات تطوير eBPF الأخرى، لا تستخدم Aya libbpf والمترجم bcc، ولكنها تقدم بدلاً من ذلك تطبيقها الخاص المكتوب بلغة Rust، والذي يستخدم حزمة libc crate للوصول مباشرة إلى استدعاءات نظام kernel. لا يتطلب بناء Aya أدوات لغة C أو ملفات رأس kernel. يتم توزيع رمز المكتبة بموجب تراخيص MIT وApache 2.0.

الميزات الرئيسية:

  • دعم BTF (تنسيق نوع BPF)، الذي يوفر معلومات النوع في كود BPF الكاذب للتحقق من النوع وتعيين الأنواع التي توفرها النواة الحالية. يتيح استخدام BTF إمكانية إنشاء معالجات eBPF عالمية يمكن استخدامها دون إعادة الترجمة مع إصدارات مختلفة من Linux kernel.
  • دعم مكالمات "bpf-to-bpf" والمتغيرات العالمية والمهيئات، مما يسمح لك بتصميم برامج لـ eBPF بطريقة مشابهة للبرامج العادية التي تستخدم aya كوقت تشغيل يعيد تعريف الوظائف مع مراعاة العمل في eBPF.
  • دعم أنواع مختلفة من kernel، بما في ذلك المصفوفات العادية، وخرائط التجزئة، والمكدسات، وقوائم الانتظار، وتتبعات المكدس، بالإضافة إلى هياكل المقبس وتتبع الأداء.
  • القدرة على إنشاء أنواع مختلفة من برامج eBTF، بما في ذلك برامج تصفية وإدارة حركة المرور، ومعالجات cgroup وعمليات المقبس المختلفة، وبرامج XDP.
  • دعم الأنظمة الأساسية لمعالجة الطلبات غير المتزامنة في وضع عدم الحظر tokio وasync-std.
  • تجميع سريع، دون أي اتصال بتجميع النواة وملفات رأس النواة.

لا يزال المشروع يعتبر تجريبيًا - لم يتم استقرار واجهة برمجة التطبيقات (API) بعد وهي مستمرة في التطوير. كما أن جميع الفرص المخطط لها لم تتحقق بعد. بحلول نهاية العام، يتوقع المطورون جعل وظائف Aya متساوية مع libbpf، وفي يناير 2022 لإنشاء أول إصدار مستقر. هناك أيضًا خطط لدمج أجزاء Aya اللازمة لكتابة كود Rust لنواة Linux مع مكونات مساحة المستخدم المستخدمة لتحميل برامج eBPF وإرفاقها والتفاعل معها.

دعونا نتذكر أن eBPF هو مترجم بايت كود مدمج في Linux kernel، والذي يسمح لك بإنشاء معالجات تشغيل الشبكة، ومراقبة تشغيل النظام، واعتراض مكالمات النظام، والتحكم في الوصول، ومعالجة الأحداث مع الحفاظ على التوقيت، وحساب تكرار ووقت العمليات، وتنفيذ التتبع باستخدام kprobes/uprobes/tracepoints. بفضل استخدام تجميع JIT، تتم ترجمة الكود الثانوي بسرعة إلى تعليمات الجهاز وتنفيذه بأداء التعليمات البرمجية الأصلية. يوفر XDP أدوات لتشغيل برامج BPF على مستوى برنامج تشغيل الشبكة، مع إمكانية الوصول مباشرة إلى المخزن المؤقت لحزم DMA، مما يسمح لك بإنشاء معالجات عالية الأداء للعمل تحت حمل الشبكة الثقيل.

المصدر: opennet.ru

إضافة تعليق