حرف E

تقنية eBPF (مرشح حزم بيركلي الموسع)

eBPF (Extended Berkeley Packet Filter)

آخر تحديث: 2026-10-14
مستوى الشرح اختر المستوى التقني المناسب لك

الشرح المبسط

تخيل أن نواة النظام (Kernel) هي منطقة محظورة وحساسة جدا في جهازك، حيث لا يسمح لأي تطبيق عادي بالدخول إليها وتعديل طريقة عملها. في الماضي، إذا أردت إضافة ميزة جديدة لمراقبة الشبكة أو تتبع أداء النظام من الداخل، كان عليك كتابة وحدات برمجية (Modules) معقدة قد تتسبب في انهيار النظام بأكمله إذا كان بها خطأ بسيط. هنا يأتي دور تقنية eBPF، والتي تعمل وكأنها بيئة رملية آمنة (Sandbox) داخل النواة. تتيح لك هذه التقنية إدخال برامجك الصغيرة لتعمل داخل النواة مباشرة بسرعة فائقة، ولكن بعد أن تمر على حارس أمن إلكتروني صارم يفحصها بدقة ليتأكد من أنها لن تسبب أي ضرر أو توقف للنظام. بفضل ذلك، أصبح المطورون قادرين على مراقبة حركة البيانات، وتحليل أداء التطبيقات، وتعزيز الأمن السيبراني بكفاءة عالية دون الحاجة لتعديل النظام نفسه أو إعادة تشغيله.

الشرح التقني المتقدم

تعد تقنية eBPF ثورة حقيقية في عالم أنظمة تشغيل لينكس (Linux)، حيث تسمح للمطورين بتشغيل برامج مجمعة (Compiled Programs) داخل مساحة النواة (Kernel Space) بشكل ديناميكي وآمن. في الأساس، تعمل هذه التقنية كآلة افتراضية (Virtual Machine) مصغرة مدمجة داخل النواة، مما ينهي الحاجة إلى كتابة وحدات نواة مخصصة (Kernel Modules) لتتبع الأداء أو معالجة حزم الشبكات.

المعمارية والمكونات الأساسية

قبل أن يتم تنفيذ أي برنامج eBPF داخل النواة، يمر بمرحلة فحص صارمة لضمان استقرار النظام وأمانه:

المدقق (Verifier): أداة مدمجة تقوم بتحليل كود البرنامج للتأكد من أنه لن يدخل في حلقات لا نهائية (Infinite Loops)، ولن يحاول الوصول إلى مساحات ذاكرة غير مصرح بها. بعد تجاوز الفحص، يقوم المترجم الفوري (JIT Compiler) بتحويل الكود إلى تعليمات معالج (CPU Instructions) أصلية لضمان أداء يضاهي سرعة النواة نفسها، ويتم تبادل البيانات عبر خرائط مخصصة (eBPF Maps).

تتبع استدعاءات النظام باستخدام أداة bpftrace

تتيح لك أدوات المراقبة المتطورة تتبع سلوك النظام في الوقت الفعلي. الأمر التالي يتتبع كل البرامج التي تحاول فتح ملفات في النظام لحظة بلحظة:

أمر التنفيذ:

sudo bpftrace -e 'tracepoint:syscalls:sys_enter_openat { printf("%s %s\n", comm, str(args->filename)); }'

تحليل تفصيلي للأمر وآلية عمله:

  • نقطة التتبع (Tracepoint): نستخدم syscalls:sys_enter_openat لربط برنامج eBPF باللحظة الدقيقة التي يطلب فيها التطبيق فتح أي ملف.
  • الطباعة الفورية (Action): تقوم الدالة printf بطباعة اسم العملية عبر المتغير comm، ومسار الملف المطلوب عبر args->filename.
  • الأداء المنخفض التأثير (Low Overhead): يتم تنفيذ هذا الاستعلام واستخراج البيانات مباشرة داخل النواة (Kernel)، ولن يتم إرسال سوى مخرجات الطباعة النهائية إلى مساحة المستخدم (User Space)، مما يقلل استهلاك الموارد بشكل هائل مقارنة بالطرق التقليدية.

ملاحظة ختامية: الصورة الكبرى (نصيحة احترافية)

لا تقتصر تقنية eBPF على المراقبة فقط، بل أصبحت حجر الزاوية لتقنيات الشبكات والأمان السحابي الحديثة مثل سيليوم (Cilium). يُنصح دائما بالاعتماد على الواجهات والأدوات الجاهزة مثل أدوات الأداء (BCC) و (bpftrace) بدلا من كتابة برامج eBPF بلغة C من الصفر لتوفير الوقت وتجنب التعقيد، مع ضرورة تحديث نواة لينكس (Kernel) بانتظام للحصول على أحدث ميزات وتحديثات الأمان الخاصة بالمدقق.