واجهة برمجة تطبيقات جديدة

واجهة برمجة التطبيقات الجديدة ( NAPI ) هي واجهة لاستخدام تقنيات تخفيف المقاطعات لأجهزة الشبكات في نواة لينكس . يهدف هذا النهج إلى تقليل الحمل الزائد لاستقبال الحزم. وتتلخص الفكرة في تأجيل معالجة الرسائل الواردة حتى يصبح عددها كافيًا بحيث يصبح من المجدي معالجتها جميعًا دفعة واحدة.

تحفيز

تتمثل إحدى الطرق المباشرة لتنفيذ برنامج تشغيل الشبكة في مقاطعة نواة النظام عن طريق إصدار طلب مقاطعة (IRQ) لكل حزمة بيانات واردة. إلا أن معالجة طلبات المقاطعة مكلفة من حيث موارد المعالج والوقت. لذا، قد يكون التنفيذ المباشر غير فعال في الشبكات عالية السرعة، حيث يُقاطع نواة النظام باستمرار بآلاف الحزم في الثانية. وقد يتأثر الأداء العام للنظام وإنتاجية الشبكة سلبًا نتيجة لذلك.

يُعدّ الاستقصاء بديلاً للمعالجة القائمة على المقاطعات. إذ يُمكن لنواة النظام التحقق دوريًا من وصول حزم الشبكة الواردة دون انقطاع، مما يُلغي عبء معالجة المقاطعات. مع ذلك، يُعدّ تحديد تردد الاستقصاء الأمثل أمرًا بالغ الأهمية. فالاستقصاء المتكرر جدًا يُهدر موارد وحدة المعالجة المركزية من خلال التحقق المتكرر من الحزم الواردة التي لم تصل بعد. من جهة أخرى، يُؤدي الاستقصاء غير المتكرر إلى زيادة زمن الاستجابة من خلال تقليل استجابة النظام للحزم الواردة، وقد يُؤدي إلى فقدان الحزم إذا امتلأ مخزن الحزم الواردة قبل معالجتها.

كحل وسط، تستخدم نواة لينكس الوضع القائم على المقاطعة بشكل افتراضي ولا تنتقل إلى وضع الاستقصاء إلا عندما يتجاوز تدفق الحزم الواردة عتبة معينة، تُعرف باسم "وزن" واجهة الشبكة.

السائقون الملتزمون

سيعمل برنامج التشغيل الذي يستخدم واجهة NAPI على النحو التالي:

  • تم تعطيل مقاطعات استقبال الحزم.
  • يوفر برنامج التشغيل طريقة استطلاع للنواة. تقوم هذه الطريقة بجلب جميع الحزم الواردة المتاحة، على بطاقة الشبكة أو حلقة DMA ، بحيث تتم معالجتها بعد ذلك بواسطة النواة.
  • عندما يُسمح بذلك، تستدعي النواة طريقة استطلاع الجهاز لمعالجة العديد من الحزم في وقت واحد.

المزايا

  • يتم تقليل الحمل الناتج عن المقاطعات على الرغم من أن النواة يجب أن تقوم بالاستقصاء.
  • من غير المرجح إعادة ترتيب الحزم، في حين أن معالجة الحزم غير المرتبة قد تشكل عنق زجاجة في غير ذلك.
  • في حال عجز النواة عن معالجة جميع الحزم الواردة، فلا يتطلب الأمر منها أي جهد لإسقاطها، إذ تُستبدل ببساطة في مخزن الحزم الواردة لبطاقة الشبكة . أما بدون بروتوكول NAPI، فيجب على النواة معالجة كل حزمة واردة بغض النظر عن وجود وقت كافٍ لمعالجتها، مما يؤدي إلى تذبذب كبير في الأداء .

تاريخ

كان مشروع NAPI ثمرة جهد استمر لأكثر من ثلاث سنوات من قبل أليكسي كوزنيتسوف وجمال هادي سليم وروبرت أولسون. وقد قوبلت الجهود الأولية لإدراج NAPI بمقاومة من بعض أفراد المجتمع، إلا أن ديفيد ميلر عمل بجد لضمان إدراجها.

أُجريت العديد من الاختبارات العملية على شبكة جامعة أوبسالا قبل اعتمادها. في الواقع، كان موقع www.slu.se أول نظام تشغيل إنتاجي قائم على بروتوكول NAPI، ولا يزال يعمل حتى اليوم بواسطة أجهزة توجيه Bifrost/Linux القائمة على NAPI. كما ظهر مولد حركة البيانات pktgen في نفس الفترة تقريبًا، والذي استُخدم على نطاق واسع لاختبار سيناريوهات NAPI غير الناتجة عن حركة البيانات الفعلية.

مراجع

للمزيد من القراءة