انتقل إلى المحتوى

ما لا يستطيعه

ترجمة صفحة What it cannot do. النص الإنجليزي هو المرجع إن اختلفا.

هذه حدود عائلة ARMADA (جهاز XGS 136). أما حدود OCTEON TX فمختلفة، وهي في صفحتها. هناك يعمل الاتجاهان الآن ومنافذ اللوحة واجهات، لكن لا شيء مُحسَّن: كل إطار يُنسخ، وطابور واحد لكل اتجاه لكل واجهة، ولا تسريع، والتشغيل كله سلسلة من إعدادات sysctl تُعاد بعد كل إعادة تشغيل. كان ذلك في 2026-10-01. أما الآن فالتشغيل يجري عند الإقلاع، والاتصالات وIPsec تُسلَّم إلى المعالج المساعد، ويأخذ المعالج الرئيسي ثماني حلقات استقبال؛ وما بقي أن كل إطار يعبر المعالج الرئيسي يُنسخ مرة في كل اتجاه.

مسار البيانات يُربط مرة واحدة في كل إقلاع للمعالج المساعد. ينتظر الجهاز HOST_MGMT_READY مرة، ويجيب مرة، ثم يقضي بقية عمره في حلقة أوامره. إعادة تحميل الوحدة وحدها لا يُجاب عنها. جُرّبت ثلاثة حلول وقيس أنها لا تنفع: إغلاق مسار البيانات بـ PF_DISABLE/PF_CLOSE، فيقبله الجهاز ولا يتغير شيء؛ وسحب المصافحة القديمة؛ والانتظار ثلاثين ثانية بدل أربع.

ما يعيده هو إعادة تشغيل المعالج المساعد، ويستطيع المعالج الرئيسي أن يُحدثها بنفسه: 06-npuctl يرسل نبضة على خط إعادة الضبط، وهي إعادة ضبط حقيقية لا مجرد إطلاق، فنبضة تتبعها إعادة تحميل تعيد كل شيء دون قطع الكهرباء. تحقّق ذلك مرتين متتاليتين: أربع عشرة واجهة، وجداول التمرير مقروءة ومؤكدة، وnwa: 14 of 14 ports up، ومنفذ أمامي شُغّل بلا عنوان فعدّ أربعين إطارًا من السلك في اثنتي عشرة ثانية. وقطع الكهرباء ثم إعادتها ينفع أيضًا. وإعادة التشغيل الدافئة تشغّل الخطّاف نفسه، فالأرجح جدًّا أنها تنفع كذلك، ولم تُجرَّب من أولها إلى آخرها بعد، لكنها لم تعد تعتمد على آلية غير مجرّبة.

كانت هذه الصفحة تقول إن قطع الكهرباء هو الطريق الوحيد. كان ذلك خطأ، وكلا السببين بدا عطلًا في العتاد لا خطأً برمجيًّا: فقد كان reload.sh يحلّل محدّد PCI بفاصل حقول في awk لا يشمل حرف الجدولة الذي يطبعه pciconf، فينتظر مهلته كلها ثم يبلّغ عن طرف ميت كان يجيب طوال الوقت؛ وكان محلّل خريطة BAR يقرأ مُدخلًا لم يكتبه المعالج المساعد بعد على أنه حقيقي، فكل حقوله أصفار، والصفر هو رقم مرفق التحكم، فيفشل الربط كله بجدول نصف منشور. أُصلح الاثنان.

يظهر جدول المرافق بعد نحو أربع عشرة ثانية من إعادة الضبط، ولا يُنشر دفعة واحدة. يصل التعريف (cookie) قبل المُدخلات، فمن تحقّق منه وواصل القراءة حصل على جدول ناقص. صار التعريف ينتظر المرافق التي يحتاجها فعلًا. وقيست المدة أربع عشرة ثانية تمامًا في دورتين متتاليتين.

وتحميل التعريف بعد نبضة إعادة الضبط بوقت قصير جدًّا يجمّد المعالج الرئيسي: قراءة PCIe من طرف ما زال في إعادة الضبط لا تعود ولا تنتهي مهلتها، فلا انهيار ولا سجل، بل يتوقف الجهاز ببساطة. صار التعريف وreload.sh يسألان فضاء الإعداد (config space) أولًا، وهو السؤال الآمن: قراءة الإعداد من جهاز لا يجيب تعود كلها آحادًا بدل أن تبقى معلّقة. وبعد الإصلاح قيس أن الطرف يجيب فضاء الإعداد لحظة انتهاء النبضة، فلا يكلّف هذا الحرس شيئًا، ولا يحتاج الانتظار إلا جدول المرافق.

الواجهات تُسنَد في OPNsense، ولا بد من ذلك. المنافذ الاثنا عشر كلها تحمل حركة ويمكن جسرها، وأحدها منفذ WAN لهذا الجهاز. وما دام المنفذ الأمامي غير مُسند فهو خارج إعداد الجدار الناري ولا قواعد له في pf، فالمنفذ غير المسند الذي يبدو متصلًا ولا يحمل شيئًا هو هذا في الغالب لا التعريف.

المنفذ المضموم إلى جسر يحتاج الوضع المختلط (promiscuous)، ويحصل عليه وحده. مرشّح العتاد في المنفذ لا يُدخل الإرسال الأحادي إلا لعنوانه، وعضو الجسر يستقبل ردودًا موجّهة إلى الجسر؛ فبغير ذلك يمرّر المنفذ البث العام ولا شيء غيره، فيبدو منفذًا يعمل حتى يحاول أحدٌ الاتصال عبره. يتبع التعريف IFF_PROMISC: يُفعَّل حين يضيف if_bridge المنفذ، ويُطفأ حين يخرج، بلا أي إعداد.

عدّادات الحزم في الجهاز نفسه غير متاحة. يُجاب GET_STATISTICS بطوله كله أصفارًا: ترويسة Marvell تسمّي ذلك العضو CC_PF_PP2_STATISTICS، أي عدّادات معالج الحزم الفعلي، والوظيفة التي لا منفذ فعليًّا لها لا عدّادات لها. أما GET_GP_STATS، وهو عدّاد منفذ GIU نفسه، فلا تنفّذه هذه البرمجية الثابتة أصلًا. يعرض التعريف عدّاداته هو ويقول ذلك صراحة، لأن أداةً تطبع الصفر كأنه قياس أسوأ من أداة تعترف بأنها لا ترى.