الخلاصة

  • طبعت RFC 3025 الرقم 37 للامتداد الحرج CVSE والرقم 133 للامتداد العادي NVSE، بينما سجلت IANA الرقمين 38 و134. جعلت RFC 3115 الوثيقة الأقدم مهجورة لأن التنفيذات القائمة اتبعت IANA.
  • لم يكن الرقم اسمًا فقط: الامتداد المجهول بين 0 و127 كان يُسقط الرسالة كلها بصمت؛ أما المجهول بين 128 و255 فكان يمكن تجاوزه مع استمرار معالجة الباقي.

رسالة تختفي من غير جواب

يرسل mobile node طلب تسجيل عبر Mobile IP. يصل الطلب إلى foreign agent، لكن أول امتداد بعد الجزء الثابت يحمل type لا يعرفه المستقبل. إذا كان الرقم أقل من 128، تنتهي المعالجة: تُرمى الحزمة كاملة، ولا تصل رسالة خطأ إلى المرسل.

عرّفت RFC 3115 معنى «silently discard» بدقة. لا مزيد من المعالجة ولا إشارة إلى المصدر، لكن التنفيذ ينبغي أن يستطيع تسجيل الخطأ، والاحتفاظ بمحتوى الحزمة الملقاة، وزيادة عداد. الصمت على السلك لم يكن ترخيصًا بمحو الدليل داخل الجهاز.

في هذه النقطة تحديدًا نشأ خلاف عام 2001. عرّفت RFC 3025 الصادرة في فبراير حاويتين لمعلومات تخص بائعًا أو منظمة. جعلت Critical Vendor/Organization-Specific Extension، أو CVSE، من type 37، وجعلت NVSE العادية من type 133. كان مستودع IANA يحمل 38 و134.

بعد شهرين، عرضت RFC 3115 الفروق في ملاحظة للمحرر، ثم أبطلت RFC 3025. وبررت القرار بواقعة تشغيلية مباشرة: التنفيذات الحالية تتبع تعيينات IANA.

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

«حرج» و«عادي» كانا ثمنًا لعدم الفهم

قسّمت RFC 2002 فضاء أنواع امتدادات Mobile IP إلى سلوكين. إذا صادف المستقبل امتدادًا مجهولًا من 0 إلى 127، وجب رمي الرسالة التي تحمله. وإذا كان النوع المجهول بين 128 و255، تجاهل الامتداد، واستخدم Length لتحديد موضع التالي، واستمر في معالجة باقي البيانات.

لهذا استقر CVSE عند 38 في القسم غير القابل للتجاوز، وNVSE عند 134 في القسم القابل له. لم تعن كلمة «حرج» أن المحتوى مهم تجاريًا؛ بل أعلنت أن الرسالة لا تبقى قابلة للتفسير الآمن من دونه. وقال «عادي» إن الوظيفة الخاصة قد تضيع من غير أن ينهار كل شيء.

كان 37 و38 كلاهما في القسم الحرج، و133 و134 في القسم القابل للتجاوز. لم ينقل الخطأ الامتداد من سياسة إلى أخرى، لكنه كسر التعرف الدقيق. الجهاز الذي ينتظر 38 يرى 37 نوعًا حرجًا مجهولًا، فيرمي الطلب. والذي ينتظر 134 قد يتجاوز 133 ويكمل تسجيلًا يفتقد الوظيفة التي ظن المرسل أنه طلبها.

يظهر الخلل الأول كغياب تام، وقد يظهر الثاني كنجاح ناقص. عداد الرفض لا يكشف كل صمت، وحالة «نجح التسجيل» لا تكشف كل وظيفة سقطت. المطلوب هو byte الذي وصل وقرار parser الذي اتُّخذ.

التعرف على الغلاف لا يعني فهم لهجته الخاصة

فصلت RFC 3115 بين مستويين من الجهل. قد لا يعرف المستقبل type الخارجي 38 أصلًا. وقد يعرف بنية CVSE، ثم لا يدعم Vendor/Org-ID أو Vendor-CVSE-Type في الداخل.

في الحالة الأولى تعمل قاعدة 0–127، فتُرمى الرسالة بلا جواب. في الثانية يستطيع المستقبل قراءة الغلاف، ولذلك يصبح الرفض صريحًا. إذا حمل request حاوية CVSE معروفة من الخارج ولكن فيها منظمة أو subtype غير مدعوم، وجب إرسال denial مناسب.

في reply يعتمد السلوك على الدور. إذا كان الكيان عقدة transit تعالج الرد ثم ترسله إلى غيرها، وجب أن تُنشئ rejection باتجاه الكيان التالي. وإذا كانت هي النهاية، تعاملت مع الرد على أنه مرفوض. أما NVSE المعروفة من الخارج والمجهولة في الداخل، فيُتجاوز امتدادها وتستمر المعالجة.

لذلك لا يكفي سجل يقول «vendor extension غير معروف». ينبغي حفظ type الخارجي، وإصدار parser، ونتيجة فتح الغلاف، وenterprise number، وsubtype، والاتجاه، ودور العقدة، وفحص الطول، وقرار drop أو skip أو reject، وأي code أُرسل. ثابت قديم في البرمجية ليس كغياب ميزة خاصة.

رقم المنظمة خصص أسماء ولم يمنح سلطة كاملة

حملت الحاويتان Vendor/Org-ID من أربعة octets. كان الأعلى صفرًا، وحملت الثلاثة الباقية SMI Network Management Private Enterprise Code. بعد ذلك أدارت المنظمة subtype من octetين وقيمته الخاصة.

وزع التصميم الحيازة. خصصت IANA الأنواع الخارجية وأكواد الرفض. ثبت سجل enterprise numbers هوية مساحة المنظمة. عرّفت المنظمة الأنواع الداخلية. اختار المرسل ما يضعه. اختار المستقبل ما ينفذه. حمت security associations رسائل Mobile IP حيث يطلب البروتوكول. وبقيت السياسة المحلية صاحبة قرار القبول.

لم يكن enterprise number مصادقة على المرسل. ولم تجعل مصادقة الرسالة subtype مجهولًا مفهومًا. ولم يكن التعرف تفويضًا. ولم يثبت قبول التسجيل أن خدمة المستخدم بدأت.

سمحت RFC 3115 بعدة CVSE وNVSE بعد الجزء الثابت، ونصت على ألا تغير العقد الوسيطة ترتيبها. إذا رتبت منصة logging هذه TLVs لتسهيل البحث، فقد تفقد ترتيب البايتات الذي وقعه authenticator، والذي أرسله المصدر، والذي رآه parser التالي.

قال قسم الأمن إن الوثيقة تفترض مصادقة رسائل Mobile IP بالطريقة التي يحددها البروتوكول، ولا تضيف متطلبات أمنية. هذا افتراض تصميمي، لا شهادة بأن كل مسار منشور كان محميًا أو أن البيانات الخاصة آمنة. يجب فصل نتيجة authenticator عن دعم المعنى وعن قرار السياسة.

أربعة أكواد احتفظت بمسار من ثلاثة أطراف

شارك في التسجيل mobile node وforeign agent وhome agent. أعطت RFC 3115 أربعة أكواد لحالة فهم الغلاف الحرج وعدم فهم المنظمة أو subtype.

كان 100 و101 لرفض foreign agent. ميّز الأول CVSE جاء من mobile node، والثاني ما جاء من home agent. وكان 140 و141 لرفض home agent، مع تمييز أصل البيانات في mobile node أو foreign agent.

حددت الأكواد من فسّر ومن أي اتجاه جاء المحتوى. لكنها لم تكشف المعنى التجاري للقيمة، ولم تثبت وصول الرفض إلى mobile node، ولم تقل هل نجحت محاولة لاحقة أو ظهر traffic للمستخدم.

يمكن لـforeign agent، بصفته عقدة transit لرد صادر عن home agent، أن يفهم الغلاف ثم يعجز عن subtype الداخلي، فيحوّل الرد إلى رفض جديد. سجل home agent وحده يبدو ناجحًا، وسجل mobile node وحده يرى فشلًا. لا تكتمل القصة إلا بمدخل كل hop وقراره ومخرجه.

تحول سجل IANA إلى جزء حي من النظام

كانت RFC 1700 لقطة ثابتة لـAssigned Numbers عام 1994. وفي 2002 أعلنت RFC 3232 أن قواعد IANA على الإنترنت حلت محل تلك اللقطات، وأن RFC 1700 أصبحت ناقصة، بل خاطئة أحيانًا. وقع خلاف RFC 3115 وسط هذا التحول.

استطاع السجل الحي مواكبة التخصيص، بينما جمد RFC لحظة النشر. ولم يكن أحدهما كافيًا وحده. سجل IANA عرف 38 و134 لكنه لم يحمل كل قواعد العبور والرفض؛ وشرح RFC الحقول والسلوك لكنه طبع قيمًا متعارضة.

ما زال سجل Mobile IPv4 Numbers الحالي يسجل CVSE 38 وNVSE 134 والأكواد الأربعة مع إحالة إلى RFC 3115. هذه حجة على الحالة الحالية، لا سجل كامل لكل تعديل. لفهم 2001 لا بد من الوثيقتين المجمدتين والسجل معًا.

الاستعمال المحدد لا يساوي انتشارًا مقاسًا

حددت RFC 4332 امتدادات Cisco لمعلومات prefix وgateway وDNS وDHCP وconfiguration URL للشبكة المنزلية. وحددت RFC 4784 ثلاثة امتدادات Verizon Wireless تستخدم type 38 وenterprise number 12951 في إجراء dynamic key update لشبكات cdma2000.

يثبت ذلك وجود استعمالات موصوفة. ولا يثبت عدد الأجهزة، أو نجاح التشغيل البيني، أو حجم الحزم، أو النتيجة التجارية. requirement في وثيقة ليس execution trace.

خصصت RFC 5612 لاحقًا enterprise number 32473 للأمثلة. حتى الهوية المتخيلة احتاجت مساحة لا تتصادم مع منظمة حقيقية، لأن أمثلة الوثائق تنتقل إلى اختبارات وكود وحزم. وعممت RFC 6709 الخطر: تمنح private extensions مرونة، لكن مراجعة ضعيفة أو غموض التعامل مع المجهول يخلق تعرضًا تشغيليًا وأمنيًا وتشغيليًا بينيًا.

كانت RFC 3115 قد جعلت الثمن ملموسًا. جهل critical يفقد الرسالة. جهل normal يفقد الوظيفة. تصحيح الرقمين أعاد اتفاق الأجهزة على الثمن المقصود.

الكود العامل شاهد، لا محكمة عليا

لا تقول الحادثة إن التنفيذ صحيح دائمًا. قد يحمل الكود عيوبًا، وقد تتغير السجلات والوثائق. القرار كان أضيق: تعارض النص مع سلطة التخصيص، وسجل البديل أن التنفيذات اتبعت السلطة.

يثبت packet capture ما أُرسل لا ما فُهم. ويثبت parser log قرار جهاز واحد لا نجاح التسجيل. ويثبت rejection code انتقالًا بروتوكوليًا لا نتيجة المستخدم. أما عبارة «التنفيذات الحالية» فهي أقوى من نية التصميم وأضعف من جرد شامل.

عند حفظ هذه الحدود، يبقى التسلسل واضحًا: كتبت RFC 3025 الرقمين 37 و133. خصصت IANA الرقمين 38 و134. كانت الشبكة تستخدم الزوج الثاني. لم يمحُ الكود العامل المعيار؛ دفعه إلى تصحيح نفسه.

المصادر

  1. https://www.rfc-editor.org/rfc/rfc3115.txt
  2. https://www.rfc-editor.org/rfc/rfc3025.txt
  3. https://www.rfc-editor.org/rfc/rfc2002.txt
  4. https://www.rfc-editor.org/rfc/rfc1700.txt
  5. https://www.rfc-editor.org/rfc/rfc2119.txt
  6. https://www.rfc-editor.org/rfc/rfc2344.txt
  7. https://www.rfc-editor.org/rfc/rfc2356.txt
  8. https://www.rfc-editor.org/rfc/rfc3232.txt
  9. https://www.rfc-editor.org/rfc/rfc3344.txt
  10. https://www.rfc-editor.org/rfc/rfc4332.txt
  11. https://www.rfc-editor.org/rfc/rfc4784.txt
  12. https://www.rfc-editor.org/rfc/rfc5612.txt
  13. https://www.rfc-editor.org/rfc/rfc5944.txt
  14. https://www.rfc-editor.org/rfc/rfc6709.txt
  15. https://www.iana.org/assignments/mobileip-numbers/mobileip-numbers.xml