قامت Cloudflare بنشر برنامج xdpcap، وهو محلل لحركة المرور يعتمد على نظام XDP الفرعي

شركة Cloudflare مقدم مشروع مفتوح com.xdpcap، حيث يتم تطوير محلل حزم الشبكة المشابه لـ tcpdump، المبني على أساس النظام الفرعي XDP (مسار البيانات السريع). رمز المشروع مكتوب باللغة Go و وزعت من خلال بموجب ترخيص BSD. المشروع أيضا مُعد مكتبة لمعالجات حركة مرور eBPF الملزمة من تطبيقات Go.

تتوافق الأداة المساعدة xdpcap مع تعبيرات التصفية tcpdump/libpcap وتسمح لك بمعالجة كميات أكبر بكثير من حركة المرور على نفس الجهاز. يمكن أيضًا استخدام Xdpcap لتصحيح الأخطاء في البيئات التي لا ينطبق فيها tcpdump العادي، مثل التصفية وحماية DoS وأنظمة موازنة التحميل التي تستخدم نظام Linux kernel XDP الفرعي، الذي يعالج الحزم قبل معالجتها بواسطة مكدس شبكة Linux kernel (tcpdump). لا يرى الحزم التي تم إسقاطها بواسطة معالج XDP).

يتم تحقيق الأداء العالي من خلال استخدام الأنظمة الفرعية eBPF وXDP. eBPF هو مترجم بايت كود مدمج في Linux kernel والذي يسمح لك بإنشاء معالجات عالية الأداء للحزم الواردة/الصادرة مع اتخاذ قرارات بشأن إعادة توجيهها أو التخلص منها. باستخدام مترجم JIT، تتم ترجمة كود eBPF الثانوي بسرعة إلى تعليمات الجهاز ويتم تنفيذه بأداء التعليمات البرمجية الأصلية. يكمل النظام الفرعي XDP (eXpress Data Path) eBPF مع القدرة على تشغيل برامج BPF على مستوى برنامج تشغيل الشبكة، مع دعم الوصول المباشر إلى المخزن المؤقت لحزمة DMA والعمل في المرحلة قبل تخصيص المخزن المؤقت skbuff بواسطة مكدس الشبكة.

مثل tcpdump، تقوم الأداة المساعدة xdpcap أولاً بترجمة قواعد تصفية حركة المرور عالية المستوى إلى تمثيل BPF الكلاسيكي (cBPF) باستخدام مكتبة libpcap القياسية، ثم تقوم بتحويلها إلى شكل إجراءات eBPF باستخدام مترجم com.cbpfcباستخدام تطورات LLVM/Clang. عند الإخراج، يتم حفظ معلومات حركة المرور بتنسيق pcap القياسي، والذي يسمح لك باستخدام تفريغ حركة المرور المُعد في xdpcap للدراسة اللاحقة في tcpdump وغيره من محللي حركة المرور الموجودين. على سبيل المثال، لالتقاط معلومات حركة مرور DNS، بدلاً من استخدام الأمر "tcpdump ip and udp port 53"، يمكنك تشغيل "xdpcap /path/to/hookcapture.pcap 'ip and udp port 53'" ثم استخدام الالتقاط ملف .pcap، على سبيل المثال باستخدام الأمر "tcpdump -r" أو في Wireshark.

المصدر: opennet.ru

إضافة تعليق