يضيف FreeBSD دعمًا لبروتوكول Netlink المستخدم في Linux kernel

تعتمد قاعدة أكواد FreeBSD تطبيقًا لبروتوكول اتصال Netlink (RFC 3549)، المستخدم في Linux لتنظيم تفاعل النواة مع العمليات في مساحة المستخدم. يقتصر المشروع على دعم مجموعة عمليات NETLINK_ROUTE لإدارة حالة النظام الفرعي للشبكة في النواة.

في شكله الحالي، يسمح دعم Netlink لـ FreeBSD باستخدام الأداة المساعدة Linux ip من حزمة iproute2 لإدارة واجهات الشبكة، وتعيين عناوين IP، وتكوين التوجيه، ومعالجة كائنات Nexthop التي تخزن بيانات الحالة المستخدمة لإعادة توجيه الحزمة إلى الوجهة المطلوبة. بعد إجراء تغييرات طفيفة على ملفات الرأس، من الممكن استخدام Netlink في حزمة توجيه الطيور.

تم تصميم تطبيق Netlink لـ FreeBSD كوحدة kernel قابلة للتحميل، والتي، إن أمكن، لا تؤثر على أنظمة kernel الفرعية الأخرى وتقوم بإنشاء قوائم انتظار مهام منفصلة (tasqueues) لمعالجة الرسائل الواردة عبر البروتوكول وتنفيذ العمليات في الوضع غير المتزامن. السبب وراء ترقية Netlink هو عدم وجود آلية قياسية للتفاعل مع أنظمة kernel الفرعية، مما يؤدي إلى اختراع أنظمة فرعية ومحركات مختلفة لبروتوكولاتها الخاصة.

تقدم Netlink طبقة اتصال موحدة وتنسيق رسائل قابل للتوسيع يمكن أن يعمل كوسيط يجمع تلقائيًا البيانات المتباينة من مصادر مختلفة في طلب واحد. على سبيل المثال، يمكن نقل الأنظمة الفرعية FreeBSD مثل devd وjail وpfilctl، والتي تستخدم حاليًا مكالمات ioctl الخاصة بها، إلى Netlink، مما سيبسط بشكل كبير إنشاء التطبيقات للعمل مع هذه الأنظمة الفرعية. بالإضافة إلى ذلك، فإن استخدام Netlink لتعديل كائنات ومجموعات المرحلة التالية في مكدس التوجيه سيمكن من تفاعل أكثر كفاءة مع عمليات توجيه مساحة المستخدم.

الميزات المطبقة حاليا:

  • الحصول على معلومات حول المسارات والكائنات ومجموعات Nexthops وواجهات الشبكة والعناوين والمضيفين المجاورين (arp/ndp).
  • إنشاء إشعارات حول ظهور واجهات الشبكة وفصلها، وإعداد العناوين وحذفها، وإضافة المسارات وحذفها.
  • إضافة وإزالة المسارات والكائنات ومجموعات الخطوات التالية والبوابات وواجهات الشبكة.
  • التكامل مع واجهة Rtsock لإدارة جدول التوجيه.

المصدر: opennet.ru

إضافة تعليق