ترميز QSFP28 وQSFP-DD: أين تقع كتلة الهوية عند مغادرة SFF-8472 A0h/A2h
أقوم بدفعات صغيرة من إعادة ترميز الوحدات للمتكاملين، وحتى الآن كل ما على طاولتي كان بشكل SFP: قراءة الـ256 بايت عند A0h مع معرّف الهوية التسلسلي في النصف الأول، قراءة A2h للتشخيصات والعتبات، كتابة كتلة الهوية، وانتهى الأمر. ظهر الآن عميل بقطع 100G وَ400G وجهازي واضح أنه غير كافٍ.
- الوحدات المراد إعادة ترميزها: صينية من QSFP28، بعض QSFP-DD ونموذج OSFP واحد
- البرمجة الحالية: I2C بسيط، يقرأ ويكتب A0h وA2h، بلا اختيار صفحة (page select) إطلاقًا
- المضيفون على الطرف الآخر يتحققون من اسم المورّد ورقم القطعة والرقم التسلسلي قبل تشغيل المنفذ
ملاحظاتي العملية حول كيفية تخطيط الذاكرة، وهو فعليًا ما أريد التحقق منه:
SFP/SFP+/SFP28 (SFF-8472): A0h 256B, serial ID in first 128B; A2h 256B diagnostics + thresholds, optional 128B pages
QSFP+/QSFP28 (SFF-8636): single A0h, 128B pages selected by byte 7Fh, page 00h mandatory
XFP (INF-8077i): byte 7Fh picks the active table, with serial ID in table 01h and user EEPROM in 02h
OSFP/QSFP-DD/SFP-DD (CMIS 5.x): lower 128B fixed, upper memory by bank and page via 7Eh and 7Fh
ما جربته:
- أخذ نسخة من QSFP28 باستخدام إعدادي الخاص بـSFP، والذي يعطيني النصف السفلي بالإضافة إلى أي صفحة كانت مختارة صدفة
- أخذ نسختين من نفس الوحدة بشكل متتالٍ لأرى أي البايتات تتحرك من تلقاء نفسها
هل هذا المخطط صحيح، وما هي الحقول التي يجب علي فعليًا كتابتها من أجل ترميز المورّد بمجرد أن تصبح الذاكرة مقسّمة إلى صفحات وبنوك (banked)؟
Comments 5
المخطط صحيح في جوهره. ما ينقص جهازك هو أنه في SFF-8636 يوجد عنوان واحد فقط والـ128 بايت العلوية هي نافذة: تكتب رقم الصفحة في البايت 7Fh، ثم تقرأ النصف العلوي وتحصل على تلك الصفحة. الصفحة 00h هي الإلزامية وتحمل كتلة الهوية، لذا للترميز نادرًا ما تحتاج للذهاب إلى أي مكان آخر. CMIS يضيف بنكًا (bank) فوق ذلك - 7Eh يختار البنك، 7Fh الصفحة، والـ128 بايت السفلية تبقى ثابتة وقابلة للقراءة دائمًا. بدون اختيار الصفحة، أداتك تستمر في إعطائك أي صفحة كانت الوحدة متوقفة عندها، وهذا بالضبط السلوك الذي وصفته.
الحقول المهمة لترميز المورّد هي نفسها في كل مكان: اسم المورّد، رقم القطعة، المراجعة، الرقم التسلسلي، الـOUI والمجاميع (checksums). أخطئ في checksum ومضيف حساس سيرفض الوحدة رغم أن كل نص يبدو مثاليًا في نسخة hex. شيء آخر يجب الاستعداد له: بعض الوحدات تحمي وظائف المورّد خلف كلمات مرور خاصة بالمُصنِّع والمضيف بينما تبقى القراءات العادية مفتوحة، لذا يمكنك بسعادة أخذ نسخة من قطعة لا تستطيع كتابتها.
المجاميع (checksums) هي بالضبط ما أوقعني في المحاولة الأولى - النصوص طابقت وحدة معروفة أنها تعمل بايت بايت والمضيف رفض القطعة رغم ذلك. جيد أن أعرف أن الصفحة 00h كافية لكتلة الهوية، هذا يبقي نطاق العمل صغيرًا.
الخلاصة الصادقة إذن هي أن برمجتي لا تستطيع فعل هذا إطلاقًا، لأنها لا تملك طريقة لكتابة البايت 7Fh قبل القراءة. أفضل شراء لوحة على إضافة اختيار الصفحة إلى جهاز مصنوع منزليًا لأجل طلبية واحدة. هل يوجد شيء في السوق يتعامل مع بنوك CMIS بشكل صحيح، أم أن ذلك أقرب إلى ميزة في ورقة البيانات فقط؟
اللوحات التجارية تروّج لذلك فعلًا - SFPTotal Plus X، وأجهزة Reveltronics (REVELPROG-IS)، وبرمجات EDGE وFlexoptix كلها تضع QSFP-DD وOSFP في قائمة الميزات، ويضيفون أيضًا قاعدة بيانات لأكواد المورّدين. SFPTotal تدّعي أكثر من 25,000 كود، بما فيها Cisco وHuawei وHPE.
مدى تطابق ذلك مع القطع المحددة الموجودة على طاولتك سؤال آخر، ولن آخذ كلامي على محمل التصديق أيضًا. إذا استطعت، أحضر عينة من QSFP-DD الخاصة بالعميل أمام اللوحة قبل الالتزام بالشراء. الدعم لشكل فيزيائي في ورقة البيانات ليس نفس الشيء مثل الدعم للوحدة المحددة في يدك، والقطع المقسّمة إلى بنوك هي حيث تظهر تلك الفجوة.
للمقارنة، عمل SFP العادي بدائي كما كان دائمًا: فقط أول 128 بايت من نسخة الـ256 بايت مهمة فعليًا، والباقي محجوز للمصنّع، والناس يكتبون صور GLC-LX أو GLC-BX-D/GLC-BX-U على قطع CWDM عامة منذ سنوات لجعلها مقبولة من قِبل Catalyst 3560 أو HP J8692A أو EX4200-24F. مخططات برمجة مصنوعة منزليًا تم تداولها لهذا الغرض، serp-0.3 هو الذي بنيته، ونسخ من Finisar FCMJ-8521-3 أو HP J4858C أو J4859C أو D-Link DEM-310GT كانت المراجع المعتادة.
حيوان مختلف، لكن يستحق المعرفة في حال ظهرت عصي GPON على طاولتك: هناك لا تقوم بالترميز من الخارج إطلاقًا. على FS GPON-ONU-34-20BI، وهو قريب من Nokia G-010S-A، تحصل على shell على العصا نفسها - مع توصيل الفايبر تجيب على 192.168.1.10 كـONTUSER - اضبط الرقم التسلسلي وMAC باستخدام uci، وأعد كتابة نصوص المورّد في EEPROM من الداخل باستخدام sfp_i2c.
تحتوي QDD وOSFP على بنية CMIS ولا تتضمن سوى بايت تحقق واحد (checksum) في Page 0.